Felix the Flying Frog

The first time I'd read this was perhaps in the early 1990s. No idea where I'd read it. Many years and a few careers later, it's still meaningful:

—–

Once upon a time, there was a man named Clarence who had a pet frog named Felix. Clarence lived a very modest life based on what he earned working at Wal-Mart but he never gave up his dream of being rich. One day, hit by sudden inspiration, he exclaimed, “Felix, we’re going to be rich! You will learn to fly!”

Felix was terrified at the prospect. “I can’t fly, Clarence! I’m a frog, not a bird!” Clarence, disappointed at the initial response, told Felix: “Your attitude isn’t helping matters. I think you can benefit from some training.”

So off Felix went to a three-day course where he learned about the history of aviation, the basics of aeronautical engineering (e.g., lift, thrust, drag, etc), gliders, parasailing and the lives of famous fliers. (For obvious reasons, the instructor did not mention Icarus.) After the training and on the first day of the “flying lessons,” Clarence could barely control his excitement (and Felix could barely control his bladder). Clarence pointed out that their apartment building had 7 floors, and each day Felix would jump out of a window, starting with the first floor and working his way up to the top floor.

After each jump, Clarence and Felix would analyze how well he flew, isolate the most effective flying techniques, and implement the improved process for the next flight. By the time they reached the top floor, Felix would surely be able to fly.

Felix pleaded for his life, but his pleas fell on deaf ears. “He just doesn’t understand how important this is,” thought Clarence. “He can’t see the big picture.”

So, with that, Clarence opened the window and threw Felix out. He landed with a thud.

The next day, poised for his second flying lesson, Felix again begged not to be thrown out of the window. Clarence opened his pocket guide to “Managing More Effectively,” and showed Felix the part about how one must always expect resistance when introducing new, innovative programs. With that, he threw Felix out the window again. THUD!

On the third day (on the third floor), Felix tried a different ploy: stalling. He asked for a delay in the “project” until better weather would make flying conditions more favorable. But Clarence was ready for him: He produced a timeline and pointed to the third milestone and asked, “You don’t want to mess up the schedule, do you?”

From his performance appraisal feedback, Felix knew that not jumping today meant he would have to jump TWICE tomorrow. So he just muttered, “OK, let’s go.” And out the window he went.

Now this is not to say that Felix wasn’t trying his best. On the fifth day he flapped his legs madly in a vain attempt at flying. On the sixth day, he tried “visualization.” He tied a small red cape around his neck and tried to think “Superman” thoughts. It didn’t help.

By the seventh day, Felix, accepting his fate, no longer begged for mercy. He simply looked at Clarence and said, “You know you’re killing me, don’t you?”

Clarence pointed out that Felix’s performance so far had been less than exemplary; failing to meet any of the milestones he had set for him. With that, Felix said quietly, “Shut up and open the window.” He leaped out, taking careful aim at the large jagged rock by the corner of the building.

And Felix went to that great lily pad in the sky.

Clarence was devastated. His project failed to meet a single objective he set out to accomplish. Felix not only failed to fly, he hadn’t even learned to steer his fall; instead, he dropped like a sack of cement. Nor had Felix heeded Clarence’s advice to “Fall smarter, not harder.”

The only thing left for Clarence to do was to conduct an after-action-review and try to determine where things had gone wrong. After reviewing the records and giving the data much thought, Clarence smiled knowingly and said, “Next time, I’m getting a smarter frog!”

Some Questions:

  • How did Clarence’s expectations get so out of line with Felix’ capabilities and how might better alignment have been achieved?
  • Why did Clarence reach so quickly for training as a solution?
  • What role did the power differential between Clarence and Felix play in shaping the course of events?
  • Why was Felix so compliant, even in the face of his own destruction?
  • What blinded Clarence to the role he played in the failure of his attempt to make Felix fly?
  • What talent did Felix possess that might actually have made Clarence and he rich and why didn’t Clarence see that?

On Your “Leet Google Skillz”

If we all, together, would’ve just dealt with the necessary issues early on, then this would’ve been only a few months’ worth of inconvenience and we’d all be back to normal.

But, nope… here we are, about two-years on… and we’ve seen… **checks numbers** 816,609 deaths from some “made-up” virus (those were sarcasm-quotes).

Worsened further by the continuing and growing obliviousness of humanity. Mostly American, to be frank, who like to scream about “Muh rights!” but, let’s be honest, it’s not only here in the USA. There seems a steadfast refusal to acknowledge reality and that’s given the virus a strong enough foothold to continually mutate.

Yep, we’re surrounded by breathing Dunning-Kruger Graphs aplenty.

Uh, no, it isn’t.

Spotted on one of the hand-outs that was dispersed last week:

I’m starting to think I’ve had (another) stroke.

It reads: “Is this true or false? Relative to ultrasonic testing, air is considered a good conductor and for this reason ultrasound will carry long distances in air.”

First, “relative to ultrasonic testing”? Not sure what that might mean.

Second, no, air is a rather horrible conductor of ultrasonic sound energy.

It reads as “TRUE – Relative to ultrasonic testing, air is considered a good conductor for this reason ultrasound will carry long distances in air.”

Uh… no, it isn’t and, no, it won’t. Air (of any kind or density) is an absolutely horrible sound transmission medium.

The one with an overbuilt solution…

Then there was the one about the overbuilt-solution.

We were a “Microsoft Shop”. Windows NT4 was in full-swing. Virtualization was in its infancy.

Leadership discouraged the exploration of “best of breed” solutions. Making things more useful by simplifying them wasn’t permitted. This often meant that the alternative was interpreted as “not Windows.”

Windows was “the only solution”.

One of the applications that was needed was something to translate the incompatible line-endings of submitted text files from a particular customer into something that Windows could read.

I knew this would be as simple as a cron job to trigger a periodic unix2dos command. It’s a built-in command. Trivial for a low-priority utility box. And because it was coming from a customer’s *nix system, that command could even be injected quite harmlessly into their workflow so it happened before it was even sent to us.

“Impossible!” leadership would howl.

Rather than ensure it’s done before transfer, we’ll do it after. We’d also encounter the cost of this particular server sitting entirely idle except for the two times per day (about 1/2 second each) that it would have to do it’s assigned job. It couldn’t be tasked with any other process or job because, in those days, a server was assigned one task. This went far beyond company policy and was engrained in the very thinking — the cultural belief in IT fields.

So, we did it the enterprise way because “that’s the way it’s always been done.”

  • Select hardware, because virtualization was such a new concept (several years by that time) that it couldn’t be trusted.
  • Buy a new server, for about $3k with a suitable onboard RAID-1, dual NICs, dual-power, dual-CPUs. It’ll draw about 100 watts at idle. Always. It will occasionally run a bit higher than that, but it’s practically idle. All the time.
  • Wait about two months for the servers to arrive.
  • Buy a Windows license.
  • Buy a patching license.
  • Double it (again) because policy would require redundancy. They’ll need to be installed in pairs at least per environment.
  • Another thing policy would require is that equal hardware must also then be deployed to Staging and Prod environments. That results in deployment of six servers, minimum.
  • Ensure we have physical space and capacity in the datacenter to support those six servers — because policy — so, that’s the maximum possible load of 230w each, times six.
  • And that’s beyond the unprovisioned $24k hardware cost.

Don’t forget to ensure it’s included in the security/patching list.

And update the inventory list. Because we’ll also need to dispose of it in five years’ time.

Y’know, spending all of that time making the assorted “impossible” claims will really irritates people who are already doing the impossible.

“Challenge accepted.”

So we did it the more efficient way. A simple unix2dos command on an already-existing, low-priority Linux utility VM. Yep, we managed to sneak one of those in. Two, actually. And it ran flawlessly for several years. And it was low priority. If something else needed resources, it would happily step entirely out of the way and wait.

As I recall, it was literally:

unix2dos -k ${filename}

Actually, it was stuck in crontab, so it was very slightly more complex.

Line-endings wouldn’t be an issue today, of course. Operating systems thankfully are graceful enough to ignore certain low-level encoding limitations.

Mostly.