Resume
Work Experience
Software Development Engineer III
Amazon
Oct 2015 to present in Seattle, USA
I'm working within the Forecasting org. My team works on generating forecasts for new products at Amazon. Our technology stack is based upon AWS EMR & EC2, Scala, Apache Spark, Python, Keras, MXNet and C++ with Random Forecast and Neural Network Machine Learning models.
- Lead Software Engineer for a team of 10 Engineers.
- Team runs over 50 EMR clusters daily, collectively using over 1000 EC2 instances and processing 35 TBs of data to generate forecasts for 11 Amazon marketplaces.
- Led the migration of team applications from Hadoop MapReduce jobs running on a legacy shared cluster to EMR and Apache Spark. This allowed us to scale up our experiments, previously capped to the capacity on the shared cluster, and significantly improved the application development experience. 10x increase to the number of experiments we could run and 52x increase to the scale of the experiments.
- Designed and implemented experimentation tools used by Engineers and Scientists.
- Launched several new models for different Forecasting scenarios, in particular for Softlines items. Working closely with Research Scientists to develop and backtest the model before launching in production.
- Designed and ran experiments which resulted in improvements to our production models.
- Worked with Research Scientists to implement a RNN (LSTM) model in production, using Keras, MXNet and Theano (8.4% forecast improvement over Black Friday 2017).
- Promoted to Senior Software Engineer (SDE III) in October 2016.
Technologies Used: AWS, EMR, EC2, S3, Scala, Apache Spark, Python, Keras, MXNet, C++, Bash, Random Forests, Neural Networks, Git.
Software Development Engineer II
Amazon
Jan 2013 to Oct 2015 in Vancouver, Canada
I worked on the payments platform in the Vancouver office. My team worked on front-end payments widgets that could be placed on Amazon web-pages and interact with back-end payments platform services.
- First member of my team in Vancouver, working remotely with team in Seattle.
- Helped the team grow to 11 engineers and a local manager. I interviewed 5 of these new hires and helped on-board them all.
- Wrote the first iteration of a widget that was later used on the Amazon Your Account page (www.amazon.com/wallet).
- Helped Amazon businesses, such as AWS and Kindle, accept payments using our service.
- Part of a group of 3 engineers tasked with re-implementing the widget framework to support browsers without JavaScript. I was part of this project from initial exploration of the problem space to design, implementation and launch.
- Led a team of 6 engineers to implement payment selection in the amazon.com checkout using our widget framework.
Technologies Used: Scala, Java, JavaScript, jQuery, Sass, CSS, JSON, XML, HTML, Spring, Git
Senior Software Developer
OpenBet
Oct 2009 to Dec 2012 in London, UK and Vancouver, Canada
OpenBet is a leading supplier of software to the online gambling industry. I worked on client teams for BCLC (British Columbia Lottery Corporation) in Vancouver and William Hill in London.
- The only developer involved in all development stages of the BCLC sports-book project www.playnow.com/sports from the initial workshops in February 2011 to the successful launch in July 2012.
- Promoted to Senior Developer in December 2011.
- Offered opportunity to go to Canada after only a year with OpenBet to work in a small development team on a, highly profitable, new customer account as part of the company's expansion into the North American market.
- Played a significant role in the initial deployment of live betting functionality to the William Hill sports-book sports.williamhill.com/bet. I was assigned to this project after only a couple of months of working at OpenBet. I proved myself to be an effective developer and became a de-facto authority on the functionality within a team of around twenty developers.
Technologies Used: Linux, Apache, Tcl, Informix, SQL, JavaScript (including libraries such as jQuery), Java (Apache Tomcat)
Postgraduate researcher
University of Edinburgh
2006 to 2009
Thesis: Computational Models of Ontology Evolution in Legal Reasoning
During my time as a postgraduate researcher I investigated difficult conceptual problems in the areas of Artificial Intelligence, Informatics, Philosophy and Law. My thesis addressed the problem of providing automated support for the evolution of legal knowledge.
Teaching Support Provider
University of Edinburgh
2006 to 2009
Below is a list of the courses I taught, along with the roles and years:
- Inf1 Object-Oriented Programming, Demonstrator, 2006-07 and 2008-09
- Inf1 Computation and Logic, Tutor, 2008-09
- Inf1 Functional Programming, Tutor, 2008-09
- Inf1 Data and Analysis, Tutor, 2008-09
- Inf2d Reasoning and Agents, Teaching Assistant, 2007-08 and 2008-09
- Fundamentals of Artificial Intelligence (Masters course), Tutor, 2008-09
In particular, as the teaching assistant for the 2nd year course Reasoning and Agents I was responsible for:
- Creating programming assignments for students, using the Haskell programming language
- Marking student assignments
- Presenting lectures about assignments
- Responding to students' queries
- Working with the course lecturer to select the course's content
I also helped with events aimed at school students, such as the IT4U workshop.
Technologies Used: Haskell, Java, PHP, PostgreSQL, SVN
Education
2006 to 2009:
MPhil, Informatics, University of Edinburgh
Supervisors: Prof. Alan Bundy, Dr. Fiona McNeill, and Mr. Burkhard Schafer
Thesis: Computational Models of Ontology Evolution in Legal Reasoning
2001 to 2005:
MSci (Hons), Mathematics (1st), University of Bristol
I received amongst the highest marks in my year group in several modules, in particular the 2nd year Applied Probability module, the 3rd year Logic module and the 4th year Computational Complexity module.