18 March 2020 by Phillip Johnston • Last updated 15 August 2023Bogatin’s Rules of Thumb are a series of 33 articles published on EDN by Eric Bogatin, a seasoned electrical engineer with a specialization in signal integrity. Bogatin’s Rules of thumb are recommended in general for electrical engineers. PCB designers in particular will benefit from studying these rules. All of Bogatin’s rules of thumb are linked below, along with the excerpt that introduces each article. Using Rules of Thumb Wisely – kicks off the series by outlining Rules of Thumb “Do” and “Don’t” suggestions Bandwidth of a Signal from its …
Continue reading “Bogatin’s Rules of Thumb”
A famous John Gall quote from Systemantics became known as Gall's Law. The law states: A complex system that works is invariably found to have evolved from a simple system that worked. The inverse proposition also appears to be true: A complex system designed from scratch never works and cannot be made to work. You …
Continue reading "Hypotheses on Systems and Complexity"
You may call them guidelines, heuristics, or rules of thumb. No matter, the purpose is the same: to provide a reasonable approximation of the truth. These rules of thumb can help guide your understanding of the systems you work on, focus you toward the right solutions, and highlight potential problem areas. These are just the …
Continue reading "Embedded Rules of Thumb"
In a previous article, I provided an overview of the C++ standard container types. We've also taken a look at general rules of thumb for selecting a container, as well as a more detailed look at rules of thumb for associative containers. Let's take a look at guidelines we can use to select the right …
Continue reading "Choosing the Right Container: Sequential Containers"
The official title of this book is quite a mouthful: Debugging: The 9 Indispensable Rules for Finding Even the Most Elusive Software and Hardware Problems, by David J. Agans. Agans distills debugging techniques down to nine essential rules and includes engineering war stories that demonstrate these principles. This book helped me crystallize my debugging strategy and provided the …
Continue reading "Debugging: 9 Indispensable Rules"
I recently provided an overview of the C++ standard container types as well as high-level guidelines for selecting the right container. Today we will be taking a look at the tradeoffs of the STL associative containers. Overview Selecting between Ordered and Unordered Associative Containers Ordered Containers Unordered Containers Differentiating the Containers Further Reading Overview In …
Continue reading "Choosing the Right Container: Associative Containers"
I was recently involved in a discussion about suitable operations for interrupt handlers. Interrupts can be an intimidating and/or tricky area of embedded systems development, so I want to share some guidelines with you. Generally you will want to keep your interrupt handlers as simple as possible. The normal flow of our program has been interrupted, …
Continue reading "Interrupt Handler Rules of Thumb"
In a previous article, I provided an overview of the C++ standard container types. The variety of containers and the subtle differences between them can be overwhelming, especially to new developers. Let's take a look at some quick guidelines we can use to select the right container. Think About Your Intentions The most important aspect …
Continue reading "Choosing the Right STL Container: General Rules of Thumb"
In a previous blog post I highlighted Murphy's Law, which famously states "Everything that can go wrong, will". Today I will introduce you to Hofstadter's Law, another useful tool for programmers to keep in mind. Hofstadter's law states: It always takes longer than you expect, even when you take into account Hofstadter's Law. This law …
Continue reading "Hofstadter’s Law"
Much of the example code that I publish is released to embedded-resources as standalone .c or .cpp files. I structure examples in this way as a matter of convenience: It’s easier for consumers to parse and understand a self-contained example Each example usually needs its own main function to demonstrate usage However, in their monolithic …
Continue reading "Converting Examples into Libraries"