Why hasn't X given us a productivity boost? I've heard this question many times through the years, where X is Windows, OOP, the internet, blockchain, agile, AI, etc. Sometimes, the answer is that X is overrated. Sometimes it's that you're doing X wrong. Sometimes it's because you don't have an X-sized problem. For instance, most businesses didn't have a blockchain-sized problem. The question I'm…
Preventing the Collapse of Civilization In 2019, Jon Blow gave a talk called Preventing the Collapse of Civilization. He presents a historical walkthrough of technology which has been lost over the millenia, and ends with a warning that this could happen to us. In the light of agentic coding agents, this talk seems even more prescient.
Claude Code Example I've used Claude Code off an on for around a year, using it heavily in the last few months. I thought it might be helpful for others (and maybe my future self) if I jotted down an example scenario and a specific prompt I used. Overly general guidance I recently asked it to build a feature for me-- a calendar view that organization admins could use to see all scheduled activity…
Where do we go from here? AI has changed the software engineering profession. Is this change permanent? If so, what does the profession look like moving forward? Are incoming grads screwed? Does experience matter at all? What should I do about my career if I'm not ready for early retirement, but am too old to make a significant career pivot? I'll explore all of this and more below. Is this…
Claude and Bun I thought of this project after the Nth npm-related vulnerability. How realistic is it to build a low-dependency application, using Claude to generate code that you would normally pull in from npm? I also wanted to do a deeper assessment of building something realistic in Bun. Replacing npm with Claude Code Most of the code in the project was written by Claude Code (Opus 4.5). I…
Podman dev environment A couple years ago, after yet another egregious malicious npm package, I changed my dev environment. A friend asked me to do a quick write-up, so here you go. You're welcome, Matt. I run a lot of little local projects, each of which has their own dependencies. I don't trust the supply chain for all of my Neovim plugins, Ruby gems, Go deps, npm packages, etc. So, I decided to…
Firebird While poking around with a play project, I was thinking, "Wouldn't it be nice if SQLite had a server mode?". It'd be nice to have a database that could give us the best of both worlds-- the simplicity of SQLite and the multi-client scalability of Postgres. You could build small projects with it, and if any of them ever needed to scale, no problemo. Well, Firebird might be that database.…
Are price controls defensible? Are price controls defensible? John Kenneth Galbraith is the most competent, intelligent defender of price controls that I've come across. He was in charge of WWII price fixing— a scheme which most consider to have been a success. War is almost always inflationary. WWI certainly was. WWII much less so. In his book "Money: Whence It Came, Where It Went" Galbraith…
Communication Firehose Without intentionality, you will find yourself at the center of a barrage of notifications. Each one clamoring for your attention. Each one giving you that dopamine hit. Each one making you feel productive. Each one distracting you from your actual work. Busyness and productivity are rarely the same thing. (My most productive moments often happen in a hammock .) It's…
Why is deflation bad? I recently argued that deflation ought to be a good thing. If everything gets less expensive over time, savers are rewarded, retirees on fixed pensions are rewarded, basic necessities become more affordable to more people. Shouldn't deflation be a boon to the poor? What's not to love? Well, plenty. I'm reading Money by John Kenneth Galbraith. It is written with a dry wit that…
Switching to Linux In 2020, I switched to Linux. If you're considering making the switch, I recommend it. Here's my unsolicited advice. Fedora The Linux ecosystem presents you with a lot of choices. Distrohopping is a deep, unproductive rabbit hole. There's a distro for everyone, including some really esoteric ones. But, if you're just starting out, you'll do well to stick with a mainstream distro…
Bun DIY: Tailwind Lite When I started my zero-dependency Bun application experiment, I had no plans to build a CSS processing layer. My plan was to just hand-roll my CSS like any self-respecting neanderthal. But... I'd forgotten how much I like the convenience of fire and wheels and tools and suchlike. Within a few minutes, I was already well on my way to writing a steaming pile of unmaintainable…
Why write zero-dependency software? Over the past few weeks, I've been tinkering with building a project from scratch in Bun. Here's why I'm doing this. There are many examples of supply chain vulnerabilities . In particular, the JavaScript / TypeScript world has a reputation for pulling in dependencies for even the most basic needs. I once had a job working on a popular open source project whose…
Simple dependencies Simplicity. We all want it, yet it eludes us. We reach for complex tools to solve simple problems, but we all know that most problems are best solved by composing simple tools. Small teams can accomplish much, if they aren't overburdened by a poorly-fitting mishmash of tools. It's a strange twist of psychology that leads us to reach for complexity. I don't know what's behind…
Bun DIY: Sessions Sessions allow you to store data about a visitor of your site. It is usually used to identify who is making a request, but you can store any arbitrary data in a session. Sessions aren't baked into Bun, so we'll be building out a simple cookie-based session library in this article. Approaches There are two general ways to implement sessions: Store session data in an encrypted…
Bun DIY: Serving Static Assets Today, we'll be building a small, zero-dependency HTTP handler for serving static assets using Bun. Serving static assets from Bun is pretty simple, but there are some things to consider: Properly handling missing files Protecting against path-exploits (e.g. requests like /assets/../.env should fail) Using ETags to avoid unnecessary bandwidth consumption Usage Call…
My Full-Time Job Is Reading Hacker News Apple tells me I average 2.5 hours per day on my phone. If a full time job is 40 hours per week, I'll spend the equivalent of over 4 years per decade in the full-time job of pissing time away on my phone. Ah, the good life! 2.5 hours per day amounts to: 17 hours per week 38 days per year 22 work-weeks (of 40 hours) per year 9125 hours per decade. 380 days…
Bun: Zero-Dependency Server-Side JSX I'm building a little, zero-dependency application with Bun. Bun comes with JSX support out of the box, but it took a bit of digging to get things working with no dependencies. I figured I'd explain the process. tsconfig First, we need to tell Bun / TypeScript where our JSX rendering logic lives. We'll put everything in lib/jsx : Add the following…
Bun: DIY Live Reload Live reload lets you see changes instantly in your browser whenever you save any files. It's a must-have if you want to iterate quickly on any browser content. Live reload isn't baked into Bun, but it's fairly easy to wire up. Here's an example of what we'll be building: // Watch the css and dist directories, and refresh all browsers when // any changes are detected. Browsers…
Running A Bun Service On A Cheap VPS Today, I spun up a Bun service on a Hetzner VPS. It was pretty straightforward, but I thought I'd share my notes. Config Spinning up a new VPS on Hetzner was simple. I took Hetzner's example config and tweaked it to include automatic updates: #cloud-config users: - name: {YOUR_USER_NAME} groups: users, admin sudo: ALL=(ALL) NOPASSWD:ALL shell: /bin/bash…