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.

Friday, August 29, 2014

Frivolous Friday, 2014.08.29: Mind games

One bit of continuity in our move across half a continent has been Dennis's ability to find enough people with which to play board games.

As I write, he's unpacking a "new" game, which tends to follow the same ritual: Pop out all the cardboard pieces, sort out the cards, markers, tokens, dice, etc., into tiny plastic zip-lock bags, unfold the board (which, in tonight's case, looks like the Periodic Table of Elements moshed together with a map of Middle-Earth), and (finally) study the rule-book.

For all that I don't in any sense consider myself a gamer, it's still fun to watch that ritual. To hear the mental gears whirring as Dennis works out the mechanics (and with it, the underlying strategy). To be regaled with the adventures and gossip of the usual suspects after a gaming session. To watch the preferences (for what makes a good game) develop into full-grown snobberies. To appreciate, even at a distance, the craftsmanship that goes into the artwork (and in some cases the design of the playing pieces). To giggle at the silliness of some game concepts (e.g. "Evil Baby Orphanage").

Given the ancient gaming pieces I've seen behind museum glass (including what looked suspiciously like D&D dice--true story), I can only wonder if games are woven into our neural patterns nearly as deeply as language. Oddly, it seems that such pastimes live and thrive more because of the internet than in spite of it. And that, mind you, in an age of MMORPGs geared for the lizard brain. Which it gives me some hope that the ability to gather peaceably around a table may continue to be a selecting characteristic in our species' evolutionary trajectory.

Wednesday, August 27, 2014

A horrific parallel

To honour the centennial of "The War to End All Wars," (and with thoughts of my Doughboy Grandfather close in mind), I've been inching through Barbara Tuchman's iconic The Guns of August, It's a chronicle of the lead-up to and first month of WWI.

Prior to the war, the great European powers had promised not to pick on little sibling Belgium.  Problem was, it was the no-brainer route for a German army intent on invading France.  Unsurprisingly, when hostilities again flared, Germany had already developed meticulously-timed plans for cutting through Belgium in six days en route to Paris.  (One can only imagine how Microsoft Project would have been abused by Field Marshals von Schlieffen and von Moltke the Younger...)  Belgium hadn't really kept up its military in recent decades, so Germany expected that the Belgians would step quietly aside, pacified by assurances that they were only being a little inconvenienced. 

One thing that Belgium did have going for it at the war's outset was a ring of twelve forts near Liége.  On August 5th, the German assault began.  Belgian resistance surpassed even the most pessimistic expectations.  The Germans, rather than fall back and regroup, counted on their superiority in numbers, and so sent wave after wave of troops into mostly one-sided carnage.  [snark] Because, you know, they had a schedule to keep.  Stepping back to think takes too much time. [/snark]

Honestly, I cannot even begin to stretch my brain around what it must have been like to charge machine-gun fire when the wall of bodies was already a meter high.  Nope. Nope. Nope. Nope.  Multiple parallel universes stuffed wall-to-wall with 24-carat Grade-A Nope.

At which point, I'm afraid that my cynical defences kicked in, and I thought, "Sure, because throwing more bodies at a problem when you're slipping your dates is always the logical response, right?"

Which almost sounds like I'm trivialising, and I most emphatically am not.  If anything, it just made me angrier that, even with such brutal Q.E.D examples, the lesson has clearly not been absorbed a century later.

Monday, August 25, 2014

"The Handyman's Secret Weapon"

Since moving to Canada, I've had to hang up my proverbial shingle as a freelance web developer. Despite having a steady client, I decided a couple years back that it would be a good idea to have a Yellow Pages (a.k.a. Pages Jaunes) listing. The calls are usually interesting. (Well, not the run-of-the-mill cold-calls from people who have obviously done ZERO research. I mean...dudes. It's pronounced "grahnd deeg," m'kay? kthxbi) Last Friday was definitely the most so, with someone looking for translation software. The catch was that it needed to work within formatted documents like Microsoft Word and Microsoft PowerPoint.

In other words, Google Translate wouldn't cut it.

As a favour, I contacted a couple folks I know who do a lot of bilingual writing, but aren't themselves translators. They generously shared with me the benefit of their experiences. (You know who you are. Thanks again, ladies!)

Hopefully those helped out my caller of last week. But I couldn't fail to appreciate a bit of irony in how the "silo-ing" of the big players sustains cottage industries. In this case, Google has its translation feature and Google Docs. But Microsoft is still the gatekeeper when it comes to business documents (particularly when you're leery of entrusting the corporate crown jewels to the cloud servers of a company that's getting stalkier by the day).

Grethor will open a Disneyland before we see Microsoft and Google collaborate on anything that important. Thus, a small company that's just interested in making a living can duct tape over the problem of converting human languages back and forth within a crust of proprietary gibberish markup. Not unlike birds cleaning the teeth of crocodiles. (The crocodiles, naturally, being smarter than corporate behemoths because they know a win-win situation when they see one and cooperatively keep their jaws open rather than trying to eat said birds.)

Similarly, I'll be spending another day tomorrow cranking out "duct-tape" code meant to work around the differences between the reality distortion fields created by the Microsoftverse and the Googleverse. The Handyman's Secret Weapon is not unknown in the programming world. And for much the same reasons--trust me, Red Green would totally have my back on this.

Friday, August 22, 2014

Frivolous Friday, 2014.08.22: Culture Shock

(This one's more for friends and brethren back in "the old country."  Then again, Maritimers may be amused by the mindset-tweaks required when one trades the Upper Midwest for Maritime Canada.)

Top Ten Maritimes Things that Took Some Getting-Used-To

10.) The Metric System - Only a little bit, though.  It's when I'm on the road to someplace distant, and the highway sign says something like, "Miramichi 100."  I still reflexively divide by sixty and think, "Just over an hour and a half."  Nope--try an hour or less if you're doing 110 clicks on a four-lane.

9.) Homebrewing/Homevintning - La Crosse, WI was lucky to keep one homebrewing shop open.  Moncton (equivalently sized), by my count, has four.  You can buy kits/supplies at the Co-op where we do our grocery shopping.  (For various reasons, commericially-made booze tends to be very expensive. 'nuff said.)

8.) "Sir John A." -  Canada's first Prime Minister, which sort of makes him the George Washington of the country.  Except that America's first President is carved in ivory and put on a marble pedestal, and Canada's first PM has a beer named after him.  (In the latter case, for good reason.)

7.) Politics (sort of) - There are three brand-name political parties instead of two, which mixes it up a bit.  (Elizabeth May of the Green Party is both vocal and competent, which tends to disguise the fact that she's the only member of her party in Parliament.)  But Liberals are red; Conservatives blue, which takes some mental re-wiring when yard-signs sprout up at election time.  (The New Democratic Party, or NDP, is orange, which is totally outside the pale.)

6.) Atlantic Time Zone - Two hours difference for most of my family.  (Oddly, if I'd moved to certain parts of Newfoundland-Labrador, I'd be two and a half hours ahead.)

5.) Saltwater - It's stupid, I know.  I've been a "river rat" most of my life.  Nineteen years in Eau Claire on the Chippewa.  Four and change in Red Wing, MN on the west side of the Mississippi.  Then ten living on a glorified sandbar in the Mississippi itself (French Island, WI).  But after 2.5+ years of having the Northumberland Strait about three football fields off my yard, I still occasionally have a blinding flash of the obvious and start giggling, "Dude, that's the ocean." Dork.  (Not to mention there's that whole thing with clam-shacks and lobster-rolls being ubiquitous.)

4.) Thanksgiving - Second Monday in October, not fourth Thursday in November.  Has ambushed me Every. Single. Year. (so far).

3.) Colloquial French - Intellectually, I knew that the Parisian French taught in American high schools is not necessarily what you'll hear on the street--even in Paris.  Maritime Francophones have a different dialect ("Acadian") than Francophones in Quebec.  And then there's there's my area, which has a patois known as "Chiac," a French-English-Mi'kmaq mashup.  Still, it has its colourful points--sweet corn is "blé dinde," which translates as "turkey wheat."  (Loves it!)

2.) Wildlife - When your neighbour calls to ask, "Did you guys know that you had a moose in the backyard this morning"?  (Comment dit-on en français <<wat>>?)

1.) Hurricane Season - Well.  Yes.  Intellectually, I knew this was going to be a thing.  Our electrical system even came with a hookup for a generator, for pete's sake.  That's totally not the same as realising that Hurricane Sandy might be dropping by for awhile. o_O

In my defence, there are a few things that I've been able to mentally assimilate fairly readily:
  • Garbage disposal - The different way garbage is separated here (green sacks = compostables; blue = everything else that's not toxic) was kind of a no-brainer.  When folks here complain about that, I horrify them with tales of separating out newspaper, cardboard, aluminum cans, bi-metal cans, etc.
  • Weather - When we first moved here, local folks seemed to assume that winters would be a wee bit of a shock, what with coming from a more southerly region.  Um, nooooo.  On balance, it's been less cold, more snow.  I'll take it, thanks.  (Ice storms need not apply, though.)
  • Place-names -  There's a bit more emphasis on famous historical people here.  (I mean, Queen Victoria's Dad has a whole province named after him, fer cryin' in yer Molson's.)  But apart from quibbling over whether a place-name is "Native American" or "First Nation," it's pretty much a wash.  Dead Presidents, dead Royal/noble people--same difference.
  • Anglicised spelling - At once point in my college career, I started doing this as an affectation, just because I thought that it looked cooler on paper.  So doing it again is just neuron "muscle memory" kicking in.  That being said, I still don't go the fully Monty and use phrases like "at hospital," or "at University," even having a British neighbour.
  • Hockey - C'mon, after living in a state where people wear styrofoam cheese-wedges on their heads, I am soooo not in a position to comment on the CBC segregating their "Sports" news and their "Hockey" news.  Just sayin'.
It probably goes without saying that the similarities outweigh the differences.  I live in a province with strong agricultural sector, with a long legacy of the timber trade.  (New Brunswick is basically the dairy province of the country.)  The stereotype of Canadian politeness rings as true as the ethos of "Minnesota Nice."  Absent the coulees of La Crosse, eastern NB is as vertically challenged as Wisconsin, and there are stretches of highway that could make me swear I'm going through the Dells.   And Johnsonville brats are readily available here--though I'm still waiting for Leinie's Honey Weiss to make it across the border. ;~)

Wednesday, August 20, 2014

A programmer's perspective on Ferguson, MO

Two Three Four thoughts:
  1. Communities and organisations are systems.  Inputs and outputs.  Lines of communication and feedback loops -- some obvious, some more under-the-hood.  Nodes coming and going, and networks forever in flux.  Lost signals, crossed wires.  
  2. Where you start debugging any system is a function of what part is most familiar to you.  If you don't go looking outside your own mental model, you're usually gonna have a bad time...for a longer time than necessary.
  3. Trust me and over a decade of experience in debugging when I say that the problem is too often farther upstream than you think it is.
  4. Throwing lots of hardware at a problem doesn't count as a fix.