Curriculum Vitae

Karl O’Keeffe

I’m a front end developer available for hire as a contractor.

Currently in a contract due to finish at the end of June 2019


I’m a JavaScript expert who has developed large scale single page applications for Sky, Geckoboard, Qumu, 7digital, and Philips. I’ve worked across multiple teams, leading teams at both Geckoboard and Qumu. I’ve helped teams manage framework transitions in large codebases and plan and implement large architectural changes. Hiring and mentoring new developers is one of my passions, as well as assisting with process changes within teams.

I have over 10 years solid experience coding HTML, JavaScript, and CSS for all browsers. I strongly believe in using tooling to improve the development experience, from storybooks to hot code reloading. I enjoy working with continuous integration and short iterations of improvement and feedback.

I also feel it is important to understand all levels of development, and have ensured I have real work experience in server side development, project management, leading teams, testing, and automating deployment.


Senior Developer (Contract) | Third Space Learning/Matr, London

October 2018 - March 2019

Third Space Learning offers 1-to-1 online maths tutoring for schools and at home under both the Third Space Learning and Matr brands.

Tasks & Responsibilities

I was brought in to help complete the main tutoring portion of the Matr project before the launch deadline. I had one month to take the tutorial web app from a prototype to a live product. Once launched I was then tasked with transitioning two of the technology platforms the tutorial app depended on. I was also asked to help the team with their architectural decisions.


I was able to build all the required features of the tutorial app web within a month, and it went live with no major bugs. I then rounded out the product with extra product features. I lead the transition from custom code to Twilio and PubNub. I ensured that we supported running both tech stacks simultaneously allowing us to seemlessly transition tutors and students across with confidence. Moving to these third party providers helped improve the reliability of the tutorial app and reduce the maintence burden.

Technologies Used

react, javascript, redux, redux-saga, material-ui, webpack, es6, bitbucket

Senior Developer (Contract) | Sky, London

July 2017 - October 2018

Sky is a multinational media company empowing customers to watch content at home and on all their devices.

Tasks & Responsibilities

Developing the Sky Go Desktop app for macOS and Windows, an Electron app for watching video and live TV. Leading large scale improvements and architectural changes across the codebase. Interviewing candidates and mentoring new hires. Helping management implement new development processes within the team.


Streamlining the hiring process for new developers, including a stronger focus on technical skills and cultural fit. Improving the speed and reliability of the CI process, reducing time to merge PRs from 4+ hours to 20 minutes. Leading change in development process by example, with increased focus on tackling risks early. Introducing a streamlined translation process across multiple products and teams. Setting up a fortnightly tech retrospective to help empower developers to suggest and implement technical improvements. Pioneering the use of state machines to tame complex asyncronous interactions.

Technologies Used

react, javascript, electron, redux, redux-saga, webpack, es6, jenkins

Team Lead & Front End Developer | Geckoboard, London

November 2015 – July 2017

Geckoboard helps companies turn their key performance data into beautiful, accessible KPI dashboards that keep teams informed, motivated and data-driven.

Tasks & Responsibilities

Leading a team of 6 (one of the two dev teams at Geckoboard). Including regular 1 to 1’s with team members, and advocating for the team to the leadership group. Recruiting new front end developers from screening to organising interviews. Running fortnightly retrospectives, providing a safe place to discuss and take aciton on issues facing the development teams. Mentoring junior developers with architecture discussions and code reviews.


Introducing React Storybook for rapid feedback when building new UI components. Enabling hot reloading of react components in a large existing codebase, tightening the development feedback loop. Creating a dedicated 2 week on-boarding process for new developers. Introducing a monthly front end discussion group. This served as a space where we could discuss new ideas and ensure the team had a shared vision and understanding. Migrating from a custom flux implementation to Redux. Developing a framework for testing async code synchronously using mock clocks, dates, and promises. This allowed explicit control of timing while ensuring tests ran as fast as possible.

Technologies Used

react, javascript, es6, redux, sass, webpack, d3, storybook

Lead Front End Developer | Qumu, London

April 2010 – November 2015

Qumu provide a web app for businesses to create and share videos and presentations. This is used by a diverse range of clients from small businesses to multinational banks. Easily embeddable Widgets are provided to allow businesses to seamlessly share videos and presentations within their own sites, while the REST based API allows clients to customise their interaction with the product.

Tasks & Responsibilities

Building the front end for the Qumu online video editing platform, including online video trimming. Leading the front end team, from architecture to code reviews. Migrating from an in house JavaScript framework to Angular, while always being able to release. Building high performance embedded JS widgets for client sites (written in CoffeeScript). Designing the server and client API. Implementing automated build process with one click deploy and rollback.


Designing and building the widgets project from scratch in CoffeeScript and PHP. Architecting a no-downtime one click deployment process that allows the widgets to be updated as needed without affecting any of the client sites they are used on. Introducing shorter development and deployment cycles to increase the speed of feedback and the pace at which improvements reach customers. Migrating to Angular without stalling the development process or doing a parallel implementation.

Technologies Used

angular, javascript, coffeescript, jquery, less, jenkins, html, css, php

Front End Web Developer | 7 Digital, London

May 2008 – April 2010

7digital sell music online, direct to the consumer at, and business to business. They offer bespoke tailored sites (such as, white label stores (1000+ at last count), and a full catalogue and download API for 3rd party apps (such as Spotify).

Tasks & Responsibilities

Designing and creating the UI for a soon to be released Locker Plus rich client web app. UI development for and Project management of download manager app. User Interaction Design and wire framing.


Building Locker Plus UI from scratch in Javascript using the ExtJS framework Integrating qUnit, JS Test Driver, and TeamCity to automate the build and test process. User Interaction Design of Locker Plus, ensuring no modal dialogs, and hiding complexity. Seamless integration of desktop download manager functionality into web site.

Technologies Used

javascript, jquery, extjs, qunit, jstestdriver, teamcity, html, css, balsamiq, c#, ruby, cucumber

Front End Web Developer | CWA New Media, New Zealand

June 2006 – March 2007

CWA New Media develop web sites for education. They run, the largest education portal in New Zealand and the reference location for the national curriculum. They also run a number of education and technology initiatives.

Tasks & Responsibilities

Developing accessible XHTML and CSS templates and designs to stringent government guidelines. Working on internal productivity tools, web based and desktop. Developing a new version of the Digital Conversations site (


Created a new JavaScript web based timesheet system, with streamlined auto saving interface. Developing and launching redesigned Digital Conversations site with a clean content focused UI. Producing productivity tools including a Firefox plugin, and tools for working with HTML that sped up content creation six fold.

Technologies Used

javascript, xhtml, css, php

User Interface Consultant (Contract) | Philips, Singapore

April 2006 – May 2006

Philips is a huge consumer electronics company, developing a wide range of electronic devices including televisions.

Tasks & Responsibilities

Hired for a 6 week project to develop a demo user interface to show off the power of a new interactive TV chip. The UI included TV channel browsing, on-demand movies, split screen web browsing, and a music player. It needed to work on Pal and HD TVs.


Demo UI created from scratch in six weeks as a JavaScript web based interface, running in embedded Opera. Pre-loaded data and images provided excellent performance on constrained hardware. All functionality completed within tight deadline.

Technologies Used

javascript, opera, jsp, java, philips-tv-api

Systems Engineer | Formicary, London

June 2004 – June 2005

Formicary provide IT solutions for the Financial Services industry. Providing both bespoke solutions, and customisable software products.

Tasks & Responsibilities

Developing a web based inter-bank bond trading system. Providing bespoke software solutions, including a browser based chat client and server side data processing app. Consulting on User Interaction Design for sites and apps.


Created the Java Swing UI for a bond trading app. This was multi-threaded for responsiveness and non-modal allowing multiple trades at a time. Developed a browser based chat client using COMET long polling to provide instant push of messages to every client. Developed a server side data processing app in Java using SwiftMQ to provide eventually reliable data transfer between disparate systems.

Technogogies Used

java, swing, swiftmq, html, css, javascript


MEng Computing with Artificial Intelligence, Imperial College London, 1999 – 2003

1st Class Honours, top five in the year.

Courses Taken

Artificial Intelligence I/II, Operating Systems I/II, Software Engineering I/II/III, Architecture I/II, Databases I/II, Networks and Communications, Compilers, Distributed Systems, Robotics, Simulation and Modelling, Concurrent Programming (and Logic), Mathematical Methods and Graphics, Natural Language Processing, Multi Agent Systems, and many logic courses.

Projects Undertaken

  • Group project redesign of departmental website.
  • Masters Thesis on automated music analysis.


Redux Saga State Machine,

A work in progress library to build a Redux Saga based state machine runner. Built upon xstate and Redux Saga.

This was borne out of some of the work I did while at Sky.

React Storybook Talk,

An introduction to React Storybook, what it is, how to use it, and some of the benefits we have seen from adopting it here at Geckoboard.

A talk I gave as part of the React London Meetup at the Facebook offices.


A code formatter for JavaScript (and other languages). Prettier is an open source project that I have contributed to. I’ve focused on improving the formatting of JSX.

React Async I/O Testbed,

This repo attempts to recreate the the IO demo from Dan Abramov’s Beyond React 16 talk using the React 16. It shows how to implement suspense style async UI behaviours using React 16.

Dancing Monkeys,

Dancing Monkeys was my individual project while at Imperial College London. It is an application to automatically generate step files for DDR (Dance Dance Revolution)…

Created as part of my final year project at university. Released as open source and maintained for a few years by another developer.