27 comments

  • ricardobeat54 minutes ago
    This is a misunderstanding of the purpose of UUIDv7. The whole point is to keep rows physically close, so you can very quickly extract an entire time range from a number of database shards, with minimal reads and compute. And be able to generate them without a centralized server. That&#x27;s all there was to it, and something you&#x27;d only worry about when serving billions of records every hour.<p>They are also <i>not</i> supposed to be used as public IDs, just like you wouldn&#x27;t use auto-incrementing IDs that way.<p>(I wrote a library for this 13y ago [1], around the time Twitter, Instagram et al started reaching enough scale to think about this kind of optimization)<p>[1] <a href="https:&#x2F;&#x2F;github.com&#x2F;ricardobeat&#x2F;unik" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;ricardobeat&#x2F;unik</a>
  • hackingonempty4 hours ago
    &gt; If you need to list things ordered by creation time very often, it’s useful if the primary index gives that behavior, removing the need for another index.<p>I thought the main reason UUIDv7 was created with a time component is to keep temporally related rows together in the index pages. Randomly distributed row ids seem OK until the entire index no longer fits in RAM.
    • NyxWulf2 hours ago
      It&#x27;s not just index pages. Generally databases write records into pages, which are then grouped into extents. If the primary key gives an ordering you can create new pages and start filling them up in an orderly fashion. If it&#x27;s random, you are doing random inserts into pages everywhere all the time, then you start running out of room in pages and have to start splitting them. UUIDv7 solves the most painful parts of this problem in general and is a much better option for a Primary Key than UUIDv1-4.
      • srcreigh46 minutes ago
        &gt; Generally<p>Except for Postgres
    • zeendo3 hours ago
      Yeah, same.<p>I suppose it&#x27;s a problem if the spec actually says they&#x27;re monotonically incrementing because it&#x27;s clear that isn&#x27;t guaranteed. But that was never a property I wanted or expected out of them anyway.<p>All of the other issues here sound like misunderstandings or misuses of ids, IMHO
    • pkulak3 hours ago
      Yeah, this is 99% of the benefit for me. And it&#x27;s not theoretical. My company saw performance issues using pure random IDs with MySQL way back in 2015; and consequently rolled our own UUIDv7 that we&#x27;re still using to this day.
    • dspillett1 hour ago
      As well as keeping rows of similar age roughly together, which may create access efficiencies but should not be relied upon, relatively ordered keys massively reduces page splits as the index grows (this can be particularly significant for clustered indexes as implemented by MS SQL and others) because you are always adding items to the end of the index. This can reduce the size of the index overall, potentially a big problem if working in a situation where your data+indexes do not fit comfortably in RAM (you don&#x27;t want your precious RAM half full of half-empty index pages).<p>Yes you can shrink it down when things get bad, but if your index is large enough that you care then it is large enough that this reorganisation is going to be costly in time and may slow your system while it happens (or cause a complete lock if your DB doesn&#x27;t support, or optionally supports and you don&#x27;t select the option, this as an online operation.
    • computing3 hours ago
      you thought right. the author is just plain wrong here.
  • btown1 hour ago
    One of my favorite things about UUIDv7: the package <a href="https:&#x2F;&#x2F;pypi.org&#x2F;project&#x2F;uuid7&#x2F;" rel="nofollow">https:&#x2F;&#x2F;pypi.org&#x2F;project&#x2F;uuid7&#x2F;</a> does <i>not</i> implement compliant UUIDv7s, it&#x27;s from a wholly incompatible draft format. That was not a fun debugging session.<p><a href="https:&#x2F;&#x2F;pypi.org&#x2F;project&#x2F;uuid-utils&#x2F;" rel="nofollow">https:&#x2F;&#x2F;pypi.org&#x2F;project&#x2F;uuid-utils&#x2F;</a> is what you want :)<p><a href="https:&#x2F;&#x2F;github.com&#x2F;stevesimmons&#x2F;uuid7&#x2F;issues&#x2F;1" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;stevesimmons&#x2F;uuid7&#x2F;issues&#x2F;1</a>
  • kentm3 hours ago
    Kind of funny title since I didn’t think UUIDv7 had any of the properties being disputed here. The reason to use UUIDv7 is because it reduces the space over which the UUID can cover at a given time, which improves write clustering. They don’t need to be strictly ordered for this, just “good enough”.<p>I hope to god no one is actually using the timestamp portion to replace an “updated at” timestamp but I suspect I’ll be disappointed.
    • computing3 hours ago
      [dead]
    • ajb1 hour ago
      Yeah this is what pick-up &quot;artists&quot; call a &quot;neg&quot; - a negative judgement made purely so the recipient feels, at some level, that their credibility is on the line. In this case, for clickbait. I always either don&#x27;t read such an article or come here to read the comments instead.
  • tanin2 hours ago
    I generally avoid using UUID unless there&#x27;s a strong reason for it.<p>I know the conventional wisdom says that the collisions are extremely rare &lt;&lt;insert some sort of cosmis analogy&gt;&gt;. Then, some reddit users reported encountering a collision: <a href="https:&#x2F;&#x2F;www.reddit.com&#x2F;r&#x2F;webdev&#x2F;comments&#x2F;1kvkxte&#x2F;comment&#x2F;mudnxqw&#x2F;" rel="nofollow">https:&#x2F;&#x2F;www.reddit.com&#x2F;r&#x2F;webdev&#x2F;comments&#x2F;1kvkxte&#x2F;comment&#x2F;mud...</a><p>Ultimately, we&#x27;d have to design the system to handle collision anyway. Might as well design a system to avoid collision in the first place. Then, if we have a system that avoids collision, then whether UUID is used is irrelevant.
    • NyxWulf2 hours ago
      The biggest advantage I&#x27;ve seen for UUID come with distributed systems imo. The ability to create an id without lock coordination allows for much easier horizontal scaling. UUIDv1 avoids the collision issue by using a portion of the MAC in the id, but v1-4 all have sorting issues. UUIDv7 is a good choice if your use case warrants it. If you can get away with a single integer field like a database primary key and not get bottlenecked that&#x27;s much easier. When that doesn&#x27;t work anymore one of the distributed id schemes like UUID are the only real options available.
    • tyre1 hour ago
      You don&#x27;t have to handle collisions and I don&#x27;t believe that multiple Redditors have experienced this. If they have, it&#x27;s an issue with the implementation and not UUIDs.<p>The math is simply not in there favor, by a number so large we cannot conceive of it in our tiny brains.<p>UUIDs have other useful properties. For example, they don&#x27;t expose counts (e.g. how many customers you have.) They make URL &#x2F; resource guessing impossible.<p>ids in the form of `[prefix]_[uuid stripped of dashes]` is ideal for most use cases. It should be the default the way Postgres is the default. Any deviation have good reason.
      • grey-area1 hour ago
        It’s not the default though is it. I wonder why?
    • tossandthrow2 hours ago
      You don&#x27;t have to. You can absorb the risk. Which most orgs do.
  • sedatk4 hours ago
    You probably don&#x27;t need a UUID: <a href="https:&#x2F;&#x2F;ssg.dev&#x2F;you-probably-dont-need-a-uuid&#x2F;" rel="nofollow">https:&#x2F;&#x2F;ssg.dev&#x2F;you-probably-dont-need-a-uuid&#x2F;</a>
    • kune4 hours ago
      I support this. I wrote a Sqlite plugin for KSUIDs, but at the end I never used them, since all I do can be handled by integer primary keys, which sqlite maps to the rowid automatically. Autoincrement is only required, if you want to prevent the reuse of ids in deleted rows.
    • mahboi3 hours ago
      For a database primary key, yeah. Just use serial.
      • F_r_k2 hours ago
        I don&#x27;t want my competitors to know about my number of clients, etc.
        • mahboi1 hour ago
          Don&#x27;t expose your PKs
          • tyre1 hour ago
            So you have a second, opaque unique identifier for the frontend to fetch? At that point why not just use a single column (UUID)?
            • crazygringo12 minutes ago
              Yes, this is standard. And the point is performance. The needs of user-facing ID&#x27;s (short alphanumeric, randomly ordered) tend to be pretty orthogonal to the needs of internal ID&#x27;s (raw bits, monotonically increasing, maybe timestamp data).
            • ndriscoll1 hour ago
              Higher density for indexes you use for joins. Also you can then use UUIDv4 to hide creation times if that&#x27;s sensitive too.
      • esafak3 hours ago
        That depends on your database. Serial keys can create hot spots in distributed databases because new writes are consistently directed to the same partition.
        • ndriscoll2 hours ago
          Yeah but for nearly everyone, they&#x27;d get better performance from <i>not</i> using a distributed database, and benefit from &quot;hotspots&quot; i.e. data locality.
        • JoshTriplett3 hours ago
          There&#x27;s no <i>fundamental</i> reason for this. Much as with per-CPU memory allocation, shards could pre-reserve chunks of the next serial space, and then only coordinate when they need a new chunk.
          • NyxWulf1 hour ago
            Many schemes do exactly this, if all you are doing is single table inserts that works pretty well.<p>If you do anything that creates related records via foreign keys you start to run into lock contention. For example:<p>If your insert requires a parent record with a single child record, you have to get the next sequential id which involves a non-preemptable single threaded lock, increment it, and send it back to the connection which requested it. In most databases this would mean writing the parent record and getting the sequential id of the parent record back so you can set the foreign key reference on the child record. Stored procedures are one way to mitigate the network transit time, but they don&#x27;t solve the single threaded lock acquisition time.<p>The reason most distributed systems use UUIDs or another flavor of distributed id is so you can generate the id for the parent record on the client, set the foreign key there as well, then send both records in as simple inserts. It&#x27;s not that there aren&#x27;t ways to work around it or mitigate it. Using a coordination free id, is just much easier to work with and scale in practice.
          • baq3 hours ago
            It’s much easier if you can simply not coordinate. Bonus points if that doesn’t mean you need an atomic clock in your rack
            • mahboi3 hours ago
              If you&#x27;re designing a distributed DB, sure. If you&#x27;re using something, you do whatever it wants. Spanner recommends random keys. Citus uses serial.
        • NyxWulf1 hour ago
          In my testing the primary bottleneck isn&#x27;t about writing to the same partition. Lock coordination to increment the serial key, then send it back across a connection was the real culprit. Virtually all databases make updates into RAM and to a write ahead log, which is then spooled to disk in the background. No matter which pages are written or updated, the changes all go sequentially in order into the WAL. For me, getting rid of Serial Keys was the big hot spot in processing. YMMV.
          • ndriscoll1 hour ago
            It&#x27;s been a while since I&#x27;ve touched db stuff, but pg still has to write the indexes before commit completes, no? So it&#x27;s still having to go load and write a gazillion pages. And then unless your filesystem has atomic page writes like ZFS, it also writes the whole page to WAL to ensure that it doesn&#x27;t do torn writes. Writes to the same page within a checkpoint don&#x27;t need full page write, so benefit.
    • nodamage3 hours ago
      ...if you work specifically on web applications with a centralized database.<p>Some of us don&#x27;t, so these types of universal proclamations are rather unhelpful.
    • woogle3 hours ago
      another benefit of not using UUID:<p>for AI heavy apps&#x2F;agent they are token expensive
  • 0x20cowboy4 hours ago
    As others have said, I don’t think the time was meant to be something you relied on for the object time, but more the help with indexing and sharding.
    • mahboi3 hours ago
      Yeah this was odd: &quot;Superficially, it seems that embedding a timestamp in the ID can remove the need to track the creation time in a separate database column&quot; Who actually tried to do this?<p>I didn&#x27;t assume uuid7 was guaranteed monotonic either. Of course not if you have different clocks. That&#x27;s not the point of it.
      • tredre31 hour ago
        I have never tried to do this myself, for the obvious reasons you&#x27;ve stated, but postgres has a function to do it so clearly <i>enough</i> people did do it:<p><a href="https:&#x2F;&#x2F;www.postgresql.org&#x2F;docs&#x2F;current&#x2F;functions-uuid.html#FUNC_UUID_EXTRACT_TABLE" rel="nofollow">https:&#x2F;&#x2F;www.postgresql.org&#x2F;docs&#x2F;current&#x2F;functions-uuid.html#...</a><p><pre><code> uuid_extract_timestamp ( uuid ) → timestamp with time zone Extracts a timestamp with time zone from a UUID of version 1 or 7. For other versions, this function returns null. Note that the extracted timestamp is not necessarily exactly equal to the time the UUID was generated; this depends on the implementation that generated the UUID. uuid_extract_timestamp(&#x27;019535d9-3df7-79fb-b466- fa907fa17f9e&#x27;::uuid) → 2025-02-23 21:46:24.503-05</code></pre>
  • dspillett1 hour ago
    <i>&gt; If you need to list things ordered by creation time very often, it’s useful if the primary index gives that behavior, removing the need for another index.</i><p>If you are using your primary key for anything other than a unique identifier for rows, you are almost certainly doing something wrong. If you need an index on creation time, or just creation order, have a creation time column and an index on that.
  • real_faxenoff2 hours ago
    Yes, UUIDv7 doesn&#x27;t have the same charm and texture as tree notches. But it&#x27;s been a huge help with my tables containing billions of records.<p>Sure, we could use faster alternatives specifically for indexes - but UUIDs are used throughout all business processes. Setting up a separate &quot;conversion to UUID&quot; step seems like a waste.
  • computing3 hours ago
    perfect example of missing the forest for the trees<p>the UUID timestamp is not for de-duping purposes. it&#x27;s avoid expensive re-indexes that happen with truly random ids
  • nitwit0053 hours ago
    The Python version simply forces the timestamp forward if needed to preserve ordering:<p><pre><code> if timestamp_ms &lt; _last_timestamp_v7: timestamp_ms = _last_timestamp_v7 + 1 </code></pre> <a href="https:&#x2F;&#x2F;github.com&#x2F;python&#x2F;cpython&#x2F;blob&#x2F;8d119208074fef0f652f14f78612b044dd218c4f&#x2F;Lib&#x2F;uuid.py#L903" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;python&#x2F;cpython&#x2F;blob&#x2F;8d119208074fef0f652f1...</a><p>But if you did want &quot;monotonically increasing IDs&quot;, as the article suggests, that is what you want.
    • dpark3 hours ago
      This is perfect if you only have one machine and the process never restarts. But then if you only have one machine you don’t realistically need uuid identifiers.
      • Lammy2 hours ago
        This is why the oldschool UUIDv1 spec specifies initializing the sequence value at a random number:<p>“12.4.4 — The Clock Sequence shall be originally (that is, once in the lifetime of a system producing UUIDs) initialized to a random number that is not derived from the Node value. NOTE – This is in order to minimize the correlation across systems, providing maximum protection”
  • skrebbel4 hours ago
    I feel like this article way downplays the entire point of UUIDv7s, which is that it lets you sort (and store!) your data <i>kinda sorta</i> by creation time, no overlap ever. That&#x27;s great for cursors, for streaming data, for twitter clones, for chat messages, for player moves, and so on and so forth. Nearly everything that&#x27;s vaguely realtimey that you might like to both persist and broadcast live to other clients, and displayed in a stable &amp; reasonable order, benefits from a property like this.<p>In fairness, he does mention this, but squeezes it into a single sentence near the end. But eg the fact that you can&#x27;t reliably extract the precise timestamp from the UUIDv7 is a feature, not a bug. It&#x27;s either that or collisions and you don&#x27;t want the collisions.
    • roughly3 hours ago
      Yeah, I think the key here is that you have to know what the limitations are. UUIDv7 does _not_ provide you with sorted and ordered IDs by creation time, it provides you with _kinda sorta_ sorted and ordered IDs by creation time. That&#x27;s probably fine for a lot of use cases, but if it&#x27;s not OK for yours (forensic accounting, risk mitigation for banks, whatever), you can&#x27;t use it for that. You&#x27;re right it&#x27;s not a technical problem necessarily, but when the marketing material describes something without an asterisk, people who are unaware that what&#x27;s being described is impossible at the limits can make bad system design decisions based on that promise.
  • jefecoon4 hours ago
    Great article.<p>I assume I&#x27;m oblivious and naive, but it seems theoretically possible these issues could -- theoretically -- result in TOCTOU or similar issues.<p>Any thoughts about relying on:<p>- central time service, with message-queue of inbound requests, resulting in correctly timed + sequenced events [ albeit with hopefully small lag tradeoffs ]?<p>- know of any databases that implement this type of logic around their own minting of time-stamped UUIDs?<p>Prior efforts implementing event-driven backend service with UUID7s minted in client-code seemed perfectly fine at low usage&#x2F;scale. However, as clients + usage + event-volume scaled, team became more curious about time&#x2F;timestamp&#x2F;related issues, and any minting client-side quickly fell out of favor.<p>Any insights greatly appreciated -- thanks<p>[ edited b&#x2F;c i don&#x27;t know how to format... ]
    • awesome_dude3 hours ago
      See: NTP, Lamport and Vector clocks. Spanner (Google) does make a good job of using atomic clocks, but it takes a hang of a lot of money.
  • mahboi3 hours ago
    I&#x27;ve never bothered with anything but uuid4. Yes there are special circumstances where a public uuid7 helps because you&#x27;re sure the timestamp leakage is ok, and you made sure it&#x27;s not guessable, and you&#x27;re sure some index performs better with it in a way that matters. There are also certain distributed systems where it has helpful properties. The amount of times blanket advice is given to use uuid7 far outweighs how often I&#x27;ve been in that situation, especially when people are talking about Postgres primary keys.
  • gcbirzan3 hours ago
    &gt;Unfortunately, the timestamp embedded in a UUIDv7 ID may not relate to the object creation time. The Postgres docs for uuid_extract_timestamp helpfully warn that “the extracted timestamp is not necessarily exactly equal to the time the UUID was generated”.<p>Just like NOW() won&#x27;t have the current time.
  • taylorbuley3 hours ago
    &gt; the problem is that system clocks cannot be synchronized to a suitable precision.<p>There are fun conditions under which a quasicrystalline clock could coordinate this in a distributed way. <a href="https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Time_crystal" rel="nofollow">https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Time_crystal</a>
  • deepsun2 hours ago
    &gt; not necessarily exactly equal to the time<p>I believe it was Poincare who has proven that it&#x27;s even theoretically impossible to synchronize clocks exactly.
    • orthoxerox14 minutes ago
      Wasn&#x27;t that Einstein with special relativity?
  • simonbuilds2 hours ago
    So where do you actually draw the line for a business and a customers table whether to use uuidv4 vs uuidv7, in terms of privacy and efficiency?
    • tyre1 hour ago
      Do you care about users knowing <i>when</i> another business was put into the system (e.g. how long they&#x27;ve been with you&quot;? If yes, v4. If no, v7.<p>v4 is less efficient but more private.
  • adityaathalye3 hours ago
    <i>alexsci</i> destroyed one of my core assumptions in a bitemporal data system project I&#x27;ve been noodling on. Namely, this oh-so-confident presumption:<p><i>Realities are arrows. Time marks flight. UUIDv7 is Time.</i><p>(Yes. Yes. No, hell no, not after what Robert just told ya.)<p><a href="https:&#x2F;&#x2F;www.evalapply.org&#x2F;posts&#x2F;poor-mans-time-oriented-data-system&#x2F;index.html#realities-are-arrows.-time-marks-flight.-uuidv7-is-time" rel="nofollow">https:&#x2F;&#x2F;www.evalapply.org&#x2F;posts&#x2F;poor-mans-time-oriented-data...</a>.<p>The small saving grace for me is that, despite my broken mental model of UUIDv7&#x27;s time and monotonicity properties, I get to <i>also</i> use SQLite&#x27;s automatic rowid for ordering and disambiguation. That too, only because I can (still think I can) <i>get away with</i> a &quot;DB per tenant&quot; architecture. Nevertheless, the same breakage potential will return when (not if, when) I have to mix &#x2F; remix records from two or more DB files.<p>brb, investigating whether I can <i>reliably</i> construct UUIDv7s using db-time...
  • phoronixrly4 hours ago
    Wow... That is some nitpicking... The major issue these UUIDs solve for me is the fact that using a random UUID as a primary key of a relational database leads to horrible performance...<p>It has never crossed my mind to decode the timestamp from them so I save myself a 12-byte column, neither has it crossed my mind to have them monotonic in a distributed system...
    • mahboi3 hours ago
      Serial PK solves this too, better actually cause it&#x27;s smaller
      • phoronixrly3 hours ago
        Why would I ever use a UUID PK if I had the option to use a serial one instead?
        • mahboi3 hours ago
          People do it, but seems like you get it. Every time I&#x27;m on a new team or job, they have UUID PKs in a single DB for no reason.
          • tyre1 hour ago
            It&#x27;s because it&#x27;s opaque. Signing up and seeing a page like `&#x2F;companies&#x2F;366` unnecessarily leaks company data. Sometime it&#x27;s a huge deal, sometimes not; not here to litigate that. But it&#x27;s trivially avoidable.
            • tredre31 hour ago
              The UUIDs discussed here leak the time that the record was created, so one could conceivably extract the growth rate, retention, sequence of event, etc. That&#x27;s not great either.<p>It&#x27;s almost always better (in my experience) to use auto increment internally, and assign a random hash (or UUID) to each public-facing record. All your SQL will be faster at the cost of one lookup (trivially cached) to match the requested hash&#x2F;uuid to PK. Of course this requires discipline across the team and, in that sense, &quot;just always use uuidv4&quot; is easier.
    • alexchamberlain3 hours ago
      The author is in DevSecOps (i understand the Sec part...) - nitpicking is in the job description.
  • awesome_dude3 hours ago
    &gt; Superficially, it seems that embedding a timestamp in the ID can remove the need to track the creation time in a separate database column, providing marginally more efficient database operations. If you need to list things ordered by creation time very often, it’s useful if the primary index gives that behavior, removing the need for another index.<p>This glares for me - I&#x27;m not &quot;listing&quot; by creation time per se; I&#x27;m taking advantage of locality - the page of data that a given key&#x27;s data is in should also contain data of other keys created around the same time.<p>That locality means that I have less disk calls if I want to get the data for a series of rows that were created around the same time.<p>The blog post seems to be saying that (worst case) I cannot rely on that aspect.
    • NyxWulf1 hour ago
      I think generally you can still rely on that aspect, compared to the alternative of UUIDv1-4. Even the worst cases he mentioned would cause minimal page splitting problems in a database compared to even the best cases with UUIDv1-4. The biggest take away I got from the article is that there is some wiggle room in how things can be implemented in the UUIDv7 spec, and it&#x27;s important to be aware of the implementations you are using.
  • saagarjha4 hours ago
    Just use UUIDs as they were meant to be used, as a random identifier. Don&#x27;t shove random other junk into it!
    • cpburns20093 hours ago
      The point of shoving the timestamp into it is to make it work well with database indexes. UUIDv4 is awful in that regard.
      • saagarjha3 hours ago
        Sounds like the problem here is that databases need to index on more than one thing at once
        • debazel2 hours ago
          It doesn’t have anything to do with indexing more than one thing.<p>The issue with truly random IDs is that inserts are scattered throughout the B-tree index, which cause page splits, fragmentation, and poor cache locality. Using a timestamp prefix makes new IDs sequential, so inserts tend to land near the end of the index, which avoid all the B-tree trashing and improve write performance.
          • saagarjha2 hours ago
            Yes, which means that you should probably be able to provide your timestamp to the database so it can use it for optimizing its index, rather than trying to shove it in your ID
            • debazel2 hours ago
              If you did that you would also have to provide the timestamp every time you wanted to look up an ID, and now we&#x27;re back to UUIDv7 again.
              • saagarjha2 hours ago
                Sure but at least you are being honest about it. For what it&#x27;s worth the database can handle this internally without you needing to hand this back but if you have a bad one then yes you should probably have it give you back a location hint that you use for future queries
        • cpburns20092 hours ago
          They already do. UUIDv7 neatly solves a common problem: a random, unguessable, public id that works well with databaes. UUIDv4 is infamous for this.
          • saagarjha2 hours ago
            This very much sounds like databases do not, in fact, support indexing on more than one thing at once.
  • pphysch4 hours ago
    &gt; My mental model for UUIDv7 is that it’s a mash-up of a bunch of different ideas which implementations are free to choose as they see fit. There’s a wide variance of properties that UUIDv7 implementations can provide, with varying degrees of certainty they can successfully provide those properties.<p>I think this is good. A proper UUID that has specific significant bits dedicated to (approximately) monotonic values is useful. I don&#x27;t want it over-specified beyond that, and I don&#x27;t want to just use UUIDv8.
  • ForHackernews4 hours ago
    Most (all?) of these are also true of UUIDv1. Devs in 2026 should be well versed in using UUIDv4 if they really truly can never leak anything.
  • doormatt4 hours ago
    [dead]
  • duskacre1 hour ago
    [flagged]
  • Vaushite4 hours ago
    [dead]