Against the UUID

  • > A UUID is a collection of random characters like f81d4fae-7dec-11d0-a765-00a0c91e6bf6

    This statement is just wrong. More accurately, A UUID -can be- a 128 bit number made up of mostly random bits (UUIDv4) which can be represented as a string using a common representation. Sure, that may well be a common case for most, but there are very completely non-random UUID versions as well, such as UUIDv1 or, more recently, the somewhat random UUIDv7.

    The author's proposed ID system is less defensible against some of the other UUID versions which aren't addressed. But that initial description suggests that the author doesn't have a complete enough understanding of UUIDs to really make a credible case about UUID problems (which do exist) vs. their own proposed system.

  • This exceedingly uninformed rant makes more sense when you understand that the author has his own timestamp format he wants to push.

    Counterpoints:

    - UUID is not random characters, it's a 128 bit number and is stored as such in many databases. It can be presented as a hex-string with dash-separators, but it doesn't have to be.

    - There are several types of UUIDs. UUIDv4 is mostly just random bits. Others have time and machine numbering, like Snowflake IDs. UUIDv7 has a combination of time and randomness.

    - UUIDv7 was made to address the database index problem, rendering that point moot.

    Lots of tools understand and/or support UUIDs.

    You can complain about the overhead of storing and indexing 128 bit numbers if you want, but realize that a string like 2025_P5U5_326662 is likely also going to be stored as 128 bits. And the added value of having the year in front (the rest is not going to mean anything to the average user) is not that great.

  • Use UUIDv7 and be done with it. It solves your database indexing problem, too.

  • Part of the vision of the semantic web is that you can take random data from two random sources and load it into a SPARQL store and start writing queries, URI namespaces help, but if people use truly random identifiers it ‘just works’ and there is nothing paranoid about it.

  • I stopped using UUIDs a while ago and I'm happy with TSIDs[0]. Shorter, sortable and can add semantic meaning to ids.

    https://github.com/luismedel/tsid-python

  • I don't know how I really feel about having a Github Action that updates the Readme of the git repo in order to have a "somehow realtime Alphadec". So many commits, so many wasted resources :'(

  • [dead]