41554 blogs · [ { "id": "01a08724-9b62-72e0-945e-cd3e60167c9c", "title": "Implementing a retrospective agent: how it works", "url": "https://alexocallaghan.com/retro-agent-how-it-works", "published_at": "2026-08-20T00:00:00+00:00" }, { "id": "01a08724-9b62-72e0-945e-cd3e60af82e5", "title": "Parity before cutover", "url": "https://alexocallaghan.com/parity-before-cutover", "published_at": "2026-07-23T00:00:00+00:00" }, { "id": "01a08724-9b62-72e0-945e-cd3e618ab8e4", "title": "June Reading List", "url": "https://alexocallaghan.com/june-2026-reading-list", "published_at": "2026-07-08T00:00:00+00:00" }, { "id": "01a08724-9b62-72e0-945e-cd3e6218dc29", "title": "Faster micro-frontends: optimising CDN behaviour for performance", "url": "https://alexocallaghan.com/faster-microfrontends-cdn-optimisation", "published_at": "2026-06-22T00:00:00+00:00" }, { "id": "01a08724-9b62-72e0-945e-cd3e629c7b44", "title": "Building my son a Minecraft phonics game with AI", "url": "https://alexocallaghan.com/minecraft-phonics-game", "published_at": "2026-06-09T00:00:00+00:00" }, { "id": "01a08724-9b62-72e0-945e-cd3e6344e63a", "title": "May Reading List", "url": "https://alexocallaghan.com/may-2026-reading-list", "published_at": "2026-06-02T00:00:00+00:00" }, { "id": "01a08724-9b62-72e0-945e-cd3e6383d53b", "title": "Measuring before tooling: where AI investment in engineering should go", "url": "https://alexocallaghan.com/measuring-before-tooling", "published_at": "2026-05-14T00:00:00+00:00" }, { "id": "01a08724-9b62-72e0-945e-cd3e646551b1", "title": "April Reading List", "url": "https://alexocallaghan.com/april-reading-list", "published_at": "2026-04-30T00:00:00+00:00" }, { "id": "01a08724-9b62-72e0-945e-cd3e655c7f7a", "title": "Hardening npm dependency security", "url": "https://alexocallaghan.com/hardening-npm-dependency-security", "published_at": "2026-04-22T00:00:00+00:00" }, { "id": "01a08724-9b62-72e0-945e-cd3e66089fe8", "title": "Caching & CDNs with micro-frontends", "url": "https://alexocallaghan.com/caching-cdn-with-microfrontends", "published_at": "2026-04-15T00:00:00+00:00" }, { "id": "01a08724-9b62-72e0-945e-cd3e66c496c8", "title": "You can't trust agent tests", "url": "https://alexocallaghan.com/you-cant-trust-agent-tests", "published_at": "2026-04-09T00:00:00+00:00" }, { "id": "01a08724-9b62-72e0-945e-cd3e675cbb4a", "title": "Moving fast with agents without losing comprehension", "url": "https://alexocallaghan.com/moving-fast-with-agents-without-losing-comprehension", "published_at": "2026-03-23T00:00:00+00:00" }, { "id": "01a08724-9b62-72e0-945e-cd3e677ade0b", "title": "AI agents and platform teams", "url": "https://alexocallaghan.com/ai-agents-platform-team", "published_at": "2026-03-12T00:00:00+00:00" }, { "id": "01a08724-9b62-72e0-945e-cd3e682f2a1f", "title": "React design system library MCP", "url": "https://alexocallaghan.com/react-design-system-library-mcp", "published_at": "2026-02-02T00:00:00+00:00" }, { "id": "01a08724-9b62-72e0-945e-cd3e686b0ef5", "title": "Open sourcing our microfrontend React bridge", "url": "https://alexocallaghan.com/open-sourcing-mfe-react-bridge", "published_at": "2026-01-23T00:00:00+00:00" }, { "id": "01a08724-9b62-72e0-945e-cd3e693ee8ef", "title": "Reflecting on Enterprise Engineering Summit 2025", "url": "https://alexocallaghan.com/enterprise-engineering-summit-reflection", "published_at": "2025-11-11T00:00:00+00:00" }, { "id": "01a08724-9b62-72e0-945e-cd3e6a1b6edd", "title": "Migrating to Vite", "url": "https://alexocallaghan.com/migrating-to-vite", "published_at": "2025-07-29T00:00:00+00:00" }, { "id": "01a08724-9b62-72e0-945e-cd3e6ac90d8c", "title": "Package exports and eslint-plugin-import", "url": "https://alexocallaghan.com/exports-and-eslint-plugin-import", "published_at": "2025-02-10T00:00:00+00:00" }, { "id": "01a08724-9b62-72e0-945e-cd3e6b8509cc", "title": "Creating your own React design system analytics tool", "url": "https://alexocallaghan.com/creating-your-own-react-design-system-analytics-tool", "published_at": "2024-11-13T00:00:00+00:00" }, { "id": "01a08724-9b62-72e0-945e-cd3e6bd916ab", "title": "Upgrading React with micro-frontends", "url": "https://alexocallaghan.com/upgrading-react-with-microfrontends", "published_at": "2024-10-23T00:00:00+00:00" }, { "id": "01a08724-9b62-72e0-945e-cd3e6caf54e8", "title": "Module not available for eager consumption", "url": "https://alexocallaghan.com/module-not-available-for-eager-consumption", "published_at": "2024-09-19T00:00:00+00:00" }, { "id": "01a08724-9b62-72e0-945e-cd3e6cb574e9", "title": "Delay using a federated module", "url": "https://alexocallaghan.com/delay-using-federated-module", "published_at": "2024-08-09T00:00:00+00:00" }, { "id": "01a08724-9b62-72e0-945e-cd3e6d7da93d", "title": "Using the experimental React Compiler", "url": "https://alexocallaghan.com/react-compiler", "published_at": "2024-05-20T00:00:00+00:00" }, { "id": "01a08724-9b62-72e0-945e-cd3e6e4d10e2", "title": "Using GitLab API to create a DORA metrics dashboard", "url": "https://alexocallaghan.com/dora-metrics-gitlab-api", "published_at": "2024-05-16T00:00:00+00:00" }, { "id": "01a08724-9b62-72e0-945e-cd3e6ef59670", "title": "Using TypedDict with invalid attribute names", "url": "https://alexocallaghan.com/using-typeddict-with-invalid-attribute-names", "published_at": "2024-04-17T00:00:00+00:00" }, { "id": "01a08724-9b62-72e0-945e-cd3e6f4ff36b", "title": "Mock server-sent events (SSE) with msw", "url": "https://alexocallaghan.com/mock-sse-with-msw", "published_at": "2024-04-05T00:00:00+00:00" }, { "id": "01a08724-9b62-72e0-945e-cd3e700054ef", "title": "Exclude node_modules with Webpack", "url": "https://alexocallaghan.com/exclude-node-modules-with-webpack", "published_at": "2023-09-15T00:00:00+00:00" }, { "id": "01a08724-9b62-72e0-945e-cd3e706a5c57", "title": "Accessibility testing", "url": "https://alexocallaghan.com/accessibility-testing", "published_at": "2023-09-07T00:00:00+00:00" }, { "id": "01a08724-9b62-72e0-945e-cd3e70ed0aec", "title": "Dynamically load remoteEntry.js files", "url": "https://alexocallaghan.com/dynamic-remote-entry", "published_at": "2023-08-11T00:00:00+00:00" }, { "id": "01a08724-9b62-72e0-945e-cd3e7110a423", "title": "Configure Boto3 endpoint_url", "url": "https://alexocallaghan.com/configure-boto3-endpoint-url", "published_at": "2023-08-05T00:00:00+00:00" }, { "id": "01a08724-9b62-72e0-945e-cd3e71351057", "title": "Mocking Boto3 with pytest", "url": "https://alexocallaghan.com/mocking-boto3-with-pytest", "published_at": "2023-07-25T00:00:00+00:00" }, { "id": "01a08724-9b62-72e0-945e-cd3e71380d09", "title": "Platform team challenges", "url": "https://alexocallaghan.com/platform-team-challenges", "published_at": "2023-07-24T00:00:00+00:00" }, { "id": "01a08724-9b62-72e0-945e-cd3e71521b36", "title": "Python TypedDict with Generics", "url": "https://alexocallaghan.com/python-typeddict-with-generics", "published_at": "2023-07-01T00:00:00+00:00" }, { "id": "01a08724-9b62-72e0-945e-cd3e719fb36b", "title": "Contract testing with OpenAPI & TypeScript", "url": "https://alexocallaghan.com/openapi-typescript-contract-testing", "published_at": "2023-06-16T00:00:00+00:00" }, { "id": "01a08724-9b62-72e0-945e-cd3e721f32d7", "title": "Design system management", "url": "https://alexocallaghan.com/design-system-management", "published_at": "2022-10-20T00:00:00+00:00" }, { "id": "01a08724-9b62-72e0-945e-cd3e72e38a9e", "title": "Adopting a micro-frontend architecture", "url": "https://alexocallaghan.com/tech-at-mintel-microfrontend", "published_at": "2022-04-20T00:00:00+00:00" } ] posts Claim your blog
Back to alexocallaghan.com
Blog · corpus.blog/blogs/alexocallaghan.com/posts

alexocallaghan.com

alexocallaghan.com

2026

2025

2024

2023

2022