Skip to main content

Work

Every project here exists because someone had a problem and the existing solutions weren't good enough. Some replaced enterprise software. Some automated work that was stealing hours from people who had better things to do. A few exist because I needed to understand something and the only way to understand it was to build it.

Tiny Thoughts

Replaced $3,000/mo Rethink BA

Clinical data collection for ABA therapists — the people who teach children with autism through structured repetition. Therapists record trials on tablets in noisy classrooms, so every touch target is 140px wide and every interaction forgives imprecision. The mastery engine watches the data and tells the therapist when a child is ready to move forward.

37

Users

22,940+

Trials Recorded

79

Children Managed

86K

LOC

Rails 8.1PostgreSQLTurboStimulusTailwind v4Fly.io
Case study

Tiny Steps CMS

Replaced $1,700/mo ProviderSoft

Practice management for four home health agencies in New York. Therapists document visits on their phones. Supervisors cosign remotely. The system tracks sixty credential types and locks anyone out the instant a critical one expires — before an auditor ever has to ask.

42

Users

205

Patients

$45K+

Invoiced

99K

LOC

Next.js 16Neon PostgreSQLDrizzlenext-auth v5Fly.io
Case study

Tiny Time Keeper

Replaced $400/mo WorkEasy — built in 2 days

Time tracking built in two days because the agency needed it yesterday. Employees clock in on a wall-mounted iPad. Managers see who’s working in real time. Timesheets generate themselves. Usage grew 2.4x in fourteen weeks because it just works.

5,692

Hours Tracked

33

Employees

537

Tests

97%

Deploy Success

Next.js 16ConvexBetter AuthStripePlaywrightVercel
Case study

Tiny Solutions

Early Intervention case management

Case management for Early Intervention — the pipeline from referral to active caseload. Kanban intake, child records with ICD-10 codes, sibling linking, referral staging, and consent document storage. Auto-saves on blur so nothing is lost mid-workflow.

Next.js 16ConvexBetter AuthBunZod 4

AI Email Scraper

Saves 20+ hours/month of manual data entry

Every five minutes, this system reads the agency’s inbox, understands the referral buried inside each email, and writes structured data to a spreadsheet. What used to take someone four hours a day now takes fifteen minutes of review.

~150

Referrals/mo

20+ hrs/mo

Time Saved

$0/mo

Infra Cost

Express.jsGemini 2.5 FlashMicrosoft Graph APIRender

TinyToes Auditor

On-device AI, zero PHI exposure

A clinical document validator that runs a 3.8-billion-parameter AI model entirely in the browser. No data leaves the device — ever. Therapists upload PDFs and the system checks dates, terminology, contacts, and template compliance without a single byte touching the cloud.

Next.js 16WebLLMWebGPUpdfjs-distFramer Motion

Prometheus AI

Personal AI infrastructure

My personal AI infrastructure — thirty-plus custom skills for research, code review, self-optimization, and investigative journalism. A system with memory, with specialized capabilities, and with a feedback loop that genuinely improves the more I use it.

Claude CodeTypeScriptMCP ServersNotion API

VocaLIFT

Voice-first iOS workout tracker

A workout tracker you use with your voice. Tap the mic, say what you did, see it logged in under five seconds. All transcription happens on-device — zero cloud cost, zero data exposure. Detects personal records automatically and generates shareable cards.

SwiftUIWhisperKitGPT-4o-miniSupabaseRevenueCat

Civica

Your government, explained

Type your address, see every official who represents you — from city council to Congress. Track bills across fifty states. Follow the money through campaign finance, PAC contributions, and lobbying disclosures.

Next.js 16React 19Congress.gov APIGoogle Civic APIOpen StatesFEC APIFederal Register API

LocalElo

Competitive ranking for BJJ academies

A ranking system for local BJJ academies, because knowing who’s actually the best on the mat shouldn’t require a tournament. Glicko-2 ratings update after every match. Every academy keeps its own leaderboard.

Next.js 15PostgreSQLDrizzletRPCClerk

GLIMPSE

JWST spectroscopy visualizer

Interactive visualization of James Webb Space Telescope data — the light that passes through exoplanet atmospheres and tells us what they’re made of. Transmission spectra, time series heatmaps, molecular overlays for water, carbon dioxide, methane, sulfur dioxide.

Next.js 16FastAPIastropyCanvas API

MazeWar Game Server

Multi-threaded real-time combat in C

A multi-threaded game server in C where players hunt each other through a maze with lasers. Thread-safe, memory-leak-free, built from raw TCP sockets and POSIX primitives. The kind of project that teaches you what the machine is actually doing.

CPOSIX ThreadsTCP SocketsValgrind

Dynamic Memory Allocator

Custom malloc/free/realloc from scratch

A custom malloc implementation — the thing every C programmer should build once to understand what happens when you ask for memory. Segregated free lists, coalescing, alignment, and corruption detection through header obfuscation.

Cx86-64POSIX

POSIX Print Spooler

Job scheduler with signal handling

A job scheduler built entirely from POSIX system calls — fork, exec, pipe, dup2, and signal handlers. Process creation, suspension, resumption, and cleanup, all managed by hand.

CPOSIXUnix IPCSignal Handling

OpenStreetMap PBF Parser

Protocol Buffers from scratch, no libraries

A Protocol Buffers parser built without any protobuf library. Varint decoding, zig-zag encoding, delta compression, zlib decompression — all from scratch. The best way to understand a format is to read it byte by byte.

CProtocol Bufferszlib

Network Sniffer (Argus)

CSE 363 Offensive Security

A passive network sniffer for my offensive security course — captures HTTP, TLS, and DNS traffic, identifies automation tools, and flags internal infrastructure hostnames. The kind of tool that teaches you how much a network reveals about itself.

PythonScapy

HTTP Server & Proxy

Raw sockets, no libraries

An HTTP server and caching proxy built from raw sockets — no frameworks, no libraries, just the RFC and a socket. Handles concurrent requests and caches responses.

PythonSocket ProgrammingHTTP/1.1

MLX Audio Transcriber

On-device ML, Apple Silicon native

A batch audio transcriber running Whisper models natively on Apple Silicon through the MLX framework. Zero cloud dependency — everything stays on the machine. I use it daily for meetings, podcasts, and voice notes.

PythonMLX-WhisperApple Silicon

Box Office Revenue Predictor

~100 engineered features, R² = 0.77

Can you predict how much a movie will make from its metadata alone? With a hundred engineered features and the right model, you get surprisingly close. Random Forest with five-fold cross-validation, R² = 0.77.

PythonScikit-learnPandasNumPy

Energy Demand Forecasting

Weather-driven residential modeling

A year of five-minute weather snapshots mapped against residential energy consumption. The question: can weather predict how much electricity a home will use? Linear regression for daily demand, logistic regression for peak-load classification, appliance-level profiling.

PythonPandasScikit-learnMatplotlib