App developer, streamer, and photographer with over a decade of experience. I build job-search software, streaming tools, and creative applications.
| Project | What it does | |
|---|---|---|
| Pathos | Worker-side job search with source-linked roles, evidence-checked resumes, and application tracking. | |
| Markskill | A product-engineering skill for AI agents: trace behavior to its owner, fix root causes, shape interfaces around real tasks, and verify claims with evidence. | |
| Alert! Alert! | Turn a video URL or local file into a cropped, trimmed stream alert. | |
| Clipline | Turn Twitch VOD moments into captioned vertical clips and compilations. | |
| The Stream Toolset | Build OBS scenes and browser-source overlays with connected streamer tools. | |
| ForgetMeNot | A local-first Twitch bot that remembers regulars, callbacks, and stream lore. | |
| Film Lab | Film emulation for JPEG and RAW photos, including a measured Kodak Gold 200 preset, grain, and halation. |
The Pathos Chrome extension fills supported application fields, attaches a reviewed resume for the role, and drafts answers grounded in the candidate's information. It leaves uncertain and sensitive fields for review and lets the candidate submit the application.
Selected write-ups from engineering-notes:
| Paper | Description | Tech |
|---|---|---|
| RLS silently disabled my GIN index | Why anonymous search ignored a GIN index under row-level security, and how the query plan exposed the cause. | PostgreSQL 17, RLS, GIN, tsvector, Supabase |
| Scaling streaming toolsets on Cloudflare | An event-driven overlay architecture using WebSockets for live state and KV for cold persistence. | Cloudflare Workers, KV, Durable Objects, Hibernatable WebSockets, EventSub |
| Chat bot memory | Local memory for chatters and running jokes without retaining raw chat logs. | SQLite, Gemini, Twitch |
| Building Pathos | How role discovery, resume safeguards, application tracking, and a review-first extension fit together. | React 19, Vite, Supabase, Cloudflare Workers, Chrome MV3 |
| Inbound job-status sync | Detecting job-status changes from selected forwarded emails, with uncertain matches held for review. | Supabase Edge Functions, TypeScript, Resend |
- Applications: TypeScript, JavaScript, React, Vite, Zustand, Chrome Manifest V3
- Data and infrastructure: PostgreSQL, Supabase, Cloudflare Pages and Workers, Stripe
- Media and automation: Python, C#, FFmpeg, Gemini, Twitch EventSub and Helix, Streamer.bot


