# Blog

**URL:** https://community.memfault.com/c/blog/5.md?page=3

[Latest](https://community.memfault.com/latest.md) · [Categories](https://community.memfault.com/categories.md)

**Page:** 4

---

## [Defensive Programming - Friend or Foe? | Interrupt](https://community.memfault.com/t/defensive-programming-friend-or-foe-interrupt/323)

<div class="topic-metadata">

**Author:** [@discobot](https://community.memfault.com/u/discobot)\
**Replies:** 7\
**Last updated:** [June 11, 2021, 7:54pm UTC](https://community.memfault.com/t/defensive-programming-friend-or-foe-interrupt/323 "2021-06-11T19:54:21Z")

</div>

One of the worst things about embedded development (especially in C) is receiving a return value of -1 or unknown\_error from a function, with no other information about why the failure took place. It provides no informat…

---

## [Practical Design Patterns: Opaque Pointers and Objects in C | Interrupt](https://community.memfault.com/t/practical-design-patterns-opaque-pointers-and-objects-in-c-interrupt/402)

<div class="topic-metadata">

**Author:** [@discobot](https://community.memfault.com/u/discobot)\
**Replies:** 14\
**Last updated:** [May 17, 2021, 9:29pm UTC](https://community.memfault.com/t/practical-design-patterns-opaque-pointers-and-objects-in-c-interrupt/402 "2021-05-17T21:29:13Z")

</div>

I’ve written a lot of C++ in my career, but I still prefer to design in C for most embedded projects (“why” is the subject of a much longer, rant-filled post). I’m not a big proponent of OOP in general, but I do think ha…

---

## [Share Your Debugging Scripts | Interrupt](https://community.memfault.com/t/share-your-debugging-scripts-interrupt/383)

<div class="topic-metadata">

**Author:** [@discobot](https://community.memfault.com/u/discobot)\
**Replies:** 3\
**Last updated:** [May 4, 2021, 12:47am UTC](https://community.memfault.com/t/share-your-debugging-scripts-interrupt/383 "2021-05-04T00:47:03Z")

</div>

One of my favorite ways to debug is to let GDB and a set of previously written Python scripts do all the work for me. These scripts could parse the heap and data structures, investigate fault registers, and paint an accu…

---

## [Balancing Test Coverage vs. Overhead | Interrupt](https://community.memfault.com/t/balancing-test-coverage-vs-overhead-interrupt/373)

<div class="topic-metadata">

**Author:** [@discobot](https://community.memfault.com/u/discobot)\
**Replies:** 2\
**Last updated:** [April 27, 2021, 3:27pm UTC](https://community.memfault.com/t/balancing-test-coverage-vs-overhead-interrupt/373 "2021-04-27T15:27:24Z")

</div>

This article is written by an external contributor, Erik Fogg of ProdPerfect, along with Tyler Hoffman representing the firmware side of the story. Enjoy! This is a companion discussion topic for the original entry at h…

---

## [GNU Binutils: the ELF Swiss Army Knife | Interrupt](https://community.memfault.com/t/gnu-binutils-the-elf-swiss-army-knife-interrupt/168)

<div class="topic-metadata">

**Author:** [@discobot](https://community.memfault.com/u/discobot)\
**Replies:** 7\
**Last updated:** [March 21, 2021, 8:28pm UTC](https://community.memfault.com/t/gnu-binutils-the-elf-swiss-army-knife-interrupt/168 "2021-03-21T20:28:21Z")

</div>

There’s a lot that takes place between the C code you write and the binary that winds up executing on a device. Understanding how to look at and inspect what is emitted by the compiler saves time and can improve your eff…

---

## [Bluetooth Low Energy: A Primer | Interrupt](https://community.memfault.com/t/bluetooth-low-energy-a-primer-interrupt/62)

<div class="topic-metadata">

**Author:** [@discobot](https://community.memfault.com/u/discobot)\
**Replies:** 1\
**Last updated:** [March 7, 2021, 12:23am UTC](https://community.memfault.com/t/bluetooth-low-energy-a-primer-interrupt/62 "2021-03-07T00:23:20Z")

</div>

You’ve probably heard the term IoT (Internet of Things) many times, and seen the hype in the media surrounding it. Simply stated, IoT refers to connecting devices to each other and to the Internet. IoT often depends on w…

---

## [What we’ve been reading in Februrary | Interrupt](https://community.memfault.com/t/what-we-ve-been-reading-in-februrary-interrupt/364)

<div class="topic-metadata">

**Author:** [@discobot](https://community.memfault.com/u/discobot)\
**Replies:** 1\
**Last updated:** [March 5, 2021, 5:03pm UTC](https://community.memfault.com/t/what-we-ve-been-reading-in-februrary-interrupt/364 "2021-03-05T17:03:02Z")

</div>

Here are the articles, videos, and tools that we’ve been excited about this February. We hope you enjoy these links, and we look forward to hearing what you’ve been reading in the comments or on the Interrupt Slack. Th…

---

## [What we’ve been reading in December | Interrupt](https://community.memfault.com/t/what-we-ve-been-reading-in-december-interrupt/331)

<div class="topic-metadata">

**Author:** [@discobot](https://community.memfault.com/u/discobot)\
**Replies:** 3\
**Last updated:** [February 24, 2021, 3:53pm UTC](https://community.memfault.com/t/what-we-ve-been-reading-in-december-interrupt/331 "2021-02-24T15:53:48Z")

</div>

Happy New Year! Here’s to a wonderful 2021. Here are the articles, videos, and tools that we’ve been excited about this December. This is a companion discussion topic for the original entry at https://interrupt.memfaul…

---

## [Proper Release Versioning Goes a Long Way | Interrupt](https://community.memfault.com/t/proper-release-versioning-goes-a-long-way-interrupt/341)

<div class="topic-metadata">

**Author:** [@discobot](https://community.memfault.com/u/discobot)\
**Replies:** 5\
**Last updated:** [February 2, 2021, 6:48pm UTC](https://community.memfault.com/t/proper-release-versioning-goes-a-long-way-interrupt/341 "2021-02-02T18:48:35Z")

</div>

Release versioning might seem like a boring topic. Honestly, it should be. There should only be a couple of right ways to do versioning, and each project should pick one of the agreed-upon methods (SemVer, CalVer, etc.) …

---

## [A Practical Guide to BLE Throughput | Interrupt](https://community.memfault.com/t/a-practical-guide-to-ble-throughput-interrupt/80)

<div class="topic-metadata">

**Author:** [@discobot](https://community.memfault.com/u/discobot)\
**Replies:** 5\
**Last updated:** [January 3, 2021, 1:50pm UTC](https://community.memfault.com/t/a-practical-guide-to-ble-throughput-interrupt/80 "2021-01-03T13:50:35Z")

</div>

Bluetooth Low Energy (BLE) was first added to smartphones in 2011 as part of the iPhone 4S. Since then it has become the de-facto way for smartphones to communicate with external devices. While BLE was initially intended…

---

## [Seamless firmware development with PlatformIO | Interrupt](https://community.memfault.com/t/seamless-firmware-development-with-platformio-interrupt/320)

<div class="topic-metadata">

**Author:** [@discobot](https://community.memfault.com/u/discobot)\
**Replies:** 2\
**Last updated:** [December 14, 2020, 9:19pm UTC](https://community.memfault.com/t/seamless-firmware-development-with-platformio-interrupt/320 "2020-12-14T21:19:20Z")

</div>

A few weeks ago, I wrote about MCU SDKs and how frustrating I sometimes found it to be confronted with one Eclipse-based IDE after another. If you haven’t read my latest updates to that post, check it out! This is a co…

---

## [Tracking Fleet Health with Heartbeat Metrics | Interrupt](https://community.memfault.com/t/tracking-fleet-health-with-heartbeat-metrics-interrupt/259)

<div class="topic-metadata">

**Author:** [@discobot](https://community.memfault.com/u/discobot)\
**Replies:** 3\
**Last updated:** [December 11, 2020, 7:28am UTC](https://community.memfault.com/t/tracking-fleet-health-with-heartbeat-metrics-interrupt/259 "2020-12-11T07:28:38Z")

</div>

Releasing a connected device in today’s world without some form of monitoring in place is a recipe for trouble. How would you know how often or if devices are experiencing faults or crashing? How can the release lead be …

---

## [Step-through debugging via a UART on ARM Cortex-M MCUs | Interrupt](https://community.memfault.com/t/step-through-debugging-via-a-uart-on-arm-cortex-m-mcus-interrupt/244)

<div class="topic-metadata">

**Author:** [@discobot](https://community.memfault.com/u/discobot)\
**Replies:** 6\
**Last updated:** [November 28, 2020, 4:37am UTC](https://community.memfault.com/t/step-through-debugging-via-a-uart-on-arm-cortex-m-mcus-interrupt/244 "2020-11-28T04:37:05Z")

</div>

Debugging an MCU requires attaching a debugger via JTAG and halting the core. Or does it? There are many situations where this debug strategy is not feasible such as on This is a companion discussion topic for the orig…

---

## [How do breakpoints even work? | Interrupt](https://community.memfault.com/t/how-do-breakpoints-even-work-interrupt/220)

<div class="topic-metadata">

**Author:** [@discobot](https://community.memfault.com/u/discobot)\
**Replies:** 2\
**Last updated:** [November 23, 2020, 1:16pm UTC](https://community.memfault.com/t/how-do-breakpoints-even-work-interrupt/220 "2020-11-23T13:16:45Z")

</div>

The idea of halting program execution was invented over 70 years ago as part of the ENIAC digital computer. At the time, to pause a program and debug, you had to physically unplug one of the cables controlling program fl…

---

## [A Deep Dive into ARM Cortex-M Debug Interfaces | Interrupt](https://community.memfault.com/t/a-deep-dive-into-arm-cortex-m-debug-interfaces-interrupt/64)

<div class="topic-metadata">

**Author:** [@discobot](https://community.memfault.com/u/discobot)\
**Replies:** 2\
**Last updated:** [November 23, 2020, 1:02pm UTC](https://community.memfault.com/t/a-deep-dive-into-arm-cortex-m-debug-interfaces-interrupt/64 "2020-11-23T13:02:58Z")

</div>

Ever had issues getting a debugger to flash code? Do your breakpoints not seem to work? Are you hitting weird errors while stepping through your code? Does your debugger seem flaky? Are you confused by all the buzzwords …

---

## [What we’ve been reading in October | Interrupt](https://community.memfault.com/t/what-we-ve-been-reading-in-october-interrupt/287)

<div class="topic-metadata">

**Author:** [@discobot](https://community.memfault.com/u/discobot)\
**Replies:** 3\
**Last updated:** [November 1, 2020, 3:30pm UTC](https://community.memfault.com/t/what-we-ve-been-reading-in-october-interrupt/287 "2020-11-01T15:30:40Z")

</div>

Here are the articles, videos, and tools that we’ve been excited about this October. We hope you enjoy these links, and we look forward to hearing what you’ve been reading in the comments or on the Interrupt Slack. Thi…

---

## [Separating Unique Parameters from Firmware Binaries | Interrupt](https://community.memfault.com/t/separating-unique-parameters-from-firmware-binaries-interrupt/275)

<div class="topic-metadata">

**Author:** [@discobot](https://community.memfault.com/u/discobot)\
**Replies:** 9\
**Last updated:** [November 1, 2020, 3:05pm UTC](https://community.memfault.com/t/separating-unique-parameters-from-firmware-binaries-interrupt/275 "2020-11-01T15:05:28Z")

</div>

When writing firmware for embedded systems, the firmware is usually meant to run on many identical devices. These devices often have their own serial number, public and private keys, or some other unique parameters. Thes…

---

## [Advanced GDB Usage | Interrupt](https://community.memfault.com/t/advanced-gdb-usage-interrupt/284)

<div class="topic-metadata">

**Author:** [@discobot](https://community.memfault.com/u/discobot)\
**Replies:** 3\
**Last updated:** [October 21, 2020, 7:41pm UTC](https://community.memfault.com/t/advanced-gdb-usage-interrupt/284 "2020-10-21T19:41:50Z")

</div>

About 6 years ago, when I was in my first few months at Pebble as a firmware engineer, I decided to take an entire workday to read through the majority of the GDB manual. It was by far one of my best decisions as an earl…

---

## [What we’ve been reading in September | Interrupt](https://community.memfault.com/t/what-we-ve-been-reading-in-september-interrupt/273)

<div class="topic-metadata">

**Author:** [@discobot](https://community.memfault.com/u/discobot)\
**Replies:** 0\
**Last updated:** [September 30, 2020, 6:03am UTC](https://community.memfault.com/t/what-we-ve-been-reading-in-september-interrupt/273 "2020-09-30T06:03:56Z")

</div>

Here are the articles, videos, and tools that we’ve been excited about this August and September This is a companion discussion topic for the original entry at https://interrupt.memfault.com/blog/september-2020-roundup

---

## [What we’ve been reading in August | Interrupt](https://community.memfault.com/t/what-we-ve-been-reading-in-august-interrupt/248)

<div class="topic-metadata">

**Author:** [@discobot](https://community.memfault.com/u/discobot)\
**Replies:** 0\
**Last updated:** [August 5, 2020, 5:30am UTC](https://community.memfault.com/t/what-we-ve-been-reading-in-august-interrupt/248 "2020-08-05T05:30:46Z")

</div>

Here are the articles, videos, and tools that we’ve been excited about this August. We hope you enjoy these links, and we look forward to hearing what you’ve been reading in the comments. This is a companion discussion…

---

## [What we’ve been reading in March | Interrupt](https://community.memfault.com/t/what-we-ve-been-reading-in-march-interrupt/166)

<div class="topic-metadata">

**Author:** [@discobot](https://community.memfault.com/u/discobot)\
**Replies:** 3\
**Last updated:** [July 27, 2020, 7:56pm UTC](https://community.memfault.com/t/what-we-ve-been-reading-in-march-interrupt/166 "2020-07-27T19:56:53Z")

</div>

Here are the articles, videos, and tools that we’ve been excited about this past month. We hope you enjoy these links, and look forward to hearing what you’ve been reading in the comments. This is a companion discuss…

---

## [Firmware Testing with Renode and GitHub Actions | Interrupt](https://community.memfault.com/t/firmware-testing-with-renode-and-github-actions-interrupt/229)

<div class="topic-metadata">

**Author:** [@discobot](https://community.memfault.com/u/discobot)\
**Replies:** 2\
**Last updated:** [July 21, 2020, 6:50pm UTC](https://community.memfault.com/t/firmware-testing-with-renode-and-github-actions-interrupt/229 "2020-07-21T18:50:49Z")

</div>

Automated firmware testing on real embedded hardware is what every hardware company strives to build. The mission is to repeatedly verify that changes to firmware being merged into master and shipped to customers will no…

---

## [GNU Make Overview and Guidelines | Interrupt](https://community.memfault.com/t/gnu-make-overview-and-guidelines-interrupt/153)

<div class="topic-metadata">

**Author:** [@discobot](https://community.memfault.com/u/discobot)\
**Replies:** 6\
**Last updated:** [July 11, 2020, 1:30am UTC](https://community.memfault.com/t/gnu-make-overview-and-guidelines-interrupt/153 "2020-07-11T01:30:19Z")

</div>

GNU Make is a popular and commonly used program for building C language software. It is used when building the Linux kernel and other frequently used GNU/Linux programs and software libraries. This is a companion discu…

---

## [What we’ve been reading in June | Interrupt](https://community.memfault.com/t/what-we-ve-been-reading-in-june-interrupt/228)

<div class="topic-metadata">

**Author:** [@discobot](https://community.memfault.com/u/discobot)\
**Replies:** 0\
**Last updated:** [July 1, 2020, 4:28am UTC](https://community.memfault.com/t/what-we-ve-been-reading-in-june-interrupt/228 "2020-07-01T04:28:49Z")

</div>

Here are the articles, videos, and tools that we’ve been excited about this June. We hope you enjoy these links, and we look forward to hearing what you’ve been reading in the comments. This is a companion discussion t…

---

## [Hunting Bugs with Git Bisect | Interrupt](https://community.memfault.com/t/hunting-bugs-with-git-bisect-interrupt/175)

<div class="topic-metadata">

**Author:** [@discobot](https://community.memfault.com/u/discobot)\
**Replies:** 5\
**Last updated:** [May 27, 2020, 4:40pm UTC](https://community.memfault.com/t/hunting-bugs-with-git-bisect-interrupt/175 "2020-05-27T16:40:28Z")

</div>

It’s one of those nights- your project has been moving along at breakneck pace, with all of its contributors committing refactors, improvements, and bugfixes. You’ve been using git commands so much recently that you can …

---

## [What we’ve been reading in May | Interrupt](https://community.memfault.com/t/what-we-ve-been-reading-in-may-interrupt/205)

<div class="topic-metadata">

**Author:** [@discobot](https://community.memfault.com/u/discobot)\
**Replies:** 0\
**Last updated:** [May 27, 2020, 6:48am UTC](https://community.memfault.com/t/what-we-ve-been-reading-in-may-interrupt/205 "2020-05-27T06:48:29Z")

</div>

Here are the articles, videos, and tools that we’ve been excited about this May. We hope you enjoy these links, and look forward to hearing what you’ve been reading in the comments. This is a companion discussion topi…

---

## [What we’ve been reading in April | Interrupt](https://community.memfault.com/t/what-we-ve-been-reading-in-april-interrupt/180)

<div class="topic-metadata">

**Author:** [@discobot](https://community.memfault.com/u/discobot)\
**Replies:** 7\
**Last updated:** [May 26, 2020, 4:50pm UTC](https://community.memfault.com/t/what-we-ve-been-reading-in-april-interrupt/180 "2020-05-26T16:50:08Z")

</div>

Here are the articles, videos, and tools that we’ve been excited about this April. We hope you enjoy these links, and look forward to hearing what you’ve been reading in the comments. This is a companion discussion t…

---

## [gdbundle - GDB and LLDB’s Missing Plugin Manager | Interrupt](https://community.memfault.com/t/gdbundle-gdb-and-lldb-s-missing-plugin-manager-interrupt/171)

<div class="topic-metadata">

**Author:** [@discobot](https://community.memfault.com/u/discobot)\
**Replies:** 1\
**Last updated:** [April 20, 2020, 10:44pm UTC](https://community.memfault.com/t/gdbundle-gdb-and-lldb-s-missing-plugin-manager-interrupt/171 "2020-04-20T22:44:13Z")

</div>

I started with embedded development at Pebble, the smart watch maker, where we were building a modern operating system on a device with 128 KB of RAM. It’s also where I got up-close and personal with GDB and had my first…

---

## [Reproducible Firmware Builds | Interrupt](https://community.memfault.com/t/reproducible-firmware-builds-interrupt/112)

<div class="topic-metadata">

**Author:** [@discobot](https://community.memfault.com/u/discobot)\
**Replies:** 12\
**Last updated:** [April 4, 2020, 9:24pm UTC](https://community.memfault.com/t/reproducible-firmware-builds-interrupt/112 "2020-04-04T21:24:56Z")

</div>

If you have ever worked on a large scale embedded project before, you’ve probably run into situations where the build system or binary behaves differently depending on where it was compiled. For example, maybe the binary…

---

## [What we’ve been reading in February | Interrupt](https://community.memfault.com/t/what-we-ve-been-reading-in-february-interrupt/148)

<div class="topic-metadata">

**Author:** [@discobot](https://community.memfault.com/u/discobot)\
**Replies:** 0\
**Last updated:** [February 26, 2020, 6:26am UTC](https://community.memfault.com/t/what-we-ve-been-reading-in-february-interrupt/148 "2020-02-26T06:26:24Z")

</div>

Here are the articles, videos, and tools we’ve been excited about this past month. We hope you enjoy these links, and look forward to hearing what you’ve been reading in the comments. This is a companion discussion t…

[Previous page](https://community.memfault.com/c/blog/5.md?page=2)

[Next page](https://community.memfault.com/c/blog/5.md?page=4)
