Minor Arcana logo

Minor Arcana

Archives
November 13, 2017

The joy of programming

Your growth as an engineer is mostly defined by your climbing of the ladder of abstraction. Everyone’s road is different, but the landmarks are pretty similar: you start out implementing facts, then features, then architectures, then ideas. The line of code begins as your primary currency, the artifact by which you know your job is done, but it recedes into the horizon.

This isn’t to say that I write less code than I did when I was a younger engineer; I probably write more. But the code is less important — implementation is more of an afterthought than a going concern.

Sure, the code is important. Correctness is important; readability is important; technical debt is important. I’m not saying any of these things aren’t, but I’ve recognized them more as lagging indicators of other aspects of engineering: things travel downstream, and leaky abstractions in code come from leaky abstractions in real life.

I’m asking myself “why doesn’t this code compile?” less, and asking myself “what don’t I understand about the underlying domain?” more.

It’s tempting in these cases to find yourself in a sense of disillusionment with programming: to see it purely as a means to an end, as opposed to a magical art in of itself.

Anyway, I built my own personal public notebook this weekend. It took me three lines of code:

  • ls notebook.md | entr ./notebook.sh, which monitors a text file for changes and executes a script whenever the file changes
  • python3 -m markdown notebook.md -f index.html, which takes that file filled with notes and converts it to HTML
  • s3cmd put index.html s3://notebook.jmduke.com --acl-public, which uploads that HTML file to S3.

Is this programming? Maybe it’s more like duct tape, I didn’t build any of these tools, I just jammed them together like LEGO bricks. But now I have a text file that automatically publishes to the internet whenever I save it. And that part of this life will never grow boring to me: the ability to will tools into existence.

Happy Sunday.

I hope you build something you love.