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.
I architect, build, and lead complex software projects end to end, from system design and hands-on development through production delivery. I did it for 8+ years as technical lead on regulated banking systems at JPMorgan Chase, and I do it today as lead engineer on a small team building payment and document-signing platforms on AWS.
I'm a Lead Software Engineer with 19+ years of building and modernizing systems where correctness comes first, mostly in banking and payments. For 8+ years I was technical lead for a six-engineer team on a mission-critical banking application at JPMorgan Chase, and today I lead a small engineering team building payment and contract platforms on AWS. Earlier, I built payment-processing solutions for American Express, Verizon, and the Federal Reserve Bank of Atlanta, and retail systems used by 20,000+ people at Academy Sports + Outdoors.
Most of my career has been the unglamorous-but-critical work: moving legacy platforms off aging, licensed infrastructure onto modern, open-source, cloud-native architectures without disrupting the business that depends on them. I also build with AI every day, from the assistant on this site to an agent that takes a feature from a fresh branch to a tested pull request.
I operate as a hands-on technical lead (setting technical direction, writing code across the stack, and mentoring the engineers around me) rather than a pure people manager. I'm looking for Staff, Senior, or Lead engineering roles where I can own complex systems 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 or TypeScript; this fills that gap for Java and Spring shops.
Choosing Airflow, designing 72 DAGs around 11 reusable operators, and why the cutover plan mattered as much as the code.
Why webhooks arrive more than once and out of order, and the small set of rules that keeps the books right anyway.
Two-site DR for the platform behind a correspondent bank's check-image network: PostgreSQL moved from log shipping to streaming replication, rsync-mirrored images, and runbooks for every environment.
This site is intentionally low-tech: plain HTML, CSS, and vanilla JavaScript, with no framework, no build step, and 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 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. It also has a fit check mode: paste a job description and Claude Sonnet uses the same grounded context to map my experience to the role's requirements, with the pasted text treated strictly as data rather than instructions.