Thursday, April 30, 2015

The "lean" economy

There's a school of code-slinging known as "agile programming," which is an offshoot of the "lean manufacturing" pioneered by Toyota in the aftermath of WWII.  One of the most basic tenants is the commandment to "fail fast."  In software, that means getting the most usable features--even in the roughest form--out in front of real users as quickly as humanly possible.  (The terminology is MVP, or "Minimum Viable Product," btw.)

But the most useful part of the "fail fast" mantra is the three-fold assumption that:
  1. Failure, at some level, is inevitable.
  2. Small, inexpensive failures should be insurance against large, catastrophic ones.
  3. Be willing and ready to "pivot" your business model and/or product at the proverbial drop of a hat.
Seriously, it's about as healthy of an attitude toward failure as I've ever seen.  Better yet, it comes from the real-world, rather than "Self-help" woo from the bookstore.

Coming, as I do, from that operational mindset, I have a difficult time stretching my think-muscles around the willingness of big business and government to compound failure by postponing it.  That difficulty is exacerbated by both the money-printing-presses of central banks and the hoarding behaviour of large corporations.  Don Pittis' editorial on "zombie economies" really brought that home yesterday.

Pittis is a little vague on the point of zombie companies in particular.  But what I suspect he refers to, at least in part, is companies buying back their own stock, financed at least in part with artificially cheap money.  Fortune in February noted that large buybacks don't tend to be well-executed by companies for a couple of reasons:
  1. They're buying stock at relatively high prices, and
  2. They're spending that money in lieu of "riskier" R&D.
That sets up a triple-whammy, should the company's fortunes take a sharp digger.  Firstly, they're now loaded with debt.  Secondly, if they need to sell stock to raise cash, they're now selling it for a net loss.  Finally (and most ominously), they're left with fewer (or no) new products with which to diversify their offerings.

This is about as antithetical to "agile"/"lean" as it gets.  Being too afraid to take calculated short-term risks sets up more consequential dangers in the long-term.

Tragically, what the post-2008 coddling of the investor class has amply demonstrated is that failure does not have consequences--at least not for those who screwed up.  Anyone who subscribes to the notion of the "rational actor" of neoclassical economics (which I don't) has to admit that its vaunted "rationality" breaks down in the absence of market discipline.

Look.  I have a mortgage.  But my interest rate ticking up at renewal time is preferable to the damage that an artificially-induced recession will do to my income.   Six years (and counting) into the post-bailout malaise, it's amply clear that artificially low interest rates are an anesthetic rather than a cure.   Job growth is anemic at best; wages have remained stagnant.   Worse, any incentive to save against the next recession has been severely dented by those same low interest rates--not to mention what banks siphon off as fees.

But, hey, at least no one's calling it a Depression, right? 

Any sane startup or product manager would have pivoted a looooooong time ago.  Yes, I do realise that the world's largest economies (and companies) don't turn on the proverbial dime.  But, looking at the experience of Iceland post-2008, I have to wonder whether letting banks fail and using the bailout money to write off mortgages wouldn't have been the better option.  Short-term pain vs. long-term gain.  That sort of thing.

Plus, you can't deny the soul-satisfying appeal of Iceland tossing its greedy, irresponsible banksters in jail.  Alas, the only way North America could scrape up enough political will for that would be to turn it into a particularly trashy reality show.  Snap to it, Hollywood! 

Monday, April 27, 2015

"But it works on my machine"--the microcontroller edition

A coda to the saga of the cut-down Arduinos (a.k.a. Trinkets) that were failing upon being plugged in, and failing the repair process.  I was not amused to read the Adafruit support tech's forum reply, which (paraphrased) amounted to "Try another USB cable."

Fortunately, I did have a spare on hand.  No love, though...until I connected it directly to the Ubuntu workstation rather than the KVM switch that allows me to share a monitor, keyboard, mouse, and USB peripherals among multiple computers.

So the good news is that I might not have fried out a half-dozen microcontrollers simply by plugging them in for the first time...and now a couple of stalled projects are back on track.  The slightly-less-than good news is that the repair process still blows chunks--albeit with a different error this time.  (Ergo, if these things do blow out for real, I'm hosed.)  The bad news is that the infamous "It works on my machine" syndrome is a thing in hardware even as simple as the Arduino.

But, for now, back to making stuff!

Wednesday, April 22, 2015

Open hardware, open software, open support

My beginner's luck with the Adafruit Trinket seems to have run out.  Out of eight purchased, five are non-functional, some right out of the box.   Adafruit provides software to reprogram (reset) the bootloader, which functions as the Trinket's operating system, but it's erroring out.  No luck on the search engines.

I came up bust on the forums, but noticed in a few cases, the "admin" account had suggested emailing their support address.  So I fired off a detailed description of my problem, what I had done, and a screenshot of the error message itself.  Like y'do when you've spent two years in tech. support yourself.

To their credit, Adafruit had a reply within a few hours.  But it was a request to ask the question on the forums.

At first I was annoyed because 1.) That's sort of like pushing their product support support off onto the community, and 2.) I need another one-off login like I need the bubonic plague.

But, on second read, any useful reply would only solve the problem for me.  Arduino is an open source platform, and walling off useful information runs 180 degrees counter to that ethos.  Also, open source would not exist in any robust form without the means to broadcast information at almost zero cost--i.e. over a widely accessible internet.

Thus, I have to confess some chagrin at my earlier selfish instincts.  In this case, information should, in fact, be free*

- - - - -

* For a background on the (in)famous quote, see Fortune's 2009 interview with Stewart Brand.

Monday, April 20, 2015

Of hacking and hysteria

For your faithful blogger, Programmer School was a small community college with only two full-time I/T instructors--let's call them "M" and "N."  "M" was better geared to teaching actual coding, while "N" mostly concentrated on application-based courses, and was a bang-up administrator for the dept.  We were a tight-knit enough tribe that "N" thought nothing of mentioning that "M"'s birthday was the next day.

I happened to have the first class period of the day with "M" that semester.  And, by good fortune, the janitorial folks knew us all--particularly the 2nd year students--well enough to trust us after hours in the classrooms/labs.  I knew from observation that "M"'s morning routine was to turn on the projector and instructor's computer, then meander back to his office or chat with students during boot-up.   It was the perfect opportunity to pounce.

This was also the era of Windows 95, which didn't support multiple logins.  And honestly, the projector-connected instructor's computer at the head of the class didn't have much use for security--anything important like grades would have been on "M"'s office computer.

After hours, I used MS-Paint to make a colourful .BMP file bearing a "Happy Birthday" message and set that as the Windows background image on the instructor's computer.  Then I ran down the Beatles' "Happy Birthday" and set the Windows start-up sound to a clip from it.  Finally, I powered down and made sure all the other computers in the lab were off (part of our implicit bargain with the cleaning folks) and went home.

The prank worked perfectly.  True to form, "M" hit the "on" button and strolled back through the classroom.  A collective chuckle at the sight of the desktop background rippled through the classroom.  And just as "M" turned back to look at the screen, sound clip made everyone (else) jump a bit.  The grin and eye-roll were exactly the payoff I was hoping for. 

It's one of my fonder memories of Programmer School.  Yet, if this had gone down in Florida instead of Minnesota, pranking "M" could be considered a felony.  Why?  Because I used a computer to which I was not authorised.

In Florida, a 14 year-old is facing felony charges for changing the desktop background of his teacher's computer.  Just like I did to "M" nearly 20 years ago.

It might be tempting to make the argument that, because my background image was amusing rather than potentially offensive, it's not illegal.  That argument would be wrongity-wrong-wrong.  Because, as the Sheriff's Dept. stresses, it's not about what the student actually did.  Or even what he provably had intentions of doing.  No, no, no--it's about what he might have done under the lax security conditions.

And that, Gentle Reader--that is one dangerous precedent right there.  Like, irradiated city-stomping B-movie monster dangerous.

Cynically, I understand that piling on every possible charge basically amounts to a sandbagging tactic when law enforcement tries to finagle a guilty plea from the suspect.  That doesn't make it smart, much less right.  Law enforcement in the U.S. already has a huuuuuge PR problem, and this certainly doesn't help.

More significantly, criminalising woefully uninformed, hysterical notions of "hacking" doesn't improve infosec.  All it does is shifts responsibility away from companies that should be enforcing strong passwords, multi-factor authentication, and, well, not hiring the kind of moron who clicks URLs in  dodgy emails in the first place.

But it's we who should be worried far more.  There's a reason that breaking and entering is a separate crime from actual theft (or any other malfeasance one can wreak in another house).  Opportunity does not constitute intent.  

And we in the I/T community need to step up and hold politicians accountable for perpetuating decades of ignorant, alarmist, knee-jerk legislation/regulation.  Seriously, even Hollywood has a better grasp of computers and networking--and that's not exactly pegging the bar high, y'all.

Thursday, April 16, 2015

Progress by paradox

While waiting for a process to finish, I decided to take a crack at wiring what, chez fivechimera, is snarkily referred to as "The Mark II."  It's the second generation of the cat-on-the-counter alarm.  The passive infrared sensor on the "Mark I" is doing its job just a little too well--Dennis and I are triggering it merely by passing too close. 

Thus, in Version 2.0, the passive infrared sensor (which detects motion) is being supplemented by a distance-sensor which works not unlike a bat's echo-location "sonar."  Granted, the distance-sensor's accuracy on a moving cat is less than stellar (and I know this because Office Cat #1 decided to trundle around on my lap while I was testing it...bwoohoohoohahahahahaha.)   But after a few rounds of field-testing and tweaking, we should be able to find a workable number-range. 

The form-factors of the hardware are sort of conspiring to make the wiring pretty tight.  Adafruit's Trinket (assuming it's using male pins) is has been hailed as being "breadboard friendly."   But in practice, the mini-USB port barely catches the edge of a full- or half-size breadboard with the result that the pins nearest the port don't completely seat. 

A mini-breadboard has less of a border on it, so that's not a problem.  But that form-factor requires one to be really creative in wiring.  Particularly when the ultrasonic distance sensor is as long as the breadboard itself and realistically has one place it can be plugged in without chewing up too much real estate.  And that's all with the fact that the new PIR sensor is downright breadboard-hostile, and will have to be mounted somewhere else.

But we're told that limitations encourage creativity, right?

Yet, I would probably be a little more paranoid about my wiring job if volume pricing (and shipping rates) didn't result in me owning more than one Trinket, infrared sensor, buzzer, etc.  By contrast, when I wired up my first project, I cringed at how much I had to wrestle the little push-buttons into the breadboard.  By now, I have zero compunction about coercing cooperation from them--with pliers, if necessary.  Owning twenty instead of two has a lot to do with that.

Because we're also told that lowering the cost/consequences of failure encourages creativity.

And therein lies the paradox.

 On one side, limitations (a form of scarcity) are supposed to make us do more with less--perhaps even achieve what was previously considered impossible.  But on the other, the luxury of failing our way to success requires a certain safety margin of abundance.

With that paradox in mind, it's not difficult to empathise with anyone scrambling to bring a new product online before the money runs out.  Or a company that has to bring a new offering to the market while still supporting the older offering that's paying the bills.  Basically, those folks have to live in two almost diametrically opposed mindsets at once.  Given how badly most of us deal with cognitive dissonance, it's pretty amazing when anyone pulls it off.

Tuesday, April 14, 2015

Diversity in I/T

Last night, after the Moncton User Group meeting, I tagged along to the Irish pub to socialise and hear war stories.  As is usual with such convocations, it was time well spent.

One thing I've found funny and frustrating about software folks (all other left-brain proclivities aside) is their our tendency toward "religion" when it comes to platforms, languages, coding styles, source control tools, development environments, you-name-it. 

Yet, at our table we were two Mac users, one Windows user, and one Linux freak--at least when it came to primary operating systems at work. Bi-fluency in O/Ses is certainly not uncommon, and tri-fluency not unheard-of.  One Ruby on Rails dev., one .NET dev., one Go dev. and one PHP dev.  Two Git users, one Mercurial user, one unknown.  One SQL Server user, one Postgre user, one MySQL user, and one of unknown database preference.  Two emacs users, one Visual Studio user, and one Geany user.   But we unanimously agred that keyboard shortcuts trump the mouse when editing--which spawned a hands-on demonstration in how to select/insert multiple lines in emacs.

I trust I've made my point?

If even folks like us (who are notoriously rabid about our tools) can have that fun (and productive) of a time over a few beers (and pineapple juice...more diversity), what the heck is wrong with the rest of the world?

Friday, April 10, 2015

It's not self-help if you have to subscribe: A rant

Heads-up for Moncton-area folks:  There's another network-marketing thing going around.  If someone pitches you books/CDs/DVDs/internet-radio-syndicated content based on the "Three Cs" or "Eight Fs," that's the one.   Based on a short conversation I had with someone with whom I'd done business once, I was under the impression that they were trying to recruit a local leadership group.  Bad me for not asking enough questions up front.

Oh, well--having company over was a good excuse to jump-start spring cleaning.  And bake banana bread.  So there's that.

I might probably have said this before, but I can only boggle at the perpetual cash-cow that is the self-help market.  Honestly, I'd love to see the trade put out of business, because human time and talent and hustle could be put to more pragmatic uses--i.e. solving tangible problems, rather than soothing the angst of adult professionals.

Why, in the cold, slimy name of Cthulu won't folks just deal with a reality that can't be neatly packaged?

Yeeeeesh.

Your parents were making it up as they went along.  So were their parents, probably from an even earlier age.  You are too, no matter how much "content" you consume.  Just cowboy up and acknowledge that and you'll save yourself a lot of internalised stress.  Possibly a bunch of trees and/or plastic as well.

Everybody successful you've ever heard of had at least a little bit of luck.  Not to mention somebody to do the actual, you know, work while they were being fawned over by Inc., and all that.  There is no checklist.  No paint-by-numbers outline.  No habits to slavishly cultivate.   If anybody had it figured out, the bookstore would have to find something better to stock on those shelves.  Me, I ain't holding my breath.

Introverts succeed.  So do extroverts.  Morning larks and night owls.  Left-brainers and right-brainers.  Technocrats and alpha-marketers.  Type As and Type Bs, plus the whole alphabet soup that is the Meyers-Briggs.  It's not a DNA or brain chemistry kind of thing.

Beware the narrative--most especially in the first person.  History isn't always written by the winners (as the Illiad, the Bible, the Arthurian tales, and the Chanson de Roland all aptly demonstrate).  But it is more often than not cherry-picked when there is a point to be made.

Treat mistakes as if they were copyrighted by the RIAA/MPAA and the ghost of Sonny Bono will curse you with "I Got You, Babe" as an earworm, even into your next life.  I.e., do try not to plagiarise anyone else's screw-ups; don't let anyone else cover yours if you can help it.  'Nuff said.

If you need mentors, get off your butt and recruit them instead of trying to buy them in syndicated form.  Respecting the fact that you might have something to offer a mentor is key.   Don't even think about entering into that kind of relationship if you don't already have a plan to pay it forward.

Bottom line, just get the heck out there, add value, and insist on being fairly compensated for your time and trouble.  Oh, and never trade your definition of "success" for anyone else's, m'kay?

Monday, April 6, 2015

A belated "Happy Birthday"

My bad.  I knew last week that Microsoft's 40th birthday was coming up, and then completely spaced it out over the long weekend.  My brush with the company actually came fairly late in a Generation Xer's development.  My trajectory was TRS-80 to Apple II, followed by a three-year hiatus, and then MS-DOS alternating with early Macintosh for a bit, finally settling on Windows 3.1 and so on up.

These days the Windows development stations don't have much to do except wait for updates and the day when one will end up doing the duty of both and the other is recycled as a home server.

But even as a Linux user, I realise that monoculture, even in operating systems, is infeasible. Particularly in my trade, which is expected to support Mac, Windows, Blackberry, Android, iOS, and various flavours of UNIX.  Moreover, as both the Irish Potato Famine and the rash of script-kiddie-fueled havoc of the 2000s taught us, monoculture can be downright disastrous.

Still, it would be distinctly un-Hufflepuff of me not to acknowledge the audacious moon-shot that Bill Gates, Paul Allen, et. al. (nearly) pulled off.  A computer on every desk, running DOS/Windows (depending on the decade).

It wasn't Borg-like single-mindedness, nor even plain luck.  Painting with a broad brush, some of the key factors in Microsoft's ability to make three billionaires and a whopping 12K millionaires from its 1996 IPO are, IMLTHO:

The Economics of Complementary Products:  Meaning that if the price of peanut butter drops, you should be able to sell more jelly as well as more peanut butter (even if the price of jelly remains stable or even rises a little).  Personal computer prices were plummeting even as their capabilities followed the logarithmic trajectory of Moore's Law.  That made it easier to justify spending more money on software.  The trade-off would become more opaque as new PCs and laptops began shipping with pre-installed copies of DOS/Windows.  And then the greater volumes spurred more efficiencies (some good, some appalling) in the electronics industry, and...well, here we are...

Apple in a Tail-spin:  Jobs had been pushed out by Scully and Woz had bailed as Apple's first act was fizzling out.  (If my Gentle Reader's memory of Apple before iPods and Macbooks is a little fuzzy, think Robert Downey Jr. between Ally McBeal and Ironman and you're pretty close to the mark.)

Stepping-stone Partnerships:   After Microsoft adapted and optimised (or in programmer parlance, "ported") the CP/M operating systems for IBM PCs, it retained the rights to its own version of the resulting PC-DOS.  As PC clones rushed into the market, the go-to operating system (MS-DOS) was no-brainer.  Microsoft also collaborated with IBM on the OS/2 operating system, but DOS (and other business ventures) eventually proved too lucrative, and Microsoft dissolved the OS/2 partnership.

A Bigger Bogeyman:  Strangely, there was once a time when Microsoft was an underdog.  It's generally accepted that, as the PC boom was mushrooming, IBM made superior hardware.  Alas, at a higher price-tag and with absolutely zero intention of following anyone's standards but their own.  PC-DOS and OS/2 work notwithstanding, Microsoft found itself part of an intrepid little band that also included Intel and Lotus in the battle for how RAM is used by programs.  (And people cheered them on!)

"The Second Mouse Gets the Cheese":  Because first-mover advantage is overrated.  Particularly in new markets where consumers aren't sure what they're supposed to want yet.  I think that fairly characterises the mid-1980s when people wanted a computer because all the cool kids had one.  (As, later, they just had to have their AOL, and Facebook, and iGadgets, and...)

"Knowing Where the Bodies are Buried":  Microsoft's inside knowledge of their operating system gave an insurmountable strategic advantage to developers of the Office suite of products.  In other words, it's developers could take short-cuts through the operating system that companies like Lotus (of 1-2-3 fame) or Corel (WordPerfect) couldn't even know without first reverse-engineering. 

Lack of Complacency:  At least in the 1990s, Microsoft was highly jealous of its dominance, and targeted threats--real and imagined--with extreme prejudice.  Which was reflected in Gate's now-(in)famous "Pearl Harbor Day" reaction to an entire realm of software (a.k.a. the internet) that had materialised outside the fiefdom of the desktop operating system.  As many of us likely remember, shenanigans ensued.  Any web developer who still has to support Internet Explorer 8 could probably make the case that we're still paying for those shenanigans today.

Embracing Hardware Diversity:  It's basically the network effect, in that the value of a network is a function of the square of its number of members. Thus, the more things you can do with a computer, the more valuable it is.  That encompasses hardware as well as apps.  And goodness knows I've wasted enough (sometimes fruitless) time with Linux and wireless to appreciate when "it just works."  Yes, there's a Microsoft Mouse, and the XBox, but overall, Microsoft has not let itself become too distracted by new hardware form-factors.


Alas, Microsoft's relationship with third-party developers, historically, has enjoyed levels of dependency and dysfunction normally not found outside Tennessee Williams' plays.  Obviously, there has been a lot--and I mean a LOT--of (ahem!) "unsportsmanlike conduct" perpetrated from Redmond, WA.  Let's not gloss over that, not by any means.  Nope.

Worse, I'm not even referring to Steve Balmer's lizard-brained "cancer" characterisation of open-source software.  Microsoft took a PR black eye after it copied a feature from Blue-J, then initiated a patent filing--even after management was aware that the work had been pilfered.  In that instance, MS (wisely) backed off.  But Windows developers are/were (or should be / have been) all-too-aware of the truth in the ancient Greek blessing "May the Gods stay far from your destiny."  To wit:  Make a Windows app. or plug-in that's too successful, and Redmond might just bundle a knock-off with the next version of Windows (or the applicable application).  Which puts said developer out of business--after taking on all the risk and sweat of prototyping and marketing.

But, hey, at least that's a real product, and not mere weaponised marketing--a.k.a. vapourware.  I'd hate to know how many companies or proto-companies tanked simply because someone at Microsoft whispered in the ear of Slashdot or Wired or PCWorld or what-have-you.  

Yet.

And yet...

When it's all said and done, I'm not entirely convinced that my Gentle Reader and I would know each other were it not for the aforesaid moon-shot  Where I used to work, we had the acronym "BHAG" (pronounced "Bee-hag") for Big, Hairy, Audacious Goals.  And there is something--actually multiple and varied somethings--to be said for a company that can score a BHAG.  Despite the lean, uncertain times.  More importantly, despite the smug, Dom-and-Beluga fat times.

Microsoft, for its all its sins (both myriad and legion), literally changed the world.  And I think that needs to be acknowledged...even by open-source partisans such as your faithful blogger.

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?