Tuesday, September 29, 2015

Hating on Physics

Ugh -- two hiccups in one morning.  (Mercifully, there was just enough coffee left in the thermos for them both.)

Firstly, a rough head-count of wires suggests that we may not be able to get away with a mini-breadboard for the MPL's robot -- at least, not for the "brains" part up top.  Which means more weight.  And, more annoyingly, a chassis redesign.

Secondly, a client asked me to verify that data had been imported by a scheduled job.  Alas, when I peeked into the database, I found that only one record from roughly 800 had made it over.  Going back to the original data dump (like y'do), I quickly realised that the code was fine, but all but one record was seriously hosed thanks to a freaky Excel export.  (In programming, the shorthand for this type of situation is "GIGO":  Garbage In, Garbage Out.)

The fact that the code is, technically, doing what it's supposed to do is cold comfort.  The fact remains that we have another edge-case to take into account (and gracefully handle, natch'erly) in the next release.   Which means time and budget that doesn't go into what we want to accomplish.  Booyah, legacy code.

So, as a human -- particularly a human who works from home -- I'm allowed to say a few unprintable things.  But I'm not allowed to resent the newly-discovered edge-case.  That would be as ridiculous as hating the physics of not enough breadboard wires for all the robot-widgets.  And I'm certainly not allowed to carry on as if those problems didn't exist.  Or worse, go solve the problems that interest me.

See, that's what bugs me so much about wanna-be "leaders" like The Donald or Carly Fiorina.  Forget the incendiary rhetoric.  It's when the former responds to a hard, documentable fact (e.g. that 40+% of illegal immigrants arrive in the U.S. via plane, not sneaking through the desert) with "I don't believe it."  Go pound sand, Trump:  Reality doesn't care what you believe. 

Likewise, the latter doubling down on her claims about the breitbarted "Center for Medical Progress" video, inventing footage that never existed in the original scam.  (I thought that fanfic had reached its nadir when Twilight fan E.L. James penned the 50 Shades trilogy, but...daaaaaaaaang.  That's a whole 'nuther level of gaslighting your own gender, Ms. Fiorina.)

Gosh, I can't imagine how one's been in bankruptcy (at least) four times, and the latter very nearly led her company off a cliff... [insert uber-sarcastic eyeroll]

Look.  I don't get to ignore reality--much less hate on it.  That would lead to solving the wrong problems...assuming they're even problems in the first place.  At best, that's a waste of time and money.  In the middle, the real problems are neglected.  And in the worst-case, that additionally creates new problems.

I assume that, like me, my Gentle Reader is paid to solve real problems within the constraints of the real world.  We should accept nothing less of ourselves.  And expect even better from those who want to have the power to declare war, spend our tax dollars, etc.  Values can be debated; facts cannot.  Anyone who cannot accept that should have their "adult card" taken away and be given a Sims account so they can live in their own reality without bothering anyone else's.

Wednesday, September 23, 2015

An experiment in learning by teaching

Originally, my contribution the geeky "potluck" that is the 2015-2016 season's Moncton Developer User Group presentations was supposed to be the Laravel PHP framework.  But then I volunteered to help the Moncton Public Library as an Arduino coder on a robot project and found myself having to learn 3D modeling for the parts that Thingiverse doesn't have.

Sadly, my attempts at drawing anything (in two dimensions) almost make xkcd look like Rembrandt.   Okay maybe you'd have to go to The Oatmeal or Hyperbole and a Half for that comparison.  But still.  Then I discovered that the OpenSCAD software was based on describing a 3D object mathematically, rather than drawing it (e.g. with SketchUp, AutoCAD, or Blender).  Believe-you-me, my pointy ears perked up and my spider-senses quivered.

Most software packages, unless they truly suck (or you hate having to work with them for other reasons) come with an infatuation period.  As with people, it lasts until you expect one behaviour and get something different.   But in the headlong rush of dewy eyes peering through rose-tinted spectacles, I pinged the MUG illuminati with the idea that OpenSCAD might perhaps be more interesting/useful to our crowd.  (For those outside I/T, PHP is a workhorse of a programming language, which makes it boring...except for the people who live to hate on it.)

So I spent the better part of a week's bedtime reading on the official documentation.  To help myself structure the information, I started outlining the information as I understood it.  Essentially, it was the nucleus of the outline for my presentation.  Unsurprisingly, the outline has since been re-arranged, split up, re-grouped, etc. as my understanding has become more completed.  And the obligatory "Gotchas" section has grown.  And moved up in priority as I've actually used OpenSCAD to model robot parts...among other things useful to the household of a budding evil mad inventor.

As auto-didactic techniques go, I'm going to hang onto this one.  For me, it's useful structure.  For the eventual recipients of the presentation, at least they can rest assured that it hasn't been thrown together the hour before.  Win-win, right?

Tuesday, September 22, 2015

Shaving the zebra

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

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

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

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

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

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

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

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

Monday, September 21, 2015

Back from "staycation"

Shocking precisely no one (except a rookie developer or rookie developer's client -- which we are not), the limited Beta had rough edges.  Those were filed off while I've been racing the calendar with painting (most notably my office).  And learning 3D modeling (more on that later) by the tried-and-true method of figuring out why my code blew up.

But the office is going back into shape this evening (assuming I can gang-press The Other Programmer In Residence's longer, stronger arms for fifteen minutes)

Blog resumes tomorrow.