Like many experienced programmers, I now use generative AI to write most of my code.
I can’t help but feel a bit sad—and scared—about that.
I mean, it’s a crazy force multiplier, and it’s enabled me to do more than ever, but I worry sometimes both about losing the knack as well as the joy of crafting programs.

So I’m starting a monthly meetup called Slow Code where we, quite simply, practice writing code by hand, without it being generated for us.
For the landing page, I was looking through images of punch cards (as a metaphor for ‘slow code’) and thought, wouldn’t it be fun to have an interactive visualization where you can type in text and see what the punches would look like for that text?
And then I thought, wait a minute, I should be coding this all by hand! It’d be a bit ridiculous—and even hypocritical—to generate it, considering the premise.
And so I did, and I gotta say, it was a blast. Did it take longer? Absolutely. This project could have been generated, revised and tweaked in about 5-10 minutes (which, by the way, is objectively crazy) by gpt-5.5 or similar.
But was it more fun? Infinitely. It all came back so quickly. And sure enough, even in a little toy project like this, there was that frisson of pleasure from discovering systems and inventing solutions.
In this case, it was things like: what’s the best data structure to represent the punch card’s encoding? (In this case, “Hollerith” encoding for the IBM 5081 format) What’s the best way to derive the SVG coordinates for each punch (which, incidentally, are not simply y-multiples, but rather matched exactly to the real-world card rows)? What’s the best way to iterate through the input string?
To be clear, these are all very simple, ordinary tasks, but it was fun nonetheless to tackle them. And it reminded me, too, of the role of my notebook, where I always started projects (and frequently still do), in understanding problems by sketching.
These are exactly the kinds of things I want to help people remember, rediscover and retain with regular practice. If you’re interested, drop your email, and if you’d like to start your own somewhere, get in touch!