I live just outside Edinburgh (the capital city of Scotland) and work at the University of Edinburgh in the Centre for Communication Interface Research (CCIR). I am currently also working towards gaining a PhD in Usability Engineering.
I used to work for an American company called Analog Devices which designs and manufactures digital and analogue electronic equipment, as well as Digital Signal Processors (DSPs). Before that I worked for Edinburgh Portable Compilers, a small Edinburgh-based company which designed, wrote and sold compilers for various programming languages and operating systems (mainly UNIX variants). In 2000 it became a wholly-owned subsidiary of Analog Devices and the focus was shifted to write C and C++ compilers for the various ADI DSPs.
I started working at EPC immediately after obtaining my honours degree in Computer Science at Edinburgh University. My interests lie in operating systems and programming tools so this was an ideal working environment for me to apply my knowledge and learn more about the bits and pieces that most programmers and computer users know little or nothing about.
Writing compilers is a complex business that most people take for granted. The popular view is that once you have a lexer and a parser for a particular programming language then you are 90% of the way to having a compiler. However, modern compilers are required to perform more and more aggressive optimisations on user code, all of which require complex algorithms, and most of which are applied at the code-generator level. Add accurate debugging information generation, C++ exceptions and templates, inline assembler support and an efficient run-time library and you begin to see why writing and maintaining a compiler is not a solo effort!
I originally wrote the mpatrol library in my spare time with the intention of selling it to EPC as a comprehensive memory debugging solution for integration with their UNIX compilers. Unfortunately, EPC was taken over by ADI before it was finished and ADI had no use for such a library in their DSP toolchain. However, I still feel that it was worth the effort (not least because of all the knowledge of other operating systems that I gained whilst writing it), and I hope you do too!