Now and Then
I originally wrote this blog and the technology behind it in the last days before LLMs began useful. Writing both code and human text has in some ways been irrevocably changed. Rewriting the CSS for this blog, for example, was now a matter of an hour's idle prompting instead of a day's intensive labor.
Headless Development
I have a mac mini running next to my google fiber router. It's plugged directly in via ethernet, and then a remote KVM https://www.amazon.com/dp/B0F21SQ4S8?lv=shuf&channelId=500&plpRedirect=mhFallback lets me control the box over the internet for administrative purposes. Mostly, it is set up to run a single claude code instance in remote mode so I can iterate on my latest projects in isolation but also natively by iOS app and via any web browser.
This is an approach that may seem like overkill to someone used to the pure academic world of machine access. What's wrong with good old SSH? However in practice the limiting factor for many simpler approaches is claude code's CLI tooling, which truly wants a 'real' user behind service consumption. Programmatic access is gated to an exponentially higher cost per token, my current 5x plan is sufficient for almost any task I can imagine short of a full port of a large legacy app.
The workaround for this is the remote KVM, which convinces my mac mini that a real monitor, keyboard and mouse are all interacting. In the odd event of a complete shutdown, the mac mini will restart itself and I need only log into the web portal and hit the up arrow a few times to launch claude again from iterm2.
I will note that my own human limitation is intentional, I bottleneck code going out at the review stage and thoroughly read my own pull requests. If it's too long for me to read, it's almost certainly too long for me to maintain! Then on merging my vercel infra config picks up the changes and deploys them.
The first step of freedom for the developer is being able to command the agent from anywhere, but the second step adds a dimension of both power and complexity - orchestating agents in parallel. I don't believe this is a particularly solved problem yet, since it can involve tricky concurrency questions around sensitive operations like migrating the database. However a dev who is intentional with this power can keep smaller tasks in flight while they are still 'heads down' on what would otherwise be all-consuming work.
To be honest, it is sometimes dizzying the speed at which LLMs can meaningfully contribute to new problems. This effectively means I have no excuse not to fly through challenges as diverse as woodworking, creating a karaoke video, or building the product I've always daydreamed about.