• Pocket article: Undefined Behavior Sanitizer Trap on Error

    This post is a brief overview on how the Undefined Behavior Sanitizer can be used to trap unintentional or error prone parts of a C program. We’re going to look at how it’s used on a desktop program, as well as a way to use it in small embedded programs!

  • What we've been reading in May

    Here are the articles, videos, and tools that we’ve been excited about this May.

  • Firmware Static Analysis with CodeChecker

    In this post, I go over how to set up CodeChecker on a firmware project to reap the benefits of static analysis. I’ll also cover ways to deal with false positives, and configure your assert functions to be analysis-friendly.

  • Practical Design Patterns: Opaque Pointers and Objects in C

    Objects are not a native concept in C, but you can achieve something resembling objects by using a design pattern known as the “opaque pointer”. This post will show you what the pattern is, explain some of the finer details, and provide guidance on when you should and shouldn’t use it.

  • What we've been reading in April

    Here are the articles, videos, and tools that we’ve been excited about this April.

  • Share Your Debugging Scripts

    In this short-form post, I want to share how you can go about keeping a central gdbinit file that you can commit into your project’s repo and automatically source it in the popular editor and IDE environments that firmware engineers find themselves in today.

  • What we've been reading in March

    Here are the articles, videos, and tools that we’ve been excited about this March.

  • Balancing Test Coverage vs. Overhead

    In a perfect world, all software and firmware are given precisely the time and budget it needs to be successful, code is uniformly well-written to industry best practices, and the code is complemented with a complete test suite instrumenting all aspects of the software.

    In practice, this rarely, if ever, happens! Development teams and organizations continually have to re-prioritize tasks to meet deadlines and avoid going over budget. In this article, we’ll cover how you can think about rapidly modifying and updating firmware, testing these changes, all the while allowing you to get the product out the door.