Projects
I build product-focused software across backend systems, developer tools, and applied AI. I like projects that ship: real users, real constraints, and clean interfaces.
Canvas MCP · Canvas LMS MCP Server
MCP server and CLI that exposes Canvas coursework data and workflows to AI clients.
- Exposes assignments, discussions, files, grades, modules, and calendar data to LLM clients
- Implements 25+ tools, course-context snapshots, and URL resolution for assignment-aware workflows
- Supports browser-cookie, session-cookie, and API-token auth across MCP and CLI flows
PythonFastMCPCanvas APITyper
Codexport · Codex Session Export Tool
Rust CLI and local web app for browsing Codex chat history and exporting sessions to clean Markdown.
- Parses local Codex data from SQLite and renders transcripts for review, reuse, and documentation
- Ships a local Axum interface for browsing sessions without digging through raw app storage
- Supports clean Markdown export and print-friendly transcript workflows
RustAxumRusqliteComrakTokio
Testudot · Course Change Monitor
Backend service monitoring UMD course availability with automated alerts.
- Dockerized FastAPI service that sends HTML alerts when course schedule state changes
- Detects new sections, seat-availability changes, and removals through state diffing
- Uses local JSON persistence in development and Redis-backed storage in production
PythonFastAPITyperRedisDocker
Know · Local Semantic Search CLI
Hybrid search CLI with persistent vector storage for local document search.
- Watches folders, chunks 20+ file types, and stores a persistent Chroma index for local retrieval
- BM25 + RRF fusion for higher-quality hybrid search results
- Reduced re-indexing time by 67% through incremental indexing and chunk deduplication
PythonLlamaIndexChromaBM25
Walker · Concurrent Link Validator
High-performance Rust CLI that validates URLs in parallel.
- Validates 500+ links in <10 seconds using Tokio async runtime
- Connection pooling with configurable thread count
- Published to crates.io
RustTokioreqwestCLI
tsr · Terminal Transcription CLI
Local audio/video transcription via whisper.cpp with auto model management.
- Auto-downloads and manages Whisper models (
tiny->large) - Supports 12+ audio/video formats and any URL yt-dlp supports
- Outputs SRT subtitles, JSON, or plaintext
Pythonwhisper.cppFFmpegCLI
PlanetTerp Client · API Client Library
Typed Python client for PlanetTerp API. Published to PyPI.
- Clean API:
course(),professor(),search(),grades() - Type-safe dataclass models
- Includes OpenAPI spec and demo scripts
PythonPyPIREST API
Other Projects
- Watch: Terminal-first show search + playback. A Textual TUI that searches TMDB, browses results, and launches ad-less playback.
- Rename: Batch renamer that walks a directory and asks a model for better file names.
- Snippet-Verse: Stateless code sharing via URL encoding. Deployed on Vercel.