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?