Software craftsmanship by design

Get started with AppVeyor and GitHub

Ever since I dipped my toes into the world of Open Source software, I have long been impressed with one seemingly simple tool that AppVeyor. So many companies fail to get their build/CI tool spot-on, but I'm happy to report that AppVeyor is blindingly effortless to use delivering exactly what is needed without all the fuss. I first stumbled on this tool when I was looking for some way to use CI on my Log4Net Message Encryption library, as this library is ridiculously small I wanted a simple, lightweight tool to handle my builds... [AppVeyor enters stage right]. And the best thing about this tool, its free for open source projects! Just in case anyone is unsure about just how easy it is to get a build working with GitHub, I thought I'd write a quick article detailing the steps required to get started with AppVeyor and GitHub.

build-&-deployment 1 CI 1 open-source 2

Slightly confusing F# error messages

The confusion around the f# error: "This expression was expected to have type unit but here has type int". Exploring the unhelpfulness of an F# error message for someone new to the language.

.NET 2 f# 1

Effective testing with mocks

An article exploring some of the benefits of using mocks within unit tests: Isolation, Safety, Speed, Flexibility, Sanity check for good design. This article also looks at how the way you write and structure your functions can have an impact on their testing as well as the need for mocks within the tests themselves.

mocks 1 opinion 4 system-design 4 testing 1

Aspect orientated programming for fun and profit

What is AOP (Aspect orientated programming)? Before we kick off a quick delve into Aspect orientated programming, it would be good to make sure that we're all on the same page with regards to what we mean by the term AOP. There are quite a few references that you can use in order to define AOP, but for the purposes of this article, we'll use the following definition: A module that intercepts a call to a function in order to apply cross-cutting-concern functionality in a consistent manner either before or after the call. But what does this actually mean? Carry on reading to find out...

.NET 2 AOP 1 c# 4 enterprise-architecture 2 system-design 4

Dependency Injection: When is it appropriate to use?

A colleague of mine recently wrote a very nice article about knowing when to use Dependency Injection (DI) in a project. There are a whole load of great ideas and suggestions within this post and I strongly recommend you spending 5 minutes reading the article in its entirety. There were so many points that were raised that could spawn individual discussions but one leapt out at me which I thought warranted special attention: 'Practice makes perfect'!

dependency-injection 1 opinion 4 system-design 4 technical 3