Things I’ve built
Daybreak
I wanted a morning reading habit that gave me the context behind the headlines and a reason to stop scrolling.
It runs on my homelab: the morning pipeline on the X1 and the reading app on Nexus.
read the case studyNexus Homelab
I wanted to host my own services and learn how networking, storage, and security fit together on a real server.
Nexus runs 25+ self-hosted services, including Daybreak’s reading app.
read the case studyStudyFlow
A study app that turns your course notes into a study plan, practice questions, and a readiness score for each exam.
Won 1st place at UofT’s Claude Builder Club Sonnet 4.5 Show n Tell in October 2025.
read the case study
More projects
Galaxy Tab Reading Tablet
I wanted an e-reader, so I repurposed my Galaxy Tab S8+ for offline books and S Pen notes. I rooted it with DFRoot and KernelSU while the bootloader stayed locked, then built local controls that switch between power-saving reading and smoother handwriting.
Android, ADB, KernelSU, Java, Shell, KOReader
Lodestar
Deployed · Private repo
My personal dashboard for turning ideas I capture into a first step. Its Console connects to a runner on my Mac over an outbound WebSocket, so I can continue a coding session and approve tool requests from my phone.
FastAPI, React, TypeScript, SQLite, WebSockets, PWA
X1 Local LLM Server
Private repo
An LLM server on a Ryzen AI mini PC with 96 GB of RAM. llama-swap serves five model roles, including gpt-oss-120b, through one OpenAI-compatible endpoint on my Tailscale mesh. Every config lives in a git repo, so when I wiped the OS by accident, the whole server came back from that repo.
llama.cpp (Vulkan), llama-swap, Podman, systemd, Python, SQLite, Tailscale
Mac Menu-Bar Apps
Four small macOS menu-bar apps, each fixing one annoyance: QuitGuard makes ⌘Q hold-to-quit, FocusGuard bounces apps that steal keyboard focus, PutBack restores window layouts when a monitor reconnects, and Perch chats with local LLM endpoints from the menu bar. None of them sends telemetry, and each ships as a downloadable DMG.
Tauri 2, Rust, TypeScript, CoreGraphics event taps, Accessibility API
SAGE
A document Q&A workbench that runs entirely on my Mac. Combining BM25 keyword search with dense vectors and a cross-encoder reranker raised top-1 retrieval accuracy from 84% to 95% on vocabulary-overlap questions, measured on a 72-question gold-labelled benchmark. Answers cite their sources and scored 4.85/5 for faithfulness with an LLM judge. It refused all 10 out-of-corpus questions.
Python, FastAPI, ChromaDB, sentence-transformers, Ollama, React, TypeScript
Earlier projects
VulnScan
CLI network vulnerability scanner with asynchronous discovery, NIST NVD API matching, and CVSS-based risk scoring across 7 scan types.
Python, nmap, SQLAlchemy, Rich, Typer, SQLite
DoseMate
Course project
A medication management project built for a startup course. The hosted demo includes a doctor dashboard and a form for creating prescriptions.
Next.js 14, TypeScript, Supabase, Stripe, Resend API
Canvas Assistant
A Next.js dashboard for Canvas LMS assignments, announcements, grades, and calendar events, with a built-in demo mode.
Next.js, TypeScript, FastAPI, Canvas LMS API


