Controlled Development Environments

Docker is a great solution for controlled development environments. One of the great things about Docker is specifying an entire environment. You create a list that includes the OS, along […]
Debugging Step 1 – Check the Datasheet

When setting up something like a new sensor for a project feature, it’s become typical for engineers to grab a development kit for their ease of setup and the speed […]
Choosing a Continuous Integration (CI) compiler

Choosing the right Continuous Integration (CI) compiler is crucial because it impacts code quality, deployment reliability, and development velocity. A consistent compiler version and configuration ensure that the same source […]
The Git Cherry-pick and Git Rebase Interactive Combo

Version control is necessary, but using it well is an art. Today I am going to give an overview of two Git commands that I found helpful during software development, […]
IEC-62304 Medical Device Software – Software Life Cycle Processes Primer – Part 1

The IEC-62304 Software Lifecycle Standard requires a lot of self-reflection to scrutinize and document your development processes. There is an endless pursuit of perfection when it comes to heavily regulated […]
Docker: An Ideal Development Environment

Docker is a revolutionary tool that provides speed and repeatability for an embedded team. While traditionally used in non-firmware environments, there is enormous potential to improve the development efforts of […]
How CI Pipeline Scripts and Exit Codes Interact

What is An Exit Code? An exit code, sometimes called a return code, is a number returned by a shell command or script. It tells the caller the status of […]
How To Protect Your Firmware: 5 Mistakes To Avoid

By: Joe Schneider
You put a massive amount of time, energy, and cost into developing your firmware. As such, protecting your firmware should be a top priority. Avoiding these 5 mistakes will help ensure your firmware stays secure.
How to Avoid Pushing In-development Changes to The Production Repository

Once a code base is sophisticated enough to require both a public, customer-facing production environment and private development environment, it becomes vital to prevent potentially breaking development changes from being […]
10 Easy Steps to Add Static Analysis to Your Firmware Build

When it comes to embedded system applications, security is one of the most important requirements. In addition to embedded security topics such as Bluetooth encryption, SSH, and TLS, modern firmware […]
Trusting the Docker Images Your Code is Built On

We’ve written before about the benefits of using Docker in your development environments. You don’t have to write every image yourself, though! There are many existing images on Docker Hub […]
nRF52 DFU and the Missing Service Changed Indication

Even when using Nordic’s pre-packaged SDK files for adding DFU (Device Firmware Update) capabilities, things can get tricky. We learned this as we added buttonless DFU to a customer project […]