About Me
Writing software since 2004, from enterprise systems to native Apple apps.
Background
Enterprise apps, SaaS products, and e-commerce sites, mostly on .NET and Node.js. I usually own a project from planning through launch, then stay on to keep it running.
Security & Maintenance
I build security in from the start: locked dependency versions, strict content security policies, and encryption for customer data. I also keep the code plain enough that whoever maintains it next can follow it.
Technical Focus
Developer Tools & SaaS
Multi-tenant SaaS products with subscription billing, and open-source tools including an accessibility scan engine and Umami analytics dashboards.
Full-Stack & Distributed Systems
React, TanStack, Next, Vue, Nuxt, Node.js, C#/.NET. Background job queues and event streams that keep up when traffic spikes.
Native Apple Apps
Swift 6 and SwiftUI across iPhone, iPad, Mac, and Apple Watch. Widgets, complications, menu bar extras, StoreKit. Four on the App Store, more in the pipeline.
Certifications
Current certifications in web accessibility and enterprise CMS.
Introduction to Web Accessibility
W3C, through edX (W3Cx WAI0.1x)
Umbraco Master
Umbraco HQ
Sitecore 10 .NET Developer Certification
Sitecore
Technical Skills
What I work with and what I've gotten good at.
Backend Development
.NET & C#
Enterprise APIs and background services, including financial systems that handle live transactions.
Microservices
Splitting monoliths into services that scale on their own, connected through API gateways and message queues.
ASP.NET MVC & Web API
REST APIs and auth on the Microsoft stack, going back to the .NET Framework days.
Node.js & Express
My default for new projects: APIs, serverless functions, and server-side rendering.
BullMQ & Job Queue Processing
Redis-backed job queues. BullMQ runs AccessHawk's scan queue, scheduled scans included, and SereneReader's background processing.
Server-Sent Events (SSE)
Server-to-client streaming for live updates. Simpler than WebSockets when you only need one-way data.
GraphQL & REST
I usually reach for REST, but GraphQL makes sense when clients need flexible queries.
Frontend Development
React, TanStack, Next, Vue, Nuxt
React and Vue both. TanStack Start powers this site. SPAs, dashboards, e-commerce, static sites.
TypeScript & JavaScript
TypeScript everywhere now. The type safety catches bugs before they ship.
CSS & SCSS
Responsive layouts, design systems, and component styling. I own how the result looks as well as the markup behind it.
CSS Frameworks
Tailwind for most projects. Bootstrap, DaisyUI, Shadcn when they fit better.
Accessibility (WCAG 2.1/2.2)
ARIA, keyboard navigation, and screen reader support, backed by a W3C accessibility certification. I built AccessHawk and its open-source scan engine, A11yHawk.
Internationalization (i18n)
SereneReader ships in 13 languages with complete message coverage. Per-locale plural rules, date and currency formatting, and localized URL routing with browser language detection.
Vite & Modern Build Tooling
Vite on new work, Webpack on the enterprise codebases that still run it. Bundle splitting, tree shaking, build performance.
Apple Platform Development
Swift 6 & SwiftUI
Four apps on the App Store across iPhone, iPad, Mac, and Apple Watch, each built from one shared Swift codebase. Strict concurrency on from the first commit.
SwiftData & Offline-First Sync
Write to the local store, queue the mutation, and replay it when the network comes back, so the app keeps working offline.
WidgetKit & watchOS
Home-screen and lock-screen widgets, Watch apps, and complications, planned around the limited timeline refresh budget.
StoreKit 2
In-app purchase and entitlement handling, including universal purchase so one transaction covers iOS, macOS, and watchOS.
Xcode Cloud & App Review
Automated builds and TestFlight uploads. I've been through review on iOS, macOS, and watchOS, metadata rejections included.
Database & Cloud
SQL Server & MySQL
Schema design, stored procedures, and query tuning as tables grow.
MongoDB & Redis
MongoDB for document storage, Redis for caching and queues. Use both daily.
Supabase
PostgreSQL with a nice API layer. Good for projects that need auth and real-time without building it yourself.
Microsoft Azure
App Services, Functions, Storage, DevOps. Most of my enterprise work runs on Azure.
AWS & Cloud Architecture
EC2, S3, Lambda. I work in both AWS and Azure and pick based on what the project and the team already run.
Railway
Runs the production deployments for my own products. Git push to deploy, with managed Postgres, Redis, and cron.
Platform & Tooling
Docker & DevOps
Docker for local dev and production. GitHub Actions and Azure Pipelines for CI/CD. Kubernetes when the project needs it.
Playwright Browser Automation
Headless browser automation for screenshots, accessibility scanning, and testing. Powers the crawler in AccessHawk.
Turborepo & Monorepo Architecture
Turborepo with pnpm workspaces for shared packages and cached builds.
Cloudflare Security & CDN
WAF rules, caching, and DNS in front of every project I run.
Enterprise CMS
Umbraco Master Certified, Sitecore 10 Developer Certified. Years of enterprise CMS work, headless and traditional.
AI & Automation
Model Context Protocol (MCP)
MCP servers and proxy tools that let AI agents talk to existing systems. I've built integrations for Azure DevOps, databases, and internal APIs.
LLM Integration
Claude API, OpenRouter, and GPT. I route routine steps to cheaper models and save the expensive ones for the hard parts.
Workflow Automation
n8n workflows that connect AI agents to existing systems and data, so repetitive tasks run on their own.
Other Expertise
- ElasticSearch
- OAuth/JWT
- IIS & Apache
- PowerShell Automation
- Octopus Deploy
- Performance Optimization
- Test-Driven Development
- SEO Best Practices
- Agile / Scrum
Contact
Drop me a line. I read everything and reply within one business day.



