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 the code I can share and hear me talk me about that which I cannot, 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 accessibility and developer experience.
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 have historically contributed to open source with my own projects, ad hoc patches, and package maintenance in the likes of nixpkgs and the AUR. I have less time for this now than I used to, however I still enjoy participating in the open source community when we cross paths.
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 work primarily on Unsplash's frontend, leveraging functional programming and the Effect ecosystem at the edges of a React application. I created intlc, a compiler written in Haskell, enabling the performant, typesafe localisation of ICU messages. 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 the fp-ts ecosystem. 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 manual FTP uploads to VCS-backed CI deployments.
References available upon request.