A selection of client and internal projects that show how I work.
Real-time monitoring and alerting for a power-distribution network operations centre. Reduced incident response time by 40%.
Built a custom dashboard aggregating SNMP traps, syslog feeds, and environmental sensor data. Integrated with PagerDuty for on-call escalation and provided historical trend analysis for capacity planning. The system monitors over 800 network devices in real time.
Event-driven orchestration system for a logistics company, replacing brittle cron jobs and manual hand-offs.
Designed and built a lightweight workflow engine that listens for domain events, routes tasks to the right handler, and tracks execution state. Replaced 30+ fragile cron scripts with a single observable system. Includes a web UI for ops teams to inspect and retry failed tasks.
Middleware connecting a legacy ERP system to modern APIs, enabling real-time inventory and order tracking.
Built a translation layer that maps legacy ERP data models to clean REST and event-driven APIs. Enabled the client's mobile app and e-commerce platform to consume real-time inventory data without modifying the core ERP. Processes over 50,000 transactions per day with sub-second latency.
Designed and deployed enterprise wireless across a multi-building manufacturing campus with challenging RF environments.
Conducted full predictive and validation site surveys across six buildings including a foundry and paint shop. Designed antenna placement to account for metal racks, moving forklifts, and high-temperature zones. Delivered seamless roaming for handheld scanners and VoIP handsets with 99.9% uptime.
Rebuilt a fragile Jenkins setup into a modern, containerised pipeline with automated testing and deployment gates.
Migrated 12 microservices from a single Jenkins instance to GitHub Actions with reusable workflows, ephemeral build runners, and Terraform-managed infrastructure. Added automated integration tests, security scanning, and canary deployments. Average deploy time dropped from 45 minutes to 8 minutes.