Professional
Senior Frontend Engineer, Secondmind
As one of two frontend focused engineers at Secondmind, my primary role is to develop web applications and prototypes for our product offering, as well as internal tooling. To support this, I work across the stack as needed. Some of the highlights include:
- Building new web applications and APIs using React, Svelte, TypeScript and NodeJS following a UI centric microservice approach.
- Leading sessions of a Code First Girls course to teach web technologies to women.
- Running a weekly course with a colleague over a number of months to train up ~20 coworkers on Frontend focused technologies.
- Creating an E2E testing framework based on Cypress and integrating this into our Jenkins build pipeline.
- Gaining experience with Docker, Kubernetes, Helm and Terraform and using these to deploy services and debug deployment issues.
- Creating and deploying a Rust based internal tool which took users through an OAuth login flow and handed back JWTs for testing purposes.
- Extending and improving our Python code where necessary to help drive forward feature development in the UI.
- Defining API specifications to accomodate product requirements.
- Working with PostgreSQL to define data models and debug database related issues.
Lead Frontend Developer, Third Light Ltd
- Continued development of Angular and Go codebases
- Instigated and ran informal, quarterly company talk days.
- Migrated our core product to TypeScript and evangelised its use (I had incrementally converted about 50kloc over by the time I left).
- Built other in-house tools using Rust, Haskell and React.
- Interviewed new candidates for Frontend, Backend and UX roles.
Senior Developer, Third Light Ltd
- Created Go microservices for features including publishing and a scriptable automation prototype.
- Architectural and planning oversight of the Frontend team as we continued development of our AngularJS UI.
Developer, Third Light Ltd
- Worked on the core product; a PHP/Smarty Backend using MySQL and exposing a JSON API.
- Built from scratch a small AngularJS SPA for browsing, cropping and exporting images.
- Created a WordPress plugin and updated our Drupal plugin to make use of this.
- Began building, from scratch, an AngularJS/SCSS based SPA to serve as the next version of our core product.
PhD: Robotics, Aberystwyth University
Completed a PhD in Developmental Robotics. Some highlights:
- Developed and tested novel competitive learning algorithms for affordance based learning to drive a robot arm and camera system.
- Helped mentor students with learning difficulties.
- Assisted in lectures, invigilation, running tutorial sessions, and advisory sessions in the CompSci department.
BSc: Cognitive Science, Hertfordshire University
- Graduated 1st class with Honours.
Personal
StatsCloud Backend
A Rust based Backend consisting of >15 crates and using SQLx, custom database schema definition and migration, OAuth based authentication, a custom self-describing API, a custom config loader, several proc macros, custom bindings to readstat to load SPSS files, and more.
Weave
A simple CLI router for wiring together several sources behind a single HTTP endpoint for rapid app/UI prototyping, built using Rust.
Angu
A small, zero-dependency library that can be used to build and evaluate mini-languages in the browser or in NodeJS. This is used in StatsCloud to evaluate table formulae.
FUSS
A Functional CSS pre-processor aimed at improving on SCSS. In FUSS, everything is an expression, imports are scoped and composition is trivial.
TalkLicker
A Haskell/Elm SPA built to manage company talk days while I was at Third Light. This consisted of a drag and drop interface for creating and scheduling talks, an admin interface, user account and session management, and a markdown based approach allowing draggable items and arbitrary text to be interleaved.
Vault-inject
A utility for automatically pulling secrets out of vault and injecting them into shell commands