// FIELD NOTES FROM THE BLIND

Strongly Opinionated,
Weakly Typed.

Engineering write-ups from a guy who hunts ducks, dives caves, and ships side projects. If it runs like a duck and deploys like a duck — ship it.

Legal Light · Wisconsin shooting hours on the App Store

Counts down to legal light for your exact spot, for ducks and geese, deer, turkey and early teal, straight from the DNR's tables. On the lock screen, in the Dynamic Island, and with no signal.

Sextant · Night sky and satellite tracker on the App Store

Hold it up and it shows what's there: stars, planets, the Moon in its phase, and the satellite crossing overhead right now, with a fading trail so you can tell which dot is which.

Sounder · Offline field maps on the App Store

Trails and two-tracks, back forties, rivers and marshes. Stack as many maps as you want, record where you went, and add your own layers from the open formats agencies already publish in.

Squall · Weather, your way round on the bench

A next-hour rain graph, radar that actually moves, lightning, and a main screen you arrange yourself.

Clack · SSH and mosh terminal on the bench

A terminal for the phone with its own mosh client written in Swift, so the session survives the drive home.

drwxr-xr-x nov 12 bent/ Bent · Get bent A decompression planner built around the contingency grid. Type one dive and get that dive, the deeper and longer versions of it and, on a rebreather, the open-circuit bailout for every one, side by side. Lay any three on one chart. Experimental and still under development. drwxr-xr-x nov 12 palette/ Palette · Space bar, lock, repeat A colour palette generator that works in OKLCH. Tap space for a new palette, lock the colours worth keeping, pick a harmony rule or pull the colours out of an image. See the palette on a mock page, as tint and shade scales, and the way colour-blind eyes see it. Then copy the CSS. drwxr-xr-x nov 11 pellets/ Pellets · What's in the shell How many pellets are in 1⅛ oz of steel 2s, or 1⅜ oz of lead 5s? Two shotshell loads side by side, every pellet drawn to scale, then a simulated 40 yard pattern from each with a life-size bird on the board. drwxr-xr-x oct 31 auth/ API Auth · Show me the token API authentication with the actual bytes: Basic, API keys, cookies, bearer tokens, JWTs, OAuth with PKCE, refresh, OpenID Connect, SAML, backend-for-frontend, on-behalf-of, mTLS and signed webhooks, running for real in your browser. Open any request, read the token, break it. Ends with an AI app signing in to an MCP server. drwxr-xr-x oct 25 dial/ Dial · Find the game on the radio Which station near you has the Brewers, Packers, Bucks or Badgers, and whether it still comes in after sunset, when AM stations turn down and aim away. Coverage from each station's FCC licence and real tower array, not a dot on a map. drwxr-xr-x oct 22 full-stack-story/ Full Stack Story · Points go up, nothing ships Game Dev Story, but you're a tech lead at a big company. Pitch projects, survive the architecture board and the CAB, and support everything you ship forever. The VP grades the slide deck, the users' score isn't counted, and the office plant dies of tech debt. drwxr-xr-x oct 21 neuron-census/ Neuron Census · 36,864 neurons, one question We trained our own GPT from scratch, then asked every neuron in it whether it has one job. Click around inside the model in 3D, read what two blind raters found, delete its weak and strong firings, and turn one neuron up to see what it does. drwxr-xr-x oct 20 neuron-explorer/ Neuron Explorer · What every neuron likes Click a photo and watch it climb four image models, layer by layer, in 3D: every neuron a tile that glows when the photo fires it. Then open any neuron to see the photos it likes most, and the few names that passed a test. drwxr-xr-x oct 20 git/ Git Pond · Nothing gets lost A git game. The commit graph is the board: drag HEAD to move around, drag a branch to move it, drop a commit on HEAD to merge it, and every move types the real command. 39 levels from git init to rebase -i, bisect, pull requests and force pushes, scored in stars, plus a simulator for your team's branching strategy. Real commands, real hashes, and nothing you committed is ever really gone. drwxr-xr-x oct 19 sql/ SQL Rows · Show me the rows SQL with the actual data instead of Venn diagrams. Watch a join test every pair, walk into the traps (the WHERE that eats a LEFT JOIN, fan-out, the NOT IN that returns nobody), then GROUP BY, CASE and window functions. drwxr-xr-x oct 18 feeding-time/ Feeding Time · Feed the fish, grab the coins A fish-tank money game in the spirit of Insaniquarium: feed the guppies, grab the coins, buy the egg, and shoot whatever comes through the portal. Built for a phone. drwxr-xr-x oct 18 holdem/ Hold'em Retriever · The math behind every call A Limit Hold'em trainer against a table of tunable bots, with a coach that shows the pot odds, equity and EV behind every decision. drwxr-xr-x oct 18 shooting-hours/ Shooting Hours · When the light goes legal Wisconsin shooting hours for wherever you are standing, straight from the DNR's own tables: your area, your zone minutes, daylight saving handled. Live countdown, works offline in the blind. drwxr-xr-x oct 17 power/ Power Injection · Where the volts go LED power injection for WLED builds, solved as one circuit. Mix 5, 12 and 24 V strings, drag the feeds, watch the voltage and colour at every pixel. drwxr-xr-x oct 15 transformer/ Tiny Transformer · Inside a tiny language model A real 432k-parameter model trained on Jules Verne, live in your browser. Every weight on screen: trace a guess, switch off heads, watch it learn. drwxr-xr-x oct 11 recoil/ Recoil · Where the kick comes from Recoil & ballistics calculator: shotshell, rifle, pistol, rimfire. Compare two loads, then see why heavy-and-slow kicks harder. drwxr-xr-x oct 06 one-gate/ One Gate · Build a computer from one gate From a single transistor to a Turing-complete machine, using nothing but NAND. Push the switches, watch the signal move.

Engineering leader by day. By night: homelabber, cave diver, duck hunter, 3D printer wrangler, and serial side-project starter (and — occasionally — finisher).

The name? Duck typing is how dynamic languages decide what a thing is: if it walks like a duck and quacks like a duck, it's a duck. I just happen to also sit in a blind at 5 a.m. with a shotgun and a thermos.