I architect, build, and lead complex software projects end to end — from system design and hands-on development through production delivery. I've proven that capability modernizing regulated banking infrastructure and applications at JPMorgan Chase and building full-stack document signing and payment collection platforms independently on AWS.
19+ years of experience designing, building, and modernizing high-availability enterprise systems — 8+ of those architecting and developing mission-critical banking applications at JPMorgan Chase, plus earlier stints in retail (Academy Sports + Outdoors) and payments (US Dataworks). I've spent my career on the unglamorous-but-critical work: migrating legacy platforms off aging, licensed infrastructure onto modern, open-source, cloud-native architectures without disrupting the business that depends on them.
I operate as a hands-on technical lead — architecting the solution, writing the code, and mentoring the engineers around me — rather than a pure people manager. I'm looking for senior engineering or architect roles where I can own complex modernization efforts end-to-end and work close to the business.
React + TypeScript dashboard built on JPMorgan's Salt Design System — TanStack Query data fetching, Highcharts, a resizable/themeable layout, and a full Vitest + React Testing Library test suite.
A Spring Boot starter for the Anthropic Java SDK — auto-configuration, property binding, and a convenience chat service so a Spring Boot app gets a working Claude client with zero manual wiring. Most Claude integration examples are Python/TypeScript; this fills that gap for Java/Spring shops.
This site is intentionally low-tech: plain HTML, CSS, and vanilla JavaScript — no framework, no build step, no bundler. It's hosted on AWS Amplify under a custom domain registered through Route 53, deployed by uploading a zipped build of the static files directly through the Amplify console.
The "ask my AI" widget is a small serverless app of its own: an AWS Lambda function (Node.js) behind a public Lambda Function URL, calling the Anthropic API (Claude Haiku) with the resume and project content baked into the system prompt so it only answers questions about my background. A DynamoDB table tracks per-IP request counts with atomic conditional writes to rate-limit the endpoint.