<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Hacker News: mananaysiempre</title><link>https://news.ycombinator.com/user?id=mananaysiempre</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Fri, 29 May 2026 17:13:58 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=mananaysiempre" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by mananaysiempre in "Unicode 18.0.0 Beta"]]></title><description><![CDATA[
<p>> emojises<p>I don’t protest the coinage here (goodness knows my native language did worse things to English words), but I can’t stop saying it in Gollum’s voice.</p>
]]></description><pubDate>Wed, 27 May 2026 11:42:51 +0000</pubDate><link>https://news.ycombinator.com/item?id=48292744</link><dc:creator>mananaysiempre</dc:creator><comments>https://news.ycombinator.com/item?id=48292744</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48292744</guid></item><item><title><![CDATA[New comment by mananaysiempre in "C array types are weird"]]></title><description><![CDATA[
<p>Not quite. As GP mentions, a[i][j] might mean either, depending on what the type of a is:<p>(a) If the type of a is “array of length N of pointer to (say) char” (declaration: char *a[N]), then a[i][j] means the <i>j</i>th char in the contiguous block pointed to by the <i>i</i>th pointer. In C#, this is what you get with an array of arrays.<p>(b) If the type of a is “array of length N of array of length M of char” (declaration: char a[N][M] — sic!), then a[i][j] means the <i>j</i>th element of the <i>i</i>th element, aka the (<i>i</i>*M+<i>j</i>)th char in the single contiguous memory block. In C#, this is what you get with a two-dimensional array.<p>The way this happens is a bit subtle:<p>(a) The value a, of type “array of size N of pointer to char”, first decays into “pointer to pointer to char”, then a[i] retrieves the <i>i</i>th “pointer to char” starting from it as a base, then in turn a[i][j] retrieves the <i>j</i>th “char” starting from that as a base.<p>(b) The value a, of type “array of length N of array of length M of char”, first decays into “pointer to array of length M of char” (sic!), then a[i] retrieves the <i>i</i>th “array of length M of char” starting from it as a base, which then decays into “pointer to char”, then a[i][j] retrieves the <i>j</i>th “char” starting from that as a base.<p>NB: There are no implicit references here, unlike in C#; in part (b), a is an N*M-byte chunk of memory and a[i] is an M-byte piece of it.</p>
]]></description><pubDate>Wed, 27 May 2026 08:04:02 +0000</pubDate><link>https://news.ycombinator.com/item?id=48291138</link><dc:creator>mananaysiempre</dc:creator><comments>https://news.ycombinator.com/item?id=48291138</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48291138</guid></item><item><title><![CDATA[New comment by mananaysiempre in "Dropbox CEO Drew Houston to step down"]]></title><description><![CDATA[
<p>Funnily enough, Windows 98 is the first OS I remember with a sharing menu (“Send To”, which is memorable to me because the official Russian localization of it was suggestive of an obscenity). It seemed so pointless back then.</p>
]]></description><pubDate>Tue, 26 May 2026 18:43:32 +0000</pubDate><link>https://news.ycombinator.com/item?id=48284013</link><dc:creator>mananaysiempre</dc:creator><comments>https://news.ycombinator.com/item?id=48284013</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48284013</guid></item><item><title><![CDATA[New comment by mananaysiempre in "Everything in C is undefined behavior"]]></title><description><![CDATA[
<p>> Your first paragraph makes it sound as if the compiler will actually generate two reads of the value of some register, which might lead to unexpected effects at runtime for certain special registers.<p>I don’t see how. I was trying to explain why it’s reasonable for a volatile read to be a side effect, after which the C rule on unsequenced side effects applies, yielding UB as you say.</p>
]]></description><pubDate>Wed, 20 May 2026 11:55:34 +0000</pubDate><link>https://news.ycombinator.com/item?id=48206280</link><dc:creator>mananaysiempre</dc:creator><comments>https://news.ycombinator.com/item?id=48206280</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48206280</guid></item><item><title><![CDATA[New comment by mananaysiempre in "Everything in C is undefined behavior"]]></title><description><![CDATA[
<p>And it makes sense as long as you allow the concept of unsequenced operations at all (admittedly it’s somewhat rare; e.g. in Scheme such things are defined to still occur in sequence, but which specific sequence is unspecified and potentially different each time). The “volatile” annotation marks your variable as being an MMIO register or something of that nature, something that could change at any point for reasons outside of the compiler’s control. Naturally, this means all of the hazards of concurrent modification are potentially there.<p>That said, your “common parlance” definition of “data race” is <i>not</i> the definition used by the C standard, so your last sentence is at best misleading in a discussion of standard C.<p>> The execution of a program contains a <i>data race</i> if it contains two conflicting actions in different threads, at least one of which is not atomic, and neither happens before the other. Any such data race results in undefined behavior.<p>(Here “conflicting” and “happens before” are defined in the preceding text.)</p>
]]></description><pubDate>Wed, 20 May 2026 10:13:14 +0000</pubDate><link>https://news.ycombinator.com/item?id=48205462</link><dc:creator>mananaysiempre</dc:creator><comments>https://news.ycombinator.com/item?id=48205462</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48205462</guid></item><item><title><![CDATA[New comment by mananaysiempre in "Everything in C is undefined behavior"]]></title><description><![CDATA[
<p>Not from the standard’s point of view. The traditional (in some circles) use of volatile for atomic variables was <i>not</i> sanctioned by the C11/C++11 thread model; if you want an atomic, write atomic, not volatile, or be aware of your dependency on a compiler (like MSVC) that explicitly amends the language definition so as to allow cross-thread access to volatile variables.</p>
]]></description><pubDate>Wed, 20 May 2026 10:05:29 +0000</pubDate><link>https://news.ycombinator.com/item?id=48205424</link><dc:creator>mananaysiempre</dc:creator><comments>https://news.ycombinator.com/item?id=48205424</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48205424</guid></item><item><title><![CDATA[New comment by mananaysiempre in "Make ZIP files smaller with ZIP Shrinker"]]></title><description><![CDATA[
<p>Flashbacks of /OPT:NOWIN98 [1]. (That said, why not.)<p>[1] <a href="http://web.archive.org/web/20031018072659/http://msdn.microsoft.com/msdnmag/issues/01/01/hood/" rel="nofollow">http://web.archive.org/web/20031018072659/http://msdn.micros...</a></p>
]]></description><pubDate>Tue, 19 May 2026 12:38:39 +0000</pubDate><link>https://news.ycombinator.com/item?id=48192510</link><dc:creator>mananaysiempre</dc:creator><comments>https://news.ycombinator.com/item?id=48192510</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48192510</guid></item><item><title><![CDATA[New comment by mananaysiempre in "Native all the way, until you need text"]]></title><description><![CDATA[
<p>> a different one whose results embarrass a typographer<p>whose results <i>won’t</i> embarrass (of course; sorry)</p>
]]></description><pubDate>Mon, 18 May 2026 21:03:27 +0000</pubDate><link>https://news.ycombinator.com/item?id=48185593</link><dc:creator>mananaysiempre</dc:creator><comments>https://news.ycombinator.com/item?id=48185593</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48185593</guid></item><item><title><![CDATA[New comment by mananaysiempre in "Security researcher says Microsoft built a Bitlocker backdoor, releases exploit"]]></title><description><![CDATA[
<p>> A normal reboot always [forces the TPM pin entry screen], even a 'hot' reboot.<p>In TPM-only mode, I only see the screen—which asks for an recovery key that serves an alternative to the TPM-borne secret, not for whatever you are calling the “TPM PIN” here—whenever I update the firmware or the bootloader (the latter from the other side of the dual-boot setup). Otherwise it boots straight to the login screen, which meshes with the measured-boot-only theory of operation I’ve described above. There’s nothing nefarious in this part, even if I think it exposes an unwisely large attack surface (e.g. the USB stack). I suspect you simply reboot so rarely you’re never hitting the happy path.</p>
]]></description><pubDate>Sun, 17 May 2026 20:56:37 +0000</pubDate><link>https://news.ycombinator.com/item?id=48173122</link><dc:creator>mananaysiempre</dc:creator><comments>https://news.ycombinator.com/item?id=48173122</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48173122</guid></item><item><title><![CDATA[New comment by mananaysiempre in "Native all the way, until you need text"]]></title><description><![CDATA[
<p>> just to render Markdown<p>Rendering text beyond ASCII is famously difficult to do; rendering formatted text is sometimes difficult to even make sense of (e.g. what should a style change in the middle of an Arabic word do? how about a selection boundary being moved with arrow keys?); rendering honest-to-goodness Markdown, which can technically include arbitrary HTML tags, is nowhere in the vicinity of a small project.<p>None of which is to say that you shouldn’t demand that a toolkit solve it for you, only that I understand why the RichEdit control reportedly had a separate team allocated to it in turn-of-the-millenium Microsoft. Working with a large amount of formatted text feels like it should be the most complicated feature of any UI toolkit and I shudder at the thought of even designing the API for it.<p>(A web browser is good at all this. It also has the API surface of a web browser.)<p>And some things will still be on you regardless. Did you know Android has two modes for text wrapping, one that won’t reflow the entire paragraph after a single-word change at the end and a different one whose results embarrass a typographer from half a millenium ago? That’s very much the correct way to do things, but if you’re streaming text in, it’s on you to decide whether you want subpar wrapping throughout or a layout jump whenever a paragraph break arrives. Most importantly, it’s on you to know the question exists; there are more, some more important than this one.<p>(Modern toolkits aren’t the only ones that can be bad at scaling to large amounts of data, either. Notably, Microsoft had to write an entire new “windowless” one to replace USER’s heavyweight window-based one so that Access wouldn’t collapse under its own weight. They then reused it for IE, for similar reasons. Raymond Chen’s response[1] to complaints about that toolkit staying private to Microsoft amounted to “fuck off”.)<p>[1] <a href="https://devblogs.microsoft.com/oldnewthing/20050211-00/?p=36473" rel="nofollow">https://devblogs.microsoft.com/oldnewthing/20050211-00/?p=36...</a></p>
]]></description><pubDate>Sun, 17 May 2026 20:37:19 +0000</pubDate><link>https://news.ycombinator.com/item?id=48172984</link><dc:creator>mananaysiempre</dc:creator><comments>https://news.ycombinator.com/item?id=48172984</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48172984</guid></item><item><title><![CDATA[New comment by mananaysiempre in "Security researcher says Microsoft built a Bitlocker backdoor, releases exploit"]]></title><description><![CDATA[
<p>> The secret here seems to be that Microsoft caches the key somewhere even when it's supposed to be only in the TPM!<p>Not what happened here (I reserve my judgment wrt the promised TPM+PIN exploit).<p>In the default TPM-only mode of BitLocker, the secret is in fact in the TPM, which will (as instructed by Windows upon key creation) release it to the correct OS running on the correct computer. Notably not in the picture is any user-provided data: measured boot is the only protection. It is only the correct programming of the OS that makes it request an account password (completely unrelated to the disk-encryption cryptography) before letting the user poke at the disk, which the OS can at that point already decrypt.<p>Well, turns out the programming is such that if you ask politely it’ll just pop an Administrator(?) shell.</p>
]]></description><pubDate>Sun, 17 May 2026 19:24:50 +0000</pubDate><link>https://news.ycombinator.com/item?id=48172353</link><dc:creator>mananaysiempre</dc:creator><comments>https://news.ycombinator.com/item?id=48172353</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48172353</guid></item><item><title><![CDATA[New comment by mananaysiempre in "My Favorite Bugs: Invalid Surrogate Pairs"]]></title><description><![CDATA[
<p>> Indeed, Linux allows anything but "/" and "\0" in filenames.<p>For what it’s worth, NT allows any 16-bit quantity but L'\\' (0x005C) in filenames (even nulls); it’s the Win32 layer on top of it that imposes all the other weird restrictions and mappings.</p>
]]></description><pubDate>Sun, 17 May 2026 10:08:18 +0000</pubDate><link>https://news.ycombinator.com/item?id=48167532</link><dc:creator>mananaysiempre</dc:creator><comments>https://news.ycombinator.com/item?id=48167532</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48167532</guid></item><item><title><![CDATA[New comment by mananaysiempre in "Fame! A Misunderstanding: A new translation of Albert Camus's complete notebooks"]]></title><description><![CDATA[
<p>Fascinating in more than one way: I don’t think I’ve ever seen mail delivered on the same day within the same city even when my place of residence had a well-functioning postal service by modern standards. (What I have seen in a particularly egregious case, though, is letters reliably taking a month to traverse a distance that takes me half an hour on foot.)</p>
]]></description><pubDate>Sat, 16 May 2026 21:38:00 +0000</pubDate><link>https://news.ycombinator.com/item?id=48164043</link><dc:creator>mananaysiempre</dc:creator><comments>https://news.ycombinator.com/item?id=48164043</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48164043</guid></item><item><title><![CDATA[New comment by mananaysiempre in "Bun Rust rewrite: "codebase fails basic miri checks, allows for UB in safe rust""]]></title><description><![CDATA[
<p>For the same reason the V8 team bothered to set up a 32-bit addressing scheme for the GC heap even on 64-bit platforms, I imagine? The bytes add up when there’s enough of them.</p>
]]></description><pubDate>Fri, 15 May 2026 19:40:40 +0000</pubDate><link>https://news.ycombinator.com/item?id=48152906</link><dc:creator>mananaysiempre</dc:creator><comments>https://news.ycombinator.com/item?id=48152906</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48152906</guid></item><item><title><![CDATA[New comment by mananaysiempre in "Myths about /dev/urandom (2014)"]]></title><description><![CDATA[
<p>Should, yes. Will, perhaps, but better be aware of the potential problem and check.<p>Just yesterday I encountered people complaining about a VM not connecting to a cloud service when they neglected to put their DNS server’s address in the config for the DHCP server used by that particular host. And a dysfunctional RNG is much more difficult to detect.</p>
]]></description><pubDate>Thu, 14 May 2026 12:59:21 +0000</pubDate><link>https://news.ycombinator.com/item?id=48134772</link><dc:creator>mananaysiempre</dc:creator><comments>https://news.ycombinator.com/item?id=48134772</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48134772</guid></item><item><title><![CDATA[New comment by mananaysiempre in "Myths about /dev/urandom (2014)"]]></title><description><![CDATA[
<p>> Might be different for exotic platforms, I guess.<p>Short-lived isolated VMs (like might be used for CI) are one place where entropy can be a problem. The relevant definition of “platform” here is less about the CPU architecture and more about the environment.</p>
]]></description><pubDate>Thu, 14 May 2026 12:32:50 +0000</pubDate><link>https://news.ycombinator.com/item?id=48134473</link><dc:creator>mananaysiempre</dc:creator><comments>https://news.ycombinator.com/item?id=48134473</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48134473</guid></item><item><title><![CDATA[New comment by mananaysiempre in "Microsoft BitLocker – YellowKey zero-day exploit"]]></title><description><![CDATA[
<p>Linux can decrypt BitLocker-encrypted drives. The cryptography is known and solid. The issue is that, as 'aiscoming says, its surroundings in Windows make the quality of the cryptography irrelevant.<p>In the default BitLocker configuration, Windows puts all the key material in the TPM, locked behind the usual trusted-boot stuff: known-good BIOS hashes the bootloader and tells the TPM, bootloader hashes the kernel and tells the TPM, kernel hashes the initial process and tells the TPM, (I’m not sure how far it goes in this specific application,) and at the end of it the TPM won’t release the keys unless the entire chain was correct. This process does (modulo TPM flaws) ensure the disk will only be decryptable when in the original computer running the original OS. It does <i>not</i> ensure that the original OS will not subsequently give a root shell to anyone who walks up to the keyboard and types in a cheat code, and that’s essentially what’s happening here.<p>Celebrite et al. take a similar approach: after your Android phone boots and you first enter your PIN (which, unlike with BitLocker defaults, <i>is</i> required to unlock the TPM, thus the distinguished status of “before first unlock” aka BFU vs “after first unlock” aka AFU), the key material is already in RAM and breaking dm-crypt is not necessary; all that’s needed is find a USB stack vulnerability or a Bluetooth stack vulnerability or whatnot that can be leveraged into a root shell.</p>
]]></description><pubDate>Thu, 14 May 2026 10:36:12 +0000</pubDate><link>https://news.ycombinator.com/item?id=48133483</link><dc:creator>mananaysiempre</dc:creator><comments>https://news.ycombinator.com/item?id=48133483</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48133483</guid></item><item><title><![CDATA[New comment by mananaysiempre in "Microsoft BitLocker – YellowKey zero-day exploit"]]></title><description><![CDATA[
<p>It’s a way of saying that I consider the demand for post-2020 evidence to be cherry picking when there’s evidence from 2018 and little objective (cultural or economic) reason for things to have improved since then. A competent modern businessman will not pay for a competent worker in a very specific narrow field until there are consequences to not doing so (creating such consequences is the purpose of every compliance regime, for instance).<p>It’s also a way of saying that the entire approach taken by hardware disk encryption (unspecified crypto done inside the device in an unverifiable manner) has, with the benefit of hindsight, proven fundamentally flawed despite its reasonable appearance (in every system which had used it, not just storage), and I wish there was a way to pressure (consumer) storage vendors into going in a different direction. It is simply never a wise choice to trust people’s opaque crypto, however competent they are.</p>
]]></description><pubDate>Thu, 14 May 2026 10:25:27 +0000</pubDate><link>https://news.ycombinator.com/item?id=48133419</link><dc:creator>mananaysiempre</dc:creator><comments>https://news.ycombinator.com/item?id=48133419</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48133419</guid></item><item><title><![CDATA[New comment by mananaysiempre in "Microsoft BitLocker – YellowKey zero-day exploit"]]></title><description><![CDATA[
<p>I don’t think manufacturers with deliberately undocumented, nigh-impossible-to-inspect crypto get to claim their bugs are shallow and thus that the absence of evidence for bugs implies the absence of bugs.<p>Less emotionally but mostly equivalently, the expense and non-cryptographic skill requirements of breaking mass-storage crypto are quite high while the rewards are comparable to those from breaking much softer targets, so the absence of results since that one paper only changes my mind very slightly. Besides, we know plenty of examples of what these kinds of opaque, serious-business, pay-to-play environments produce: cellular crypto is an uninterrupted series of disasters, so is Wi-Fi, and the things that we do know about storage devices don’t point to an outstanding culture of cryptographic competence there either. Once you’ve done enough to slap an “OPAL” label on it (which says nothing about the internals), there’s just no competitive pressure to improve.<p>There <i>is</i> a right way to do all this, and it’s essentially what NICs do: allow the host to offload symmetric crypto to the device, but keep the results of said crypto accessible at any moment. And it’s not like there are even that many modes used in full-disk encryption, let alone ciphers.</p>
]]></description><pubDate>Thu, 14 May 2026 09:38:12 +0000</pubDate><link>https://news.ycombinator.com/item?id=48133091</link><dc:creator>mananaysiempre</dc:creator><comments>https://news.ycombinator.com/item?id=48133091</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48133091</guid></item><item><title><![CDATA[New comment by mananaysiempre in "Microsoft BitLocker – YellowKey zero-day exploit"]]></title><description><![CDATA[
<p>Access for those who used a Microsoft account and upload their encryption keys there. While I’m unhappy that most of the users end up using this (bad) mode, previously I was under the impression that there was a meaningful choice involved.</p>
]]></description><pubDate>Thu, 14 May 2026 09:18:14 +0000</pubDate><link>https://news.ycombinator.com/item?id=48132913</link><dc:creator>mananaysiempre</dc:creator><comments>https://news.ycombinator.com/item?id=48132913</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48132913</guid></item></channel></rss>