- •Joined in 2010 as Software Engineer, the second engineer hired; promoted to Senior Software Engineer, then to Software Architect.
- •Worked across the product in phases: first the commerce and licensing backend and the Atlassian integrations, then the Wireframes 4 rewrite and the macOS app, and most recently the AI stack, with the editor running through all of them. Now responsible for the product architecture in a fully remote team, working closely with product, design and user research. We plan in Shape Up cycles: I write pitches (problem, user value, use cases), we bet on them, and cut scope to fit six weeks.
- •Architected the Balsamiq Wireframes 4 rewrite: about 80% of the code is shared across web, macOS and Windows, and the architecture still ships the product 10+ years on. A portable core model behind platform abstraction layers and a canvas rendering engine (JavaScript, SVG on web, Core Animation on macOS).
- •Designed and built the editor's major features over ten years: cropping, reusable symbols and alternate versions, PNG and PDF export, full-screen presentation, search and replace, and the standalone viewer.
- •Shipped the editor as a versioned npm package with a public API I evolve with the host teams; five hosts embed it (Cloud web app, Atlassian integrations, desktop apps, image renderer, AI server), two with no browser at all.
- •Gave the AI stack eyes: built a headless rendering engine that draws PNGs from model files on the server with no browser, so AI edits render into logs and evals and finished wireframes appear in the agent chat via MCP (Node.js, skia-canvas).
- •Built the editor's infinite canvas and its layout aids: the snapping engine and smart arrows that attach to shapes and follow them.
- •Introduced product analytics to the editor so the team sees how people use it instead of guessing: built the analytics layer, 156 event capture sites across widgets, menus and the AI chat, and the feature flags the team's A/B experiments run on (TypeScript, PostHog).
- •Co-designed the real-time collaboration server: several people edit the same project at once while the shared state stays correct under concurrent edits, integrated into the editor through dedicated npm packages.
- •Took Balsamiq's AI from prototype to production, now serving around 800 conversations a day at peak: designed and built the agent loop and tool calling, the MCP layer that lets the model read and edit the wireframe model, schema validation on its output and the provider abstraction (TypeScript, Node.js, MCP, Gemini).
- •Built an A/B eval harness that runs the real edit workflow with and without a prompt change and scores the model's first unaided attempt; one measured prompt fix took a hard edit case from 0/12 to 12/12 first-try successes.
- •Built the first image-to-wireframe pilot, years before the current AI wave: trained a YOLO model to recognise buttons, inputs and boxes in a screenshot and combined it with OCR. It became the image-to-text-controls feature, now the AI feature customers are happiest with (Python, YOLO, OCR, computer vision).
- •Migrated 80+ editor UI control classes (about 45K lines) from JavaScript prototypes to a TypeScript hierarchy with Claude Code and agent skills I wrote, reviewing every change, with almost zero regressions.
- •Built automated triage for production runtime errors: each error lands in Elasticsearch, a first model classifies it, and a coding agent picks up the issue and drafts a fix (multi-model LLM pipeline).
- •Built Olio, the commerce backend behind subscriptions and desktop licenses, handling up to $4M/yr from tens of thousands of customers: purchases, upgrades, invoicing, billing and license keys (Groovy, Grails, early AWS).
- •Main developer of the macOS app, still sold 8+ years on, and owner of its remote build-and-release system (Swift, Core Animation).
- •Built and owned the Jira and Confluence integrations for three years, against the Atlassian APIs in Java.