A poem I wrote earlier this year.
All I do is play with strings
Copyright 2020 Thomas A. Limoncelli
I used to write code. Now I just play with strings.
In the old days I wrote code to put text in a window, or display a button, or follow a mouse. I had to call functions in a library. Bits and bytes and pointers and things. Very subtle stuff!
Now I just play with strings. Display some text? I put it in a string, surrounded by div tags. Display a button? More strings! Strings that include strings that represent locations of other strings!
One of the first programs I wrote on my first computer poked values into computer chips to change colors and play sounds. I wrote machine code that would activate every time the raster of my TV flew to the top of the screen. My code controlled motors and pulleys. My code read and wrote data on tapes, and disks and later… tapes.
Now? I play with strings.
What is a web page? It is strings.
A static page is strings stored on disk.
Web apps are exactly the same but totally different. Every web page you see in a web app is created by a program. All the program does is read and write strings.
Its input is a string! A web request, along with information about the request… all whispered to a web server in the form of of strings.
The output? More strings. As many as it wants.
If the program needs to read or write from storage? Strings! Strings get sent out to query an API, and the API replies with strings. Query a database? Send a string that is a request, get back a string that is your reply. Operate a credit card machine? Send a string to Paypal and they’ll reply with a string when they’re done.
Sure, many of these programs are quite complex inside. They build incredible data structures, process complex datasets, make very important decision trees. They have objects and structures, conditionals and iterations, whiles, repeats, fors, ifs, thens, and elses. But their input is strings and their output is strings.
What about complex tasks like displaying audio and video? I output a string that has substrings to indicate where to find the content and how loud to play it.
Printing? Animations? Vector art? All are now strings. I even change fonts by outputting a string plus a string that indicates where to download the font!
My friends? Most of them play with strings too.
Not all of them. Many of them still bash bits and bytes, poke and peek chips that control the physical world directly.
But not me. I’m happy playing with strings.
- For those that are confused, change “strings” to “bytes on the wire”.
- A friend that works at Google replied: In my day job we call them ‘protobufs.’
- Another reply: I remember one time in the 90s at $previous_employer noticing that literally every single intern project was translating one type of XML to another. I have since then gone to a much more sophisticated place…I translate one type of protobuf to another instead.