Chronologically, ElecEng grad/honours, PhD in EE/CompSci (concurrency and parallelism), postdoctoral research (parallel language design), and finally university lecturer in EE/CompSci for several years. Then left UK academia to work in industry with many clients as a freelance contractor.
Very diverse roles in computing: analyst, designer, programmer, systems architect, QA, technical author, and sysadmin, in subjects including kernel, comms, drivers, defence, cryptography, engineering support applications (eg. RF power density displays), GUIs, firewall design and management, network monitoring and alerts, automating server farm operation, and multi-year ISP involvement with scalability of services from 64k to 3m users.
I'm UK-based, and hate the miserable weather.
Almost completely technical, by education, experience, interest and predisposition, and with a strong belief in professional responsibility within science and engineering.
Unix-based by preference and very long experience, ever since Bell Labs sent me the source tapes and I took up residence on a PDP-11/34. I think that was somewhere around the Late Jurassic period.
Language agnostic, used far too many from all the major paradigms to be tied to just one, and created several from scratch in passing. The language is not the problem anyway, just a tool with limited scope, so mix'n'match them to meet requirements.
System design should never be driven by choice of language, but the other way around.
Sensible engineers know better than to make a car out of all-rubber or all-steel. Software engineering is no different.
In computing, I take a strong, component-oriented engineering line: if you are language-centric and are in denial about interoperation between components from multiple parties written in different languages, then you're not part of the solution but part of the problem.
I am strongly pro-FOSS, but abhor the balkanization of open projects by language, license religion or corporate interests. All systems must interoperate, and all server systems must federate. The closed, non-federating enclaves operated by Facebook, Google, Amazon, Apple and others are an abomination, and the opposite of an open, fully interoperating Internet.
- Hardware areas: ARM boards and devices, AVR/Arduino, MSP430, FPGAs and CPLDs, 3D printing.
- ARM Microcontrollers:
- ARM Application processors:
- Software areas: virtual worlds, scalability, open architectures, extensibility, overcoming The Software Crisis.
- Languages I recommend: C, Erlang, Lua, because they interoperate well. (C++ has no place in a sane engineer's toolkit.)
- Non-computing interests include many hard sciences and engineering disciplines, especially nanotechnology and its related areas, as well as astronomy and astrophysics, and climatology.
- Ex-member of IEE and IEEE, ex-radio amateur, ex hang glider, ex guitar player wannabe, and now enthusiastically into MIDI.
- Long-term transhumanist, which loosely summarizes as being interested only in tomorrow, and shedding prior constraints every midnight. Virtual worlds fit in perfectly.
- Entertainment: MMOs (Guild Wars 2), SciFi (Banks, Heinlein), Creative Commons music (Jamendo). Absolutely no TV.