Sunday, September 8, 2013

Birthday Time Again


Well, it’s birthday season at our house again, starting with The Mother‘s birthday last weekend, the Larger Animal’s birthday today, and continuing on through the raft of Scorpio birthdays next month, including myself and several of my best friends.

Today in particular we spent the day at Universal Studios with both Smaller Animals and four teenagers.  As I’m sure you can imagine, I’m exhausted.  So no blog post this week.

I’ll come up with something exciting next week.  Unless I don’t.

Sunday, September 1, 2013

Here's My Beard; Ain't It Weird?


It’s almost time to shave again.

I grew my beard at age 19, to make myself look older—or at least that’s what I told everyone.  My family hated it: mother, father, both grandmothers, aunts and great-aunts and nearly everyone who bothered to notice at all.  I sort of liked it, but I always claimed I was willing to shave it off if I didn’t need it any more.  You know, to look older.

When I turned 21, I reasoned that now I was older: old enough to buy beer, anyway, and what other reason is there to look older?  So I shaved off the beard.  I left the moustache though: I was afraid I’d look a little too young without some sort of facial hair.  That only lasted a few months.

I look like a complete goober without a beard.  My original conclusion was that I just had too much of a babyface.  This was overly optimistic.  What I came to realize, eventually, was that I have no chin.  Not just a weak chin, but practically none at all.  I get it from my mother.  Turns out it’s not so awful on a woman, but for a man to have no chin is pretty bad.  And it gets worse the older you get.

A lot of people have told me that, when they try to grow a beard, it itches too much and they eventually give up.  My beard has never itched when it’s coming in.  In fact, it hardly ever itches at all, except for one sort of curious cycle: about every 5 years or so, it starts to itch something fierce.  So, every 5 years or so, I have to shave my chin completely ... just to air it out, so to speak.  Twice I’ve gone for the General Burnside, which let me tell you will get you some strange looks.  Once I did a sort of droopy moustache and soul patch combo, like Ben Stiller in Dodgeball.  I can’t recall what I did for the other one.  It probably won’t be long until the next cycle rolls around, although that’s not the sort of shave I was talking about.

No, I meant just the regular sort of shave.  My pattern, you see, is to let the thing grow for several months: basically until it’s so long that it gets annoying.  The beard will, if left untended, start curling under my chin, creating a sort of shelf under there.  I can understand why people put beads and shit in their beards—I’m sure it’s just to get the stupid thing to grow straight down.  I can’t imagine how much effort it takes to grow a ZZ Top or somesuch.  But that’s mostly irrelevant to me, because long before I have to worry about that, my moustache will get so long that it starts getting in my mouth.  When I’m trying to eat, certainly, but even when I’m just trying to talk, or stick my tongue out so I can concentrate, or sometimes for no good reason at all.  Once that starts happening, it’s time to shave.

I had a friend (my boss on my first professional programming gig, as it happens) who grew a beard for a while, but he eventually shaved it off.  When I asked him why he gave up on it, he said it was too much trouble.  I was perplexed by this answer.  What do you mean, too much trouble, I asked.  Well, you have to trim it, and shampoo it, and condition it ... he went on and on about all the beard grooming he was putting in.  I had no idea how to respond to this, other than to say: you’re doing it wrong.

I mean, if we’re going to be honest here, most of the reason I grew the damn thing in the first place was sheer laziness.  The whole “it makes me look older” thing was mostly a convenience.  And, if you’re growing a beard because you don’t like shaving, then you better not be shaving very often, or else what’s the point?  I shave once every two or three months.  Something like that.  I don’t keep track; as I mentioned, I just wait for it to get annoying, then I shave.

But I don’t shave it all—did I mention that I have no chin?  Basically, I start at about the top of my ears and go all the way down until I have just a smallish goatee.  Then I thin out the beard a bit, square off the moustache so it’s not in my mouth any more, and that’s it for another few months.  Now, if I’m doing this for a special occasion (funeral, job interview, that sort of thing), I may follow that up with some shaving cream and a safety razor, but typically it’s just clippers.

The clippers I use to trim my beard are the same sort people use for shaving their heads—which is handy if you have friends who are skinheads, or Neo-Nazis, or Sinead O’Connor fans, or just guys who are going bald but still need to look tough, like bouncers in dive bars or Bruce Willis.  I’ve tried special beard trimmers and that sort of thing as well, but a nice simple pair of clippers is moderately cheap, does a great job, and they’ll last forever.  Well, they will if you oil them regularly.  My first pair of clippers I didn’t oil them.  The clippers come with a tiny little bottle of oil, and a recommendation to oil them after every use, and to use only the special oil with the manufacturer’s name on it, and if you’d like to order some more, it’s only $30 a bottle.  This sounds like a rip-off—which it is, but not because the clippers don’t need the oil.  I found out right quick that the clippers will rust on you in a heartbeat if you don’t oil them.  The rip-off part is needing to use the special oil.  Just get yourself some sewing machine oil: it’s the exact same stuff, except cheaper.  The Mother‘s mom is the one who taught me that trick: she bought me a 3 or 4 dollar bottle of oil some ten years ago or so, and I’m still on the same bottle.  I don’t know if you need to oil the clippers after every time you use it, but, since I only use mine once every few months, I do.

For me, shaving is a whole big ritual.  I only do it before I shower (otherwise you wander around with little stray beard hairs down your shirt all day).  I only do it over the toilet—I only had to clog up my sink 3 or 4 times before I learned that one.  So I always start by cleaning the toilet first.  Not necessarily the toilet bowl, I mean, but the outside of the toilet and the seat and all that.  Then I get my mirror and prop it up on the seat.  Then I double over my ponytail and tie it up out of the way ... one wouldn’t want to shave off one’s ponytail by accident, now would one?  Then I do the shaving, which is fairly simple.  Then I use one of those barber’s brushes to sweep all the stray hairs into the toilet.  (Maybe those things are easier to come by these days, but it took me about 15 years to manage to get one when I first started looking.)  Then I have to brush the stray hairs off me.  Then I have to brush the stray hairs off the clippers.  Then I oil the clippers.  It takes quite a while, really, for the whole procedure.  But then again I’m only doing it every few months, as I say.  So it’s not that bad.  And, you know: you get it down after a while.  Becomes sort of second nature.

So I start with the goatee, and it gradually fills out to a full beard.  By the time it gets shaggy, my moustache is in my mouth again and it’s back to the goatee.  It never really itches (except for the every 5 - 7 years thing), and it’s not particularly stiff, so I never bother conditioning it as my former boss did.  Oh, I shampoo it when I shampoo my hair, but conditioning?  That’s way above and beyond.  I’ve also never had any problems growing it.  I don’t have nearly as much hair on my head as I used to—my once-cool widow’s peak is now more of a Phil Collins sort of look—but the beard has always grown in nice and thick.

When I was younger, it was brown, with reddish highlights.  It got darker as I got older, nearly black ... and then it started to go gray.  First a salt-and-pepper look, then almost all white except for a black stripe down the center of my chin.  Yes, for a couple of years I was rocking the reverse-skunk look.  Now you can barely see any black at all.  No gray in my hair, but my beard is almost completely white now.  Hopefully it looks distinguished.

Our title today is from George Carlin’s famous poem about his hair.  (And where is the hair on a pear?  Nowhere, mon frère!)  Mr. Carlin always had a flair for language that I envied.  I’ll lean on him a bit to offer my final thoughts on the topic of beards.

Don’t be skeered,
It’s just a beard.

Sunday, August 25, 2013

Perl blog post #17


Well, it’s been about 2 months since I’ve done a technical post, so I decided to put one together for my Perl homies.  This one is on strong vs weak typing, so pop on over if that sounds like something that might excite you.  If it doesn’t, just take the week off.  Perhaps next week will thrill you more.

Sunday, August 18, 2013

Grokking the Wheel of Time


I’ve talked before about my affection for Robert Jordan’s Wheel of Time series—even mentioning that I named one of my children after one of its characters.  There are 15 books in the series, which I’ve always felt break up into a quadralogy of trilogies (despite the fact that the math on that really doesn’t work, but we’ll get to that in a second).  So it’s a very long series, both in page count (nearly 12,000 pages), and in terms of years of waiting for the series to be completed (nearly 23 years).  I personally have been reading it (off and on, obviously) for about 40% of my life, rereading the older books when the newer ones come out, poring through the online encyclopedia, listening to the audiobooks on long commutes, even fashioning a role-playing campaign around it once.

So it’s been a pretty big part of my life.  And the series is finally finished: the final volume came out at the beginning of this year.  The Wheel of Time outlives Jordan himself, but thankfully his extensive notes were passed on for completion to a new author, Brandon Sanderson, who was hand-picked by Jordan’s widow.  For some reason, after Jordan’s death, I took a break, and I haven’t read any of the Sanderson books (i.e. the final three in the series).  But, now that they’re all complete and I can finally see how it all comes out, I’m anxious to get through them.  After some consideration, I decided to start at the beginning and read straight through until the end.  But not with the paperbacks, although I own nearly all of them.  Nope, I decided to go audiobook for all the Jordan books (they’d all be rereads anyway, and in many cases several-times-over-rereads), then switch to e-book for the Sanderson volumes (so I can pay closer attention to the ones I’ve not read before).  As of writing this sentence, I’m about 3 hours away from finishing Knife of Dreams, the last Jordan book.  I’ll be starting on the first Sanderson book, The Gathering Storm, within the week.

It should go without saying at this point that I’m a fan.  Although that’s not to say that I recommend the books unconditionally: they do have flaws, and I’m keenly aware of them.  I’ve already talked about Jodran’s tendency to stifle his characters.  Also, Jordan never met a subplot he didn’t like: when he started off book #10 (that is, page 7,382 of the series, not even considering the prequel) by introducing a new character perspective, someone we’d heard of before but never seen in the flesh, in a country which none of the characters which could possibly be considered main characters had likely ever even visited ... well, that’s when I knew he had a problem.  No, Mr. Jordan* was not a perfect author ... but then who is?

There are also criticisms of Jordan that I disagree with.  One such persistent claim is that the series (or at the very least the first book, The Eye of the World) is a cheap imitation of The Lord of the Rings.  The typical defense of this is to bring up Jordan’s own words on the topic:

In the first chapters of The Eye of the World, I tried for a Tolkienesque feel without trying to copy Tolkien’s style, but that was by way of saying to the reader, okay, this is familiar, this is something you recognize, now let’s go where you haven’t been before. I like taking a familiar theme, something people think they know and know where it must be heading, then standing it on its ear or giving it a twist that subverts what you thought you knew.**


See? (say Jordan’s defenders) he wasn’t deliberately trying to steal LotR’s plot; he was, rather, making a conscious choice to borrow elements from it in order to make the reader feel more comfortable.  Totally different.

I have a completely different response to this argument: I just reject it.  How are they similar again?  In both cases, a mysterious magical figure comes to a sleepy backwater village and tells some simple country folk that they are now caught up in the ultimate fight against the personification of evil in their world.  Well, when you describe the plot from 50,000 feet, sure, they do sound a bit similar.  But that’s sort of like saying that Harry Potter is a rip-off of James and the Giant Peach because they both involve orphans raised by unpleasant family members who discover a strange, magical world living in the grim, dreary cracks of the real one.  Does The Eye of the World share broad themes with The Fellowship of the Ring?  Well of course.  All modern fantasy shares broad themes with Tolkien.  He invented modern fantasy.  It’s sort of like wondering if some modern detective in crime fiction bears any resemblance to C. Auguste Dupin—how could they not?

So I never bought the Tolkien-rip-off theory.  It’s crap.  Anyone who has the patience to get through the first book knows that this ain’t your daddy’s Tolkien.  And anyone who doesn’t isn’t particuarly qualified to comment: they’ve read less than 7% of the total story (again, not even counting the prequel).  Even Jordan’s quote above doesn’t much phase me.  I much prefer this one:

Question: I have noticed some similarities to The Lord of the Rings. Was Tolkien an inspiration for for you?
Jordan: I suppose to the degree that he inspires any fantasy writer in the English language, certainly.***


The other thing that Jordan is often criticized for is his pacing.  Yes, it’s true that he describes every little thing: the plants, the dresses, the architecture, the history, the shades of meaning of things translated from the Old Tongue, where the armies are getting their supplies from, how this servant used to serve that one’s mother many years ago, how much this character like his or her horse, etc etc ad infinitum.  Nothing wrong with that, per se.  Description immerses us more fully in the world.  It’s not Jordan’s fault if our minds being to wander while he’s painting us a perfect mental picture.  He built an entire world here, and he’s justifiably proud of it.  Besides, Tolkien was very fond of that too, as are many writers in the fantasy genre—not to mention sci-fi (e.g. Frank Herbert) and horror (e.g. Peter Straub).  He’s also accused of being verbose, which, again, is not a crime in and of itself: certainly Stephen King has been accused of that more than any other literary sin, and I’ve already mentioned that he’s my top literary idol.

No, all of these are just roundabout ways of saying that his pacing is too slow.  It takes forever for anything to happen in a Robert Jordan book.  Now, first of all, I don’t even consider that to be particularly problematic.  After all, Jordan’s pacing isn’t any worse than that of Ann Rice (who is fond of having the first ten and the last twenty-five pages happen in the present, while the thousand pages in between are one giant flashback, or the reading of someone’s diary, or somesuch).  And Ann Rice’s works are genius too (remember: another one of my children is named after one of her characers).  But, above and beyond that, I think the problem is just understandig the structure of the series.

Most fantasy series are trilogies, this being the pattern set by Tolkien.  Book 1: establish the characters and set up the action.  Book 2: create obstacles for the characters; allow the villains some victories, and end with the characters seemingly on the brink of defeat.  Book 3: the characters make a mighty comeback, mostly through sheer force of will, and the villains are defeated for once and for all.  This is a tried and true structure for trilogies—not only does the Lord of the Rings follow it, but so do many other fantasy series (e.g. His Dark Materials, the Riddle-Master trilogy, Drizzt Do’Urden, Bartimaeus, etc etc) as well as things as far flung as the first 3 Dune books, the original Star Wars movies, and the Millenium series.  Typically, if a series is longer than that, it’s either from adding prequels and side stories, or it’s from stretching out the various bits of the trilogy into multiple books.  For instance, if you tilt your head and squint just right, you could see Harry Potter as a triology: books 1 and 2 are Book 1, books 3 - 6 are Book 2, and book 7 is Book 3.

But there are series with more complex rhythms, and I’ve always felt that Wheel of Time was one such.  I think that you need to view WoT as a quadralogy of trilogies, with the addition of a prequel, and the fact that the final book in the final trilogy was so huge that it had to be split into 3 books (which gives you the total of 15).  The overall structure goes something like this:  Trilogy 1: introduction and establishment, and the characters begin to lose their innocence.  Trilogy 2: the characters make some strides, despite heavy opposition.  Trilogy 3: the villains get a lot more organized and dangerous, and the heroes start to discover their limitations.  Trilogy 4: well, I’m hopeful that this is where Good pulls it out in the end, but I haven’t actually finished reading yet, so I can’t say for sure.  But I’m pretty confident.

But within each trilogy, the structure is pretty much the same as a traditional trilogy: establish a situation, ratchet up the tension, and then an explosive finish.  However, what this means in the overall context of the series is that books 3, 6, and 9 (and presumbly the final book) are amazingly exciting, with each one being even more amazingly exciting than the previous one.  But that means that book 4 is a bit of a let-down.  And book 7 is a big let-down.  And book 10 is nearly unbearable.  But you have to pace yourself.  You have to remind yourself that Jordan couldn’t keep that level of excitement up for however many more books you have left to go: your head would just explode.  You need to come back down a bit, and then work at getting back up to those dizzying peaks slowly.  Book 3 makes you happy; book 4 makes you want to sigh.  Book 6 makes you want to laugh; book 7 makes you want to grumble.  Book 9 makes you want to cheer ... and book 10 makes you want to gnash your teeth and start tearing out your hair.  Yes, yes, all that info is important, and I’m sure I’ll need to know it as background for the future action, but, as Monty Python would say: GET ON WITH IT!

But my attitude is: forewarned is forearmed, and now that you understand how the rhythm and flow of the series is going to work, you can be prepared for it.  If you read this series, and you stick with it, you will be rewarded, I promise you.  The world is rich, and full of interesting cultures.  The politics is subtle, and intriguing, and full of factions (and sub-factions).  The magic is different, in both broad and fine ways.  The allusions (not just to Tolkien, but to Arthurian legend, Norse mythology, Samurai culture, and so forth) are rich and subtle.  The characters—even those you want to strangle for not waking up and seeing their own mistakes—are genuinely affecting, and you will come to care about them.  And, there are so many of them that, if there happen to be a few who rub you the wrong way, you won’t have to put up with them for very long before someone else’s point of view comes along.  The story is intricate, with seemingly throwaway minor characters popping back up, sometimes so subtly that you don’t even notice they’re the same person until you reread for the second or third time.  It’s the work of a master crafstman, and I wouldn’t have missed it for the world.

And I’m really really excited to see how it all turns out.


* Yes, I know that’s not actually his real name.  But I shan’t refer to Mark Twain as Mr. Clemens, and I shan’t refer to Lews Carroll as Mr. Dodgson, and likewise I shan’t refer to Robert Jordan as Mr. Rigney.

** from a June 2002 interview, preserved at Theoryland of the Wheel of Time

*** from an online chat on October 21, 1994, preserved at Theoryland of the Wheel of Time

Sunday, August 11, 2013

Yet another week off


Well, this has been a weird two weeks: a fantastic first couple weeks on a new job, coupled with The Mother‘s car being totalled by a drunk driver—while sitting empty on the street, happily.  (Not sure Facebook will let you see, but in case it does work: here‘s what the poor car looked like afterwards.)  So this week I’ve mostly been consumed with work, and shopping for a new car.  Granted, The Mother did most of the work on the latter, it being her vehicle that needs to be replaced.  But still, it hasn’t left a lot of time for contemplation of things such as blog post topics.  Still, I took a stab at it, but I only got a few hundred words in before other stuff distracted me.  So you’ll have to wait until next week to see that.  Try to contain your disappointment.

Sunday, August 4, 2013

Cynical Romanticism


Many of my friends seem to think I’m a pessimist.  They’re then quite surprised when I seem to display some trait of stunning (and often naive) optimism.  The truth is that I’m not a pessimist; nor do I have moments where I transition to being an optimist.  I am, in fact, a cynic.  But I’m also a romantic.

I’ve mentioned this dichotomy of mine before (more than once, even).  What does it really mean though?  To understand, it’s useful to examine the roots of both terms.

Cynicism is actually an ancient Greek philosophy.  You remember the story of Diogenes, don’t you?  (Of course you don’t—I shouldn’t either, really, but my mother had an odd idea of what constituted a well-rounded education.)  Anyway, Diogenes was the guy who lived in a bathtub on the streets of Athens.  He carried around a lamp in the daytime, waiting for someone to ask him why.  When they did, he would reply that he was looking for an honest man.  The Cynics were sort of proto-hippies, living “in accord with Nature” and eschewing things like wealth and fame as non-natural.  It wasn’t enough to reject these things, though: a Cynic was required to practice shamelessness (sometimes translated as “impudence”), by which they meant that they should deface laws and social conventions.  So they were sort of in-your-face hippies.

You can vaguely draw the connection from this attitude of telling everyone that they were fools for letting things like greed and conformity take them further and further away from the natural state of living and the ultimate meaning that cynicism has today: the belief that people as a whole are vain, gullible, avaricious, and generally not that bright.  Steve Jobs once said:

I’m an optimist in the sense that I believe humans are noble and honorable, and some of them are really smart.  I have a very optimistic view of individuals.  As individuals, people are inherently good.  I have a somewhat more pessimistic view of people in groups.


Although I’ve always preffered the version from Men in Black:

J: People are smart.  They can handle it.
K: A person is smart.  People are dumb, panicky, dangerous animals, and you know it.


J has no answer to this, of course: he is a New York City policeman.  He does know it.

When I was young, I did the required stint in fast food.  My particular greasepit was Burger King.  I worked there when chicken tenders were introduced, and I lived through the “Where’s Herb?” campaign.  Part of this campaign was to get a particular burger for a dollar by mentioning the fictional Herb’s name.  During this period, I saw innumerable people in Burger King ordering a “Herb burger.”  Yes, that’s right: they had absolutely no idea what they were ordering—just that it was cheap.  I am fond of telling people that we could have served them a shit sandwich and they’d have been happy as long as they thought they were getting a bargain.  I’m also fond of telling people that Burger King is where I first began to lose my faith in humanity.  Looking back, I’m not sure that’s entirely true, but I can’t deny that ol’ Herb played a large role in pushing me down that road.  Certainly it’s the place where I learned to appreciate H. L. Mencken’s observation that nobody ever went broke underestimating the intelligence of the common man,* and surely Mencken is a big a cynic as Twain or Voltaire, two of my most cherished quotemeisters.

So do I have, as Wikipedia puts it, a “general lack of faith or hope in the human race”?  Yeah, pretty much.  My experience with politics, business, financial institutions, organized religion, and even smaller coteries of humanity such as neighborhood homeowner’s associations or Internet forum denizens tells me that, if you expect the worst from people, you’ll rarely be disappointed, and occasionally you get a pleasant surprise.  Which is much better than the inverse: expecting the best yields constant disappointment and the occasional situation where your expectations are merely met.  Thus, I’m entirely comfortable with being considered a cynic, even though I don’t think that’s the same as being a pessimist.  I’m happy enough to consider the glass half-full ... I just remain convinced that there’s every likelihood that someone else will come along and drain the glass before I get any.

Romanticism is also tied to nature: it was in some ways a revolt against the rationality of the Enlightenment, a way of stressing that one should go out into untamed Nature and stop trying to analyze it and categorize and just feel it.  Romanticism was a validation of strong emotion—be it wonder, awe, passion, or even horror.  Especially for Art.  As one early Romantic German painter put it, “the artist’s feeling is his law.”  This was a movement of rejecting rules, particularly rules about Art, and it led to the Gothic horror tale and luminaries such as Edgar Allen Poe ... it’s certainly no wonder that I would experience a feeling of kinship towards it.

“Romantic” as a term implying love came later.  Even before Romanticism, “romance” was a term that referred to knights and heroic quests: Shakespeare’s The Tempest was considered a romance.  From knights to chivalry, and rescuing damsels in distress, plus Romanticism’s emphasis on strong emotions (such as passion), we eventually came to think of “romance” as primarily a love story, which today leaves us with Harlequin and Titanic.  Sort of a step down from Romanticism, if you think about it.  Not that there’s anything wrong with romantic love, of course: just that love is only one small part of Romanticism.

As a would-be-writer who idolizes Steven King (among others), how could I not be attracted to the movement that gave us Poe?  Certainly there is no King (nor Straub, Koontz, Barker or Gaiman) without Poe.  This is a movement that also (albeit more indirectly) gave us Robert Browning, who I quoted in my deconstruction of one of my all-time favorite quotes, and who also inspired King’s Dark Tower series.  Like Cynicism, Romanticism was a rejection of rules, and especially the “rules” of conforming to a polite society.  Throw off the chains of conformity, they both proclaim.  Be an individual.

And that’s the heart of my outlook.  Note how both Jobs and Tommy Lee Jones laud the individual person.  And we don’t have to look far to hear more famous people doing so.  Margaret Mead once said:

Never believe that a few caring people can’t change the world.  For indeed that’s all who ever have.


How can you not take inspiration from thatPearl S. Buck said:

The young do not know enough to be prudent, and therefore they attempt the impossible—and achieve it, generation after generation.


So I believe that, despite the fact that humanity in general is close to useless, every individual human has a potential for greatness.  I believe that the universe works hard to put me in good places, and succeeds a surprising percentage of the time, even when the formless churning rat race of mankind is working hard to push in the opposite direction.  I won’t say I’m an optimist—the glass may indeed be half-empty.  But somewhere out there is a person who’s willing to refill it for me.  If I’m fortunate, and if I really need it, I’ll meet them.

This is not a philosophy so much as an outlook.  If you ask me about my philosophy, I’ll go back balance and paradox.  But that theory is how I attempt to make sense of the world when it doesn’t seem to want to make sense on its own.  That’s different from how I approach the world, and what I expect out of it.  When it comes to that, I don’t expect much out of people, but I will never give up my idealism.  The world doesn’t owe me anything, and I wouldn’t expect to receive payment if it did.  But I continue to believe that the universe is a decent enough place, and that there will always enough light to balance the dark, and that what you give out will surely come back to you.  In the end, Good will always triumph over Evil, even if Evil usually gets more votes (and always has better financial backing).

So I suppose it’s a bit like Mel Brooks says in The Twelve Chairs:

Hope for the best.  Expect the worst.
Life is a play.  We’re unrehearsed.


Although I would favor the formulation of Benjamin Disraeli:

I am prepared for the worst, but hope for the best.


Because I’m not a Romantic Cynic, after all: I’m a Cynical Romantic.  I may start with dread, but I always try to end on a note of hope.



__________

* Technically, what he said was: “No one in this world, so far as I know—and I have searched the record for years, and employed agents to help me—has ever lost money by underestimating the intelligence of the great masses of the plain people.”










Sunday, July 28, 2013

Technical Debt Strategies


For a new role I’m starting at work, I’ve been thinking about the concept that we in the software development business refer to as “techincal debt.”

In software development, there is always a tension between two opposing forces: the desire to do it fast, and the desire to do it right.  I could probably write an entire blog post on just that topic, but for now I’ll settle for the short version.  If you do it right, then, later, when you want to extend it, or modify it, or use it as a jumping off point for branching out in a whole new direction (and you will always want to do these things eventually, if your software lives long enough), you can do so easily, with a solid foundation as a base.  The downside is that it will take longer.  If you do it fast, you get results faster, which means you can serve a customer’s needs before they change, fill a window of opportunity before it closes, or perhaps even beat your competitors to the market with your offering.  But when you have to modify it later (which you will), it will end up taking even more time to clean things up than if you’d just done it right in the first place.

You can see why we often call this “technical debt.”  You’re saving time now, but you’ll have to “pay it back” later, and the amount of extra time it takes is like the interest.  Primarily, we software people invented this analogy because it makes good sense to business people.  When you’re running a business, sometimes you need a piece of equipment.  You have two choices: you can borrow some money and buy it now, or you can save up and purchase it outright, later.  Buying it now allows you use it now, thus saving you costs somewhere else or giving you new capabilities you can capitalize on.  But you’re going to have to pay for it eventually, and you’ll have to pay the interest too.  Buying it later saves money in the long run, but denies you the advantages of the equipment for however long it takes to save up enough money.

This analogy really works because, despite what some people tend to believe, neither choice is always right or always wrong.  Sometimes it makes sense to borrow the money and buy it now; sometimes it makes sense to wait.  Likewise with software, sometimes it makes sense to just get the damn thing programmed as quickly as possible, and sometimes it makes sense to take the time and do it right the first time.  And business people have to make that call, and expressing the choice in financial terms makes it easy for them to understand the trade-offs.

For instance, when a company is first starting up, “do it fast” is nearly always the right answer.  (David Golden has a great post which explores this in greater detail.)  Basically, there’s no point in worrying about how hard it will be to change your software tomorrow when you’re not even sure there’s going to be a tomorrow.  Once a company leaves the startup phase, though, it’s time to think about paying down some of that technical debt.  If it doesn’t, the lack of agility means it may not be able to respond to customer demands quickly enough to thrive in the marketplace.

Now, technical debt is in many ways unique to every individual company, and there’s no one technique or approach that will work for everyone.  But everyone faces the same basic problem: I need my development team to keep making new features while they’re also paying off this debt; how can I have them accomplish even more than they were doing before without burning out, or creating new problems as fast as they fix the existing ones?  Hiring more people helps, of course, but it isn’t the complete solution.  But there are some general strategies that will work, and can be used by nearly every company that finds itself in the position of having a fair amount of technical debt to pay off.  These five areas nearly always need some attention, and they’re excellent things to think about when looking for ways to make your programmers more efficient, which not only gives them time to work on refactoring messy areas of your codebase, but also gives them more time and confidence to avoid creating technical debt in the first place.

Unit Tests  Few companies have no unit tests, but few have enough either.  I’ve heard people worry about creating too many unit tests, but honestly this is like your average American worrying about eating too many vegetables: I suppose it’s technically possible, but it’s unlikely to be a problem you’ll ever face.  It is possible for your unit tests to be too messy, though.  Remember: your unit tests are supposed to give you confidence.  The confidence you need to get in there and clean up some of that technical debt without being afraid you’re going to break something.  But your tests can’t give you confidence unless you’re confident in your tests.

Now, many people will tell you that you should put as much time and effort into your tests as you do your code (this is often—but not always—what people mean when they say “tests are code”).  I don’t necessarily agree with this.  I think that all the effort you put into your unit tests should go towards making your unit tests effortless.  I think your code should be elegant and concise: you don’t want it too simple, because it’s a short hop from “simple” to “simplistic.”  Imagine the Dr. Suess version of War and Peace and how hard that would be to get through—that’s what I’m talking about.  You need to use appropriate levels of abstraction, and using too few can be as bad as using too many.  You have to strike a balance.

On the other hand, your tests should be simple.  Very simple.  The simpler they are, the more likely your developers are to write them, and that’s crucial.  Whether you’re using TDD or not (but especially if you’re not), devs don’t particularly like writing tests, and anything that gives them an excuse not to is undesireable.  You want your tests to read like baby code, because that way not only will people not have to expend any brainpower to write new tests, but reading them (and therefore maintaining them) becomes trivial.  This doesn’t work as well for your code because of the crucial difference between code and tests:  Code often needs to be refactored, modified, and extended.  Tests rarely do—you just add new ones.  The only times you modify tests is when they start failing because of a feature change (as opposed to because you created a bug), and in many cases you’re just going to eliminate that test.  And the only times you should be refactoring them is when you’re working on making them even simpler than they already are.

So, in addition to trying to extend your test coverage to the point where refactoring becomes feasible, you should probably work on creating underlying structures to make writing new tests simple, and to make reading existing tests even easier.

Code Reviews  There are still plenty of companies out there not doing this one at all, so, if you fall in that category, you know where to start.  But even if you’re already doing them, you could probably be doing them more efficiently.  Code reviews are tough to implement well, and it has as much to do with the process you implement as with the software you choose to utilize.  Of course, it has a lot to do with the software you choose to utilize.  Code reviews, like unit tests, need to be simple to do, or people will find excuses not to do them.  Good software can really help with that.

Hopefully, like unit testing, code reviews are something that you don’t really need to be convinced that you should be doing.  But more people are resistant to code reviews than any other practice mentioned here.  They absolutely do require an investment of time and effort, and they absolutely do mean that you will deliver some features more slowly than you could without them.  Of course, if that extra time and effort catches a crucial customer-facing bug, you won’t be complaining.

But, honestly, catching bugs is not the primary benefit of code reviews ... that’s just the icing on the cake.  Code reviews just produce better software.  They’re the time and place where one developer on your team says to another: “hey, you know you could have used our new library here, right?”  (To which the response is inevitably: “we have a new libary?”)  They’re fantastic for cross-training too: don’t think code has to be reviewed by someone who already knows that code.  Have it reviewed by someone who’s never seen the code before and they’ll learn something.  Have your junior people reviewed by your senior people, and have your senior people reviewed by your junior people: they’ll all learn something.  It makes your codebase more consistent and builds a team dynamic.  It diffuses business knowledge and discourages silo effects.  If it happens to catch a bug now and then ... that’s just gravy.

Once you have code reviews in place, though, you’ll probably still want to tweak the process to fit your particular organization.  If you require reviews to be complete before code can be deployed, then code reviews are a blocking process, which comes with its own hassles.  Then again, if you allow deployment with reviews still outstanding, then you risk making the review process completely ineffectual.  So there’s always work to be done here.

Code Deployment  I suppose there are still software folks out there for whom “deploy” means “create a new shrink-wrap package,” but more and more it means “push to the website.”  At one company I worked at, deployment was a two-hour affair, which had to be babysat the entire time in case some step failed, and, if a critical bug was discovered post-launch, rolling back was even more difficult.  From talking with developers at other companies, I don’t believe this was an exception.

If your organization is big enough to have a person whose entire job is dedicated to deployment (typically called a “release manager”), then you don’t have to worry about this as much.  If that two hours is being spent at the end of a long day of preparation by one of your top developers, you’ve got some room for improvement.  But even if you have a seprate release manager, think how much you have to gain as your deployment gets shorter and simpler and more automated.  You can release more often, first of all, and that’s always a good thing.  And there are simple strategies for making rolling back a release almost trivial, and that’s absolutely a good thing.

Now, I’ve never been a fan of “continuous deployment” (by which I mean deployment happening automatically, triggered by checking in code or merging it).  But I do believe that you should strive for being able to deploy at any time, even mere minutes after you just finished deploying.  Part of achieving this goal is reaching continuous integration, which I am a fan of.  Having those unit tests you worked on so hard being run automatically, all the time, is a fantastic thing, which can free your developers from the tedious chore of doing it manually.  Plus, continuous integration, unlike code reviews, really does catch bugs on a regular basis.

Configuration Management  Similar to deployment, and for the same reasons.  If building a new production server is a heinous chore, you’re not going to want to do it often, and that’s bad.  Horizontal scaling is the simplest way to respond to spikes in traffic, and you should be able to bring a new server online practically at the drop of a hat.  It should be completely automated, involve minimal work from your sysadmins, and zero work from your developers.  There are all kinds of tools out there to help with this—Puppet, Chef, etc—and you should be using one.  Using virts goes a long way towards achieving this goal too.

For that matter, it should be trivial to bring up a new development server, or a new QA server.  Once that ceases to be a big deal, you’ll find all sorts of new avenues opening up.  Your developers and/or your QA engineers will start thinking of all sorts of new testing (particularly performance or scalability testing) that they’d never even considered before.  Figuring out how to handle database environments for arbitrary new servers can be a challenge for some shops, but it’s a challenge worth solving.

For Perl in particular, you also need to be able to reproduce environments.  You can’t spin up a new production web server alongside your existing ones if it’s going to be different than the rest.  If your server build process involves cloning a master virt, you don’t have to worry about this.  If you’re rebuilding a server by reinstalling Perl modules, you must expect that CPAN will have changed since you last built production servers, because CPAN is always changing.  For this reason, a tool like Pinto (or Carton, or CPAN::Mini, or something) is essential.

Version Control  In this day and age, I doubt seriously I need to convince anyone that they should start using version control ... although one does hear horror stories.  More likely though, you should be thinking about what VCS you’re using.  If you’re using CVS, you should probably be using Subversion, and, if you’re using Subversion, you should probably be using Git.  But along with thinking about which software to use and how to switch to a better one (preferably without losing all that great history you’ve built up), you also need to be thinking about how you’re using your VCS.

Are you using branches?  Should you be?  If you’re not, is it only because of the particular VCS you’re using?  If you’re using CVS or Subversion and telling me branching is a terrible idea, I can understand your point of view, but that doesn’t mean you shouldn’t be using branches—it just means you should probably be using Git.  Now, granted, branches aren’t always the right answer.  But they’re often the right answer, and they allow experimentation by developers in a way that fosters innovation and efficiency.  But it takes work.  You have to come up with a way to use branches effectively, and not just your core developers should agree.  If you have separate front-end developers, for instance, they’re going to be impacted.  If you have a separate QA department, they’re definitely going to be impacted—in fact, they can often benefit the most from a good branching strategy.  Your sysadmins, or your ops team (or both), may also be affected.  If you’ve tried branches before and they didn’t work, maybe it wasn’t branching in general that’s to blame, and maybe it wasn’t even the particular VCS ... maybe it was the strategy you chose.  Feature branches, ticket branches, developer branches—again, there’s no one right answer.  Different strategies will work for different organizations.


So these are some of the things you need to be considering as you look to reduce your technical debt.  None of these things address the debt directly, of course.  But, in my experience, they all play a part in streamlining a development team by increasing efficiency and cohesiveness.  And that’s what you really need in order to start paying down that debt.

Sunday, July 21, 2013

Restoration of balance: anticipated


Once again I’m going to forego my usual blog post, this time because I don’t really have anything to say I haven’t said before.  About a year and a half ago, I posted a rather long, rambling musing on the topic of fate.  This week I’m reminded of that posting, in a very positive way.  I continue to believe that everything happens for a reason, and even things that seem to be bad at the time can often lead to a better outcome than expected (or hoped).  Not always, of course.  But the universe has a way of tempering the bad with the good in such a way that makes it difficult not to believe that there is an ordered plan.  My current plan is still ongoing, so I can’t guarantee it’ll end up where I think it will.  But, so far, my faith in the universe is back on track, and aiming at a destination that I’m currently pretty excited about.

Until next week.

Sunday, July 14, 2013

Guides: Marion Burden


[I wrote this earlier this week, for my family.  I’ve decided to post it here as a part of my series about people who have had a great impact on my life.  You may wish to read the introduction to the series.]

For me, as a child, “family dinner” meant the mid-day meal on Sundays, with my grandparents on my father’s side.  Oh, we had dinners with my maternal grandparents as well, sometimes, but it was more infrequent, and more ... reserved.  Not as much fun.  And, once or twice a year, we’d go to family reunions, which were huge, sprawling affairs, with more relatives than I could keep track of.  My paternal grandmother had a very large family, and most of her brothers and sisters had decent-sized families themselves, and it made for quite a lot of “cousins” to keep up with.  Except they weren’t technically my cousins ... they were my dad’s cousins, or in some cases my second cousins.

My dad’s family was smaller, more intimate.  Dad has just one brother, and no sisters.  At first I was the only kid.  Then I had one cousin, then two cousins, and then two cousins and a little brother.  And that was as big as our family dinners ever got: grandmother and grandfather, mother and father, aunt and uncle, two cousins and a sibling.  We had a lot of family dinners—big dinners at Easter or Thanksgiving or Christmas, little dinners on your average ordinary Sunday—and I ate a lot of food at my grandmother’s table.  There were certain things that were very predictable at these dinners.  My grandmother would burn the biscuits.  Us kids would start eating before everyone was at the table, and we’d get yelled at.  There would be a minimum of one dish containing potatoes: boiled potatoes, mashed potatoes, or potato salad, and possibly two of the three, and, for a big dinner, probably all three.  There would always be homemade biscuits for everyone else, and canned biscuits because my uncle Jimmy and I liked those better.  And, if it was a holiday, there would be some sort of lime green Jello concoction, with whipped cream and unidentifiable chunks floating in it, and my aunt Marion would say “You know what that looks like, don’t you?”  And us kids would giggle, and my grandmother would sniff disapprovingly, but then she’d say that she only ever made the stuff just so Marion would get to deliver that line.

My grandmother and grandfather are both gone now, but all the rest of us are still here ... or at least we were, until a few days ago.  That’s when I got the word that my aunt Marion had passed away.  She’d been sick for a while now, so it wasn’t really a surprise.  Not that that helps.  When your family members die after a long illness, people will tell you that at least they’re not suffering any more, and when they die suddenly, people will say at least they didn’t suffer, but none of that really makes a dent in how you feel.  There’s a sense that you have of a person, regardless of how often you see them: it might be a large looming presence, or it might be just a comfortable feeling tucked away in the back of your mind, like the keepsakes you have up in your attic—you don’t take them out and look at them very often, but you’re comforted just knowing they’re there.  Then, one day, that sense is gone ... the loss might be overwhelming, or it might be like an itch you can’t quite reach, or it might be anywhere in between, but it’s always very sharp.  It cuts.  And it’s hard to adjust to.

I haven’t seen my aunt Marion for many years.  But I remember many things about her.  Some are superficial: her boundless capacity for the color red, and her endless delight in Snoopy, for instance, are things that everyone who knew her even slightly remembers.  Some are not even very well connected with her as a person: for instance, my earliest remembrances of my aunt and uncle are probably going out to their house, which was way outside town, and playing with their electric organ.  I don’t specifically see Aunt Marion in these memories, but the organ made quite an impression on me, as I was very young and it was very cool.

I remember giant stuffed Snoopies, and I remember elaborate piled hair-do’s, and I remember her candy-making business, with the rainbow assortments of white chocolate and the candy molds and she even made her own peanut butter cups, and that was pretty cool no matter how old you were.  And I remember lots and lots of family dinners.  I remember her bringing over my cousin Chris for the first time, and I remember her bringing over my cousin Cathy for the first time.  I remember that she laughed the loudest, and the easiest, and the most often.  I remember her giving us silly Christmas gifts, like bad cologne, just because she knew that my brother and I loved to say “Brut: by Faberge” in our best Eddie Murphy voice, and I guess she liked hearing us say it.

What I remember most about her, though, was her strength.  My Aunt Marion said what was on her mind, and she said it straight, and she didn’t care who heard her.  She was the only person in our family who did that.  My mother’s family was polite to the point of obsession; my father’s, more plain-spoken, but still proper.  But Aunt Marion went beyond plain-spoken and into what was to me a strange new world of honesty and forthrightness.  She came into a room like a whirlwind, dominated a conversation without monopolizing it, was brazen without crossing the line into shocking.  Well, I’m sure she crossed some people’s lines.  There were probably people who considered her rude.  There were probably those who were secretly jealous of her apathy towards what others thought of her.  I just thought she was cool, and, the older I got, the cooler she was.

So today I’m missing my aunt, even though I hadn’t spoken to her in forever.  Even though those family dinners are long gone, they remain fresh in my mind.  Even though I haven’t seen my cousins in years, my thoughts are with them, because they’ve lost their mother, and even though I haven’t talked to my uncle for just as long, my thoughts are with him, because he’s lost his soulmate.  My loss compared to theirs is very small, but I still feel it.  I’m going to miss my loud, crazy Aunt Marion because, in many ways, she was the best of us.  And that’s always worth celebrating.