517 karma · joined August 31, 2025
When reviewing it I noticed that the author carried the common misunderstanding that "difficulty" in proof of work is simply the number of leading zero bytes in a hash, which limits the granularity to powers of two. I realize that some of this is the cost of working in JavaScript, but the hottest code path seems to be written extremely inefficiently.
for (; ;) {
const hashBuffer = await calculateSHA256(data + nonce);
const hashArray = new Uint8Array(hashBuffer);
let isValid = true;
for (let i = 0; i < requiredZeroBytes; i++) {
if (hashArray[i] !== 0) {
isValid = false;
break;
}
}
It wouldn’t be exaggerating to say that a native implementation of this with even a hair of optimization could reduce the “proof of work” to being less time intensive than the ssl handshake.My biggest gripe with it originally was that the next and previous page gestures worked perhaps one in three attempts, which has been fixed in the most recent software that reduced the perceived latency of everything dramatically. Beyond that it’s a weird experience, it’s sort of usable with open source tools but requires a lot of hacks to not have it sync with their cloud offering if you want privacy. Even if you use their cloud services it often feels a bit clunky and half considered where buttons and controls end up being.
I love the hardware, it’s an amazing looking screen, it feels ultra premium, the folio cases people have made for it fit perfectly in my bag.