Michael Barr is an internationally recognized expert on the design of embedded computer systems. In that role, he has provided expert witness testimony in federal court, appeared on PBS’ American Business Review, and been quoted in various newspapers. He is also the author of three books and more than fifty articles on related subjects. For three and a half years Michael served as editor-in-chief of Embedded Systems Programming, for which he continues to write a column (the magazine was renamed Embedded Systems Design). In addition, Michael has been a popular speaker, track chair, and member of the advisory board at the Embedded Systems Conference for over a decade. Embedded software he wrote or architected powers millions of products. Michael holds B.S. and M.S. degrees in electrical engineering and has lectured in the Department of Electrical and Computer Engineering at the University of Maryland, from which he also earned an MBA. Michael provides consulting, training, and expert witness services through Netrino, which he founded in 1999. Michael is also the founder of Embedded Gurus. He also writes a free monthly e-mail newsletter on embedded software architecture and process called Firmware Update. Michael’s blog is Barr Code.


's contributions
    • As the magazine that catered to embedded systems programmers closes, the future lies in less hands-on programming and more auto-generated code.

    • Does it ever make sense to declare a variable in C or C++ as both volatile (in other words, "ever-changing") and const ("read-only")? If so, why? And how should you combine volatile and const properly?

    • Coding standards are an important tool for fighting bugs. Unfortunately, too many well-intentioned coding standards gather more dust than followers. Automatic enforcement points the way to greater compliance.

    • What sorts of things should you (or should you not) put in a C language .h header file? When should you create a header file? And why?

    • Not all engineers hate Twitter. Many use social media site wisely. Michael Barr, a former editor in chief of Embedded Systems Programming, is an experienced user of social media and offers this guide to social media for the busy engineer.

    • Engineers are developing real-time systems without applying rate monotonic algorithms to their design are living dangerously. Michael Barr details the three things every programmer should know about RMA.

    • Michael Barr, an internationally recognized expert on embedded computer design, writes about firmware architecture and development processes that help keep bugs out of embedded systems.

    • Last month I received an interesting e-mail in response to a column I wrote for Embedded Systems Design called The Lawyers are Coming! My column was partly about the poor state of embedded software quality across all industries.

    • Today's computer science students equate learning C with taking an elective in Latin; but C is far from being a dead language in the embedded world.

    • General-purpose memory testing functions. This code accompanies Michael Barr's article "Software-Based Memory Testing," published in July 2000 issue of Embedded Systems Programming magazine. Zip file has two files: memtest.c and memtest.h.

    • Like Rodney Dangerfield, electrical engineers don't get the respect they deserve. A lot of people don't regard them as "professionals." How can engineers change that perception?

    • Although many technological advances have occurred along the way, much of what embedded systems designers do hasn't changed since this magazine was launched fifteen years ago.

    • Is the art of engineering just the art of making scientific tradeoffs? Michael Barr discusses the nature of the business and the high profile flaw that got away.

    • The broad and diverse scope of embedded systems develoment includes at least seven key vertical market sectors. This month's issue of Embedded Systems Programming focuses on the automotive industry, one of the most dynamic of these sectors.

    • Embedded Systems Programming's subscribers are a loyal bunch. As the magazine prepares to celebrate its 15th anniversary, editor-in-chief Michael Barr, asks subscribers to share their stories about how the magazine has been part of their lives.

    • Even components as seemingly mundane as sensors can be made more interesting with a local processor and firmware. Smart sensors can automate the removal of offset and gain errors as well as nonlinearities from raw sensor readings. These capabilities and others eliminate the need for custom post-processing at the main processor.

    • How do you define firmware? Fresh from a stint as the embedded systems lexicographer, Michael Barr thought the definition was all firmed up, only to find new definitions emerging, thanks to shifting design methodologies.

    • You may think that outsourcing is a negative trend and that "the American engineer" will suffer. But bringing together groups of geographically diverse individuals might benefit everyone.

    • An interview with Jason Steinhorn, the lead program manager of Microsoft's TV division, on the nature of interactive television, competing standards, and the company's efforts to succeed where others -- including itself -- have failed.

    • For too long, hardware design has been a black art. Here's a new book that may change that.

    • We've been fortunate in the embedded space to have lots of choice when it comes to operating systems. But the future may hold fewer technological alternatives

    • Like Bill Murray's character in the 1993 film "Groundhog Day," I'm wondering if this year's predictions of renewed economic growth are any more likely to come true than those made last Groundhog Day.

    • The future has been sneaking up quietly, and it is already quite real. Michael reveals some new features on the website.

    • In the market for a commercial RTOS? This article provides an overview of RTOSes and how you can select the one for your project. You'll also find a list of vendors and their products and tips on comparing the products in the Buyer's Guide.

    • Just as there are several ways of pluralizing RTOS, there are also several reasonable ways of doing without one.

    • Michael has seen the future and discovered it has no wires. So how, he wonders, since there are still so many wires in the present, 802.11 and Bluetooth notwithstanding, do we get there from here.

    • Honesty, integrity, and responsibility should be the core values of all practicing engineers. And we should practice them outside of work as well.

    • Bad programmers seem to exist in every organization. The decisions they make and the code they write create more problems, hassles, and bugs than any interviewer can imagine.

    • Counter/timer hardware is a crucial component of most embedded systems. In some cases a timer is needed to measure elapsed time; in others we want to count or time some external events. Here's a primer on the hardware.

    • Relatively few of the embedded systems books I receive are worthy of permanent space on my bookshelf . That's why I want to tell you about one recent standout.

    • The rising popularity of Linux, combined with perceived cost savings, has spurred many embedded developers to consider a real-time Linux variant as an alternative to a traditional RTOS. Here's the straight dope on the legal implications for the proprietary parts of your firmware.

    • The increasing overlap between hardware and software leads to much uncertainty about future markets. Traditional hardware and software tool vendors are eyeing each other nervously across this narrowing digital divide.

    • Sun's K Virtual Machine gives embedded developers a virtual kick in the pants. KVM makes it possible to run Java programs on any 16-bit processor with 128KB of memory.

    • Could the choice of programming language alone significantly improve the quality and safety of our finished products?

    • Michael proposes a code of ethical conduct for software developers

    • When tasks share resources, as they often do, strange things can and will happen. Priority inversions can be particularly difficult to anticipate. Here's an introduction to priority inversions and a pair of techniques you can use to avoid them.

    • The real world is messier than most engineers like to admit.

    • Embedded processors span a wide range. Many are soft real-time systems built around 32-bit processors. These are precisely the systems that should benefit from the recent completion of the Real-Time Specification for Java.

    • What?s going to happen to the embedded category in the future? Can an increasingly disparate mix of systems continue to be identified as one?

    • Is the use of open source software in embedded systems just a fad?

    • Despite claims of preparing people for the workforce, traditional computer science and engineering programs fall woefully short on providing students with practical hands-on experience.

    • The September 11 tragedy only points to the complete inadequacy of the current requirements for certain kinds of disasters.

    • I'm still convinced Java is awesome and that embedded programmers using C++ would benefit heavily from switching over to it.

    • When I was in the sixth grade, I was a member of my school's Safety Patrol. As children and adults alike increasingly place their lives in the hands of computer hardware and software, we need to add layers of safety there as well.

    • More than two years after we picked that name for the section, the meaning of the term Internet Appliance is still no better defined.

    • All of us who design multi-function devices should consider their functions separate. A problem with one subsystem should never create problems with another.

    • Many types of memory devices are available for use in modern computer systems. As an embedded software engineer, you must be aware of the differences between them and understand how to use each type effectively.

    • ERGO AUDREY. Entered into eternal cancellation on Wednesday, March 21, 2001.

    • The average ESP reader has more than a decade of embedded systems development under his or her belt. That's why our articles and columns so often contain advanced treatments of very specific subjects. That's just the kind of information experienced developers most need. And it makes for great reference material.

    • Does anyone know how many embedded engineers there are in the U.S.?

    • Let me be the first to properly welcome you to the 21st century and the new millenium. Just one short year ago, it seemed as though life as we know it (or at least computing as we know it) might grind to a halt on the false millennial-eve because of short-sighted engineering decisions made decades earlier.

    • The Internet Protocol (IP) is the glue that holds an internet together. In this month's column, Michael presents the IP layer implementation that is the core of his mC/Net stack.

    • A disk crash causes an unexpected schedule slip on the way to UDP/IP. A reflection on the computer industry results.

    • Nice article, Ron. I have made two recent blog posts about this issue, each with more technical depth than the above. You can find them at Cheers, Mike -- Michael Barr Netrino, LLC

    • I've posted my commentary in my blog at

    • Michael Barr responds: I apologize for the cross-post, but I only found out about this thread here on a few hours after writing the above.