Work with me

I am currently looking for a new role as a software developer. I have thirteen years professional experience working on the web, up and down the stack. Although my recent experience is primarily in back-end and service development, I have substantial experience in JavaScript and can support front-end engineers and help teams with their overall system design.

My main languages are Ruby and JavaScript and I have made important open source contributions in both ecosystems. My work on WebSockets powers the real-time messaging services in Rails and in many Node.js projects; the Ruby version of websocket-driver has been downloaded 50 million times, while the Node.js version of faye-websocket sees almost 10 million downloads per week.

My most recent project is Building Git, a book teaching a wide array of computing topics by reimplementing Git from scratch. It has sold over 300 copies and has attracted an audience to build their own Git implementations in C++, Clojure, Elixir, Go, Haskell, Java, Node.js, Ruby, Rust, and Swift.

Always interested in learning new things, I am currently expanding my technical knowledge into new areas. Given my main experience is in high-level dynamic object-oriented languages, I have recently learned some C, studied some type theory and logic programming by reading Types and Programming Languages, and am currently learning Rust and Web Assembly. I’m particularly interested in the possibilities of using Rust for high-performance web applications.

What I can do for you

I believe the role of senior engineers is primarily to support their teams in solving problems. I love using my expertise to help others achieve their goals, and this can take many forms. It can mean collaborating on code and design, or leading a workshop. It might be helping a team break down a complex feature into a manageable implementation, or it could be one-to-one mentoring or coaching.

I try to cultivate a culture of learning, where people are comfortable asking for help, offering each other support, and reflecting on their progress as a team so they can improve their techniques and processes. I believe in good documentation of both code and business decisions, so that information is easily available to anyone who might need it.

What I’m looking for

I am open to a variety of roles that speak to my technical, writing and teaching skills. This includes senior or staff engineering positions, developer relations, and technical writing.

I am based in London and welcome the opportunity to work remotely or asynchronously with an organisation that is experienced in supporting distributed teams.

In order to continue my open source work, I am looking for a position where I can work four days a week, giving me enough time to meet my other commitments.

If your company could benefit from my skills, and has a supportive learning-focussed culture, then please take a look at my CV and get in touch.

Find out more

A selection of my work, writing and presentations is available on this site. You can follow my current interests on GitHub.

This entry was posted in Bookmark the permalink.