Every online service has two faces. One is the GUI in the form of a website meant to be intuitive and easy to use. The other is the API, the machine-readable version. One is human friendly, the other robot friendly. Two interfaces into the same data.

Most people find GUIs intuitive and APIs not so much. Programmers though, happen to find APIs intuitive. We understand that GUIs are just a layer over a CRUD API and we’ve developed an intuition around that. As a programmer I frequently see opportunities where switching from GUI to API would be advantageous. The GUI is limited to what some UX designer thinks you’d like to do. The API is freer; do whatever you like type of thing.

An example of this situation is what follows. I can access my connected lights through their app. I can even create a bit of programming through the app’s GUI, for example, to turn off the lights after a couple of minutes. The fact that I already know how to set timers and flip booleans but I can’t use that knowledge here is, to me, not ideal. There are things that a GUI simply won’t let me do, so naturally I want to use the API.

To use the API however, there’s no other option but to read its documentation, figure out which client library to use, figure out how to handle authentication, get an API key, find a place to host and run the code, etc. Who has time for that? Even HTTP is an implementation detail that I shouldn’t need to know about. All I want to write is:

Programmability goals

There is a better way and game programmers have sort of been doing it for ages.