I'm a Software Engineer who enjoys working on practical systems, especially the parts that are messy, unclear, or easy to get wrong.
I currently work on a multi-brand digital publishing platform for a Canadian media company. My work spans Next.js and React applications, Go APIs, WordPress integrations, Python jobs, AI features, and advertising and revenue systems. These problems often sit at the intersection of frontend behaviour, data accuracy, performance, and business impact.
I like writing code, but I’m usually most interested in the questions around it: What is the actual problem? Where should the source of truth live? What could this change break? Is the simplest implementation also the right product behaviour?
A lot of my work involves debugging production issues, tracing behaviour through legacy systems, and turning vague requirements into something more predictable and maintainable. I enjoy that messy middle—the point where product decisions, technical constraints, operational realities, and real user workflows all meet.
- Clear behaviour over clever abstractions
- Safe defaults that prevent quiet mistakes
- Useful tools built around real problems
- Understanding the workflow before changing the code
Debugging is often how I learn what a system is really doing. I document the root cause, trade-offs, and fix so the lesson can be reused.
- Cursor Drift Bug: Autosave Triggering Editor Content Reset - Traced a Tiptap autosave feedback loop where server round-trips reset editor content and moved the cursor.
- A Critical Calculation Bug in Reporting - Found a financial reporting discrepancy caused by decimal-to-integer conversion.
- Recovering from Chunk Load Errors - Improved frontend resilience when deployments left users with stale assets.
- Photo Credit Inheritance - Designed insert-time defaults without silently rewriting old content or overriding manual edits.
- Suppressing Sponsored Content from Recommendation Feeds - Decomposed a "one central hook" assumption into three independent enforcement points, and worked through the trade-offs between reusing an existing flag vs. building a separate mechanism.
I’m drawn to projects where a simple-looking feature hides a difficult workflow, state model, or reliability problem.
- PlainDock - A notes app built around a deceptively hard question: how do plain text, rich text, autosave, and pasted content coexist without surprising the user.
- Virtual Box Verifier - A Go + React system that scrapes and validates roughly 6,000 US virtual mailbox listings from multiple providers. It uses async validation workers, a per-address validation lifecycle, Smarty API batching with load balancing/circuit breaking, Firestore storage, CSV export, and reprocessing from saved HTML so parser changes can be tested without a full re-crawl.
- AI Read Map - A reading tool built around a question I often have myself: when a page is too long, how can I quickly find what matters without losing the original context? It creates a clickable map of the page, validates every AI-generated jump target, and takes the reader back to the source text.
- CareBy - A production healthcare platform with a public website, admin console, and role-specific portals for customers, care providers, managers, and sales partners. Built with React, TypeScript, GraphQL, PostgreSQL, and AWS, with a focus on permissions, service workflows, and keeping multi-role operations understandable.
- Smart Contract Event Indexer - A Go-based blockchain indexer that watches smart contract events, writes them to Postgres JSONB, caches in Redis, handles chain reorgs, and exposes results over GraphQL/REST.
I often learn by building small tools around problems I have encountered myself.
- Workday Autofill Assistant - A Chrome extension + Express backend that turns long webpages into clickable reading maps. It extracts structured page content, asks an AI model for a grounded map, validates target paragraph IDs, caches results, and jumps users back to the original text instead of replacing reading with a generic summary.
- SafeBites - A mobile-first food-label safety analyzer for parents of toddlers. The architecture splits an Expo/React Native app, a Cloudflare Workers edge gateway, and a Cloud Run core service using Gemini 1.5 Flash, HMAC-signed internal requests, rate limiting, and Supabase logging.
- Smart Wallet Dashboard - Connect MetaMask, inspect balances, tokens, and transaction history in one place.
- Most days: building across frontend, APIs, publishing workflows, and data jobs
- Where things live: WordPress, Node.js, PostgreSQL, SQLite, and AWS
- How I ship: Docker, GitHub Actions, feature flags, and tests
- What I keep an eye on: state, data accuracy, failure modes, and the one legacy edge case nobody remembered
⭐️ Inspired by Awesome GitHub Profiles.


