Get started with AppVeyor and GitHub

posted in: Build & Deployment, CI, Open source | 0

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.

Effective testing with mocks

posted in: Mocks, Opinion, System design, Testing | 0

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.

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…

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’!

Log4Net.MessageEncryptor – Encrypting .NET logs one message at a time

posted in: c#, Open source | 0

Launching a tool that allows you to encrypt log messages whilst leaving all the log statement meta data intact. The Log4Net message encryptor does exactly what it says in the title… it encrypts the log messages and only the messages. This means that all the time-stamps, log levels, thread information and any other metadata remain in plaintext within your logs. The tool uses the concept of the log4net forwarding appender meaning that any appenders referenced by the MessageEncryptingAppender receive a logging object containing the encrypted message contents, therefore, this tool should be compatible with any other appenders used by your current solution. The upshot of this is that log message encryption should be able to be plumbed into an existing solution with minimal effort and rework.

Architecture anti-pattern: ‘one architecture to rule them all’

Exploring the need to constantly refine software architecture and in some cases start from scratch by looking at some architecture/system design anti-patterns. This post explores the situation where there is one overriding system design that all projects must work within irrespective of the actual project requirements.