Tweet Follow @jack_ganssle

Embedded Muse 98 Copyright 2004 TGG May 31, 2004

You may redistribute this newsletter for noncommercial purposes. For commercial use contact

EDITOR: Jack Ganssle,

- Editor’s Notes
- Programming Proverbs
- eXtreme Programming Conference
- Jobs!
- Joke for the Week
- About The Embedded Muse

Editor’s Notes

There are no current plans to host a public Better Firmware Faster seminar. I often do this seminar on-site, for companies with a dozen or more embedded folks who’d like to learn more efficient ways to build firmware. See for more details.

I’ve created a video titled “Develop Firmware in Half the Time” that distills the basic ideas and processes needed to efficiently crank out great firmware. There’s more information available at

If you’re like me you manage far too many passwords on various computer systems. I keep them all in an encrypted file, one whose key is my highest-security password. The name of that file isn’t “passwords and such” – a much too tempting target for a villain who somehow got access to the hard drive. It’s an innocuous name that wouldn’t get the attention of a script kiddie or a determined thief. Fred Langa had an interesting article on this in Information Week recently. See it at: One appealing suggestion: keep the encrypted password file on a USB drive on your keychain.

The May 13, 2004 issue of EDN had an intriguing article about cooling embedded systems ( by Warren Webb. What really got me thinking was figure 1, a graph showing the power density of various flavors of Pentiums. The Pentium IV is 5 times hotter in watts/cm**2 than a hot plate! A nuclear reactor’s power density is only 3 or 4 times more than a Pentium. Perhaps in a couple of more CPU generations chips will operate at temperatures permitting fusion reactions, so the computer can power itself (and the entire neighborhood).

When the economy took a dive and engineering employment tanked I started running (free) employment ads as a service to developers looking for work. This issue of the Muse has ads from 5 companies looking for embedded people. Is it time to discontinue this service? Let me know if you think the ads are a nuisance or something of value. My email is simply overwhelming so I can’t promise an answer to everyone, but you thoughts will be read and collated, and a summary run next issue.

Programming Proverbs

A clever person solves a problem.
A wise person avoids it.
- Einstein

No matter what the problem is,
it's always a people problem.
- Jerry Weinberg

If the code and the comments disagree, both are probably wrong.

Good judgment comes from experience... and experience comes from bad judgment.
- Fred Brooks

Choose two:

Furious activity is no substitute for understanding.

To go faster, slow down. Everybody who knows about orbital mechanics understands that.
- Scott Cherf

There's no time to stop for gas, we're already late.
- Karin Donker

Discipline is the best tool.
Design first, then code.
Don't patch bugs out, rewrite them out.
Don't test bugs out, design them out.

If you've found 3 bugs in a program, best estimate is that there are 3 more.

For every 7 faults corrected, one of at least equal severity injected.
- N.E. Adams

60% of product cost comes after initial shipment.

If you can’t write it down in English, you can't program it.

If something is worth doing once, it's worth building a tool to do it.

Abraham Lincoln reportedly said that, given eight hours to chop down a tree, he'd spend six sharpening his axe.
- TidBITS 654, quoted by Derek K. Miller, via Art Evans

Your problem is another's solution;
Your solution will be his problem.

The significant problems we face cannot be solved by the same level of thinking that created them.
- Albert Einstein

Or, as Brian Kernighan put it:
Debugging is twice as hard as writing the code in the first place. Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it.

do it
do it right
do it right now
- Bobby Riggs

It is not enough to do your best: you must know what to do, and THEN do your best.
- W. Edwards Deming

One test is worth a thousand opinions.

I am a design chauvinist. I believe that good design is magical and not to be lightly tinkered with. The difference between a great design and a lousy one is in the meshing of the thousand details that either fit or don't, and the spirit of the passionate intellect that has tied them together, or tried. That's why programming - or buying software - on the basis of "lists of features" is a doomed and misguided effort. The features can be thrown together, as in a garbage can, or carefully laid together and interwoven in elegant unification, as in APL, or the Forth language, or the game of chess.
- Ted Nelson

Software is too important to be left to programmers.
- Meilir Page-Jones.

If you think good architecture is expensive, try bad architecture
- Brian Foote and Joseph Yoder

While we all know that unmastered complexity is at the root of the misery, we do not know what degree of simplicity can be obtained, nor to what extent the intrinsic complexity of the whole design has to show up in the interfaces. We simply do not know yet the limits of disentanglement. We do not know yet whether intrinsic intricacy can be distinguished from accidental intricacy.
- E. W. Dijkstra

A leader is best when people barely know that he exists.
Less good when they obey and acclaim him.
Worse when they fear and despise him.
Fail to honor people, and they fail to honor you.
But of a good leader, when his work is done, his aim fulfilled,
they will say, "We did this ourselves."
- Lao-Tzu

In ancient China there was a family of healers, one of whom was known throughout the land and employed as a physician to a great lord. The physician was asked which of his family was the most skillful healer. He replied, "I tend to the sick and dying with drastic and dramatic treatments, and on occasion someone is cured and my name gets out among the lords."

"My elder brother cures sickness when it just begins to take root, and his skills are known among the local peasants and neighbors."

"My eldest brother is able to sense the spirit of sickness and eradicate it before it takes form. His name is unknown outside our home."

And I guess that’s the deal with software – really great programmers work in relative obscurity, their code silently running week after week, with never a fuss nor a crash. In contrast, the heroes are often those who rush madly in, toss in poorly thought-out patches and get the system running again, for a while.

eXtreme Programming Conference

Object Mentor has issued a call for papers for the Embedded Workshop at the XP Agile Universe conference August 15-18, 2004 in Calgary, Canada. The Workshop is scheduled for Monday August 16, 1:30-5:00. I wish I could make it but have a scheduling conflict. Though I disagree with some of the tenets of eXtreme Programming, it is an intriguing approach to programming that embodies some great ideas.

This workshop is looking to bring together developers, managers and customers with experience in embedded software that have used traditional or agile approaches for specifying, testing and developing embedded software.

Discussion papers are invited from practitioners reporting how they have applied agile principles in their embedded projects, from theorists who see a way forward, but may not have had the opportunity to test their ideas in practice and from tool builders that have or are planning technologies to smooth embedded development. Participants are expected to gain both insight into current best practices and an understanding of how the craft can be improved. Participants are encouraged to submit a 2-4 page paper. Accepted papers will be made available before the conference so that participants may prepare questions and feedback. Authors of accepted papers will be expected to briefly present their contribution. This will be followed by feedback from other attendees.

Those that would like to attend must provide either a discussion paper or a brief statement motivating their desire to attend. Priority will be given to those submitting a paper.

To find out more about the workshop visit:


Joke for the Week

Recent Muses have included various definitions of the acronym TEAM. Pascal Dornier sends this version: Toll, Ein Anderer Machts. Which means, in German, Great, somebody else will do it.