Engineering and educating for a free and open web.
Currently at FreeAgent
Ruby on Rails developer with over three years of industry experience.
Experienced with Hotwire, ViewComponent, and more.
I am a full-stack Ruby on Rails engineer with over three years of industry experience and a 2.1 degree in Computer Science at the University of Sheffield. I am a maintainer on GitHub's ViewComponent project and have used Hotwire (Turbo & Stimulus) since its release in December 2020.
Education, open source software, and making a positive difference all motivate me to do what I do best. Through these things, I aim to enable myself and others to change the world for the better.
Senior Software Engineer // FreeAgent // April 2023-present
Software Engineer // FreeAgent // April 2022-March 2023
I joined FreeAgent as a mid-level software engineer in 2022, forming part of the Core Services team alongside a staff and principal engineer. As a team, we have been responsible for the security, upkeep, and architectural direction of the app, in addition to common features such as subscriptions and billing.
In this role, I have:
- conducted a major Rails version upgrade, which required pre-production testing across the engineering department and cooperation with teams that were affected by changed upstream functionality
- implemented tools for monitoring deprecation warnings that arise with version upgrades
- led investigation and discussion around high-level architectural direction, which has kickstarted an effort to use Rails engines to break up the monolith
In addition, I have been a strong contributor to the internal culture. I have regularly led sessions and given talks at the weekly Engineering Forum and Dev Development meetings, and have been part of the hosting rota for both.
Lead Software Engineer // Raise.dev // June 2020-March 2021
I worked as the lead contributor for this early-stage startup's product offering from the inception of its Rails app. The platform allowed users to schedule and attend meetings with coaches, and integrated with several external APIs to assist with that. Ruby on Rails, Sidekiq, Hotwire, ViewComponent, and Tailwind.css drove the platform. I was personally responsible for:
- keeping a service with over 75% test coverage live for over 150 active users
making key architectural decisions, and defining, upholding, and evolving internal code standards
Over time, the codebase evolved. View models and API service objects were superseded by ViewComponents and Remote Record classes. These changes influenced my opinions on software design and Rails.
working closely with the founders and product lead, from specification down to implementation
We used a variation on Shape Up methodology. I guided technical decisions with the founder and built with foresight.
integrating with external platforms including SendGrid, Mailjet, and Timekit
For this we employed webhooks and background jobs, and cached attributes locally where necessary.
enabling team members to contribute through effective documentation and mentorship
Raise.dev previously took on an early-stage designer and Rails developer, both of whom I mentored and encouraged.
maintaining deployment and continuous integration platforms, and developer tooling such as Webpack
I upgraded Webpacker and implemented CSS Modules within our Webpack setup. Our scripts linted all changed code across CI and development environments.
Software Development Undergraduate // UKCloud // July 2018-August 2019
As part of a Scrum team of six, I was responsible for the company's software built with Ruby on Rails. This includes the customer portal, which faced over a hundred public sector companies including Genomics England. I was responsible for:
- The Identity and Access Management API (IDAM), which is backed by a Single Sign-On (Red Hat SSO) system
- I defended a proposal I devised that influenced a critical part of the design, which ensured SSO would be securely multi-tenanted through IDAM. I quickly gained understanding of RHSSO, and passed this through my team and the wider organisation.
- IDAM was eventually integrated with the customer portal through forms that called off to the API
- Various Jenkins pipelines using Groovy and
bashthat bootstrap the necessary objects in SSO to let customers manage permissions across OpenStack, OpenShift, and the new IT Service Management product
- Collaborating with infrastructure and network teams to deploy new services and maintain the health of existing ones
Computer Science with a Year in Industry // University of Sheffield // 2016-2020
- Graduated with 2:1 honours
- Engineered a social network in Ruby on Rails with React to unify the escape room industry, based on user requirements and research
- Assisted in delivery of computer science teaching to sixth form students, and devised resources to teach Git
- Built a working simulation of the Enigma machine in Erlang
- Volunteered to support women and non-binary folk in learning web development through Code First Girls
Work in Open Source
While I was at Raise.dev, I contributed to open source regularly to improve dependencies, and maintained internal libraries. I also extracted code from Raise.dev to create projects such as
I help to maintain ViewComponent alongside other developers inside and outside GitHub. I aim to support other ViewComponent users quickly and efficiently, and I am regularly consulted on its use internally at FreeAgent. I have also contributed code to Rails, Grouparoo, and
I want to make an ongoing effort throughout my career to support the tools and communities that enable me to make a difference.