.. -*- 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.