Staff Software Engineer with a decade of experience in web development, based in London, UK 💂🏼

Cover Image for Near-Instant Dependency Restoration in GitHub Actions with SquashFS and FUSE

In this post, I describe how I cut CI dependency restoration from 60 seconds to ~3 seconds on self-hosted GitHub Actions runners, by mounting squashfs images via FUSE instead of extracting tar archives. The post walks through the six iterations it took to get there and how to implement the same solution on AWS EKS with EFS.

Other Articles

Cover Image for The Effects of AI Development Assistants

The Effects of AI Development Assistants

AI-powered tools like GitHub Copilot, Cursor, and Windsurf significantly boost developer productivity, potentially turning average developers into 10x developers. While AI can handle basic tasks, developers with domain knowledge are crucial for breaking down complex problems and guiding AI to optimal solutions.

Cover Image for Effortless Offloading: Next.js Meets WebWorkers

Effortless Offloading: Next.js Meets WebWorkers

In this post, we build an image preview page, discover its limitations, and then offload the work to WebWorkers to achieve high performance by using the next-webworker-pool NPM package.

Cover Image for Level up your React codebase quality

Level up your React codebase quality

In this blog post, we will explore strategies and best practices for improving code quality in React applications. Whether you're a seasoned React developer or just getting started, you'll find valuable insights to elevate your codebase and streamline your development process.

Cover Image for Effective communication for software engineers

Effective communication for software engineers

As a software engineer, discussing technical subjects with colleagues from other departments needs to happen as flawlessly as possible. In this post, I describe my approach to maximize the value of any meeting.

Cover Image for Using i18n programmatically in Angular

Using i18n programmatically in Angular

This blog post describes my approach to using i18n in Angular components, in a programmatical way. The example usecase in this blog post is displaying API error messages in an user-friendly way, but the approach is generic to any usecase.