Articles
Deleting Duplicate Schemas
4 min The same deletion across years of work: when two representations of one truth appear, keep one and derive the rest.
Recovery Paths
4 min Arranging a way back before taking the next step, from shell cleanup to snapshots and atomic publication.
Where CONTRIBUTORS.txt Ends Up
3 min Tracing an old memory about Android phones and Cisco equipment to the files that carried my name.
Spice Harness
6 min The agent harness that grew out of Grit’s development tools: recovering context, delivering corrections, and coordinating the next piece of work.
gotta
5 min A CLI that keeps retrieved evidence, its source, and the work around it available after the conversation compacts.
Where the Markdown stream stopped
3 min A Glow streaming experiment accumulated boundary rules and tests, but needed continuation support from the renderer beneath it.
The Send Button
4 min An empty-delimiter heredoc from an old trick list became the send step of a multi-agent shell protocol.
Email-Keyed Git Identity
2 min Selecting a preferred SSH key from Git’s effective email address, with organization-specific identity set by the remote URL.
The Field Layout as Data
5 min One speedball field layout, followed from memorized real fields through two VR products to a PNG codec on PyPI.
One bunker per pixel
4 min layoutc stores a paintball field layout as a PNG—sub-pixel position in R/G, rotation in B, identity in A, and transparency as literal emptiness.
One spawner system
3 min A comment in a public Unity workshop asked how to instantiate entities at a position through a command buffer. My fork answered it with one system, one job, and one aspect.
Grit Paintball
4 min A VR paintball trainer I co-own: building event layouts, practicing them at human scale, and the work since the ownership transfer.
Player, Operator, Owner
6 min One VR speedball community seen from three positions: on the roster, running the servers, then owning a game.
Rewriting a packet in place, from inside the game
4 min An LD_PRELOAD send() shim that swaps an advertised address for an equal-length one, so the surrounding framing lengths never move.
Autoscaling with no coordinator
3 min Symlinked peer status, systemd path activation, and one-neighbor watcher logic form a ring that starts, drains, and stops lobbies without a central controller.
Snap Game Services
6 min Keeping competitive VR speedball lobbies available around a closed game server, and scaling down without ending people’s matches.
More Than the Printer
4 min Why a tiny resin printer needed a room full of washing, trimming, inspection, and curing.
Assume physical access
7 min An Exosite webinar on connected-device security: what a datacenter’s layers of protection become when the device is in someone else’s hands.
Static Python
7 min zippy: a PGO-built CPython with every C extension statically folded in, the application zipped onto the tail of the binary, and the interpreter treated as just another dependency.
settingsd
3 min conf.d for Python settings, with ordered executable fragments and a record of where assignments came from.
Where Shell Hides Bugs
4 min Three latent shell bugs from my own repos: a config knob wired to nothing, a readability cleanup that inverted a boot flow, and a bashism hidden by discarded error output.
Couch Multiseat
4 min Five weeks to build a from-scratch X11 window manager that gave each gamepad an independent pointer so several Minecraft clients could share one TV.
Xacto
4 min Deriving a command tree from Python modules and signatures, then making tool discovery work across deferred imports and ZIP files.
Building against the metadata
5 min Distlib and Distil exposed the practical edges of a static Python build: incompatible local candidates, ZIP resources, changing schemas, and executable build steps.
GridFUSE
4 min A filesystem experiment over MongoDB GridFS: directories as queries, new versions on overwrite, and deletion through a visibility flag.
Threesixty
4 min Xbox 360 through a compressed VPN to DigitalOcean, with a live player map, traffic-based host estimates, and replayable captures.
uWSGI
5 min Learning through a server I wanted to use for almost everything: embedded files, Python entry points, packet boundaries, and the order things came alive.
Never Boot the Real Root
5 min The __active/__snapshot/__rollback scheme: snapshot-and-rollback boot for Arch, with a conversion wizard living inside the initramfs.
What Happened With pyjs
7 min Working on a Python-to-JavaScript toolkit, the 2012 split, and what I would do differently.
/proc/self/tags
4 min Proposing process-relative cgroup tags after an earlier namespace question exposed an isolation guarantee that never existed.
Callback identity for WebKit DOM events
2 min Making WebKit’s DOM events usable from Python required callback types, lifetime information, and an identity the remove operation could recognize.
Containers in 2010
6 min vps-lxc: templates as btrfs subvolumes, containers as writable snapshots, and the host-local image model I built around them.
pacproxy
4 min A caching proxy for Arch packages that streamed and cached in one pass, kept HTTP validators as sidecar state, and published its own caveat list.
Learning Python by Debugging Boost.Python
2 min A VPython crash took me through Python versions, word sizes, and Boost builds to find a working combination.
Broadband for the Bakken
3 min Installing satellite broadband at drilling sites and helping build a fixed-wireless ISP on the Montana–North Dakota line.
We Rode the Robot
2 min Programming Sidney High School’s omni-wheel robot for FIRST Triple Play, then testing the drive by sitting on it.





