Introducing dependency injection into existing systems

A while ago I was faced with an interesting challenge: I was busy introducing dependency injection into an existing system. Almost every method call inside this system was a static call, so every class was hard coded to their dependencies. But, I might be going a little bit too fast here. What is dependency injection? […]

Keeping software releasable

A true software engineer wants to be able to release at any time with any application. An unexpected problem can require a hotfix, so you want to be ready for it. When maintaining more then ten, twenty or maybe even thirty applications, this becomes a problem. What is a good strategy for keeping software releasable? […]

Unit testing legacy applications

There are a lot of legacy applications out there without unit-tests. It would be very nice to have them, especially when you’re asked to fix a bug there. So, how can you start unit testing legacy applications? Lets start with a simple mantra. Test one unit at a time. These are unit-tests after all. There […]

Real life debugging

This follow-up of debugging mindset goes into real life debugging. By now you know the perfect debugging mindset: curious, humble and suspicious. Debugging consists of understanding the problem, reproducing it, finding the problem, finding the right place to fix it and to perform some after-care. Understanding the problem The first preparation you want to make […]

Debugging mindset – how to reason during debugging

Debugging is a large part of Software Engineering, and it’s really important to have the right debugging mindset. Debugging itself is a wide subject. It’s something you think everyone knows, but in the real world everyone has to reinvent the wheel themselves. It starts like this: There is a problem with my code, and I […]

PHP internals at a high level

Conceptually there are a lot of differences between running a program and writing a web application through PHP. This usually comes up when a programmer has to write their first ajax request. So, lets see how stuff works on the background. A short, high level, tour through PHP internals. How does the web work? Obviously […]

The transition to a dynamically typed language

The first thing I have to say, is that I love dynamically typed languages. They make it easy to play around with code, and are very productive in many ways. When a programmer that is used to programming in C/C++/Java/C# makes the switch to a scripting language, there is something weird that happens though. For […]