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
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
lc · LeetCode Workflow CLI
Rust CLI for LeetCode practice loops, from problem discovery to local editing, example runs, guarded checks, and real submissions.
- Uses public LeetCode metadata for daily challenges, problem lookup, lists, and profile views
- Probes browser cookies for authenticated judge runs and submissions without a manual token-copying workflow
- Creates starter solution files with metadata headers so
test,check,run, andsubmitcan infer the target problem
Piazza CLI · Terminal Piazza Reader
Read-only Rust CLI for browsing Piazza classes, feeds, unread posts, and recent-thread search from a terminal.
- Copies Piazza browser cookies into a local
session.jsonwithchrome,edge,firefox, andsafarisupport - Lists classes, reads feeds, fetches posts from class/post IDs or URLs, and extracts tags/unread threads
- Supports
pretty,json,jsonl, andidsoutput for human reading or shell pipelines
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
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
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
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
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
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.