Skip to main content


Be careful what you wish for

Many years ago, I worked with a firmware engineer. We'll call him 'Bill'. 'Bill' was an interesting character, for he was fond of saying provocative things in order to observe your reaction.

I walked in to Bill's office one day, and he was sitting there with his feet on the desk, leaning back in his chair. Hands clasped behind his head. I'd have thought he was napping except I noticed that he was staring at the ceiling.

"What's up, Bill?", I asked.

Bill replied: "Oh, I'm working on the firmware for the new color printer, and I'm thinking about what to do if someone opens the cover in the middle of a print cycle. It's giving me fits."

He continued: "Sometimes I wish humans were descended from dogs instead of apes." He paused.

"Why's that, Bill?" I asked, taking the bait. By then, I was on full alert.

"Maybe then they wouldn't be messing around, pushing buttons when they shouldn't." Bill said. Clearly, this was the punch line he was waiting to deliver.

"Yeah", came my immediate reply, "but then, you'd be sitting here, pondering what to do when the user urinates on the printer with the power on."

Bill broke out laughing. Clearly, he wasn't expecting that response.

Mission accomplished.

This is too funny! Spam ad for spam ad posting position...

I found this one one of my classified ad sites today:

Join one of the best Advertising Company of India. We pay you for your hard work. 100% Payment urance. Its a Ad Posting job (copy-paste work). Unlimited Monthly income. For Details visit : www. [spammer-site]. com or Email us at [email deleted] or Call us at [phone number deleted]

This is too funny - spammers dropping spam ads for spam ad droppers who will then drop spam ads onto more sites. It's "copy-paste work". Indeed. This is recursion run amok.

Metric vs. Imperial system smack-down

Here's a funny (and over-the-top) diatribe on the advantages of the Imperial over the metric measurement system:

The metric system also fails to be sized appropriately for humans. Because of its derivation, units of measure are divisible by ten, but ill-suited for labor that does not involve extensive mathematical computations. Is it any wonder that a man is still six feet tall? Measuring a six-foot, 31-year-old man's height in centimeters (182) makes as much sense as measuring his age in months (372).

DIY - Silver Lightning™ cleans silver via electrochemical reaction

OK, this is off-topic but what the heck - it's interesting (to me, anyway).

I've seen commercial advertisements for the Silver Lightning™ Tarnish Remover Tray
on various television shows, The product demonstration shows a person placing the Silver Lightning plate under water, then placing tarnished silver on the plate -- and like magic, the silver brightens and the tarnish vanishes.

I'm an inquisitive guy, so I assumed this was due to some kind of chemical reaction involving electrolysis, so I searched the web to see what I could find on the subject.

It turns out that silver tarnish is silver sulfide, much of which comes from the trace amounts of sulfur in the air. The Silver Lightning product is apparently nothing more than an aluminum plate, which, when placed in a solution of baking soda and water (about 1 cup per gallon) causes an electrochemical reaction that draws the sulfur away from the silver and to the aluminum.

Hell is other people's code

Jean-Paul Sartre said: "Hell is other people".

To which I say: "Hell is other people's code".

All kidding aside, working with other software developers' code can be daunting enough, even when the code was written by diligent, conscientious engineers.

It becomes downright nasty, bordering on torture, when it was written by someone unconcerned with the need to maintain the code later. I wonder, when working with such code, what level of Hell I've landed in.

I've seen near-identical functions located adjacent to each other in the same file, each differing by only a few characters here and there, and both spanning a half-dozen display screens, making it impossible to even tell which function you are looking at. Each having conditional compilation controlled by the same manifest constant with a near-meaningless name. The second function body #undef'd the manifest constant before the first line of the function. So there was no way to know, when looking at a particular screen full of code containing conditional compiled statements, whether the code was compiled and active in this particular context.

I've battled the vile demons of magic numbers, copy-and-paste code as a means of code 're-use', low-level communication code that pops up blocking error message dialog boxes in the middle of threaded data send routines, what-should-have-been-library-code-but-was-just-another-source-file (used in a GUI application) that unceremoniously calls exit() when an error occurs in the middle of an initialization routine.

All the while, I'm repeating to myself: "I have no mouth and I must scream".

So: When you write or maintain code, please try to keep in mind that someone else may need to read, understand, and even - *gasp* - modify the stuff you are generating. It's a good way to help make the world a better place. Really.

Resist the temptation to take that shortcut. Drop a few comments describing your assumptions. Sprinkle the code with a few assertions to describe the conditions required for proper operation - but don't rely on assertions to provide runtime error checking; use exceptions or well-defined return values if you must. If you know about a precondition or gotcha, make a note of it for the benefit of others. Do something, anything, to improve the condition while you are working on the immediate need.

Take the time to think about those who follow - They'll love you for it.

An unmatched pair

I heard a couple of back-to-back radio ads this morning. One was the predictable Christmas commercial, prepping everyone for a mad holiday spending season. Ok, nothing unusual there.

The one that followed made me laugh: advertising that they now have many more women than men on their service. Something about a record imbalance (my words.)

So I thought to myself: should work a deal with to help eliminate their excess inventory!

The last gasp for pathetic email spammers

I saw this in my inbox today:

Subject: Ado6e Acro8at 8 79 $, 5ave 599.95
Body: Vlsi+ cheapxp4pc .com ln 1nternet Exp1orer.

This is so truly pathetic. Yes, it managed to get past gmail's spam filter. So what? It's so blatantly obvious that this is spam that one can just delete it without reading it. Out of the hundreds or thousands of spam messages that end up in my gmail spam box, this is the only kind of message that makes it through of late, and it's only rarely (one or two out of thousands!)

A nation of data-entry operators?

One thought that has been popping into my head over the years, is that the internet has turned everybody (well, maybe not everybody, but sometimes it sure seems like it) into a surrogate data-entry operator.

Comprehending Engineers

Quick Take:
Here's a collection of humorous bits about engineers and engineering, from a cow-worker.


Another preinstalled software mop-up operation

I had the 'honor' of rescuing yet another victim of a pre-installed software nightmare. A new co-worker was working with his notebook (a Hewlett-Packard, recent vintage, less than a year old with Vista Home Basic installed).

The complaint? Minimum five (yes, FIVE) minute boot time from power-on to desktop interaction.

After a cursory examination, I found that it wasn't a hardware problem, nor was it due to memory limitations: the system had 512MB RAM, Vista was using just over 300MB with no other applications running (yes, that's a lot, but this is Vista, after all).

Syndicate content