<?xml version="1.0" encoding="utf-8" ?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>Matthew Eshleman Blog on EmbeddedRelated.com</title>
<link>https://www.embeddedrelated.com/blogs-1/nf/Matthew_Eshleman.php</link>
<description><![CDATA[RSS Feed for Matthew Eshleman Blog on EmbeddedRelated.com]]></description>
<image><title>Matthew Eshleman Blog on EmbeddedRelated.com</title>
<link>https://www.embeddedrelated.com/blogs-1/nf/Matthew_Eshleman.php</link>
<url>https://d23s79tivgl8me.cloudfront.net/user/profilepictures/116765.jpg</url>
</image>
<atom:link href="https://www.embeddedrelated.com/blogs_rss.php?bloggerid=116765" rel="self" type="application/rss+xml"></atom:link>
<language>en-US</language>
<lastBuildDate>Mon, 18 May 2026 12:33:22 +0000</lastBuildDate>
<pubDate>1779107602</pubDate>
<item>
<title>UML Statechart tip: Handling errors when entering a state</title>
<link>https://www.embeddedrelated.com/showarticle/1334.php</link>
<description><![CDATA[<p></p><p style="margin-left: 20px; text-align: center;" rel="margin-left: 20px; text-align: center;">This is my second post with advice and tips on designing software with UML statecharts. <a href="https://covemountainsoftware.com/2020/02/19/uml-statechart-tip-be-wary-of-exit-state-behavior/" rel="nofollow">My first entry is here</a>.
</p>
<p>It has been nearly 20 years since I <a href="https://amzn.to/2HzxHop" rel="nofollow">first studied UML statecharts</a>. Since that initial exposure (thank you Samek!), I have applied event driven active object statechart designs to numerous projects [3]. Nothing has abated my preference for this pattern in my firmware and...]]></description>
<pubDate>Sun, 08 Mar 2020 22:29:46 +0000</pubDate>
<author>Matthew Eshleman</author>
</item>
<item>
<title>The Hardest Bug I Never Solved</title>
<link>https://www.embeddedrelated.com/showarticle/1214.php</link>
<description><![CDATA[<p>I agreed to four hours.&nbsp;
</p>
<p>Four hours to help hunt down and kill a bug. A terrible malicious bug that was eating away at this project, wreaking havoc upon the foundations of a critical feature, and draining time randomly from every one of eight firmware engineers on this project. Quite honestly, I can’t remember the last time it took more than an hour or two for me to locate, isolate,...]]></description>
<pubDate>Thu, 27 Dec 2018 23:44:44 +0000</pubDate>
<author>Matthew Eshleman</author>
</item>
<item>
<title>Tenderfoot: How to Write a Great Bug Report</title>
<link>https://www.embeddedrelated.com/showarticle/1179.php</link>
<description><![CDATA[<p>I am an odd sort of person. Why? Because I love a well written and descriptive bug report. I love a case that includes clear and easy to follow reproduction steps. I love a written bug report that includes all the necessary information on versions, configurations, connections and other system details. Why? Because I believe in efficiency. I believe that as an engineer I have a duty to generate...]]></description>
<pubDate>Thu, 31 May 2018 18:04:21 +0000</pubDate>
<author>Matthew Eshleman</author>
</item>
<item>
<title>Tenderfoot: Embedded Software and Firmware Specialties</title>
<link>https://www.embeddedrelated.com/showarticle/1080.php</link>
<description><![CDATA[<p>Once upon a time (seven years ago) <a href="https://stackoverflow.com/questions/3275793/are-there-specialities-within-the-embedded-fields/3278004#3278004" rel="nofollow">I answered a question on Stack Overflow</a>. Then Stephane <a href="https://twitter.com/EmbeddedRelated/status/889933125584814084" rel="nofollow">suggested I turn that answer into a blog post</a>. Great idea! This post dives deeper into the original question: “Is it possible to fragment this field (embedded software and firmware) into sub-fields?”
</p>
<p>This post represents a detailed and updated response to my original Stack Overflow answer. I...]]></description>
<pubDate>Sun, 20 Aug 2017 14:57:43 +0000</pubDate>
<author>Matthew Eshleman</author>
</item>
<item>
<title>Tenderfoot: Recommended Reading</title>
<link>https://www.embeddedrelated.com/showarticle/1063.php</link>
<description><![CDATA[<p>Twenty years ago I read <a href="http://amzn.to/2s2r8kF" target="_blank" rel="nofollow">Code Complete by Steve McConnell</a>. And then read it again. And again. And again. Of all the books I have read during my career, I believe this was the book that catapulted me from a young electrical engineer to a young and aspiring embedded software engineer. So to all the ‘tenderfoots’ embarking upon an embedded systems and especially embedded software and firmware...]]></description>
<pubDate>Wed, 28 Jun 2017 21:09:18 +0000</pubDate>
<author>Matthew Eshleman</author>
</item>
<item>
<title>Tenderfoot: Introduction to Magic (Numbers that is...)</title>
<link>https://www.embeddedrelated.com/showarticle/1050.php</link>
<description><![CDATA[<p>Once upon a time, while participating in a source code review, I stumbled across the following C code in a header file:
</p>
struct Foo {
   //various structure fields
   char string_buffer[45+3]; //buffer requires about 45 bytes
};

<p>My right eyebrow raised, I took a note, and continued with the code review, only to later stumble into this line of code in the body of a C...]]></description>
<pubDate>Wed, 10 May 2017 16:28:26 +0000</pubDate>
<author>Matthew Eshleman</author>
</item>
<item>
<title>Favorite Tools: C++11 std::array</title>
<link>https://www.embeddedrelated.com/showarticle/1031.php</link>
<description><![CDATA[<p>Many embedded software and firmware&nbsp;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&nbsp;outright ban the use of&nbsp;dynamic memory allocation, a feature typically accessed via the C library call "<a href="http://www.cplusplus.com/reference/cstdlib/malloc/"...]]></description>
<pubDate>Mon, 27 Feb 2017 02:42:01 +0000</pubDate>
<author>Matthew Eshleman</author>
</item>
<item>
<title>Favorite Tools: C++11 User-defined literals</title>
<link>https://www.embeddedrelated.com/showarticle/1013.php</link>
<description><![CDATA[<p>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,&nbsp;are often <a href="https://en.wikipedia.org/wiki/Mars_Climate_Orbiter#Cause_of_failure" target="_blank" rel="nofollow">the source of bugs and disastrous mistakes</a>. Although useful for other purposes, <a href="http://en.cppreference.com/w/cpp/language/user_literal" target="_blank" rel="nofollow">user-defined literals</a> are an excellent addition to the C++11 standard...]]></description>
<pubDate>Mon, 14 Nov 2016 04:03:58 +0000</pubDate>
<author>Matthew Eshleman</author>
</item>
<item>
<title>Surprising Linux Real Time Scheduler Behavior</title>
<link>https://www.embeddedrelated.com/showarticle/1012.php</link>
<description><![CDATA[<p>I have recently been helping with embedded software design and development for a data acquisition and visualization device. The software executes within an embedded Linux context and consists of various animated user interfaces rendering the acquired data.</p><p>The data is received via a UART and a SPI connection. During project development we noticed poor UART data latency issues during heavy user...]]></description>
<pubDate>Sat, 05 Nov 2016 18:40:24 +0000</pubDate>
<author>Matthew Eshleman</author>
</item>
<item>
<title>Favorite Tools - Look Up Tables</title>
<link>https://www.embeddedrelated.com/showarticle/1009.php</link>
<description><![CDATA[<p>As we grow in our engineering careers, we must continually add new tools to our collective tool kits. One favorite tool in my toolkit will be obvious to many experienced embedded software engineers. I still remember learning this approach early in my career via code written by colleague <a href="http://www.starlingconsulting.net/about.html" rel="nofollow">David Starling</a>. The tool in question:&nbsp;</p>Look up tables&nbsp;<p>Look up tables simplify code and improve...]]></description>
<pubDate>Sat, 22 Oct 2016 16:09:45 +0000</pubDate>
<author>Matthew Eshleman</author>
</item>
</channel>
</rss>