Software Engineer Hi there! I'm a software engineer based in London, working remotely, with a passion for pure functional programming.
Quality is pride of workmanship.— W. Edwards Deming
I've been writing code professionally for over a decade now. If you'd like to see what open source software I work on in my free time, check out the links above.
Programming
My career thus far has been dominated by the web and particularly thereof the frontend. Over time I've naturally gravitated towards pure functional programming and strong, static typing, initially without even realising it! Lately I've been taking an interest in compilers and type theory.
I'm generally most concerned with type safety and correctness. A good type system can be used to encode logical invariants and eradicate certain classes of bugs, but testing still plays an important role as well. I'm a keen proponent of the "functional core, imperative shell" mantra.
Open Source
I am ideologically tied to and have great faith in the open source community. To this end I contribute patches where I can, maintain a modest collection of my own software, and contribute to the likes of nixpkgs and the AUR, though I can't find the time for it like I used to.
Autodidacticism
I spend a great deal of my free time learning, and love sharing this knowledge with colleagues and friends. Intellectual engagement is my strongest natural motivator.
Workplace
I've been working remotely for most of my career. The flexibility suits me given my self-driven nature and neurodivergence.
I currently run macOS on my desktop and NixOS on my homelab, however this changes with my life circumstances. The freedom to work within my own technology stack is important to me.
You can find the configurations for my machines here.
Career
Unsplash August 2021 - Present
I'm excited to be working on Unsplash's frontend, leveraging functional programming and the Effect and fp-ts ecosystems. I created intlc, a compiler written in Haskell, enabling the ergonomic and typesafe localisation of Unsplash's frontend from ICU to TypeScript. I've also introduced Nix to our development environments, written company tooling in Rust, and play an increasingly architectural role.
Adaptavist December 2018 - June 2021
At Adaptavist I worked on our product's React frontend and its associated Node.js serverless functions, making heavy use of fp-ts, io-ts, newtype-ts, et al. I led the team towards best practices, including refactoring everything into strict TypeScript, incorporating property-based testing and page-level integration testing, and generally emphasing long-term maintainability for developers and reliability for end users.
Oddschecker February 2017 - December 2018
At Oddschecker I spearheaded a greenfield B2B project utilising React and D3 on the frontend and Node.js on the backend, all written in TypeScript. I liaised with product and QA to ensure it met expectations and provided a good UX.
Impero December 2015 - February 2017
My work at Impero was predominantly building new websites from scratch for clients following a design. These would typically be very complex in terms of the requisite CSS. Between projects I worked with just about every permutation of CSS pre- or post-processor. I also occasionally worked with reactive libraries like React and Vue.
Perspective Publishing March 2014 - December 2015
I designed and implemented the frontend of the majority of Perspective's websites, and rewrote the backend of the internal company CMS in PHP leveraging MySQL, converging dozens of legacy systems into a single unified experience. Prior to leaving I lobbied for a change from archaic FTP uploads to a modern version control system.
References available upon request.