Embedded software
I started with the software on the devices themselves: realtime and kernel drivers, device APIs, data streaming and firmware updates in C and C++. Part of this was splitting a monolithic application into smaller processes.
Browser as interface
As architect I defined company-wide protocols for data streaming, system updates and push-based RPC. This made it possible to operate devices from a web browser, even on hardware with very limited memory.
Engineering practice
I introduced pull-request-based development, code reviews and continuous integration with quality metrics.