a few years ago my daughter asked the question “what is programming?” she was quite young at the time, and heard me referencing the skill for one reason or another. so rather than just explain with words, I got out the laptop and we wrote a program to demonstrate.
programming has always been an enjoyable activity in and of itself for me. I work as a software engineer, and have found that this is not the case for everyone doing the work. but the ability to enjoy the act itself is what allows you to keep up with the field. if the only programming you ever do is that which people are paying you to do “on the job”, you will not discover new things, as employers rarely are willing to risk your time on the clock on wild new ideas. so I wanted to convey this aspect in some way.
at the time I was reading Carl Jung, and was very interested in his method of “automatic writing”. my interpretation of this idea is that one just starts writing, with or without a plan, and allow the ideas that inevitably enter one’s mind to drive the process. it sounds strange, but it’s the most natural thing imaginable once it starts working. so my idea was to just start writing code and see what happened.
we began with a bit of code to make up a new word. the word was chosen from a random set of letters, with an upper and lower bound so the word wouldn’t be too short or too long, with each letter chosen randomly from the full alphabet. there were no other conditions. so we played with these random words a bit, and found that the most enjoyable part was trying to pronounce them. we used the Mac OSX program
say to have a hilarious vocoder voice pronounce the nonsense words for us.
this new found activity had its own center of gravity and pulled us in. the program evolved quickly to include specification of different voices to
say, to pick a more pronounceable balance of vowels and consonants, and the concept of multiple breaks or words in each phrase.
the resulting program produces and executes commands which look like the list below. if you are using a Mac you can copy and paste any one of these lines into the terminal and hear the result.
say -v Jorge "ocakyfor efobo otyfywad eqiw ehynijuqi"
say -v Damayanti "iba yjixum"
say -v Fred "azomot ula icahihydu ywejahy"
say -v Diego "ucop omydoxy ogu uko ukoroparap ecomut omy aryt upycususab"
say -v Joana "obo avysafunob ikyve omoren"
say -v Lekha "ecinohoko"
in the end we asked the program to name itself, and it came up with
tinukajazojipodi. if you are interested in reading the source code, you may do so at github.
I don’t know if it’s possible to convey the joy of creation to another person, or the ability to enjoy programming in itself, but I hope so. it seems worth trying, at least.