RSSAmplifier

Blog

Alex O'Callaghan

Alex O'Callaghan

alexocallaghan.comRSS feed ↗35 posts

Latest posts

Parity before cutover

How downgrading a service unblocked its cloud migration: incremental releases beat big-bang cutovers for legacy upgrades.

June Reading List

A collection of interesting things I've read in June.

Faster micro-frontends: optimising CDN behaviour for performance

How optimising CDN caching improved performance metrics for our microfrontend architecture

Building my son a Minecraft phonics game with AI

I built a Minecraft phonics game for my son using AI, tailoring a game to his interests and learning needs

May Reading List

A collection of interesting things I've read in May.

Measuring before tooling: where AI investment in engineering should go

To target investment where it can make the biggest difference, start with measurement and understanding before rolling out more tools.

April Reading List

A collection of things I read in April that stuck with me, covering AI agents, tooling and other interesting blog posts.

Hardening npm dependency security

Approaches to reduce the risk of supply chain attacks in npm dependencies.

Caching & CDNs with micro-frontends

How we've approached caching in a micro-frontend architecture

You can't trust agent tests

Why passing tests aren't correct tests, and how to get an agent to validate them

Moving fast with agents without losing comprehension

On test coverage, code authorship, and what reviewers need from you when agents are doing the writing

AI agents and platform teams

How I'm using AI agents for platform team work

React design system library MCP

Exposing Storybook documentation to AI agents via an MCP server

Open sourcing our microfrontend React bridge

A library for rendering microfrontends in separate React trees

Reflecting on Enterprise Engineering Summit 2025

Key takeaways from the Enterprise Engineering Summit 2025

Migrating to Vite

Switching to use Vite for building a React component library

Package exports and eslint-plugin-import

Resolving package.json exports with eslint-plugin-import

Creating your own React design system analytics tool

Using react-scanner to implement an Omlet alternative

Upgrading React with micro-frontends

How to upgrade React incrementally across multiple micro-frontends

Module not available for eager consumption

Fixing a Module Federation error

Delay using a federated module

Ensure federated module has loaded before using it

Using the experimental React Compiler

Trying out the React Compiler with React 19 beta

Using GitLab API to create a DORA metrics dashboard

Measure developer team productivity using deployment frequency and lead time for changes

Using TypedDict with invalid attribute names

How to use a TypedDict with item keys that aren't valid identifiers

Mock server-sent events (SSE) with msw

Mock Service Worker supports mocking SSE

Exclude node_modules with Webpack

Avoid bundling dependencies when building a library

Accessibility testing

Overview of approaches and tools for testing web accessibility

Dynamically load remoteEntry.js files

Control loading Webpack Module Federation remoteEntry.js files to improve peformance

Configure Boto3 endpoint_url

Use environment variables to point Boto3 at local services

Mocking Boto3 with pytest

Mock requests to AWS services with pytest

Platform team challenges

Challenges faced when introducing a platform team

Python TypedDict with Generics

How to define a Python type for a dict with generic values

Contract testing with OpenAPI & TypeScript

Validate contracts between backend services and frontend applications

Design system management

Processes and challenges in managing an adopted design system

Adopting a micro-frontend architecture

Supporting scaleable web application development with micro-frontends