Background and Worldview
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.
Unix-based by preference and 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 and license religion. All systems must interoperate.
- Hardware areas: ARM microcontrollers and application processors, Arduino, FPGAs, 3D printing.
- ARM Hardware owned: BeagleBone, STM32F4-Discovery, Olimexino-STM32. NSLU2, Stellaris LM3S811 and at long last, Raspberry Pi.
- 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.)
- Entertainment: MMOs (Guild Wars), SciFi (Banks, Heinlein), Creative Commons music (Jamendo). Absolutely no TV.
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. I'm a long-term transhumanist, which loosely summarizes as being interested only in tomorrow, and shedding prior constraints every midnight. Virtual worlds fit in perfectly.
I'm UK-based, and hate the miserable weather.