Showing posts with label First world problems. Show all posts
Showing posts with label First world problems. Show all posts

Wednesday, January 17, 2018

Do the tools make the maker? Sometimes I wonder...

One of the electronics/computer repair shops in Moncton has been branching out into selling Raspberry Pis, Arduinos, and a whole whack of, ahem!, "accessories" for them.  Business is apparently brisk:  One wall became two, then three.  I alternate between referring to them as "Candyland" and "The Widget-pushers."

So I emailed the Alpha-Widget-Pusher last week to see whether he had a source for the ATMega328P DIP chip I've been having a difficult time tracking down...at least from Canadian suppliers.  And since I'm probably going to be spending some time moving these from breadboard to breadboard, it's a good excuse to find a better chip-puller than the twist-prone cheapie that I picked up from Princess Auto.  So I tacked a request for recommendation onto the email.

The reply was that their Alpha Chip-Puller is mostly using tools made in the 1930s.  For which, mad respect.  Plus a small side of jealousy.  Take care of the tools and the tools will take care of you -- that's one of my tenets, and not just in electronics.

I griped to Dennis about how, after decades of Kanban, TQM, ISO-9001, and every other flavour-of-the-month underfunded QA push, they still "don't make 'em like they used to."  That's something you shouldn't gripe about to a Recovering Manufacturing Engineer(TM).  At least not unless you want an earful about how ISO-9001 only guarantees that your processes are executed as documented.

But he's right.  A CNC machine capable of of 0.001% tolerances can't stop the cheap steel it just milled from warping or cracking in use.  Consistency is not quality...or at least is only a part of it.  In fairness, in some cases consistency is a Very Big Deal(TM).  (Remember Intel's division-error and the resulting freak-out?  Even the one-in-nine-billion odds were too much for everyone.)  But consistency is a hard, easily-measurable metric.  Thus its overweighted role as a surrogate for quality.

True quality, of course, is squishier, less easily shoe-horned into a database or aggregated into a colour-coded chart/graph.  Let's face it; no one picks a tool off the wall at the big-box hardware store or out of a mail-order box and thinks, "My great-grandchild will maybe use this to build __x__ one day."   So I very much doubt that, unless they were hand-made, the manufacturer of those antique tools gave much thought to their whereabouts in 2018.

That's not to say that no one cared about quality.  In the Great Depression, people were more apt to look on non-daily expenditures as "investments," especially tools that would better allow them to mend and "make do" vs. having to buy new.  Double that for the craftsperson putting food on the table.  Print advertisements and radio jingles, doubtless, headlined "quality"* as a major selling-point.

But tracking down product made decades ago and measuring its longevity?  Even scraping and comparing offerings on eBay is nothing any MBA could consider a "metric."  No, the value is solely in the eye of the beholder--specifically, the craftsperson who imagines the spirit of previous generations of craftspeople echoing in their work with the tool in question.

I suppose that some savvy marketer could pitch tools as "future heirlooms."  'S'matter'a'fact, I'm kind of surprised they already haven't.  (And if they already haven't, for the noodley love of the Flying Spaghetti Monster, shhhhhhhhhhh...)  Mind you, any such campaign will be waged by some giga-conglomerate offs-horing its manufacturing while writhing its last in the strangling grip of a Wall Street vampire squid.  But maybe--just maybe--its last gasp will blow on whatever embers remain of the crafts(wo)man ethic.

Melodramatic?  Eh, probably.  But even for someone whose tool-belt can be so very ephemeral--wherever you are, PC-Write, know that I still love you!--it does matter.  Particularly post-Christmas as I stare at a brass-rimmed steel thimble perched on my monitor-stand.  Mom doesn't expect to have the fine motor control necessary for hand-sewing ever again.  So I'm the heiress of a *whack* of embroidery floss and her thimble.  Which turns out to be her Mom's thimble.  It's clearly been stepped-on, and there's a patina of rust on the inside.  Alas, my bone-structure takes after my other, more petite, Grandmother.  But that's nothing a little padding and a skinny rare-earth magnet can't deal with.  And it will be dealt with, and shortly.  Enshrining tools on a shelf is the same as burying them.  I'd like a bit of Grandma to live on, even if only in my crazy projects.

- - - - -

* A sound captured by Mark Knopfler in his dangerously catchy throwback tune "Quality Shoe."  (You, Gentle Reader, have been warned.)

Thursday, December 7, 2017

The limits of affordances

Just because I'm mostly a back-end (read database and business logic) developer doesn't mean that I don't care about UI or UX.  Mom drilled the ethic of putting myself in another person's proverbial shoes into me pretty early-on.

For what I usually do, that plays out in well-organised data-sets, scads and scads of validation code, and fighting tooth-and-nail for the absolute rock-bottom minimum of data passing back and forth between client and server.  Mostly do-able...assuming you aren't double-teamed by Marketing and Legal.  (Pro Tip:  Know your bandwith/hosting costs cold, have your calculator handy, and put the onus squarely on those noseyparker byte-hoovering data-slobs to quantify the ROI.  Preferably in front of upper management.  Chances are, they can't and won't.  And they'll think twice before doing it again.  Alas, twice isn't always enough times.  Lather, rinse, repeat.)

While my world is largely ruled by, well, rules, front-end designers and developers wrestle with the container-of-fuzzy-spaghetti-from-the-back-of-the-fridge otherwise known as the modern human psyche.  More power to them.  I've wrestled heisenbugs a-plenty (losing more than a few rounds, mind you), and still would rather re-fight every single one of those battles than allow a random user to type a DateTime value as plain text.  Seriously. 

Thus I'm a starry-eyed fan of design folks like Don Norman, Mike Monteiro, Erica Hall, and Luke Wroblewski.  (Viktor Papanek's magnum opus has been on my wish-list for years, but it's been out of print for so long.  Some day...)  Also behavioural psychologists like Daniel Ariely and Daniel Kahneman.  Likewise Clay Shirky when it comes to pointing out the differences in how humans act individually vs. in groups (absolutely critical in this connected age).

The single most important take-away from all this reading is:  Thou shalt make it easy for thy user to do The Right Thing(TM).  (In an ideal world, thou shalt make it statistically impossible for thy user to do the wrong thing, but -- Mike Monteiro excepted -- nobody in this crowd is rocking anything like Charlton Heston's beard from The Ten Commandments, so...).

And yet, for all that reading--in most cases multiple readings because it's all crazy-good--I find its limits no farther away than the local co-op grocery store.

Several years ago, I had both the keep-you-on-your-toes challenge and the genuine pleasure (because they shouldn't be mutually-exclusive) of holding down the account for a household-name client.  The kind of client that was flush enough to send holiday gifts to their vendors.  As a matter of corporate policy, I donated gifts like the cheese-knives and cutting-board to the office kitchen.  (Being the Patron Sinner of the office's "liquid potlucks," what else would I do with that kind of thing, I ask you.)

The two shopping bags were another story.  Lovely things, those.  Two sets of handles, for shoulder or hand.  Constructed from the recycled (PET) plastic equivalent of Grade-A Wakandan vibranium, IMLTHO.  (Or adamantium -- take your pick, Marvel fans.)  Crossed with a Tardis to boot.  They're awesome.  Especially when compared to the branded "resusable" bags hawked by the local grocery stores.  Two of which (in our household, at least) have been known to blow their seams in less than a month...one on the very next use.

So I, being a back-end developer aspiring to minimise my UI/UX sins, attempt to do the right thing by making it easy for my user (a.k.a. the cashier) to do the right thing.  Which means the double-decker short cart rather than the monolithic monstrosities with the turning-radius of a battleship.  Heavy stuff on the bottom (because Physics, nat'cherly) and little and/or smooshable stuff on top.

At the checkout line, the first thing dropped onto the conveyor-belt is the bags.  With the awesomer ones unmistakably on top of the not-so-awesome ones.  Then the groceries, carefully graded (front to back on the belt) from heaviest to lightest.  The affordance couldn't be plainer:  Put the stuff closest to you in these-here bags up-top.

Yet, well over 90% of the time (in my observations), the cashier dumps the awesome bags off to the side and loads the flour, the shortening, the canned goods, etc. into the el-cheapo bags and resorts to the industrial-strength bags only when the others have run out.

Why?  Because when it's the difference between the known and the unknown, afforances don't mean jack.  As far as the average customer and cashier are concerned, all branded "reusable" (in my case, the quotation-marks are there for good reason) bags are churned out by the same no-name offshore factory.  (And, for all I know, they are.  Booyah, race-to-the-bottom globalism, yo.)  The default option -- i.e. the ultimate affordance -- is the known quantity.  It's the same reason that the "Save" button still looks like a 3.5" floppy disk and not a USB flash drive or an SD card.  The exact same reason.

Which, while it's frustrating as all get-out, is deeply humbling.  It's why I consider darned near every UI/UX developer on the planet grossly underpaid.  As much as non-programmers puzzle (perhaps shudder) at the inner workings of computers, I embrace them as fundamentally logical -- ultimately knowable.  In contrast, stepping into the world of human-computer interaction means trading the near-certainties of Boolean logic for the fuzzier approximations of statistical norms...clouded by the occasional chaos of lizard-brained mob-thought.  [shudder]

Alas, my patron-client must have custom-ordered the awesome bags, because they have no manufacturer's tag.  (They're a dark olive green, slightly beveled bottoms, two sets of handles -- can ya do a girl a solid here, Intertubes???  Halp.) Or I'd cheerfully solve my weekly problem by ordering a few more.  ("Thou shalt make it impossible for thy user to do the wrong thing," remember???)

The other, cheaper, solution, of course, would be to just tell the cashier to use the weirdo bags.  Except that cashiers are basically just trying to optimise for ringing up as many sales as possible without getting yelled at.  At the risk of sounding ancient, I'm old enough to remember when ringing up sales (and making small-talk about the weather) was all cashiers had to do.  Another person not only bagged your groceries, but also loaded them into numbered tubs so that a third person could help load them into your car (if you so chose).  Contrast that with the utter faceless dickishness of Home Depot, et. al., and their self-checkouts, and you'll understand why I refuse to participate in any further dehumanisation.

Ultimately, computer programming, like any discipline, has to push the boundaries to stay relevant.  In the 1990s, we had the waggish adage of "Intel giveth and Microsoft taketh away."  And while I sometimes wonder whether an on-demand "serverless" world of ginormous anything-goes NoSQL databases and spaghetti-nets of asynchronous-microservices-du-jour will trash back-end coding as a legit. discipline, I have no such worries about UI/UX developers.  Those boundaries, however mystifying to a left-brainer like myself, are vast, but relatively immutable.  But certainly no less challenging for all that. 

Tuesday, October 10, 2017

Don't egg me on

Our current neighbourhood is a little more communal than the previous one.  Maybe it's an Acadian thing.  But the borrowing and sharing (especially when the gardens are coming in) has an old-time small-town feel. Thus, I was seriously-and-for-realz not at all surprised to see a text from the across-the-back-lawn neighbour asking (out of the blue) whether Dennis would want to borrow his spare chicken-coop in lieu of Dennis having to scramble one together before the snow flies.

Because that's just what good neighbours do, right?

Dennis will probably build to his own design anyway, but it's good to know that it's there in case the weather makes the tarp-covered Quanset-hut run inadequate for the three remaining birds.  Because of the need for a heated waterer, we'll need to run electricity out to the coop.  Which opens up other possibilities for monitoring things like temperature, humidity, and overall air quality, etc.

The app. I have in mind is Bluetooth-enabled, allowing an Android app. to check in on the current status of those numbers and setting off an alarm if the numbers get out of whack.  And there's less than no sense in keeping that design/code to myself if someone else can get the benefit of it for the cost of a few electronics components.  So I texted our neighbour to see whether they have any Android devices in the house.

Because that's just what good neighbours do, right?

(Well, not one hundred percent:  A second set of feathered guinea-pigs for field-testing benefits me, too.  Let's not get too crazy with the altruism angle here...) 

Nope, texts the neighbour:  They're strictly an Apple household.  (Fooey.)  But then he asks how they would keep the stored data.

Hoo boy:  That's a whole 'nuther basket of eggs.  Because now we're talking back-end:  Databases, a web application, all that jazz.  Granted, that's basically my core competency as a developer.  But it's also scope-creep (on radioactive steroids!) at this proof-of-concept juncture. 

And yet.  It's also useful to know that someone's already thinking long-term.  Assuming that I ever wanted to jump through all the UL-type certification hoops to sell this kind of contraption to backyard chicken-herders.  Mind you, two data-points do not define a market, but the fact that a single text dragged the scope so far outside the pale tells me that I wasn't thinking "holistically" enough.  Even for this six-chicken neighbourhood.

But, then, that's just what good neighbours do, right?

Monday, January 18, 2016

Trading the creeper for the stalker

I'm on the "admin." email list for a volunteer group that organises monthly tech. talks.  I'm not the volunteer who orders the pizza, so normally I don't fuss too much over how many registrations have landed.  But I recruited this month's speaker, and wanted to give him a rough head-count (especially since it was a higher than usual, which is always good to report).

One downside to flipping through all those EventBrite notifications, however, was the huuuuuuge and depressing preponderance of "anonymous" email accounts used to register for the talk.  Clearly, someone--well, pretty much everyone in our almost-big-enough-to-be-statistically-valid sample--has had their workaday email address trammeled by someone before.  And (more to the point) that's not news or even remarkable.  It's merely evolution in action, really.  In the sense that arms races can be considered "evolutionary," anyway.

Until now, I'd failed to see the extra irony in that response.  GMail and Hotmail (and the odd Yahoo) accounts are, of course, a prophylactic against having one's attention-stream repeatedly crashed by spammers and scammers.  Not unlike how single women will wear fake wedding/engagement rings as a prophylactic against being creeped-on.  (Needless to say, its deterrent effect is never 100%, but on balance it's worth the clunky el-cheapo jewelry.  Pro tip, ladies:  A layer of clear nail polish over the metal of a dime-store ring will extend its lifespan by months.  Trust me on this.)

So, in an attempt to preserve the online equivalent of personal space, people choose to trade their privacy and a certain amount of attention-span.  Because of course Google, Microsoft, and Yahoo are monetising both.  Behind the scenes, naturally.  Which apparently makes all the difference.  It's difference between the creeper at the pub who won't take "go away" for an answer and the stalker who rifles through your garbage and eavesdrops at your window.  But the latter is at least discreet about it--incredibly polite, in fact--and (best of all) you're not its only target.  So it's not even personal, which almost makes it not-creepy, hey?

Please understand that I'm actually not slagging Google or Microsoft or Yahoo here.  Blocking all the spam and worse spawned in the underbelly of the internet is itself an arms-race.  Just handling the sheer amount of illicit email traffic chews up resources that your average I/T department can't afford.  Bayesian filters require constant "training" and updates to the code to keep up with the latest scams, viruses, and desperately incompetent marketing hacks.  Only huge corporations have the resources to A.) Scale up to the challenges, and B.) Pay for it all with targeted advertising revenue.  "Targeted," naturally, implies sniffing email for keywords and (more importantly) patterns and embedding compatible ads in the user experience.

Within the confines of the free market, we're left with an imperfect system.  In essence, we're allowing the stalkers to protect us from (most of) the creepers.  To imagine any other outcome is reading History backward without remembering that it is lived forward.  And also to forget that people people--perhaps as much as the corporate people of which Mitt Romney famously spoke--have zero conscience when it comes to externalising costs for things you can't actually touch.  Maybe even negative conscience, given some of the rationalisations I've heard.  Internet security, naturally, ranks high on that list.  Which is precisely what criminals and griefers are banking on.  And, as if we could forget, Marketing's sins are both legion and legendary--regardless of medium.

If it weren't for those inconvenient truths, I'd feel less futile in wishing for a do-over on email at this late date.  Namely, a do-over that doesn't require the ghetto-isation of personal email.  Because a tool that's so critical to modern life (on the clock and off) doesn't fit well into any of those flows on or off the clock.  To say that I'm fussy about my tools (in software development as well as elsewhere) is a massive understatement.  You take care of your tools, and they'll take care of you.  I believe that.

Predictions of email's demise are over a decade old.  (Just like predictions of the demise of many things.  Particularly when made by people too busy penning tech. articles to read any Geoffrey Moore.)  But let's imagine that the street-corner nut-job with the doomsday sign is correct and that The End is, in fact, Near.  That would be our last, best hope for owning up to how much #FAIL is baked into the current system and keeping it out of the Next Big Next Big Thing, yes?  Effectively, means that it's time to (finally!) put a price-the on "free" email that reflects all its costs:  The internalised costs of our own context-switching as well as externalised costs of subsidising crime, giving viruses a vector for spreading, etc.

When the internet first went mainstream, we were treated to starry-eyed predictions of democratisation and broadened horizons and geysers of previously untapped human potential.  To some extent that's happened...along with other things less laudable or savoury.  But there's no excuse for not learning the lessons of the past two decades, and far less excuse for perpetuating its sins.  I'm at an age where I don't have soaring hopes for the future--after that whole flying cars and Mars vacations thing didn't pan out and all.  But I'm all-in for "not-creepy internet"  Can we get it right next time?

Tuesday, September 22, 2015

Shaving the zebra

(Not the same thing as yak-shaving--not at all.)

Because I have to work in two different worlds (namely, Linux and occasionally Windows, although not yet Apple's walled garden), I've saved myself a lot of cranium-brusing by investing in a KVM switch.  This device allows you to toggle between multiple computers using the same monitor, keyboard, and mouse.

I had originally pulled apart my office for painting, then had to re-connect my main programming PC (Linux) to do some troubleshooting.  The monitor remained blank.  Due to the urgency, I bypassed the KVM switch for the duration, figuring I'd debug later.  "Later" came tonight, when the monitor was still unresponsive.  After verifying the spaghetti of cabling (and switching to another port, and testing another monitor), I hollered for Dennis to sanity-check for me.  He did some poking and prodding, but couldn't find anything amiss.

So I dissembled the KVM wiring and again hooked the peripherals directly into the PC.  Again, everything but the monitor seemed to come online.   So back under the desk I dove, and discovered what both of us had missed--namely, that this particular model has not one, but two DVI (i.e. monitor ports).  We'd been plugging things into the top one (supposedly interfaced with the motherboard, but not really) rather than bottom the one attached to a big, honkin' (like, early 1990s size) video card.

There's a folksy adage that goes, "When you find a dead man with hoof marks across him, look for a horse before you go looking for a zebra."  I'd like to report that I learned this at my Grandma's knee.  But the fact is that I picked it up from the only episode of Doogie Howser I can ever remember watching.   Anyway, the logic is merely a variation on Occam's Razor.  Problem is, we tend to scan for things top to bottom, and, well, why would you continue to look for something you've already found?

The experience illustrates why, despite it being more or less the foundational to scientific reasoning, we can still cut ourselves on Occam's Razor through laziness or over-confidence.  Because if the afore-mentioned dead guy is found on the plains in Africa, the familiar assumptions become useless--even counter-productive. 

I suppose that's the point of the celebrated "Five Whys" of the Toyota Production System:  It forces debugging beyond the immediate and superficial. 

As it turns out, the KVM switch is still hosed.  Naturally, I only learned this only after hooking up everything through it again.  #mumblegrumblemumblegrumble  But at least there was more certainty in the debugging this time around (verifying with a laptop whose video output the monitor likewise ignored).  I'll ping Matt at BJW Electronics tomorrow to see whether repairs are even an option in this case.  I fervently hope so, and not just because I dislike adding to the landfill:  KVM switches are bloody expensive.

Monday, August 3, 2015

The shelf life of books

Part of the problem with graduating as a History/English double-major is that you've had years to get used to stuff in print staying passably fresh.  Like the sour cream in the 'fridge that should be primordial soup by now, but still passes the sniff test.  Written history and literature may be reinterpreted, and every great once in a while new extant material is discovered.  But the words really don't change.

Yet, although my college education has served me reasonably well in the past quarter-century, the above is one mental bad habit I haven't been able to ditch.  But this past week brought it home forcefully that I was, to a certain extent, spoiled for four years.

For reasons I can't now recall, the leftover (read: oddball) bookshelf that ended up in our bedroom was mostly stocked with programming-related books.  But then I needed to move them to paint the baseboard and walls, which forced me to take a hard look at a collection that would have been better triaged before the big move in 2011.

Some things are timeless--at least as timeless as they can be in I/T.  Give up my copies of Kernigan and Ritchie's C Primer or Bjarne Stroustrup's The C++ Programming Language?  Not on your tin-type.  Alas, the years have not been so kind to other tomes, covering (among other things):
  • Visual Basic 6
  • C# 2010
  • Adobe Flex 4
  • Java I/O (circa 2000)
  • Java Servlets (circa J2EE 1.1?)
  • Microsoft Visual InterDev 6
  • T-SQL querying for SQL Server 2005
  • Java2 Certification prep.
  • ASP.NET MVC 2 
  • Two Java books I remember buying when I started my I/T career (1999)
In fairness, Dennis still does enough work in classic ASP that my 2001-vintage reference is still relevant to his work.  But otherwise, owch.  What in the noodley name of The Flying Spaghetti Monster was I even thinking when I packed some of these?

Maybe, in a perfect world, Sally Annes would happily collect these books to send to programmers behind the Iron Curtain who were still working on Windows 95.  Scratch that--a perfect world would not include the Soviet Union.  Okay, maybe those programmers are really Portlandia hipsters coding IE5/Netscape apps. ironically.  Or something.

But the harsh reality is that these language versions will--unlike even bad fiction--return to vogue, except possibly for 2038 remediation work, and I'm not about to guard them for the next 20 years to save the world from Unixmageddon.  (Sorry, civilisation.)

Now I just have to bring myself to dispose of them responsibly.  Being the kind of bibliophile who's still outraged over the Library of Alexandria, I'm not sure I can consign them to the wood stove this winter.  (Besides, that VB6 book is like, five inches thick.)  Pity we're not into vermicomposting--we'd be set for bedding for quite some time.  Not to mention that we'd have the nerdiest worms in the province.

Monday, July 6, 2015

The irony of "Internet time"

Normally, moving code and data from one server to another is something I try to do in the middle of the weekend (e.g. late Saturday night).  Alas, even the best-calculated schedules sometimes are thrown awry.  In this past weekend's move--a.k.a. "migration"--I was actually ahead of the usual curve of permissions not being correctly set up (which is normally the biggest show-stopper).  But then my connection to the server would drop intermittently.

I've chosen the new hosting company for this application (and others yet to come) largely based on the fact that customer service is a matter of sending an email or picking up the phone.  Not punting a form submission into a queue picked up halfway around the globe.

True to form, debugging has been ongoing since Saturday evening, and the preliminary diagnosis is a DNS issue.

Now, if you're not in I/T, the only thing you really need to know is that DNS (or the Domain Name System) basically functions as the phone book of the internet.   Networked servers, just like phones, are known by a number.  But we humans know the people (and companies) associated with those phones as names.  So, just as you would search WhitePages.ca by name (and city) to find a number, your web browser queries a DNS server to translate the human-readable "www.duckduckgo.com" to the network address "107.21.1.61."

That lookup and translation happen so immediately and (usually) so seamlessly that it's easy to take for granted.  (Unless, of course, you're a Rogers customer.)  Until it doesn't work and a website you know is legit. 404s.

Unlike many other networking issues, DNS problems can take a long time to completely resolve.  The reason is that when a web URL moves from one server (which is a number, remember!) to another, it can drop off the internet's radar.  That's because not all DNS servers update at the same rate--some of them can take up to 72 hours.   It's the price we pay for the decentralisation (and thus the robustness) of the internet.

But boy howdy, does a potential 3-day lag ever slow down debugging.  Not to mention that having a key feature of the modern internet move so glacially feels more than a bit ironic when everything else has been speeding up over the past 20+ years.   But it's not like irony and the internet are strangers, right?

Monday, May 11, 2015

"Brungee Cord"

Just a random thought in the wake of tonight's annual meeting of the Shediac Chamber of Commerce.  (And, truth be told, after dipping yet again into The Lord of the Rings over the weekend.)

Seeing as I still barely know anyone, my preferred tactic--barring random collisions--is to scan the room for someone who looks as out of place as I feel and try to strike up a conversation with her/him/them.  Of course, that's not how one expects to meet the proverbial movers and shakers.  (Because those folks are already part of a crowd or systematically working the room.)  But it does lead into interesting territory.

Alas, it involves having to tell a bit of my story, and with that the (almost) inevitable cringe at people being surprised that, with all of Canada to choose from, Dennis & I staked our tent in New Brunswick.

I say "almost" because there's one demographic that never asks me that question.  And it's a healthier demographic than one might expect.  It's comprised of the folks who grew up in N.B. (or the Maritimes), left for "the west" (which, to the uninitiated, almost always seems to translate to the Alberta oilfields, British Columbia, or possibly Toronto), but then returned to raise their children.  It's like New Brunswick attaches its own special bungee cord--or "brungee cord," if you will--to many of its children.

If there's any surprise to be had, I would think it would be the brungees rather than we arrivistes who should trigger any sort of head-scratching.  After all, for all our neighbours know, we threw darts at a map...although a quick peep (followed by a morbid laugh) at the Toronto and Vancouver housing markets should tell anyone curious everything s/he needs to know. 

Yet, while "How Ya Gonna Keep 'em Down on the Farm after They've Seen BC?" doesn't quite have the same ring as the original version, the basic idea isn't all so threadbare, even after nearly a century.

Some Hobbits (e.g. Sam, Merry, and Pippin) find that their adventures among "The Big People" (not to mention Elves and Dwarves and Orcs and more far-fetched creatures besides) ultimately make them see The Shire again with fully-opened eyes.  Others--like Dennis and your faithful blogger--find that sometimes that the path never circles back.  And, like Bilbo and Frodo, we are pleasantly amazed to find more welcome than we have any right to expect among people with different customs and history and even language(s).

Either way, New Brunswickers, could you pretty-please stop being surprised?  Because in doing so, you're underrating your home--and by extension yourselves.  Yeah, yeah, yeah--I totally get the whole self-deprecation schtick.  I mean, I come from a long, loooooong line of Minnesotans and Iowans, fer cryin' in yer Molson's.  Self-deprecation was hard-coded into my DNA several generations before I was born:  If you cut me, I'll bleed humility (along with coffee, tater-tot hot-dish, and Jell-O salad).  Nonetheless, could'ya do both the immigrants and the "brungees" a solid and validate our choice of postal code, m'kay?  Merci d'avance.

Thursday, April 2, 2015

Rational superstition

A couple days ago, I was ready to upload spanking new code to its web server, to find that the FTP server wasn't accepting my password.  Just in case I was imagining things, I ran through every single password this hosting account has had during its history.  No joy.

I won't mention the name of the web hosting provider, but let's just say that they're middle of the road.  By which I mean not the kind of outfit that will ride out Global Thermonuclear Armageddon with five nines, but not bottom-feeders catering to spammers either.

So I logged into my account and went to the control panel interface to reset the FTP password.  Or tried to.  Instead of being automatically passed through from the main account page, I was again challenged for a password, and again every possible option failed.  Now I haven't changed the password, so the "Who's been eating my porridge" alarm bells went off.  Mercifully, I still had sufficient access to my account to be able to submit a support ticket.

This is where my experience as the resident SysAdmin comes in handy--not so much that I have all the tools I need to debug the problem, but that I can speak the dialect of those who do.  Which includes having a good idea of what they might need from me, and trying to supply it before they even ask.  The preliminary diagnosis was a blacklisted IP address.  Because I'm in Canada talking to a U.S. provider, I guess that wouldn't entirely surprise me.  (Nothing crosses the border easily these days, don'cha'know?)

But upon further review, my IP address was found to be above suspicion, and seeing no other flags, the support tech simply rebooted the firewall and the problem disappeared as quickly as it had appeared.  Rather like one reboots a PC/laptop to "fix" an intermittent, unexplainable problem.  Or we reboot the router when we know darned well that Rogers (our ISP) needs to replace the gerbil powering their DNS servers.  Or how I deal with a repeatedly crashing text app. on my Android phone by restarting it.  Or back up email before installing system updates.

Bottom line is, even if were able to run any gremlin to ground, we still might not be able to chivvy it out of its lair to finish it off.  At least not without a lot of collateral damage.  Simpler just to reboot, as though the process is some ritualised purification ceremony that exorcises the demons.

Sigh.  As much as I'd like to believe that we I/T folks are ruthlessly logical and relentless in pursuit of root causes, we don't often live up to the standard.  Granted, we're nowhere near as superstitious as some breeds--notably actors--but I can rationalise it as efficient laziness, yes?

Wednesday, March 18, 2015

Vicious cycles, Part II

Back in 2009, when "Views from the Bridge" were but a wee lass, I poked fun at a weakness I share in common (solidarity?) with other crafters--namely, the infamous Designated Tote Bag Syndrome(TM).  As it turns out, I was being too narrow in my satire. Because, apparently, it's not just a crafter thing.

Alas, the Moncton area's options for dealers in off-the-shelf electronic components is pretty thin right now.  Also, the loonie-greenback exchange rate being what it is(n't), it's becoming more expensive to mail order certain kinds of stuff.  And, as always, the wanna-be mad inventor can also expect to pay through the nose on shipping.  That confluence of costs makes bulk-purchasing more attractive.  Even for a tight-wad such as your faithful blogger. 

So, pitting my frugal Upper Midwestern upbringing against itself (i.e. saving money by dint of spending money), I ended up with eight programmable micro-controllers (a.k.a. "Trinkets"), because at that quantity they were under 10 loonies a pop (ignoring tax and shipping, as our consumer-geared brains are wont to do).   Those micro-controllers, however, aren't much use to me without a mechanism to plug them into something--in my case, a breadboard

But the good folks at CE3 pointed me to BJW Electronics, who were happy to solder headers onto them.  (For the record, I'm not deep enough into this hobby to justify a soldering iron plus accessories.  That, and my Mom still has the toolbox I tried soldering for her in middle school Industrial Arts, and it's frankly embarrassing--like Nidavellir collectively sneezed on cheap sheet metal.  But that's just how Moms roll, so...#whaddyadoamirite?)

That all--again minus HST and whatever shipping costs are associated with me picking them up myself--added about five loons a pop.  But it's still better than the $30-40 CDN you'd pay for a full-blown Arduino, yes?

I already have two--okay, probably three--projects earmarked specifically for the Trinkets, and I assured myself that the other six or five will come in handy.  Sometime.

But then I thought of Halloween.   

And how I can certainly figure out how to make red, white, and yellow LEDs imitate candles in lieu of waiting for the Grande Digue winds to (inevitably) blow out the usual tea lights inside the Jack-o-lanterns.   

And there's no reason (apart, of course, from rain) why the LEDs couldn't be triggered by a passive infrared sensor.   

And as long as I have to pay postage for a PIR sensor anyway, I might as well get a handful.   

And at that point, it might make sense to have another PIR sensor trigger a servo-motor to loose a gravity-propelled "ghost" on a guy-wire strung between the pine trees and our front door.

Aaaaaaannnddd....

My Gentle Reader sees where this is heading, right?

The problem is, now I definitely don't have enough Trinkets to make this happen.  And the irony of it all is that we average two sets of trick-or-treaters per annum. 

But that's just the problem.  With some people, the means infers the motive...and then the motive infers the means...which then again infers the motive...and so on.

Culturally, I suppose, it's a good problem to have.  Except for when the credit card bill arrives.

Monday, March 9, 2015

Another cost of commoditisation

Twenty years ago, when internet usage started up steep slope of its hockey-stick growth in adoption rates, web programming was much "closer to the metal" than it is today.  I'm certainly not advocating for a return to those days.  (For one thing, FTP via command-line is tedious unless you're a preternaturally fast and accurate typist--and I'm certainly not.)

Nor do I think that it's a loss to my trade that content management systems such as WordPress, Joomla or Drupal have taken a lot of grunt-work out of setting up a website.  They've certainly given people less of an excuse for not updating their website content, too, which is all to the good.  I'd muuuuch rather be working on business logic or databases than jerking pixels around on a screen.  More power to them who can do it without their brains leaking out their ears.

Plus, I've hand-coded a blog in HTML before.  Booooooorrring....  So I'm glad that Blogspot--and to a lesser degree the messier Tumblr--have made formatting a highlight-and-click operation.

It's great that the tools have become slick enough that someone with little to no programming/database knowledge could click an icon, step through a wizard, and have their own customised website.  And, if they're willing to put up with a certain amount of jankiness, they can hook it into a shopping cart and payment processing for an online store.  Sweet.

But the increasing sophistication of the tools and platforms for putting words and images on the internet are making my life difficult in one respect.  Namely, that when I do need to open up the "black box" to (figuratively) poke and prod, I'm seeing less and less ability to do that.  At least with shared hosting, which is the cheapest (and thus most commoditised) way you can rent web server space from someone. 

But as such tools/have lost their rough edges and hidden the complexities and underpinnings of the system, the server "landlords" have--in my experience--been removing access to those underpinnings.  Sometimes in ways that make absolutely zero (if not, in fact, negative) sense.  For instance, I'm finding it difficult to fine-tune access to my databases because the tools are incomplete...when they're not completely unavailable.  Without being too technical, that's a Big Deal(TM) for me because it impacts overall web application security.  When you make it difficult for me to protect my clients' data to the best of my ability, we have a problem.

In other words, the lid of the "black box" has been nailed down.

Worse, trying to make the support techs understand that is wasting more of my time than I can afford to spend lately.  Which tells me that I'm dealing with people who are more used to fiddling with the dashboard than going under the hood.  That's disconcerting. 

I'm all for making the toolset more ergonomic, even (maybe especially) in the cognitive sense.  But that doesn't require taking away powerful, if somewhat more arcane tools.  Even in the name of saving screen space.  In fact, hiding the latter toolset behind an "Ugly Tools" header would pretty much encourage anyone who doesn't, say, know how to write a stored procedure to back out after the first curious peek.

I realise that it can often be negligible, but there is a difference between mainstreaming technology and dumbing it down.  The current state of things (at least as I've experienced them in the last year or so) has definitely crossed that line. 

Then again, I live in a world where people are willing to pay top dollar for a slick interface to a walled garden--or should I say Apple orchard.   Which is precisely the problem.  I won't buy an iPhone on principle.  Yet there are any number of alternatives that don't think I'm too incompetent/precious to, say, add more memory, change the battery, side-load apps., etc.

But when commoditisation of the web hosting market not only limits my choice, but interferes with my due diligence as a web developer?  That just makes me crabby.  Look, I'm glad that we've can scale solutions to problems mostly likely to befall the fat head (not a pejorative term) of the long tail.  But some of us are out there tackling problems for the niches who may someday become mainstream.  Don't make our work any more challenging, alright? #grumble

Sunday, March 1, 2015

Silly Sunday, 2015.03.01: The Programmer "Anxiety Closet"

Fans of the 1980s-ish comic-strip Bloom County will instantly recognise the term "Anxiety Closet."  It was the repository for a lot of pop-culture satire masquerading as neuroses of the overly-sensitive character Binkley.  One Sunday strip gave us a bonus peek into the Anxiety Closets of other characters in the strip--the most memorable being budding hacker/genius Oliver Wendell Jones being chased by a giant slide-rule.

Normally, I keep my nightmares to myself.  Mind you, some nightmares are pretty much public domain.  The "showing up at school/work naked (or trying very hard to get that way)" one?  Check.  The "it's the end of the semester and you realise you've been blowing off a class the whole time" one?  Oh, heck yeah--my subconscious mind has even upped the ante to multiple classes.  (Stupid brain!)

But what if certain subsets of the population also have nightmares in common?  In my case, I mean geeks--specifically programmers.  (I've had SCA-themed dreams, but to date, the only one that turned ugly was that nightmare about the only fabric store in town morphing into the potpourri-reeking fake-flowers-and-wicker-baskets frou-frou kind of craft store.  [shudder]  And I don't even want to think about the nightmares that ComicCon-/GenCon folks could have...)

Anyhoo.

The backstory is that in a couple weeks I'm due to give a presentation on Arduino.  The slides are done, so it's not like I'm behind.  Sure,  I don't have more than a few Arduino projects under my belt at this point.  Yet I personally know one person more qualified than myself to speak on the subject, and he seems to have zero interest in hanging out with Team Coder.  #lesigh 

Basically, it's just like that episode of M*A*S*H where Radar finds an abandoned, injured horse, and Hawkeye and B.J. are pressed into veterinarian service.  Except that first they have to catch the "patient."  
Hawkeye:  "You know anything about horses?"
B.J.:  "I rode a pony once."
Hawkeye:  "You're in charge."  
Moral of the story:  The bar for "expertise" can be set to a very relative--i.e. low--height sometimes.  My apologies for any destroyed illusions there.

So, yeah, I feel kinda like a poser...except I'm probably still in a position to save my fellow geeks a whole bunch of time reading/Googling--not to mention possibly some bling on hardware besides.  Which might explain why last evening's nightmare was about not being able to find the presentation slides on my laptop, rather than about freezing up under the gaze of my peers.

But while curating my resistor collection this morning, I had time to reflect on said nightmare.  Which is when I had a disconcerting epiphany.   It wasn't so much that I was worried about being worried about the presentation.  It was the awful suspicion that this might become an archetype for my dreaming mind.  And, worse, what if this is merely one species in the genus of programmer nightmares?  There are dark, dark regions in the left-brain.  Yet, like any self-respecting D&D dungeon, they somehow support a thriving ecosystem of nastiness:
  • Project requirements include IE6/7 backwards-compatibility.
  • Source control hiccup leaves code in partially merged state, but you don't catch on until you've made a whole pile of changes to your local copy.  #beentheredonethat
  • Zero downloads from the App. Store.
  • You think you're working in the test database, but it's actually the live copy.  #gotthatbadgetoo #twice
  • The "ninja" co-worker your boss hired (over your objections) isn't sanitising inputs...but is rewriting core APIs that s/he doesn't understand...which is clearly most of them.
  • The historical data that you didn't realise was critical when you archived it to tape won't restore.
  • 1:1 assumptions during design magically turn into n:n expectations during beta. #crazytalkinorite
  • User(s) demanding to know why there are "obvious" (to them) bugs in the app. that they agreed to review before sign-off...after they've signed off.
  • Unscheduled system maintenance and/or power outage during a code roll-out weekend.
  •  Apple/Microsoft/Google rolls out an uber-slick near-clone of your world-changing app. the week before you're supposed to close your next round of funding.
So there's that kind of thing lurking about the door of this programmer's Anxiety Closet.  It's probably best not to peer further into the darkness, amirite?

Monday, February 9, 2015

Uncharitable ranting

Warning:  #firstworld grumbling ahead.

If any government--Canadian or U.S., provincial or state--truly wanted to see solopreneurs morph into the "job creators" worshiped by politicians, they'd forbid all non-registered (cough!) "charities" (cough!) from cold-calling anyone.  Let 'em set up an IndieGoGo campaign and hustle on social media if they don't even care enough about the cause to get out of the office and network.  Bonus points for fining anyone who donates to these "charities" by dinging them the same amount on their taxes.

Harsh?  Maybe.  (Of course, if I had my druthers, the government would also run sting operations to out anyone responding (positively) to spam.  It's the 21st century equivalent of putting miscreants in the stocks out in the public square.  A little humiliation would go a long way, particularly for the species of prat who expects the internet to deliver a Russian bride and a matching case of Cialis.  The market would eventually dry up and spammers would have to get real jobs.  Or so we can hope.)

I'm not going to mention any names of this morning's pitch.  I will say that my reaction--prefaced by something unprintable--was "...they have that scam going in Canada, too?!?!"  (And, yes, I did use the CRA's Registered Charities search; these folks are, naturally, nowhere in evidence.)

When you knock me out of The Zone--in which I actually move ahead on work instead of just keep up with the administrivia, I'm going to be owly.  When you give me cause to reflect that some scams can have a lifespan of 200+ years, it doesn't help.  But when, for one galling moment, you make me share Ayn Rand's contempt for charities, it's almost enough to hulk out over.  And then it takes me even longer to settle back into The Zone.

But it's not just my personal objections I'm here to blog about.  Cold-calling (or blasting out emails by the thousand at a time) for donations to a sketchy charity does not add value.  At best, it merely shuffles money straight between bank accounts.  At worst, it diverts potential funding from organisations that actually do provide value by serving the under-served, and/or funding research a private sector is too shareholder-centric venal to do.

I mean, not only do such professional fund-raisers thoroughly suck at charity, their business model itself is blatently lame and unimaginative--and, I posit to my Gentle Reader, not at all the point of capitalism and its vaunted processes of creative destruction.  Let's break down the model, shall we?
  1. Pick a tug-at-the-heartstrings cause (e.g. The Sick Baby Unicorn Foundation).
  2. Pack a call centre with min. wage employees to read from scripts.  (Bonus points for setting up where the law allows you to jank their pay around with "incentives.")
  3. Skim off 95+% of the proceeds for "administrative" and "fundraising" expenses
  4. Profit!
In short:  Nothing new has been created, no processes have been made more efficient (or less noxious), no ideas have been cross-pollinated, no significant skills have been acquired by employees, and everyone immediately involved in the transaction just wants it to end as soon as possible.  Capitalism #FAIL.

I mean, seriously, the Harper Government is perfectly happy to use the CRA as its goons.  Why is it wasting time on environmental groups when the threat to the tar sands is thousands of miles off an outside its control anyway?  Geeze, do tomorrow's job-creators a solid and get these time-wasting grifters off our backs.  The only thing they're "disrupting" is my concentration--and, by definition, my productivity. 

Monday, February 2, 2015

Say Whaaaaaat?!?!?! (a rant)

Knowing that my latest nerdery is Marvel's "The Avengers" universe, Dennis humoured me by renting Iron Man 2 when he made a run for storm chips tonight.  I'm old enough to remember when movie ratings came in three flavours (G, PG, and R)...except that at that time I wasn't old enough to know that there was a fourth rating, if you know what I mean.

Yes, I realise that it's a good thing that PG-13/NC-17 movies itemise their unwholesomeness--e.g. violence, nudity--although I sometimes don't quite grok what's so "adult" about "adult situations" and "adult language."  After all, any profanity and sexuality worth bothering about require both timing and savoir-faire.  Neither are magically bestowed upon us on our 18th birthday.  Nor upon Hollywood, however sizeable the budget.

That being said...precisely since when does "Intense Sci-Fi"make a movie (or any other fiction, for that matter) unsuitable for a pre-teen audience?  And what in the smoky name of Grethor's Gates, constitutes "intense" science fiction anyway?  This nonsense, btw, lands within a few days of my receiving a two Heinlein novels as a gift.  Grrrrrrr....

NOW I'm brassed-off.

Bad enough that the anti-science goons are muzzling research here in Canada.  And putting Congress-critters who don't (and, far worse, refuse to) know the difference between photovoltaics and photosynthesis in positions of influence in Washington.

Sure, the petro-barons (among others) and professional God-bothers and any number of other snake-oil peddlers have plenty to fear from a scientifically-literate public.  (Even a public mathematically-literate enough for Statistics 101 and the concept of regression to the mean should scare The Powers That Be silly, for that matter.)

But...warning labels for science fiction?  Seriously?!?!

Though, in sobriety, I probably shouldn't be so surprised.  The American Library Association's list of regularly banned and challenged books (and the objections to the same) is a good demonstration of how intellectual wussification is clearly not being bred out of our species.  The usual suspects--sex, blasphemy (real or imagined), sex, vastly outdated gender/racial portrayals, sex, drug use, sex, profanity, sex, etc., and sex--are all represented.  (Bonus points for being burned by the Nazis for having a socialist message, btw.  #slowclap)  My Gentle Reader will of course note several of the sci-fi heavyweights on that list.

I suppose that if there's any proverbial silver lining, it's that slapping a warning--particularly one that says, "Run along, sport: You're too young for this"--pretty much guarantees the cachet of the forbidden.  Who knows?  Maybe the bright lights of Hollywood are doing us a backhanded favour by making "Intense Sci-Fi" badass.  Maybe the fact that Samuel Jackson's Nick Fury threads through much of the Avengers world isn't actually a coincidence.  (Bet'cha didn't think of that angle, huh?)

Frankly, I'm not counting on that.  But if Dr. Neil DeGrasse Tyson happens to be reading, maybe you, Doctor, should consider a PG-13 "Intense Science-Fact" rating for the upcoming season of Cosmos.  Just sayin'.  Co-opt Samuel Jackson if you have to. ;~)

Wednesday, January 21, 2015

Welp. That was different.

If you take a Statistics 101 course, you should emerge with three basic concepts burned into your synapses.  Bonus points for more than three, of course, but the minimum required to justify your time and tuition are:
  1. Correlation does not equal causation
  2. Any fewer than 32 data-points, and you got some 's'plainin' to do
  3. Standard deviations (particularly on the bell or "normal" curve)
While #1 is probably the most important, #2 is what I came to write about tonight.  Me, I had only two data points when it comes to that venerable business institution known as the local Chamber of Commerce.  We're not going to mention any names, m'kay?  But let's just say that their gatherings were largely unpleasant.  I've tended toward introversion later in life, but can still tap into the extrovert that was me in younger decades, if need be.  That being said, she's not much of a match for the alpha-salespeople who have buttonholed me at CoC events.  And we've both cringed under the firehose of indiscriminate salesmanship on display at too many of these Chamber-hosted outings.

(There's also a slightly embarrassing story about me at a politically-themed business-over-breakfast event, but that's for another time...)

But (belatedly) following the recommendation of a native, I signed up for the Chambre de commerce du Grand Shediac yesterday and showed up at tonight's reception, which included the State of the City address by the Mayor.  Granted, I was treading water (okay, technically "jellyfish floating"-look it up) during the French portions of his address, but it was informative nonetheless.

My first clue should have been that I was left to my own devices during the "mingling" part of the evening.  That gave me the luxury of scanning the room to see who was making the rounds, which cliques stayed clumped together--that sort of thing.  (Extroverted alpha-salespeople, IMO, would do well to shut up and hang back long enough to do this.  Trust me:  you can learn a lot.)

Mind you, I wasn't above introducing myself the singleton looking lost or bored and striking up a conversation.  (For the record, that had a 2-out-of-3 payoff:  I met someone who grew up 2 houses down from mine plus a fellow transplant to the area, but awkwardly bashed my pathetic French against someone's much-better-but-still-limited English.  Zo wellz....)

During the wind-down, I happened to be in the vicinity of the Chamber's Directrice, who took me under he wing long enough to introduce me to the President, and then the Mayor introduced himself while I was chatting with two insurance agents.  (Aside:  Kilogram for kilogram, anyone who's not only read Team of Rivals but watches the movie at least once a year probably has my vote if s/he decides to run for Prime Minister.  Just sayin'.)

But despite the attention lavished upon this (still appallingly unilingual) newcomer, the afore-mentioned firehose was noticeably absent.  That was almost surreal.  But appreciated all the same.  I don't miss the sense of being fresh meat.  Or, perhaps more aptly, the sense of being chum tossed into the shark-tank while my fins are still twitching.

So big ups to the Shediac Chamber for a very positive data-point.  Both the introverted and extroverted parts of my character join me in saying "thanks." 

Monday, November 24, 2014

When sorcery and software don't mix

It's been nearly a decade since I had to wear the "Sys. Admin." hat full-time, but apparently the karma that goes with that role hasn't entirely worn off.  Today was the first time I realised that this can sometimes be a mixed blessing.

Let me back up for a bit and first define what I mean by "Sys. Admin. karma."  Let's say you work in an office environment and your computer is, for lack of a better term, "being stupid."  Maybe you've already rebooted, or maybe that would throw the proverbial monkey-wrench into your current workflow.  Either way, you're hosed, and it's time to call in someone whose job it is to un-hose you.

Back in the Day(TM), in another country, in another industry, that would have been me...when I wasn't babysitting servers or refurbishing workstations for the new folks being shoehorned into a rapidly-expanding staff.   Now, my office was tucked away from most of everyone else--probably because I shared it with four servers and, hoo-boy, were they loud.  So by the time I'd crossed my floor to the stairwell and trotted over to the far end of the lower floor, the problem had a good chance of fixing itself.  Memory/CPU usage had stopped spiking, a file lock had been relinquished, whatever. 

Being Upper Midwesterners, my co-workers would typically apologise profusely for "bugging" me, typically after swearing up and down that the problem had been there just a minute ago, really-and-for-true.

That's Sys. Admin. karma.  The phenomenon is not limited to I/T of course--as anyone who has had their car's disconcerting squeak/rattle disappear on the way to the mechanic can attest.

When I changed jobs back to developer, I was spoiled for several years by having The Sys. Admin. Who Walks on Water there.  But for my own projects, particularly after going freelance, I'm pretty much on my own.  So it was today after I was fresh off a status call with a client.  We'd both noticed that there'd been no actionable traffic to/from his web app.  That's weird for a Monday.  But then again, it's a slow week in the U.S. due to the Thanksgiving holiday.

Or so I rationalised.

For a short while.

Inevitably, paranoia got the best of me, so I logged in to peek at the database.  Sure enough, data was still being crunched; it's just that nothing had tripped the required threshold.  So I emailed the client to let him know that, so far as I could see, everything was cool.

Not fifteen minutes later, the app. spit out a couple of emails indicating action items.

It was pure coincidence, of course.  (No, really.  Pinky-swear.)  Yet the human mind could easily translate the juxtaposition of me telling my client that everything was cool and the sudden appearance of app.-generated emails into a cause-and-effect relationship. 

Technically, that's synchronicity.

But--is that necessarily a bad thing?  From an outside perspective, I only had to log in, barely poke around, and the inscrutable Server Gods blessed the client with a couple of emails.  Magic!  w00t!  Five points for Hufflepuff!

Problem is, the root of magic is the audience seeing an action (or set of actions) result in something seemingly impossible...or at least counter-intuitive.  In the absence of complete information about inner workings, folks will construct their own narrative.  Professionally, the magician has two jobs:  1.) Conceal the actual process between the action(s) and results, which includes 2.) Preventing the audience from forming unwanted hypotheses about cause and effect.  

But since the days when we stared into the darkness outside the firelight in hope that the darkness wasn't staring back at us, our species has mastered few skills quite like narrative-generation.  (Which probably explains why statistics--more honoured in the misuse than the use--have a bad name.) Thus, one person's magician is another's charlatan--or, worse, practitioner of the Dark Arts.

In my case, my client could suspect that I quietly fixed some bug under the guise of "sanity-checking" that the app. hadn't stalled out.   And, in the face of suspiciously close timing, I couldn't in fairness call that unreasonable.

Right now I'm trusting to nearly a year and a half's work with said client that he doesn't, in fact, suspect me of server-side slight-of-hand.  Mind you, I do still occasionally take joy in finding the magic in what I do for a living.  But I know that I'll never have the marketing chops to peddle it.  Then again, if I can earn that kind of trust from someone with a very different skill-set, that's a higher form of magic than anything I could coax from a compiler, no?

Friday, November 14, 2014

Frivolous Friday, 2014.11.14: Live-blogging my NADD* navel-gazing

In software development, there's a term known as "yak-shaving," which refers to all the time-consuming stuff that you didn't budget time for doing before you could get down to the serious business of coding.  Or maybe debugging.  Scott Hanselman's definition is the most cited.

Today, my client and I are basically in evaluation mode for code that's been rolled out in pieces over the last few weeks.  So far--knock on wood--nothing's gone kerblooey, so I set aside a "half-day" to get my house in order for upcoming development projects.

W00t!  New dev. tools!  It's Christmas morning!

... But first, I really should install all those system/software patches to which I've mostly been giving lip service (if that).

... But there are some kernel-level updates for the Debian laptop (my primary computer for development and emailing clients)--it'd be a good idea to back up email first.  In two places, because this is mission-critical stuff.  Okay, patched and turned off.

... But the brand-new Windows 7 installation is complaining that the standalone (not OEM) copy of Windows is not valid.  Some updates fail.  So does the online attempt to prove to MS that my copy came from Best Buy and not the back of a windowless van.  So I dig out the DVDs and re-type the activation code...no thanks a certain Office Cat #1 who shall remain nameless.  Reboot, lather, rinse, reboot.

... Ubuntu workstation updated w/o any static.  Good baby.  [pats top of case]

... But the Windows 8 laptop is not prompting me to download and install updates, despite being off for well over a week.  Okay, where are they hiding update in Windows 8?  Found it.  Go do something else while those downloads take their sweet time to download.  Install.  Reboot, which installs more patches.  Okay, you do that, Windows 8.  Sure, let's take Windows Defender out for a run while we're at it.

... So...time to turn this shiny Win 7 installation into a real software development box.  Geany?  Check.  Mercurial?  Check.  NetBeans?  Whoops--I need the JDK first.   Which fails on the first download.  Try again.  Okay.  Now NetBeans.  Cool.

... But out of the box, a lot of Geany's default settings are the polar opposite of my preferences.  Go away, message window and sidebar.  80 character line wrapping, please.  Show white-space, and tab-indent at three spaces, thank you.  That will be all for now, Windows7.

... But last night I learned that Microsoft had released a new freebie version of Visual Studio.  So let's figure out how to enable IIS on Windows 8 (no biggie).  Microsoft wants you to create an account before they'll give you free stuff.  Fair enough.  But, no, Dennis doesn't have a login I can borrow.  Dig out the password file to make sure I don't have one.  Go to account page; try to come up with an ugly but memorable (to me) password.

... Knowing how much Microsoft will email me, I select my usual spam email.  Sign in to said email account to activate account.  Decide that as long as I'm at it, I should delete all the cron job emails that landed when I was testing an enhancement last week.  Okay, now whack a bunch of other automated emails.  Account activated.

... But there's very little point in IIS + Visual Studio w/o a database, so off to find the download for the freebie edition of SQL Server, particularly since I'm already logged into my Microsoft account.

... SQL Server download is lickety-split.  Expected downloaded time for Visual Studio climbs to over 24 hours.  Kill that.  Crud.  I already closed the download window in the browser.  Go find it again.

... Waitaminnit...isn't Firefox supposed to be dumping my history & cookies on every shutdown?  Go check settings on that.

... Dang.  I should have thought of the Visual Studio / SQL Server thing before I turned off the Windows 7 box.  Turn that box back on.  (Have I mentioned that I heart KVM switches?)

... Whoops, except that I heard Windows 7 make the startup beep, which means it rebooted itself, which requires me to (quickly) switch back to it on the KVM or it won't pick up the keyboard, mouse, and monitor and I'll have to crash it.  Okay, as long as I'm here, I might as well log in with my shiny new Microsoft account and get my freebies.  Some runaround from SQL Server...maybe I should have just sneakernetted the executables from Windows 8? 

... Um, no, I will not wait six days for a 6.x GB file that you're streaming through a digital eyedropper.  Yeah, sneakernet...something's not right.

... So....what, precisely, just happened after I installed what's supposed to be SQL Server 2014 Express?  There's absolutely nothing in Program Files, and I can't even find its daemon in Services.  Fine.  Uninstall, and hopefully I didn't clutter up the registry too badly.  Back over to Windows 8 to figure out what's going on here.

... Oh, for the love of Cthulu, how many updates does Windows 7 need to install?  Guess we're shutting down.  Again.

... Time for dinner now.  (Yeah, technically, I'm just sharpening my razor and not shaving the yak in this step.)

...  Okay, back at it.  Cool.  Now, where were we?  Right--figuring out what I actually installed when I thought I was installing SQL Server Express 2014.  Ah.  Got it.  Don't take the default options.  Let's try this again.  No, you can't contact me at my business phone number, Microsoft.  You're on the West Coast; you don't even know my time zone exists.

...  Oooof...this is going to take awhile to download.  Maybe this would be a good time to snag jQuery & jQuery Mobile, maybe even see what we can do about setting up for Apache Cordova development, since that looks like it will be in the cards shortly.

... jQuery Mobile was a almost a no-brainer except for Windows freaking out about unzipping a file in the inetpub folder.  Now download and install Node.js (crazy-simple) and Git for Windows (because Cordova uses both under the hood).

... Oh, there's a free eBook for Git?  Groovy.  Gimme summa that goodness.  Fetch the tablet and cable and import the .EPUB into the Aldiko eReader.  (Bonus:  This is Windows -> Android.  Ergo, simple little file copy.)

... Command line...npm install -g cordova.  Oh, fun little retro touch of -/|\ spinner!  Totally brings me back to the 90s.  (Good times, the 90s...except for the part about graduating as a Liberal Arts major into that pre-dot-com recession.  But, hey, I could eat half a pan of brownies and burn off the calories drinking a pot of coffee.)

... Oh!  Looks like SQL Server Express (the bells-and-whistles version) is done downloading.  Let's use the Win 7 box as the guinea-pig on this.  Copy to USB drive...eject...copy to Win7.  Mostly take the defaults while installing.  Aaaaaannnnd wait...

... Meanwhile, back on Windows 8, let's snag MySQL and MySQL Workbench.  Oh, Workbench can be installed alongside MySQL.  Ossum.  Let's do that.

...  Or not.  Visual Studio (still downloading...allegedly for another hour to go) has MySQL connectors, and MySQL knows this.  It also wants Excel (not gonna happen) and Python (that we can do).  Long story short, though, this isn't going to all happen tonight. 

... Checking in with Windows 7, it's finished installing SQL Server Express 2014...plus a piece of SQL Server 2008.  It's taking awhile to launch, which I put down to initialisation issues--and toggle back to Windows 8 to install Python.

... While Python is installing, peek in at Windows 7, and find that SQL Server Management Studio will at least launch--if slowly.  Elect to install yet another round of updates (106 of them, as it turns out--I am not making this up) and shut that machine down for the night.

... The Visual Studio installer still--allegedly--has  a half-hour to go.

And now it's nearly 11:00 and it doesn't look like I'll get to rebuilding a Raspberry Pi (which--my bad--I more or less rooted b/c I was misinformed about the permissions one needs to patch Raspbian) will have to wait until later this weekend.   Determining how well MacOS will run in a VMWare instance on Ubuntu is looking like it might even have to wait until next weekend--assuming I can finagle a legit copy, of course.  (Dirty secret:  To download a copy from The Mac Store, you have to use, well, a Mac.  Open-source, commodity hardware hippies like m'self have to do a little horse-trading, y'understand...)

A small part of me desperately misses the SysAdmin Who Walks on Water.  But the vast majority of me fully appreciates what an amazing time it is to be a developer here in the developed world.  As I hope that the above (bit)stream-of-consciousness fully demonstrates, the only real problem is the embarrassment of riches one has at the other end of one's broadband connection.

And I would be remiss if I didn't credit the commercial software behemoths for what they contribute to the ecosystem.  Microsoft is mentioned above...a lot...but Oracle--miraculously, despite every incentive--has yet to kill off MySQL.  Java/NetBeans are still free-as-in-beer in 2014  (also thanks to Oracle's noblesse oblige).  Apple has loosened the screws--a bit--on how one can generate the bits for an iOS app.  One hopes they will eventually have no choice but to come back to ground in other respects--particularly if they don't stop treating Mac developers like untermenchen.

- - - - -

* NADD is a term coined by (the oft-quoted) author Michael Lopp, and stands for "Nerd Attention Deficit Disorder."  NADD stands in surreal contrast to the monomaniacal state of concentration we geeks are known to achieve when debugging or taking a firehose of interesting data straight to the brain.

Thursday, November 6, 2014

Treating attention as a resource

In "The Reichenbach Fall" episode of the BBC series Sherlock, Moriarty trash-talks, "In the kingdom of locks, the man with the key is King.  And, honey, you should see me in a crown!"

In the digital kingdom, locks mostly come in three forms:  firewalls, encryption algorithms, and of course username/password combinations.  Keeping the baddies' fingerprints off our email addresses, credit card numbers, nude selfies, what-have-you is the point. 

But, genius that he was (or is?--we won't know until 2016), Moriarty didn't mention another species of baddie to whom locks were also immaterial.  Namely the counterfeiter.  Throwing back to Sherlock Holmes, this time the original incarnation:  "...the counterfeiter stands in a class by himself as a public danger."  Why?  Counterfeiting is really a double-crime because, if undetected, it ultimately debases the value of the real deal.

You can make the case that spam, clickbait, and SEO shenanigans fall into this category, particularly when they're done convincingly.  And they will only become better at pick-pocketing our attention.  Doubtless, there are already children in pre-school born with immunities to NewsMax skeeziness coded into their DNA, so I shudder to think of the evolutionary counter-strike coming soon to a browser window near you me us. ;~) 

We demand an internet with locks in place to prevent our money (and any personal brand we might cultivate online) from being stolen.  We resent the bandwidth siphoned off our data plans by spam & ads.  "You wastin' my minutes" denotes the waste of both money and time.  But I find it absolutely bizarre that we do not guard our attention with the same jealousy we apply to our money and time.  To a degree, it's understandable.  Multi-tasking is a prized skill--has been since Julius Caesar's reputation for dictating four letters at once...all while other people were yakking at him, no less.

The conventional wisdom is that a knowledge economy is our future.  (Personally, I'm not buying it, but that's a whole 'nuther blog post for a whole 'nuther time.)  If you subscribe to that notion, though, you pretty much have to trade the adage that "time is money" for the more accurate "attention is money."  In an economy powered by three shifts of people standing in front of machinery, attention took care of itself.  Lack of attention on the part of the worker generally ended in maiming or death and possibly a starving family afterward.  That was a world of time-clocks and piece-rates.

Powering this more nebulous economy of knowledge-y thingamajigs, however, is not a series of discrete steps performed by interchangeable labour.  There can--and should--be a process in place, certainly.  Metrics, too, one hopes.  But the emphasis is on collaboration, not a waterfall assembly-line.  (Hence the dreaded open-office layout.)  And, at least in theory, a key differentiator will be the quality of worker--not only as individual talent, but also how well their atom bonds with other atoms in a team's molecule.

But, at some point, all that cross-pollination is supposed to gestate into some innovative-y, disruptive-y, paradigm-shift-y thing that will make the company the next Google or Apple.  And that absolutely, non-negotiably, requires focus--a.k.a. uninterrupted attention.  You know how those last couple hours on a Friday (when the office has mostly cleared out) can be more productive than the entire rest of the week?  Behold, the power of attention. 

Yet here we are in 2014, when the most politically important meetings are too often the useless ones.  In 2014, we still believe that Silicon Valley is "innovating" when apps. like Snapchat are handsomely rewarded for dumping still more navel-gazing bits into the internet.  (And somebody, for the love of Cthulu, pretty-please tell me that "Yo" is dead.  Please?)  In 2014, neither Twitter nor (especially) Facebook have added a "Snopes this before you look like a moron, m'kay?" button.  (Okay, maybe that last one's wishful thinking, and sites like Snopes and Politifact might not appreciate the surge in traffic anyway.)

Let's pretend for a minute that the knowledge economy isn't just another hand-wavy term made up by MBAs to make us believe that there's light at the end off the offshoring tunnel.  If that's actually true, then we need to treat attention--ours and others--as the coin of the realm.  Prioritise the technologies who can boost signal and/or cancel out noise.

Given my druthers, I'd like to see the counterfeiters put out of business for good--specifically the greater good of the internet.  It would free up resources--including mine--to solve more pressing problems.   For the time being, however, here in the kingdom of firehoses, the woman with the sieve is Queen.

Wednesday, September 24, 2014

"Kilometrestones"

The doors, door-frames and woodwork in our house have definitely seen better days--not exactly surprising for a place that housed a family of five in the 70s, 80s, and maybe even into the 90s.  (In fairness, the floors were polished/varnished to almost a mirror finish before the house went on the market.)  Naively, I decided to paint the afore-mentioned doors, frames and trim in white.  Which I wouldn't have done if I'd known that it would take four coats of "single-coat application" paint to look decent.

While the first coat of white-on-dark-brown definitely looks the worst, at least it's a no-brainer.  The fourth coat definitely is the worst--at least from an execution standpoint.  Not only do you need to make sure that everything looks smooth and blended, it's also most difficult to do because it's now white-on-mostly-white.  Which is not particularly fun, even when you're notworking out of direct sunlight behind the furniture and drapes piled up in the middle of the room.

(Yeah--First World Problems, I get it...)

That's the point when--if you're a geek with a penchant for cheesy similes, anyway--you realise that there's a resemblance between this situation and the penultimate stages of a large-ish software project.  You feel like you've been at this for ages with no measurable progress.  You find yourself correcting flaws on this iteration when you can't imagine how you missed them earlier.  You're cursing design decisions insouciantly made months ago.  You're cursing yourself, because you were the one who made them. 

That's where milestones come in.  But sometimes, even milestones are too far apart.  Particularly when you're on a ladder and your arm-reach is somewhere on the order of a T-Rex's.  And, anyways, you live under the metric system now, darnitalready:  Fire up that calculator and multiply by zero-point-six-two:  Voila--kilometrestones!

Often, the little bumps, irregularities and outright freaks in the material are enough to tell you where you are...and where the next stop is.  Typically, that's all that's needed.   After all, you're effectively breaking down a large job into smaller tasks.  

But every once in awhile, you hit a smooth patch and there are no natural kilometrestones.  Well, you haven't painted the actual wall bits yet.  So just swipe a bit of paint on the drywall and shoot for that.

Which is not unlike a point in my first "real" programming job when we'd been scrambling to push Version 1.0 out the door.   On a shoestring.  During the post-9/11-post-dot-com recession.  For no appreciable reason other than "we needed to celebrate," the office boss threw a breakroom party.  Knowing him and his sugar-daddy streak, it was probably on his own dime, rather than the office's. 

Because, ultimately, any job worth doing (whether it's software development or making a house more livable) isn't a contrived story problem in Physics or Calculus 101.  In the real world, momentum trumps velocity. 

Friday, September 19, 2014

Frivolous Friday, 2014.09.17: "Paint"-ron Saint

These latter weeks I race against the Fall
(With light and prospects both fading dim)
To splash fresh colour upon the walls
And white-wash over banged-up trim.

(While the cat is drawn just like a moth
To bask in the floor-lamp for his nap
And purr himself asleep on the drop-cloth
Or--more likely--bunked down in my lap.)

To act as broker for my prayers
I'm in the market for a Patron Saint
As layer I slather upon layers
In full rainbow of interior paint.

(While the cat is drawn just like a moth
To bask in the floor-lamp for his nap
And purr himself asleep on the drop-cloth
Or--more likely--bunked down in my lap.)

My brush may you guide, O Saint Latex
As I lacquer drywall, trim, and doors,
Be the angel who from slips protects
Both plastered ceilings and hardwood floors.

(While the cat is drawn just like a moth
To bask in the floor-lamp for his nap
And purr himself asleep on the drop-cloth
Or--more likely--bunked down in my lap.)

Through all the boring prep demanding
Keep my perseverence evergreen
Tho' nostrils twitch from hardwood-sanding
And house redolent of Mr. Clean.

(While the cat is drawn just like a moth
To bask in the floor-lamp for his nap
And purr himself asleep on the drop-cloth
Or--more likely--bunked down in my lap.)

As the ladders up and down I swarm
Grant my clumsy limbs unwonted grace
Keep my toes and shins away from harm
And furniture now jumbled out of place.

(While the cat is drawn just like a moth
To bask in the floor-lamp for his nap
And purr himself asleep on the drop-cloth
Or--more likely--bunked down in my lap.)

But should you grant no other boon
Give a few days more of sunny clime.
Well I know that window closes soon
And I cannot be profligate with time.

(While the cat is drawn just like a moth
To bask in the floor-lamp for his nap
And purr himself asleep on the drop-cloth
Or--more likely--bunked down in my lap.)

Your name I will bless amid colours bright
When Winter bleaches earth and sea and sky
And in my office by monitor light
My digital craft once again I ply.

(While the cat is drawn just like a moth
To bask in my desk-light for his nap
And make his winter nest in blanket-cloth
Or--most likely--curl up in my lap.)