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.

Canvas MCP Architecture

  • 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.

Testudot Monitoring Flow

  • 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.

Know RAG Pipeline

  • 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.

Walker Flow

  • 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.

tsr Pipeline

  • 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.