We're hiring!

We're actively seeking developers & designers for our new Detroit location. Learn more

Some Tweaks for C Development to Help with TDD

Test driven development may not feel like a natural fit for C at first, but a few tweaks to your methodology can help you get back into the rhythm you’re used to when test driving in other languages.
Posted in Embedded Software | Tagged , , , | 3 Comments

Using Text.Parsec.Indent to parse an indentation-sensitive language with Haskell’s Parsec library.

A simple example of using the 'indents' library to implement indentation parsing with Haskell's Parsec library.
Posted in Design & Development, Languages | Tagged , , | 1 Comment

Avoid Putting Preprocessor Directives in .c Files

The C Language has a heavy reliance on the C Preprocessor (CPP)–a preprocessor is a program that runs over a set of text files replacing specific patterns as it goes. The more I use C, the more I’ve become convinced that the CPP should be used only very rarely in .c files (though limited use…

Read More »

Posted in Uncategorized | 2 Comments

5 of the Things I’ve Learned in 44 Months

It’s been 44 months since I graduated from college. Here are 5 things I’ve learned about the software design and the surrounding business since then.

Posted in Business of Software, Culture | Tagged , , , , | Leave a comment

Stealing Ruby’s Gems

RubyGems can be used to ship arbitrary files. This post briefly discusses a method for injecting extra binary tools into a build process by means of a new tool called GemJacker.

Posted in Embedded Software, Tools | Leave a comment

Mistakes: Transparency is Best

If you’ve been working long enough, you’ve probably experienced your first big mistake. If you haven’t, they play out something like this in your head: “What? How can that be the case? I’m sure I checked all these things over several times and then I … oh … shit.” Mistakes happen. I’ve made my fair…

Read More »

Posted in Culture | 4 Comments

Taking the Training Wheels Off the Arduino

The Arduino IDE is great for embedded software novices, but what happens when you want to take the next step?

Posted in Embedded Software, Tools | Tagged , , | 1 Comment

Ramp-Up Counts as Technical Debt

Technical debt should not only be measured in terms of the trade-off between how thoroughly work is down now and how maintainable it is in the future. We should also measure technical debit in terms of how much effort is required to move some one new onto the team.

Posted in Project Planning, Risk | Leave a comment

An Excellent Mentor

To me, ‘mentorship’ was one of those buzz-words that felt forced when used. I thought it fell in the same category as words like ‘synergy’, ‘cohesive’, and ‘value-added’. It was an ivory-tower title that was impossible to apply to a busy individual in a fast-paced work environment. It was a title, but nothing more.

My definition of ‘mentor’ has changed.

Posted in Community, Culture | 1 Comment

A Piece of Advice

I recently came across a piece of writing attached to the end of Learn Python the Hard Way. I’ve been trying to find something to add to it, but really, it would be best if I just shared the link. Take a moment to read some “Advice From an Old Programmer“.

Posted in Reviews | Leave a comment