I'm just about due for another recreation of my blog, so here we are. Last time, I switched from a CMS to a statically generated website, using my own static site generator. This time, I'm taking it a step further and, in addition to recreating my static site generator in…
Continue reading

I recently read a rather interesting post by Martin Fowler regarding function length, where he suggested that very small functions that encompass the implementation for a single intention are ideal. I have a somewhat different view of this argument, which also happens to touch on larger concerns of software design…
Continue reading

In part 1 I explained some of the basic concepts behind the hackintosh, and in part 2 I showed the easy way to create a hackintosh VM using VirtualBox. In this post I'll show the harder, but more flexible, way, which will allow you to have a custom screen resolution…
Continue reading

In part 1 I explained some of the basic concepts behind the hackintosh. In this post I'll show the easy way to get a VirtualBox-based hackintosh system up and running.
Continue reading

Virtualization powers a lot of infrastructure today, and there have been countless advances made in this field during the last few years. CPUs support more and more advanced hypervisor scenarios, while operating systems gain better and better native virtualization capabilities. Today, even macOS is virtualizable to a significant degree using…
Continue reading

There are quite a few projects out there that stuff a Raspberry Pi inside a Nintendo Entertainment System case to be able to play emulated NES games. My friend Shane and I decided to do one of these projects. But we didn't want just another RPi emulation system. We wanted…
Continue reading

In part 5 we discussed how integration testing is used to improve the quality of software at a higher level than unit testing and when it should - and shouldn't - be used. As I mentioned in that post, integration tests aren't suited for testing functionality that relies on slow…
Continue reading

As you will recall from part 4, we left off with a problem. All the unit tests for the relative time formatter v2 passed, but I explained that there was, in fact, a bug in how the day formatter was being called. The bug wasn't caught by the unit tests…
Continue reading

In part 3 I discussed some of the good habits surrounding unit testing, such as determining how much to cover in your tests and avoiding the temptation to test internal implementation details. In this part we'll continue to explore unit testing with a focus on verifying external interactions in a…
Continue reading

The first and second parts of this blog post series are an overview of automated software testing, with part 1 focusing on the why and part 2 a pretty high-level how. Now, with the third part, let's delve deeper into the how of unit tests specifically.
Continue reading