Aug 2023 — PresentRemote
Current
Firmware engineer
Edge platform June 2026 – Present
Context
Greek law
requires renewable and cogeneration stations above 400 kW to be equipped so the
distribution operator, HEDNO, can supervise them and curtail or disconnect them when
network stability demands it, and a station cannot connect to the network until that
interface has been tested and certified.
The station does not answer to a single master. Curtailment can arrive
from four different parties over four different protocols, and the interesting part of the
work is not the translation but the arbitration: deciding whose instruction wins, how fast
it has to be honoured, and what happens when nothing is answering at all.
Responsibilities
- Upgrade the edge platform and take it through HEDNO certification for RES/CHP stations above 400 kW.
- Serve the distribution operator's SCADA over IEC 60870-5-104 as the single regulated
interface.
- Implement the RfG grid-code behaviours the operator can call on: LFSM-O, FSM and
LFSM-U.
- Accept curtailment from four separate parties, each over its own interface: HEDNO, the
aggregator (FoSE), the medium-voltage network operator, and the producer themselves.
- Resolve precedence when those four disagree, and define what the station does when none
of them are answering.
Technologies Used
- C
- Python
- Yocto
- Kunbus RevPi
- Linux
- IEC 60870-5-104
- IEC 61850 MMS
- Modbus TCP
- OPC XML-DA
- digital I/O
- MQTT
- mutual TLS
- SCADA
- Git
Edge platform August 2023 – August 2024
Context
The on-site platform connecting a distributed generation plant to the
outside world. One controller mediates between the operator above and the plant's own
equipment below, each piece of which speaks a different protocol.
Responsibilities
- Built the edge platform from requirements through to the production line.
- Built and maintained the Yocto platform: image and layers, OTA updates, device and
network configuration.
- Spoke Modbus to the inverters, IEC-61850 to the protection relay, OPC XML-DA to the
park controller and digital I/O to the breakers.
- Routed data to the cloud with a request-response scheme for executing commands on
site.
- Designed the commisioning process end to end via a dedicated tool.
- Built the internal tooling, device simulators and the hardware-in-the-loop platform.
Achievements
- Consolidated the plant's equipment behind a single upstream interface, so devices can
change without altering the contract toward the operator.
- Defined the fallback behaviour that holds the plant on its last settings when the
operator link drops.
Technologies Used
- C
- C#
- .NET
- Python
- Yocto
- Compute Module 4
- Modbus
- IEC 61850
- OPC XML-DA
- MQTT
- Protocol Buffers
- Redis
- Docker
- Linux
- Git
Jun 2025 — Jun 2026Stockholm
Firmware engineer
Context
Polarium Home is a residential battery energy storage system. It has to
coordinate a battery, an inverter and the grid safely and continuously in an unattended
domestic installation.
Responsibilities
- Developed the module that coordinates battery and inverter in Polarium Home.
- Built a Yocto-based controller for a proof-of-concept system coordinator.
- Integrated a new inverter supporting PV and grid services.
- Implemented pre-charge in the Battery Management System.
- Drove requirements definition and risk assessment with product and project
management.
Technologies Used
- C
- Go
- Python
- Yocto
- Compute Module 4
- ESP32-S3
- Modbus
- MQTT
- Protocol Buffers
- Git
Jan 2023 — Jun 2025Stockholm
Consulting software engineer
GetingeJanuary 2025 – June 2025
Context
Regression testing for a ventilator platform was largely manual, which
made it slow and therefore infrequent. The assignment was to replace it with an automated
framework covering both the hardware rig and the software driving it.
Responsibilities
- Led a team of five building the automated regression framework.
- Defined the architecture and built the core components, hardware and software alike.
- Built the cyber-security team's requirements into the test mechanisms and the firmware
update flow.
- Coordinated with the ventilator department that owned the product under test.
Achievements
- Reduced regression testing time by approximately 45% through full automation.
- Established acceptance criteria agreed jointly with the department owning the product
under test.
Technologies Used
- C++
- Python
- Linux
- Bash
- Linux networking
- GitLab
- Git
WittraJanuary 2024 – December 2024
Context
Wittra runs a low-power mesh of tracking tags coordinated by gateways from
the cloud.
Responsibilities
- Built on a Yocto-based distribution coordinating the mesh network from the cloud.
- Built remote software update for both gateway and STM32-based tag firmware.
- Routed data, capabilities and configuration to cloud and on-premises over MQTT and
gRPC.
- Worked across the radio stack: MIOTY, 6LoWPAN and Bluetooth LE.
- Implemented a 16-bit addressing scheme, cutting payload by approximately 25% across the
mesh.
- Mentored a summer intern to independent work on OTA firmware updates for gateway and
tags.
Technologies Used
- C
- Go
- Python
- Yocto
- Compute Module 4
- STM32
- MQTT
- gRPC
- Protocol Buffers
- MIOTY
- 6LoWPAN
- Bluetooth LE
- Git
ScaniaJanuary 2023 – December 2023
Context
Scania's Human Machine Interface controller is the driver-facing ECU in
the truck. Verifying it requires a hardware-in-the-loop rig that drives the real unit over
CAN and proves behaviour repeatably.
Responsibilities
- Defined the software architecture of an automated test framework for truck
electronics.
- Built the software side of a hardware-in-the-loop rig for the HMI controller.
- Implemented the communication module over CAN and J1939.
- Implemented authentication toward the Electronic Control Unit and automated report
generation.
- Onboarded incoming engineers onto the project and supported the Enablement team.
Technologies Used
- C++
- C#
- Python
- CANoe
- CAN
- J1939
- Git
Jun 2021 — Jan 2023Stockholm
Consulting software engineer
Cimon MedicalMay 2022 – January 2023
Context
A device tracking cerebral blood flow in infants. Clinical usefulness
depends on the readings reaching the equipment clinicians already watch, which means
integrating with both bedside monitors and hospital record systems.
Responsibilities
- Owned the communication module of the blood-flow tracker.
- Implemented RS232 drivers for real-time export to bedside monitors such as Philips.
- Built the data export module between the tracker and Hospital Information Systems.
- Fixed defects across the internal communication and external authentication
services.
Achievements
- Put the device's readings in front of clinicians on equipment they already use.
- Connected the tracker to Hospital Information Systems, moving it from a standalone
instrument to part of the patient record.
Technologies Used
- C
- C#
- .NET Framework
- RS232
- Redis
- MQTT
- Docker
- Azure DevOps
- Git
ImagineCareJune 2021 – May 2022
Context
A remote healthcare platform built as distributed, event-driven
microservices. Patient data put the deployment under GDPR constraints, which ruled out a
straightforward public-cloud setup.
Responsibilities
- Built distributed, event-driven microservices for the platform.
- Developed the core workflow engine and the authentication service.
- Ran on-premises cluster management to keep the deployment GDPR-compliant.
Achievements
- Improved end-to-end request handling by approximately 200%.
- Kept the platform GDPR-compliant on on-premises infrastructure.
Technologies Used
- C#
- .NET Framework
- PostgreSQL
- Kubernetes
- Docker
- Prometheus
- MQTT
- Azure DevOps
- Git
May 2021 — Aug 2021Athens
Research software engineer
Context
Research on embedded software for low-power networks and IoT, carried out
on Dialog's SDK and flagship development board.
Responsibilities
- Implemented a Bluetooth LE profile for sensor interaction with a thermometer and a
gyroscope.
- Handled sensor I/O over SPI under FreeRTOS.
Technologies Used
- C
- Python
- Bluetooth LE
- SPI
- FreeRTOS
- DA14695/DA14685
- Git
Oct 2020 — May 2022Co-founder
Stealth Startup
Software engineer & co-founder
Context
A platform presenting blockchain wallet, contract and transaction data
alongside market and news context. Public explorers were slow and expensive to query at the
granularity we needed, so we built the data layer ourselves.
Responsibilities
- Implemented a version of the Ethereum runtime as a Go library, removing the database it
depends on so microservices could consume it directly.
- Designed an aggregate-oriented data model around wallets, contracts and transactions.
- Built a service integrating centralised exchanges for real-time market data.
- Built a news ingestion service running four times daily, presented alongside the chain
data.
- Shared technical direction and scope planning with my co-founder.
Achievements
- Reduced compute cost and latency relative to querying public infrastructure.
- Produced data representations frequently more accurate than standard explorers such as
Etherscan.
Technologies Used
- Go
- go-ethereum
- PostgreSQL
- GORM
- gRPC
- GitHub Workflows
- Git
Jan 2020 — May 2021Stockholm
Software engineer
Context
A domain and DNS management platform. Its API is internet-facing by
definition, so correctness against registry standards and resilience against abuse were the
governing constraints.
Responsibilities
- Developed the core API for DNS checks against IANA standards.
- Implemented CSRF protection and request rate limiting.
- Built mitigation against exploits and DDoS traffic.
Technologies Used
- Python
- Flask
- OpenAPI
- Redis
- Git
May 2019 — Aug 2019Athens
Embedded software engineer, intern
Context
First professional exposure to embedded development, on an active project
within the applications development team.
Responsibilities
- Joined the applications development team on an active project.
- Studied the Bluetooth Low Energy application and host layers in depth.
- Focused on real-time operating systems and the embedded development workflow.
Technologies Used
- C
- Python
- Bluetooth LE
- FreeRTOS
- DA14695/DA14685
- Git