Thursday, September 30, 2010

Three Beers to Debacle

One of my (many and myriad) shortcomings as a programmer is that I suck--suuuuuuck--at user interface design. But, in the teaspoonful of user interface design I possess is the following rule of thumb: "If you can't click on it after three beers, it's too small." (Darned if I can remember where I read that, because I'd happily buy its author three beers for the insight.)

But, as we all know (or bloody well should), "distracted" isn't much of an improvement on "drunk"--which apparently applies to computing just as much as driving.

I was more or less thwapped upside the head with this lesson today. On both sides of the noodle.

In the first case, one of the power-users of "my" application managed to make a person completely drop off the application's radar by performing two steps out of sequence. In the second, one of the office's power-users broke the QA edition of the same application by deleting perfectly good files (in addition to the ones being put out to pasture).

What you need to understand is that the first power-user has literally been operating the software in question longer than I've been working on it. The second power-user doesn't normally walk on (proverbial) water so much as hovers above it (not unlike the just-decloaked Klingon Warbird in Star Trek IV).

But in both cases, what either user was being asked to do falls under what we (in software and other flavors of engineering) call "edge cases"--in other words, situations that just happened to pick today to extrude themselves out from under the short ends of the Bell curve.

Sure, you can write it off as bad luck. But the takeaway is that power-users are typically granted their (super)powers for very good reasons--the main one being that they're really busy. And, as we all know "busy," by definition, equals "easily distracted." So never assume that your users--even those who use the application month-in and month-out--can afford to give it (or any "Help" instructions) 100% of their attention 100% of the time. That way lies disaster...at least if you don't have a painless (and even more fool-proof) way to fix things.

Wednesday, September 29, 2010

Another case of no response trumping a bad one

Except that I'm not talking about computer code output this time. Well, not precisely, anyway.

The backstory is that I had an oddball question for a company, and--it being after hours--the most convenient way of asking it was through their website's "Contact us" page. That included a drop-down list for me to designate the general nature of my question/concern, and (as is usually the case) it was a choice of "least off-the-mark" rather than "most appropriate."

When the reply arrived during business hours the next day, it was disappointing to find that the company in question had taken eighteen hours to send a canned response that never so much as acknowledged the original question, much less answered it. Its purpose was to induce me to waste more of my time on another page on their website.

First off, if there's no functional difference between a "Contact us" form and an FAQ (apart from an eighteen hour delay), why even waste bytes on the pretense? But more importantly (IMLTHO), if a "technology" company that makes its bling converting knowledge workers into cash can't grok that difference, who in their right mind would want to do business with it?

Maybe it's just me being weird again, but I actually would have shrugged off a non-answer more readily. Sadly, it's been so commonplace for the past decade or so that blogging about that would be the nadir of banality. But in this case, I think the lameness highlights the fact that, even in the human world, lack of response is actually better than one so organizationally self-involved.

Tuesday, September 28, 2010

Something lost in translation in the Language Wars

The office's Powers That Be are apparently on another one of their "standardization" rolls. Specifically, this means "upgrading" the computer language(s) in which our bread-and-butter is grounded. Based on empirical experience, this means another round of genteel food-fights over language options.

Cynically, I realize that such fights are rarely settled in some sort of meritocratic feature-to-feature smackdown. Not even when they are settled at all--meaning Management fully groks that it has finally run out of road down which to kick the proverbial can. Even when you (like I) are lucky not to be working in a Dilbert-esque scenario where the choice is made based on some alpha-suit tripping over a trade magazine during an emergency pit-stop in a non-executive restroom.

Sadly, personality is--and always will be--a factor. Up to and including passive aggression, prima-donna tantrums, skunkworks re-writes, sabotage, and certain uglier aspects of tribalism that (mercifully) stop somewhat short of cannibalism and/or rituals that made Indiana Jones and the Temple of Doom so eminently mockable.

There is a bright(er) side, however--even above the bits about cannibalism and Spielberg schlock. At least, if you're not what amounts to a computer language hipster. (If that's the case, I can't help you out here. Sorry. There's probably a case to be made in your favor...but you've never heard of it. ;-P)

But. If you're like me, and don't consider yourself in the business of being the unpaid beta-tester of a new language, or--perhaps more aptly--are just plain skeeved out by your fellow programmers' sensibilities, you might--might--have a secret weapon in your arsenal.

That secret weapon, friends and bretheren, boils down to tool-sets. Granted, geeks are quite good at scratching their own itches. But given the choice of cranking out great gobs of code in a sexy new language and stepping back long enough to breathe--by which I mean consider flowers-and-dinner niceties like intelligible API documentation, source control, backwards-compatibility and the like--I think we know what most language alcolytes will choose. Thus, itemizing the costs associated with restructuring the development process around an untried toolset shouldn't hurt your argument, particularly when the new "toolset" revolves around a Notepad-like text editor and a glorified command-line. Unless, of course, your current tool-set also revolves around a Notepad-like text editor and a glorified command line. (In that case, your argument's basically hosed--and may Cthulu have mercy on your soul.)

Understand that I'm not knocking new languages simply because they're new. But toolset support is important--just like anything you have to spend a couple dozen or more hours with a week is important. And if you believe in meritocracy--as many geeks seem to do, at least when it doesn't involve their favorite platform--then you absolutely have to consider toolset support a badge of legitimacy. Why? Because the language itself does not define real-world usefulness, any more than "date night" defines a relationship week-in and week-out. And, really, when Don Juan leaves the toilet seat up and his socks behind the couch...does the candlelit wooing really matter? Me, I think not. YMMV.

Monday, September 27, 2010

Metaphor misfire?

I was heading north on Highway 16 today and--don't ask me how--actually managed to notice one of the billboards. Odder yet, it was, I gather for some sort of investment and/or money management service--which normally consist of a portrait photo and a message intended to soothe the lizard brain--yeah and verily, even give it a warm, flat rock to snooze on.

In today's case, the billboard had the former down, but the slogan, "Schedule an appointment for your finanoscopy." (Note: I may be slightly misquoting that, because my brain was--I'm sorry to say--pretty much evenly split between being a responsible driver and "Wait...what?...Seriously?!"

Correct me if I'm wrong, but any word ending with "oscopy" pretty much implies that something cold and metallic will be inserted, well, somewhere the moon don't shine, y'know? At that point, why not just work in a mammogram meme just for the ladies, while you're at it?

But the point here is not to ridicule a local advertising effort--really, it's not. The point, rather, is to emphasize the power--and, thus, responsiblity--of metaphor. If, indeed, this chapter in the history of marketing is All About "storytelling" rather than data--because Cthulu forfend that the average consumer be asked to blow the dust off her/his left brain--then metaphors need to be chosen with the utmost and scrupulous care. Namely because when you try to attach yourself to something, it, by definition, attaches itself to you.

Sunday, September 26, 2010

Passing the hats

When our office was considerably smaller, the role of our alpha-geek--let's call him AG for short--was considerably more of the chief-cook-and-bottle-washer mash-up. Our mutal boss commemorated this fact by having a number of baseball-style caps embroidered with AG's varied and sundry functions--you know, one for each "hat" AG wears during a typical day/week/month.

If you made the rounds of the office now, you'd notice hats still perched on the credenza above AG's desk...but not all of them. Others now dwell in other cubicles. Which is as it should be. Because this game is definitely not a "S/He who retires with the most hat wins" proposition. My Mom, who ran part of a hospital lab for something over fifteen years, considered an overly busy manager a bad manager: "The best kind of supervisor should have nothing to do," she claimed.

At the time, I think I managed to stop my eyes from rolling. Because, after all, didn't weren't non-busy supervisors the kind who sat in their offices, keeping themselves amused for 40 hours a week while everyone else did the work? In my experience, a few have, but they are very, very few. So it looks like Mom may have been onto something after all. I hate it when she does that. ;-)

Handing off the hat--along with the added value it represents is a scary thing. It's only been in the last few years that I've come to understand it. (Slow learner much???) But there's no way for the junior members to grow without wearing them (in front of everyone). And, more importantly, there's no way for managers to grow without passing them off.

Metrics and motivation: Thoughts from two centuries ago (belated Sat. post)

I couldn't begin to tell you how the subject came up, but last night over dinner Dennis mentioned something he'd caught on NPR on his way into the office earlier in the day. I thought it made a great point about metrics and the Law of Unintended Consequences. Australian history among the many nooks/crannies I have yet to explore, I followed up today by shaking down the interwebs a bit. Despite the fact that historians consider the time-period in question to be part of the "modern" era, it was definitely a peek into an alien world. Regardless of the time, however, people will always play to the metrics and game the system whenever possible.

The story dates from the late 1700s and early 1800s, when Britain was using Australia as a dumping ground for its prison population (that population itself a symptom of economic disruption, which is another post for another day). Fairly recently, that process had become somewhat more expensive, what with those pesky colonists in the Thirteen Colonies rebelling and thus closing off what any right-thinking Brit would have considered a natural human landfill. Moreover, it had been a potentially profitable landfill, as prisoners, once landed, could be sold into a form of slavery known as indentured servitude.

Shipping prisoners to Australia, on the other hand, was a more expensive proposition because of the distances involved. Also, the economic dynamic was, broadly speaking, quite different. Although women--prisoners and others who became Australian by circumstance--were put to work in state textile factories, the larger plan was for convicts to become colonists and laborers. Thus, the reward system for the transport system had also been dramatically altered.

The British Government, having better things to do with its money--even when not squabbling with Napoleon--farmed out the transport to the lowest bidders. The result was predictable, culminating in the scandalous arrival of The Second Fleet. By today's humanitarian standards, England had actually progressed remarkably in the previous century. At the opening of the 18th Century, the hanging of brother and sister thieves (Michael and Ann Hammond) was considered unremarkable, despite the fact that they were 7 and 11 years old. The same sensibilities that were ending slavery and the often-horrific "treatment" of mental illness were brought to bear on the treatment of prisoners.

The British Government's initial reaction was less than satisfactory. Those responsible for profiting from death, disease and misery were rarely tried and never convicted. Requiring the contractors to subcontract a surgeon had the predictable results in an age when "doctors" drew far more social and professional respect than "surgeons," whose profession evolved from barbers and limb-amputators.

Mortality rates dropped only with the introduction of independent oversight, regulation, and a most important change in the economic dynamic: Transport contractors were compensated based not on how many convicts were shipped out, but how many arrived alive and fit to work. In other words, the metrics changed, and results followed rather speedily.

Of course, being the cynic I am, I had to wonder how many of the convicts who were delivered had actually been shipped. After all, the British Navy wasn't above "impressing" captured American sailors into their service even when not officially at war. And, in case that smacks too strongly of American moral superiority, look up the history of the term "shanghaied" and be glad you live in this century. If I had to guess, though, I'd say that such chicanery would have been more trouble than it was worth, and that the metric had been chosen rightly.

One other point about motivation that I thought worth sharing comes from a little later on in Australia's colonial history. Very few convicts were ever actually jailed, because the whole point was to make the place turn a profit. And, as people don't labor very well after you hang them, lashing was the proverbial stick. However, much like our penal system, time off for good behavior was the carrot. (At least for men; women could marry their way out of their sentences.) Even among a "criminal" population, carrots proved more effective. Which, personally, I find a hugely encouraging comment about the human race, particularly coming from a time and place that put a much lower price on human life--not to mention its quality.

Friday, September 24, 2010

Frivolous Friday, 09.24.2010: "Sign of the times"

No, no, no, and no: Not this sign. (Although when I take the reins of this charming--if somewhat soggy--planet as its Benevolent and Whimsically Eccentric Dictator for Life, we are totally rolling with that one, my cherished minions-to-be!)

There's this friend of mine. Let's just call him "A." Partly because I promised not mention names, and partly because he might just enjoy the James Bond MI6 cachet. (Or, alternatively, the oblique "Men in Black" special agent riff. Or both.)

Anyhoo, A. not only is a prolific user of Foursquare, but also set up his Twitter account to re-post to Facebook. Which is where something like the following exchange took place (names and places changed to protect anonymity):

A: I'm at BlahBlahBlah (1234 Yadayada Street, Somewhere) http://4sq.com/wH@+3V$

FB Friend #1: Holy crap! So am I! Which table are you???

A: Oh, man, I think I had my back to you the whole time. Sorry about that, dude!

FB Friend #2: didn't you see [another friend] and i in the back waving????

FB Friend #3: Really, wth? Be more observant next time!

Me: Hahahahahaha...that's just ludicrously funny. Thanks for the laugh, all!

Wow. I mean, if that isn't a sign of our location-aware social media times, what is, I ask you? So I immediately messaged A. to ask for clearance to blog about this--oh-so-excited because, as I put it, "I just thought it was hilarious in the 'you can't make this up' kind of way."

Except that, yes, yes you can make that up. As it turns out, it was all part of a running joke. In reality, one of the above friends lives across The Pond; the other two live five states away.

Needless to write, I was severely abashed to learn how thoroughly I'd been pranked by an inside joke. But A.--bless his heart--aptly noted, "Actually, I think it says something about the age we're living in that this is even possible. That itself is worth a story. "

Too right you are, A...too right you are. Thanks, man. (P.S.: If you're gonna keep bein' all profound 'n insightful like that, you're in mortal danger of being asked to guest-blog one of these days! Don't say I didn't warn you... [evil grin])

Thursday, September 23, 2010

Again, big #fails trump little ones

I screwed up a database query today, at the point where I was linking the data from two different tables. Most--if not all--tables involved in the query use a unique ID number to identify each row. My mistake was using those ID numbers to link two tables whose data, in the real world, wouldn't actually join up.

The scary thing was, though, when I spot-checked the total number of records returned, I was only off by three, out of over seventeen hundred. The upshot was that I wasted about a half-hour poking the data, looking for weird edge cases that could generate three extra records. In other words, it's like taking a powerful magnet to find the proverbial needle in the haystack, only to find that you're looking in the wrong haystack. D'oh!

Yes, in most situations, failures--particularly of the "quiet" genus and "incognito" species--are preferable to their EPIC cousins. This is not one of those situations. Code that utters a faint "eep!" as it fails to its fainting-couch will, more likely, be far more costly in the long run than code that has a screaming, rock star hissy fit and trashes the hotel room drywall with the opening band's guitars after it finds a brown M&M.

Moral of the story: Cherish your error-messages. Preferably in the QA stage or before.

Wednesday, September 22, 2010

A headspace that only Zaphod Beeblebrox could love

Well, I wouldn't classify this as a lesson from the School of Hard Knocks, maybe a lesson from the School of Oblique Swipes. But I try to pay knowledge forward, so here you are anyway.

Backstory: Our senior QA person was out for a couple of days, and I had some code due to be shown to the client. So I more or less commandeered our junior QA person to cover my back--figuring that it was duplicate effort--but, hey, he's gotta learn sometime, right? Plus, testing your own code is like proofreading your own writing in that, with a few days' distance, you're actually fairly qualified to do it yourself, simply because you're no longer heads-down in it.

As rules of thumb go, it's not a bad one. Except when you try to fix bugs as you find them. (Or, more aptly, as the ambitious junior QA person finds them.) Why? Because you've gone from reading the dashboard dials right back to popping the hood and tinkering with the engine. At least if you're anything like me, you can't. And, as much as I pride myself on being a weirdo, based on my observations, I won't be surprised to find myself in the majority on this one.

Moral of the story for managers (and other assorted geek-herders): This is one of those instances where multi-tasking is not only a waste of time but hugely counter-productive besides. Don't go there.

Tuesday, September 21, 2010

The ghettoization of the web browser?

The JavaScript exploit that clobbered Twitter's web interface this morning prompted me to wonder whether the web as it's accessed through the venerable web browser may be falling victim to a certain "ghettoization."

Here's my thinking: Given enough development horsepower and a certain amount of market traction, any networked service that can be monetized can probably afford to develop Android, Blackberry and iOS versions of its software. In other words, leave the traffic and noise and smog and crime of the web for the application equivalent of a gated community in the Hamptons. In today's case, folks who had installed applications to interface with Twitter were not affected, only those who visited via its lowest common denominator, the web browser.

One big strength of the web is that it often makes it easy to look passably good even in the shallower sections of the learning curve, particularly if you can afford the tools. (Aside: Think of the tools as what one of my college friends called the "boom-chicka organ." If you remember those from the 70s and 80s--complete with marimbas and every sound effect but a cowbell--my commiserations. I'd like to block those memories, too, but it just ain't happenin'...)

One big weakness of the web is that it often makes it easy to look passably good even in the shallower sections of the learning curve, particularly if you can afford the tools. In short, the low barrier to entry drives a need for product/service differentiation. Enter the smartphone and their various application bazaars and it's not difficult to imagine a reprise of what happened to the urban landscape when the automobile and little-boxes-on-the-hillside-made-of-ticky-tacky became minimum standards of living in the American psyche.

As a metaphor, that probably only goes so far. I don't think that the riots of the 60s are likely to repeat themselves within the browser. But there's more than a little bit of egalitarianism baked into the ethos of the web. Gated communities not so much. That loss of egalitarianism would, in my opinion, be a grave loss to us all, no matter where we place our "Welcome" mat.

Monday, September 20, 2010

Of light fixtures and illumination

Dennis was at the wheel on the way to dinner Sat. night, which left me freer to pay attention to the landscape. I've driven both ways on East Clinton Street any number of times in any number of lightings, but I'd never before noticed the green house that had the front "porch light" mounted directly above the front door.

It's probably an optimal place for that kind of lighting fixture, but it looked weird for two (conjoined) reasons:
  1. Its style was the classic "coach lantern," wider at the top than the bottom, and
  2. It was--like I said--above the door rather than beside it.
The Amish excepted, the whole idea of night-travel by horse-coach hasn't been viable in this country in something like a century. Then candle and gas-light power were more or less swept to the margins by the Rural Electification Project during the Great Depression, approximately seven-decades-and-change ago.

Yet a 21st century light bulb is shielded from the elements with a relatively inefficient (from the standpoint of surface area to volume ratio) 18th century design...and is expected to be placed at a level easily accessible for the servants to light or snuff out on a daily basis. Because that's what "normal" is supposed to look like, dangitalready.

That, gentle reader, is why thinking outside that benighted box is just so bloody difficult: You have to know that the box is there in the first place. There's just so very much "normal" to go around, and the "weirdos" who install porch lights in places that call "normal" into question aren't too thick on the ground.

Sunday, September 19, 2010

Adjective or adverb?

I'm afraid that my method of "bookmarking" interesting articles (into which I don't have time to detour during the morning news-cruise) is pretty crude: I email their URLs to myself. Which, most days, is all well and good until

A.) They're buried by other mail before I play catch-up, or
B.) Through some nuance of Thunderbird filtering, they're filed in an out-from-underfoot folder.

Which comprises my excuse--albeit longwinded--for not paying forward this Harvard Business Review piece, Misfit Entrepreneurs, from [ahem!] July. Lovely thoughts therein about the misfit's secret weapon: Vulnerability. To wit: Where most are worried about fitting in, the concept is lost on the misfit. Thus are revolutionary companies born. At least going by the blog's name-dropping.

Sadly, on my first read, I caught myself mentally correcting "Ironic that all those enterprises were begun by entrpreneurs trying to do something different." Thanks to Apple, the correction from "different' to "differently" was pure reflex. (Stupid Apple Marketing Dept.!) Only a fractional second later did I realize that the sentence was, in fact, grammatically kosher. A couple of seconds thereafter, I thought about how wide the gulf can be between "doing something different" and "doing something differently."

Granted, they both drive change--and, I would argue, in most cases progress as well. But "different" vs. "differently" is the proverbial difference that makes all the difference.

Saturday, September 18, 2010

Another argument for the importance of science education

Last night, I was clocking my regulation 30+ seconds making tsunami victims of my teeth in the post-brushing flouride rinse. The night before, I'd polished off the green-flavored bottle, and thus started on the blue-flavored bottle (having made the color-switch for no better reason than I prefer the taste of fake peppermint to fake wintergreen.

Problem was, rinsing with the blue flavor is both an offensive and defensive proposition--i.e. strenghening the natural enamel defenses of the tooth while waging genocidal chemical warfare on its bacterial besiegers. Something I hadn't realized when I picked the blue bottle off the shelf. So to distract myself from the scorched earth this stuff was making of my tongue, I fished the empty green bottle out of the bathroom waste-basket and compared labels.

That's when Dennis came in and looked at me a bit quizically. My 30 seconds were up, so I gratefully spat out the stuff, then asked (semi-rhetorically), "What's the difference between 'Rinse' and 'Mouthwash'?"

Without missing a beat, he said, "Marketing."

Good answer. At least from the layperson's perspective. After all, the household pool of dentistry and organic chemistry knowledge is neither wide nor deep. Thus, if we go by Clarke's third law ("Any sufficiently advanced technology is indistinguishable from magic"), then perhaps it's fair to say that "Any insufficiently understood technology is indistinguishable from marketing." If true, it's sobering.

Friday, September 17, 2010

Frivolous Friday, 09.17.2010: Software CEOs as super-heroes

I wonder whether Steve Jobs might have made a grave error this week by chalking up a "You can't make this stuff up" kind of news item. Because it's all too obvious now that the spectacular market dominance of Apple derives not from leveraging decades of outside-the-mainstream acumen, but, rather, from Jobs' own formidible superpowers. Which can only mean that the fortunes of other brand-name software companies are likewise driven by superheroes and superheroines of varying degrees of...errrrrr...superness.

Alas, given the fractiousness of industry, I don't think that we mere mortals can bank on a DC Comics "Justice Friends" scenario--nor, alas, even the assumption that all are working for good. Except, naturally, The Googlers. (In light of tonight's revelations, that "Don't Be Evil" motto takes on whole 'nuther implications, now dunnit...huh? See? Told you so. Remember, folks: You read it here first.)

Anyhoo. Based on the last thirty years or so, we can reliably piece together dossiers of the more notable super-heroes and super-villians--yea even the super-moral-ambiguities. I fancy they'd look something like the following:

Name: Steve Jobs
Secret Identity: The Once and Future CEO of Apple Computer, Inc.
Superpower(s): Mind-control to the point of Stockholm Syndrome-like behavior in his minion-customers--a state typically induced with sleek-looking gadgets and annoyingly slippery interfaces.
Favored Combat Weapon: (See above)
Sidekick (former): Woz, for some time widely regarded as the brains behind the outfit.
Archnemesis: John Sculley

Name: Bill Gates
Secret Identity: Dark Lord of the Evil Empire, albeit sometimes conflated with The Borg
Superpower(s): Relentless assimilation of competing technologies. FUD (Fear, Uncertainty and Doubt).
Favored Combat Weapon: Sticker-gun capable of plastering the Microsoft logo over any software product concept with so much as a hint of commercial viability.
Sidekick: Steve Ballmer (largely for comic relief)
Archnemisis: Richard Stallman

Name: Larry Ellison
Secret Identity: El Supremo Presidente and CEO for Life of Oracle Corporation (See also: What Keanu Reeves can expect to look like 20 years from now)
Superpower(s): 1.) A highly selective form of mind control that causes CIOs to fork over gazillions of dollars for great gobs of database code that require a batallion of DBA-nannies 2.) Spider-like patience and perserverence in acquiring rival and/or complimentary companies
Favored Combat Weapon: Duct-tape (a custom-made polymer comprised of platinum, diamond-dust, shredded first-round Berkshire-Hathaway stock and the sheer futility of resistance)
Sidekick: Mark Hurd
Archnemesis: Oracle's own business practices

Name: Larry Page and Sergey Brin (they share the same brain, doncha' know?)
Secret Identity: Lords of The Google
Superpower(s): The ability to found (another!) web search company during of the dot-com meltdown and scare the living beejeebers out of everybody else within a few short years
Favored Combat Weapon(s): 1.) Knowing how to find absolutely anything (and, oh, btw, your belly-button fuzz is a light grey-purple color today) 2.) 20% time
Sidekick: The little green Android dude
Archnemesis: The government of The People's Republic of China. And--far more amusingly--Rupert Murdoch. (Way to sweep the "judging people by their enemies" category, guyzos! ['doffs chapeau])

Name: Mark Zuckerberg
Secret Identity: That snot-nosed brat who started Facebook
Superpower(s): The ability to drag down entire national economies with time-wasting inanity (see also: Farmville), and inducing his acolytes to recruit other acolytes with completely meaningless "gifts" and/or sheep-throwing
Favored Combat Weapon: Peer pressure
Sidekick: The other three snot-nosed brats who started Facebook...but you've never heard of
Archnemesis: MySpace...not to mention everybody with Web 2.0 dollar-signs in their eyes

Name: Evan Williams and Biz Stone
Secret Identity: Wait...y'mean there are actual people behind Twitter? (And here I thought it was all bird-powered...)
Superpower(s): An infinite capacity to capitialize on celebrity-driven ephemera and the ever-imploding attention-span of the connected world
Favored Combat Weapon: 1.) Sparkly balls of tin-foil 2.) The "Retweet" link
Sidekick: The Fail Whale (nat'cherly!)
Archnemesis: Sesquipedalians

Thursday, September 16, 2010

Rationalization--now with extra navel-gazing!

On one hand, I suppose the fact that I haven't had to mess around too much with the code in question in five years is a good thing. And the fact that some is still recognizably mine from as far back as 2002 is slightly better.

But, on the other hand...daaaaaaaang.

Now it's time for a major overhaul--and lemme tell you, they don't make enough whipped cream for that slice of humble pie! I wasted something between fifteen and thirty minutes chasing a "JavaScript" bug that had everything to do with the fact that I haven't used an "<input type="image"> tag (preferring <img> tags with onclick events) since something like 2003--so long ago I'd forgotten all about that option. (For the uninitiated, the former option uses an image to submit a form on a web page. On my web page, the upshot was that the form was being submitted twice.)

And, looking beyond the code itself to what it was trying to accomplish, I squirmed a little to find loose ends that should have been tied off at the first run.

Which, in aggregate, made it (momentarily) tempting to hang up the keyboard and look into other career options. Except for the fact that it's not 2002 and I would tackle this work much differently in 2010. Which, I trust, is a pretty reliable indicator of professional growth. Or so I like to tell myself.

Wednesday, September 15, 2010

Government snooping - a programer's view

In debugging computer code, I can't think of a situation where no data doesn't trump bad data. Why? Because when you expect data and don't see it, you know something's wrong. Bad data, by contrast, can lull you into the proverbial false sense of security--thus, making it more expensive to backtrack and fix the error that no data would have made glaringly obvious.

Best friend H. posted Time's "What Your Cell Phone Could Be Telling the Government" on her Facebook page. H. is--and will always be--a far more experienced and competent programmer than I, so I can only assume that posting it from her phone was an act of supreme irony.

I suppose on the Civics level, geo-tracking and wire-tracking are equally repugnant. But from a Computer Science level, there's a difference. And the reason I consider geo-tracking worse than good old-fashioned wire-tapping is that the data can be so much more easily hosed by those who have an interest in hosing it.

The difference boils down to this: If you're snooped while conspiring to do something baaaad, you're pretty much dead to rights. The data's there or it's not--it's just that binary. But...need an alibi to inject that bit of "reasonable doubt" into your trial? Send your phone elsewhere with an accomplice. Enter ambiguity. Which is something I like to do when organizations who haven't earned my trust are a little too interested in my...demographics. (That's how Microsoft has 110 year old programmer on file at MSDN thanks to their nosiness--and the fact that their drop-down list goes back to 1900.)

Now. Were I independently wealthy enough to become a professional mischief-maker, it might even be amusing to pick up a second (or third or fourth...) do something like the whole Amelie garden gnome schtick. Just for the sheer pyromanaical joy of watching another data point go kablooey.

In the meantime, however, I despair at the lack of brains involved, It's a simple signal-to-noise proposition, and there's no way around that. Jack Bauer codswallop aside, you don't catch the information that will stop the ticking bomb by floating a hundred driftnet. Just like you don't thwart another 9/11 by shaking down Medal of Honor recipients. Bad data, folks: It just makes the errors that much more expensive. Because doubling the powder when the gun's aimed at your own foot is not what I consider smart.

Tuesday, September 14, 2010

Deja vu fashion and computer languages

Today I really could have used a cheat-sheet on regular expressions in ASP 3.0 (a.k.a. "ASP Classic"). For my gentle (non-programmer) reader, all you need to know is that it's a very dated language. Translated: Few want to be so uncool--in front of teh internets an' everybody--as to admit to remembering something soooo 2000 and all.

Yet there's a lot of it loitering about on web servers, simply because it, for so long, ASP was a stable platform. One could upgrade to the next version without fear of having to re-write existing code. Then Microsoft broke that tradition with .NET 1.0. And--as I understand it--broke it again with .NET 2.0.

Understand that the initial cost of rewriting and debugging and testing so much code was, by itself, daunting. Thus, the tendency to hang on to the existing code-base, particularly when there was no guarantee that Microsoft wouldn't pull the same shennigans with the heir to 2.0.

Sadly, while it seems that hardware (e.g. Commodore-64) and applications (i.e. games like Tetris, Pong, Pac-man, Super Mario Bros.) can have a second life via nostalgia, the same doesn't seem to be true of the languages that originally powered them.

That makes me sad. It's not the demise of the language so much as the ignominy that precedes it--and the lack of an honorable memorial. Which, I suppose, exposes the fault line that runs through some--maybe even most?--programmers: Infatuation with the new and shiny on one side vs. respect for craftsmanship on the other.

Monday, September 13, 2010

Penance

Last week I'd had a bad feeling that my client contact and I weren't quite on the same wavelength, and today it came back to bite. Naturally, the code in question had already pushed out to the live web server and verified according to my understanding of the situation. Sigh. I think I made it out of that one with a whole skin, but still... The bottom line is that it's ultimately my fault for not following up on my hunch, however much I don't like the feeling of "nagging" a client.

So tonight has largely been spent scraping together information for an email that--hopefully--will not be misuderstood by the "client" of some volunteer work. (This despite the fact that I know I don't have my brain stretched all the way around the subject matter.) Only tomorrow will tell whether said "penance" has been done in vain.

Sunday, September 12, 2010

When commodity leads to scarcity

Long-time friend P. stayed with us on the first leg of his "vacation," which largely revolves around his latest multi-year obsession, bicycling. Mostly it seems to be a social hobby--I'm still trying to sort the names he mentions into their proper spheres--but was kind of taken aback when P. mentioned joining a "mystery ride." In the proverbial nutshell, the participants know where & when to show up and how many miles will be covered.

In a bit of serendipitous coincidence, I glanced at the bit of Shopper that tagged along to our visit with the bees (for a planned hive-combination that didn't didn't happen after we found a viable Queen). Apparently, you can also book a bus tour to a mystery destination. On the surface, that's kind of an alarming proposition: Give your money to strangers, climb aboard their vehicle and let them take you wherever they feel like going. (Umm, thanks, but I'd just as soon save that experience for my senility, if it's all the same to you...)

But, after further review--apparently AWOL from Chicago today--maybe there's a new value proposition not available, say, ten or fifteen years ago. When the world shrinks, there's correspondingly less room for mystery. When Dennis & I went to England in 2007, we pre-emptively attacked its possibilities by way of Fodor's, Rick Steves, maps of The Tube, the satellite view on Google Maps, and an OpenOffice spreadsheet of what venues were open when. (For the record, London still pwned us But Good with streets that changed names every few blocks, Underground stations lying about which streets they were on, the Inns of Court, and Imposter Statue, who turned out to be Not Admiral Nelson in a place that was Not Trafalgar Square.)

Fast forward to 2010, and even bijou little Annapolis Royal has Google Street View. Which has its comforts--most notably peace of mind when you're booking a place to stay. But removing the risks and leaving the mystery--that's pretty tough to pull off. The industrial and information ages were All About making commodities of formerly scarce things. Mystery, like privacy, is one of the notable exceptions.

Friday, September 10, 2010

No Friday or Saturday posts

I received confirmation a bit earlier today that a friend of some pedigree--Best Man at our wedding, Dennis & I have both known him since our late teens, etc., etc.--will be rolling into town to spend part of the weekend chez fivechimera. Here's to everyone having a good start to the weekend: Will check in sometime Sunday. Try not to dance all the nap off your Blue Suede Shoes while I'm gone, 'k?

Thursday, September 9, 2010

Well, well, well...

And here I thought that last week's release of the "Back to the Future" iPod Shuffle was...interesting enough. Granted, I'm sort-of swiping a meme from Joel Spolsky (I'm thinking of the Clippy mention under Mistake Number 4 here). That, and I'm just plain biased toward the Shuffle being the most useful member of the iPod family. (Then, too, the fact remains that you can only make so many trips to the same well.)

But here you are anyway: Apple relaxes restrictions on iOS code, iAd analytics. Could someone, perhaps, be getting a wee bit nervous?

Wednesday, September 8, 2010

Connectivity is crack

Yep. Just figured that out today. Left my cellphone--which, in my case, ought to be re-christened celltexter--at home. Conscience made me stay at work several minutes beyond timesheet parameters, just to make up for all the times I logged into email/Facebook to check for replies to in-flight conversations. Nasty stuff, 24/7/365.242193403 connectivity. Good thing I can always quit anytime I want, hey?

Tuesday, September 7, 2010

Mixed blessings & feelings

So I was chunking out object code in NetBeans, not convinced that I wouldn't end up scrapping classes...or maybe smooshing their functionality into mulligan stew. But I was in The Zone at the time, so nothing mattered so much as splashing ideas out onto screen. As proof I offer the shocking admission that I actually...sit down and brace yourselves...skipped comments.

It's true. (For context, this is like catching Mom/Dad slipping unwanted broccoli to the dog--just like you did Back In The Day.)

Fast-forward to today, and the saving grace is that each of those classes is but a mere sip of Java--nary enough to dissolve a sugar cube. Translated: I still have some idea what I was thinking. And, so, because I had time to fill while waiting for a known distraction, I took advantage of a NetBeans feature that looks at a function's input and/or output parameters and generates the skeleton of the comments for that function. It's one of those features that I learned about long enough ago that I don't recall where, when or how. Only today, though, did I think to have mixed feelings about it.

IMO, the time when that feature is optimally useful--at least in terms of "flow"--is when you've just written completed the outline of the function in question: List of inputs, output type, and any exceptions (for lack of a better term, errors) it could raise with other functions that call on it. Problem is, in most cases NetBeans picks up on the fact that your function is still incomplete (i.e. hasn't specified the promised value to be returned or contains no code capable of throwing exceptions). That's when the little red exclamation point ("compile error") shows up on the periphery of the user interface, basically sticking something irritating into the corner of your eye. Just like it was intended to do.

And thus the "flow" is ultimately subverted. The red exclamation point tickles away at your eyeball until you've fleshed out the code enough to humor the compiler, which has two potential downsides: a.) The chances of losing the birds-eye view is fairly high, and b.) Writing enough code to humor the compiler is not the same thing as writing complete or true code. Or...you put up with it until you finish that portion, which has two potential downsides: a.) Training yourself to ignore that warning, and b.) Making it that much more difficult to find a real error once all the code has been written (i.e. there's a lot more of it). Or you could just skip commenting until the first draft of the class is written.

Heresy. Blasphemy. Sacriliege. (C'mon, already: Next thing I know, somebody'll say that The Monkees played their own instruments too...)

Anyhoo. Do I have an actual, constructive suggestion for improving this facet the (already quite good) NetBeans UI? Or, better yet, plan to put my bling where my blog is and write a better IDE? Oh, heck no. Left to my 'druthers, I could be trusted to stick to a certain comment format that could then be parsed to generate code-skeletons. It makes a certain sense, pseudo-coding before coding. Unfortunately, that still leaves the compiler--red exclamation point--problem if you jump the shark and punch whatever button generates the function "skeleton." (Then, too, building a feature to my preferences does not put anyone in mortal danger of said feature going viral.)

Rather, the point of this is to drag yet another highlighter tip over the Law of Unintended Consequences. Because, in this case, the outcomes are so mixed that I'm not quite sure exactly what behavior consequences were originally expected. But it's pretty easy to see why some programmers prefer to spend their days achieving gestalt with hardware drivers or databases or in the OSI "seven layer salad" or what-have-you. As inscrutable as such critters seem to non-programmers, they can jump in far more predictable ways than human beings.

Sunday, September 5, 2010

Intersection

I picked up again on Tom DeMarco's Slack today, most of which (thus far) preaches to the proverbial choir--at least in my case. But probably not much further up the organizational food-chain. (Side note to writers of subversive--yea, even truly "guerilla"--management books: If you want to be passed up the chain of command, include lots and lots more charts. Just trust me on this.)

I'd be finished and onto something else by now, except that we needed to check on the bees and upgrade one "nuc" of Russian/Carniolan bees to a full-fledged hive-box--a crabby bit of business last time--in the middle of the day. As Dennis & I were packing up--from a pleasantly cooperative move--our "landlord" happened down the driveway, and we spent about an hour chatting with him.

Said "landlord" is a semi-retired farmer. Which, if you know farmers, basically means that he might trust the kids to take on some of the work when he goes on vacation (or, in his case, business travel). Where other "retirees" are out playing golf or playing bridge (and otherwise finding ways to keep their spouses from leaving them from pure exasperation), Mr. P. makes twice-daily trips to the chicken-house.

I leave it to my gentle reader to imagine how near and dear the salmonella-induced egg recall is to his heart. Not in any negative sense: Oh, no-no-no-no-no-no. If anything his distributors will be strengthened by it. But in the discussion, Mr. P. mentioned that the agro-titan culprit in the recall is notorious inside the industry for "cutting corners," as he put it. And not just with eggs.

That informaiton, of course, is hearsay--albeit with a somewhat better pedigree than mere industry gossip. All the same, it highlights the fundamental difference between true efficiency and corner-cutting. "Efficiency" means getting the same (or greater) output for less input. Booyah for that. Corner-cutting, in contrast, is no less than exercise in lying. Lying to customers--and, quite probably, lying to oneself. And once the self-deception takes root, I don't think that there's much that even my Mom and her dreaded bar of soap can do. And that's saying something. Sadly.

Saturday, September 4, 2010

Time for a new meme

I only just realized today how very dated the phrase "phoning it in" truly is. Thus, "Texting it in" should be the new gold standard for faking participation. Who's with me on this?

Friday, September 3, 2010

Frivolous Friday, 09.03.2010: Geek tombstones

Today's preview of Autumn pretty much coincides with Dennis harvesting the pumpkin that we allowed to grow (from morbid curiosity) from the boneyard of its Jack-o-Lantern forebears (otherwise known as the compost bin). Which, together, makes me think of Halloween. Hence the pre-emptive morbidity of tonight's post.

Of course, there's always (the obligatory) "System failure: Abort, Retry, Fail?" But that's so generic, so let's personalize our final testament to geekhood, shall we?

PHP
die();

ASP "Classic"
Response.End

*NIX
rm /home/doreen -R

Java
System.out.println("Goodbye, World!");
return;

DOS
CTRL + ALT + DEL

FTP
ftp> close 127.0.0.1
221 Goodbye.
221 Logout.
ftp> bye

UNIX (Timestamp)
Doreen A. Clemons
-65972040 - [overflow] (...or so I hope...)

C++
Human *doreen;
doreen = new Human();
doreen->live();
delete doreen;

T-SQL
/* Yes, I know that this is technically impossible--just humor me, 'k? */
KILL @@SPID
GO

CSS
body
{
   position:absolute;
   margin-top:72in;
   display:none;
   visibility:hidden;
}

Thursday, September 2, 2010

The future according to 1985

I know I'm supposed to appreciate Terry Gilliam's Brazil as a cult classic, but its dithering final 20-40 minutes only made me crabby. Mostly because it reminded me of how easy it is to screw up absurdism when it strays too far from satire.

For all that, its prescience--case in point: the War! On! Terror!--was sometimes chilling. Also, I couldn't help but notice the flat-panel monitors. Particularly how they were attached to typewriters like the one Grandpa bought second hand from the local newspaper when Mom went off to college (a few months before Ed Sullivan rolled out the carpet for The Beatles). Then again, the waterfall of continuous-feed paper streaming in column after column down the wall of the Head of Information Retrieval was more than a bit reminiscent of The Matrix's fountain-spill of green characters.

It's a slippery thing, the future. (Just ask the nameless narrator in William Gibson's short story "The Gernsback Continuum.") In theory, the future's supposed to be the child of How-You-Know-It's-Supposed-to-Work and What-You're-Doing-to-Make-It-That-Way. But, sometime in the night, something else sneaks through the bedroom door and begets the actual future.

Wednesday, September 1, 2010

How not to convert transactions into relationships

Our recent visit to 2/3rds of Canada's Maritime Provinces was book-ended by a stay at the Dartmouth Country Inn & Suites. Since our first stay, they've been pinging my Inbox with offers that I will likely not take up for at least a couple of vacations, so my patience ran out and I unsubscribed today.

After submitting the "unsubscribe" form, I was unamused to see that Country Inn and Suites and I have different definitions of our relationship. And when I say "different definitions," I'm thinking of a discrepancy along the lines of the characters of Dan Gallagher and Alex Forrest in 1987's Fatal Attraction. (Needless to write, Country Inn is starring as Alex.) Specifically the post-unsubscribe notice says:
You will be removed from the email list to receive promotional messages and special offers from Carlson Hotels within 10 days. You may continue to receive non-promotional messages, such as reservation confirmation, account status, an invitation to update your online profile or to participate in a survey.
Emailing me for reservation/confirmation? No problem--that's just another part of doing business--keeping in touch when you're actually in touch is All Good.

But the rest is wide-open to abuse. When it's all said and done, I just needed a place to sleep & shower and a viable internet connection. Breakfast is optional. That hardly needs a profile, considering that the only option for the peanut butter on my bagel is "creamy." (And it's a rare survey that captures what matters to me anyway, so emailing me for my actual opinion's dooms a batch of bits to oblivion.)

The sad thing is that, at the trench level, the motel was mostly a good place to crash; it's the rear eschelon that's screwing things up for everyone by not bothering to understand, much less segment, their market.