14 votes

Thoughts on lifetimes, limits and tolerances

The following is an observation that may be obvious to some, but which I didn't fully realize the extent of until recently.

Everything has a lifetime. If you grok this, you are able to reason about everything a lot more efficiently. At work, in life, everywhere. I initially started thinking about this in the realm of software engineering, but this is a universally-applicable observation.

In code, it's useful to think about operational lifetimes: How long will each operation take? How long should it take? When should it time out? We often call these "TTL" or "time to live". If you request some data from https://example.com/data.json, and it does not answer within the designated TTL (of your choice), you proceed to a failsafe.

Not employing TTLs is often the root cause of issues in fault-sensitive designs. Connections piling up, stuck UIs on spotty connections, etc.

Then there is the concept of "data lifetime". That is often controlled not by time but by size, for example how many items can be present in a bucket, or how large overall the bucket can be, or both. You may have seen this in your various trash folders on desktop, email clients etc: "Delete items after x days", "Limit bin size to 1 GiB".
Once again, not putting a lifetime in place is the root cause of many issues such as memory leaks, UIs becoming less and less responsive over time, unusable software that doesn't test for edge cases ("what do you mean you have 1200 tabs open in Chrome?"), and so on.

Setting the lifetime on something is a type of contract. By determining an "edge", you are now able to test "edge cases". By saying "You can have up to 1 million items in this folder", you're also saying you have (or at least should have) tested the edge cases of 1 million items, and what happens when you hit the limit.

You see this in the physical world as well, you may recognize the concept as a tolerance, or a limit. "This elevator has been certified for up to 10 people, or 1000kg". It doesn't mean it won't work beyond that, but there is a contract of undefined behaviour when you exceed the limits.

What happens when you don't have limits?
Well, this article from the other day is an excellent example. The autobahn famously doesn't have speed limits. What did they expect?

What happens when you don't have lifetimes? Well, remember how Google is shutting down free legacy GSuite? They promised "free for life" accounts and had to back down after realizing the accumulated maintenance burden incurred by not putting a real lifetime on that promise.
Or the slightly famous $250,000 Unlimited Flight Pass.

I'll give you the example that changed the way I see the world: My first company's CEO told me the (unverified) story of how, in 2015, when Verizon was doing due diligence on AOL before acquiring it, the value of AOL was significantly reduced because of its "free minutes trial CDs" with no expiry date on them. Because of the lack of an expiry date on them, all those trial CDs would have to be honored, and thus were "debt". You couldn't wait them out. The acquisition price was thus much lower.

I apply this principle religiously in life, and try to understand the lifetime of everything I deal with. Especially things I purchase. You do it as well, maybe not consciously, but when you buy a phone and think "I want a phone that will last me at least 3 years", "at least 5 years", etc. You are giving the phone a lifetime, which allows you to divide its cost by the number of years you will keep it and think "by having a phone, I have to support a recurring cost of x dollars per year".

The recently-discussed article "Everything must be paid for twice (HN discussion)" touches upon the subject, though not as elegantly as I'd like it to. Indeed, thinking about lifetimes should force you to think about the "end of life" scenario, which touches upon questions of recycling for example. Efficient systems will handle end-of-life scenarios by reusing/recycling as much as possible, which allows for cost reduction. The reason you don't have to constantly purchase new hard drives is because you're allowed to delete things you no longer need, reusing existing space. But the hard drive itself has a lifetime, which is determined both by its usage (it won't last forever) as well as how useful it is (as storage becomes cheaper, storage requirements increase, following Braess's paradox, which means that 1GB hard drive that was once "more than you could ever need" is now utterly useless.

I invite you to think about these concepts everywhere, and see how relevant they are. Are you upset your latest appliance already broke down? Thinking of purchasing extended warranty on the next one? Wondering what you should buy in bulk? Are subscriptions better or worse than versioned software licenses? How long do you want to keep those photos around? Why did the restaurant across the street change ownership three times in the last two years? Do you think the Simpsons have had too many seasons? When are you gonna take down that christmas tree?

6 comments

  1. kfwyre
    Link
    I went through a similar realization when I started de-Googling. When I first got a Gmail account it felt like a forever action. Same with Google Drive. Google makes incredible products and were a...

    I went through a similar realization when I started de-Googling.

    When I first got a Gmail account it felt like a forever action. Same with Google Drive. Google makes incredible products and were a world leader in a booming industry, so my eggs felt like they were in a very safe basket. I remember setting up a kill switch of sorts that would delete my account if I didn’t log in for an extended period of time (something like two years?). I figured if that happened it was because my account had outlived me. ‘Til death do us part.

    Of course, I don’t have to tell anyone here about Google’s propensity to kill off their own offerings, and I also don’t have to tell anyone about Google’s increasingly heavy-handed use of surveillance and advertising. As my understanding of myself as a digital citizen changed, I realized that Google was not the “forever” home that I wanted and that — more importantly — there isn’t really a “forever” home for things, especially online, because change is so rapid.

    I moved over to Fastmail for my email and Tresorit for my cloud storage, both of which are great, but my view of them is very much that they’re good for now instead of good forever. If the need arises for me to jump ship from one or both in the future, I won’t hesitate to do so. They could conceivably last my lifetime, or I could end up churning through a dozen different providers in the decades to come. Who knows? Am I even going to be using email in 20 years?

    8 votes
  2. skybrian
    Link
    I'm not sure I quite understand what you mean, but on the subject of lifecycles in general, I think you might like How Buildings Learn by Stewart Brand. One of his points is that the different...

    I'm not sure I quite understand what you mean, but on the subject of lifecycles in general, I think you might like How Buildings Learn by Stewart Brand. One of his points is that the different systems in a house have different expected lifetimes.

    I don't think the "time to live" algorithm in computers is quite the right metaphor, though? This is setting a deadline in advance. But part of the point is that we can't know what we or other people will want in the future. There will be new requirements, but without knowing what they are, all we can do is make things easier to change later. Modularity sometimes helps. Keeping things simple helps. In some programming circles "You aren't gonna need it" is a slogan for people who prefer simple code to explicitly anticipating change.

    The nice thing about computers is that it's usually easy to either archive or delete stuff. However, to make this decision you still have to review it, and that takes time. I find it often doesn't happen until I buy a new computer or phone, and then I like to explicitly copy what I need rather than keeping things without looking at them.

    6 votes
  3. [4]
    Marian_Rejewski
    Link
    I think this is common sense and people just have psychological problems that block them from applying it. To acknowledge the lifetime is a form of accepting loss.

    I think this is common sense and people just have psychological problems that block them from applying it. To acknowledge the lifetime is a form of accepting loss.

    2 votes
    1. [3]
      Adys
      Link Parent
      I'm not sure how much common sense factors into it. In fact, intuitively, you often don't think of lifetimes. Aside from most people by default not thinking of their own death, they also don't...

      I'm not sure how much common sense factors into it. In fact, intuitively, you often don't think of lifetimes. Aside from most people by default not thinking of their own death, they also don't think about the lifetimes of things they believe will outlive them. From data, to civilization.

      2 votes
      1. [2]
        Marian_Rejewski
        Link Parent
        It's routine to think and talk about lifetimes of major purchases (houses, cars, appliances) where there is going to be some deliberation. In lower stakes situations people might not really think...

        It's routine to think and talk about lifetimes of major purchases (houses, cars, appliances) where there is going to be some deliberation. In lower stakes situations people might not really think at all. It's in higher stakes situations -- your life, your health and mobility, your relationships, your job or income level -- where it feels better living in an illusion of permanence.

        2 votes
        1. Adys
          Link Parent
          Yes of course. My point is that this generalises way beyond what most people think about on first pass :)

          Yes of course. My point is that this generalises way beyond what most people think about on first pass :)

          1 vote