<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: glouwbug</title><link>https://news.ycombinator.com/user?id=glouwbug</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Thu, 08 Oct 2026 01:10:29 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=glouwbug" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by glouwbug in "God of War on PSP, recompiled to WebAssembly and running in the browser"]]></title><description><![CDATA[
<p>AI excels at this because it can work at the function level to brute force decomp to C with void* fiascos and keep trialing and erroring until the compiled md5sum matches the original binary’s. The resulting source will be unreadable and unmaintainable but at least compiler and platform agnostic.<p>Humans are still better at this given time. Check out sm64’s decomp quality</p>
]]></description><pubDate>Wed, 07 Oct 2026 18:46:31 +0000</pubDate><link>https://news.ycombinator.com/item?id=49997123</link><dc:creator>glouwbug</dc:creator><comments>https://news.ycombinator.com/item?id=49997123</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49997123</guid></item><item><title><![CDATA[New comment by glouwbug in "There are only 5,000 elite software engineers in the world"]]></title><description><![CDATA[
<p>Bisqwit is there too</p>
]]></description><pubDate>Sun, 04 Oct 2026 02:50:35 +0000</pubDate><link>https://news.ycombinator.com/item?id=49950144</link><dc:creator>glouwbug</dc:creator><comments>https://news.ycombinator.com/item?id=49950144</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49950144</guid></item><item><title><![CDATA[New comment by glouwbug in "Why the Bronze Age Collapsed"]]></title><description><![CDATA[
<p>I wonder if the sea people were just displaced-farmers-turned-raiders that created some open loop feedback that in turn spawned more sea people in self defence or self survival.<p>The mythological idea of them just appearing out of nowhere is nice too. Makes it feel aligned with something like the pyramids having no explanation</p>
]]></description><pubDate>Thu, 01 Oct 2026 03:18:59 +0000</pubDate><link>https://news.ycombinator.com/item?id=49917326</link><dc:creator>glouwbug</dc:creator><comments>https://news.ycombinator.com/item?id=49917326</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49917326</guid></item><item><title><![CDATA[New comment by glouwbug in "The problem is not AI code, but not knowing about system architecture or intent"]]></title><description><![CDATA[
<p>Of course its unfair. You're competing against students</p>
]]></description><pubDate>Mon, 28 Sep 2026 16:41:56 +0000</pubDate><link>https://news.ycombinator.com/item?id=49880791</link><dc:creator>glouwbug</dc:creator><comments>https://news.ycombinator.com/item?id=49880791</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49880791</guid></item><item><title><![CDATA[New comment by glouwbug in "The problem is not AI code, but not knowing about system architecture or intent"]]></title><description><![CDATA[
<p>Wouldn't engineering then be the safest place to be? Engineers have always been embedding loose requirements into runtime law. They (supposedly) understand the business model better than most and have the technical know how to validate that</p>
]]></description><pubDate>Mon, 28 Sep 2026 16:40:33 +0000</pubDate><link>https://news.ycombinator.com/item?id=49880764</link><dc:creator>glouwbug</dc:creator><comments>https://news.ycombinator.com/item?id=49880764</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49880764</guid></item><item><title><![CDATA[New comment by glouwbug in "The problem is not AI code, but not knowing about system architecture or intent"]]></title><description><![CDATA[
<p>When you write something you constantly remodel your understanding through refactors and rewrites until you internalize it. By internalizing it you gain the capacity to reason about it (during critical downtime) and communicate it. An entire team that can communicate can solve problems together, from one guy's vision to products white boarding to engineering's infrastructure to UX and UI's artistry.<p>It boggles me we completely forgot that the world operated like this just 4 years ago</p>
]]></description><pubDate>Mon, 28 Sep 2026 16:32:23 +0000</pubDate><link>https://news.ycombinator.com/item?id=49880621</link><dc:creator>glouwbug</dc:creator><comments>https://news.ycombinator.com/item?id=49880621</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49880621</guid></item><item><title><![CDATA[New comment by glouwbug in "Writing Efficient C++ Code (2013)"]]></title><description><![CDATA[
<p>That, and it frees the compiler from reasoning about virtual inlining, and that the std::variant approach can pack potentially more than one object into a single cacheline. TLBs also work with 4096 byte pages, so 32 polymorphic 128 byte entities may (at the absolute worst case) use 32 distinct pages which requires 32 TLB virtual translations, while the std::variant one uses 1.<p>The next step of going SOA benefits from all of the above, it just further unlocks you packed quad and oct instructions (AVX256 and 512 depending if you buy AMD or not).</p>
]]></description><pubDate>Sun, 27 Sep 2026 17:57:19 +0000</pubDate><link>https://news.ycombinator.com/item?id=49869079</link><dc:creator>glouwbug</dc:creator><comments>https://news.ycombinator.com/item?id=49869079</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49869079</guid></item><item><title><![CDATA[New comment by glouwbug in "Writing Efficient C++ Code (2013)"]]></title><description><![CDATA[
<p>Likely the best tip would to `objdump -d` and inspect the assembly then checking performance counters. Prepending (__attribute__((used)) will allow you to inspect your functions.<p>A quick restrict example:<p><pre><code>    #define fn __attribute__((used))

    fn void copy1(int* to, const int* from, const int size)
    {
        for(int i = 0; i < size; i++)
            to[i] = from[i];
    }

    fn void copy2(int* to, const int* from)
    {   
        constexpr int size = 1024;
        for(int i = 0; i < size; i++) 
            to[i] = from[i];
    }

    fn void copy3(int* restrict to, const int* restrict from)
    {
        constexpr int size = 1024;
        for(int i = 0; i < size; i++) 
            to[i] = from[i];
    }

    gcc test.c -c -O3 && objdump -d ./test.o
</code></pre>
copy1 is 52 lines, copy2 is 28 lines, copy3 is 2 lines (just a call to memcpy).<p>This is a good starting point for self teaching. The impact of your TLB, L1, and overall instruction count (with IPC) can further be measured with `./perf stat -d -d -d ./a.out`. If you want a quick rule of thumb, no instructions are fast instructions.</p>
]]></description><pubDate>Sun, 27 Sep 2026 17:36:14 +0000</pubDate><link>https://news.ycombinator.com/item?id=49868881</link><dc:creator>glouwbug</dc:creator><comments>https://news.ycombinator.com/item?id=49868881</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49868881</guid></item><item><title><![CDATA[New comment by glouwbug in "Writing Efficient C++ Code (2013)"]]></title><description><![CDATA[
<p>True, but moving from a list of unique polymorphic pointers to a std::variant gains you at least a 2-3x speed up in terms of TLB and cacheline locality. From there, swapping to SOA will net you another 4-8x, so you're looking at nearly 25x improvement by going data first. That may not matter in the unique case of say, games, where rendering a million entities will dwarf the cost of SIMD processing a million entities, but in something like numerical simulations (fluids) or quant it will be warmly welcomed</p>
]]></description><pubDate>Sun, 27 Sep 2026 17:05:21 +0000</pubDate><link>https://news.ycombinator.com/item?id=49868546</link><dc:creator>glouwbug</dc:creator><comments>https://news.ycombinator.com/item?id=49868546</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49868546</guid></item><item><title><![CDATA[New comment by glouwbug in "Writing Efficient C++ Code (2013)"]]></title><description><![CDATA[
<p>Learn which instructions SIMD nicely (sqrt / fabs, etc). Use ternaries in loops for masking. Use trig identities and lookup tables (don't recompute sin(3t) when you can use two vector multiples using a table of sin(t) eg. sin(t) * sin(t) * sin(t)). Use divisible constexpr constants in loops to eliminate the SIMD tail. Be careful with type casts and floats. `float x; x += 0.5` will introduce *cvt instructions even if the compiler statically knew better otherwise (use 0.5f). Compile with --fast-math and friends so errno doesn't invalidate your SIMD pipeline.</p>
]]></description><pubDate>Sun, 27 Sep 2026 16:59:47 +0000</pubDate><link>https://news.ycombinator.com/item?id=49868489</link><dc:creator>glouwbug</dc:creator><comments>https://news.ycombinator.com/item?id=49868489</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49868489</guid></item><item><title><![CDATA[New comment by glouwbug in "Mercury 2.5 LLM hits 770 tokens per second"]]></title><description><![CDATA[
<p>Some of us want fast food</p>
]]></description><pubDate>Wed, 23 Sep 2026 23:30:19 +0000</pubDate><link>https://news.ycombinator.com/item?id=49824118</link><dc:creator>glouwbug</dc:creator><comments>https://news.ycombinator.com/item?id=49824118</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49824118</guid></item><item><title><![CDATA[New comment by glouwbug in "Samsung accidentally freezes its smart fridges with a software update"]]></title><description><![CDATA[
<p>From fridge to freezer</p>
]]></description><pubDate>Wed, 23 Sep 2026 15:05:00 +0000</pubDate><link>https://news.ycombinator.com/item?id=49817276</link><dc:creator>glouwbug</dc:creator><comments>https://news.ycombinator.com/item?id=49817276</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49817276</guid></item><item><title><![CDATA[New comment by glouwbug in "Trying the software factory pattern"]]></title><description><![CDATA[
<p>A whole industry is about to rediscover software engineering fundamentals</p>
]]></description><pubDate>Mon, 21 Sep 2026 01:32:53 +0000</pubDate><link>https://news.ycombinator.com/item?id=49782034</link><dc:creator>glouwbug</dc:creator><comments>https://news.ycombinator.com/item?id=49782034</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49782034</guid></item><item><title><![CDATA[New comment by glouwbug in "GPT-6 Astra Solves a WWI German Radio Cipher"]]></title><description><![CDATA[
<p>Maybe with this piece of information we can end WWI</p>
]]></description><pubDate>Sat, 19 Sep 2026 17:48:42 +0000</pubDate><link>https://news.ycombinator.com/item?id=49768657</link><dc:creator>glouwbug</dc:creator><comments>https://news.ycombinator.com/item?id=49768657</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49768657</guid></item><item><title><![CDATA[New comment by glouwbug in "Vectorized and performance-portable Quicksort (2022)"]]></title><description><![CDATA[
<p>I'm not sure I follow. C++ just added a SIMD library for this exact problem. And even then, SIMD-intrinsic-free C++ with the right data structures and some basic hardware understanding gets you mostly there in a hardware agnostic portable way.</p>
]]></description><pubDate>Fri, 18 Sep 2026 17:06:16 +0000</pubDate><link>https://news.ycombinator.com/item?id=49757228</link><dc:creator>glouwbug</dc:creator><comments>https://news.ycombinator.com/item?id=49757228</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49757228</guid></item><item><title><![CDATA[New comment by glouwbug in "Fuck it, make it anyway"]]></title><description><![CDATA[
<p>Right, but that is  self contained domain. Hook it up to anything and an impedance mismatch will offset the intent of your poles. Failure modes, cross domains, integration, loads, design intersections; AI can build components, but its the sprouting of these components that exponentially magnifies the number of failure modes.<p>Engineering needs to be failure free, or at least failure preventive via redundancy, and the latter requires the same full systems understands as the former</p>
]]></description><pubDate>Fri, 18 Sep 2026 16:50:20 +0000</pubDate><link>https://news.ycombinator.com/item?id=49756998</link><dc:creator>glouwbug</dc:creator><comments>https://news.ycombinator.com/item?id=49756998</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49756998</guid></item><item><title><![CDATA[New comment by glouwbug in "C++26: Trivial infinite loops are no longer undefined behaviour"]]></title><description><![CDATA[
<p>I think you're thinking of (;,,;)</p>
]]></description><pubDate>Fri, 18 Sep 2026 15:44:50 +0000</pubDate><link>https://news.ycombinator.com/item?id=49756095</link><dc:creator>glouwbug</dc:creator><comments>https://news.ycombinator.com/item?id=49756095</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49756095</guid></item><item><title><![CDATA[New comment by glouwbug in "Lucasart's Afterlife"]]></title><description><![CDATA[
<p>Friend of mine had it on the original gameboy</p>
]]></description><pubDate>Thu, 17 Sep 2026 21:19:02 +0000</pubDate><link>https://news.ycombinator.com/item?id=49746696</link><dc:creator>glouwbug</dc:creator><comments>https://news.ycombinator.com/item?id=49746696</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49746696</guid></item><item><title><![CDATA[New comment by glouwbug in "Don't Make Job Referrals Public"]]></title><description><![CDATA[
<p>What about a referral program + 5-10 interviews with no intent to hire?</p>
]]></description><pubDate>Thu, 17 Sep 2026 19:52:33 +0000</pubDate><link>https://news.ycombinator.com/item?id=49745675</link><dc:creator>glouwbug</dc:creator><comments>https://news.ycombinator.com/item?id=49745675</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49745675</guid></item><item><title><![CDATA[New comment by glouwbug in "Vectorized and performance-portable Quicksort (2022)"]]></title><description><![CDATA[
<p>Guys, remember when language features allowed re-usability?</p>
]]></description><pubDate>Wed, 16 Sep 2026 19:25:31 +0000</pubDate><link>https://news.ycombinator.com/item?id=49731698</link><dc:creator>glouwbug</dc:creator><comments>https://news.ycombinator.com/item?id=49731698</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49731698</guid></item></channel></rss>