Building a robust cellular tech stack: a case story
My talk at Onomondo's summit on how I helped build and run Agurotech's sensor network, from bad rural coverage to getting the data where it needs to be.
Where I've worked, and what I'm building on the side. Most of it comes back to the same thing: knowing what a device will do before it's out in the field.
Founding engineer · 2026 – now
I'm a founding engineer at Schematik, an AI hardware IDE: you describe what you want to build and get code, wiring and step-by-step instructions for Arduino, ESP32 and Pico. I focus on simulation, firmware compilation and CAD.
Building AI tools for hardware means I use them every day in my own firmware work too. I know where they speed things up and where a device in the field still needs an engineer.
Tech Lead · Sep 2021 – May 2026
At Agurotech I helped grow a network of farm sensors from about 50 LoRa based sensors to thousands, powered by NB-IoT, LTE-M and 2G, in rural areas with poor coverage.
I worked on the complete product development cycle. I wrote the firmware myself, led the hardware team on electronics and housing, ran assembly in-house and did the field work. I spent days in muddy fields figuring out why a sensor had gone quiet and logging network traces.
I've rolled out devices in the US, Latin America, Europe, North Africa, South Africa and New Zealand. Your firmware does not automatically work on every network, and I know which setups work where, and why.
Part of that was moving the fleet from LoRa to cellular, keeping the existing devices running while the new ones rolled out.
My talk at Onomondo's summit on how I helped build and run Agurotech's sensor network, from bad rural coverage to getting the data where it needs to be.
Peer-reviewed research on making farm sensors use less energy when they send data: CoAP over UDP on Zephyr, measured for energy, latency and overhead. I co-authored it at Agurotech with Efraim P. N. Manurung, Kwabenna Bennin and Derek Kwaku Pobi Asiedu.
LwM2M is the standard way to manage cellular IoT devices, but the server side is thin. I'm building an open-source LwM2M 1.2 server and bootstrap server that follows the standard to the letter. Every requirement in the spec is tracked and claimed by a test: 265 of 273 are proven so far. It passes all 66 of Zephyr's LwM2M interop tests, and Anjay and Wakaama run against it in CI.
A circuit simulator that runs in Node.js or straight in the browser, with nothing to install. It reads standard SPICE netlists and runs DC operating point, DC sweep, transient and AC analysis, with models from resistors up to BSIM3 MOSFETs, plus subcircuits and process-corner libraries.
The solver is a sparse LU written for it, benchmarked against ngspice in WebAssembly; it keeps up on DC, AC and nonlinear circuits. Results can stream while a sweep runs, which is what makes the interactive demos work. It's on npm as @spice-ts/core.
Runs real, unmodified ESP32 firmware without the hardware. It boots the actual ROM and bootloader, then FreeRTOS and the app, on the ESP32-S3 and on the RISC-V C3 and C6. Wi-Fi goes through a virtual access point out to the real network, so firmware can be tested before there's a board on the desk.
I work on the peripherals: I2C, I2S microphone input and audio streams, BLE scanning and connections on the C3, SHA DMA and Wi-Fi crypto on the C3 and C6, and RMT and LED output over DMA.
2 of 3 client spots open
Want to know more about any of this? Send me a message.