I have designed firmware, application software, board-level and ASIC hardware design including simulation, synthesis and test pattern generation over many years. Learned more than 50 programming languages an probably as many hardware environments. I've also had experience designing EDA tools to help project when commercial tools didn't exist.
Currently teach engineers/programmers full-time in the private sector. Topics such as embedded C/C++, SystemC, SystemVerilog, UVM, TLM and ARM processor (all types) architecture for software design.