Programming since childhood, shipping since 1997 — hand-built ERPs, FreeBSD clusters streaming terabytes of video a month in the mid-2000s, multi-tenant SaaS, three engineering teams built from solo up to eighteen. LLMs in production since early 2023. The last two years went into an open-source ecosystem — ~80 packages, ten production news sites, a development pipeline operated by AI agents — built on one bet: agents are becoming software's primary users, and the boring half of every green field can be finished before the project starts.

Experience

#experience

happyvertical.com

Founder & Lead Engineer
2024-12 – Present

Open-source ecosystem for development in the agentic age.

HAVE SDK

A TypeScript monorepo of 29 npm packages (@happyvertical/*) for building vertical AI agents. Every capability — LLMs, databases, caching, payments, auth, translation, publishing — sits behind a uniform adapter/factory interface, decoupling application logic from volatile vendor APIs so providers can be swapped without code changes.

Designed a consistent adapter/factory architecture (getAI(), getDatabase(), getCache(), …) applied uniformly across all 31 packages, isolating business logic behind stable interfaces — swapping a managed API for a self-hosted alternative is a config change, not a refactor, eliminating vendor lock-in and de-risking provider price/API churn.

Unified 40+ third-party providers behind those interfaces, including LLMs (OpenAI, Anthropic, Gemini, AWS Bedrock, Hugging Face), databases (PostgreSQL, SQLite/Turso, DuckDB, with vector search), caches (Redis, S3, memory, file), payments (Stripe, BTCPay, USDC/x402), and auth (Keycloak, Cognito, Nostr).

Built as a higher-level alternative to early LangChain.js (then well behind its Python counterpart): one interface for chat, streaming, embeddings, vision, TTS, and function calling that keeps pace with the newest models without framework churn.

Used AI-assisted development to write thin first-party adapters instead of adopting heavyweight frameworks — vendor SDKs are optional peer dependencies, so consumers install only what they use, shrinking the dependency tree, upgrade pain, and supply-chain exposure.

Made the SDK AI-native: every package ships a machine-maintained AGENT.md context file, and an MCP documentation server answers integration questions straight from the package docs.

Ran the project with production-grade engineering practice: pnpm/Turborepo monorepo, ESM-only, ~36k lines of Vitest tests, Biome linting, conventional commits, and automated Changesets releases to public npm — 1,750+ commits.

s-m-r-t

Designed an opinionated, 49-package application framework enabling "define-once" development. Implemented AST-based code generation to auto-generate REST APIs, CLI tools, MCP servers, and migrations from class definitions. Built the UI layer: a global app provider, a runtime theming system, and 15+ reusable domain modules (Commerce, Ledgers, Content, Projects). Features include voice-enabled form inputs and integrated LLM validation.

Designed a single-source-of-truth model layer: a @smrt() decorator on a TypeScript class triggers a build-time AST scan (custom OXC-based scanner → manifest) that generates the class's SQL schema, REST API, CLI, and MCP tool server from one definition — so a domain concept is defined once instead of re-implemented as boilerplate across four surfaces, cutting the code an AI agent writes and a human reviews.

Unified the human and agent surfaces onto one code path: generated MCP tools, REST routes, and CLI commands all resolve to the same ORM collection under a shared sensitive/readonly field policy — letting AI agents operate an application with the same capabilities and guardrails as its users, from a single codebase.

Embedded AI operations in the object model — is() for natural-language boolean checks and do() for instructions on every persistent object, with the object's own methods passed to the model as function-calling tools — so domain logic is directly promptable rather than bolted on.

Built 49 lockstep-released packages of hardened, reusable domain logic — multi-tenant RBAC (a four-level permission cascade), double-entry billing (single-table-inheritance contracts posting balanced journals to a ledger), plus content, messaging, assets, semantic knowledge, and geospatial search — so bespoke SMB and greenfield SaaS builds compose vetted modules instead of re-solving the same concerns per project.

Shipped a typed, themeable, accessibility-tested Svelte 5 component library (~80 components — forms, tables, modals, navigation, calendar) so generated models get a usable UI without rewriting the same components for every app.

Made the framework agent-native and reproducible: per-package AGENTS.md context files and an MCP developer server (code generation + project introspection) for AI coding assistants; run as a pnpm/Turborepo ESM monorepo with 710 test files, Biome, conventional commits, and automated Changesets releases — 1,168 releases shipped.

anytown.ai

AI-powered local news network — 10 production community sites across Central Alberta, built on the Happy Vertical ecosystem.

2024-12

Launched a network of 10 hyperlocal news sites (e.g., bentleyalberta.com) powered by a multi-tenant SaaS dashboard that orchestrates a suite of specialized AI agents sharing a unified database via Single Table Inheritance (STI).

10 production sites

Autonomous agent monitoring municipal portals (CivicWeb/SharePoint) using PDF parsing and OCR to generate source-linked meeting coverage and automated journalism.

Managed automated media workflows orchestrating performers, characters, and scenes through multi-stage ComfyUI workflows and custom diffusion models.

Developed agents for hyperlocal weather forecasting and sports statistical coverage.

Engineered agents for autonomous social media performance tracking/posting and automated GitHub repository management.

Developed an ad network with weighted distribution, impression tracking, and automated site/zone registration.

ergot.io

Capture-to-license platform born from a real production need: turning 360° street drives and drone flights into a town-scale 3D asset library for a local-news project, without cloud storage bills or metered AI APIs. Field rigs feed a local-first ingest daemon; a distributed "factory" turns raw captures into finished assets on self-hosted GPUs; a licensing layer keeps rights and provenance attached to every output.

Architected a TypeScript monorepo (6 apps, 2 agent daemons, 6 packages) around a model-driven framework: 59 declarative domain models generate REST APIs, Postgres/SQLite schema migrations, CLIs, and MCP servers from a single source of truth.

Built a local-first capture system with native device adapters — Sony CrSDK (C++ bindings), gphoto2, Insta360 MediaSDK (360°), and hardware turntable control — where sessions record offline to SQLite + disk, then resume-sync to the central library as immutable, checksummed source packages.

Automated field-media offload (drones, cameras) with content-based file classification, sidecar detection, SHA-256 deduplication, and GPS track indexing with geohash spatial queries that link footage moments to real-world places — the substrate for reconstructing whole neighbourhoods from a single street drive.

Designed a lease-based distributed job orchestrator that schedules each pipeline step by placement — edge capture node, central host, or NVIDIA/ROCm GPU worker — so heavy AI workloads run on hardware I own instead of metered frontier APIs.

Shipped 13 production pipeline step types: ComfyUI image editing and text-to-video generation, Whisper transcription, voice-cloning TTS, face embedding and matching (InsightFace), background removal, and an article-to-video news-segment generator that publishes straight to YouTube, Threads, X, Bluesky, and Facebook.

Eliminated cloud warm-storage costs with a multi-store architecture: per-tenant S3/MinIO stores with encrypted credentials, presigned multipart uploads, and node-local NAS replication — the library scales by adding servers, not cloud spend.

Built the multi-tenant consumer surface — capability-scoped API keys, HMAC-signed webhooks, tenant provisioning — and published a typed SDK and embeddable UI components to npm, letting downstream apps use ergot as their asset backend without carrying its weight.

Operated the platform with GitOps: Kubernetes + Flux across dev/staging/production, multi-stage Docker images, environment-gated side effects, and a zero-downtime schema-migration workflow.

Agentic Development

Built the ~80-package ecosystem (HAVE SDK + s-m-r-t) through AI-native tooling — Claude Code, Gemini, and Codex as the primary interfaces — with agentic workflows handling refactoring, test generation, and architectural consistency under human review.

Hybrid Cloud Infrastructure

Designed a hybrid Kubernetes cluster spanning Hetzner Cloud and on-premises GPU nodes (NVIDIA RTX 4090) using NixOS, FluxCD, and Tailscale. Includes CloudNativePG for PostgreSQL-on-Kubernetes operations in the cluster. Managed entirely through strictly typed infrastructure (CDKTF) and automated GitOps pipelines.

digitalfuel.io

Technical Lead
2021-03 – 2024-12

React & Hugo Hybrid Architecture

Built the Bettoday content network using React components over Hugo static rendering, scoring 100/100 PageSpeed across the network.

100/100 PageSpeed

GitOps Automation

Automated deployment and scaling of the syndicated content network with FluxCD, Terraform, and Kubernetes — zero-downtime updates via GitOps.

AI-Driven Content Systems

Architected a syndicated CMS with ChatGPT-driven information extraction, content generation, and SEO optimization — in production since early 2023.

Network Infrastructure

Built and managed the infrastructure for Bettoday, a network of regional sports sites (flagship: bettodayusa.com) and associated state-specific domains.

xmatters.com

Integrations Engineer
2020-03 – 2020-12

Code Coverage Tooling

Built code-coverage tooling that surfaced untested paths in the integration codebase.

Security & Auth

Implemented 3-legged OAuth to link Slack and xMatters user accounts.

Automation

Developed scripts to automate database patching, reducing a multi-day manual process to a single-click operation via the Spring Framework.

omnium.io

Technical Lead
2015-10 – 2020-03

System Architecture

Led architecture and delivery of a SaaS ERP for the apparel industry, from zero past MVP.

Team Leadership

Built and led an 18-person team — 7 on-site and 11 offshore, reviewing code across all 18 — overseeing the stack (Node.js, Vue.js, AWS Aurora/ECS) to handle inventory allocation, shipping, and warehousing workflows.

Team of 18 (7 on-site + 11 offshore)

Internet Media Corp

Technical Director & Partner
2003-06 – 2008

Distributed Systems & High Availability

Engineered a high-availability server cluster using FreeBSD and the Spread Toolkit (group communication/ordered messaging) to absorb non-linear traffic spikes. The same architecture backed B2B syndication, serving leased data feeds to international media companies.

High-Throughput Media Pipelines

Designed and implemented a custom PHP-based video streaming engine — including a flash pseudo-streaming server built to avoid Flash Media Server licensing costs — with usage-based billing and granular data-tracking architectures handling terabytes of monthly transfer with audit accuracy.

Terabytes/month for years

External Technical Leadership

Acted as a Tier-3 technical consultant for ISP Infrastructure teams. Provided specialized training and operational standards to ISP senior engineers to optimize their hardware and network layers for high-throughput media environments.

Green Room Media

Lead Programmer & Technical Consultant
2000-04 – 2002-12

Engineering Team Scaling

Partnered with media buyers to build a full-service digital agency from the ground up, scaling engineering to 12 developers.

Grew team to 12

Gaming Platforms

Architected full-stack solutions for global online gaming clients, including betting exchange clones (Canbet), PPC search engines, and members-based sports predictive modeling tools.

Dish Clothing

Software Engineer
1999-11 – 2000-03

ERP Migration

Built a custom MS Access/VBA manufacturing system to replace a legacy Filemaker database, handling inventory, orders, and material calculations.

Mobile Barcode Tooling

Wrote Windows Mobile barcode software to assist with inventory and invoicing.

Vizworx

Software Developer
2020 – 2021

Kubernetes/AWS CDK infrastructure, e-sports bracket algorithms, Terraform templates.

coink.it

Founder
2013 – 2015

Cryptocurrency platform with blockchain API and secure wallet server.

iWinback

Software Engineer
2011 – 2012

Web-based call center application replacing legacy Delphi system.

Gogiro Internet

Lead Developer
2009 – 2011

Multi-tenant affiliate SaaS platform on AWS.

Matrix Content

Software Engineer
2002 – 2003

Relocated to Los Angeles; built web store and backend for image/video licensing business.

Cannabis Culture Magazine

Software Engineer
1997 – 1999

Other Experience

#other

Software Developer

Vizworx · 2020–2021

Kubernetes/AWS CDK infrastructure, e-sports bracket algorithms, Terraform templates.

Founder

coink.it · 2013–2015

Cryptocurrency platform with blockchain API and secure wallet server.

Software Engineer

iWinback · 2011–2012

Web-based call center application replacing legacy Delphi system.

Lead Developer

Gogiro Internet · 2009–2011

Multi-tenant affiliate SaaS platform on AWS.

Software Engineer

Matrix Content · 2002–2003

Relocated to Los Angeles; built web store and backend for image/video licensing business.

Software Engineer

Cannabis Culture Magazine · 1997–1999

Education & Certifications

#education
  • Agile Product Ownership
    UBC Sauder School of Business
    Issued Feb 2018 · Credential ID: II863
  • CELTA (Certificate in Teaching English to Speakers of Other Languages)
    Issued Jul 2016
  • Earl Marriott Secondary School
    Network administrator for Novell NetWare and AppleTalk networks. Built a hallway broadcast system using distributed televisions. Set up the school's first student internet workstation. Self-taught; programming since age 10.