.. -*- mode: rst -*-
==================
Curriculum Vitae
==================
:Name: Keegan Carruthers-Smith
:Contact: keegan.csmith@gmail.com
:Website: http://people.cs.uct.ac.za/~ksmith/
:Location: Southern Suburbs, Cape Town, South Africa
.. contents
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.
.. 1st Year Results
.. ----------------
.. ============================= ===
.. Computer Science 118 (Python) 87%
.. Computer Science 1B (Java) 78%
.. Mathematics 1 85%
.. Statistics 73%
.. Microeconomics 71%
.. Macroeconomics 63%
.. Thinking About Business 1 64%
.. ============================= ===
.. 2nd Year Results
.. ----------------
.. ============================= ===
.. Mathematics 2 75%
.. Mathematics 201 77%
.. Computer Science 2A 89%
.. Computer Science 2B 75%
.. Computer Games & Simulation 60%
.. ============================= ===
.. 3rd Year Results
.. ----------------
.. ============================= ===
.. Mathematics 3 94%
.. Computer Science 3A 73%
.. Computer Science 3B 85%
.. ============================= ===
.. TODO add link to unofficial transcript
Employment History
==================
* **2012** - Currently a Software Engineer at `Facebook
`_.
* **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.
.. FUSEPod
.. -------
.. `FUSEPod `_ is a user space file system that uses
.. `FUSE `_ to mount an iPod for easy browsing of the
.. songs. Written in C++. Uses FUSE and libgpod.
.. AmarokPidgin
.. ------------
.. `AmarokPidgin `_ is a
.. plug-in for Amarok that updates your Pidgin status message with what you are
.. currently listening to. Written in Python. Uses DCOP and DBUS for
.. inter-process communication.
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.