Work

Four problems, and what solving them changed

Each one starts with a plain-language summary of what it does and why a business should care, then goes into the design decision, the trade-off I accepted and the measurable result. Read the first section or the whole thing - both work.

  • 4 case studies
  • 33 technologies
  • 5 disciplines

Read the ECamp case study
AIlive2025 - Present

ECamp

Sends hundreds of thousands of emails without wrecking the sender's reputation - and lets you manage contacts by talking to it.

  • Never twiceno recipient double-emailed on retry
  • Pause / resumestop a campaign mid-flight
  • 3 layersof pacing protecting sender reputation
  • Python
  • Django
  • DRF
  • Celery
  • Redis
  • +9
Read the case studySourceLive
Read the ZKTeco LAN Agent case study
DevOpsmaintained2025 - Present

ZKTeco LAN Agent

Removed a hardware purchase from the sales conversation - old fingerprint terminals now work with a cloud product.

  • No new hardwarecustomers keep the devices they own
  • Never lostattendance survives internet outages
  • Never doubleda resend cannot inflate payroll
  • Python
  • Poetry
  • PyPI
  • ZKTeco SDK
  • ADMS HTTP
  • +4
Read the case studySourcePyPI
Read the Data Preprocessors case study
Engineeringmaintained2022 - Present

Data Preprocessors

A public Python package other developers install - and the release process that makes it safe to depend on.

  • 1 commandis the entire release process
  • 3 channelspublished from one workflow
  • Automatedversion numbers and release notes
  • Python
  • Poetry
  • PyPI
  • Docker
  • GitHub Actions
  • +1
Read the case studySourcePyPI
Not on this page

Client and internal work I cannot publish

Attendance and payroll engines that replaced manual timesheets, messaging infrastructure across email, push, SMS and WhatsApp, payment and sign-in integrations, and the monolith-to-services migration I am leading now. I can walk through the architecture and the outcomes of any of it in a conversation, without the client-identifying detail.

Ask me about it