Embedded Muse 120 Copyright 2005 TGG November 22, 2005

You may redistribute this newsletter for noncommercial purposes. For commercial use contact jack@ganssle.com.

EDITOR: Jack Ganssle, jack@ganssle.com

- Editor’s Notes
- Interesting Articles
- Tools
- Bucks, Not Tech
- Salary Surveys
- Jobs!
- Joke for the Week
- About The Embedded Muse

Editor’s Notes

Do you want to increase your team’s productivity? Reduce bugs? Meet deadlines? Take my one day Better Firmware Faster seminar. You’ll learn to thwart schedule-killing bugs, manage reuse, build predictable real-time code, better ways to deal with uniquely embedded problems like reentrancy, heaps, stacks, and much, much more.

***Update – for these two events only*** I’ll present new information about future-proofing your career: how you and your team can deal with the challenges of offshoring and changing employment demographics.

I’m presenting this on two dates:
- Chicago, IL on December 5
- Irvine, CA on December 7

Want to be your company’s embedded guru? Join us! There’s more info at https://www.ganssle.com/classes.htm , including cheap flights to these cities from around the USA.

If your outfit has a dozen or more engineers who can benefit from this training I can present the seminar on-site. See https://www.ganssle.com/classes.htm .

Interesting Articles

The September issue of IEEE Spectrum had a couple of really interesting articles. “Why Software Fails” is a must-read for all developers (http://www.spectrum.ieee.org/sep05/1685 ). And “The Exterminators” (http://www.spectrum.ieee.org/sep05/1454 ) talks about static analysis of programs to identify errors. Specifically covering Praxis High Integrity Systems, the article shows how Praxis has used the SPARK language and toolchain to achieve nearly zero bug rates. One can’t help but wonder why we continue to use C, when languages like Ada and SPARK result in code whose bug rate is at least an order of magnitude lower.

A number of readers sent a link to an article in Wired (http://www.wired.com/news/technology/bugs/0,2924,69355,00.html ) called “History’s Worst Software Bugs.” The short piece includes links to other sources. Did you know the CIA allegedly planted code in pipeline software that caused a massive explosion in the USSR in 1982? I’m not sure why the authors call this a bug as the malfunction was intentional. But it’s interesting and has sort of scary implications.

The most recent issue of Embedded Systems Design (which used to be Embedded Systems Programming; the change was made to more accurately reflect the magazine’s audience) has a fascinating article (http://www.embedded.com//showArticle.jhtml?articleID=173402175 ) called The End of Moore’s Law by Steve Leibson. He examines some myths behind the Law, shows where the industry is lagging, but predicts that despite the insanely tiny geometries now in use the Law will hold true for another decade or more.

Is it easy to find firmware engineers? According to Today’s Engineer (http://www.todaysengineer.org/2005/Nov/workforce.asp ), embedded software people score 3.0 on the 1 to 5 (1 being easiest type of person to find; 5 the hardest) SIA scale. Ranking as harder to find are Analog/Mixed signal designers (5.0), Application Engineers (5.0), PhDs (4.0) and many, many more. EEs generally rank 3.91, and software people 2.8.


Fred Hugand sent this link (http://www.scootersoftware.com/ ) to a better diff tool, this one named Beyond Compare. I’ve only played with it a bit so far, but it looks like a great product… and is only $30.

Do check out Ed Sutter’s free HyperTerminal replacement at www.microcross.com/html/micromonitor.html (about halfway down the page). To quote Ed: “it provides basic services typically used during embedded system development... TFTP client/server, DHCP server, serial command scripting, and even a terminal server that allows you to access the PC's serial port remotely via telnet.”

The page also lists information about Ed’s book Firmware Demystified, a worthwhile addition to any developer’s library.

Bucks, not Tech

Over the years I’ve been on the Board of Directors of a handful of pre-IPO high technology companies. It’s always fascinating to participate in an outfit’s growth and, hopefully, public offering or sale.

But you might be surprised what happens at Board meetings.

These companies are inventing the latest in astonishing and cool new technology. The products are their very life; there’s nearly nothing more important than getting them to market quickly and with a set of features guaranteed to wow the customers.

But Board meetings give only slight attention to the products and technology. There’s a tacit assumption that the engineers will create these new wonders. Do we need a whole new invention? Don’t worry – engineering will reliably produce whatever magic is needed. Somehow.

The Directors focus relentlessly on sales and the financials. They might hear an occasional status report from the engineering VP, but generally haven’t the expertise or even interest to hold that person particularly accountable. VPs of marketing, sales and the CFO can expect to be relentless grilled, though.

Perhaps this is as it should be. Capitalism is about the creation of wealth, and wealth is measured and managed via the financials. But sometimes I think more Board-level attention to the products would result in better numbers for the company as well as happier customers.

It’s odd how cavalierly companies treat their biggest asset – products and software. It’s nearly unheard-of for a business to list the value of this IP on their balance sheet, yet they do itemize the value of desks and chairs. Microsoft reports $2.3b in “Property and Equipment,” but no value at all for their software. Yet if they lost the source to Windows and Office the company would be bankrupt overnight.

Salary Surveys

Software Development has released their latest US salary survey (http://www.sdmagazine.com/documents/s=9907/sdm0511a/0511a.html
- a particularly annoying registration is required). It covers all of software, not just the embedded field, but the numbers are suggestive.

Salaries have notched up just a percent or two. C and C++ developers score about in the middle of the pack for income, happily ahead of C# and Java developers, but we trail those using Python.

Oddly, those developers working mostly on security issues are among the lowest paid programmers of all; only QA people do worse.

Computerworld also has a new salary survey (http://www.computerworld.com/careertopics/careers/story/0,10801,105612,00.html ). Their experts believe that cost of living raises have become the new norm. And developers don’t seem to mind; only 18% expressed dissatisfaction with their earnings.

And, for those developers worried about job security, there’s a handy handbook at http://thc.org/root/phun/unmaintain.html to help one write utterly unmaintainable code! This, of course, goes against everything I believe but is funny… in a sick sort of way.


Joke for the Week

Catherine French contributed this one:

If computer error messages were haikus:

First snow, then silence.
This thousand dollar screen dies
so beautifully.

With searching comes loss
and the presence of absence:
"My Novel" not found.

Three things are certain:
death, taxes, and lost data.
Guess which has occurred.

A file that big?
It might be very useful,
but now it is gone.

Windows NT crashed.
I am the Blue Screen of Death.
No one hears your screams.

Errors have occurred.
We won't tell you where or why.
Lazy programmers.

The code was willing.
It considered your request,
but the chips were weak.

Printer not ready.
Could be a fatal error.
Have a pen handy?

This site has been moved.
We'd tell you where, but then we'd
have to delete you.

ABORTED effort:
Close all that you have.
You ask way too much.

The Web site you seek
cannot be located but
endless others exist.

A crash reduces
your expensive computer
to a simple stone.

Yesterday it worked.
Today it is not working.
Windows is like that.

Having been erased,
the document you're seeking
must now be retyped.

Serious error.
All shortcuts have disappeared.
Screen. Mind. Both are blank.