Simulate Hardware With Tests

I’ve long been fascinated by the idea of automated testing of production software. The problem I faced in implementing anything like “automated testing” was that I couldn’t figure out how to do it with embedded firmware. Writing firmware can be tricky. There are often dependencies that you can’t control. Typical problems include:  How do you […]

Flawed Conclusions

I once heard about a researcher that was studying a rare breed of frog that had some incredible jumping abilities. On a good day, with wind at its back, it was said the species could jump a good 30+ feet. This may not sound impressive to you but… for a frog? Trust me, it’s impressive. […]

Polishing the Curves

Tell me if this has ever happened to you. When going over some code, I discovered a chunk of “working” code that had an incredibly … amateurish implementation. The sad part wasn’t that the code-quality was poor. No, the sad part was: I was the fool that had written it. In my defense, these perceived […]

Version Control is a Solved Problem

There are a lot of really interesting open problems in software but there’s one problem that I keep seeing professionals walk into that deserves a mention. Not because it’s an unsolved problem but because it has actually been solved. Many. Times. Repeatedly. Let me cut to the chase. If you write software, you need to […]

Be Transparent

My sister and I have chosen incredibly different career paths. She does graphic design for a multinational corporation and I… Well, I have chosen the path of writing software. Over the years, it’s been fun to discover places where ideas from our professional lives intersect into each others’ fields. Two of these realizations came to […]

Consider The Customers

It often surprises me when my fellow software engineers seem to forget our customers when designing software. There are at least three major customers for any piece of software and it pays to remember their needs with every software project. The first group of customers are our bread-and-butter. They are the users of the software; […]