ALL PROJECTS
Every project started with something that didn't work.
Here are eleven of them — the problem, what I built, and what changed. Four come from my QA work at IDEMIA; seven are IoT and hardware builds with my team.
PART ONE
At work: tools that fixed slow testing
Internal IDEMIA tools · I can describe them publicly, but the source code stays private.
NVM Endurance Automation
The problem. SIM endurance tests needed a person to cycle modems by hand for hours.
What I built. A Python tool that drives the modem over AT commands for 24 hours: 5G auth, hourly 4G switch, reset every four hours.
What changed. Tests now run overnight and on weekends. It's used in about 90% of NVM projects.
Python · pyserial · AT commands
eUICC Provisioning Tool
The problem. Provisioning eSIM profiles meant hand-editing XML in SOAP UI and copying transaction IDs between calls.
What I built. A Django app with one-click create → provision → commit on SM-DP, AID management on SM-SR and guard rails.
What changed. It's now the team's main way to provision ICCIDs.
Django · PostgreSQL · SOAP / REST · LDAP
Read the write-up →
OBTANA Web
The problem. Sending an OTA SMS update required a 2G handset at your desk — and there weren't enough.
What I built. A web service with handsets on the server, one MQTT topic per handset and a Redis queue for busy moments.
What changed. Any tester can send OTA updates from any desk.
Flask · MQTT · Redis · MongoDB
Read the write-up →
NVM Script Editor
The problem. Turning a COMPRION log into a runnable test script took one to two days of manual work.
What I built. A Streamlit tool that converts logs to .pcom scripts, checks the M2M flow and applies TLS-PSK edits.
What changed. The same job now takes minutes.
Streamlit · LDAPS · Docker
Read the write-up →
PART TWO
In the field: things that run in the real world
FEATURED · CLIENT PROJECT · 2024
Smart Greenhouse Subang
The problem. Farmers' automation went dark whenever the internet dropped, and nothing measured light or CO2.
What I built. As project lead: a control panel with manual fallback and a network watchdog, a CO2 + light sensor node, and a motorized shading net. I designed the panel and co-wrote both firmwares.
What changed. It runs at five greenhouse locations today, used by farmers every day.
ESP32 · FreeRTOS · custom TCP protocol · Telegram
Read the write-up →
CLIENT · PROJECT LEAD
Voltage & Current Monitor
Sixteen power sensor lines flowing into a live dashboard with filtering, CSV export and over-current alerts on Telegram. Passed 12 functional and 9 edge-case tests.
MQTT · MongoDB · Dash/Plotly
Read the write-up →Read the write-up →
CLIENT PROTOTYPE · LEAD
BLE Device Tracker
A Raspberry Pi that notices registered BLE devices coming and going, counts them per minute and reports to a server. Passing with three devices at once.
Raspberry Pi · Python · FTP · repo
Read the write-up →
TEAM R&D · HARDWARE
Smart Plug
My own ESP32-C3 schematic and PCB, with relay control, power metering and phone-based quick pairing. Built so the team could practice real hardware work.
ESP32-C3 · ESP-IDF · MQTT/TLS
PERSONAL · WITH A TEAMMATE
Flood & Tank Monitor
A touch panel at home that shows flood and water-tank levels every ten seconds — running with a real tank and flood spot.
ESP32-P4 · LVGL · MQTT
Read the write-up →Read the write-up →
TEAM R&D · HARDWARE ENGINEER
Eye-Beacon
A six-person research prototype that counts people and recognizes staff by phone beacon. I built the device: PCB, camera and enclosure.
Pi Zero 2W · custom PCB · BLE
OPEN SOURCE · SOLO
EspOTAUpdate
Updating devices in the field shouldn't need a trip. Bump the version, push, and ESP32s fetch new firmware from GitHub Pages.
ESP32 · GitHub Pages · repo
What would we build next?