Thoughts on computers, companies, and the equally puzzling humans who interact with them
Tuesday, June 23, 2015
What's wrong with this picture?
Okay, so it’s a dirty little secret that an application’s Admin. pages might not be as polished or as bullet-proofed or as well-documented as those made for the general population. Why? Because Admins are assumed to be more familiar with the interface from day-to-day usage. But seriously, this is just phoned in. "1 to 32" characters when a minimum of 3 different types is required? Bad opensrs.net!
Wednesday, June 17, 2015
The second-best thing #navelgazing
In the past, I've joked that programmers actually work for the fifteen-minute high we get after squishing a software gremlin. That's a teeeeeeensy bit of an exaggeration. The sober truth is that we work to pay the bills, pay for our toys AND for the fifteen minute high we get after squishing a software gremlin. Because gremlin-squishing is The Best, yo.
There's a secondary high, though. It's the resigned feeling we programmers get about having to add tedious "plumbing"-type code to the current project, which is subsequently countermanded by the euphoria that comes from cracking open the pertinent file, class, function, stored procedure or what-have-you and realising that we had already thought of that particular situation or edge-case*. Woo-hoo! No tedious plumbing after all**.
I really could have used Programmer High #1 today [grumblegrumblegrumble...jQuery UI...grumblegrumblegrumble], but I'm perfectly happy to settle for Programmer High #2.
- - - - -
* Because we don't necessarily remember writing that code (even if it was, like, two weeks ago), we pat ourself on the back for our future-proofing prescience. The more likely explanation, however, is that there was nothing particularly interesting in our social media feeds at that point, so we just got stuck in and took care of it just because we were already in The Zone by that point. Which makes a perfectly good excuse to check our social media feeds now, because we're ahead of the game, right?
** In software, there's something called "technical debt," which translates to short-cuts, kludges, and shameless rationalisation (e.g. "We'll never have enough traffic to worry about performance bottlenecks.") that come back to bite. Typically at the least convenient time. As with public debt, it largely originates from wishful thinking at the top and/or the inability/unwillingness at the bottom to say "Nope. That's never going to work under the current budget and deadline."
There's a secondary high, though. It's the resigned feeling we programmers get about having to add tedious "plumbing"-type code to the current project, which is subsequently countermanded by the euphoria that comes from cracking open the pertinent file, class, function, stored procedure or what-have-you and realising that we had already thought of that particular situation or edge-case*. Woo-hoo! No tedious plumbing after all**.
I really could have used Programmer High #1 today [grumblegrumblegrumble...jQuery UI...grumblegrumblegrumble], but I'm perfectly happy to settle for Programmer High #2.
- - - - -
* Because we don't necessarily remember writing that code (even if it was, like, two weeks ago), we pat ourself on the back for our future-proofing prescience. The more likely explanation, however, is that there was nothing particularly interesting in our social media feeds at that point, so we just got stuck in and took care of it just because we were already in The Zone by that point. Which makes a perfectly good excuse to check our social media feeds now, because we're ahead of the game, right?
** In software, there's something called "technical debt," which translates to short-cuts, kludges, and shameless rationalisation (e.g. "We'll never have enough traffic to worry about performance bottlenecks.") that come back to bite. Typically at the least convenient time. As with public debt, it largely originates from wishful thinking at the top and/or the inability/unwillingness at the bottom to say "Nope. That's never going to work under the current budget and deadline."
Monday, June 15, 2015
One thing (a rant)
This will likely come off as whining, but one thing about being self-employed that's taken some getting-used-to is taxes. Not the actual check-writing part so much*. Just the fact that I have to go through all the rigamarole more than once a year now. And, sadly, I'm even pretty diligent about record-keeping, so it's not like it's a desperate, chaotic scramble to pull all the info. together.
But even irritation over busywork pales in comparison to the hypocrisy of our (nominally) elected (so-called) leaders. I'd take politicians rather more seriously if they'd stop pretending that they're geared for any business smaller than a global giga-corporation.
Sure, if you employ other people, regular filings are pretty much required to keep everything on the up-and-up. Fair enough. Heck, I would object much less to even quarterly filings if they didn't expect psychic powers. Having to compute quarterly revenues/expenses fifteen to sixteen days before the quarter is even over is what burns my bacon.
The point is that a freelancer doesn't get to the point of being able to hire other people without slack. Slack is somewhat easier to come by without having to drop everything for inane paperwork four times a year, spank you very much.
So, yeah. Politicians--if you can spare time from your punishing treadmill of ribbon-cutting and baby-kissing and back-slapping and deal-making and poll-watching--howsabout you wrap your brains around the simple notion that businesses generally start small?
Garage small.
Spare bedroom small.
Dorm room small.
Look. I know you want to take credit for the next Irving or Radian6 or Clarity or whatever. But it's more likely to happen if I'm not wasting hours of my otherwise billable time with redundant paperwork. And especially not when Freddy and Ottawa are taking their cut of my revenue before it's even in the bank.
You say you want a business-oriented environment and jobs, Jobs, JOBS. I say put up or shut up. Get just a teeeeensy bit real (for once) about what it's like here in solopreneur land. You want to do one thing to bootstrap the next big thing? Let solopreneurs file once a year on April 30th and let them take care of business the other ~364.242 days of the year. Then maybe--just maybe--I might not roll my eyes at your platitudes and bandwagon-jumping quite so much, m'kay?
- - - - -
* Although the cost of banking is another (cough!) "privilege" (cough!) of being in business for yourself that no one warns you about. Going by the price, the paperstock of business cheques is made exclusively from wood culled from ancient elven forests before being artisanally hand-pulped by craftspeople whose oral history does not even know of a time before they were wood-pulpers. Then the printing-plate for each cheque is hand-engraved by printers selectively bred from the direct descendants both Johannes Gutenberg and Aldus Manutius before being inked with Soviet-stockpiled 1970s-vintage IBM Selectric typewriter ribbons reconstituted by unicorn tears. (Sadly, that's the most rational explanation I have for the cost differential.)
But even irritation over busywork pales in comparison to the hypocrisy of our (nominally) elected (so-called) leaders. I'd take politicians rather more seriously if they'd stop pretending that they're geared for any business smaller than a global giga-corporation.
Sure, if you employ other people, regular filings are pretty much required to keep everything on the up-and-up. Fair enough. Heck, I would object much less to even quarterly filings if they didn't expect psychic powers. Having to compute quarterly revenues/expenses fifteen to sixteen days before the quarter is even over is what burns my bacon.
The point is that a freelancer doesn't get to the point of being able to hire other people without slack. Slack is somewhat easier to come by without having to drop everything for inane paperwork four times a year, spank you very much.
So, yeah. Politicians--if you can spare time from your punishing treadmill of ribbon-cutting and baby-kissing and back-slapping and deal-making and poll-watching--howsabout you wrap your brains around the simple notion that businesses generally start small?
Garage small.
Spare bedroom small.
Dorm room small.
Look. I know you want to take credit for the next Irving or Radian6 or Clarity or whatever. But it's more likely to happen if I'm not wasting hours of my otherwise billable time with redundant paperwork. And especially not when Freddy and Ottawa are taking their cut of my revenue before it's even in the bank.
You say you want a business-oriented environment and jobs, Jobs, JOBS. I say put up or shut up. Get just a teeeeensy bit real (for once) about what it's like here in solopreneur land. You want to do one thing to bootstrap the next big thing? Let solopreneurs file once a year on April 30th and let them take care of business the other ~364.242 days of the year. Then maybe--just maybe--I might not roll my eyes at your platitudes and bandwagon-jumping quite so much, m'kay?
- - - - -
* Although the cost of banking is another (cough!) "privilege" (cough!) of being in business for yourself that no one warns you about. Going by the price, the paperstock of business cheques is made exclusively from wood culled from ancient elven forests before being artisanally hand-pulped by craftspeople whose oral history does not even know of a time before they were wood-pulpers. Then the printing-plate for each cheque is hand-engraved by printers selectively bred from the direct descendants both Johannes Gutenberg and Aldus Manutius before being inked with Soviet-stockpiled 1970s-vintage IBM Selectric typewriter ribbons reconstituted by unicorn tears. (Sadly, that's the most rational explanation I have for the cost differential.)
Wednesday, June 10, 2015
A (wrong) turn of phrase
Today, I was about an hour ahead of schedule for a meeting. I normally can't make enough excuses to visit Moncton's Cafe C'est la Vie, so it's not like I was constantly checking my watch. I'd packed both a tablet loaded with books as well as a treeware one, but instead I ended up mostly ignoring both in favour of the raver conversation going down a few tables away.
The tribulations (or "pain-points," in Marketingese) of being a rave-going millennial actually spawned a business idea. Mind you, it's not the kind that's going to make me dump everything to start hacking out code and recruiting co-founders who grok sales and CSS and mobile and the problem domain, respectively. But it's one that's at least worth exercising my Google-fu. Just not tonight--it's already late and, besides, the current client always takes priority.
But the experience made me question the wisdom of the English cliché, "the idea came to me." Maybe I'm the anomaly here, but generally I have to go to the idea. I just know that this is not an insight I would have had chez fivechimera. 'Nuff said.
The tribulations (or "pain-points," in Marketingese) of being a rave-going millennial actually spawned a business idea. Mind you, it's not the kind that's going to make me dump everything to start hacking out code and recruiting co-founders who grok sales and CSS and mobile and the problem domain, respectively. But it's one that's at least worth exercising my Google-fu. Just not tonight--it's already late and, besides, the current client always takes priority.
But the experience made me question the wisdom of the English cliché, "the idea came to me." Maybe I'm the anomaly here, but generally I have to go to the idea. I just know that this is not an insight I would have had chez fivechimera. 'Nuff said.
Monday, June 8, 2015
Another thought on diversity
A couple months ago, I was both amused and encouraged by the example of camaraderie among people who can be notorious for their religious wars factionalism.
Today I had occasion to muse upon diversity again, albeit from a different angle.
I'm working on the database of an application that will--if all pans out--eventually be available to professionals in Canada and the United States (at a minimum). The superficial view is that we can get by with just an English-language version. At least during an invitation-only beta. In the long run, however, French and Spanish will have to be added.
If my Gentle Reader is not a programmer, the only thing that s/he needs to understand is that there are three significant classes of numbers in data design (and programming for it):
If a programmer is creating a table, s/he can get away with a spreadsheet-like model. For instance, each customer would have their data on a single row: Account ID, First Name, Last Name, Middle Initial, Current Balance, and so on.
Zero complicates matters. For instance, I had a chequing account years before my driver's license. Which sometimes made it awkward at the counter, at least in the U.S., because that magic rectangle of plastic was somehow a talisman against the cheque bouncing. (In essence, one driver's license number was expected, but it was just plausible that zero was an acceptable number.) Usually the clerk and I worked something out that involved my University ID and my Social Security card. To some extent, that prepared me for the limbo between the time Dennis & I pulled up stakes for Canada and the time we obtained our Social Insurance Numbers (which things like utilities, banks, etc. expect to set up accounts). Again, it was just possible that zero was an acceptable number, but extra hoop-jumping (and sometimes expense) was involved.
To the programmer, it means some extra brain-work. One has to remember to set database tables to accept no (a.k.a. NULL) values. One also has to remember to allow "None of the above"-type options in drop-down boxes. Also to give "none" or NULL a pass when validating data passing in or out of the database. Extra brain-work, naturally, translates to extra time, and of course extra expense.
For numbers over one, though? Hoo-boy...that's a whole different ball-game. Let's circle back (in management-speak) to the language thing. For this particular application, we can set up each client to have a preferred language. But--particularly among those who speak French and/or Spanish--it's more than likely that a client will be fluent in more than one language.
If we were still storing client info. in a spreadsheet, we'd simply have a "Preferred Language" column and another titled something like "Second Language." In most cases, that column would just be wasted space. And wait a minute: What about people who are fluent in more than two languages? Case in point: One of my step-in-laws speaks six languages. (He's originally from the Netherlands and now lives in the U.S., which pretty much guarantees four languages.)
That's the point where a programmer trades in the spreadsheet for something called a relational database. The database replaces the single table of clients with three: One for basic client info. (all that "one" stuff like name, age, balance, etc.), one small one that merely lists the supported languages, and another table that links clients and languages. The beauty of that arrangement is threefold:
And, as it turns out, that's not the worst metaphor for coping with the world, either. Just sayin'.
Today I had occasion to muse upon diversity again, albeit from a different angle.
I'm working on the database of an application that will--if all pans out--eventually be available to professionals in Canada and the United States (at a minimum). The superficial view is that we can get by with just an English-language version. At least during an invitation-only beta. In the long run, however, French and Spanish will have to be added.
If my Gentle Reader is not a programmer, the only thing that s/he needs to understand is that there are three significant classes of numbers in data design (and programming for it):
- One
- Zero
- Any number greater than one
If a programmer is creating a table, s/he can get away with a spreadsheet-like model. For instance, each customer would have their data on a single row: Account ID, First Name, Last Name, Middle Initial, Current Balance, and so on.
Zero complicates matters. For instance, I had a chequing account years before my driver's license. Which sometimes made it awkward at the counter, at least in the U.S., because that magic rectangle of plastic was somehow a talisman against the cheque bouncing. (In essence, one driver's license number was expected, but it was just plausible that zero was an acceptable number.) Usually the clerk and I worked something out that involved my University ID and my Social Security card. To some extent, that prepared me for the limbo between the time Dennis & I pulled up stakes for Canada and the time we obtained our Social Insurance Numbers (which things like utilities, banks, etc. expect to set up accounts). Again, it was just possible that zero was an acceptable number, but extra hoop-jumping (and sometimes expense) was involved.
To the programmer, it means some extra brain-work. One has to remember to set database tables to accept no (a.k.a. NULL) values. One also has to remember to allow "None of the above"-type options in drop-down boxes. Also to give "none" or NULL a pass when validating data passing in or out of the database. Extra brain-work, naturally, translates to extra time, and of course extra expense.
For numbers over one, though? Hoo-boy...that's a whole different ball-game. Let's circle back (in management-speak) to the language thing. For this particular application, we can set up each client to have a preferred language. But--particularly among those who speak French and/or Spanish--it's more than likely that a client will be fluent in more than one language.
If we were still storing client info. in a spreadsheet, we'd simply have a "Preferred Language" column and another titled something like "Second Language." In most cases, that column would just be wasted space. And wait a minute: What about people who are fluent in more than two languages? Case in point: One of my step-in-laws speaks six languages. (He's originally from the Netherlands and now lives in the U.S., which pretty much guarantees four languages.)
That's the point where a programmer trades in the spreadsheet for something called a relational database. The database replaces the single table of clients with three: One for basic client info. (all that "one" stuff like name, age, balance, etc.), one small one that merely lists the supported languages, and another table that links clients and languages. The beauty of that arrangement is threefold:
- There's no wasted space from that unused "Second Language" column. Which may not seem like a big deal for a few hundred records, but when you scale into the tens of thousands and millions really adds up.
- The solution is infinitely scalable--it can accommodate the linguistic xenophobe as well as the Babel Fish with no hacks required.
- (Bonus) The data stays cleaner. If the "Preferred Language" and "Second Language" are text fields, then someone will inevitably misspell language names. That just corrupts the data. In the relational model, the third (i.e. "association") table links clients and languages by their ID numbers. Which not only takes up less hard drive space (numbers are cheaper to store than sets of letters), but makes it much, muuuuuch harder to screw things up.
And, as it turns out, that's not the worst metaphor for coping with the world, either. Just sayin'.
Friday, June 5, 2015
Frivolous Friday, 2015.06.05: Good-Bad vs. Bad-Bad
While the sun and breeze permits, I'm inching along on the upstairs painting project. Meanwhile, Dennis has the somewhat more messy job of replacing the downstairs carpet with materials that don't actually date back to Disco. (On the plus side, he has the luxury of power tools and a distinct lack of cats trying to sneak into his lap while he uses them.) Last year, my motivation was to avoid another winter of having my soul bleached by white on both sides of the walls. This year, we're both hoping to re-boot the October tradition of hosting a "Carve Pumpkins and Watch Army of Darkness" party--which would effectively double as the housewarming party we never had after we landed.
Army of Darkess, (a.k.a. AoD), being the third installment of the Sam Raimi / Bruce Campbell Evil Dead trilogy, is merely the main course of the party. Historically, the challenge has been to find different "side dishes" for it each year. I say "challenge," because it's not always easy to find horror movies that manage to exist in that quantum state of being both Bad and Good at the same time.
Horror is easy to do badly, but the problem is that even when it's done splendidly, it's eventually riffed-on and ripped-off until the meme becomes stale. (Although Mel Brooks's--ahem!--"homage" to Hitchcock's Psycho in High Anxiety was sublimely sick and brilliant at the same time.) But that's pretty much academic anyway--pairing AoD with Hitchcock would be like washing down Kraft Mac 'n Cheese with vintage Grand Cru Bordeaux. So that basically rules out reasonably nuanced, well-plotted stuff like The Gift, The Sixth Sense, or Ju-on. (I'd lump George C. Scott's The Changeling into that class, except that its biggest horror was the nepotism that cast Trish Van Devere as the love interest. You'd think that a husband-wife team would have on-screen chemistry. You'd be wrong.)
Then again, pure Jason/Freddie/Chucky slash doesn't fit the bill either. If I want shallow, trashy, Shakespeare's- off-his-meds-again schtick, I'll dig up the Cliff Notes for Titus Andronicus, kthxbi.
The classics might be a viable bet--although guests my age likely suffer from a uniquely generational affliction of vision that superimposes the silhouettes of two robot heads flanking a human head over the bottom center of any black and white horror movie screen. Mostly, though, you really can go home again when Boris Karloff, Bela Lugosi, Lon Chaney, Jr., and Claude Raines are keeping the torches lit just for you.
Still, going straight for MST3K won't steer away from the overall theme of the day. The safer bet, however, is to pair cheeseball with more cheeseball. Yet even there, some discretion is required. It's basically because cheeseball comes in about three different flavours:
Army of Darkess, (a.k.a. AoD), being the third installment of the Sam Raimi / Bruce Campbell Evil Dead trilogy, is merely the main course of the party. Historically, the challenge has been to find different "side dishes" for it each year. I say "challenge," because it's not always easy to find horror movies that manage to exist in that quantum state of being both Bad and Good at the same time.
Horror is easy to do badly, but the problem is that even when it's done splendidly, it's eventually riffed-on and ripped-off until the meme becomes stale. (Although Mel Brooks's--ahem!--"homage" to Hitchcock's Psycho in High Anxiety was sublimely sick and brilliant at the same time.) But that's pretty much academic anyway--pairing AoD with Hitchcock would be like washing down Kraft Mac 'n Cheese with vintage Grand Cru Bordeaux. So that basically rules out reasonably nuanced, well-plotted stuff like The Gift, The Sixth Sense, or Ju-on. (I'd lump George C. Scott's The Changeling into that class, except that its biggest horror was the nepotism that cast Trish Van Devere as the love interest. You'd think that a husband-wife team would have on-screen chemistry. You'd be wrong.)
Then again, pure Jason/Freddie/Chucky slash doesn't fit the bill either. If I want shallow, trashy, Shakespeare's- off-his-meds-again schtick, I'll dig up the Cliff Notes for Titus Andronicus, kthxbi.
The classics might be a viable bet--although guests my age likely suffer from a uniquely generational affliction of vision that superimposes the silhouettes of two robot heads flanking a human head over the bottom center of any black and white horror movie screen. Mostly, though, you really can go home again when Boris Karloff, Bela Lugosi, Lon Chaney, Jr., and Claude Raines are keeping the torches lit just for you.
Still, going straight for MST3K won't steer away from the overall theme of the day. The safer bet, however, is to pair cheeseball with more cheeseball. Yet even there, some discretion is required. It's basically because cheeseball comes in about three different flavours:
- Cheeseball that knows it's cheeseball and just rolls with it. Army of Darkness falls squarely into this category. Snappy dialogue delivered with tongue firmly lodged in cheek. Why burn calories suspending disbelief for a whole 90 minutes when the entire cast clearly isn't taking it seriously either? See also Big Trouble in Little China. Ditto Shawn of the Dead.
- Cheeseball that refuses to acknowledge its artery-clogging goodness--and thus ruins the whole taste. No organic, gluten-free artisanal cracker in the world would make this kind of movie respectable, yet an entire studio is trying to convince us that caviar is really nuclear orange. Into this category I'd lump Re-animator and the steaming $40M mess that Francis Ford Coppola made of Dracula. Or even a (cough!) "classic" like the silent Phantom of the Opera, whose bizzaro dominance-and-submission subtext made it the 50 Shades of 1925.
- Cheeseball that is inadvertently, hilariously bad to the point of being watchable. (Admittedly, this cheeseball pairs best with alcohol.) Forget Star Trek, Kingdom of the Spiders gave William Shatner most of the A-grade B-list street cred. he has today. And I broke my two-glass wine limit the night we took Mega Shark vs. Giant Octopus out for a swim. (Which was probably why the shark vs. airliner thing was so darned funny. At the time, anyway.) Beware of the Blob is probably a solid candidate, but Mom had the great, good taste to turn the channel when it was on TV back in the 70s. And strangely enough, I don't think it'll be on Netflix or even DVD anytime soon. (Fortunately, there may be more hope for C.H.U.D.)
Monday, June 1, 2015
Truth in metaphor
So after about a year and change, I've become serious about that whole sit-to-stand work-style. True to form, hardware constraints threw up a few #firstworldproblems roadblocks. But the office is back together in a friendlier configuration than before, and despite having to give up a monitor, I consider it a net win.
As before, the style takes some getting-used-to. Unsurprisingly, I've been toggling between my soles and my backside all day. That I remember from before. What I didn't remember--or perhaps didn't appreciate the first time--is how standing takes the edge off my concentration.
I suppose that if I worked at a job that primarily required standing (guard, chef, etc.), it might well be the sitting part that would feel slightly off-kilter. See, at any given time, we have a fixed pool of processing power from which to draw. And even your body responding to non-default sets of stimuli has to tap into that pool. That includes the muscles which now have to work in different configurations to maintain balance in front of a keyboard and screen.
Granted, I've known for years that trying to read anything technical while on the Stairmaster is less than pointless (because the only thing that's absorbed is my sweat into the pages). But this was a bit of a revelation.
In time, my brain and lower body will come to terms as this begins to feel more "natural." In the meantime, however, I'll have extra appreciate the abilities of those who are praised for being able to "think on their feet."
As before, the style takes some getting-used-to. Unsurprisingly, I've been toggling between my soles and my backside all day. That I remember from before. What I didn't remember--or perhaps didn't appreciate the first time--is how standing takes the edge off my concentration.
I suppose that if I worked at a job that primarily required standing (guard, chef, etc.), it might well be the sitting part that would feel slightly off-kilter. See, at any given time, we have a fixed pool of processing power from which to draw. And even your body responding to non-default sets of stimuli has to tap into that pool. That includes the muscles which now have to work in different configurations to maintain balance in front of a keyboard and screen.
Granted, I've known for years that trying to read anything technical while on the Stairmaster is less than pointless (because the only thing that's absorbed is my sweat into the pages). But this was a bit of a revelation.
In time, my brain and lower body will come to terms as this begins to feel more "natural." In the meantime, however, I'll have extra appreciate the abilities of those who are praised for being able to "think on their feet."
Subscribe to:
Posts (Atom)