Consulting
ConsultingAdvisory
While I look for my next full-time role, I take on a limited number of consulting engagements: full-stack builds, cloud and edge architecture, mobile apps, and technical advisory, with a growing amount of AI integration work. Clients have ranged from healthcare to auto sales, and I'm open to more.
Booray Cards
iOSAndroidWeb
A full cross-platform app (iOS, Android, and web) for playing and scoring the card game Booray. It's local-first: an on-device SQLite database keeps things instant offline and syncs to a Cloudflare Workers API. It handles user accounts and tracks the pot and each round as you play.
Built withReact Native · Expo · TypeScript · Drizzle ORM · SQLite · NativeWind · Clerk · Cloudflare Workers · Hono
Winona Lake Conditions
Web appWeather
A fully server-rendered Cloudflare Worker that turns live Open-Meteo forecasts into go / marginal / no-go scores for lake sports (eFoil, wakesurf, wakeboard, and water ski) on Winona Lake. It weighs wind, gusts, rain, and daylight, and a scheduled job keeps the forecast cache warm.
Built withCloudflare Workers · Hono · TypeScript · Workers KV · Cron Triggers · Open-Meteo API
Winona Lake Timelapses
AutomationVideo
An automated pipeline that captures the lake camera's RTSP stream and renders daily sunrise, sunset, and full-day timelapses on a schedule, then publishes them to a Cloudflare R2-backed gallery, with hundreds of clips archived and growing every day.
Built withNode.js · FFmpeg · RTSP · Docker · Cron · Cloudflare R2 · Cloudflare Workers
Winona Lake, 2025
Computational photographyData viz
A computational-photography recap of a full year of sky over Winona Lake. Roughly two million frames turned into sun-locked timelapses, star trails, keograms, and 'weather-removed' median videos.
Built withPython · OpenCV · pvlib · PyTorch · FFmpeg · Astro · Cloudflare Workers
eFoil Sync Companion
HardwareFirmwareWebMobile
A toolkit for Waydoo eFoil ride logs, built on protocols reverse-engineered from the board's own wireless traffic. A plug-in ESP32 sync box joins the board's WiFi after a session, pulls the new logs, and uploads them to a Cloudflare Workers backend, so the rides are waiting on your phone minutes later. A web and mobile app handles the maps, tracks, and stats.
Built withESP32 · C++ · MAVLink · Cloudflare Workers · R2 · Expo · React Native · TypeScript
Coming soon