Curriculum Vitae

Karl O’Keeffe

I’m currently part of the front end team at Geckoboard where we are building an amazing dashboard product.

I’m a JavaScript expert who has developed large scale single page applications for Geckoboard, Qumu, 7digital, and Philips. I’ve worked across multiple teams, leading teams at my last two companies. I also have experience and passion in Interaction Design and User Experience, advocating heavily for the user. I have over 10 years solid experience coding HTML, JavaScript, and CSS for all browsers (even the shoddy ones). 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.

I’m interested in moving into contracting as an opportunity to work with more teams to improve both the quality of the software they build and the way in which they build it. I’m passionate about the benefit improved development processes and tooling can make to the quality and speed at which software is built.

Experience

Team Lead & Front End Developer | Geckoboard, London

November 2015 – Current

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.

Achievements

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.

Achievements

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 7digital.com, and business to business. They offer bespoke tailored sites (such as hmvdigital.com), 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 7digital.com and hmvdigital.com. Project management of download manager app. User Interaction Design and wire framing.

Achievements

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 TKI.org.nz, 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 (digitalconversations.org.nz).

Achievements

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.

Achievements

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.

Achievements

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

Education

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.

Projects & Interests

Dancing Monkeys, https://monket.net/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.

React Storybook Talk, https://www.youtube.com/watch?v=UxbQ-cGnoCE

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.

Prettier, https://github.com/prettier/prettier

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.

Writing

Blog, https://monket.net/blog/

My personal blog (no longer updated).

Background

Travel

I have made a number of major trips around the world to visit and work in other countries, and experience other cultures. Last year I traveled to Thailand for a yoga training workshop. Between 2005 and 2008 I traveled and worked through Asia and New Zealand, spending time to train as a dive master in Indonesia. After University I spent 6 months traveling and working in Australia, living in a camper van and diving the Great Barrier Reef.

Interests

Improv, Parkour (free-running), Capoeira (Brazilian dance/fight/game), Inline skating, Snowboarding, Yoga, Diving and Freediving (breath-hold diving), Thai Massage, Travel, Psychology and Social Behaviour.