The Joy of Programming

Writing in my journal and standing this site up has made me think about the times I was really energised to do computing work, when I wasn't just not burned out but actually enthusiastic about computing. There's a tendency to focus on the negative things (systems engineers, myself included, seem more inclined to this), but I'd like to focus on the positive because that's what I want more of. What were those positive times?

There was my deployment to Africa [1]. I'd brought a Thinkpad, but ordered an 11" Macbook Air with 64G of disk space while I was in Djibouti; I wrote lots of Python and Clojure on the mac. I took a Udacity course in self-driving cars, was reading SICP and On Lisp, and had fun learning a lot but also trying to build some things - weird things, IRC bots, a webserver in C, some joyous little programs. I had failed forays into node.js and Ruby on Rails [2], but I had a sort-of twitter gateway over SMS so I could use Twitter over a flip phone while I was in places without much internet. I got the Macbook over the Christmas holidays and remember it getting lost in track and it finally showing up, much to my surprise, a month later. That's the laptop I took with me to Amsterdam, where I went to a bunch of art museums, hacked on code with some of the Appsterdam people (a really interesting group!), and in general, I was pretty happy. I also had a Thinkpad (I think an X230, but I forget) that ran OpenBSD and on which I wrote a lot of C. I had a blog for Unix and systems programming stuff written using my static site generator (rawk), and I had my personal site using Octopress [3]. I think part of this was because it was a creative outlet to vent a lot of frustration with my day job. I remember programming Clojure from the balcony at our team house in Tanga, Tanzania, looking out over the Indian Ocean, straining my eyes looking for Pemba Island, and watching the monkeys play on the back wall [4].

Then, there was the first year I moved to San Francisco. I didn't have internet at home, I had no furniture, I had no friends, and my future here was up in the air. I had just started a job at my first Internet Company, I had just written a blogging system in Common Lisp. I downloaded all the docs and whatnot that I needed at work and spent a lot of time at home writing Racket and learning things. I'd intended to learn Erlang, and was really motivated by the talk I saw by Joe Armstrong at a local meetup [5] and by LFE and the Haskell dev environment on my iPad that I'd use to write literate Haskell programs on the bus that I'd turn into blog posts on my dev blog. I was playing with Forth and doing a lot of embedded stuff and having a grand old time convincing computers to do what I want.

That first year or two at Cloudflare was pretty productive; we were building something big (that now powers lots of places, including Lets Encrypt and is commonly referred to in Kubernetes setup guides) where the excitement was contagious. I look at my dev blog from this period and it was full of idea and hope and playing around with ideas, even if I didn't do much with them. The last post on that dev blog is from April 2016 - 3 years ago.

That's about the time I started to get burned out. I spent a while burned out and generally hating tech [6]. It didn't help that I was fighting serious depression, and being an open source maintainer also didn't help. I got into this rut where I avoided computers as much as possible - get in, munge some YAML, leave and go sail or rock climb or play the banjo or whatever, really.

There were a few successes during this time, too. After a failed attempt at a Udacity AI course that I was woefully unprepared for, I made it through their introduction to self-driving cars [7] and a "Python for Artificial Intelligence" class.

I think a commonality for all of these is that I was doing a lot of learning and the future seemed open with possibilities. The people I was paying attention to were creative, joyful, and kind [8]. I held myself back here in that I never got really involved in any communities, something which I regret. I think I was always afraid people would see me as an imposter or that I had bad ideas - and maybe I did have bad ideas and I would have gotten better ones by being around people and contributing. Now I guess I feel that the last few years were wasted, but at the same time I know I had to do some personal growth to get through it.

Of course, knowing all of this is really only half the story. The rest of the story has to be written, and fortunately, I'm the author. I'm going to start trying to find a community of interesting people to get involved with. I've started writing down my goals, and trying to focus on stuff so that I can actually do some interesting things and hopefully contribute to a community. The two things I'm doing first are learning maths from A Programmer's Guide to Mathematics and actually having a go at learning Erlang.

My netbook, a Lenovo N22 I picked up for a hundred bucks off ebay a few years ago, is finally dying. The little eMMC just can't take much more, I guess (to be fair, this month I tried putting OmniOS, OpenIndiana, NetBSD, and OpenBSD on it with no success, but those all probably thrashed the drive a little). I'm a little unreasonably excited by its replacement: an 11" Macbook Air that's pretty close to the one I had in Africa. After having my netbook run Linux for a while (and my beefy Thinkpad still runs Debian and stumpwm), I think it'll be nice to not have to worry so much about the OS [9]. I really just need something with emacs, a shell, a PDF reader, and a compiler, and the rest should come from there.

The ease of publishing journal entries [10] here is hopefully going to make me write more, and I think that can only be good. Reading my old posts made me realize how much I've lost during the burnout, and this'll probably be a good place to keep it up.

Thanks to Wally and Steve for proofreading.

[1]I was sent to Africa with the US Army for a year spanning parts of 2011 and 2012.
[2]Neither particularly suited me at that point in my life.
[3]It was pretty exciting when Octopress got my Coderwall badges showing up...
[4]I still harbour a strong dislike for monkeys, owing in no small part to their plundering of our mango tree.
[5]This was when I used to go to tech meetups.
[6]The one thing I was doing during this time that was helpful was to start digging into illumos, but the burnout got the better of me.
[7]It was particularly meaningful because I started the first iteration of this class in 2012, but couldn't finish because of my internet connection in Africa.
[8]The two communities which I really liked, observing from a distance, were the Clojure and Erlang people. The pop culture of tech wears me down, I think, and maybe that's why these two (at the time) sort of fringe groups were so interesting. It's also interesting that the more Go I did, the more I disliked computers. I'm still trying to figure out what that means.
[9]Thought it means I'll have to remember how to do stuff on it; I think I might give pkgsrc a try, and look into macports and/or homebrew.
[10]I have it set up so that it publishes on a git push to master on Gitlab - the about page has details.