David R. MacIver
Me
I'm a data geek with a strong background in mathematics and software engineering. I did a masters degree in mathematics, then reinvented myself as a software engineer. Since then I've worked on a variety of projects, but these days I'm most interested in data analysis on large bodies of unstructured information and helping people cope with the information fire-hose.
Employment
Researcher, Autarch of Algorithms and de facto Head of Development for Aframe (February 2010 to Present)
I started out at Aframe two days a week working on some maths for them - primarily centered around recommendation - but through a distressing inability to conceal competence ended up working on more and more areas and acquiring more and more responsibilities - first I ended up working on upgrading the feature set of one of the existing RabbitMQ ruby clients, then I ended up answering everyone's questions about everything, then I ended up taking over various parts of the system that needed improvement. At the time of this writing I have the second highest number of git commits and have mostly given up on asking people not to call me the head of development.
Engineer for LShift working on RabbitMQ (December 2009 to March 2010)
I mostly worked on the client libraries: primarily the Java one, but also the Erlang and C# ones. I worked on cleaning up the API, fixing bugs and improving performance. I did occasionally touch the server code, but didn't do very much with it.
Statistical Contracting for Wordtracker (June 2009 to November 2009)
Just a bit of part time work helping Wordtracker analyze their data about search - investigating user search behaviours and the quality of different metrics.
Engineer and Researcher for Trampoline Systems (August 2007 to September 2009)
My most important role at Trampoline has been as the primary researcher and implementer of SONAR, which does natural language processing and social network analysis on corporate email and document systems. I made the system simpler to understand, produce higher quality results and scale more effectively. I learned a lot working on it, both in terms of specific theoretical tools and the practical side of building such systems (such as when not to trust computer science researchers claims...).
Prior to that I worked on our social network visualisation software. We developed Metascope, a tool for ONA consultants to help them better work with their survey data, in tandem with a partner company. They report that it has simplified their work flow immensely. We then built SONAR Expertise, which takes the ideas and technology of Metascope and integrates them with SONAR to provide a high level visualisation of a company's social structure.
Engineer for Softwire (February 2006 to July 2007)
This was my first job in software. While there, I worked with others on several projects for different clients. I picked things up pretty quickly, initially starting with front end work then moving into a mix of back end and front end work as I learned more. The laundry list of tech is fairly standard stuff for a Java shop: Spring, Hibernate, iBatis, Oracle, JBoss, etc. I always worked in teams while there and was often responsible for helping out new starters on a team. By the end of it I had been given responsibility over several key parts of projects, including the statistics reporting subsystem for an ePublishing site, the security model for the same and a UI redesign for an internal data inventory system for a public safety provider.
Education
Pembroke College, University of Cambridge (2001 - 2005)
I did my degree in mathematics. I received Class I Honours in my BA and Merit in my Part III (equivalent to an MA)
Fun Facts
Tech
- I'm a bit of a programming languages geek. I mostly write Ruby at the moment, but I'm using C increasingly often. In the past I've written a lot of Java, Haskell, R and Scala. I still use Haskell and Java on occasion and remain fairly proficient, but it's no longer a regular occurrence. I'm sure I could pick Scala and R up again with relatively little difficulty, but haven't felt so inclined recently. I use bash, awk and sed constantly but not to any great depth. I've also used and tinkered around with a pile of other languages, but not to a degree where it's interesting to comment on specific ones.
- I've written far more SQL than I'd care to admit. I primarily use PostgreSQL these days, but have used MySQL and Oracle extensively in the past.
- For some time I was an external maintainer for the Scala compiler and standard library. I primarily did bug fixing, but worked on a fair bit of code cleanup and contributed to the design and implementation of the collections API.
- I write a lot of open source code. Much of it isn't very useful, but I tinker constantly and believe open sourcing it is the right default. You can see some of it at my github page
Non-tech
- I have often tutored mathematics. A part time job during university which I occasionally continue.
- My flat looks like a library. I read a lot: Mainly fiction, but with a decent mix of computer science, mathematics and general non-fiction.
- I write extensively. People even seem to read it. Programming, micro-fiction, cooking and general musings, mostly published on my blog.
- I cook elaborately. Cooking is the closest I get to playing mad scientist these days. I'm love to experiment with variations and ideas for new recipes.
- I'm a professionally trained massage therapist, although I'm not licensed to practise.
- I'm a dual citizen, American and British, so free to work pretty much anywhere in the USA or EU.