$ Blog
Thoughts on development, technology, and everything in between.
Agile Was the Original Loop Engineering
What a 1986 idea teaches a 2026 workflow
An AI Update To Bloom's Western Canon
I used Claude Fable 5 to update Harold Bloom's list of the world's greatest books
How to Keep Sensitive Data Out of Your LLM
Input Redaction for Google ADK Agents
On Coding With AI
My thoughts on being a developer in the age of AI

LLM Family Tree: One Year Later
An update to the LLM Family Tree visualization, now covering models through mid-2026

PageMatch: An AI-powered Book Recommendation App
I made a book recommendation app

Byte-Sized Learning: Java Streams in 300 seconds
I made an explainer video for streams in Java.

Interactive Evolution Simulator
I turned an old Java simulation program into an interactive web app

Slide 2.0 Release
I released a game on the Google Play Store!

Crafting Worlds: Procedural Level Generation in Slide
How I implemented procedural level generation in my Android game

How I used AI to Create an Original Soundtrack for my Mobile Game
A guide to making AI music

LLM Family Tree: A Map of AI Research (2017-2025)
My attempt at making a map of modern AI research

localize-fast: A CLI Tool for Bulk File Translation
I built a tool to bulk translate text files

How to Build a Local Google Translate Clone
How to set up your very own Google Translate clone
A Conversation with an AI
Interviewing GPT-J, the first large model the public could run
On Predicting the Future
Ray Kurzweil, compounding error, and why forecasting is hard
Writing in the AI Era
What GPT-2 taught me about where writing comes from