Premature optimization?

“…premature optimization is the root of all evil…” – Donald Knuth This well known quote by Donald Knuth represents hard-earned wisdom for which many software engineers should consider and broadly follow. Yet with any succinct rule we must be vigilant in our application and apply it appropriately. In some cases it may be found that … More Premature optimization?

Tenderfoot: Introduction to Magic (Numbers that is…)

Hi there… New post over on From the article: So, why did I pause and take note of this particular code? We will skip over the eye catching “requires about” statement in the related code comment and focus on this primary issue, what experienced software engineers will immediately recognize as: “magic numbers” Read more … More Tenderfoot: Introduction to Magic (Numbers that is…)

Questions to Ask: Software Architecture, Design, And Coding

The process involved in architecting, designing, and writing embedded software and firmware is complicated, but I believe often times may be guided with a set of questions which must be continually evaluated by the engineering team as software development proceeds forward. This post provides a few of the questions I might be considering during my personal process. … More Questions to Ask: Software Architecture, Design, And Coding

Favorite Tools: C++11 std::array

My latest post from “Many embedded software and firmware projects must be developed to high standards of reliability. To meet these reliability requirements, firmware project teams will consider many design tradeoffs. For example, an engineering team may avoid or outright ban the use of dynamic memory allocation, a feature typically accessed via the C library call “malloc” … More Favorite Tools: C++11 std::array

Presentation: Real Time Operating Systems Jump Start

At the Feb 2017 NashMicro meetup, I presented on Real Time Operating System fundamentals while simultaneously demoing a system of ESP32 based devices running MQTT and lighting up some LED Light Strips with fun patterns. Find the presentation here: or directly: Real Time Operating Systems at NashMicro Feb2017 The source code for the demo may be … More Presentation: Real Time Operating Systems Jump Start

Brother, can you spare a GPIO?

The core recommendation of this post will be familiar to an experienced embedded systems engineer, yet it is worthy of note and a useful trick for engineers learning their trade. The “trick” in question: Design embedded systems with accessible spare microcontroller GPIO(s) Why? If the focus is firmware development, then real time responsiveness is likely critical to … More Brother, can you spare a GPIO?

Favorite Tools: C++11 User-defined literals

In many software domains units of measurement are frequently critical to the software’s data processing requirements. Those same units, or rather the use of the wrong units, are often the source of bugs and disastrous mistakes. Although useful for other purposes, user-defined literals are an excellent addition to the C++11 standard and handy when working … More Favorite Tools: C++11 User-defined literals