Experimenting with Clojure for a day

Ruby really is my favourite programming language, I love the clean syntax and the freedom that it gives you. Beyond debugging meta programming in gems far far away, I have no real trouble with solving problems in it. Many people say that it is too slow, but I have found that effective caching and background processing negates this for the majority of typical web apps.

Read more

When to avoid the DRY principle

The Don’t Repeat Yourself principle is probably one of the most widely recognised software design patterns out there; most beginners in the industry will have heard of it, and more seasoned engineers will have taken it further and see its use in other design patterns such as Service-Oriented Architecture, Inversion of Control and Composability over inheritance.

Read more

Why be defensive about programming?

Programming style is often categorised by language or architecture, but the code style also can differ a lot within the same kind of architecture. Defensive programming is derived from the notion that very few things can be trusted when running a program, and adding more checks help to improve the stability of it.

Read more

Should Customers Pay for Bugfixes?

Whether or not you agree with the basic premise of this article, I’m sure you’ll be able to agree that any software project of a reasonable size will have bugs. The way these bugs are dealt with can often become an obstacle to forming a healthy relationship with the customer, and can even impede the software development process itself. There’s many ways to approach this issue, and I’m going to start with a common one.

Read more

9 Benefits of Test Driven Development

Test Driven Development is the practice of writing a test for a piece of required functionality, before writing any implementation code. This test should fail when first run, and then, you write the code to get it to pass. It doesn’t have to be the most perfect code, just so long as the test passes. Once it does, you can then safely refactor your code.

Read more