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-nest-protect-plus | Nest Protect, Nest Temperature Sensor and Nest x Yale lock integration for Home Assistant. Signs in with a long-lived Google master token so it doesn't need re-authenticating | |
| ha-our-groceries | Our Groceries shopping list integration (archived) | |
| harmony-remote-card | Logitech Harmony Hub remote-control card for Lovelace | |
| homepass | Home Assistant add-on serving time-limited guest links that control a chosen set of entities, with no HA account for the guest. Optional per-token PIN, scheduled start times, and a per-entity proximity requirement | |
| 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 | |
| zwave-multicast-group | Groups Z-Wave JS covers, lights, switches or fans in Home Assistant and commands them with one multicast frame, so they start together instead of a second apart |
| 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 |
| Hypernova | Drive Claude Code agents on your own Linux server from an Android phone. Approve, answer, start and follow sessions over your local network or VPN, with no cloud service in between, across several servers at once | Kotlin, TypeScript |
| 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 |
| prompt-spellcheck | Claude Code plugin that fixes spelling and typos in each typed prompt with Haiku before the model reads it. Leaves code, paths and commands alone, and toggles with /spellcheck on|off |
TypeScript |
| 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







