Home

Projects

Software I've shipped, shop-floor systems that run every day, CAD and CAM tooling, and the cutting-tool and metrology work they grew out of. Most of the code lives in private repositories; the open-source pieces link to GitHub.

projects
26
projects
areas
6
areas
released or in daily use
10
released or in daily use
open source
2
open source
GitHub profile
The Stepsmith guide editor with numbered steps, screenshots and automatically blurred details
Products2026ReleasedFlagship

Stepsmith

A Windows 11 app that turns a task done once into a step-by-step guide with screenshots, blurs sensitive data on the PC, and exports to PDF, Word, HTML and Markdown.

  • Clicks become written steps through Windows UI Automation, with no AI and no cloud
  • On-device OCR covers emails, card and ID numbers before a screenshot is saved
  • Its own PDF writer with AES-256 protection and embedded fonts
  • Signed license keys with per-PC activation served by this site
C# / .NETWPFUI AutomationWindows OCRNext.js
Product sitePrivate repo
Case study
Challenge
Windows Steps Recorder is being retired, and the cloud tools that replace it upload screenshots of internal systems: a non-starter for shops, hospitals and regulated teams documenting their procedures.
Before
Writing procedures by hand (screenshot, paste, crop, describe, repeat) or recording videos nobody can skim, with sensitive details visible in every frame.
What I built
Built Stepsmith in C#/WPF. Input hooks and Windows UI Automation turn each click into a written step; Windows' own OCR blurs emails, card and ID numbers before a screenshot is saved; and exports include a PDF writer of my own (AES-256 protection, embedded fonts for any language). Licensing uses signed keys with per-PC activation through this site.
Results
A complete product with its own site: a guide takes as long as doing the task once, works offline, and never uploads a screenshot.
The SwPy editor in the SOLIDWORKS task pane querying faces and editing a dimension
CAD & CAM2026ReleasedFlagship

SwPy: Python for SOLIDWORKS

Embeds real CPython inside SOLIDWORKS: a task-pane IDE with live IntelliSense, a Pythonic API layer, pip packages on demand, and control from Jupyter.

  • Runs in-process, so API calls take microseconds instead of the hundreds of milliseconds of COM
  • Completion follows SOLIDWORKS API return types from the live session
  • SI units, dimensions as dictionaries, chainable face/edge queries, one rebuild per batch
  • Ships its own Python runtime: no install and no admin rights
C#Python 3.12pythonnetSOLIDWORKS API
Keystone dashboard with secret counts, TPM key protection and a live audit feed
Security2026In developmentFlagship

Keystone: Local Secrets Service

A Windows service that hands secrets to apps with no .env files and no client tokens: the caller's verified process identity is the credential.

  • Callers verified by path, SHA-256 and code signature through a held process handle, immune to PID spoofing
  • Firewall-style first-use approval, with grants pinned to the executable
  • Master key sealed in the TPM; the vault is readable only by the service's own account
  • secrets.get("myapp/API_KEY") from Python, backed by 53 passing tests
.NET 10Windows serviceNamed pipesTPMPython SDK
Private repo
Shop floor2026In productionFlagship

MachCrawlr

Crawls Heidenhain CNC controls for each job's data file, analyzes cycle times and tooling, and posts the results to Teamwork on a schedule, from a tray app.

  • Fetch, parse, analyze, publish: shop-floor data lands in Teamwork with nobody touching a machine
  • Rate-limited publishing with Retry-After-aware backoff and de-duplication
  • Machines and parsing live-editable from the app, no restart; API key kept in Windows Credential Manager
  • Built installers and auto-update manifests shipped through a release repo
PythonFastAPIpyLSV2TauriReactSQLite
Private repo
FANUC six-axis industrial robots on a production line
Shop floor2023–2026In production

WSM Order Creator (ERP ↔ Cell Manager)

Turns live ERP production orders into robotic-cell orders automatically. Over 400 commits it grew into a v6 automation hub for the cell.

  • Order creation over 90% faster, with human error down to zero
  • Multi-operation orders routed through several mills (OP10, OP20…) as one order
  • Deadline tracking, a Next Up dashboard and milestone completion rates
PythonTkinterTeamwork APIXML
Private repo
Case study
Challenge
Orders in the robotic cell manager had to stay in sync with the ERP — any change in due date or quantity needed to be reflected automatically for full-scale production.
Before
Orders were created and corrected by hand from the ERP. Large quantities took hours, with a high chance of human error (e.g. serial numbers).
What I built
Built a Python OOP + Tkinter GUI that pulls real-time order info from the ERP (Teamwork API) and posts to the cell manager over XML, with foolproof validation and warning prompts.
Results
Creates orders in seconds, reduced order creation/update time by more than 90%, and drove human error to zero.
Shop floor2023–2026In production

Shop Automation Web Apps

My shop scripts turned into eight Flask web apps behind one entry point: task checker, task creator, timesheet payloader, project namer, wire-EDM job orders, carbide-rod calculator and tool-name checker.

  • Grew out of the standalone Auto Tasks Checker and Auto Timesheet Updater scripts
  • One unified WSGI app, deployable to Render
  • 27-test suite covering every app, including a path-traversal guard
PythonFlaskTeamwork APIAirtableShopify API
Private repo
Shop floor2026

Teamwork Milestone Splitter

Splits one Teamwork milestone into several by moving whole tasklists, with dry runs and an activity log.

  • The browser never sees the JWT or the API's address: the UI calls the API from the server only
  • Per-user accounts with encrypted Teamwork API keys
  • Deploys as two Render services, or as a packaged local install
Next.jsFlaskTurso (libSQL)shadcn/ui
Private repo
Shop floor2026In development

MachSync: CNC Backup Manager

Scheduled, versioned backups of CNC control data to Dropbox, with a controller plug-in interface so Fanuc, Siemens or Okuma can be added beside Heidenhain.

  • Hashes the control's files and downloads only what changed
  • Chunked, resumable uploads plus a local cache, so backups never depend on Dropbox alone
PythonFastAPIpyLSV2Dropbox APIReact
Private repo
ANCA MX7 CNC tool grinder with its wheel-pack changer
CAD & CAMIn production

Grinding Wheel Pivot Calculator

A Rhino + Grasshopper tool that computes the optimal grinding-wheel pivot angle for complex tool profiles.

  • 3–5 minutes of trial and error per profile replaced by an instant, collision-checked angle
RhinoGrasshopper
Case study
Challenge
Find the optimal grinding-wheel pivot angle for a complex tool profile so no part of the wheel or wheel pack collides with the tool, blank, or machine.
Before
Operators guessed the angle from experience and waited for the grinding software to check collisions — tedious, taking 3–5 minutes per complex profile.
What I built
Used Rhino + Grasshopper to calculate the pivot angle from a chosen pivot point, with a GUI slider to visually check collisions. The angle feeds directly into the grinding application.
Results
Drastically reduced calculation time, let users without prior experience get a valid angle, and produced smoother motion with fewer blending issues at profile kinks.
CAD & CAM

Rhino CAM & Analysis Plug-ins

My Rhino and Grasshopper toolkit: CAM plug-ins, measurement and finish-analysis commands, and scripts for cutting-edge and ANCA work.

  • CAM plug-ins: 2D toolpaths, Plane Manager, RhinoTurn and a CAM DXF exporter
  • C# plug-ins: SwMeasure and a Surface Finish Analyzer
  • Python scripts for cutting edges, layers, views and ANCA transforms
C#RhinoCommonRhinoPythonGrasshopper
Private repo
CAD & CAM2026

FOBA MarkUS MCP Server

Lets an AI assistant design laser-marking jobs for FOBA MarkUS by writing .mjb job files, with no SDK or laser attached.

  • Text, barcodes, DataMatrix/QR codes, shapes, and laser and hatch presets
  • SVG import plus offset, boolean and simplify operations on the geometry
  • Pseudo-3D extrusion for marks with depth shading
PythonMCPShapely
Private repo
CAD & CAM2026Released

Manufacturing Code Library

Free, MIT-licensed samples for the manufacturing–software seam, each explained line by line on this site.

  • SolidWorks BOM and PDF macros, a Rhino curvature script, FANUC FOCAS and RS-232 DNC examples
PythonVBAG-code
Multi-edge indexable milling cutter on an arbor
Tooling & research2022–2026

Custom Cutting Tools

Standard and highly custom carbide tools for aerospace, medical, and automotive clients — step drills, form tools, and variable flute/index geometry.

  • 38–50% client cycle-time reduction
  • Repeatable lights-out production from 1 to 20 mm
ANCA iGrindCarbideGD&TDFM
Case study
Challenge
Aerospace, medical, and automotive clients needed complex tools that hold tight tolerances and surface finish while cutting cycle time — often several features (bore, slotting, chamfer) in a single pass.
Before
Off-the-shelf or single-purpose tools meant more tool changes, longer cycles, and inconsistent blank sizes that wore grinding wheels unevenly.
What I built
Designed multi-form tools (bore, slotting, front/back chamfer on one tool), variable flute/index geometry to kill harmonics, polished flutes for chip evacuation, and custom blanking programs to control blank size and wheel wear. Rigorously tested before shipping.
Results
38–50% client cycle-time reduction without sacrificing finish, fewer tools per operation, and repeatable precision in lights-out production from 1–20 mm.
Metal 3D-printed turbocharger volutes still on the build plate with support structures
Tooling & research

Machining 3D-Printed Aerospace Parts

A process to accurately machine deformed 3D-printed parts by solving their true location in 3D space.

  • Tight-tolerance machining regardless of print deviation
Optical CMMGOM InspectGrasshopperMastercam
Case study
Challenge
3D-printed parts deviate from nominal (sagging, thermal cooling) across 6 degrees of freedom — unacceptable for aerospace. The part's true location must be found before machining.
Before
No openly available method existed; comparable approaches were locked behind proprietary restrictions.
What I built
Scanned the part with an Optical MicroCMM in a known coordinate system, then used GOM Inspect + Rhino/Grasshopper to solve its actual 6-DOF location and transform the Mastercam toolpaths to match.
Results
Any 3D-printed part can be machined within tight tolerance regardless of print deviation — and the same deviation data can pre-compensate the part before printing.
Tooling & research2026In production

Alicona Measurement Plug-ins

Plug-ins that automate routine steps in Alicona measurement runs on the shop's optical metrology system.

  • Extracts texture images from selected measurements into project folders
  • Moves the stage to a taught sample-change position safely, Z first
  • Configurable operator notes that pause or abort a run
PythonAlicona MeasureSuite
Private repo
Ruby touch-probe stylus contacting the tooth flank of a bevel gear
Tooling & research2021

Thesis: On-Machine FEA Surface Measurement

Predicted touch-probe measurement error using FEA, including sliding effects, then compensated it.

  • 27.7% measurement improvement and a new uncertainty model
FEAMetrologyMATLAB
Case study
Challenge
Predict a touch-trigger probe's sensing distance (measurement error), including sliding effects, without simplifying the probe geometry — across flat, inclined, and complex curved surfaces.
Before
Conventional models simplified probe geometry and ignored sliding effects, leaving uncompensated measurement error.
What I built
Implemented an FEA method that computes sensing distance for flat, inclined, and complex curved surfaces, then compensated the predicted error to improve measurement efficiency.
Results
A 27.7% improvement in measurement results accounting for probe sliding, plus a novel algorithm to predict measurement uncertainty.
Cryptic Password Generator showing a color-coded password and a strength meter
Products2026

Cryptic Password Generator

A native Windows 11 app for passwords, passphrases and usernames that also explains how strong a password really is. Fully offline.

  • Policy checks written as plain tokens, with Active Directory, Entra ID and LDAP presets
  • Crack-time estimates for three attacker models, plus an offline password checker
  • Clipboard auto-clear, and history kept in memory only
C#WPF.NET Framework 4.8Fluent design
Private repo
Products2025–2026

Windows Drive Mapper

Maps drive letters to local folders and network shares, remembers them and remaps them at login.

  • Rebuilt from PyQt to a Tauri + React app over a FastAPI sidecar
  • Tray app with Windows autostart; blocks duplicate drive letters
TauriReactFastAPIPython
Private repo
Case study
Challenge
Reaching frequently used network/local folders was slow, and there was no simple, friendly interface for managing mapped drives — especially for non-technical users.
Before
Drives were mapped manually through OS dialogs, which made duplicate drive-letter mistakes easy and offered no validation.
What I built
Built a Python + PyQt app that prevents duplicate drive-letter assignments, integrates Windows networking APIs, and adds validation, error handling, and dark mode.
Results
One-click drive mapping with dark-mode support and fewer configuration mistakes thanks to automatic duplicate-letter prevention.
Products2026Prototype

Datum

A kanban board for small teams where each card's edge shifts from blue to red the longer it sits in a column, so stalled work stands out.

  • Keyboard-first, with a Ctrl+K command palette
  • One SQLite file per board, plus JSON export and import with merge
Tauri v2RustReact 19SQLite
Private repo
Security2026Prototype

CAD Security Scanner for Rhino

A Rhino 8 plug-in that checks a model for hidden metadata, internal notes, risky layer names and external references before it leaves the company.

  • Risk score from 0 to 100 across six categories of findings
  • One-command sanitize, and an exportable report
C#RhinoCommonEto.Forms
Private repo
Security2026Prototype

Defensive Web Vulnerability Scanner

A permission-based, non-destructive scanner for websites and web APIs that produces HTML and PDF reports.

  • Checks headers, cookies, TLS, CORS, exposed files, JavaScript library versions and leaked secrets
  • Same-origin only, rate-limited, and limited to GET, HEAD and OPTIONS
PythonFastAPIhttpxSQLite
Private repo
Web2026Released

muerus.xyz

This site: portfolio, blog, code library and in-browser shop-floor tools, plus Stepsmith's store and license-activation API.

  • Nine interactive tools, from a G-code time auditor to a chatter simulator
  • Python samples that run in the browser through Pyodide
Next.jsReact 19Tailwind v4PyodideTurso
Web2026

Muerus Surgicals

Marketing site for a CNC machining service: services, capabilities and materials, gallery, FAQ, and a quote form that accepts drawings.

  • Statically rendered, with SEO metadata, a sitemap and generated social images
Next.jsTypeScriptTailwind v4Netlify
Private repo
Web2026

Translator & Interpreter Portfolio

A French-first portfolio for a French–English translator and interpreter, with case studies, a journal and booking.

  • Contact form through a server action, Cal.com booking and GDPR pages
Next.jsReact 19Tailwind v4
Private repo
Web2026Prototype

BookKeep Pro

A double-entry bookkeeping app for learning: build journal entries, post them, and watch the statements update.

  • Debit/credit validation, ledger, trial balance, income statement and balance sheet
  • T-account visualizer and flashcards
ReactTypeScriptVite
Private repo

Earlier design work

Mechanical design and design automation from before the software took over.

Multiple-Arm Pipe PickerCATIA V5 · +35%
Cam & Follower AutomationExcel VBA · SolidWorks
Scissor-Lift Design AutomationDriveWorksXpress
Incubation ChamberSolidWorks · DFA · GD&T
DriveWorks Shelving ConfiguratorDesign Automation
SolidWorks Design PortfolioSurfacing · Sheet Metal

Want a walkthrough of one of these, or something like it built for your shop?

Private repos can be demoed on a call.

Get in touch
Home
Projects
Blog
Tools
Code
Stepsmith
Contact
LinkedIn
Request Résumé