Skip to content

Articles

Work, play, and the things built along the way.
Choose a tag. Hold Command or Control to combine tags.

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.

Aug 28, 2026

Recovery Paths

 4 min Arranging a way back before taking the next step, from shell cleanup to snapshots and atomic publication.

Aug 28, 2026

Where CONTRIBUTORS.txt Ends Up

 3 min Tracing an old memory about Android phones and Cisco equipment to the files that carried my name.

Aug 27, 2026

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.

Jun 12, 2026

gotta

 5 min A CLI that keeps retrieved evidence, its source, and the work around it available after the conversation compacts.

Mar 17, 2026

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.

Sep 12, 2025

The Send Button

 4 min An empty-delimiter heredoc from an old trick list became the send step of a multi-agent shell protocol.

Aug 26, 2025

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.

Jun 28, 2025

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.

Mar 19, 2025

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.

May 20, 2024

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.

May 1, 2023

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.

Dec 18, 2022

Player, Operator, Owner

 6 min One VR speedball community seen from three positions: on the roster, running the servers, then owning a game.

Dec 18, 2022

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.

Sep 10, 2022

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.

Sep 10, 2022

Snap Game Services

 6 min Keeping competitive VR speedball lobbies available around a closed game server, and scaling down without ending people’s matches.

Sep 10, 2022

More Than the Printer

 4 min Why a tiny resin printer needed a room full of washing, trimming, inspection, and curing.

Apr 27, 2019

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.

May 18, 2017

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.

Feb 2, 2015

settingsd

 3 min conf.d for Python settings, with ordered executable fragments and a record of where assignments came from.

Nov 3, 2014

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.

Aug 14, 2014

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.

Apr 26, 2014

Xacto

 4 min Deriving a command tree from Python modules and signatures, then making tool discovery work across deferred imports and ZIP files.

Mar 19, 2014

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.

Jul 10, 2013

GridFUSE

 4 min A filesystem experiment over MongoDB GridFS: directories as queries, new versions on overwrite, and deletion through a visibility flag.

Apr 10, 2013

Threesixty

 4 min Xbox 360 through a compressed VPN to DigitalOcean, with a live player map, traffic-based host estimates, and replayable captures.

Mar 27, 2013

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.

Nov 20, 2012

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.

Jun 3, 2012

What Happened With pyjs

 7 min Working on a Python-to-JavaScript toolkit, the 2012 split, and what I would do differently.

May 3, 2012

/proc/self/tags

 4 min Proposing process-relative cgroup tags after an earlier namespace question exposed an isolation guarantee that never existed.

Mar 13, 2012

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.

Feb 5, 2012

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.

Feb 11, 2010

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.

Dec 20, 2009

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.

Sep 16, 2009

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.

Apr 1, 2005

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.

Jan 1, 2005
No matching items