RSSAmplifier

Blog

baweaver

Engineering systems that endure.

baweaver.comRSS feed ↗20 posts

Latest posts

Tales of the Autistic Developer - Bringing It Into Focus

How I process problems: hyperphantasia, rotation, the click moment, and using AI as a variance accelerator for a brain that generates more ideas than it can hold.

Beyond Senior - Creating Hope

Organizations teach themselves helplessness through reinforcing loops of scarcity, cynicism, and declining trust. This article is about breaking that cycle.

My Development Setup in 2026

A walkthrough of my current development environment: Ghostty, MonoLisa, mise, ZSH without a framework, and why I automated the whole thing into a single script.

Tales of the Autistic Developer - Panic

For those who don't know me, I'm autistic. This post is about panic: the kind that locks your body, floods your brain, and makes every solution feel equally impossible.

A Rubyist in Go Land: Your First Pokémon API Client

I need to level up on Go, and Pokémon data felt like a good excuse. This post builds the same API client in Ruby and Go, comparing how I think about the problem in each.

Beyond Enumerable: Testing Membership with Bloom Filters

Checking whether you've seen something before usually means storing everything you've seen. A Bloom filter does it in about ten bits per item and can only be wrong in one direction. This post builds from a single bit to the structure RocksDB and Cassandra use to skip disk reads.

Ozymandias on Rails. Cartography of a Ruin

You inherited a monolith with no map. This is how you start drawing one.

Ozymandias on Rails. The Pedestal Inscription

Every successful Rails monolith becomes a ruin if it survives long enough. This post is about why, and what a recovery looks like from the inside.

Rails: The Sharp Parts. A Polymorphic Type Is Not a Foreign Key

Polymorphic associations store a relationship as a class name in a string with no foreign key. That has unintended consequences which may not be obvious, and this article covers five of them.

Beyond Enumerable: Counting Distinct with HyperLogLog

Counting distinct values exactly means remembering all of them. HyperLogLog does it in 16 kilobytes. This post builds from coin flips to bitmaps to the algorithm Redis uses behind PFCOUNT.

Rails: The Sharp Parts. Queries, Read Models, and Batching

Queries own the reads the way commands own the writes, and a T::Struct is the only thing that crosses between them. Every read here ran against ActiveRecord 8.1 before it went in.

Rails: The Sharp Parts. Callbacks Are Not Invariants

Callbacks promise that something always happens when a record changes. They can't keep that promise, and Rails documents the ways out. Every failure mode here ran against ActiveRecord 8.1 before it went in, and the replacement is a command with one door.

Rails: The Sharp Parts. An Index Is Not a Plan

add_index looks like a one-line fix for slow queries. It isn't. This article walks through the failure modes, proves each one with EXPLAIN on half a million rows, and shows how to build an index the optimizer will actually use.

Beyond Enumerable: Streaming and External Sort

Enumerable assumes the whole collection fits in memory. This post is about what happens when it doesn't, built up one step at a time from lazy streams to external merge sort.

Beyond Enumerable: Graphs and Traversal

Enumerable named the ways we walk a line, but some data is not a line. This article builds graphs up from a plain Hash, covering dependency ordering, tsort, friend lists, and a few pathfinding algorithms.

Beyond Enumerable: Heaps and Priority Queues

Enumerable named our traversals, but some collections live past it. This post goes after ordered retrieval: heaps, priority queues, their real uses, and why they belong in Ruby itself.

Rails: The Sharp Parts. lock Is Not a Mutex

lock looks like a one-line fix for concurrency bugs. It isn't. This article walks through eight failure modes, proves each one with forking tests, and shows what actually holds an invariant.

Beyond Enumerable: For Want of Better Windows

Enumerable taught us a better path for iteration, what if we applied those lessons to other forms of iteration? This article covers windows and pointers.

AI Didn't Create These Problems. It Just Stopped Routing Around Them.

Every guardrail we need for AI is a good practice we should have already been doing. AI exposes the systemic gaps that experienced developers have been quietly routing around for years.

Grab the Chainsaw

A tornado flattened my town in 2011. What I learned that night still shapes how I show up to work today.