1. Migrating my blog to Jekyll and GitHub Pages

    How I moved my blog to Jekyll and Github pages and the lessons I learnt along the way.…


  2. Microservice versioning; How to make breaking changes without breaking stuff

    Versioning is a tool which allows microservices to gain independence from each other while being able to grow and change. Its critical that when we make changes to a microservice we can do so in a way that we are confident will not break our consumers.…


  3. Library vs microservice

    Microservices and libraries both have benefits in terms of providing reusable components. This article looks at the differences between microservices and libraries and looks at why you might choose one over another.…


  4. How to Microservice

    Microservices are a SOA architecture which focuses on breaking a system down into smaller independent systems. I have been working with them for a while and in this series I will look at some of the things I have learnt about how to microservice.…


  5. The Authentication Proxy

    When we break down systems duplication and boiler plate drastically increases complexity. Authentication is one area where complexity can be introduced across all of our services at once. In this post I look at a pattern to decouple authentication from your system and allow a richer authentication experience without introducing complexity to every API in the system.…


  6. Composable Repositories - Nesting Extensions

    A look at several problems with nesting extension methods in LINQ and how to get around these issues with and expression visitor.…


  7. UI tests for OAuth applications are hard

    A look at the issues I faced writing UI tests for dotdev and why I built NoAuth to make testing easier…


  8. Manual decisions are the the enemy of consistency

    On why continuous deployment is better than continuous delivery…


  9. Composable repositories

    This post discusses some issues I have with traditional repository pattern implementations and how I use extension methods to get around them.…


  10. Writing valuable automated tests

    When I started working for myself on dotdev I spent quite a bit of time thinking about testing, and test automation as it's likely the only barrier between me missing something (which humans do) and that bug going live and annoying people. So I designed my test strategy around taking me missing things out of the picture (ie automation). Below are some of my thoughts around good and bad tests and how to get the best bang for your time when building automated tests.…