<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: Pannoniae</title><link>https://news.ycombinator.com/user?id=Pannoniae</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Mon, 15 Jun 2026 07:12:41 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=Pannoniae" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by Pannoniae in "Orthodox C++ (2016)"]]></title><description><![CDATA[
<p>They're just clearly inferior in pretty much any situation.<p>The map stuff the other posters summed up well but even std::vector is dogshit with pretty much all implementations having inlined grow code in push_back, a not too great API and missed optimisations e.g. no trivial relocation when growing the vector / moving it and no useful APIs such as "grow but don't initialise"...</p>
]]></description><pubDate>Sat, 13 Jun 2026 22:33:08 +0000</pubDate><link>https://news.ycombinator.com/item?id=48522160</link><dc:creator>Pannoniae</dc:creator><comments>https://news.ycombinator.com/item?id=48522160</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48522160</guid></item><item><title><![CDATA[New comment by Pannoniae in "Everything in C is undefined behavior"]]></title><description><![CDATA[
<p>Exactly, you write for your target, not some imaginary spec. The spec is only as useful as to predict what your target roughly does, it's not normative.<p>Compilers might have bugs where the spec is supposed to work but it doesn't, and many extensions without standard equivalents, or implementation-specific behaviour where undefined things in the standard do get assigned a meaningful outcome.</p>
]]></description><pubDate>Thu, 21 May 2026 01:00:51 +0000</pubDate><link>https://news.ycombinator.com/item?id=48216454</link><dc:creator>Pannoniae</dc:creator><comments>https://news.ycombinator.com/item?id=48216454</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48216454</guid></item><item><title><![CDATA[New comment by Pannoniae in "C++26 Shipped a SIMD Library Nobody Asked For"]]></title><description><![CDATA[
<p>Sure, if you're willing to write a large enough chunk that you can eat the cost of not inlining it. If you just write a small leaf function or two, it will probably be a wash or perform worse.</p>
]]></description><pubDate>Mon, 18 May 2026 11:47:03 +0000</pubDate><link>https://news.ycombinator.com/item?id=48178333</link><dc:creator>Pannoniae</dc:creator><comments>https://news.ycombinator.com/item?id=48178333</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48178333</guid></item><item><title><![CDATA[New comment by Pannoniae in "C++26 Shipped a SIMD Library Nobody Asked For"]]></title><description><![CDATA[
<p>sadly inline assembly is still at the ergonomics of "one compiler doesn't support it in x64 mode" and "you can choose between the readable syntax (which is a black box to the compiler) and the unreadable syntax (which can specify I/O/clobber regs)"</p>
]]></description><pubDate>Sun, 17 May 2026 09:17:28 +0000</pubDate><link>https://news.ycombinator.com/item?id=48167295</link><dc:creator>Pannoniae</dc:creator><comments>https://news.ycombinator.com/item?id=48167295</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48167295</guid></item><item><title><![CDATA[New comment by Pannoniae in "Screenshots of Old Desktop OSes"]]></title><description><![CDATA[
<p>Hi! I'm slightly under that so I feel like I'm qualified :)<p>I wholeheartedly agree, they're quite a regression.... although I don't think this is a popular opinion around here.<p>When people say "something used to be better" they usually don't mean literally, they mean that for the circumstances, it was better. Of course, more modern systems support more hardware, more features, etc., but if you made those same modern technical improvements on top of an older designs, you'd get much better results.<p>To me it looks like software design has been massively overtaken by "form over function", everyone just wants a unique "brand" but the actual UX is complete dogshit.  Borderless buttons, zero indication what's clickable, no visual delimiters for different areas of programs, no good shortcut / altkey menu support, etc....<p>This has somehow infected even Linux to such a crazy extent...</p>
]]></description><pubDate>Tue, 12 May 2026 16:42:57 +0000</pubDate><link>https://news.ycombinator.com/item?id=48110735</link><dc:creator>Pannoniae</dc:creator><comments>https://news.ycombinator.com/item?id=48110735</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48110735</guid></item><item><title><![CDATA[New comment by Pannoniae in "Show HN: Building a web server in assembly to give my life (a lack of) meaning"]]></title><description><![CDATA[
<p>I've never said that, but using assembly in certain places can certainly be justified, especially for the performance-intensive parts.</p>
]]></description><pubDate>Mon, 11 May 2026 21:01:07 +0000</pubDate><link>https://news.ycombinator.com/item?id=48100628</link><dc:creator>Pannoniae</dc:creator><comments>https://news.ycombinator.com/item?id=48100628</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48100628</guid></item><item><title><![CDATA[New comment by Pannoniae in "Show HN: Building a web server in assembly to give my life (a lack of) meaning"]]></title><description><![CDATA[
<p>You also depend on {computers, the internet, electricity, groceries, etc.}, that's not the discriminating factor.... the question is, are you actually better at your job using it, and are you stunting your own growth?<p>I'm not claiming to have a definite answer to either, but I think the right question to ask is - are you going to benefit from using it in the long run? If yes, carry on, if no, re-evaluate what you're doing :)</p>
]]></description><pubDate>Sun, 10 May 2026 13:41:02 +0000</pubDate><link>https://news.ycombinator.com/item?id=48083912</link><dc:creator>Pannoniae</dc:creator><comments>https://news.ycombinator.com/item?id=48083912</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48083912</guid></item><item><title><![CDATA[New comment by Pannoniae in "Show HN: Building a web server in assembly to give my life (a lack of) meaning"]]></title><description><![CDATA[
<p>Look at the bright side, it's much more feasible now :)<p>Yes, it's not deterministic, and if you were using it commercially, the ROI would be terrible, and it's certainly not <i>reliable</i> but for a hobby project.... why not?<p>Encouraging people to understand the layer of abstractions they're building on is helpful, doesn't matter if they do it by hand or with clankers.<p>LLMs lower the barrier for execution - they make you <i>faster</i>. The unstated question is: faster at <i>what</i> - they can make you faster at something clever, or faster at the entirely wrong thing...<p>Your point is correct if we're looking at it through a scarcity lens - the effort to make it certainly decreased a lot - but that doesn't mean that anything is now worthless. We can just move onto doing bigger, better things now, until we hit the next limits...</p>
]]></description><pubDate>Sun, 10 May 2026 13:32:04 +0000</pubDate><link>https://news.ycombinator.com/item?id=48083837</link><dc:creator>Pannoniae</dc:creator><comments>https://news.ycombinator.com/item?id=48083837</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48083837</guid></item><item><title><![CDATA[New comment by Pannoniae in "Show HN: Building a web server in assembly to give my life (a lack of) meaning"]]></title><description><![CDATA[
<p>That's just not true... the flags to get preprocessed output and assembly are quite useful and used a fair bit, in fact. Multiple reasons - sanitychecking your code, finding bugs, or even finding compiler errors.</p>
]]></description><pubDate>Sun, 10 May 2026 13:27:17 +0000</pubDate><link>https://news.ycombinator.com/item?id=48083802</link><dc:creator>Pannoniae</dc:creator><comments>https://news.ycombinator.com/item?id=48083802</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48083802</guid></item><item><title><![CDATA[New comment by Pannoniae in "Show HN: Building a web server in assembly to give my life (a lack of) meaning"]]></title><description><![CDATA[
<p>You'd be surprised, again.... most compilers don't generate very good code, mostly because<p>1. the time for optimisation is limited<p>2. the constraints are overlapping and just completely intractable beyond a single function (do you want to inline this, saving on the call and increasing binary size, or not do it because it's cold?)<p>3. they don't have domain-specific knowledge about your code, and even with PGO, they might incorrectly decide what's hot and what's not - typical example are program settings. You didn't enable a setting during PGO instrumentation, compiler sees you didn't call that path, shoves it out of line. Now your PGO-optimised code is worse than -O2. And compilers have different levels of adherence to manual branch hinting - on MSVC you get a reorder at best, Clang and GCC try much harder at [[likely]] and [[unlikely]].<p>4. There's still quite a bit of low-hanging fruit left, mostly because progress is jagged ;) For example our calling conventions generally suck - this is actually why inlining is so helpful - and the inertia makes everyone emit the default calling convention and that's it.<p>For example, did you know that compilers have very inconsistent support for struct unpacking? It can be much faster to write<p><pre><code>  int32 meow(int64 a, int64 b);
</code></pre>
than<p><pre><code>  struct mytype {
    int64 x;
    int64 y;
  };

  int32 meow(mytype a);
</code></pre>
because the first one goes through registers on the MSVC ABI, the second one gets lowered to the caller passing a pointer to the stack. Before someone says "oh this just means MS sucks" - fair, but for std::unique_ptr the situation is the other way around... on the MSVC ABI the callee cleans it up so it's truly zero-cost, but on the Itanium ABI using it is worse than using T* as a raw pointer... see the GCC codegen :)<p>These examples <i>might</i> seem a bit cherrypicked but this is only scratching the surface, not to talk about the codegen in higher-level languages, which is even more dreadful. Manually optimising your code can usually get <i>a magnitude</i> worth of free performance, which is just tragic.<p>I wouldn't even rule out LLM codegen in the future - although they're quite unreliable today so you'd get miscompiles like crazy - but there's just so much low-hanging fruit left on the table that it wouldn't be too out of step...</p>
]]></description><pubDate>Sun, 10 May 2026 12:21:14 +0000</pubDate><link>https://news.ycombinator.com/item?id=48083397</link><dc:creator>Pannoniae</dc:creator><comments>https://news.ycombinator.com/item?id=48083397</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48083397</guid></item><item><title><![CDATA[New comment by Pannoniae in "Nobody Reviews Compiler Output"]]></title><description><![CDATA[
<p>Just like LLMs, compilers are just another layer of abstraction and no they're not deterministic.<p>Just yesterday I've reported a codegen bug in MSVC. (Luckily they've fixed it very fast.)
Can you realise that it's an optimiser bug without inspecting the assembly? Hardly.<p>All the arguments people claim against LLMs are similarly applicable to compilers, but compilers are old technology and LLMs are new.<p>If you're an expert, just about every compiled function contains obvious inefficiencies, and a skilled assembly programmer can speed it up by in the ballpark of 3x. If we're talking about your average webapp, you can usually get 1000x better resource usage in most ways, including CPU, RAM, storage and so on.<p>And the output isn't deterministic either - the bugs no withstanding, code generation is highly chaotic, optimisations have non-local impacts and you can't easily predict optimised codegen output from source.<p>LLMs aren't much worse. They have non-deterministic output, but you can steer it - similarly to a compiler. An expert can use it to gain great speed and efficiency, but in the hands of someone not as capable, you can make something awful just as fast. Both tools are force multipliers.</p>
]]></description><pubDate>Thu, 07 May 2026 19:59:01 +0000</pubDate><link>https://news.ycombinator.com/item?id=48054097</link><dc:creator>Pannoniae</dc:creator><comments>https://news.ycombinator.com/item?id=48054097</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48054097</guid></item><item><title><![CDATA[New comment by Pannoniae in "The bottleneck was never the code"]]></title><description><![CDATA[
<p>Unless something radical changes (and that isn't unprecedented! I'm just writing this as of today), the trend is still "just" a bigger hammer. It's bigger, you can get way more done, but the blast radius is also larger.<p>Take the strawman: even if AI can one-shot basically any application below let's say, 1MLoC, if your prompt is 4 lines, it will generate <i>something</i>. It can't read your mind. If you make proper specs, then you'll get what you want - but many people don't know what they want. And even if they do, they might have contradictions in their requirements, might be asking for something impossible, etc.</p>
]]></description><pubDate>Thu, 07 May 2026 11:50:55 +0000</pubDate><link>https://news.ycombinator.com/item?id=48048253</link><dc:creator>Pannoniae</dc:creator><comments>https://news.ycombinator.com/item?id=48048253</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48048253</guid></item><item><title><![CDATA[New comment by Pannoniae in "Appearing productive in the workplace"]]></title><description><![CDATA[
<p>All of it hell no :D But just with any things, you break things down into subtasks. Then you break it down even more. You as a human don't hold all that stuff in your head either, so why would an LLM?<p>My current codebase is ~3 million LoC all in all (not greenfield, really old code), working on it by myself, the complexity is definitely manageable between Claude and me :)</p>
]]></description><pubDate>Thu, 07 May 2026 10:11:34 +0000</pubDate><link>https://news.ycombinator.com/item?id=48047565</link><dc:creator>Pannoniae</dc:creator><comments>https://news.ycombinator.com/item?id=48047565</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48047565</guid></item><item><title><![CDATA[New comment by Pannoniae in "How do I inform Windows that I'm writing a binary file?"]]></title><description><![CDATA[
<p>Calling win32 from other languages is supported, calling it from assembly is supported (as long as you use the calling convention properly, obviously), using ntdll to bypass the win32 API is not supported.<p>Basically on Linux the syscalls are the equivalent of Win32 except much narrower in scope.</p>
]]></description><pubDate>Thu, 07 May 2026 02:04:25 +0000</pubDate><link>https://news.ycombinator.com/item?id=48044550</link><dc:creator>Pannoniae</dc:creator><comments>https://news.ycombinator.com/item?id=48044550</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48044550</guid></item><item><title><![CDATA[New comment by Pannoniae in "Appearing productive in the workplace"]]></title><description><![CDATA[
<p>Sure but even wiring that utility function in is work :D If you have even just a 2-3-million LoC codebase, not even something <i>truly</i> enormous - making global changes does require typing, and a whole lot of it...</p>
]]></description><pubDate>Thu, 07 May 2026 01:03:26 +0000</pubDate><link>https://news.ycombinator.com/item?id=48044144</link><dc:creator>Pannoniae</dc:creator><comments>https://news.ycombinator.com/item?id=48044144</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48044144</guid></item><item><title><![CDATA[New comment by Pannoniae in "“Kitten Space Agency”, a Spiritual Successor to “Kerbal Space Program” (2025)"]]></title><description><![CDATA[
<p>I don't follow, sorry.<p>1. In order to publish a game to a console, you do need an agreement with the console manufacturer. (Unless you're doing homebrew but then the point is moot.)<p>2. In that case, you do get access to the official documentation, everything is solid.<p>3. The word "legally" has a lot of bearing there. Sure, they have to. And if they don't, what? Will the other contributors sue them? If they aren't willing to do that, then they can get away with it.<p>4. The context is about someone trying to hack the devices. ("Who knows what some enterprising hacker might be able to glean about the workings of the console by looking at the APIs.") They certainly won't be bothered by NDAs.</p>
]]></description><pubDate>Thu, 07 May 2026 01:01:40 +0000</pubDate><link>https://news.ycombinator.com/item?id=48044135</link><dc:creator>Pannoniae</dc:creator><comments>https://news.ycombinator.com/item?id=48044135</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48044135</guid></item><item><title><![CDATA[New comment by Pannoniae in "The bottleneck was never the code"]]></title><description><![CDATA[
<p>Yeah, you're definitely right about the shifting goalposts ("it's a stochastic parrot" -> "it hallucinates all the time, it can't even get APIs right" -> "it can generate functions but can't reason about the codebase" -> "the bottleneck was never shipping code")<p>At the same time, humans can move up the abstraction ladder faster than the LLMs can. At least, <i>some</i> humans. Agents can produce lots of code. They can also do the entirely wrong thing. The impact of wrong decisions have been massively write-amplified with more and more intelligent LLMs. With earlier ones, it got a sentence or a function wrong, you reprompted, the cost of a mistake was 10 seconds. Now, you can burn hours or even days of work on the entirely wrong thing without a competent human operator stepping in and course-correcting.<p>The trajectory of agents have been bigger and bigger context windows, bigger autonomy, but at the same time, a bigger blast radius. In this context, I don't think the human experts will be out of their jobs any time soon.</p>
]]></description><pubDate>Thu, 07 May 2026 00:36:43 +0000</pubDate><link>https://news.ycombinator.com/item?id=48043936</link><dc:creator>Pannoniae</dc:creator><comments>https://news.ycombinator.com/item?id=48043936</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48043936</guid></item><item><title><![CDATA[New comment by Pannoniae in "Appearing productive in the workplace"]]></title><description><![CDATA[
<p>Ideally. But that requires the correct abstraction, requires keeping it up to date.... that's basically an unachievable ideal. You either have overabstraction/overengineering (most codebases) or you have repetition. Repetition is actually more preferable in the LLM-world because you have to keep less stuff in your head. And the LLM's head too.<p>Even if something <i>does</i> look copypasted, it might actually be semantically distinct enough that if you couple them, you'll create a brittle mess.<p>Additionally, there's always going to be global changes (update the code style, document things, refactor into a new pattern, add new functionality to callers, etc.). The question isn't whether you use your lanuage's tools or you do it by hand, the question is whether you use an LLM or do it by hand :P</p>
]]></description><pubDate>Wed, 06 May 2026 22:43:27 +0000</pubDate><link>https://news.ycombinator.com/item?id=48042876</link><dc:creator>Pannoniae</dc:creator><comments>https://news.ycombinator.com/item?id=48042876</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48042876</guid></item><item><title><![CDATA[New comment by Pannoniae in "“Kitten Space Agency”, a Spiritual Successor to “Kerbal Space Program” (2025)"]]></title><description><![CDATA[
<p>All of them you can already find on the internet with only a bit of searching btw. With the docs and headers and everything.<p>The only people who this stops are the people who want to do things "by the book". :P</p>
]]></description><pubDate>Tue, 05 May 2026 11:54:00 +0000</pubDate><link>https://news.ycombinator.com/item?id=48021227</link><dc:creator>Pannoniae</dc:creator><comments>https://news.ycombinator.com/item?id=48021227</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48021227</guid></item><item><title><![CDATA[New comment by Pannoniae in "Security through obscurity is not bad"]]></title><description><![CDATA[
<p>That isn't technically true either ;) (sorry to be pedantic!)<p>If your data is encrypted, what your adversary needs is some information about you - which they can gather by either buying it from someone or by investigating you - and a $10 wrench to go over there and get the keys out from you...<p>Most secrets are only secrets because the combination of obscurity and incentives raises the bar high enough so no one who wants to bother <i>really</i> bothers.</p>
]]></description><pubDate>Sun, 03 May 2026 20:18:35 +0000</pubDate><link>https://news.ycombinator.com/item?id=48000988</link><dc:creator>Pannoniae</dc:creator><comments>https://news.ycombinator.com/item?id=48000988</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48000988</guid></item></channel></rss>