English is a pretty expressive language. That comes with a lot of upsides, but it also comes with the notable downside that talking about things with understanding becomes more difficult when two parties don't understand each other's working definitions. This is a log of mine.
Cascade Chat could connect to Libera.Chat just fine and then lose the socket a few seconds later. Finding out why took several PRs and a rethink of its event architecture.
Cascade Chat now runs on an Agentic Development Lifecycle. Agents write the code, Playwright verifies it, and the only human decisions left are ideation, architecture, and the release gate.
Desktop software is having a quiet revival. After years of SaaS monoculture, frameworks like Wails and Tauri are enabling a new generation of native-feeling apps built with familiar web technologies — at a fraction of Electron's resource cost. Wails v3's first-class in-app updates might be what finally tips the scale.
Wiring SimpleFIN, a self-hosted Actual Budget instance, and Claude Desktop together over MCP so I can actually talk to my money — and walk into my financial planner's office already knowing the picture.
The industry has spent a decade recoiling into rigidity and pessimism, and the AI moment is reproducing the same false dichotomies. A case for returning to curiosity, experimentation, and the willingness to be wrong.
Warrant is a work queue plus shared project context so people and IDE agents can pull tickets, log work, and hand off to human review, without losing the thread between chat and the repo.
Yes, it is still 2026 and you read that title correctly. I built an IRC client. Slack, Discord, and Matrix all still exist. But here we are. I made an IRC client, and I'm going to tell you about it.
A practical guide to designing distributed systems by breaking them down into functional areas: architecture, communication, ingress, events, databases, caching, testing, and instrumentation.
I've been working on [lan.events](https://beta.lan.events), a platform for organizing and discovering LAN parties and gaming events. I started going to LAN parties as a kid, took a long break as a young adult, then got back into it in 2025 thanks to my friend Ben. We hit DreamHack together, which led me to PDXLAN in the fall.
I've been publishing HashPost's code publicly since its inception but it's not actually open source. Recently I've been thinking about what the pros and cons of open sourcing are as well as how HashPost will sustain itself.
My blog is actually two applications: a frontend and a backend. The frontend used to be a client side rendered (CSR) application, which worked fine for my usual work on internal tools.
My 2025 roadmap is pretty simple: - [x] Site branding - [x] JSON feed endpoint > I originally intended to publish an Atom Feed but ended up going with JSON Feed since most modern services support it.
It's been six months since I last wrote about my experience using GitHub CoPilot while I wrote this blog. If you haven't read that entry, my key takeaways were: - CoPilot functioned like a smarter...
An idea I've been proliferating recently is that, in the year of our lord 2024, server and client communication should be guaranteed to be wire-compatible.
I love Python, but it's a minefield of a language. Here's some things I do to have confidence in the code I write. Always log exceptions Exceptions are the standard path for error reporting in...
November updates are out. This is the conclusion of the major features I intended to develop initially for this blog. Below is a summary of new features and fixes.
I've been working on the comments system for my blog in the past week. Comments systems are complicated; there's not only what the user experiences but there's also entire sub-systems and metadata...
As promised in one of my earlier posts I have continued to hack on this website. The early days of this project were pretty rudimentary at best as my git history will happily attest to.
I wrote a file manager so that I could upload photos and it turned out a lot better than I expected. I ended up with this feature list: - Public files - Private files - Automated, time-based...
I use OpenAPI Generator's typescript-fetch client in most projects I build. For the most part, it does the job, but it wasn't super obvious how I could capture errors as part of my response.
I love Django as a framework. It's modularity makes building new and complex projects a breeze. When Django Ninja came around and layered Pydantic Schema onto the framework for serialization I was...
Before I was a professional programmer programming was much more of a labor of love. I built tools for IRC, mostly scripts and bots for channel management or novelty like slapping someone with...