HNHacker News
TopNewBestAskShowJobs

jbverschoor

7,651 karma · joined November 19, 2010

^--- me at gmai..

(Docker) Container Shell - https://github.com/jrz/container-shell

Swift Caching Compiler - https://github.com/jrz/tools

submissionscomments
jbverschoor··on GPT‑NL: a sovereign language model for the Netherlands
NL could simply say: no more ASML machines, and no more ASM wafers.
jbverschoor··on Iroh 1.0
Nice video production, but as you can see on this thread of nerds, the messaging is not clear.. Content first, presentation later.
jbverschoor··on US Consumer Price Index up 4.2%
Is this with the new method of counting what inflation means? (trimmed mean, without outliers)
jbverschoor··on macOS Container Machines
Just curious, Apple seems to copy orbstack.. haven’t they made an offer to acquire you guys?
jbverschoor··on Upcoming breaking changes for npm v12
Yeah, but the azure supply chain attack explains why all of a sudden they can make this change.

It seems that if you want to get something important changed in npm, you simply need exploit some of its short comings against Microsoft instead of discussing why it’s necessary.

jbverschoor··on Upcoming breaking changes for npm v12
And when will we get rid of the vendored node_modules, and make it read only?
jbverschoor··on macOS Container Machines
Note that orbstack supports audio and usb pass through, which is super nice
jbverschoor··on Microsoft's open source tools were hacked to steal passwords of AI developers
Note that also the homebrew-tap was affected: homebrew-functions
jbverschoor··on Gov.uk has replaced Stripe with Dutch provider Adyen
Adyen is used by Microsoft, Meta, Netflix, Booking, etc

Stripe only outpaced after last year 34% vs 8% growth. Volume 1.9T vs 1.6T

jbverschoor··on Can You Stop a Hypersonic Missile?
Or we can just all get along
jbverschoor··on Tulip mania: when a single flower was worth more than a house (2025)
No different than the us dollar, except for the fact that the dollar is backed by armed forces, which is paid by us dollars....
jbverschoor··on Let's compile Quake like it's 1997
Man, I love the Visual C++ and Visual J++ interface so much. It was so fast and super clear.
jbverschoor··on I love my Bluetooth keyboard
I'm used to having a trackpad below the keyboard
jbverschoor··on Air France and Airbus found guilty of manslaughter over 2009 plane crash
Manslaughter for not having enough training during a specific malfunction, one crash

Vs

Fraud for two crashes caused by knowingly having unsafe planes (and two whistleblowers conveniently die)

jbverschoor··on Air France and Airbus found guilty of manslaughter over 2009 plane crash
Stark contrast between Boeing (US) never been guilty of anything vs Airbus (EU)
jbverschoor··on US tech firms share Dutch regulator officials' names with Senate
Exactly where all the dollars came from :D
jbverschoor··on Magic the Gathering format: Fun 40
FUN? How can it be fun without discard and land destruction?

Sounds like Gen-Z mtg

jbverschoor··on Goodbye Visa and Mastercard: 130M Europeans switching to sovereign payment
iDEAL is a killer name
jbverschoor··on Goodbye Visa and Mastercard: 130M Europeans switching to sovereign payment
Has nothing to do with the steps
jbverschoor··on Goodbye Visa and Mastercard: 130M Europeans switching to sovereign payment
That’s why we don’t pay 3%+ on all transactions
jbverschoor··on RTX 5090 and M4 MacBook Air: Can It Game?
I guess that little problem with the Nvidia chips overheating in the MacBook Pro didn’t give Apple a lot of confidence
jbverschoor··on Haiku
No beachballs
jbverschoor··on Googlebook
Just a little too late for school. The product probably doesn't even exist. They're screaming bc of the Nep.
jbverschoor··on Linux Terminal Memory Usage
the (walled) garden is a very good place to be
jbverschoor··on Ask HN: We just had an actual UUID v4 collision...
I don't believe so. Sure it's not an issue after some checks, but it's very easy to shoot yourself in the foot like that. I get the micro-optimization for the allocation.. But it's not clear / documented. At the minimum, the function should be renamed to reflect the inner workings.

The function is a module, and it doesn't do what you'd expect.

jbverschoor··on Ask HN: We just had an actual UUID v4 collision...
Seems to be "safe" because of it's not exported, and the results get used in a different way. Still is a bug in my book.
jbverschoor··on NPM UUID's random number gen contains shared mutable state bug since 3 weeks
Seems to be "safe" because of it's not exported, and the results get used in a different way. Still is a bug in my book.
jbverschoor··on NPM UUID's random number gen contains shared mutable state bug since 3 weeks
(previously https://news.ycombinator.com/item?id=48060054 )

Didn't actually want to write a test myself.. but I miss Claudia confirmed it. Pretty concerning.

Synchronous / serial calls:

   import rng from './rng';
   
   const a = rng();
   console.log('a after first call: ', Array.from(a));
   
   const b = rng();
   console.log('a after second call:', Array.from(a));
   console.log('b after second call:', Array.from(b));
   
   console.log('a === b (same reference)?    ', a === b);
   console.log('a equals b (same contents)?  ', a.every((v, i) => v === b[i]));

output:

   a after first call:  [
     101, 193, 125,  19, 142,
     136, 181, 140, 209, 224,
     176, 153, 179, 248, 246,
     166
   ]
   a after second call: [
       4,  29, 48, 215, 162,  60,
      64,  23, 78, 137,   2, 186,
     230, 249, 70, 224
   ]
   b after second call: [
       4,  29, 48, 215, 162,  60,
      64,  23, 78, 137,   2, 186,
     230, 249, 70, 224
   ]
   a === b (same reference)?     true
   a equals b (same contents)?   true
   
and aynchronous calls:

   import rng from './rng';
   
   async function getId() {
      const bytes = rng();
      await new Promise(r => setTimeout(r, 0)); // yield to the event loop
      return Array.from(bytes);
   }
   
   const [id1, id2] = await Promise.all([getId(), getId()]);
   console.log('id1:', id1);
   console.log('id2:', id2);
   console.log('identical?', id1.every((v, i) => v === id2[i]));

output:

   id1 captured:  [
      61, 116, 151,  35, 153,
      75, 105,  15,  59, 235,
     162, 215, 224, 115,  31,
     122
   ]
   id2 captured:  [
      13,  3,  84,  28, 22, 176,
     160, 70,  67, 246,  1,  37,
      38, 61, 171,  23
   ]
   id1 after await: [
      13,  3,  84,  28, 22, 176,
     160, 70,  67, 246,  1,  37,
      38, 61, 171,  23
   ]
   id2 after await: [
      13,  3,  84,  28, 22, 176,
     160, 70,  67, 246,  1,  37,
      38, 61, 171,  23
   ]
   ---
   final id1: [
      13,  3,  84,  28, 22, 176,
     160, 70,  67, 246,  1,  37,
      38, 61, 171,  23
   ]
   final id2: [
      13,  3,  84,  28, 22, 176,
     160, 70,  67, 246,  1,  37,
      38, 61, 171,  23
   ]
   identical? true
jbverschoor··on Ask HN: We just had an actual UUID v4 collision...
https://github.com/uuidjs/uuid/blob/e1f42a354593093ba0479f0b...

became

https://github.com/uuidjs/uuid/blob/f2c235f93059325fa43e1106...

Welp.. time to patch and update everything again. Another day, another npm-package headache. Very odd()

Attack vector: call the rng(), and send the result somewhere. You now have now overwritten someone elses "random number" and know about it. The fun things you can do with those numbers!

jbverschoor··on Ask HN: We just had an actual UUID v4 collision...
Didn't actually want to write a test myself.. but I miss Claudia confirmed it. Pretty concearning.

Synchronous / serial calls:

   import rng from './rng';
   
   const a = rng();
   console.log('a after first call: ', Array.from(a));
   
   const b = rng();
   console.log('a after second call:', Array.from(a));
   console.log('b after second call:', Array.from(b));
   
   console.log('a === b (same reference)?    ', a === b);
   console.log('a equals b (same contents)?  ', a.every((v, i) => v === b[i]));

output:

   a after first call:  [
     101, 193, 125,  19, 142,
     136, 181, 140, 209, 224,
     176, 153, 179, 248, 246,
     166
   ]
   a after second call: [
       4,  29, 48, 215, 162,  60,
      64,  23, 78, 137,   2, 186,
     230, 249, 70, 224
   ]
   b after second call: [
       4,  29, 48, 215, 162,  60,
      64,  23, 78, 137,   2, 186,
     230, 249, 70, 224
   ]
   a === b (same reference)?     true
   a equals b (same contents)?   true
   
and aynchronous calls:

   import rng from './rng';
   
   async function getId() {
      const bytes = rng();
      await new Promise(r => setTimeout(r, 0)); // yield to the event loop
      return Array.from(bytes);
   }
   
   const [id1, id2] = await Promise.all([getId(), getId()]);
   console.log('id1:', id1);
   console.log('id2:', id2);
   console.log('identical?', id1.every((v, i) => v === id2[i]));

output:

   id1 captured:  [
      61, 116, 151,  35, 153,
      75, 105,  15,  59, 235,
     162, 215, 224, 115,  31,
     122
   ]
   id2 captured:  [
      13,  3,  84,  28, 22, 176,
     160, 70,  67, 246,  1,  37,
      38, 61, 171,  23
   ]
   id1 after await: [
      13,  3,  84,  28, 22, 176,
     160, 70,  67, 246,  1,  37,
      38, 61, 171,  23
   ]
   id2 after await: [
      13,  3,  84,  28, 22, 176,
     160, 70,  67, 246,  1,  37,
      38, 61, 171,  23
   ]
   ---
   final id1: [
      13,  3,  84,  28, 22, 176,
     160, 70,  67, 246,  1,  37,
      38, 61, 171,  23
   ]
   final id2: [
      13,  3,  84,  28, 22, 176,
     160, 70,  67, 246,  1,  37,
      38, 61, 171,  23
   ]
   identical? true
← PreviousPage 3 of 34Next →