Turning hard problems into software that people actually use, one project at a time.
Senior Developer · Worldwide
What I bring to a project
Four things I've stayed true to across seven years of shipping. Tap any card for the story behind it.
01
I don't give up on hard problems
I stay with a problem until it's actually solved, not until it's mostly working. The boring middle, the retry logic, the migration script nobody wants to write, that's where the real work lives.
Two years at Cirque du Soleil rolling out ServiceNow was mostly workflow mapping before a single script got written. Same story at IBM writing the translation table nobody else wanted to. That's the middle nobody puts in a demo, and it's what makes the demo hold up in production.
AI produces code that runs. I produce code that survives contact with your customers.
02 / Selected work
Projects built to answer a real brief.
Projects I built, shipped, and can walk you through. Click any card to see more.
48 projects
Sep. 2026
Will It Focus: whether a camera body, lens and adapter will autofocus together, with every quote checked by code against the manufacturer's own document
Submission for the DEV Sanity Challenge, Path One, an agent that queries real content through Sanity Context (Sep 2026). When I was working in film my Canon T5i would sometimes miss focus in auto mode, and I would switch to manual and do it myself. Canon's own manual explains it on page 100: in the Basic Zone modes the camera focuses the closest subject, so it may not focus the subject you wanted. Questions like that have published answers, and the answers are hard to find and easy to misquote. Sigma's MC-11 table says which of its lenses keep AF-C on a Sony body, and the answer is none of them. Canon's lens sheet names the four bodies its 18-55 STM does quiet Movie Servo AF on. Will It Focus reads those documents and refuses to put words in the manufacturer's mouth.
OpenAI gpt-5.4-mini through the Vercel AI SDKSanity Context MCP in GROQ mode: 131 typed documents over seven types, every fact carrying its source URL, page and verbatim sentenceSanity Context Knowledge Base over six manufacturer PDFs, including a 388-page instruction manualQuote gate in web/src/agent/verdict.ts: a quote counts only as a whole sentence, or run of sentences, of the cited record's stored quote+5
Sep. 2026
Elbow Room Mobile: scan your home with an Android phone, plan it in 3D, then find out what can actually get in
Submission for the RevenueCat Shipaton (Sep 2026). I bought a couch that would not go down my basement stairs. The flight turns ninety degrees on three winder treads, no landing, nowhere to stand it up and swing it, and I found out halfway, with the couch wedged and the wall already gouged. Then it happened to somebody else in the same house: a flood forced a water heater replacement, and two installers brought a 279 litre tank down the same stairs. Two objects, one staircase, and nobody measured it either time. The property listing gives all thirteen rooms to the inch and says nothing at all about the stairs. Every AR furniture app ever shipped answers whether the thing looks good in the room. Not one of them tells you no.
React Native and Expo, TypeScriptOne native Kotlin module for ARCore: motion tracking, plane detection and raw depth from motion with per-pixel confidence, on a phone with no LiDAR and no time-of-flight sensorLadder-around-a-corner solver in src/geometry/route.ts, checked against the published closed form for a zero-width rodsrc/geometry/site.ts for the other half of the question: footprint, headroom, height limits, setbacks+5
Sep. 2026
Sticker: phones pharmacies for a prescription's cash price and prices it against the federal benchmark. Sixteen real calls, zero prices, and the measured reason why
Submission for the CALL-E phone-call agents hackathon (Sep 2026). Pharmacies nationally paid about 43 cents for thirty metformin tablets. That is the national average acquisition cost the federal government publishes every week, surveyed from pharmacy invoices. What you pay is a different number: different at every counter, changing, published nowhere. Pharmacy contracts with benefit managers commonly require the pharmacy to hand the PBM its lowest price, so posted cash prices sit above negotiated rates instead of competing. Around 19,000 independent pharmacies sit largely outside the comparison sites. The only reliable way to learn a cash price is to telephone the counter, and that is the established research method: a 2020 study phoned 265 pharmacies and found one generic ranging from $29.99 to $1,345.00 inside a single metro area. Those studies took teams weeks. That is the thing a phone agent should do in an afternoon.
CALL-E phone-call agent API (REST transport, overlapping calls on one event loop)Recipient result schema (a price is a validated field, every uncertain field can answer unknown)CMS NADAC weekly acquisition-cost benchmark (public, keyless)NPPES NPI Registry, filtered to the walk-in retail pharmacy taxonomy+5
Sep. 2026
Day Thirty: your insurance appeal, argued from 22,090 decisions California's own physicians published, ready to sign before the day-thirty clock runs out
Submission for the AWS Agents for Humans hackathon, Everyday Agents track (Sep 2026). Last year insurers denied about 85 million in-network claims on HealthCare.gov. Consumers appealed 262,982 of them, under one percent, and insurers upheld 66 percent of the appeals they received (KFF, 2024). When the same kind of denial reaches an independent physician through California's Independent Medical Review, 72.3 percent were overturned in 2025. An insurer reviewing its own denial upholds it two times in three. An independent doctor overturns it nearly three times in four. The entire gap is people not filing.
Claude Haiku 4.5 on Amazon Bedrock (drafts the appeal)Amazon Nova Lite on Bedrock (reads the denial letter)Strands Agents SDK (three tools + a human interrupt at the gate)Amazon Bedrock AgentCore Runtime (ARM64 container via CodeBuild + ECR)+6
Sep. 2026
Northbound: your Canadian truck already drove that lane empty, this finds the freight it could legally have carried
Submission for the RoadStar Hackathon 2026, built on Roadstar Trucking's own dispatch data. Every Canadian cross-border carrier lives under two rulebooks, and its trucks spend weeks at a time inside a country whose freight they are mostly not allowed to haul. I started with a hypothesis (Ontario carriers haul into the US Midwest loaded and come home empty) and their own records said it was wrong: across 10,479 completed legs and 1,596,093 miles, coming home empty happened six times. The empty running is inside the United States, between loads, and whether any of it could have carried freight turns out to be a legal question, not a routing one.
TypeScript + Node.jsGLM 5.2 on SPUR Compute (freight-offer parsing)Deterministic TypeScript legality engine (model never asserts the statute)19 CFR 123.14(c)(1), 49 CFR 395.3, SOR/2005-313 (cited to primary sources in LEGAL.md)+5
Sep. 2026
Dailies: smart glasses walk off a film set with the continuity paperwork already written
Submission for the Agentic Cinema hackathon, ClickHouse track (Sep 2026). A script supervisor stands just off set with a clipboard and, between every take, writes down where the mug sat, whether the jacket was buttoned, which hand held the phone. It is the last job on a film shoot still done entirely on paper, and the failure mode is quiet: when a line gets missed nobody finds out until the edit. By then it is not an edit problem, it is a pickup day. A 2026 survey of forty US production markets prices a fixed six-person, ten-hour shoot day at $1,440 in the cheapest market (Santa Fe) and $3,020 in the most expensive (Boston). Dailies watches a take for 1.6 cents, priced at Google's published Gemini rates on real footage. A whole forty-take day costs about 63 cents, or 0.04% of the day it is guarding. Neither number is mine: Google meters the tokens and sets the price, and the industry sets the day rate. What is deliberately not claimed anywhere is a count of reshoots prevented, because that would be my own code marking its own homework.
Ray-Ban Meta Gen 2 (Meta Wearables Device Access Toolkit)Kotlin + Jetpack Compose (Android capture app)FastAPI on Google Cloud Run (us-east1)Gemini 3.6 Flash (extraction, reconciliation, question agent)+7
Sep. 2026
Elbow Room: before you buy the couch, find out whether it can get up the stairs
Submission for the WebMCP hackathon (Sep 2026). Every room planner ever built answers does it fit in the room. Elbow Room answers the question that costs people money and plaster: can it even get there. The problem is personal. A couch got stuck on my basement stairs and took some of the wall with it. Months later, installers brought a 279 litre water heater down the same stairs and gouged the soffit. Two objects, one staircase, nobody measured it either time, and there was nowhere to look it up. The property listing gives all thirteen rooms to the inch and says nothing about the stairs.
WebMCP (document.modelContext)HTML Canvas 2D + custom 3D orbit viewSingle-image metric rectification (homography)Numerical corner-solver (ladder-around-a-corner with width)+5
Aug. 2026
Nightshift: agentic prior-art search that reads 2,000 patents in 4 minutes for $34
Submission for the All Things Agentic Hackathon, track: The Taskmaster (Aug 2026). Non-practicing entities filed 55.4% of US patent cases in 2025, drove 90.3% of high-tech patent litigation, and added 2,236 defendants that year (Unified Patents). AIPLA puts the median defense cost of a suit with less than $1M at risk at $600,000. The first real question in any of them is whether the asserted patent was already invented by someone else, and answering that properly means a professional prior-art search that is itself priced out of reach of exactly the companies most often targeted. Nightshift asks that question autonomously, in the background, for $34.57 a run.
Google Cloud Run Jobs (fan-out)BigQuery (171,695-patent corpus, materialized + clustered)Vertex AI Gemini 3.5 Flash (judgment stage)gemini-embedding-001 at 768 dims (prefilter)+5
Aug. 2026
Best Use of Sentry · DEV Big Summer Bug Smash
sentry-python DedupeIntegration Retained 1024 KB per Live Asyncio Task Because Python Cannot Weakref a ValueError. Root-Caused, Fixed with a Weak-Referenceable Identity Token, Repro'd, Measured, and Prepared as an Upstream PR to Fix Issue #6094.
Submission for DEV's Summer Bug Smash: Clear the Lineup, powered by Sentry (Aug 2026). sentry-python is Sentry's Python SDK. Its DedupeIntegration stops the same error being reported twice by remembering the last exception. Remembering an exception is exactly what you must not do: an exception holds its traceback, a traceback holds its frames, and a frame holds every local. The SDK knew this and stored a `weakref.ref(exc)` for the reason. The three lines directly under the comment `# we can only weakref non builtin types` do the one thing the weakref existed to prevent: a bare `except TypeError:` catches Python's refusal to weakref a builtin and quietly holds the exception itself. `ValueError`, `KeyError`, `TypeError`, the ones almost every real error actually is.
Python 3.11+sentry-sdk 2.68.0asyncioContextVar+5
03 / Experience
A journey of work that shipped.
Roles that shaped how I build, ship, and think about software.
Senior Full-Stack & ServiceNow Developer
Current
N2 Help & Solutions
June 2025 - present
Canada
Hydro-QuébecEnterprise client delivered
ServiceNowSAPHRSDReactReact NativeAI
Delivered ServiceNow implementations for N2 clients including Hydro-Québec, building integrations between SAP and ServiceNow and rolling out HR Service Delivery (HRSD) to streamline employee lifecycle processes.
Partner closely with clients to understand their workflows, then design and automate the pain points using ServiceNow, custom code, and modern AI capabilities so teams can focus on higher-value work.
Run a YouTube channel focused on development, AI-driven tools, and full project walkthroughs built from scratch.
Eight hackathon wins: the OpenAI Open Model Hackathon (8,652 participants) with Steam Print, Prompt Opinion's Agents Assemble: The Healthcare AI Endgame (4,335 participants) with MaternalGuard, DEV's Weekend Challenge: Passion Edition (Best Use of Google AI) with Pick Your Side, UiPath AgentHack 2026 (Test Cloud track, 1st place, 333+ submissions from 104 countries) with FlakeWarden, Build with DataHub: The Agent Hackathon (Production ML Agents track, 1st place, 612 submissions) with Culprit, DEV's Weekend Challenge: Dog Days Edition (Overall Winner) with Still Here, DEV's Big Summer Bug Smash (Best Use of Sentry) with the sentry-python dedupe memory-leak fix, and the CockroachDB × AWS Hackathon: Build with Agentic Memory (2nd place) with Unsay. Plus submissions to the Reddit Mod Tools, H0: Hack the Zero, GitLab Transcend, SANS Find Evil!, Global AI with Qwen Cloud, Google Cloud Rapid Agent, Splunk Agentic Ops, Slack Agent for Good, Reddit Games and Puzzles, Backblaze × Genblaze, ZerveHack, Melius, Google MLB, MeldRx, NASA, and RevenueCat Shipyard challenges.
Implemented a custom ServiceNow solution to automate the onboarding and termination processes within the company. This solution involved integrating SuccessFactors with ServiceNow, streamlining HR operations and ensuring efficient management of employee lifecycle events.
Modernized ServiceNow catalog items by automating approval requests and creating order guides, including those tailored for new hires, to consolidate all provisioning item requests in one accessible location.
ServiceNowWatson AI OpsSevOneQRadarITSMITOMCSMAgile
Led technical projects integrating enterprise applications such as Watson AI Ops, SevOne, and QRadar with ServiceNow, focusing on scalable, user-facing configurations that streamlined IT operations.
Developed ITSM, ITOM, and CSM features in ServiceNow, improving enterprise service delivery and aligning with client business needs across industries (telecommunications, healthcare, finance).
Developed a cross-platform C++ application to process and visualize real-time IMU sensor data, improving system accuracy to 99% by optimizing data collection and analysis algorithms.
Implemented 3D data visualization using OpenGL to simulate quaternion-based rotations, enhancing sensor feedback representation.