The Simple Joy of Coding by Hand

Ben Hancock

April 10, 2021

Programmers, like others craftspeople, are fans of tools. We rely on good tools to do our work, and inevitably develop opinions about which tools are “best” and which ones should be avoided. At times, these opinions become something more and veer into the realm of zealotry. But in general, we just like to nerd out about our tools.

Sometimes, though, I think there’s a value in doing things the old fashioned way, if only to get a little “closer to the ground” on what our tools are doing behind the scenes. And so that’s why I decided to recreate this blog from scratch, coding the HTML and setting the copy by hand. You, dear reader, will no doubt notice that it’s a bit basic. And I kind of like it that way.

I have rebooted my blog(s) many times before. Most recently, I used a combination of Emacs’ org-mode and Hugo, a pretty slick static site generator written in Go. Before that, I used Pelican, another static site generator created with Python. And of course, I’ve used Wordpress at various points along the way in my time writing on the internet.

All of these tools are nice. They work differently, of course, and are aimed at different audiences. But with each, I’ve always felt that I’m conforming my thinking and design to the contours of the tool. Adjusting to these systems and tweaking them to my liking takes time – time I might have spent learning basics about HTML and CSS that I’ve long ignored (like the difference between the ‹i› and the ‹em› tags, or why it’s important to actually set the alt attribute in an img tag).

A recent post on the blog Unix Sheikh resonated with me:

You shouldn’t be a afraid to code yourself, not even if it is a complicated task. If every programmer was afraid to code, then nobody would ever code. Every time you build something, you learn something, and each time you gain experience and skill.

I was also inspired to make this switch by Scott Nesbitt’s tale of migrating his site, “The Plain Text Project”, to something hand-crafted and the overall appeal of what he calls the “DIY Web”. And after I made the switch to OpenBSD as my main operating system, I found that I really liked the classic, old-school look of its online documentation (I borrowed the CSS for styling code snippets from the OpenBSD site.)

Reading the HTML source for the OpenBSD pages, or those of other software projects I admire like mutt, I couldn’t help but notice that they too look to have been coded by hand. There’s nice, readable line wrapping and line breaks between elements; a bit of hand-crafted, simple charm under the hood.

I’ll cop to the fact that as this grows, I might look back and say I was foolish – that this was never maintainable. But for now I’ll embrace the simplicity, and all the little annoyances and learning it entails.

Update: Jan. 18, 2022 — After mucking around writing HTML for a while, I ended up moving to a workflow where I write mostly in Markdown and then generate my blog using pandoc and a shell script. This allows me to write in a way that focuses on the content, while still keeping things pretty simple. I’ll share a link to a repo with the script and some examples in the future.

Copyright (c) Ben Hancock. Read the license.