logoalt Hacker News

throwaway808081yesterday at 10:41 PM8 repliesview on HN

Just have a database of UUIDs. Seems pretty trivial to generate and sort as it's only 16 bytes each.


Replies

pshirshovtoday at 1:09 AM

That's actually a bright idea! Have you ever thought about applying for VC funds?

Once you deliver that, you can also think about a database of natural numbers!

show 2 replies
direwolf20today at 3:23 AM

It exists

https://everyuuid.com/

show 1 reply
Mikhail_Edoshintoday at 4:42 AM

16 bytes is a lot. 4 bytes are within reach, we can scan all of them quickly, but even 8 bytes are already too much.

Kolmogorov said that computers do not help with naturally hard tasks; they raise a limit compared to what we can fo manually, but above that limit the task stays as hard is it was.

Dylan16807today at 12:29 AM

"Just" have a database, and then what? I can set up a database of all UUIDs very easily, but I don't think it's helpful.

show 1 reply
stirfishyesterday at 11:10 PM

lol

Let's go a step further and just iterate through them on the client. I plan on having this phone well past the heat death of the universe, so this is guaranteed to finish on my hardware.

  function* uuidIterator() {
   const bytes = new Uint8Array(16); 
   while (true) {
     yield formatUUID(bytes);

     let carry = 1;
     for (let i = 15; i >= 0 && carry; i--) {
       const sum = bytes[i] + carry;
       bytes[i] = sum & 0xff;
       carry = sum > 0xff ? 1 : 0;
     }
 
     if (carry) return;
   }
 }
 
 function formatUUID(b) {
   const hex = [...b].map(x => x.toString(16).padStart(2, "0"));
   return (
     hex.slice(0, 4).join("") + "-" +
     hex.slice(4, 6).join("") + "-" +
     hex.slice(6, 8).join("") + "-" +
     hex.slice(8, 10).join("") + "-" +
     hex.slice(10, 16).join("")
   );
 }
This is free. Feel free to use it in production.
show 1 reply