Software engineer · Nova Scotia · everything here is live

Tools for the shop floor, the office, and the field.

I build software that real operations run on: an ERP for a custom fabrication shop, CAD and estimating instruments that live on tablets and browsers, and research into optimization at the edge of what's computable. Nothing on this page is a mockup. Open any of it and use it.

12deployed tools
2platforms
online now
FIG. 01 · horizontal pressure vessel
iso · 35°
drag to orbit
view assembled · parts 10
Rendered live · no libraries · wireframe with exploded assembly— shell · — nozzle · — flange · - - seam
01 / Instruments

Open in a browser. No account, no install.

Single-purpose tools built for people who work with their hands and need an answer in seconds. Each one runs entirely client-side and is deployed at the edge on Cloudflare.

72.00 36.00 18.0 ft² · $214.60
Tablet · stylus checking

CUTSHEET MK‑1

Material take‑off & cut sheets

Replaces the yellow legal pad. Sketch a part with a stylus, get a clean dimensioned drawing, a live square‑footage and cost readout, and a printable sheet for the floor. Works offline once loaded.

CanvasES modulesOffline‑firstCloudflare Worker
steveduncan.ai/draw
TREES 1 284 ± 9%
Satellite · photogrammetry checking

CANOPY NS‑1

Tree tally from satellite imagery

Trace a freehand boundary on the map, pick a stand model, and watch an eight‑stage photogrammetric pipeline animate each raster product onto the map. Returns a tree count with a confidence interval and a printed derivation. Tuned for Nova Scotia's Acadian forest.

Canvas pixelsRaster pipelineMap tiles
steveduncan.ai/treetool
θ 148.6° · R 168.2 frustum · Ø24 → Ø44 · h 30 · 12 ga
Flat pattern · CAD checking

PlateSD

Sheet & plate development

Unfolding CAD for steel fabrication, sheet metal, ducting and piping, in the spirit of Plate 'n' Sheet with a modern UI. Cones, reducers, rectangle‑to‑round transitions, tees and laterals, lobster‑back bends, gores and auger flights. Every size edit rebuilds the 3D model and the flat pattern instantly, backed by a geometry test‑suite.

TypeScript3D + 2D canvasVitestCloudflare Worker
steveduncan.ai/plate
W12×26 · A992 · D/C 0.78 · governs LC2 1.2D+1.6L
3D · AISC 360‑16 checking

Steel Calculator

Concept screening & estimating

Place standard AISC shapes in 3D, drag members into place with snapping, then run LRFD strength checks under ASCE 7 combinations. Members recolour by demand/capacity, a section optimizer finds the lightest passing shape, and a costed report prints to PDF. Includes an 86‑part pressure‑vessel module with an animated exploded view.

Three.jsAISC 360ASCE 7Cost model
steveduncan.ai/mmw_calc
⟨C⟩ → 6.8 / 7 QAOA · p=2 · 64 states · gradient ascent Quantum · simulation checking

Optimere / QAOA

Medical scheduling · quantum‑assisted rescheduling

A scheduling platform concept for clinics, and a live Quantum Approximate Optimization Algorithm simulator that treats rescheduling as Max‑Cut. State‑vector simulation, parameter landscapes and measurement spectra, all computed in your browser.

ReactState‑vector simCanvas
steveduncan.ai/optimere
PORTALTIMEJOBSREQPOMATERIALINVENTORY one Supabase schema · role‑filtered navigation · Microsoft sign‑in
Platform · ERP checking

Puffin ERP

Operations platform for a custom fabrication shop

A full enterprise system for a metal fabrication business, built as a suite of SvelteKit applications on one shared Supabase backend. Shift and time tracking, job sheets with costing, requisitions through purchasing and receiving, inventory, and accounting reconciliation, all with role‑based visibility and a shared navbar that carries pending‑task indicators across apps. 🔒 Company sign‑in required · walkthrough available on request

Time Trackingtime. Job Sheetsjobs. Requisitionsreq. Materialsmaterial. Purchase Orderspo. Inventoryinventory. Receivingreceiving. Accountingaccounting.
SvelteKit 5SupabasePostgres RLSCloudflare PagesMicrosoft EntraMonorepo
puffin.steveduncan.ai
INVOICE 0412Detailing · Job 26‑651Rev C · 14 sheetsHours 38.5 SENT
Platform · Detailing checking

Loofa

Detailing management

Job tracking and invoicing for a drafting and detailing practice: work logged against jobs and revisions, printable invoices, and sign‑in auditing. 🔒 Sign‑in required

SvelteKitSupabaseCloudflare
loofa.steveduncan.ai
Custom fabricators · since 1969
Marketing site checking

Fabricator site

Public website · staging

Staging build of a public site for a custom metal fabrication company: services, capabilities and contact, served from the same edge network as the tools.

StaticCloudflare Pages
steveduncan.ai/mmw_test
02 / Research

Optimere and the QAOA simulator, running live.

Rescheduling a clinic when a no‑show ripples through the day is a combinatorial problem that explodes with scale. This is the original Optimere page, embedded unchanged: press Run optimizer to watch a quantum approximate optimization circuit converge on a schedule.

steveduncan.ai/optimere · classical state‑vector simulation · 6 qubits
Open full page ↗
Max‑Cut formulation · gradient ascent over (γ, β) · p = 1…3 layersBuilt to hand off to real quantum hardware when it is viable at scale.
03 / Off the web

Desktop and kiosk work.

Not everything belongs in a browser tab. These run on Windows machines, tablets and cameras on a local network. Demonstrations available on request.

B‑01

DocSD

A Windows PDF workbench: fast viewing and text search across whole folders, page‑level restructuring (combine, split, crop, stitch, bookmarks, layers), and local OCR that writes a searchable text layer back into the file. Ships as an MSI installer.

WPF · .NET 9PDFiumTesseract
B‑02

FaceLock

Face‑recognition check‑in and check‑out kiosk for a tablet. Recognition models run in the tablet's browser; the roster and history live in a SQLite file on a PC on the same Wi‑Fi. No cloud services involved.

Nodeface‑apiSQLiteSelf‑signed TLS
B‑03

Gesture Window Control

Drive a multi‑monitor Windows desktop with your hands and your gaze: head direction picks the monitor, a hand becomes the pointer, gestures act on the window underneath.

PythonMediaPipeWin32 API
04 / Approach

Small tools, shipped fast, kept running.

Start on the floor

The best specification is watching someone do the job on a legal pad. I build for purchasing clerks, welders, detailers and clinic schedulers, and I keep building until the paper disappears.

AI‑native engineering

Development runs through an agentic workflow with review‑gated deployments: feature branches, pull requests, staged environments. That is how a one‑person team ships an ERP and six instruments and keeps them all in production.

Zero‑ops at the edge

Everything deploys to Cloudflare Pages and Workers with Supabase behind the authenticated apps. No servers to patch, global latency in the tens of milliseconds, and a full deploy takes under a minute.

Stack SvelteKitReactTypeScriptNodePython.NET / WPFSupabase · PostgresCloudflare Pages · WorkersThree.jsCanvas 2DTailwindMediaPipeAISC / ASCE codesConstraint & combinatorial optimization
05 / Sheet index

Every deployment, checked from your browser.

Status is a live reachability probe run by this page when it loads, not a cached badge.

No.TitleDescriptionAddressStatus