Categories
etc.

2025 in Code

This year was the year I rediscovered how much I love to code. At the beginning of the year AI coding assistants were good enough to help overcome all the annoying hurdles of getting a new project going and were good enough at writing small chunks of code that I could bring ideas to life without having to spend much time studying syntax. By the end of the year, with Claude Opus 4.5, it’s good enough to write entire features in one go.

I’ve always had lots of ideas for projects, this was the year of building them. It was the most fun I’ve ever had on a computer.

What follows is a tour through some of the projects that emerged from this year-long experiment in human-AI programming. Some are polished. Some are prototypes, and these are just the ones I wrote for myself. Missing are all the projects I wrote at work to make my management job more efficient and many, many small tools or one-offs that weren’t big enough to mention here.

The Highlights

Sidecar is the project I’m most excited about right now. It’s a terminal UI that gives developers unified visibility into their AI coding sessions—monitoring Claude Code conversations, git status, task progress, and project files without leaving the terminal. Built in Go with the Charmbracelet stack (bubbletea, lipgloss, bubbles), it’s designed for developers who live in the terminal and want to avoid context-switching to web browsers.

Go | Charmbracelet | SQLite | fsnotify

The architecture uses a plugin-based system with inter-plugin communication via tea.Msg broadcasts. Four core plugins: Git Status with side-by-side diffs, a Conversations browser for Claude Code sessions, a TD Monitor for task management, and a File Browser with syntax highlighting. Mouse support throughout. Still in alpha, but fully functional.

todo is a task manager built for AI agents. The problem: agents forget everything between sessions. Context window amnesia. The next session starts from scratch, leading to redundant work and confusion about what’s done. todo provides structured handoffs—capturing working state so new context windows can resume where previous ones stopped.

Go | SQLite | Cobra | Charmbracelet

Agents get a CLI optimized for their workflow: create issues, log progress, submit for review, hand off state. Humans get a live TUI monitor to observe agent activity across sessions. Session isolation ensures the agent that writes code can’t approve it—a different session must review. Run td usage and the agent gets everything it needs: current focus, pending reviews, open issues, recent decisions.

Creative Tools

Melville is a multi-agent orchestration system for autonomous novel writing. It’s not a prompt chain—it’s production infrastructure for agentic work. Specialized AI agents (author, developmental editor, copy editor, researcher) work in coordinated stages to produce complete manuscripts. The system has successfully generated 16 complete published novels across diverse genres: science fiction, literary fiction, romantasy, thriller, horror, even middle-grade adventures.

Python | SQLite | Claude API | React | Prisma

Durable execution ensures no work is lost on failures. Task dependencies enforce narrative coherence. The filesystem serves as long-term memory, allowing the orchestrator to operate without holding entire books in context.

Endless2 generates infinite AI conversations with progressive summarization. Jerry and George discussing philosophy, indefinitely, with streaming output and rate control that emulates audiobook pacing. As dialogue accumulates, older exchanges are compressed, allowing the conversation to continue forever while maintaining coherent character voices.

Python | LiteLLM | FastAPI | SQLite | Peewee

Good Composer and Good Drawer are real-time AI generation tools. Type a description and watch as AI composes music—every note plays as it arrives, visualized on an interactive piano roll. Or watch AI draw artwork live on your canvas using SVG paths, with smooth marker animation. Both stream content chunk-by-chunk, enabling progressive rendering rather than waiting for complete generation.

Python | FastAPI | WebSockets | Tone.js | SVG

Meditation Generator creates guided meditations from scratch: AI-written scripts with intelligent pause placement, high-quality audio narration via OpenAI or ElevenLabs, and professional assembly using forced alignment technology. The forced alignment API extracts precise word-level timestamps from audio, enabling perfect pause placement at natural speech breaks.

Python | Flask | OpenAI TTS | ElevenLabs | FFmpeg

Applications

Muse is a complete ecosystem for distraction-free writing. A native desktop Mac app (Tauri + React) with automatic versioning and timeline navigation, backed by a self-hosted sync server written in Rust. Every keystroke gets captured; scrub through writing iterations like video playback. Local-first with optional cloud synchronization.

Tauri | React | Rust | Axum | SQLite

Bookmarx (tumblelog.com) is an AI-enhanced bookmark manager. Save a link, and AI automatically generates descriptions, suggests tags, and recommends related content—all happening in the background without blocking your workflow. Rails 8 with Hotwire for real-time UI updates, RubyLLM for multi-provider AI support.

Ruby on Rails 8 | Hotwire | SQLite | RubyLLM | Tailwind

Eventalicious and Promptalicious (maqx.com) is an AI-powered multi-agent system that automatically discovers, scrapes, categorizes, and persists events from web sources. CrewAI orchestrates specialized AI agents that work together to find events, extract details, classify them, and store them. Patchright provides stealth web scraping with bot-detection evasion.

Python | CrewAI | Playwright | Peewee | SQLite

Nevermore is a full-stack personal budgeting application with smart CSV import. The trick: AI-powered column mapping that automatically detects how your bank formats exports. Rails 8 API with React 19 frontend, WebSocket updates for import progress, and support for investment tracking with symbol and share data.

Rails 8 | React 19 | Zustand | SQLite | ActionCable

Marcus.Pictures is my personal photo gallery with AI-powered automation. Images automatically gain captions, titles, and metadata extraction. The admin interface is specifically designed for rapid image curation—Y/N shortcuts with auto-advance every 12 seconds. Three-level hierarchy (Galleries ? Groups ? Images) with multiple layout options including masonry and slideshow.

Flask | Peewee | Huey | OpenAI | Pillow

Inquiry brings Byron Katie’s method of self-inquiry into the digital age. A SvelteKit application that guides users through the four questions and turnarounds, with AI-powered suggestions for deeper exploration. The UI embodies a contemplative aesthetic—minimalist, centered, serene.

SvelteKit | Tailwind | Drizzle | SQLite | OpenAI

Hardware Projects

Slinky is a smart content system for e-ink displays. Rotates conversation-starting content every 30 minutes across multiple sources: personal photos, curated quotes, AI-generated artwork (via Claude + Google Gemini), Hacker News headlines, weather, poetry. Includes presence detection (auto-pauses when your iPhone leaves the network), quiet hours, and weighted random selection with content cooldowns. The AI image generation supports character consistency with seed images across generations.

Python | SQLite | Flask | Inky | Claude | Gemini

Games

Programaxis is a futuristic coding-themed idle game. Build features, ship builds, grow revenue. Automate software development workflows, manage technical debt, balance code quality, and scale through a tech tree with 40+ upgrades across 8 specialized branches. Three.js powers GPU-accelerated particle effects with a cyberpunk Tron aesthetic.

React | TypeScript | Three.js | D3.js | Zustand

Smile is a fast-paced endless runner featuring a rolling smiley emoji navigating a procedurally generated ASCII world. One-button gameplay with coyote time, jump buffering, and progressive difficulty. PixiJS for WebGL rendering, seeded random generation for reproducible maps.

TypeScript | PixiJS | Vite | Web Audio API

Sneaky Squirrel is an iOS game where you control a squirrel bouncing between nets while dodging horizontally-crossing bees. Tap to flip direction, earn points on bounces, avoid the bees. Progressive difficulty ramps as your score climbs. Built with SpriteKit targeting 120fps on ProMotion devices, with haptic feedback and generated sound effects.

Swift | SpriteKit | SwiftUI | Core Haptics

And More

Talking is a modern web interface for streaming AI conversations from the endless2 API. Terminal-style UI with word-by-word animation, adjustable playback rates, and comprehensive resource management. React 19 with Zustand, designed with a split-flap aesthetic.

Our Year Wrapped is a Spotify Wrapped-style website celebrating a relationship, built from iMessage conversation data. Transforms raw messaging history into data visualizations and personal narratives—emoji analysis, word clouds, trip timelines, monthly highlights.

For just-for-fun projects, there’s Dogvertize (dogvertize.com)—best experienced rather than explained.

Smaller experiments live at opentangle.com: 3D visualizations (Necker Cube, Rabbit Hole tunnel), a Kufic calligraphy maze generator, a rainbow text creator, and a poetic presentation of Hsin Hsin Ming.

What I Learned

The tools changed more than my productivity, they changed what I considered possible to build alone. A native desktop app with cloud sync? A multi-agent novel-writing system? A real-time music composer? These would have been months of work before and, knowing that, I just wouldn’t have started them. I cannot wait to see what the years ahead hold.

We’re still early. The collaboration patterns are crude. The context window amnesia is real (hence td). But watching an AI draw music note by note while I adjust the tempo—that’s a different relationship with code than I’ve had before. More improvisational. More playful.

Here’s to more experiments in 2026.

Leave a Reply