• 0 Posts
  • 18 Comments
Joined 5 months ago
cake
Cake day: January 22nd, 2024

help-circle
  • UTC exists as a historical compromise because the British felt that GMT was the bees knees and the French felt differently. The letter order is most definitely a compromise between French and English word order. You can call it Universal Time Coordinaire.

    Historically, GMT became the international time reference point because the Greenwich observatory used to be the leader in the field of accurately measuring time. It probably helped that the British navy had been dominant earlier and lots of countries around the world and across time zones had been colonised by the British.

    UTC is an international standard for measuring time, based on both satellite data about the position and orientation of the earth and atomic clocks, whereas GMT is a time zone. Nowadays, GMT is based on UTC not independent telescopic observation.

    What’s the difference? You can think of a time zone as an offset from UTC, in the same sense that a 24h clock time is an offset from midnight. GMT = UTC+0.

    Technically, UTC isn’t a valid time zone any more than “midnight” is a valid 24h clock time. UTC+0 is a time zone and UTC isn’t in a similar sense that 00:00 is a time in 24hr clock and “midnight” isn’t.

    Of course, and perfectly naturally, I can use midnight and 00:00 interchangeably and everyone will understand, and I can use UTC and UTC+0 interchangeably and few people care, but GMT = UTC+0 feels like the +0 is doing nothing to most eyes.

    Fun fact: satellite data is very accurate and can track the UTC meridian independently from the tectonic plate on which the Greenwich observatory stands. The UTC meridian will drift slowly across England as the plates shift. Also, the place in the stars that Greenwich was measuring was of by a bit, because they couldn’t have accounted for the effect of the terrain on the gravitational field, so the UTC meridian was placed several tens of metres (over 200’) away from the Greenwich prime meridian. I suspect that there was a lot more international politics than measurement in that decision, and also in making the technical distinction between UTC and GMT, but I’m British, so you should take that with a pinch of salt.


  • The problem isn’t having empty values, it’s not tracking that in the type system, so the programmer and the compiler don’t have any information about whether a value can be null or not and the programmer has to figure it out by hand. In a complex program that’s essentially completely impossible. The innocently created bomb that causes your program to crash can be in absolutely any value.

    There are ways to track it all by disallowing null and using optional values instead, but some folks would rather stick with type systems that haven’t moved on since the 1960s.


  • In a discussion about whether null should exist at all, and what might be better, saying that Optional values aren’t available in languages with type systems that haven’t moved on since the 1960s isn’t a strong point in my view.

    The key point is that if your type system genuinely knows reliably whether something has a value or not, then your compiler can prevent every single runtime null exception from occurring by making sure it’s handled at some stage and tracking it for you until it is.

    The problem with null is that it is pervasive - any value can be null, and you can check for it and handle it, but other parts of your code can’t tell whether that value can or can’t be null. Tracking potential nulls is in the memory of the programmer instead of deduced by the compiler, and checking for nulls everywhere is tedious and slow, so no one does that. Hence null bugs are everywhere.

    Tony Hoare, an otherwise brilliant computer scientist, called it his billion dollar mistake a decade or two ago.


  • Well, UTC didn’t exist in 1800, it would have been GMT, and that might not have been too popular so soon after the war of independence. Even if you convinced all of the USA to use one time zone for the railways, it would be different elsewhere and you’d still get time zones.

    Maybe you’d get further with the project with the airlines in the first half of the twentieth century, but I’m not sure that that level of internationalism would have gone down well in a rather war torn world.




  • But I’m scared of Monad transformers and lenses. Can’t I just use elm? Elm is so perfect, so pure, so very very pure. And so pretty. And so robust. And so instantaneous to compile, and with such helpful error messages. Come to me, haskell programmer, you’ll never want to leave. Never leave… Always elm… Lovely lovely elm…