I am a prolific open source developer, creating projects using many technologies, from Android, Python, Java, Elm, C/Gtk+ and PHP/MySQL to .deb and RPM packaging. Along with the large number of open source projects I have founded, I have contributed to the Loki template metaprogramming library introduced in the book Modern C++ Design by Andrei Alexandrescu, among several other projects.
I am buzzword-compliant with real-world Cloud, Agile and Scrum experience. The buzzword I am really excited about is test-driven development, or perhaps behaviour-driven design - I practise it in my work and open source projects.
October 2018 - present, OpenMarket
Continuing my close involvement with SMS delivery, but taking on wider responsibility for guiding strategy for the whole SMS group, and working to complete the work of replacing the legacy system with our new highly-available and performant platform.
June 2016 - October 2018, OpenMarket
Leading development at the team at OpenMarket that owns the global SMS delivery product, which reliably delivers billions of messages per month all over the world to and from very varied customers and suppliers.
I joined when a prototype of a new highly-available system was in production but not performing reliably. Under my influence we established proper system testing and worked out the bugs to the point where the new system is more reliable than its legacy partner (which we also own).
The new system is truly highly-available, and working out the bugs in the complex emergent behaviours of a distributed system is where my attention was applied, combined with the low-level considerations of how kernel, OS and application interact to utilise network and other resources. Often these two worlds collide, so we were investigating how networking and IO details were impacting flow of messages over the globally-distributed network.
This is a true DevOps team, writing code in Java and Python and also managing deployment and real-time support, especially when things go wrong.
August 2014 - June 2016, IBM, UK Watson Analytics
As our project expanded and combined with several other IBM products, we were able to find a real manager and I was able to settle into my natural role as a leader-by-example for the UK Watson Analytics team.
I continue to lead work in key areas including implementing the cloud storage service shared among all components of the product, designing and implementing several REST APIs, and being the lead for core areas such as the key object models.
I am a vocal advocate for improving our testing skills (see e.g. my article in the Overload journal on this topic), preserving the RESTful semantics of our APIs, and keeping core logic simple and expressive.
I use the weekly technical talks I give to research and learn about new technologies, talking on topics such as Elm, REST APIs, node.js, git, Docker and Vim.
I have received the top rating in my last three performance reviews.
Quotes from my managers:
August 2013 - August 2014, IBM, Interactive Discovery project
In August 2013 I raised the need of the UK team to receive more detailed feedback, and to have a UK contact with whom they could discuss their own performance and give their own feedback on the project and leadership. I was given the role of Team Mentor to try and fill this gap.
Staying in an almost purely technical role gave me the programming work I love, and made me well-placed to mentor colleagues through project and technical issues.
I gave weekly technical talks for our team and others, and received the top rating in my performance reviews.
Quote from my manager:
2012 - 2013, IBM, Interactive Discovery project
I led development of significant features including:
I have been an influential advocate for test-driven development and high code quality. The team has gone from no tests, to most developers writing tests first, partly due to my influence.
In a geograpically-separated project I have been the key contact point into our team for those in other locations.
2011-2012, IBM, Adaptive Warehouse project
When my manager became unavailable I was asked to take on management of our team. I did my best to throw myself into the role, and enjoyed mentoring and working with people to help them achieve their goals. I did not enjoy the significant administrative burden imposed on those who hold this role at IBM, and I was frustrated not to have time to write code, which is my first love.
I received the top rating for the year I spent in this role, and overwhelmingly positive feedback from a 360-degree survey I commissioned, but never took to the role and worked to get myself back into programming.
2009-2011, IBM/Cognos, Adaptive Warehouse project
As I emerged as a leading figure in our team I was given the Team Leader role, and helped organise work as ScrumMaster. The majority of my time was spent programming and designing code.
Adaptive Warehouse is a large C++ application designed to make data warehouse design accessible to non-experts.
I took leadership of several pieces of work:
Through this role I have gained skills in C++ and the Standard Template Library (STL), Python, Object-Oriented design and Design Patterns, as well as debugging on Windows and Unix, XML, C#/.NET, Perforce and SQL databases including MS SQL Server, Oracle and DB2.
I succeeded in changing the culture of our team to adopt test-driven development, and a focus on medium-term and long-term goals through writing better, more maintainable code. Under my leadership we consistently delivered on our commitments, whereas previously we frequently performed below expectations.
2005-2009, Cognos, Adaptive Warehouse project
In my time at Cognos I was promoted 5 times in 5 years, through several software engineer job titles.
I worked on many areas of Adaptive Warehouse, and led several features, including:
2001 - present, spare time project
FreeGuide is my largest open source project: a TV guide implemented in Java/Swing and Perl. It has been downloaded over 250,000 times since the project was started. It is packaged for and widely used on both Linux and Windows platforms.
2015 - present, spare time project
Rabbit Escape takes up most of my spare time recently: a native Android game that is a bit like classic Lemmings game, but updated for a smooth touch-screen experience. It is featured on the Play store and is in profit.
2010 - present, spare time project
Pepper is my attempt to make every programmer's life better by taking the concepts of Lisp, the simplicity of Python and the power of C++ and combining them into a single language. It's an early prototype, but it's growing...
A full list of my open source projects may be found on my home page at http://www.artificialworlds.net.
I am a prolific open source contributor and have worked in a wide range of areas. Some examples of projects that I founded and lead include:
My open source projects have provided experience with the open source development model including using tools such as git, SVN and CVS. I am very comfortable talking about e.g. branching, merging and freezing code in both centralised and distributed revision control systems. I also founded and maintain several projects written in PHP and using the MySQL database.
|June 2016 - present||OpenMarket - Lead Developer, Senior Lead Developer|
|April 2005 - June 2016||IBM (previously Cognos) - Lead Developer (and other roles)|
|2000-2005||DPhil (PhD) at the University of Sussex in Computer Science and Artificial Intelligence. The research involved writing a large C++ project modelling cognition using "developmental" neural networks. 2 published conference papers in 2001 and 2003|
|1999 - 2009||Sigma (UK) Limited - (part time) Software Engineer|
|1999 - 2000||Distinction in MSc at the University of Sussex in Evolutionary and Adaptive Systems.|
|1995 - 1998||2:1 in MMath Master of Mathematics at the University of Nottingham|
|1998 - 1999||Assonance - Own web design business|
|1996 - 1997||MarketingNet Ltd - Software Engineer|
I am a volunteer assisting a debt counsellor for people with severe debt problems in and around Egham with Christians Against Poverty. This involves visiting people with debt problems and helping them take stock of their finances and make a plan to become debt-free.
I run the catering on a Christian youth holiday for 12-15 year-olds, serving three meals a day to about 90 adults and teenagers. I run a weekly church Bible study group and have run numerous similar groups in the past for young people and adults. For several years I was overall leader of the same youth holiday for which I now cater.
I enjoy spending time with my young family and reading books such as Crime and Punishment, Structure and Interpretation of Computer Programs, Slaughterhouse 5 and The Art of Computer Programming.
I may be contacted on andybalaam at artificialworlds.net.
You can find out more about me at http://www.artificialworlds.net and http://www.artificialworlds.net/blog.
The URL for this page is http://www.artificialworlds.net/wiki/CV.