The viewer's "x years ago" info sucks ;-)

Tobias Leupold tl at stonemx.de
Wed Apr 12 12:27:11 BST 2023


Am Mittwoch, 12. April 2023, 06:22:07 CEST schrieb Per Funke:
> "1.83 y/m/d ago" is unconventional but attractive
> IMHO,
> Per Funke

Hmmm ... I think this would be too unconventional, especially facing the fact 
that a year is not divided into decimal units (it's 12 months after all, not 
10).

Any objections if I implement this in a way I would expect it to be (both for 
birthdays/ages and timespans) soonish and you all have a look at it then?

Cheers, Tobias

> On Wed, Apr 12, 2023 at 12:43 AM Johannes Zarl-Zierl
> <johannes at zarl-zierl.at>
> wrote:
> > Hi Tobias,
> > 
> > > - For easter 2022 (2022-04-17), I get "11 months ago"
> > > - For easter 2021 (2021-04-04), I get "2 years ago"
> > > - For easter 2020 (2020-04-12), I get "2 years ago"
> > > - For easter 2019 (2019-04-21), I get "3 years ago"
> > > 
> > > You see the problem?
> > 
> > Just as you guessed, this stems from the initial design of that code as a
> > means to display the age of a person. With birthdays, it totally makes
> > sense
> > to say "1 year old" when the person is 1 day from their second birthday.
> > 
> > > The longer the date is in the past, the more it's not about the date
> > 
> > being
> > 
> > > exactly one day after the date in question or not. Easter 2019 IS four
> > 
> > years
> > 
> > > ago, even if the photos have been taken on April 21, and now we only
> > > have
> > > April 9.
> > > 
> > > [...]
> > > 
> > > For durations that are less than e.g. 2 years ago, we should add exacter
> > > descriptions, like "1 year and 10 months ago". But as the distance
> > 
> > grows, we
> > 
> > > need to be more fuzzy. Like "Ca. 2 years ago", even if we are like one
> > > month off. We could also add some classification like "x 1/4", "x 1/2"
> > 
> > and
> > 
> > > "x 3/4", with proper ranges. And with added attributes like "Ca." and
> > > "Almost". Of course, we also need the "Exact" case, for some fixed date
> > > (like Christmas or such).
> > 
> > I have a hard time coming up with a scheme that expresses the colloquial
> > description that one might use. What I can say, though, is that I really
> > don't
> > like adding special cases for any specific dates like Christmas.
> > 
> > A quick and easy way would be to just use floating point numbers and say
> > things
> > like "1.83 years ago". This would avoid loss of information while still
> > being
> > somewhat intuitive to grasp, and it would work the same for 1 year as for
> > 100
> > years.
> > 
> > I would implement this as follows:
> > less than 1 month: X days ago
> > less than 1 year: X months ago
> > at least 1 year: X years ago
> > , where X has two decimal places.
> > 
> > > However, I think that the current state of how we do it is quite messy.
> > > Looking into Utilities/DescriptionUtil.cpp, multiple class definitions
> > 
> > and
> > 
> > > implementations are mixed inside one cpp file, the code is really hard
> > > to
> > > read (at least for me), and I think the classes used don't really fit
> > > for
> > > what I would do.
> > 
> > If one moves the relevant info from dateDifference into the AgeSpec class,
> > we
> > have all the necessary info there to implement this.
> > 
> > > I'm thinking of adding one more versatile "time interval" class that
> > 
> > either
> > 
> > > can return an exact difference, or a fuzzy one, depending for what we
> > 
> > want
> > 
> > > to use it. And there's as it seems only two cases: The age of some
> > > person
> > > in years, or a period of time that has passed since a photo has been
> > 
> > taken.
> > 
> > That is basically what the AgeSpec class does. The only problem with the
> > class
> > in its current state is that it lacks the exact time interval because the
> > information was discarded by the dateDifference() function. But that can
> > be
> > remedied...
> > 
> > Cheers,
> > 
> >   Johannes






More information about the KPhotoAlbum mailing list