I started programming in 1980 with and in the first years, I gained a lot of experience using UCSD pascal on an Apple ][ and Z80 assembly stand alone as well as on CP/M.
In 1988, I learned C and UNIX on a National Semiconductors ICM 332-2 running Genix. Despite writing user level code, I also wrote device drivers for that system.
Later, at University, I used SunOS (and Solaris) and learned X11 programming with athena widgets and with Motif. I also took care on a pool of about 25 sun boxes and kept them up to date.
I also used OS-9 (real time OS for embedded systems) and learned how to write device drivers and file managers for it.
In 1996 I started using Linux, which was not such a big change, when having used Solaris earlier.
From 2003 on, I was programming PLC systems, mainly Siemens S7 and at the end of that decade, I did a project using Windows CE on a headless system, where I also designed the hardware and programmable logic in verilog.
Since 2012, I am working on Windows and embedded linux systems, once again doing user and kernel code on linux.