Category Archives: Software Development

CIS: Lock Leaks

The two most popular threading APIs, the Windows API and pthreads, both have the same basic way of locking and unlocking a mutex — that is, with two separate functions. This leaves the code prone to lock leak: the thread … Continue reading

Posted in Common Issues with Synchronization | Tagged | Comments Off on CIS: Lock Leaks

CIS: Unexpected Coupling

One of the most common problems with synchronization occurs when things need each other that you didn’t expect to need each other.

Posted in Common Issues with Synchronization | Comments Off on CIS: Unexpected Coupling

Three ideas you should steal from Continuous Integration

I like Continuous Integration — a lot. Small incremental changes, continuous testing, continuous builds: these are Good Things. They provide statistics, things you can measure your progress with. But Continuous Integration requires an investment on the part of the development … Continue reading

Posted in Quality, Software Development, Software Engineering, Software Testing | Tagged | Comments Off on Three ideas you should steal from Continuous Integration

The story of “Depends”

Today, I announced on behalf of my company, Vlinder Software, that we would no longer be supporting “Depends”, the dependency tracker. I think it may be worthwhile to tell you a by about the history of Depends, how it became … Continue reading

Posted in Anecdotes, Software Development | Tagged | Comments Off on The story of “Depends”

Bungee coding

For the last few weeks, I’ve been doing what you might call bungee coding: going from high-level to low-level code and back. This week, a whole team is doing it — fun!

Posted in Embedded software development, Software Development, Software Engineering | Comments Off on Bungee coding

Radical Refactoring: Breaking Changes

One of the most common sources of bugs is ambiguity: some too-subtle API change that’s missed in a library update and introduces a subtle bug, that finally only gets found out in the field. My answer to that problem is … Continue reading

Posted in Anecdotes, C & C++, C++ for the self-taught, Embedded software development, Radical Refactoring | Comments Off on Radical Refactoring: Breaking Changes

Improving the BrainF interpreter

As I wrote in a previous post, I wrote a BrainF interpreter in VHDL over a week-end. I decided to improve it a bit.

Posted in Software Development, VHDL | Tagged | Comments Off on Improving the BrainF interpreter

Radical Refactoring: Have the compiler to (some of) the reviewing

One of the most common sources of bugs is ambiguity: some too-subtle API change that’s missed in a library update and introduces a subtle bug, that finally only gets found out in the field. My answer to that problem is … Continue reading

Posted in Anecdotes, C & C++, C++ for the self-taught, Embedded software development, Radical Refactoring | Comments Off on Radical Refactoring: Have the compiler to (some of) the reviewing

Writing a BrainF interpreter … in VHDL

I’ve written parsers and interpreters before, but usually in C++ or, if I was feeling like doing all of the hard work myself, in C.

Posted in Software Development, VHDL | Tagged | Comments Off on Writing a BrainF interpreter … in VHDL

Optimization by puzzle

Given a query routine that takes a name and may return several, write a routine that takes a single name and returns a set of names for which each of the following is true: For each name in the set, … Continue reading

Posted in Algorithms, C & C++, C++ for the self-taught, Software Design, Software Development, Software Engineering | 1 Comment