For novel ideas about building embedded systems (both hardware and firmware), join the 40,000+ engineers who subscribe to The Embedded Muse, a free biweekly newsletter. The Muse has no hype and no vendor PR. Click here to subscribe.

By Jack Ganssle

Gaining Creativity

Published 5/12/2004

Then I stopped, mildly ashamed of myself. The English language has rules. We don't make grammatical decisions based on whim or personal preference. The Index to Grammar and Writing ( tells how to form an article that precedes an acronym or abbreviation:

Do we say an FBI agent or a FBI agent? Although "F" is obviously a consonant and we would precede any word that begins with "F" with "a," we precede FBI with "an" because the first sound we make when we say FBI is not an "f-sound," it is an "eff-sound." Thus we say we're going to a PTO meeting where an NCO will address us. We say we saw a UFO because, although the abbreviation begins with a 'U," we pronounce the "U" as if it were spelled "yoo." Whether we say an URL or a URL depends on whether we pronounce it as "earl" or as "u*r*l."

Since the initial "R" in "RTOS" has a soft "arr" sound, we should use the construct "an RTOS."

A subtle point, perhaps, yet it profoundly illustrates that power of a well-defined language. The Oxford English Dictionary ( (which in its latest print edition doesn't define the word "embedded" in any fashion we developers would acknowledge) defines and traces the etymology of over 500,000 words. Every word we use has a precise meaning. The Chicago Manual of Style ( provides 956 pages of rules that define how we're allowed to combine these half million words.

These codified rules let us write and converse effectively, though God knows unauthorized dialects thwart that easy communications. Sure, we're allowed to cheat the rules occasionally. Skip nouns. And verbs. But I wince when my daughter says "me and my friends."

Few novelists would complain that the rule of grammar restrict their creativity. I'd argue that the OED and Chicago Manual of Style give us a framework that lets us be incredibly expressive. They're the resistors and ICs that populate a PCB that might implement any of a million different designs.

Yet software people rebel against similar standards. In my travels around the embedded world it's rare to find a company that religiously uses any sort of standard to define how they write C or C++ code. As a result the software ranges from beautiful to simply unreadable. When there are no rules, chaos reigns. The Obfuscated Code Contest proves that software can be written in such a fashion that no one can possibly understand how the program works. Our only weapon in the war against unreadable code is the software standard. Why don't you use one?

(And no, I'm not going to give you the URL of the Obfuscated Code Contest. These people are code terrorists and should be hunted down and shot like the animals they are).