About

I'm a software developer with experience in building and operating complex and distributed systems. My most recent experience is in Clojure, but I have prior professional experience with Java, Ruby, Python, PHP and Perl too. While I can do and have done work on UI and operations teams, my main focus is on all the systems that lie between those.

Experience

CircleCI
Senior Staff Engineer March 2015 - Present
I am currently operating as the "solver" for the Core group of engineering teams at CircleCI. This means that I float between the teams in that group helping them solve their most complex or urgent problems. Sometimes that requires me to write code but more often it means that I spend time discussing the problem with the team and helping them break it down into manageable and measurable tasks. I also participate in incident response for those teams, using my broader understanding of the CircleCI product to shorten and reduce the impact of outages.
Before my current role, I have worked across most parts of CircleCI's product including things like upgrading our AWS and Docker integrations, completing partial migrations of systems, improving our GitHub and Bitbucket API usage, modernising our permissions subsystem, designing and implementing our common tools and libraries, detecting and countering abusive behaviour, improving our on-premises product and sustaining legacy systems.
Engine Yard
Software Developer November 2011 - March 2015
I initially worked on the Orchestra PHP platform but I moved on to work on Engine Yard's other products. This mostly involved writing Chef, Ruby and some shell but I also wrote some Python and PHP. I created packages for Ubuntu and worked on a very large Rails application.
Distilled Media
Head of Infrastructure July 2011 - November 2011
I was responsible for improving and maintaining the infrastructure underlying Adverts.ie, Boards.ie, Daft.ie and TheJournal.ie. In practice, this meant sharing my knowledge of Capistrano, Puppet and Munin and trying to exploit commonalities between the sites to avoid duplication of effort.
Senior Developer - Boards.ie May 2009 - July 2011
I was a combination sysadmin, developer and DBA for Boards.ie. Here are some things I did in this job:
  • I made lots of speed improvements to Boards.ie, sometimes by improving the code but mostly by tweaking or avoiding database queries.
  • I built an API for Boards.ie which is used to drive touch.boards.ie and the Boards.ie iPhone app.
  • I built a redundant pair of firewall/reverse proxy cache machines using Varnish, Pound, CARP and pf.
  • In cooperation with Ross Duggan, I re-worked the setup for Boards.ie to upgrade out of date hardware and operating systems, remove points of failure and improve the security of the entire system. A high-level overview is on the Boards.ie blog.
  • I moved all the configuration of the machines to Puppet and all the code & configuration data to git.
I mostly worked with PHP, Perl and MySQL but I did some stuff in JavaScript and sh where appropriate.
McConnells Digital
Technical Manager August 2008 - May 2009
McConnells was a large Irish advertising company and in mid 2008 they re-launched their online advertising section as McConnells Digital. I was hired as the all-round tech person for this department. I project managed banner and e-mail campaigns, helped with pitches for new campaigns, sourced designers and developers and wrote some code. When I wrote code I worked in PHP (MediaWiki & Wordpress), Visual Basic (for a client website), JavaScript (mostly jQuery & YUI) and ActionScript (helping the banner creators).
Edgespace
Co-founder, Software Developer, Sysadmin June 2004 - Jan 2008
Along with several friends I was a co-founder of Edgespace, a software development company based in Dublin. We worked as contract developers until March 2007 and then made several unsuccessful attempts to build our own products before winding the company up. While at Edgespace, I also ran our company infrastructure including DHCP, DNS, IMAP, SMTP, Subversion and Bugzilla servers.
Software Developer - PassMark Security April 2006 - March 2007
Along with one of my colleagues I inherited a collection of ksh, Perl and Java which used MySQL to generate PDF reports from hundreds of megabytes a day of log files generated by PassMark’s clients. We slowly converted those into a robust, flexible and fast system which handled tens of gigabytes of log files a day with capacity to spare. The resulting system was built using sh, Java and Oracle and was deployed and managed in accordance with SAS 70 and Sarbanes-Oxley regulations. When on-site in California I also helped interview candidates for software development roles within PassMark.
Software Developer - Securify August 2004 - March 2006
Edgespace was initially hired to automate large chunks of the QA process for Securify’s SecurVantage network monitoring products. We wrapped the WWW::Mechanize Perl module to provide us and Securify’s developers with a set of primitives for exercising the user interface and driving their product. We then took over the maintenance of SecurVantage doing everything from high-level support to bug triage and repair to rolling minor releases. While at Securify I wrote mostly in Perl and Java but also patched bits and pieces of C and C++ code and did horrible things with make, sh and rpm. I also interviewed candidates for development and QA roles within Securify.
Bitbuzz
Software Developer September 2003 - April 2004
I joined Bitbuzz shortly before they launched and was their first (albeit part-time) employee. I wrote the first version of the captive portal that Bitbuzz users use to access their WiFi system. This involved glueing NoCatAuth, a credit card processor, an SMS payment gateway and the a WiFi roaming authentication system together using PHP and PostgreSQL.

Education

I've a B.A. (Mod) Computer Science from TCD.