Senior Full-Stack Engineer

.NET, Node.js, Swift, React, Vue

Twenty years, startups to Fortune 500s.

What I've Built

Products I built and still run in production.

View All Projects
AccessHawk website screenshot

AccessHawk

  • Web Application

Automated WCAG scanning with Lighthouse and an AI review. Each issue is boxed on a screenshot with a suggested fix, in an interface built for low-vision and keyboard users.

  • Nuxt 4
  • TypeScript
  • MongoDB
  • Redis
  • BullMQ
SereneReader website screenshot

SereneReader

  • Web Application

A real-time reading platform with live updates over SSE, native clients on four Apple platforms, and complete localization into 13 languages.

  • Nuxt 4
  • TypeScript
  • i18n (13 locales)
  • Swift
  • SwiftUI
SPConnector website screenshot

SPConnector

  • Web Application

Multi-tenant print routing for e-commerce fulfillment. Real-time WebSocket delivery, AES-256-GCM encryption, and a load-balanced order queue.

  • Vue.js
  • Express.js
  • MongoDB
  • Redis
  • Polar.sh

Full-stack: React, Vue, and TypeScript on the front end, Node.js and C#/.NET on the back, SQL Server, Postgres, and MongoDB underneath. Production workloads on Azure and AWS.

A large part of my work is architectural: service boundaries, multi-tenant data modeling, background processing, real-time updates, authentication and access control, and query performance as data grows.

Also native iOS, iPadOS, macOS, and watchOS apps in Swift 6 and SwiftUI, accessibility to WCAG 2.2 backed by a W3C certification, and enterprise CMS work on Sitecore and Umbraco, certified on both.

Technical Blog

What I'm working on and what I've figured out.

View All Articles
Thumbnail for Hosting a Vision Model for Medical Images Under HIPAA: Self-Host, AWS Bedrock, or Azure OpenAI?
AIHealthcareHIPAA+7 more

Hosting a Vision Model for Medical Images Under HIPAA: Self-Host, AWS Bedrock, or Azure OpenAI?

A working engineer's guide to running a text-plus-image AI model on protected health information. What PHI, covered entity, and BAA mean in plain English, the three realistic hosting paths (self-hosted open-weight models, AWS Bedrock, Azure OpenAI and Foundry), where the paperwork gets murky for image inputs specifically, and the checklist to run before the first byte of PHI moves.

17 min read
Thumbnail for Apple Rejected My App Eight Times. Here's the Playbook I Wish I Had.
App StoreAppleSwift+7 more

Apple Rejected My App Eight Times. Here's the Playbook I Wish I Had.

Three apps through App Review in one summer: SereneReader, Pulse, and SiteGrade. One of them collected eight findings in three rejection rounds. Here is what App Review flags, what the real cause usually is, and which rejections you answer with a reply instead of a build. Covers the sandbox-on-production trap, Sign in with Apple on macOS, closed version trains, Terms of Use metadata, and how to write the reply.

20 min read
Thumbnail for I Open-Sourced the Engine Behind AccessHawk. Meet A11yHawk.
A11yHawkAccessHawkAccessibility+6 more

I Open-Sourced the Engine Behind AccessHawk. Meet A11yHawk.

A11yHawk is the open-source, self-hostable accessibility scan engine that powers AccessHawk. Real browser capture, Lighthouse audits, and bring-your-own-key AI analysis against every WCAG criterion. Build your own accessibility tooling without the per-scan SaaS bill.

9 min read
Thumbnail for 84 Malicious TanStack Versions Hit npm. My Portfolio Pulled Zero.
npmpnpmTanStack Start+4 more

84 Malicious TanStack Versions Hit npm. My Portfolio Pulled Zero.

On May 11, 2026, the Mini Shai-Hulud worm published 84 malicious versions across 42 TanStack packages in a six-minute window. My portfolio runs on TanStack Start. None of the bad versions ever touched it. Here is why, and what every project running npm should be doing right now.

12 min read
Thumbnail for That Accessibility Widget Isn't Protecting You. It's a Lawsuit Waiting to Happen.
AccessibilityWCAGADA+4 more

That Accessibility Widget Isn't Protecting You. It's a Lawsuit Waiting to Happen.

Accessibility overlays like AudioEye and accessiBe promise WCAG compliance with a single line of JavaScript. The FTC, the courts, and the disability community all disagree. I dig into why overlays fail, what legal exposure they actually create, and what it takes to build accessibility into your source code.

13 min read
Thumbnail for Railway Is My Go-To Infrastructure. Here's Why I Recommend It to Enterprise Teams
RailwayInfrastructureDevOps+5 more

Railway Is My Go-To Infrastructure. Here's Why I Recommend It to Enterprise Teams

I run several production projects on Railway, from SaaS platforms with background workers to simple marketing sites. After years on AWS and Azure, Railway cut my go-to-live time from days to minutes. Config-as-code, built-in databases, non-serverless deployments by default, and a platform that ships meaningful features weekly.

14 min read

Contact

Drop me a line. I read everything and reply within one business day.

Required fields are marked “(required)”.