In Praise of TestDriven.NET
I’ve been using TestDriven.NET by Jamie Cansdale for quite a few years now. Ostensibly it’s a unit test runner, but that is not the real reason why you should use it. The killer feature, the one that...
View ArticleEasyNetQ: Publishing Non-Persistent Messages
In AMQP, buried in the basic.properties object that gets sent along with each published message, there is a delivery_mode setting. You can set it to either ‘persistent’ (1), or ‘non-persistent’ (2). It...
View ArticleEasyNetQ: A Layered API
I had a great discussion today on the EasyNetQ mailing list about a pull request. It forced me to articulate how I view the EasyNetQ API as being made up of distinct layers, each with a different...
View ArticleEasyNetQ: Client Details in Connection String
From version 0.27.3 of EasyNetQ, you can set your client product name and platform in the connection string:var bus = RabbitHutch.CreateBus("host=localhost;product=pdf.render;platform=snowball");These...
View ArticleGit Tips: Revert with a new commit
Sometimes you want to set the state of your project back to a previous commit, but keep the history of all the preceding changes. You want to make a commit that reverses all the changes between your...
View ArticleCoconut Headphones: Why Agile Has Failed
The 2001 agile manifesto was an attempt to replace rigid, process and management heavy, development methodologies with a more human and software-centric approach. They identified that the programmer is...
View ArticleHow To Add Images To A GitHub Wiki
Every GitHub repository comes with its own wiki. This is a great place to put the documentation for your project. What isn’t clear from the wiki documentation is how to add images to your wiki. Here’s...
View ArticleDocker: Bulk Remove Images and Containers
I’ve just started looking at Docker. It’s a cool new technology that has the potential to make the management and deployment of distributed applications a great deal easier. I’d very much recommend...
View ArticleA Docker ‘Hello World' With Mono
Docker is a lightweight virtualization technology for Linux that promises to revolutionize the deployment and management of distributed applications. Rather than requiring a complete operating system,...
View ArticleA Contractor’s Guide To Recruitment Agencies
I haven’t contracted through an agency for a long time, but I thought I’d write up my experiences from almost ten years of working as an IT contractor for anyone considering it as a career choice.IT...
View ArticleJSON Web Tokens, OWIN, and AngularJS
I’m working on an exciting new project at the moment. The main UI element is a management console built with AngularJS that communicates with a HTTP/JSON API built with NancyFX and hosted using the...
View ArticleHeisenberg Developers
TL:DR You can not observe a developer without altering their behavior.First a story.Several years ago I worked on a largish project as one of a team of developers. We were building an internal system...
View ArticleHire Me
I’m on a sales drive. I want to move away from daily-rate contracting, and focus on full-lifecycle project delivery. I’ve created a new website to help market myself http://mikehadlow.com/. I’m looking...
View ArticleThe Lava Layer Anti-Pattern
TL:DR Successive, well intentioned, changes to architecture and technology throughout the lifetime of an application can lead to a fragmented and hard to maintain code base. Sometimes it is better to...
View ArticleBasic OWIN Self Host With F#
I’m still very much an F# noob, but yesterday I thought I’d use it to write a little stub web service for a project I’m currently working on. I simply want to respond to any POST request to my service....
View ArticleA Simple Nowin F# Example
In my last post I showed a simple F# OWIN self hosted server without an application framework. Today I want to show an even simpler example that doesn’t reference any of the Microsoft OWIN libraries,...
View ArticleInject DateTime.Now to Aid Unit Tests
If you have logic that relies on the current system date, it's often difficult to see how to unit test it. But by injecting a function that returns DateTime.Now we can stub the current date to be...
View ArticleC#: How to Record What Gets Written to or Read From a Stream
Streams are a very nice abstraction over a read/write loop. We can use them to represent the contents of a file, or a stream of bytes to or from a network socket. They make it easy to read and write...
View ArticleC#: Program Entirely With Static Methods
OK, that’s a provocative title to get your attention. This post is really about how one can move to a more functional programming style and remove the need for much of the apparatus of object-oriented...
View ArticlePartial Application in C#
My recent post, C# Program Entirely With Static Methods, got lots of great comments. Indeed, as is often the case, the comments are in many ways a better read than the original post. However, there...
View Article