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 almost 7 years now. If you'd like to see what open source software I work on in my free time, check out my software page via the link at the top.
In my current position at Adaptavist, in the ScriptRunner Cloud team, I've been pioneering a number of frontend and serverless initiatives. These range from refactoring everything into strict, functional TypeScript, to encouraging us towards better testing practices, introducing property-based testing and page-level integration testing. A major redesign of a parser core to our business is currently planned, to which end I've written a greenlit prototype in Haskell in the style of a recursive descent parser.
I care deeply about writing business logic and applications more broadly in the safest, most maintainable manner possible. I leverage the type system to encode logical invariants and eradicate certain classes of bugs. I write testable code and write good tests for that code, emphasising quality of tests over chasing potentially worse-than-useless coverage targets. Whilst it can be taken to an extreme, I do believe's there's truth in the idea of "self-documenting code". Where that isn't possible, I write concise, helpful documentation, planning for the long-term. I use tooling like Git effectively, including leaving a semantically meaningful, atomic commit log behind.
My career thus far has been dominated by the web and particularly thereof the frontend. Early on in my career I specialised somewhat in CSS, though I've since heavily shifted towards programming itself so to speak. I've retained that hard-fought understanding of CSS. I've been writing and utilising APIs throughout, be they more traditional or in the form of microservices. I can comfortably interact with the DOM manually but would sooner reach for a reactive abstraction.
Learning & Teaching
I spend a significant proportion of my free time learning, and I enjoy sharing that knowledge with others; I routinely pair with colleagues and help them through challenges. This is a very large part of what drives me on a daily basis.
I've been working permanently remotely since 2018. The flexibility suits me given my self-driven nature.
I've built my own computer and run Arch Linux on it. This is the machine on which I do all my work, professional and personal, and everything else; there is a meaningful productivity gain for me here both in the power of the hardware and the configurability of the software.
Sometimes my cat likes to join me when I'm programming. He is an invaluable source of inspiration and unintended keystrokes.
I appreciate you may be in a hurry and want to quickly parse this page for a particular keyword, likely a technology. Here follows a non-exhaustive list in no particular order of a bunch of things I know at least a reasonable amount about:
Keywords: Haskell, PureScript, pure functional programming, Rust, CLI, shell, Linux, TypeScript, React, fp-ts, Node.js, testing, microservices, AWS Lambda, CSS-in-JS, HTML, CSS (incl/ preprocessors), SQL, Git, CI, WebExtensions
AdaptavistDecember 2018 - Present
OddscheckerFebruary 2017 - December 2018
ImperoDecember 2015 - February 2017
Perspective PublishingMarch 2014 - December 2015
References available upon request.