<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: rep_lodsb</title><link>https://news.ycombinator.com/user?id=rep_lodsb</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Fri, 17 Apr 2026 07:58:32 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=rep_lodsb" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by rep_lodsb in "Show HN: BAREmail ʕ·ᴥ·ʔ – minimalist Gmail client for bad WiFi"]]></title><description><![CDATA[
<p>Dedicated mail clients have existed for a lot longer than GMail has, work with any service using the POP3 or IMAP protocol, and don't run inside a web browser.</p>
]]></description><pubDate>Wed, 08 Apr 2026 16:25:37 +0000</pubDate><link>https://news.ycombinator.com/item?id=47692402</link><dc:creator>rep_lodsb</dc:creator><comments>https://news.ycombinator.com/item?id=47692402</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47692402</guid></item><item><title><![CDATA[New comment by rep_lodsb in "German implementation of eIDAS will require an Apple/Google account to function"]]></title><description><![CDATA[
<p>It's doing things that are against the interest of the user. But obviously, that's no longer an acceptable definition! According to our benevolent overlords, Android is definitely not malware, while yt-dlp is </s></p>
]]></description><pubDate>Sun, 05 Apr 2026 12:08:59 +0000</pubDate><link>https://news.ycombinator.com/item?id=47648540</link><dc:creator>rep_lodsb</dc:creator><comments>https://news.ycombinator.com/item?id=47648540</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47648540</guid></item><item><title><![CDATA[New comment by rep_lodsb in "German implementation of eIDAS will require an Apple/Google account to function"]]></title><description><![CDATA[
<p>There's also a problem with <i>unmodified</i> phones containing malware, namely an operating system made by an advertising company, which is designed to collect as much information about you as possible.<p>And this malware is largely based on open source code (Linux) that was originally developed on open, documented hardware, where the firmware boot loader did nothing more than load the first 512 bytes of your hard disk to address 0x7c00 and transfer complete control to it.<p>Yes, there were viruses that exploited this openness, but imagine if Linus Torvalds would have needed a cryptographic certificate from IBM or Microsoft to be allowed to run his own code! This is basically the situation we have today, and if you don't see how dystopian this is, I don't know what more to say.<p>I will never understand why such an overwhelming majority of people seem to just accept this. When frigging <i>barcodes</i> where introduced, there were widespread conspiracy theories about it being the Mark of the Beast -- ridiculous of course, but look at now where in some places you literally can't buy or sell without carrying around a device that is hostile to your interests. And soon it will be mandated by the state for everyone.<p>Google must be destroyed.</p>
]]></description><pubDate>Sun, 05 Apr 2026 08:06:18 +0000</pubDate><link>https://news.ycombinator.com/item?id=47647213</link><dc:creator>rep_lodsb</dc:creator><comments>https://news.ycombinator.com/item?id=47647213</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47647213</guid></item><item><title><![CDATA[New comment by rep_lodsb in "Turbo Pascal Deconstructed"]]></title><description><![CDATA[
<p>For the code generator, it produced this annotated disassembly:<p><pre><code>    2100 push ax            ;--- EmitByte: write one byte to code output ---
    2101 mov di, [code_ptr] ;DI → current position in output buffer
    2104 stosb              ;Write AL to output, advance DI
    2105 mov [code_ptr], di ;Update code pointer
    2108 pop ax             ;Restore AX
    2109 ret                ;Every compiled instruction flows through this 6-instruction emitter
    2110 mov al, 0E8h       ;--- EmitCall: generate CALL instruction ---
    2112 call EmitByte      ;Emit opcode byte E8h (near CALL)
    2115 sub bx, [code_ptr] ;Calculate relative offset
    2118 sub bx, 2          ;Adjust for instruction length
    211A xchg ax, bx        ;AX = relative offset
    211B call EmitWord      ;Emit 16-bit relative displacement
    211E ret                ;Generated: E8 lo hi — a complete CALL instruction
</code></pre>
Obviously, there has to be a lot more to even a simple-minded x86 code generator than just a generic "emit opcode byte" and "emit call" routine. In general, what A"I" produced here is not a full disassembly but a collection of short snippets, potentially not even including the really interesting ones. But is it even correct?<p>EmitByte here is unnecessarily pushing/popping AX, which isn't modified by the few instructions in between at all. No competent assembly language programmer would do this. So maybe against all expectations, Turbo Pascal is just really badly coded? No, it's of course a hallucination: those instructions don't appear in the binary at all!<p>That the hex addresses are wrong can already be seen in the instruction "mov di,[code_ptr]" here being apparently only three bytes long. In reality it would take four! And it's easy to confirm that this code isn't present at the addresses shown.<p>So maybe it's somewhere else? x86 disassembly can be complicated because the opcodes are variable length, and particularly in old programs like this the code and data are often not cleanly separated. Claude apparently ran it through NDISASM, which doesn't even attempt to handle that task.<p>But searching for e.g. the hex opcode B0 E8 ('mov al,0xe8') is enough to confirm that this code snippet isn't to be found <i>anywhere</i>.<p>There is a lot more suspicious code, including some that couldn't possibly work (like the "ret 1" in the system call dispatcher, which would misalign the stack).<p>Conclusion: it's slop</p>
]]></description><pubDate>Tue, 24 Mar 2026 12:31:48 +0000</pubDate><link>https://news.ycombinator.com/item?id=47501692</link><dc:creator>rep_lodsb</dc:creator><comments>https://news.ycombinator.com/item?id=47501692</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47501692</guid></item><item><title><![CDATA[New comment by rep_lodsb in "Never Bet Against x86"]]></title><description><![CDATA[
<p>Yes, you can detect signed overflow that way, but it's a lot more instructions so it won't be used in practice.<p>The designers of RISC-V included the bare minimum needed to compile C, everything else was deemed irrelevant.</p>
]]></description><pubDate>Sat, 07 Mar 2026 13:08:20 +0000</pubDate><link>https://news.ycombinator.com/item?id=47287320</link><dc:creator>rep_lodsb</dc:creator><comments>https://news.ycombinator.com/item?id=47287320</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47287320</guid></item><item><title><![CDATA[New comment by rep_lodsb in "My application programmer instincts failed when debugging assembler"]]></title><description><![CDATA[
<p>>Protip: your functions should be padded with instructions that'll trap if you miss a return.<p>Galaxy brained protip: instead of a trap, use return instructions as padding, that way it will just work correctly!<p>Some compilers insert trap instructions when aligning the start of functions, mainly because the empty space has to be filled with <i>something</i>, and it's better to use a trapping instruction if for some reason this unreachable code is ever jumped to. But if you have to do it manually, it doesn't really help, since it's easier to forget than the return.</p>
]]></description><pubDate>Sat, 07 Mar 2026 12:59:48 +0000</pubDate><link>https://news.ycombinator.com/item?id=47287276</link><dc:creator>rep_lodsb</dc:creator><comments>https://news.ycombinator.com/item?id=47287276</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47287276</guid></item><item><title><![CDATA[New comment by rep_lodsb in "Never Bet Against x86"]]></title><description><![CDATA[
<p>That only works for unsigned integers.</p>
]]></description><pubDate>Sat, 07 Mar 2026 12:11:45 +0000</pubDate><link>https://news.ycombinator.com/item?id=47286925</link><dc:creator>rep_lodsb</dc:creator><comments>https://news.ycombinator.com/item?id=47286925</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47286925</guid></item><item><title><![CDATA[New comment by rep_lodsb in "Never Bet Against x86"]]></title><description><![CDATA[
<p>Secure boot can be disabled even on modern PCs.</p>
]]></description><pubDate>Fri, 06 Mar 2026 21:28:08 +0000</pubDate><link>https://news.ycombinator.com/item?id=47281313</link><dc:creator>rep_lodsb</dc:creator><comments>https://news.ycombinator.com/item?id=47281313</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47281313</guid></item><item><title><![CDATA[New comment by rep_lodsb in "Never Bet Against x86"]]></title><description><![CDATA[
<p>It has nothing to do with being unable to run 16-bit code, that's a myth.<p><a href="https://man7.org/linux/man-pages/man2/modify_ldt.2.html" rel="nofollow">https://man7.org/linux/man-pages/man2/modify_ldt.2.html</a><p>Set seg_32bit=0 and you can create 16-bit code and data segments. Still works on 64 bit. What's missing is V86 mode, which emulates the real mode segmentation model.</p>
]]></description><pubDate>Fri, 06 Mar 2026 21:17:20 +0000</pubDate><link>https://news.ycombinator.com/item?id=47281193</link><dc:creator>rep_lodsb</dc:creator><comments>https://news.ycombinator.com/item?id=47281193</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47281193</guid></item><item><title><![CDATA[New comment by rep_lodsb in "Never Bet Against x86"]]></title><description><![CDATA[
<p>You're confusing several things here. The only x86 processor that didn't allow returning to real mode was the 16-bit 80286 - on all later ones it's as simple as clearing bit 0 of CR0 (and also disabling paging if that was enabled).<p>Nothing more privileged than ring 0 is required for that.<p>"v86" is what allowed real mode to be virtualized under a 32-bit OS. This is no longer available <i>in 64-bit mode</i>, but the CPU still includes it (as well as newer virtualization features which could be used to do the same thing).</p>
]]></description><pubDate>Fri, 06 Mar 2026 21:03:50 +0000</pubDate><link>https://news.ycombinator.com/item?id=47281037</link><dc:creator>rep_lodsb</dc:creator><comments>https://news.ycombinator.com/item?id=47281037</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47281037</guid></item><item><title><![CDATA[New comment by rep_lodsb in "The Looming AI Clownpocalypse"]]></title><description><![CDATA[
<p>The scenario was about the first fusion (hydrogen) bomb test causing a runaway "ignition" of the atmosphere. It was never considered likely, but they still did the math to make certain it couldn't happen.</p>
]]></description><pubDate>Mon, 02 Mar 2026 17:46:35 +0000</pubDate><link>https://news.ycombinator.com/item?id=47221366</link><dc:creator>rep_lodsb</dc:creator><comments>https://news.ycombinator.com/item?id=47221366</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47221366</guid></item><item><title><![CDATA[New comment by rep_lodsb in "80386 Protection"]]></title><description><![CDATA[
<p>Why is that surprising? The trap into kernel mode alone would already take more cycles than dedicated hardware needs for the full page table walk.</p>
]]></description><pubDate>Fri, 27 Feb 2026 14:07:21 +0000</pubDate><link>https://news.ycombinator.com/item?id=47180617</link><dc:creator>rep_lodsb</dc:creator><comments>https://news.ycombinator.com/item?id=47180617</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47180617</guid></item><item><title><![CDATA[New comment by rep_lodsb in "80386 Protection"]]></title><description><![CDATA[
<p>In TempleOS, everything runs in ring 0, but that's not the same as doing protection in software (which would require disallowing any native code not produced by some trusted translator). It simply means there's no protection at all.</p>
]]></description><pubDate>Fri, 27 Feb 2026 14:04:49 +0000</pubDate><link>https://news.ycombinator.com/item?id=47180591</link><dc:creator>rep_lodsb</dc:creator><comments>https://news.ycombinator.com/item?id=47180591</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47180591</guid></item><item><title><![CDATA[New comment by rep_lodsb in "80386 Protection"]]></title><description><![CDATA[
<p>That's because CS in real/V86 mode is actually a writable <i>data</i> segment. Most protection checks work exactly the same in any mode, but the "is this a code segment?" check is only done when CS is loaded in protected mode, and not on any subsequent code fetch.<p>Using a non-standard mechanism of loading CS (LOADALL or RSM), it's possible to have a writable CS in protected mode too, at least on these older processors.<p>There's actually a slight difference in the access rights byte that gets loaded into the hidden part of a segment register (aka "descriptor cache") between real and protected mode. I first noticed this on the 80286, and it looks to be the same on the 386:<p>- In protected mode, the byte always matches that from the GDT/LDT entry: bit 4 (code/data segment vs. system) must be set, the segment load instruction won't allow otherwise, bit 0 (accessed) is set automatically (and written back to memory).<p>- In real and V86 mode, both of these bits are clear. So in V86 mode the value is 0xE2 instead of the "correct" 0xF3 for a ring 3 data segment, and similarly in real mode it's 0x82 (ring 0).<p>The hardware seems to simply ignore these bits, but they still exist in the register, unlike other "useless" bits. For example, LDT only has bit 7 (present), and GDT/IDT/TSS have no access rights byte at all - they're always assumed to be present, and the access rights byte reads as 0xFF. At least on the 286 that was the case, I've read that on the Pentium you can even mark GDT as not-present, and then get a triple fault on any access to it.<p>Keeping these bits, and having them different between modes might have been an intentional choice, making it possible to determine (by ICE monitor software) in what mode a segment got loaded. Maybe even the two other possible combinations (where bit4 != bit0) have some use to mark a "special" segment type that is never set by hardware?</p>
]]></description><pubDate>Fri, 27 Feb 2026 13:59:35 +0000</pubDate><link>https://news.ycombinator.com/item?id=47180546</link><dc:creator>rep_lodsb</dc:creator><comments>https://news.ycombinator.com/item?id=47180546</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47180546</guid></item><item><title><![CDATA[New comment by rep_lodsb in "ATAboy is a USB adapter for legacy CHS only style IDE (PATA) drives"]]></title><description><![CDATA[
<p>Thanks for trying to educate the young whippersnappers about hard drives, but a lot of this rambling seems entirely off-topic.<p>>Unless you can manually set CHS in BIOS to match, which a USB adapter won't let you do anything you want like BIOS. A Pi could substitute for that but it was never really a good idea, mainly useful to set a non-default CHS on one drive to match the default CHS on an established drive when both are plugged into the same motherboard.<p>USB hard drives act as SCSI block devices, they don't have a CHS geometry and sectors are addressed by a single number (LBA=Linear Block Address).<p>Again: the purpose of this device is to connect an OLD HARD DISK to a MODERN COMPUTER. Not the other way around! If you plug it in and try to boot from with a BIOS / UEFI CSM that supports this, it will make up a CHS geometry based on the total number of sectors, instead of using the (real or translated) one that the drive actually uses and reports in its "IDENTIFY DEVICE" response. Because it's connected over USB and behaves like any other USB mass storage device.<p>That may well lead to problems when booting DOS from a drive that was formatted in some other machine, because the MBR will not use the same geometry. But that's not what this is for.<p>>If I was being very skeptical, I would say it's possible the coder didn't even know that USB adapters exist.<p>From the second paragraph in the readme: «« While cheap, modern adapters usually only work with newer "LBA" type drives, ATAboy works all the way back to the earliest CHS only, PIO Mode 0, ATA disks. »»</p>
]]></description><pubDate>Sat, 21 Feb 2026 20:49:29 +0000</pubDate><link>https://news.ycombinator.com/item?id=47104600</link><dc:creator>rep_lodsb</dc:creator><comments>https://news.ycombinator.com/item?id=47104600</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47104600</guid></item><item><title><![CDATA[New comment by rep_lodsb in "ATAboy is a USB adapter for legacy CHS only style IDE (PATA) drives"]]></title><description><![CDATA[
<p>Supposedly the problem is that these adapters only work with LBA, which wasn't supported by every drive in the very early days of IDE.<p>But maybe some of these cheap adapters do in fact work with CHS, or that specific 40 MB drive with LBA?</p>
]]></description><pubDate>Sat, 21 Feb 2026 15:43:57 +0000</pubDate><link>https://news.ycombinator.com/item?id=47101798</link><dc:creator>rep_lodsb</dc:creator><comments>https://news.ycombinator.com/item?id=47101798</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47101798</guid></item><item><title><![CDATA[New comment by rep_lodsb in "ATAboy is a USB adapter for legacy CHS only style IDE (PATA) drives"]]></title><description><![CDATA[
<p>Seems to me from reading the deleted text file[1] like the author[2] used an LLM to get feedback on how to improve their own code. That isn't at all what "vibe-coding" usually means, and I say that as a complete AI hater myself.<p>Or do you have some "smoking gun" evidence?<p>I think the setup screen is a really nice touch and not something an AI would come up with.<p>[1] <a href="https://github.com/redruM0381/ATAboy/commit/4e55223acd1c8cdc199a7a26ec546c2e01ecce1d" rel="nofollow">https://github.com/redruM0381/ATAboy/commit/4e55223acd1c8cdc...</a><p>[2] or someone else? it keeps using the phrase "your friend"</p>
]]></description><pubDate>Sat, 21 Feb 2026 13:50:02 +0000</pubDate><link>https://news.ycombinator.com/item?id=47100840</link><dc:creator>rep_lodsb</dc:creator><comments>https://news.ycombinator.com/item?id=47100840</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47100840</guid></item><item><title><![CDATA[New comment by rep_lodsb in "ATAboy is a USB adapter for legacy CHS only style IDE (PATA) drives"]]></title><description><![CDATA[
<p>This has nothing to do with this project. It's an adapter for connecting (very) old hard drives which only support CHS to a modern computer via USB, so that you can copy the data off them.</p>
]]></description><pubDate>Sat, 21 Feb 2026 13:40:44 +0000</pubDate><link>https://news.ycombinator.com/item?id=47100751</link><dc:creator>rep_lodsb</dc:creator><comments>https://news.ycombinator.com/item?id=47100751</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47100751</guid></item><item><title><![CDATA[New comment by rep_lodsb in "Fast Sorting, Branchless by Design"]]></title><description><![CDATA[
<p>Yes, looking at the source code on GitHub now cleared that up!<p>Didn't see it mentioned in the article though, maybe I missed it. If not, I think that this detail would be a good thing to include, both since it's a common mistake that others with less experience might make, and to get ahead of nitpicky comments like mine :)</p>
]]></description><pubDate>Fri, 20 Feb 2026 17:28:48 +0000</pubDate><link>https://news.ycombinator.com/item?id=47090981</link><dc:creator>rep_lodsb</dc:creator><comments>https://news.ycombinator.com/item?id=47090981</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47090981</guid></item><item><title><![CDATA[New comment by rep_lodsb in "Fast Sorting, Branchless by Design"]]></title><description><![CDATA[
<p>It makes no difference whether they're signed or unsigned. Unless the subtraction is checking for overflow, or using a wider integer type than the numbers being compared, the high bit will not in every case indicate which number is smaller.<p>e.g.<p><pre><code>    0x8000_0000 < 0x0000_0001 for signed numbers
    0x8000_0000 - 0x0000_0001 = 0x7fff_ffff, high bit clear</code></pre></p>
]]></description><pubDate>Fri, 20 Feb 2026 17:02:26 +0000</pubDate><link>https://news.ycombinator.com/item?id=47090615</link><dc:creator>rep_lodsb</dc:creator><comments>https://news.ycombinator.com/item?id=47090615</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47090615</guid></item></channel></rss>