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.

At work · 4 In the field · 7

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

The assembled greenhouse control panel
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?

Email me Back to the story