I'm a Senior Software Developer with a deep focus on Embedded Systems and software development. My career spans nearly three decades, from the early days of PIC assembly to modern C/C++ on ARM Cortex-M microcontrollers.
I specialize in agricultural and industrial automation, building robust firmware and communication stacks for environments where reliability is not optional. My work regularly involves CAN-based protocols at the hardware-software boundary — where bugs have physical consequences.
When I'm not deep in register-level debugging, I enjoy building open-source simulation tools for the embedded community and mentoring developers entering the systems programming world.
void readImuData(void* arg) { ImuSensor* sensor = static_cast<ImuSensor*>(arg); while(1) { if (sensor->isDataReady()) { uint8_t buffer[64]; sensor->readRegisters(buffer); xSemaphoreTake(sensor->mutex, portMAX_DELAY); memcpy(sensor->sharedBuffer, buffer, 64); xSemaphoreGive(sensor->mutex); sensor->notifySubscribers(); } vTaskDelay(pdMS_TO_TICKS(10)); } }
Leading firmware architecture and protocol stack development for ISOBUS-compliant agricultural machinery. Designed and implemented ISO 11783 / SAE J1939 communication layers, device drivers for CAN-bus peripherals, and field-proven RTOS integrations on ARM Cortex-M platforms.
Developed firmware and communication drivers for industrial control systems. Worked with Modbus, RS-485, and TCP/UDP networks. Implemented robust HAL layers and bare-metal drivers for Microchip and Atmel microcontrollers.
Started programming in Clipper and Pascal. Progressively moved through Delphi, C, and early web technologies. Built desktop applications, database tools, and early embedded projects — laying the foundation for a deep systems-level career.
Utilities for decoding, monitoring, and simulating CAN traffic. Supports J1939 PGN parsing, DBC file loading, and live frame inspection over PCAN and SocketCAN adapters.
A collection of hardware-agnostic device drivers in C for sensors, displays, and communication modules. Targets STM32 and ESP32 platforms with HAL and bare-metal variants.
Experimental J1939 and ISOBUS (ISO 11783) protocol stacks, designed for embedded targets with a minimal footprint and easy portability across MCU families.
Interested in working together, discussing embedded systems, or just saying hi? Reach out through any of the channels below.
Race Condition Risk:
notifySubscribers()is called outside the mutex lock. Subscribers might start readingsharedBufferwhile another thread modifies it.