Is Code Rotting Due To AI?
September 3, 2025

Is Code Rotting Due To AI?

AI generated code has a 12% survival rate... Are we cooked or is this a new dev methodology?

The Integration Illusion
August 30, 2025

The Integration Illusion

Stop building bespoke connectors for every platform.

When MCP Fails
August 26, 2025

When MCP Fails

Most MCP implementations miss the entire point. By wrapping APIs instead of designing for intent you'll never build automation that actually works.

Context Engineering
August 22, 2025

Context Engineering

We are shifting from prompt engineering - crafting the perfect string - to Context Engineering: treating the information environment around language models as a proper engineering problem. This post is how to do exactly that.

Stop Email Spoofing with DMARC
August 5, 2025

Stop Email Spoofing with DMARC

Anyone can forge emails from your domain. Here's how to fix that with SPF, DKIM, and DMARC.

SOTA Embedding Retrieval: Gemini + pgvector for Production Chat
July 21, 2025

SOTA Embedding Retrieval: Gemini + pgvector for Production Chat

How we achieved 2x faster vector search with identical recall using Gemini embeddings, task-optimized retrieval, and pgvector's half-precision quantization.

A Review of Agentic Design Patterns
June 21, 2025

A Review of Agentic Design Patterns

This review maps out key design patterns in agentic workflows and provides practical guidance on when and how to use them effectively.

Building AI Agents for Automated Podcasts
January 1, 2025

Building AI Agents for Automated Podcasts

How I built an automated multi-agent system that transforms AI news into weekly podcasts, newsletters, and social media content using LangGraph, topic modeling, and TTS - all running autonomously on ECS.

Rediscovering Cursor
December 2, 2024

Rediscovering Cursor

A structured approach to working with Cursor AI that transforms frustration into productivity through proper workflow and context management.

GraphRAG > Traditional Vector RAG
August 8, 2024

GraphRAG > Traditional Vector RAG

Traditional Vector based RAG has too many shortcomings. GraphRAG instead uses a Knowledge Graph for richly understanding text datasets, making RAG great again.

Cultural Bias in LLMs
July 20, 2024

Cultural Bias in LLMs

An experiment into cultural biases in LLMs using the Inglehart-Welzel Cultural Map method - revealing unexpected value alignment across both Western and Chinese LLMs

Mapping out the AI Landscape with Topic Modelling
July 7, 2024

Mapping out the AI Landscape with Topic Modelling

Tackling information overload by using topic modeling techniques to map out the AI landscape, helping us access valuable AI news and trends!

Sustainable Cloud Computing: Carbon-Aware AI
June 27, 2024

Sustainable Cloud Computing: Carbon-Aware AI

When selecting a cloud compute region for your ML workloads you will often need to account for latency, cost, services and features, compliance, etc. But in this article I explore how you can also consider your carbon footprint as part of your selection criteria.

Defensive Technology for the Next Decade of AI
June 24, 2024

Defensive Technology for the Next Decade of AI

Exploring defensive technologies to mitigate AI risks and ensure safe and secure advancements in the next decade.

Situational Awareness: The Decade Ahead
June 13, 2024

Situational Awareness: The Decade Ahead

As developers, we often just focus on the technical aspects of AI without ever considering the broader geopolitical implications. From Leopold Aschenbrenner's 'Situational Awareness', I summarise his insights on the rapid development of AI and the path to AGI & ASI, as well as the geopolitical and security challenges we face with AI.

Mechanistic Interpretability: A Survey
June 7, 2024

Mechanistic Interpretability: A Survey

Exploring how sparse autoencoders unlock interpretable features in language models to enhance AI safety and understanding.

May 24, 2024

Why I Left Ubuntu

I recently upgraded to Ubuntu 20.04 LTS, but my experience wasn't as smooth as I'd hoped. Here's why I decided to switch back to Windows and my setup process for an optimal development environment.

Multi-Agent Collaboration
April 16, 2024

Multi-Agent Collaboration

Exploring how collaborative autonomous agents improve complex problem-solving through behavior simulation, data construction, and enhanced performance.

Building Better Retrieval Systems
March 28, 2024

Building Better Retrieval Systems

Explore how embedding models and vector databases can enhance retrieval systems in AI, with practical tips and insights for optimizing retrieval-augmented generation (RAG) systems.

Building an Automated Newsletter-to-Summary Pipeline with Zapier AI Actions vs AWS SES & Lambda
February 3, 2024

Building an Automated Newsletter-to-Summary Pipeline with Zapier AI Actions vs AWS SES & Lambda

Create an automated system that transforms newsletters into AI-generated summaries using Zapier and Telegram, then rebuild it with AWS SES & Lambda for a serverless solution.

Deploy your own ChatGPT with Ray, AWS EKS, and Kubernetes
January 13, 2024

Deploy your own ChatGPT with Ray, AWS EKS, and Kubernetes

Learn how to deploy your own ChatGPT using Ray for distributed computing, AWS EKS for managed Kubernetes, and leverage the power of scalable infrastructure for AI workloads. This tutorial walks through the entire deployment process step by step.

Local AI Image Generation
December 15, 2023

Local AI Image Generation

How to generate stunning AI images locally using Stable Diffusion XL and checkpoints like Juggernaut.

November 15, 2023

Deploying a Distributed Ray Python Server with Kubernetes, EKS & KubeRay

Complete guide to deploying distributed Python servers using Ray, Kubernetes, and AWS EKS with production-ready configurations.

Making the Switch to Linux for Development
October 24, 2023

Making the Switch to Linux for Development

A comprehensive guide to switching from Windows to Linux for development, including setup procedures and essential tools.

Scaling Options Pricing with Ray
October 1, 2023

Scaling Options Pricing with Ray

Transform sequential Python option pricing code into a distributed application with minimal changes using Ray framework.

September 23, 2023

The Async Worker Pool

When developing applications that require high-concurrency, efficiency, and robust error-handling, the Async Worker Pool pattern in Python can be a valuable pattern.

Browser Fingerprinting: Introducing My First NPM Package
September 8, 2023

Browser Fingerprinting: Introducing My First NPM Package

Browser fingerprinting with a zero-dependency NPM package that offers a swift, synchronous function for browser fingerprint computation without user permissions or cookies.

Reading Data from @socket.io/redis-emitter without Using a Socket.io Client
July 6, 2023

Reading Data from @socket.io/redis-emitter without Using a Socket.io Client

In this article, we explore the challenge of reading data from @socket.io/redis-emitter without a socket.io client and present a clean and effective solution by decoding using the notepack.io.

July 1, 2023

Socket.io Middleware for Redux Store Integration

Integrating Socket.io with Redux through middleware for a robust and elegant solution for handling real-time communication in React.

April 21, 2023

Sharing TypeScript Code Between Microservices: A Guide Using Git Submodules

Share TypeScript code between microservices using Git submodules, allowing for modular code management and easy updates.

Efficient Dataset Storage: Beyond CSVs
February 3, 2023

Efficient Dataset Storage: Beyond CSVs

Binary formats like Pickle and Parquet offer enhanced performance for both reading and compression compared to traditional CSV storage.

Why I switched from Plain React to Next.js 13
November 8, 2022

Why I switched from Plain React to Next.js 13

Making the switch from React to Next.js? This article explores how Next.js 13 revolutionizes the scene with upgraded development, performance, and user experience functionalities.

Deploy & Scale Socket.io Containers in ECS with Elasticache
November 3, 2022

Deploy & Scale Socket.io Containers in ECS with Elasticache

Explore the process of deploying and scaling a Socket.io server in Amazon Elastic Container Service (ECS) with Redis using Elasticache

Implementing TOTP Authentication in Python using PyOTP
September 13, 2022

Implementing TOTP Authentication in Python using PyOTP

Build secure two-factor authentication with time-based one-time passwords using PyOTP and integrate with Google Authenticator.

Simplifying Lambda Layer ARNs and Creating Custom Layers in AWS
September 9, 2022

Simplifying Lambda Layer ARNs and Creating Custom Layers in AWS

AWS Lambda deployments using pre-existing Lambda Layers as well as creating custom Lambda Layers from scratch using Flask as an example.

TimeScaleDB Deployment: Docker Containers and EC2 Setup
June 23, 2022

TimeScaleDB Deployment: Docker Containers and EC2 Setup

Complete guide to deploying TimeScaleDB locally with Docker passthrough mounts and on Amazon EC2 for scalable time-series data management.

How to SSH into an EC2 Instance Using PuTTY
December 16, 2021

How to SSH into an EC2 Instance Using PuTTY

A step-by-step guide to securely accessing AWS EC2 instances using PuTTY by converting .pem files to .ppk format.