Parachuting into an unfamiliar codebase, where the original author is long gone, is an experience that will be familiar to a lot of developers.
People writing with AI assistants have been encountering this in another form.
Simon Willison wrote a brief post about it recently, concluding, "I no longer have a firm mental model of what they can do and how they work, which means each additional feature becomes harder to reason about, eventually leading me to lose the ability to make confident decisions about where to go next."
The way that I've used AI for coding has changed drastically over the last year.
In fact, the rate at which it is changing is probably the most drastic element of it – I can't recall any time since my first year of college, twenty years ago, that I've experienced such a rapid evolution in my own ability to do stuff.
This week I have written a fully self-contained system monitoring daemon and terminal UI, as well as custom Rust firmware for the Ulanzi TC001 desktop clock.
These are two projects that would have remained ideas, never making it out of my notes folder.
GitHub, Github Actions, and the GitHub Container Registry have been how I've been handling builds, but it's been slow, and it's started to seem absurd to have all these builds occurring in some random datacenter presumably on the other side of the Atlantic ocean, that I am then pulling back to a server in Europe.
I started fishing around for a locally hosted replacement, coming across Forgejo, Woodpecker CI, and OneDev in addition to more familiar names like GitLab and SourceHut.
At some point it occurred to me that this was a lot of ceremony for something relatively simple. How hard could it be just to have a git remote and hang some builds off it? I'm not trying to launch my own GitHub here.
I was never big on New Year's resolutions. However, as I get older I appreciate that there are natural moments of reset in your life. New decades, new jobs, new homes. New years are one of the predictable ones. Conveniently, they come with a built in universal counter and even a glass of champagne and fireworks at the end. Might as well take advantage of the infrastructure.
So, I've thought about what I've been doing over the last while that I'd like to continue doing, do or better, or do less, and come up with what feels like a pretty achievable list:
- Run 5km twice weekly; weights twice weekly; eat less meat; drink less; and less frequently; write every day; publish every week.
Some of these are measurable, some a bit more vague. Drink less, for example. I'll get into my rationale below.
I'm a big fan of Cloudflare, but the extended outage on November 18th was long enough that I started wondering whether I really needed it to be in the critical request path for my blog.
A price negotiation call to Virgin Media ended up with me upgrading to 5Gb fibre broadband.
This took me on a bit of a journey investigating things that have changed in home networking since 1Gb networking cards hit the scene.
Turns out, somehow both more than I expected and less than I imagined!
I started building a new blog in December 2024, and wrote my first substantial post in January 2025, but I have only published a handful of posts since then. What does that tell me?
I recently refurbished an old iPod Classic, and purchased some albums in the iTunes Store (yes, it still exists!).
Once I found out that most iPod Classics are capable of playing Apple's lossless format, ALAC, I really wanted to sync them over to experience this heretofore unimaginable audio clarity.
However, even though I could download them, the albums refused to show up in the sync list. Switching back to AAC worked fine, but ALAC was not working.
I needed an invoice generator to quickly produce some random test invoices while building Manano, as part of a feature letting tradesmen track receipts by sending photos to our WhatsApp number.
I tried a few invoice generators that showed up in Google results, but all of them were oddly slow, wouldn't remember details without signing up, and sometimes produced odd looking outputs.
Eventually I realized it would probably be straight forward enough to whip one up myself…
A few months ago my parents gave me a box of my stuff they’ve had variously in attics and storage since I moved out in my early twenties.
One of the things in it was my Sega Mega Drive — boxed, and with games and accessories.
Unfortunately, I didn't have a TV that I could connect it to! The only connector packaged with it was designed to plug into the aerial socket of a CRT television.
In the last week however, I've gotten hold of a CRT television after a bit of digging around.