Software Design

Understanding design principles is essential - especially if you plan on breaking them. Getting pinned in a code review is never fun, but if you can clearly explain your reasoning then breaking the rules is fun!
The Subtle Arts of Logging and Testing

I'm a big fan of testing, but I get lazy sometimes and it ends up costing me money, directly.

🤖 Does Functional Programming Matter To You?

Learning Elixir changed me as a programmer, and learning functional concepts changed the way I think about writing software. How about you? Is functional proogramming a useful thing to learn?

Repositories and Unit of Work Don't Mix

There is a trend in the .NET space of trying to abstract EF behind a Repository. This is a fundamentally bad idea and hopefully I'll explain why.

Testing Your Code: TDD and BDD

Testing code has moved beyond the realm of QA and into the realm of design, asking you to think about what you do before you do it. Let's have a look at some strategies.

Principles of Software Design

You've heard the terms before: YAGNI, SOLID, Tell Don't ASK, DRY... what are they and what do they mean?

Design Patterns: Behavioral

Mediators, Decorators and Facades - this is the deep end of object-oriented programming and something you'll come face to face with as your application grows.

Design Patterns: Structural

As your application grows in size you need to have a plan to handle the increase in complexity. The Gang of Four have some ideas that could work for you.

Design Patterns: Creational

Tried and true design patterns for creating objects in an object-oriented language.