Monday, September 29, 2014

Shellshock, herd immunity, and the implications for the "Internet of Things"

Sometimes the analogies used for computer stuff can be a bit off-the-mark.  For instance, cordless computer "mice" aren't called "hamsters."  Computer "viruses," on the other hand, are a spot-on description.  Some are transmitted through a physical vector (historically, through a storage device such as a floppy drive or USB stick).  In other cases, transmission is seemingly airborne (such as via unencrypted wifi).

Continuing the analogy, UNIX-based systems such as Linux and Mac OSX have enjoyed the luxury of a certain "herd immunity."  In part because UNIX-based (a.k.a. "*nix") operating systems were designed to be networked, which meant that defences were baked in from the get-go.  Also, in the past, most everyone was running Windows.  And Windows users--typically but certainly not always--tend not to be the most tech-savvy.  Which, for anyone in the market for notoriety, put the virus-writing bulls-eye on Windows.

Which gave rise to a certain smugness among *nix users that ranged from a sighroll (When will you people learn?") to outright pointing-and-laughing whenever the latest Windows virus was making the rounds. 

Last week's "Shellshock" vulnerability may well have brought that smugness to an end...at least blunted it for the foreseeable future.   Mainly because the free ride of (perceived) "herd immunity" has come to an end.  Apple's OSX has definitely spread from the Graphics Department to other areas of business.  Also, the overwhelming majority of web servers are based on some flavour of Linux.  Additionally, embedded devices are increasingly based on Linux.

For programmers like myself who do the bulk of their work on Linux laptops or desktops, most of the distributions (e.g. Ubuntu, Red Hat) make it stupid-easy to install security updates.  Ubuntu, for one, definitely gets up in your grill about them.  (Plus, we generally know better than to ignore them for any longer than absolutely necessary.)  By contrast, an Android tablet (which is Linux-based) like my Nexus 7, can be more obsequious, like the velvet-footed, quasi-invisible Victorian butler.  (That tiny notification icon in the northwest corner of the screen murmurs, "Would Milady graciously condescend to update her tablet now, or after tea?  Very good, marm."  But no more than that.)  Which is dangerous from the standpoint that updates are easy to ignore, but it's the tablet that's more likely to connect to that coffee-shop wi-fi.

And the proverbial web-enabled toaster?  Fugeddabouddit.   Its manufacturer was too busy trying to squeeze half a cent off the unit cost (to appease Walmart's accounting goons) to worry about releasing software patches.  And that's precisely the problem with the Internet of Things.

And while I don't necessarily like to call for yet more regulation, I think any government that waits until after a catastrophic network attack to require patching is a reckless government.  The two major barriers to such a catastrophe are well on their way to becoming null and void.  Clearly, the industry cannot be trusted to police itself.

Cost was the first barrier.   Unlike Windows or OSX, Linux is free to use.  It is--just as importantly--also free to hack up and modify to suit your particular hardware.  Either factor is enough to make Linux a no-brainer for electronics manufacturers.  Which is fine for standalone gadgets.  But when they're exposed to a network (and by extension other devices), an evolving immune system is a non-negotiable.

There's another dimension to the cost factor, and that's in hardware.  Previously, only full-size PCs or laptops had the processing power and memory to support a full-blown operating system.  Not anymore, when the $40 Raspberry Pi runs off an SD card like the one you probably already have in your camera.  Eventually, the only limits on size will be imposed by the need to connect it to monitors and standard ports or peripherals (these days that means USB devices; who knows what hotness tomorrow will bring?).

All that, for a manufacturer, means that they don't have to spend the money and time to develop a custom operating system; they can go with a no-cost off-the-shelf platform.

The second roadblock, scarcity of always-on connectivity, is now disappearing, as public libraries and city buses and in some cases entire cities offer free wi-fi. 

The upshot is that we'll have an ubiquitous operating system that is less than likely to be immunised against the latest viruses.  And it will be living in the (metaphorical) Grand Central Station of the internet, exposed to any and all comers.  Pandemic is not a risk; it's a certainty.

I know that most people could care less if their cyber-toaster tells a black-hat hacker or the NSA or the CSEC that this morning's raisin bagel was (gasp!) not gluten-free.  But that's soooo emphatically not the point here.  Why?  Because hackers do not always want your data.  In many cases, they want to siphon your processing power and your bandwidth so they can use it to attack those who do have juicy credit card numbers or email addresses or passwords. or naked celebrity selfies or whatever.  Which ultimately means that when anyone's too lazy to keep up with patches, they're aiding and abetting the enemy.  And complacence, as we know from politics, is complicity.

Naturally, my Gentle Reader is too savvy and hip to be slovenly about such things.  They fully appreciate that even their Fitbit has orders of magnitude of computing and communications power beyond what put people on the moon.  And they, beyond question, have the instinctive class and sense of noblesse oblige to know that with great power comes great responsibility.

Of course they do.

Friday, September 26, 2014

Frivolous Friday, 2014.09.26: No excuse for slacking

Back in 2011, when we were in the throes of packing up and refurbishing the house to sell, I let this blog fade to black.  Inertia (a.k.a. Newton's First Law) is more powerful than Physics class ever implies.  Even having a folder labeled "Blog fodder" and occasionally slipping a .TXT file into it wasn't enough motivation to pull this monster out of its cryogenic tube.

After I made the decision to go with a Monday-Wednesday-Frivolous-Friday schedule, however, it was amazing how attuned my spider-senses were to potential topics.  And that even without the additional stimulus of working in an office chock-full of people.  (Cats and finches, as a rule, are not the best of muses.)

But sometimes--only sometimes, mind!--inspiration does not exactly kick in the door like the baddie in a B-grade kung-fu movie.  Unlike Victorian writers, I don't have the luxury of brining my synapses in absinthe until inspiration hits.  (And we won't even go into applied chemistry as practiced by Ernest Hemingway or Hunter S. Thompson, m'kay?)

That's where the intersection of history and literature come to the rescue.

Mercifully, the Society for Creative Anachronism doesn't have any rules or norms about couples having to "match" in their chosen eras.  So my Renaissance Venetian persona doesn't bat an eyelash at her Norse husband's outlandish costume or customs (much less the fact that they're living about half a millennium apart in time).  Also, by osmosis, she (meaning 21st century I) has a distinct appreciation for a poem known as Höfuðlausn, which translates as "head-ransom."

Höfuðlausn is a poem within a larger work known as "Egil's Saga."  Egill (with an extra "L") Skalla-Grimsson, unsurprisingly, is the hero of the piece.  Egill had a long-standing feud with the king of Northumbria (part of Viking-age England). Through mishap, Egill finds himself stranded in Northumbrian territory.  But rather than being considered cowardly, he presents himself at the court of the king.  Which was certainly enough to merit consideration for a Darwin Award...even without the fact that the king is known to history as "Eric Bloodaxe."

But don't touch that dial!  Egill has an ally at on Bloodaxe turf.  This go-between (Erinbjorn) plays to King Eric's machismo, pointing out that killing a lone enemy under the cover of darkness would be more than just a little sketchy.  As post-script, he reminds the king that Egill just happens to be a famous poet, and that perhaps Egill could be (ahem!) "persuaded" to provide a catchy PR piece for the king.

Now.  If you want to grok the classic Norse, you need to grok the concept of what they called "word-fame."  In their religion, all things--including the earth and even the all-powerful gods themselves--would eventually be destroyed.  But "word-fame," having one's name on the lips of generations yet unborn--that was immortality.  It was a powerful ideal--echoing through through centuries to the words Shakespeare puts into the mouth of Henry V at Agincourt.

And, it seems, this was too tempting an offer for Eric Bloodaxe to refuse.  Then--as Egil's Saga tells the story, anyway--was the "head-ransom" composed and memorised in a single night.  And Egill--though never really reconciled with the King or vice-versa--is allowed to go on his way unharmed.

Thus, when I realise that it's a blogging day and it's already after dinner and I've yet to be ambushed by a snappy meme or fresh twist on current events, I can't in good conscience wimp out.  (Granted, there are parts of the internet even meaner than bad ol' King Eric Bloodaxe:  I'm looking at you, reddit!).  My Gentle Readers are of course more forgiving.  But maybe that--as well as the memory of Egill Skalla-Grimsson--is more of an incentive to bring my A-game every single post.

Skål!

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. 

Monday, September 22, 2014

An unwanted inheritance

Dennis wanted something "mellow" to listen to while making dinner tonight.  He's not a Steely Dan maven, but I dialed up 1977's "Aja" anyway to see whether that hit the intersection in our musical tastes.  

I made some reference to the album being panned by some SD afficianados as "The Great Bland-out," which triggered a bit of a rant on Dennis' part.  Something to effect of "I don't get the whole 'They sold out to make a lot of money'  thing.  Geeze--they gotta live, too." 

"Oddly, no one ever seems to say that about plumbers," I observed.

I was being ironic, of course.  But it highlights something that qualifies as runner-up for Most Messed-up Attitude About Work* award.  Namely, that you're not supposed to be well paid for work that you (gasp!) might just enjoy.   That either body or spirit must starve.

Sigh.  Because we all needed further proof that the legacy of the Puritans has outlived the actual Puritans by two centuries, don'cha'know?  (That was more irony, btw.)

- - - - -

* The winner of the Most Messed-up Attitude About Work award is another blog post for another day.


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.)

Wednesday, September 17, 2014

Thoughts on "debt"

When I read this tweet earlier today, I had to bite my fingers (not my tongue, because it's Twitter, y'understand) to avoid picking a fight when I had other windmills at which to tilt. I've been in New Brunswick long enough to pick up on the political zeitgeist, so I know darned well that I'm being generous by assuming that MLA Higgs was just limited by the 140 characters, and not merely channeling his Inner Albertan (as is fashionable these days among Tories).

Having come from south of the border where shills like Grover Norquist have twisted the definition of "corporate taxation" to include concepts like "rescinding corporate subsidies and sweetheart tax breaks," I've come to realise that the first casualty of debt reduction is any grown-up concept of "debt."

And so huffing that you are "...saying NO to 900m in new spending, higher taxes, and a mortgaged future" immediately on the heels of "I am saying YES to Nat Resource Dev, Forestry, Energy East" to me demonstrates a staggeringly simplistic concept of how books are balanced for the wider world.

Yes, there is public debt.  It's important.  We all get that.  (I just paid my Sept. 15th tax installment.  I probably get it even more than most people right now.)  But it's not the only kind of debt.  And our soi-dissant leaders are supposed to grok that.

There is environmental debt.  Given how skewed the provincial economy is to basically just taking stuff from the earth (trees, natural gas) or the sea (lobster, et. al.), and how economies of scale and naked cronyism favour the large companies, that's a foregone conclusion.  Particularly when the Premier insists that regulations are strong enough while tailing ponds are leaking and rivers somehow aren't supporting the number of salmon that they should.  If that  mentality isn't heading straight for "a mortgaged future," I don't know what is.

There is socialised private debt.  That's largely an extension of the above.  When fracking companies insist that it's none of our business what they're pumping into our groundwater, it's again a foregone conclusion that when the bills come due, said companies will simply declare bankruptcy and vanish.  When lakes and rivers are polluted because the Alward government ignored its own DNR recommendations when handing the keys to Crown forests to Irving, it darned certain won't be Irving's mess to clean up.  Lac Magantic is the writing on the wall that only the willfully blind cannot read. 

There is entrepreneurial debt.   An economy skewed toward "taking stuff" only innovates for "taking more stuff faster."  Granted, I'm biased toward information technology and "making stuff."  And while I wholeheartedly applaud the efforts to provide free online training to New Brunswickers, it's with the goal of making them more valuable employees.  Not the same thing.  (In fairness, there are three courses on writing a business plan here.  But the bulk of the skills don't apply to someone starting a business in their garage.) 

There is technical debt.  When crumbling roads make it difficult to ship goods between Points A and B, that's not fiscal responsibility, that's kicking the can down the road.  When educating children loses the focus because rabble-rousers pit anglophones and francophones against each other in the funding equivalent of "The Hunger Games," that's just another dent in the can.  (And btw:  Why is it that our electricity can come from a Crown corporation, but we can't seem to manage community-owned broadband?  I'd hate to know what the profiteering of Rogers/Bell/Telus/Etc. is costing our economy.)

And so saying that the province can't afford more debt while doubling down on a robber-baron resource economy is either breathtakingly naive or cynically opportunist.  Either way, it shouldn't be parking its backside in Fredericton--much less Ottawa.  Luckily for Mr. Higgs, I can't vote in this election.  I can only hope that by the time I do, there will be a choice of candidates who both understand and acknowledge the fact that not all costs are immediate, and that they aren't always reflected on the official books.

Monday, September 15, 2014

A taxonomy of programmers *

Those of us who work inside the black box that is software development make a lot of distinctions when it comes to our peers.  To the world outside that box, we're "good with computers," which means that making a pivot table in Excel, unjamming the printer (for the umpteenth time), and hacking the Pentagon are all in a day's work.

Managing a team of programmers is a matter of depth management.  You can't afford to be too shallow in any single area of expertise, or you will pay for it--in bugs, wasted resources, frustrated customers, a messy codebase, leaked data, and more.  The most common defence against the dangers of shallowness, so far as I've seen, has been to focus on functionality--assigning people to broad roles like information security, database management, user interface, etc.  Not surprisingly, technical certifications and years of experience with a given technology are the criteria for hiring.

I'm not knocking certifications or experience--oh, no.  But I do believe that the approach over-emphasises a tactical approach to team-building that may be a strategic liability in the long run.  Here's my take on what managers should also be looking for at interview time.  It's about the unofficial roles that will eventually constitute the bulk of your new programmer's value to the team. 

The Here-Go-Bash-Yourself-Against-This-Technology-And-See-If-It-Works Programmer:  This is someone with a streak of McGyver in their make-up.   But make sure that they're also someone who's had their heart broken a few times by The Next New Hotness (TM).  Ideally, though, you should have multiple people who can cycle in and out of this role.  Because all programmers need a vacation from chasing billable hours.  Most especially those who have to maintain other people's code.

The Scalability Programmer:  This is the one who already has A Plan, should your website go viral during the Stanley Cup or Superbowl.  This is also the programmer who will talk you back to sobriety after Sales has convinced you to put that half-baked demo. on a live webserver for their customer to start using.

The Security Programmer:  This is the one who flips out when they learn that you're only encrypting passwords with MD5 and not 1024-bit SHA-2 hashes.  (No, you don't have to know what that means if you don't already.)  But if they show more interest in how your website can be broken than in how to make it fast/pretty, that's actually a good thing, on balance.  When the next round of celebrity nude photos or filched credit card numbers hits the news, you'll be thankful they're around.  There but for the grace of those folks go you.

The Need-for-Speed Programmer:  Performance jocks are good to have on staff, and they're likely to mesh nicely with the Scalability jocks.  But.  There needs to be a mutual respect between them and the Security Programmer, unless you enjoy breaking up spitting-matches.  (Trust me, the rest of the team will not enjoy them.)

The Archivist Programmer:  Programmers who actually write things down are a rarity.  If you don't already have an internal wiki, set one up for them.  If they're the only one ever using it, leave it alone.  If their time-sheets run longer than "Anna Karenina," that's okay.  There will come a time when having that information on hand will save your butt.  If you ask nicely, they might even wiki their meeting notes for you.

The User-centric Programmer:  Oddly, this person might not even know their way around Adobe InDesign or how to make CSS work in four dimensions (on all browsers, nat'cherly).  Basically, what you're looking for is empathy--the ability to imagine themselves in the user's seat.  It's a scarcer commodity than you'd think.  Someone who points out that the order of the "OK" and "Cancel" buttons are flipped around on your mock-ups isn't being retentive.  A user clicking one because it's in the same spot where they're used to seeing the other can cause a whole lot of damage.

The Process Enforcer Programmer:  You have a process for a reason.  If client data was a month late in arriving, you emphatically do not skimp on Quality Assurance to make up lost time.  The Enforcer is there to remind you that bugs are much cheaper to fix before they go out the door, and that an account-level conversation with the client should be happening sooner rather than later.  The Enforcer will likewise point out that server upgrades the weekend before a major release are a special snowflake of stupid.

The Hardware Geek Programmer:   Someone who can rise above the Windows-Mac-*nix-Android-iOS spit-balling is invaluable.  And not only when you need to have all the circuits holding hands in a circle singing "Kumbiya."  To many average programmers, the hardware, and even the network is becoming increasingly invisible.  Until it breaks.  That's why you want this geek close on hand.

The Programmer You Can Show to Clients:  There's no substitute for first-hand information when software is being designed, feedback is being given, or bugs/inconsistencies are being worked out.  In fact, substitutes just add friction and increase the likelihood that the client will receive less value for the dollar.  If the "communication skills" blurb on a programmer's resume turns out to be something besides filler, do not squander the chance to make use of them.

This is by no means an exhaustive list.  And it probably goes without saying that a programmer with a few years of experience in a decently-run code shop or I/T department will probably take on more than one of the above.  Just don't expect them to wear all those hats, even during the course of an entire career.  That's the same kind of unicorn-hunting that leads to the myth of the full-stack developer.

- - - - -

* A special note of thanks to my husband Dennis  for helping me round out this list.

Friday, September 12, 2014

Frivolous Friday, 2014.09.12: How switching computers is like moving day

I can't speak to how Apple frog-marches people through upgrades, but having one foot in the Microsoft world and one in the Linux world, there's not a whole lot of urgency.  Ubuntu has extended the support for their "LTS" releases to three years.  And Windows versions are like "Star Trek" movies in that you figure every other one's gonna suck anyway, so why bother spending the money?

Which, on the surface seems like a good thing.  But it's really a trap.  And every time I have to switch computers (regardless of whether it's a lateral transfer or an actual upgrade), it's done with the voice of George Carlin echoing in my head.  (Link NSFW, of course.  Because George Carlin.)

Regardless of context, I'm convinced that there is no substantive difference between moving physically and moving digitally.  Except maybe the part where you pretend your friends are really willing to work for pizza and beer.  Here's why.

Location.  It boils down to a question of optmisation.  Cool factor?  Macbook Air = cute loft studio apartment in Manhatten.  Or Portland.  Maybe the Mission District?  White picket fence suburban livability?  Windows 7 = Mayberry.  Which I think is somewhere by, like, Minneapolis...on your way to Omaha.  Post-retirement downsizing?  iPad Mini (like a Tokyo capsule hotel)...or maybe a netbook with an SD port (Hong Kong "transformer" apartment)  Crunchy, off-the-grid-but-with-an-internet-connection living?  Debian = Cottage country...mostly during the off-season.

Packing.   It's always most valuable before you have to schlep it.  And it's worse every time.  There are boxes you haven't opened since they were first taped and labeled.  Just like that folder named "GutsyGibbonBackup."  Easier to just throw them on the pile than triage, amirite?

Scheduling.  No matter how much you sandbag, it always takes longer than anticipated to pack--we all know that.  Those idiots on Kijiji who never showed up to take your old couch?  They lied just like that file copy progress bar.  Similarly, you're never really, truly unpacked and "moved in" for weeks, or maybe even months.

"Situational Ownership."  Crom help the poor schlub who has their stuff stored on your computer.  Evolution's red-fanged process of natural selection is infinitely gentler.

Unexpected Budget Overruns.  The mere act of bringing boxes into the house causes the volume of your stuff to expand:  It's a law of Physics, fer cryin' in yer Leinie's.  Just like the memory stick or external hard drive of three years ago is laughably inadequate when you have to back up your iTunes library.  So off you go to buy more capacity, just like you would for boxes, tape or Sharpies.

Third-party Storage.   Yeah, you could pay them to keep an eye on your stuff while you're on the move.  But can you really trust them?  Or even them?

Sense of Unfamiliarity.  Bottom line: Your stuff's not where it's used to being.  Doesn't matter if it's the bathroom light being on the wrong side of the door in the middle of the night or Gnome hosing up the placement and order of the window min/max/close buttons.  There is the irrational urge  to burn it all to the ground.  Yes, eventually, you will rewire--either the place or your reflexes.  But for now, you're too busy trying to get yourself back to a functional state.

Zoning Surprises.  Only after you move into the new digs do you appreciate the lame and often just plain stupid restrictions the new environment imposes.  Oh, that software doesn't run on 64-bit?  Oh, you wanted to install software ON YOUR OWN FRIGGIN PROPERTY without having to create an account with your new corporate overlord?  Oh, your new O/S refuses to recognise that wifi dongle and now you have to haul everything to where the router is and untangle two boxes of cords to find a CAT5 cable?  Only to discover that all you have on hand is a crossover cable?  Sucks to be you.

The New Normal.  This is the stage where you and your new environment have achieved some sort of equilibrium and détente.  It's the point where the sharp edges have smoothed to a piquant novelty, but not worn down into comfortable familiarity.  That's the most enjoyable phase.  It's also the most dangerous.  Because that's when the cycle of acquisition begins anew.  Or, to circle back to Mr. Carlin:  "You got more places than you got stuff--now you gotta buy more stuff!"

Wednesday, September 10, 2014

A rant on the disconnect between value and money

Pro tip:  If you want to feel like a baller, start your own business in Canada.  That way you can pay your taxes in one or two (as opposed to fifty-odd) lump sums.  Making the numbers jibe for the benefit of the Canada Revenue Agency was this week's must-do job.  Normally, I like math.  Not today, though.

Don't get me wrong--it's not the digits on the check (currently en route to Ottawa) that brass me off.  It's accounting for what was skimmed off (in flat fees plus a percentage differential on the exchange rate) every time a U.S. client wired payment for services rendered. 

And for what?  Industrial-strength InfoSec. and the redundancies required by transactional processing don't come cheap--I get that.  And there will always be a certain percentage of transfers that go kerblooey and require scrounging up a real human being to debug those edge-cases.  Believe me, I grok that too.

Yet considering the millions of international transfers made every day, the fee seems pretty darned steep for a the sliver of a second that it takes a computer algorithm to move ones and zeros from Server A to Server B.

Which sets my mind to thinking again what the virtualisation of goods has done to our internal bean-counting mechanisms.  For instance, people who would not shoplift at The Future shop will torrent CD/DVD content and bootleg software.  And when money is digitised, I have to wonder whether that likewise tempts banksters to even more light-fingeredness than they would have with cold cash.

Or maybe it's even more insidious than that.  Perhaps the nebulousness of "wealth" is even making us confuse money and value more than we ever have in human history.   Like how we're so prone to conflating success and merit in our entertainers.

So can you work with me here, Gentle Reader?  Can we all focus on what we're getting instead of what we're spending?  I think I can safely promise a healthier economy and happier people in it if we do that.

Monday, September 8, 2014

"Ownership"

Today I had the unpleasant job of telling a client that something I thought would be do-able was, in fact, all-but-impossible under the constraints.  The fault was mine for not enough up-front research--by which I mean actually getting real dirt under my fingernails instead of trusting the internet.  Theory vs. reality, you understand.

Mind you, this is not the first time something like this has happened during my programming career.  But it is the first time it's happened since I donned my "Entrepreneur" super-suit.  Delivering news like that to your client is distinctly Not Fun when you have management and an I/T department at your back; it sucks even more when it's your credibility (and your credibility alone) wearing the bulls-eye.

But the flip-side of owning your own business is owning the mistakes.  And, today, at least, it turned out to be a positive.  The client and I hashed out a feasible workaround amenable to both sides.  And, as the maraschino cherry on top, I was told that I'm "good to work with."

That, friends and brethren, is the sound of #WIN.

Assuming, of course, that I don't do it again anytime soon. 

Friday, September 5, 2014

Frivolous Friday, 2014.09.05: The Geek's Guide to Canadian Politics

(Disclaimer:  This one's mostly geared for friends and colleagues in my old stomping-grounds of La Crosse, Wisconsin.  At least I can look forward to seeing them all again after Canada kicks me out for writing this.)

Yesterday, a Twitter squabble-not-squabble between an NDP supporter and a web marketing expert spilled into my feed.  What started as a complaint about the amateurish design of campaign materials for this month's elections in New Brunswick turned into a debate on the actual topology of the political left. 

After living for four decades and change under the Coke-vs.-Pepsi choice that is U.S. politics, I didn't have an equivalent simile for the menu that New Brunswickers face this year on the provincial level and next year on the federal.

Until now.  Thanks for being my muse, @cbmackay!

Canadian Political Parties as Operating Systems

Windows 8 = The Conservative Party of Canada (a.k.a. the "Tories")
  • Is extremely business-oriented
  • Relies on advertising blitzes to create reality distortion field
  • Leaders particularly enjoy hob-nobbing with the Queen
  • No one ever seems happy with the current version...yet there they are in the lead
OSX = The Liberal Party of Canada (a.k.a. the "Grits")
  • Slick image  (Seriously, Justin Trudeau is a cutie-pie.)
  • Relies on charismatic leaders to create reality distortion field
  • Is becoming more business-oriented (again)
  • Has a history of pandering to the hip kids...and the trying-to-be-hip kids
 Linux = The New Democratic Party (a.k.a. "Yoo-hoo! What about us?")
  • Is a relative newcomer
  • Is more ubiquitous than anyone ever appreciates (currently the Official Opposition, but you'd never know it from the press)
  • Has distinctly populist leanings
  • The job at hand determines whether or not it plays well with others
OS/400 = The Bloc Quebecois (a.k.a. "The Bloc")
  • Originally created with legacy in mind
  • Uses a different language than other systems
  • Anyone who doesn't have to understand it generally doesn't try
GNU = The Green Party of Canada
  • Established in 1983
  • Okay, that's reaching. Fact is,  I got nothin' other than the Greens are basically the hippies of Canadian politics.  If you're left-leaning, you're rooting for them, but you know they'll never take over the world.



Thursday, September 4, 2014

An odd place to find gratitude

For the past few days, I've been working with software called Selenium WebDriver, which allows a programmer to control a web browser via code.  It's normally used in Quality Assurance testing, automating mind-numbing, repetitive jobs*.

Out of the box it works with the Firefox web browser, which just happens to be my preferred browser.  With (usually) minimal tweaking, other browsers can be supported.

 A Firefox security update was waiting for me yesterday morning.  Which, in addition to providing valuable protection against online malfeasance, also broke my Selenium code.  At least for Firefox.  For various reasons--among them not liking Chrome--I switched to another computer, where I will not be allowing updates until this project is done.  I expect that at some point the Selenium folks will release a new version to catch up with whatever changes the Firefox developers made.  (Checking the bug reports, it looks like this happens intermittently...and I wasn't the first one to notice this time.)

Apart from grumbling to the Twitterverse about the "virtue is its own punishment" collision of responsible web browsing and programming, I can't legitimately be upset.   Firefox is the only major browser that's not the flunky of an operating system (Internet Explorer for Windows or Safari for Mac or, arguably, Chrome for Android tablets) or the table-scraps of a large corporation (unarguably Google Chrome).  Selenium, likewise, is a pro-bono effort...complete with a PayPal "Donate" button.  (For the record, a portion of the proceeds from this gig will be donated to the Selenium project.)

In fact, the situation opened my eyes to the fact that I'm doubly privileged to be a coder in a world where open-source software is an internet connection away (possibly even downloaded via an open-source browser from a server running open source software). Firstly, because programmers will scratch their own itches first, which means a certain bias for programming-related software. Secondly, because I've incidentally picked up at least some of the tools necessary to bolt things together to scratch my particular itches.

 - - -

 * For instance, let's say you're a QA person and those pesky software developers have been told to make a change in a very complex series of web forms.  Let's say it's the sign-up for your company's services.   In other words, it has to be bullet-proof or your company will lose money, right?  Your job is to try to find the weak spots in its Kevlar jacket so they can be patched--before your potential customers ever see it.

Now, you could manually type and click to attempt things like submitting forms with incomplete, nonsensical, or potentially dangerous data.   And along the way you visually verify that the programmers haven't done something weird to the layout and/or look and feel.   And, oh, you need to take screenshots of anything that goes kerblooey so you can attach that to the bugs reports you will inevitably send back to the programmers.

So you fire up Firefox and do aforesaid typing and clicking for multiple test cases.   And then you do it again in Chrome.   Then Safari.  Then the current version of Internet Explorer that's installed on your workstation.  Then you log into multiple virtual terminals and check Internet Explorer 10, 9, and (gack!) 8.

And once the programmers have--allegedly--fixed the bugs you found this time, you will do it all over again.   That's where this kind of software comes in.

Now, that takes some up-front time and cooperation from people who code and possibly even SysAdmins.  But for mission-critical web pages, there's really no excuse not to do it for the long run.