← Home

Writing

Posts

NEATBird: Teaching Flappy Bird to Evolve on the GPU

How I built feed-forward NEAT in JAX, made Flappy Bird harder, and discovered the trainer was grading a different level than the one it practiced.

reHarpy: Reviving a Dead Twitter Client

How I brought Harpy back by making Twitter's website impersonate the API it killed.

Building a Cloudflare PR Review Agent

How I built a GitHub App that reviews pull requests with bounded context, structured findings, and no authority to act on its own.

WabiSabi: An Imperfect Rust Agent Harness

A look at building Sabi Agent, a small Rust coding-agent harness with inspectable loops, tools, approvals, sessions, and an early Tauri desktop shell.

Yomiji: Offline-First Japanese Learning App

How I built Yomiji, an offline-first WaniKani study app for Android with SQLite sync, local search, lessons, reviews, and React Native platform details.

Ditching Spotify: Owning Your Music

A practical argument for leaving streaming behind and building an offline music library with budget audio gear, local files, and fewer platform surprises.

Custom Keyboards and HHKB

A personal tour through custom mechanical keyboards, switches, layouts, and the HHKB rabbit hole that turned a simple upgrade into a full hobby.

Vim for Beginners

A beginner-focused guide to Vim motions, modes, editing habits, and keyboard-driven workflows for Linux users learning to stop reaching for the mouse.

Gaming on NixOS! ❄️

A walkthrough for setting up gaming on NixOS with Wayland, Hyprland, OpenGL drivers, Nvidia considerations, Steam, and practical troubleshooting.

Installing Zen Browser on NixOS ❄️

A beginner-friendly NixOS flake and Home Manager walkthrough for installing Zen Browser from an external flake on a declarative Linux setup.