Curriculum Vitae

Name:Keegan Carruthers-Smith
Contact:keegan.csmith@gmail.com
Website:http://people.cs.uct.ac.za/~ksmith/
Location:Cape Town, South Africa

Education

I have a Bachelor of Science with distinction in Computer Science and Mathematics and the degree with distinction. I also have a BSc Honours in the Mathematics of Computer Science with Distinction (The degree comprises honours modules in Pure Mathematics, Theoretical Computer Science and Experimental Computer Science). I was doing a Masters in Computer Science, but dropped out to work instead.

Employment History

  • 2015 to current - Software Engineer at Sourcegraph.
  • 2012 to 2015 - Software Engineer at Facebook. Worked in the Developer Infrastructure org. Main projects were scaling Continuous Integration (from hundreds to thousands of machines), developer workflow improvements (innovation around tooling/automation for working in large codebases) and mobile automated end to end testing infrastructure (part of automating the mobile release process). Technologies used: Hack, PHP, Python, Chef, Phabricator and many fb internal tools.
  • 2012 - Contract work Snapbill. Technologies used: PHP, Python, Puppet
  • 2011 - Internship at Nimbula. Wrote an EC2 API Shim. This was a service which exposed an EC2 SOAP and REST API and translated the requests into Nimbula Director API requests. Technologies used: Python and Twisted.
  • 2010 - Internship at Amazon Web Services on the EC2 Team. My first project was replacing an internal XML-RPC system with something faster (ended up being JSON). The second project was creating a distributed monitoring system of the EC2 API, which alarms on elevated failure rates. Technologies used: Java, Python and EC2.
  • 2008 - Contracting work at CareerJunction as a Junior Python Developer. Wrote a restful broker in Django which validates/transforms HRXML documents to internal systems. Technologies used: Django, lxml and the TurboGears Stack.
  • 2008 - Wrote a command-line wrapper around libgpod for iPod syncing in the Fun Station Project. Technologies used: C.
  • 2007 - System Administration and Code maintenance for The Hitforge. Technologies used: FreeBSD, Trac, PHP, Apache, eJabberD, Python.
  • 2007 - Vacation work at Postilion. Maintenance and feature addition for management reports. Technologies used: Python & SQL Server.
  • 2007 - Set course-work for 1st year Python course at University of Cape Town. The Python course is a course for above average students, that already know how to program in Java. Topics covered: Python Syntax and Data Type, UML, Unit Testing, Regular Expressions and Functional Programming.
  • 2006 - Two internships at Standard Bank. I was a bursary student, but discontinued the bursary to look for more interesting opportunities. I did work in C# and Java. C# work was a basic front-end to a SQL database. The Java work was Servlets for another database. Another project that I worked on was a Java servlet that generated a graph of the dependencies between Oracle databases.

Programming Languages

I am proficient in the following languages:

  • Python
  • Java
  • C/C++

I have written small amounts of code in the following languages:

  • Emacs Lisp
  • Haskell
  • Bash
  • C#
  • PHP
  • XSLT

Open Source Project

I enjoy using open source software and often publish code I have written as open source. See my code for more info.

Olympiads

I have participated in many computer olympiads. These are contests that test your problem solving skills as well as implementation, testing and debugging skills. Below is a summary of my results in major contests in chronological order.

  • Bronze medal in SACO 2004 (South African Computer Olympiad)
  • Represented South Africa at the IOI in 2005 in Poland (International Olympiad in Informatics)
  • Silver medal in SACO 2005
  • Ended the USACO 2005/2006 season in the Gold Division (USA Computer Olympiad)
  • Silver medal in the IOI 2006 in Mexico
  • Team was second in the ACM ICPC Southern African Regionals 2006
  • Team was third in the ACM ICPC Southern African Regionals 2007
  • Team was third in Standard Bank IT Challenge Finals 2008
  • Advanced to Round 3 of the Google Code Jam 2008
  • Team was first in the ACM ICPC Southern African Regionals 2008
  • Team attended the ACM ICPC World Finals 2009 in Sweden. Came 2nd in the African/Middle-East Super Region and tied for 49th in the overall standings.
  • Team was first in the ACM ICPC Southern African Regional 2009
  • Attended ACM ICPC World Finals in Harbin, China in February 2010
  • 9th in Code Jam Africa and Arabia 2011

I have been serving on the Scientific Committee for the South African Computer Olympiad since 2006. This entails setting problems and writing solutions (in Python, C++ and Java) for the SACO 2nd and 3rd round, and for the training camps for IOI selection.

Other Awards

  • High school: Merit List; First in Advanced Maths, Computer Science, Accounting
  • Dean’s Merit List 2006, 2007 and 2008
  • Computer Science 2A Merit List

Other Computer Interests

  • Unix. I use Ubuntu Linux, Gentoo Linux and FreeBSD
  • Being a console junkie. I can ‘live’ in screen, emacs, irssi, etc
  • Functional Programming. Haskell, Lisp, Functional Style in Python
  • LaTeX

Interests Outside of Computers

  • Abstract Mathematics. Especially Point-Set Topology, Logic, Category Theory and the more theoretical sides of Computer Science such as Computability Theory.
  • Squash and Skateboarding.

References

On request I can supply references.