2026
AI Agent Workflows to Adopt in 2026
A summary of best practices for integrating AI agents into software development workflows, transforming engineers into technical architects and orchestrators that can realise complex software systems with unprecedented efficiency.
The Vibe-Driven Development Paradox
A synthesis of the AI-automation narrative from leaders across the industry, and why more autonomy paradoxically demands more human supervision.
2025
A Developer's Glossary to Modern AI - Tokens, Agents, and MCP
A quick guide to demystify the core concepts that power modern AI applications, from the fundamental unit of data to the protocols that let them interact with the world.
Trust, Security and Accountability in the AI Era
As AI becomes increasingly integrated into software development workflows, establishing robust governance frameworks becomes critical. This post outlines practical principles and engineering controls to maintain security, accountability, and trust when working with AI-assisted development tools.
AWS Lambda Cold Starts Refresher - Understanding Performance and Mitigation Strategies
Cold starts in AWS Lambda can significantly impact application performance, especially for user-facing workloads. This refresher explores what cold starts are, why they happen, and practical strategies to mitigate their impact on your serverless applications.
2024
Serverless - A Powerful Tool, But No Silver Bullet
Serverless is a a great tool to go to production swiftly but it is not a silver bullet. It has its own set of challenges.
2019
Awesome libraries and tools for .NET (Core and Full framework)
A list of awesome libraries and tools for .NET (Core and Full framework)
Making sense of ASP.NET Core Metapackage Versioning
Understaning how TFM (Target Framework Moniker) and the Microsoft.AspNetCore.App metapackage versioning work together
2018
Nuget CLI (Command Line Interface) - tips, tricks and gotchas (Mac and Windows)
Nuget CLI can be a powerful ally - once you get past little gotchas. This post documents my adventures and learnings whilst trying to leverage the CLI across Mac and Windows
Setting up environment variables on Mac
How to setup environment variables on Mac OSX
Setting up Azure CLI on mac
How to setup environment variables on Mac OSX
A set of coding and code review guidelines inspired by "The Zen of Python
I recently started learning Python, and came across what the Python community calls "The Zen of Python". Somehow, I felt that it can form the basis of what could be simple to follow coding and code review guidelines. This post is my attempt to extract a set of guidelines out of "The Zen
2017
My take on the net-neutrality debate
The topic of net neutrality has been in the news again following a decision by US agency FCC (Federal Communications Commission) to overturn its ruling from 2015. This has ramifications for all of us. I explain what net neutrality is (at least what I understand of it) and why it matters.
Notes from Jeff Patton's talk - Requirements, Product Ownership and Agile Development
A transcript and my notes from Jeff Patton's talk on Requirements, Product Ownership and other misunderstood concepts in Agile Development
Fix branch hierarchies in git
You use git, good on ya! You branched off of a branch that should've been left alone. How do you change the "parent" of the new branch?!
Targeting .NET 4.7 from Visual Studio 2017
Developer tools have a way of stumping you in the most unexpected of ways. This post analyses and then illustrates how to get VS 2017 list .NET 4.7 as a target framework for your projects, minus the pain.
Taming bash on Ubuntu on Windows 10 Creators Update!
For the uninitiated, you can now run a real bash prompt on Windows 10 Anniversary Update or higher. Let's try to make sense of what's going on with that!
2016
C# 7 Says Hello World!
My favourite features from the newly minted 7th edition of my favourite programming language C#!
Learn Open Source (or anything!)
Free self-taught Computer Science for everyone (and pointers to learn stuff quickly)
C# 6.0 Features Not Working with MVC 5 / Visual Studio 2015 / Razor
How I got out of the dreaded yellow screen of death in an MVC5 project
IIS Express 500.19 Cannot read configuration file - because it's looking at the wrong path!
Getting out of a vicious and unnerving IIS express issue
WCF service startup error "This collection already contains an address with scheme http
Fixing WCF Deployment issues on shared hosting
Avoiding an Identity Crisis (in your apps)
In your code, an entity requires a unique ID - A Customer ID, Order ID, Message ID. SQL Identity columns do not cut it for you and the default GUID class isn't suitable either. There's hope though!
2015
IDisposable Pattern - A refresher on the need and correct implementation
One may wonder why another post on IDisposable? After all, how difficult could an implementation of an interface that has only one void parameter-less method be? Well, read on to find out.
Programmer Interviews and the law of “Leaky Abstractions”
My thoughts after conducting 20 odd technical interviews, trying to correlate two seemingly divergent aspects of the tech life.
Double Check Locking in C# - End of life?
After having a discussion with a colleague, I was researching for the correct way to implement double-check locking in C# and .NET 4.5. Turns out a lot of water has flown under the bridge and things have changed quite a bit. I'll try to document my findings here.
NUnit Assertions - IsAssignableFrom and IsInstanceOf
Tiny goodies from my experiences with NUnit
Logging Frameworks for .NET
A monologue about the available options when it comes to logging frameworks for .NET applications
ASP.NET Web API - Content Negotiation, Content-Type, Accept and Accept-Charset in a nutshell
My take on content negotiation, REST, HTTP and how it all comes together in ASP.NET Web API
First Chance exceptions - What are the chances?
Ever noticed your Visual Studio output windows show pesky First Chance exception messages? Read on to find out what they are.