Senior Software Engineer | Raleigh, NC
Backend engineer with 10+ years building distributed, asynchronous systems, mostly in Python with some Go and Java. I work on the server side: event pipelines, task queues, cache layers, and the concurrency and backpressure controls that keep them correct under load.
Right now I build B2B backend services for a network of RF sensors that produces 100k+ events a day, running on ECS and EKS with Terraform on AWS. Day to day that means asyncio and FastAPI services, Celery workers on SQS with retry and dead-letter queues, Kafka consumers, Redis/Valkey and Memcached for caching, DynamoDB for high-write access patterns, and Elasticsearch/OpenSearch for search and event indexing at that volume.
I spent a good chunk of those years in React and TypeScript, so I can own a feature end to end. The problems I go looking for are the distributed ones, though. Outside of work I write Home Assistant integrations and cards and run a self-hosted home lab.
Languages │ Python, Go, TypeScript, Java, SQL
Distributed & Async │ asyncio, Celery, AWS SQS, Kafka
Caching & Search │ Redis/Valkey, Memcached, Elasticsearch/OpenSearch
Data Stores │ PostgreSQL, MySQL, DynamoDB, InfluxDB
Services & APIs │ FastAPI, Django, Flask, NestJS, OpenAPI/Swagger
Infrastructure │ Docker, AWS ECS & EKS, Terraform, GitHub Actions, Prometheus
Testing │ Pytest, Playwright, Jest, React Testing Library
Frontend │ React, Redux, TypeScript, Angular, Tailwind, Storybook
Home Assistant Ecosystem
| Project | Description | Stars |
|---|---|---|
| ac-infinity-airtap-ble | Local BLE control of AC Infinity AirTap register vents from Home Assistant. Sets fan speed and temperature without the vendor cloud | |
| calendar-card | Google Calendar card for Lovelace UI (archived) | |
| fitbit-card | Fitbit health metrics dashboard card | |
| FrigateClassifier | Dog breed and bird species classification for Frigate detections | |
| ha-our-groceries | Our Groceries shopping list integration (archived) | |
| harmony-remote-card | Logitech Harmony Hub remote-control card for Lovelace | |
| irrigation_manager | Scheduled watering for valve and switch entities in Home Assistant. Conditions on rain, forecast, temperature, wind, moisture and occupancy, plus a sidebar panel | |
| light-entity-card | Card for controlling any light or switch entity | |
| orbit-bhyve-ble | Local BLE control of Orbit B-Hyve sprinkler timers from Home Assistant. Works without the cloud after setup | |
| soil-temp | HACS integration exposing soil temperature and moisture sensors via ClearAPI | |
| tracking-number-card | Display package tracking information | |
| tracking-numbers | Home Assistant integration that pulls tracking numbers from 40+ shipping providers | |
| utilities_email_tracker | Polls IMAP and parses utility-bill emails into a Home Assistant sensor | |
| utilities_email_tracker_card | Lovelace card for displaying parsed utility-bill emails |
| Project | Description | Language |
|---|---|---|
| billy-bass | Sound-reactive Big Mouth Billy Bass on an Arduino Uno and Adafruit Motor Shield v2. A microphone module drives the mouth, head, and tail | C++ |
| checkpoint-pihole | Web application for backing up Pi-hole v6 instances via the Teleporter API | Python |
| cradlewise-rtsp-bridge | Turns every Cradlewise Smart Crib on an account into a local RTSP stream for Frigate, Blue Iris, Scrypted, or any other NVR. Holds one WebRTC subscriber per crib and feeds it into mediamtx | Python |
| FlowHistory | Backup and restore tool for Node-RED flow files, with scheduled backups, visual diffs, multi-instance support, and notifications | Python |
| frigate_plate_recognizer | License plate recognition integration for Frigate NVR | Python |
| latchpoint | Self-hosted alarm system that integrates with Home Assistant, MQTT, Z-Wave JS, and Frigate. Includes a rules engine for automated responses and live status updates | Python |
| nodered-mcp | MCP server for reading, querying, and editing a Node-RED flows.json. Canvas aware, with a layout gate that refuses edits that would collide with existing nodes or groups | Python |
| py-our-groceries | Unofficial async Python client for the Our Groceries shopping list API, published to PyPI as ourgroceries. Powers the Home Assistant Our Groceries integration |
Python |
| unifi_firmware | Weekly scraper and web UI for UniFi firmware releases. Reads the download JSON backend directly, groups releases by device, and stores everything in SQLite | Python |
| wifi-shepard | Docker daemon that watches a wireless network and re-roams misbehaving 2.4 GHz IoT clients across APs through a brand-agnostic controller interface, UniFi first | Python |
| Project | Description |
|---|---|
| rsync-exporter | Export rsync statistics to Prometheus |
| snapraid-collector | Prometheus metrics exporter for SnapRAID |
Most of my open source work is in the Home Assistant ecosystem. That includes integrations for third-party services, Lovelace cards for dashboards, and a few tools around Frigate NVR for license plate recognition and object classification.
-
Senior Software Engineer @ Epiq Solutions (2022 - 2024)
- Full-stack development with React, TypeScript, Python, and Go
- Kubernetes cluster management and AWS infrastructure with Terraform
- Led JavaScript to TypeScript migration and modernized build tooling
-
Senior Software Engineer @ Vaco (2019 - 2022)
- Built donation platform processing $1B+ annually
- Implemented canary release management and E2E testing with Playwright
-
Software Engineer @ AT&T (2016 - 2019)
- Led application modernization from legacy stack to React and Python
- Built developer productivity tools integrating Jira and Bitbucket APIs
B.S. Electrical Engineering - University of South Carolina







