Projects
16 projects across computer vision, applied ML, full-stack products, developer tooling and research.
Page 1 of 2
grpc-tunnel
Python CLI tool to easily expose local gRPC servers over the internet via ngrok tunnels.
Status: Completed (Unpublished due to AVZDAX contract IP limitations)
Role: Developer Tool / Package
Task-System
A deterministic, AI-friendly task format built on plain Markdown, with a tsk command-line tool, a two-way-sync web UI, and a core library that keep them consistent.
Status: In Progress
Role: Developer Tool / Open Source (Personal)
Key Features:
- Deterministic, idempotent, and confluent formatter β input order never matters and there is no wall-clock, so output is reproducible.
- Tolerant parser that preserves unrecognized lines position-stable.
- Structured model: frontmatter, title, a nested timeline partitioned by π milestones, and an archive, with four date fields (π« start, π due, β done, β created).
MELDA (AI Teaching Assistant)
An AI teaching assistant that helps teachers prepare better learning experiences, understand how students respond to them, and use that information to teach more effectively.
Status: Deployed (Web + Android)
Role: Hackathon (AFRETEC Innovation Challenge)
Key Features:
- Multi-tenant platform (signup β teacher creates a class with an invite code β students join via code), deployed across a web app and Android APKs.
- AI-assisted lesson and quiz drafting, plus section-level "adaptations" the teacher can generate (six pedagogical modes or a free-form "my own way" instruction) and edit beforeβ¦
- Student β teacher signal loop: "I don't get this" flags a struggling section straight to the teacher's drill-down, where a one-tap Adapt re-casts it.
Animate Commits
CLI that replays a git commit or commit range as VS Code typing in the user's own theme, exporting an MP4 or a scrubbable browser preview. Nothing is written to the target repository or VS Code settings.
Status: In Progress (2026)
Role: Developer Tool (CLI)
Key Features:
- Reads history through git rev-list, diff --name-status -M and cat-file, and verifies every planned edit replays to the exact new file contents.
- Renderer is a pure function of time (window.__seek(tMs)) driven by a JSON event timeline with a seeded PRNG, so no CSS animation is involved.
- Frame-state fingerprinting reuses unchanged frames before piping captures to ffmpeg for an H.264 MP4.
Web-To-Desktop
Electron wrapper that turns a website into a small always-on-top desktop window toggled by a global keyboard shortcut. Each app is a JSON file naming its URL, shortcut and window options.
Status: Completed (2025)
Role: Developer Tool (Desktop Utility)
Key Features:
- Per-app JSON config in apps/, where the filename becomes the app name and CLI argument.
- globalShortcut registers a toggle that shows and hides the window.
- Frameless, always-on-top window sizes set per app, with nodeIntegration disabled.
NotebookLM Automation
Python tooling that bulk-uploads course folders into NotebookLM notebooks through a Playwright client, skipping files already present. A companion script crawls same-prefix websites and lists their HTML pages.
Status: Completed (2026)
Role: Developer Tool (Automation)
Key Features:
- Drives NotebookLM through notebooklm-py with a Playwright Chromium session instead of the web UI.
- Creates or reuses one notebook per folder name, then skips files already in that notebook by title.
- Per-file retries with a 300 s timeout, a five-consecutive-failure circuit breaker, and rate-limit backoff.
Axionvera SDK (Stellar / Soroban)
TypeScript SDK for Axionvera's Soroban vault contracts on Stellar, plus the Next.js dashboard that consumes it. Contributions added Zod validation of RPC responses, the package export map, and the dashboard's vault balance display.
Status: In Progress
Role: Open Source Contribution
Key Features:
- Zod schemas validating Soroban RPC responses inside getHealth, simulateTransaction and getTransaction.
- Package exports map with deep-import blocking, backed by RPC validation tests.
- Dashboard vault balance rendering and withdraw-button loading state.
dsh-btw-plugin (DSH /btw Command)
Plugin for DeepSeek Harness that adds a /btw command for asking a side question about the current session. The handler runs on the command plane, so neither the question nor the answer joins the conversation the model sees.
Status: Completed (2026)
Role: Developer Tool (Editor/Agent Plugin)
Key Features:
- Uses ctx.commands.register() to run a handler that creates no model message, borrowing the invoking session's derived history and provider route.
- Sends one tool-less request and returns the text for the UI to present, deliberately not reusing the main agent's system prompt.
- Caps the transcript at 40,000 characters, degrading a long session by dropping oldest turns rather than failing.
dsh-gmail-plugin (Read-Only Gmail for DSH)
Plugin that lets an agent search a Gmail mailbox and read individual messages without any ability to send or draft. Connects with a Gmail app password over IMAP or an OAuth client using the gmail.readonly scope.
Status: Completed (2026)
Role: Developer Tool (Agent Plugin)
Key Features:
- gmail_search accepting Gmail-style queries (from:, subject:, is:unread, newer_than:), returning subject, sender, date and id.
- gmail_read_thread returning one message in full with the body decoded and attachments skipped rather than fetched.
- /gmail command exposing status, login and logout for the OAuth route.
Move App Utility
PowerShell utility that relocates application data and program folders to another drive and leaves junction points behind, so the applications keep working while their files live elsewhere.
Status: Completed (2025)
Role: Developer Tool (PowerShell)
Key Features:
- Stops running processes of the target application before moving its folders.
- Moves folders to a configured target location, then creates junction points redirecting the original paths.
- Ships preconfigured application definitions for common large installs.
WhatsApp to Telegram Auto-Forwarder
Utility that watches a WhatsApp group and forwards selected messages into course-specific topics in a Telegram group β built for an educational group where students reply with course codes.
Status: Completed (2025)
Role: Developer Tool (Bot)
Key Features:
- Detects replies containing a course code in the #AAA 000 or #GENERAL format and extracts the quoted message.
- Maps each course code to a Telegram topic ID through topic-map.json, falling back to the general topic.
- Admin notifications and graceful shutdown when WhatsApp connection failures persist.
Custom Web Scraping
Web scraping library written from scratch, alongside a separate WhatsApp Web scraper that collects conversation data by driving a real browser session.
Status: Completed (2024)
Role: Developer Tool (Library)
Key Features:
- Scraping library built from the ground up rather than on an existing framework.
- WhatsApp scraper drives WhatsApp Web through ChromeDriver, waiting for the QR-code session before collecting the contact list and messages.
- Documented failure mode for WhatsApp's rotating CSS class names, with screenshots of the selectors to patch.