News for hackers. Stuff that matters.
Re:Day.js Fast 2kB alternative to Moment.js with the same mo... by epgui on Sunday October 09, 2022 @03:18AM (#33138865)
Examples of essential complexity you have to worry about if you want your code to be correct, and even if you want to test/detect all issues that can/do come up:

- https://infiniteundo.com/post/25326999628/falsehoods-program...

- https://infiniteundo.com/post/25509354022/more-falsehoods-pr...

In my experience engineers will often brush these sorts of things off as “edge cases”, but really all of these complexities are just how dates and time work in the real life (I’d argue that they’re just “normal cases” to test for)… So any anomaly in software will cause real problems of varying importance for users.

Re:Day.js Fast 2kB alternative to Moment.js with the same mo... by TekMol on Sunday October 09, 2022 @03:39AM (#33138936)
This was the reply I was trying to prevent by saying "minimal code example".

I'm not interested in long theoretical articles. But I would look at 3 lines of code.

Re:Day.js Fast 2kB alternative to Moment.js with the same mo... by krainboltgreene on Sunday October 09, 2022 @03:58AM (#33138986)
You wouldn't. It's not a trade anyone is asking.
Re:Day.js Fast 2kB alternative to Moment.js with the same mo... by 0xCAP on Sunday October 09, 2022 @03:59AM (#33138987)
This is only you having super basic date needs, not Day.js being overkill in general.
Re:Day.js Fast 2kB alternative to Moment.js with the same mo... by TekMol on Sunday October 09, 2022 @04:42AM (#33139157)
Any system, no matter how complex, can be composed of smaller units that only have super basic needs.
Re:Day.js Fast 2kB alternative to Moment.js with the same mo... by 411111111111111 on Sunday October 09, 2022 @06:24AM (#33139666)
*if all complexity has been hidden from the developer which only needs to use a decent puplic API.

I'd agree that it feels like that quiet often as a web developer, but that's only because most of our APIs are actually quiet easy to use.

The illusion usually falls away if you look at the code of that API, however.

Re:Day.js Fast 2kB alternative to Moment.js with the same mo... by 9wzYQbTYsAIc on Sunday October 09, 2022 @04:01AM (#33138994)
> I'm not interested in long theoretical articles

Those articles are more empirical in nature than theoretical.

> This logs that an image with a given id was updated

As a thought exercise, imagine that your log trail needed to be created in a distributed system, spanning multiple machine time zones, or that you needed to build a report that is read from browsers in multiple time zones that differ from multiple differing written time zones, and you need to account for human readable things like knowing what day of the week it is and what some given locale calls that day.

If you are doing the equivalent of printf debugging with your times, maybe you likely don’t need a time library.

If you are using time as a central part of a distributed algorithm, web content, or a business workflow, then you may likely need a time library.

Re:Day.js Fast 2kB alternative to Moment.js with the same mo... by TekMol on Sunday October 09, 2022 @04:44AM (#33139168)
You are trying to convince me with the popular "This is not going to work for a much more complex system".

I heard it very often. I don't buy it. Any system, no matter how complex, can be composed of small, simple systems.

I never ran against a "complexity wall" when writing software in a lean way and suddenly thought "Damn, those tens of thousands of lines of library code now would be the better approach".

Re:Day.js Fast 2kB alternative to Moment.js with the same mo... by 9wzYQbTYsAIc on Sunday October 09, 2022 @05:37AM (#33139412)
More power to you if you have the budget to spend time writing code that someone else has already written.
Re:Day.js Fast 2kB alternative to Moment.js with the same mo... by maigret on Sunday October 09, 2022 @05:24AM (#33139355)
That’s very true. A colleague recently started using the same method and is achieving bundles and dependencies orders of magnitude smaller. As a result, he has to care less about security, build times and build breaks and spends more time coding. Developers have unlearned to build basic functionality apparently, especially in the front end area.
Re:Day.js Fast 2kB alternative to Moment.js with the same mo... by 9wzYQbTYsAIc on Sunday October 09, 2022 @05:43AM (#33139449)
It’s not really a question of unlearning, its more of a question of economics.

Sound software construction techniques are one thing, but convincing someone to pay you to reinvent the wheel is another.

Especially when you consider that budgets for new, bespoke brand websites can start as low as about a couple of days pay for a senior developer.

Re:Day.js Fast 2kB alternative to Moment.js with the same mo... by laundermaf on Sunday October 09, 2022 @04:02AM (#33138998)
I think you’re missing the point entirely. If Date has a method that does what you need, by all means use it directly.

Libraries come in handy when doing things that aren’t one liners.

A colleague thought it was super easy to change that exact ISO string to use the local timezone instead of UTC, against my advice. Guess what. The minus sign broke it and he would have never known because most customers are in the US, then they travel to Singapore and your product is worthless. By the time you hear about it, you lost the customer’s money and time therefore you lost the customer.

Moment and Luxon are too heavy, I agree, but date-fns isn’t.

Re:Day.js Fast 2kB alternative to Moment.js with the same mo... by foota on Sunday October 09, 2022 @04:44AM (#33139169)
Moment and friends shine when you need to display and interact with dates from a human perspective. Calendars, scheduled events, etc., all are hard to do without something like moment.
Re:Day.js Fast 2kB alternative to Moment.js with the same mo... by extheat on Sunday October 09, 2022 @03:27AM (#33138901)
I only see this being an issue storing times as strings. Why not store them as integers (like a Unix timestamp) or at least some standardized string format? The only reasonable use case I can think of where you absolutely need all this complexity is if you're rendering a calendar or something similar.
Re:Day.js Fast 2kB alternative to Moment.js with the same mo... by 9wzYQbTYsAIc on Sunday October 09, 2022 @03:45AM (#33138958)
There are countless, profitable business use cases for accurate time tracking.
Re:Day.js Fast 2kB alternative to Moment.js with the same mo... by ohbtvz on Sunday October 09, 2022 @08:41AM (#33140463)

    User: set an alarm in eight hours.
It's 10PM right now. At what time should the alarm be set? 6AM? Woops, tomorrow is the switch to DST! What now?

    User: remind me to brush my teeth on November 21st at 8AM.
Okay, will do! Wait, you took a plane on November 2nd and are now on the other side of the world? Should I remind you at 8AM or 5PM?

    User: please note my doctor's appointment next week at 10AM.
Sure thing bub! Wait, but you live in Morocco in 2019? And the government just announced that reverse DST will be in effect for the month of Ramadan?! WTF do I do now?

---

tl;dr It's not just an issue of storage.

Re:Day.js Fast 2kB alternative to Moment.js with the same mo... by jt2190 on Sunday October 09, 2022 @11:49AM (#33142340)
> What now?

I mean, there is no way to write code to “handle” this that isn’t just guessing on the part of the programmer. The correct thing to do is to prompt the user for verification or further information.

> There are requirements that we, as humans, will intuitively find the right interpretation for…

Interpretation is subject to error. (Yes humans have immensely more context to work with than computer programs, but just because we we’re better guessers doesn’t mean we’re not still guessing.)

Re:Day.js Fast 2kB alternative to Moment.js with the same mo... by maigret on Sunday October 09, 2022 @05:27AM (#33139371)
You can still add a library once it’s really needed and an area is proved to cause bugs. Most of the times though, developers will add them upfront “just in case”, making the bundles always heavier and thus harming the user experience with a slower UI.
Re:Day.js Fast 2kB alternative to Moment.js with the same mo... by epgui on Sunday October 09, 2022 @01:02PM (#33142999)
I’d argue that we already know how time works, so the proof exists up front and there is no “just in case”.

You could make an argument that there are more important things to fix, but then you’d be deciding consciously that it was okay to ship software known to be incorrect.

Re:Day.js Fast 2kB alternative to Moment.js with the same mo... by jwalton on Sunday October 09, 2022 @09:07AM (#33140629)
I posted about this elsewhere in the comments, but my experience with day.js is that if you're concerned with these kinds of corner cases, maybe day.js isn't the library for you.[1][2]

[1]: https://github.com/iamkun/dayjs/issues/1816

[2]: https://github.com/iamkun/dayjs/issues/1817