I'm a product engineer in Portland, Oregon, 28 years in. I run Pattern 158 Solutions, where the work is building the tool that makes a recurring operational problem go away instead of billing to work around it forever. The method is forensic first: find why it keeps costing you, then build the shortcut that ends it, properly.
"If you want to cheat, cheat fair." — Moe Howard, Healthy, Wealthy and Dumb (1938)
That line is the whole standard. An elegant shortcut is legitimate when it produces the correct result by a cheaper path. It is not legitimate when it produces a result that only looks correct.
Core: TypeScript, Vue, React, Node, Postgres, REST/GraphQL integration, WCAG 2.1 AA accessibility, SCORM/xAPI/AICC, forensic debugging of undocumented systems. Python when the data work calls for it, alongside the JS stack rather than in place of it.
scorm-debugger SCORM API emulator with save-state debugging. Save course state at any point, restore instantly, edit SCORM values directly, jump to any section. Commercial SCORM tools never made reproducible debug states a first-class feature; this one does. TASBot methodology applied to eLearning QA. Case study.
The scheduling Rosetta Stone: one spec, five builds, so the tradeoffs are observable rather than argued: procode · procode-ideal · agent-built · platform-native The native track's result is the useful one: ServiceNow's assignment engine routes by skill, not by calendar-interval overlap, so out-of-the-box will double-book a resource. That invariant has no native enforcement and forces custom code back in. That's the honest limit of "just configure it."
pattern158-vue-public Public snapshot of the Pattern 158 site. Vue 3 + TypeScript, schema-driven content. Worth reading for the seam it gets wrong as much as the part it gets right: structured metadata in JSON was correct and made a confidentiality audit tractable; putting the prose in JSON was not, and a content-collection with typed frontmatter would have given both.
I also run a heavily customized personal agent harness on Claude Code: lifecycle hooks, permission gating, a Postgres-backed deterministic state core with the model as an enhancement layer on top rather than the foundation. It is built on Daniel Miessler's PAI, not invented from scratch; my work is the customization and the deterministic core. That repo stays private because it holds personal state.
Anonymized case studies, written up in full at pattern158.solutions.
Cross-domain content framework Built in 2011, five years before a commercial vendor shipped the same idea. Lightweight stub packages on each client LMS, content served centrally, transparent SCORM/AICC protocol translation. Roughly 20 energy-utility clients against a ~2,000-course library, ten years in production.
Enterprise learning portal forensics A reported course-incompletion spike, framed as a tracking bug. It was five concurrent systemic failures: a memory cache with no auto-save, a "congratulations, you failed" UX pattern, confusing navigation, a mobile workforce on poor WiFi, and short-burst usage fighting an hour-long desktop design. The platform was later abandoned, which is indirect validation of the finding.
Reverse-engineering an undocumented platform React/GraphQL federated facade over a content controller, an enterprise LMS, a learning-record store, and a cloud identity provider. Main piece was a multi-tenant rebrand through an undocumented Material UI theming system, scoped at a week and taking months as interdependent style dependencies surfaced. Plus identity-provider troubleshooting from log analysis and reverse-engineering LRS queries.
28 years at one employer, 1997 to 2026, through a layoff in January. Service Support Specialist, then Programmer/Systems Integration Specialist, then Senior Software Engineer and Lead Systems Architect. 40+ enterprise engagements, mostly a different stack and a different problem each time, owned solo from ambiguity to production.
The domain was learning systems: LMS integration, SCORM/xAPI/AICC at the protocol level, accessibility to WCAG 2.1 AA and Section 508, and a long tail of legacy systems that were broken, undocumented, critical, and nobody could say why. The domain is incidental. The transferable part is owning an unfamiliar system end to end and leaving it explicable.
My last year at GP was Power Platform (Dataverse model-driven scheduling). Since the layoff: ServiceNow, CSA certified July 2026, plus the tool-building above.
I restructure repetitive work around its pattern instead of grinding through it. As a kid given lines to write as punishment, I wrote the first word down the page N times, then the second, then the third. Same output, a fraction of the effort. QA on a library of courses built to the same template becomes three targeted passes: every answer wrong, to find the correct answers and exercise the failure paths; every answer right, to check the pass path; then interactions only. That replaces one learner-style read of each course as if it were unique. You test the shared pattern, not each instance.
On failures I map contributing factors instead of patching the symptom. Swiss cheese analysis, reproducible debug states, the systemic fix over the quick one. That's the forensic part, and it's a capability, not the identity. The destination is always the tool that makes the problem stop recurring.
Open to work as a product, platform, or developer-experience engineer: building tools, owning systems end to end, embedding with the team whose problem needs solving.



