Why was there was no Keep the Joint Running last week? No, I hadn’t lost interest. www.issurvivor.com was in the throes of a major re-plumbing effort, and an unexpected glitch (is there any other kind?) delayed the cutover from dev to prod.

Like any sensible used-to-be-technical website owner, I had contracted out the work. And like any sensible parent, I contracted it out to one of my offspring — my daughter Kimberly, a budding contract developer who, like any offspring lacking sense when it comes to a parent, agreed to handle the job.

Along the way we learned (or, in many cases re-learned) a few things worth sharing:

  • Semi-technical users are more dangerous than non-technical ones.

Agile practitioners know to describe requirements in terms of “user stories.” I described my requirements functionally instead, because I knew how I wanted my website to behave.

Except that, of course, what I “knew” was constrained by what I knew, resulting in Kimberly having to engage in quite a bit of patient explanation.

Your semi-technical users undoubtedly drive similar needs for developer patience.

  • Free when you can; buy when you can’t; build when there’s no alternative. I’d expected Kimberly to start with a base WordPress template and add custom code from there. Kimberly, a talented developer, was nonetheless wiser than I. She bought the initial WordPress template and added free plug-ins to achieve what I needed.

Do your development teams embrace free?

GitHub and its brethren can jumpstart the development of all kinds of functionality. Sure there are risks. But ask yourself which is more time-consuming: Developing functionality from scratch, or analyzing someone else’s code for risks before using it.

  • Don’t mess with packaged software. When I didn’t like something about what the new site looked like or how it behaved, and it couldn’t be fixed using adjustable parameters, I often asked Kimberly to tweak the template’s php code. Kimberly reminded me that this would make the site unmaintainable … unless I’d be willing to pay her every time updates appear.

This is, of course, old news to all of us: When commercial software doesn’t do what your business needs it to do, what you don’t do to solve the problem is mess with the core code. I knew this. Knowing better didn’t stop me from suggesting it.

  • Never skip stress testing. For managing the archives, Kimberly tried 25 different plug-ins before finding one that didn’t crash from the sheer number and overall volume of my 21+ years of publishing a column a week.

Just because code works with your test data, that doesn’t mean it will work in production.

  • Don’t trust the cloud. It’s something we know but often won’t admit: Our important files all live on our personal hard drives as well as the cloud, just in case. Whether it’s Dropbox, OneNote, Google Drive, or your corporate SharePoint site, critical files can disappear, even without the magic of synchronization that can propagate deletions just as easily as they can make copies of new or changed files.

In our case, when the time came to deploy, Kimberly pressed my new web hosting service’s magic migrate twanger, only to watch her hard work disappear into bit heaven. She called tech support to ask them to restore from backup (they do back everything up) only to learn that the glitch that caused everything to disappear also caused the backup to disappear.

  • Figuring things out takes longer than developing what you’ve figured out. With no usable backup, Kimberly had to recreate her work from scratch. That took less than a day, because at that point she knew exactly what she needed to do.
  • Test after deployment, too. Just because Operations has a magic deploy twanger doesn’t mean it always works. In our case, once Kimberly got the site deployed it turned out the Search function returned the wrong results. The problem: A corrupted index. Easy to fix once detected.
  • Persistence matters most. This isn’t new more than all the rest isn’t new: Something going wrong isn’t a problem. Giving up when something goes wrong is a problem. It’s old advice: If you assume there’s a way to recover you might be wrong. But if you assume there’s no way to recover, you’ll certainly be right.

And finally … yes, in addition to being what I hope is a useful column, this is a thinly veiled ad for Kimberly’s web development services. I figure if the POTUS can promote his daughter’s line of clothing, I can certainly promote my daughter’s professional services.

Let me know if you’d like me to connect you.

Robert Fulghum described a scene involving his younger self, when his summer job was working at a resort. The pay was limited, but the position did include meals.

Which turned out to be franks and beans. For every meal. Meal after meal after meal, until he reached his breaking point and threw his plate across the room in a fit of pique.

Which was when a co-worker — a holocaust survivor — suggested, “Fulghum, you need to learn the difference between a problem and an inconvenience.”

Most of us do. As Randall Munroe — the creative genius behind XKCD, of whom I’m insanely jealous for so many reasons – once pointed out, “Our brains have just one scale, and we resize our experiences to fit.”

I don’t know about you, but I live in a world of constant irritation, and that was before the election. I need scaling strategies. One recalls my days as an apprentice evolutionary biologist.

So when the folks who run the building our condo is in have to shut off the water for a few hours, or my computer takes longer to boot than I’d like (anything longer than instantly is longer than I’d like), or a call from “Anonymous” interrupts my train of thought (okay, usually it’s my caboose of thought, but it’s the best I can manage even without interruptions) …

Faced with these outrages, I imagine myself explaining why this raises my blood pressure to dangerous levels to Ogg, my hunting companion who lives in the cave next door, but won’t be my neighbor much longer because on our last hunt he suffered a scratch that became gangrenous. Only we really don’t know anything about gangrene. Our diagnosis: “Arm turn green, hurt, and stink!”

Or when I’m stuck in a center seat, our flight is delayed because of the line at the de-icing station, and I just finished the last novel I really want to read on my Kindle and will now be forced to read a book that’s more a professional obligation than something I’m actually interested in …

I imagine complaining about this to my fellow clan members when it’s time to move on to the next hunting and gathering ground because we used this one up. Which means we each tie up everything worth carrying into a bundle we haul on our backs and trudge behind our elder, hoping he knows the right direction.

In my imagined migration, my fellow clan members are something less than sympathetic to my center seat plight.

It isn’t that we all live in a Panglossian wonderland, or should. This evening my wife and I will be attending the funeral of an acquaintance who suffered a massive heart attack. He leaves behind a wife and teen-age children. That he exceeded what was humanity’s average lifespan for most of our evolutionary history isn’t even remotely comforting to his family.

Although, evolution aside, knowing my dad made it to 90, passing away painlessly after living an amazing life, does put quite a cushion on my grief. While I miss him (and on three occasions while writing this wished I could consult him on a matter of word choice), I know I had a lot more of his time than many my age, and I had him lucid until the end besides.

“Old age ain’t for sissies,” Bette Davis once said, and while I refuse to admit “old age” applies to me just yet, I could only continue to claim middle-agedness by joining the post-factual revolution.

Accompanying my steadily increasing codgerliness is a boatload of galling indignities. My self-diagnosis: I suffer from MARD, which, in case you haven’t heard of it (as I just coined it you probably haven’t), stands for Minor Age-Related Disorders.

The specifics are none of your business, but collectively they annoy the daylights out of me. Okay, yes, chronic crabbiness is a MARD symptom, but it’s just a symptom. The root causes are the other MARD symptoms.

Recursion is, I guess, more than a data-design strategy. It’s a way of life all its own.

Most readers of this weekly missive make their living toiling in the fields of information technology. While bending digital devices to our will does provide some unique satisfactions, there’s no question our trade is accompanied by no shortage of crankiness-inducing situations. But only if we let them.

So I’ll leave you with something my wife and I have started to say, to each other and to friends whenever complaining about something that doesn’t pass the evolution test starts to dominate a conversation:

If this is the biggest problem we have, we have a great life.

* * *

Well, that about wraps it up for 2016. Enjoy the holidays. We’ll resume our weekly chats in January.