<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: mabster</title><link>https://news.ycombinator.com/user?id=mabster</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Mon, 15 Jun 2026 16:22:22 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=mabster" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by mabster in "Every Byte Matters"]]></title><description><![CDATA[
<p>Ok fair enough. I don't write performance stuff in Java so I haven't even needed to look at this stuff to be honest. Most of the intrinsics I would want are there, except for any memory related stuff. I'm still not sure how structs are laid out in memory but I guess there's something for that too. My favourite thing in C++ is just loading a big binary blob and being able to point directly into it.<p>The only thing that was different was that we had a number of platform-specific intrinsics to really shake fast code out. E.g. shuffles on x86 on older SSE editions were terrible and we would have custom x86 code for shuffles or let memory out differently.<p>The only thing we use from C++ stdlib is unique_ptr. For everything else we had our own much more tailored, much faster, stuff. We had something like 10 different array containers for example.<p>Yeah what you described with templates is what we are doing re speculative optimisation. We have tuned versions for different workloads. We would inspect before we decide which one to run (only if that wasn't slower then just having one implementation, which was often the case because of instruction cache).<p>Something to be aware of is that on consoles mmapping a page to be executable was forbidden. So no JIT. And you aim for your slowest target so PC just follows that.</p>
]]></description><pubDate>Sun, 07 Jun 2026 09:29:02 +0000</pubDate><link>https://news.ycombinator.com/item?id=48433240</link><dc:creator>mabster</dc:creator><comments>https://news.ycombinator.com/item?id=48433240</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48433240</guid></item><item><title><![CDATA[New comment by mabster in "Every Byte Matters"]]></title><description><![CDATA[
<p>I'm a Java developer now, amongst other languages. The advantage of Java is that it takes A LOT less time to develop something, so there is the whole bang for buck for sure. I have had a few problems where I would love shared direct memory access and some atomics (because it would be a lot easier). But for the most part developing in Java is a lot quicker.<p>I don't think game developers are more conservative than any other developers. We do have large C++ codebases and so it's hard to change.<p>All modern engines have a few scripting languages tacked on too.<p>Something like Lua usually is the sweet spot: most of the people developing scripts are not developers. We even had a Java interpreter for scripting once, but it lost favor for this reason.<p>There were exceptions, but I found that developers generally preferred C# over Java anyway. Our assets pipelines are generally in C# already.<p>Any speculative optimisation we were doing by hand. There is the whole deferring allocations / moving allocations, both of which we were already doing (e.g. copying every frame).<p>A lot of our C++ code is intrinsics (including memory primitives like _mm_stream_ps and barriers) and you HAVE to have good control over how memory is laid out (e.g. knowing that data is split between cache lines so that you you don't get contention). Lots of spin locks too. I just don't see how you can do this kind of low level work in Java.</p>
]]></description><pubDate>Sat, 06 Jun 2026 08:31:24 +0000</pubDate><link>https://news.ycombinator.com/item?id=48422726</link><dc:creator>mabster</dc:creator><comments>https://news.ycombinator.com/item?id=48422726</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48422726</guid></item><item><title><![CDATA[New comment by mabster in "Every Byte Matters"]]></title><description><![CDATA[
<p>Low level CPU-related optimisation is absolutely still a thing. The GPU is always filled to the brim trying to get as much quality out of a graphics frame so a lot gets offloaded to the CPU. When I was doing this I was doing a lot of low-level CPU optimisation. GPU optimisation was usually more about transform process topology but there was plenty of low-level work to do there too.<p>Games are both high throughput AND low-latency and C++ is still king there</p>
]]></description><pubDate>Fri, 05 Jun 2026 06:31:21 +0000</pubDate><link>https://news.ycombinator.com/item?id=48408784</link><dc:creator>mabster</dc:creator><comments>https://news.ycombinator.com/item?id=48408784</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48408784</guid></item><item><title><![CDATA[New comment by mabster in "Muxcard, a DIY credit card size computer"]]></title><description><![CDATA[
<p>I did notice that difference too. But previous "credit card size" projects have all been several mm (as in couldn't fit a wallet designed for credit cards). So 1 mm is... pretty sweet!</p>
]]></description><pubDate>Wed, 03 Jun 2026 04:23:15 +0000</pubDate><link>https://news.ycombinator.com/item?id=48379873</link><dc:creator>mabster</dc:creator><comments>https://news.ycombinator.com/item?id=48379873</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48379873</guid></item><item><title><![CDATA[New comment by mabster in "Muxcard, a DIY credit card size computer"]]></title><description><![CDATA[
<p>I went to the page expecting to rant about how it's not actually credit card size because of the thickness and was for once pleasantly surprised! Kudos to the author! It looks great!</p>
]]></description><pubDate>Tue, 02 Jun 2026 14:07:59 +0000</pubDate><link>https://news.ycombinator.com/item?id=48370459</link><dc:creator>mabster</dc:creator><comments>https://news.ycombinator.com/item?id=48370459</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48370459</guid></item><item><title><![CDATA[New comment by mabster in "Talking to strangers at the gym"]]></title><description><![CDATA[
<p>That's pretty close to "be like Keanu Reeves"!</p>
]]></description><pubDate>Mon, 04 May 2026 22:21:17 +0000</pubDate><link>https://news.ycombinator.com/item?id=48015729</link><dc:creator>mabster</dc:creator><comments>https://news.ycombinator.com/item?id=48015729</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48015729</guid></item><item><title><![CDATA[New comment by mabster in "The buns in McDonald's Japan's burger photos are all slightly askew"]]></title><description><![CDATA[
<p>It's always the kitchen for me across food places (in Australia). Ending up with pickles when I removed them. Ending up with coke zero instead of coke. But the worst is ending up with anything mock meat!</p>
]]></description><pubDate>Wed, 15 Apr 2026 22:35:07 +0000</pubDate><link>https://news.ycombinator.com/item?id=47786237</link><dc:creator>mabster</dc:creator><comments>https://news.ycombinator.com/item?id=47786237</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47786237</guid></item><item><title><![CDATA[New comment by mabster in "Rob Pike’s Rules of Programming (1989)"]]></title><description><![CDATA[
<p>It's been mixed moving to normal code: I haven't had to low-level optimise for ages now (man I miss that). But performance in the O() sense has been the same.<p>Game engine development is very much about processing of data. The pipeline is long and the tree is wide. Being able to reason about complicated data processing topologies mapped very easily across.</p>
]]></description><pubDate>Wed, 18 Mar 2026 22:01:03 +0000</pubDate><link>https://news.ycombinator.com/item?id=47431955</link><dc:creator>mabster</dc:creator><comments>https://news.ycombinator.com/item?id=47431955</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47431955</guid></item><item><title><![CDATA[New comment by mabster in "Rob Pike’s Rules of Programming (1989)"]]></title><description><![CDATA[
<p>I haven't watched his videos on his language for ages, but this was a big thing he wanted in his language: being able to swap between array-of-structs and struct-of-array quickly and easily.</p>
]]></description><pubDate>Wed, 18 Mar 2026 21:49:58 +0000</pubDate><link>https://news.ycombinator.com/item?id=47431851</link><dc:creator>mabster</dc:creator><comments>https://news.ycombinator.com/item?id=47431851</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47431851</guid></item><item><title><![CDATA[New comment by mabster in "Chuck Klosterman on why we've never actually seen a real football game"]]></title><description><![CDATA[
<p>Unless LA stood for Latin America haha.</p>
]]></description><pubDate>Tue, 27 Jan 2026 21:33:22 +0000</pubDate><link>https://news.ycombinator.com/item?id=46787209</link><dc:creator>mabster</dc:creator><comments>https://news.ycombinator.com/item?id=46787209</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46787209</guid></item><item><title><![CDATA[New comment by mabster in "Chuck Klosterman on why we've never actually seen a real football game"]]></title><description><![CDATA[
<p>I guessed American when it was compared to Hockey, Baseball and Basketball.<p>In Melbourne, Australia, Football is again another sport (but it not being called Footy gives it a way).</p>
]]></description><pubDate>Tue, 27 Jan 2026 21:29:33 +0000</pubDate><link>https://news.ycombinator.com/item?id=46787149</link><dc:creator>mabster</dc:creator><comments>https://news.ycombinator.com/item?id=46787149</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46787149</guid></item><item><title><![CDATA[New comment by mabster in "The chess bot on Delta Air Lines will destroy you (2024) [video]"]]></title><description><![CDATA[
<p>I flew Scoot airlines recently and my 13” MacBook Air was too big to have on my lap even though the seat in front was not reclined.<p>There's also something about those seats where you get back pain when you try to sleep with your own seat reclined.</p>
]]></description><pubDate>Tue, 13 Jan 2026 05:14:56 +0000</pubDate><link>https://news.ycombinator.com/item?id=46597515</link><dc:creator>mabster</dc:creator><comments>https://news.ycombinator.com/item?id=46597515</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46597515</guid></item><item><title><![CDATA[New comment by mabster in "The biggest CRT ever made: Sony's PVM-4300"]]></title><description><![CDATA[
<p>Memories shattered. Yeah, you're right and I would have watched interlaced broadcast content.<p>I saw interlaced NTSC video in the digital days where the combing was much more obvious and always assumed it was only an NTSC thing!</p>
]]></description><pubDate>Thu, 25 Dec 2025 03:57:16 +0000</pubDate><link>https://news.ycombinator.com/item?id=46381940</link><dc:creator>mabster</dc:creator><comments>https://news.ycombinator.com/item?id=46381940</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46381940</guid></item><item><title><![CDATA[New comment by mabster in "The biggest CRT ever made: Sony's PVM-4300"]]></title><description><![CDATA[
<p>I'm guessing you're talking about interlacing?<p>I've never really experienced it because I've always watched PAL which doesn't have that.<p>But I would have thought it would be perceived as flashing at 60 Hz with a darker image?</p>
]]></description><pubDate>Mon, 22 Dec 2025 15:11:03 +0000</pubDate><link>https://news.ycombinator.com/item?id=46354722</link><dc:creator>mabster</dc:creator><comments>https://news.ycombinator.com/item?id=46354722</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46354722</guid></item><item><title><![CDATA[New comment by mabster in "Control structures in programming languages: from goto to algebraic effects"]]></title><description><![CDATA[
<p>You nailed it - that's my criticism :)<p>I've worked with a lot of code like this (particularly C libraries and litanies of return codes), and it's fine... But I prefer something like Java-style exceptions. And with Java lambdas or Kotlin the trend is unfortunately away from checked exceptions these days...<p>I too am interested in your other reasons!</p>
]]></description><pubDate>Mon, 10 Nov 2025 11:51:57 +0000</pubDate><link>https://news.ycombinator.com/item?id=45875035</link><dc:creator>mabster</dc:creator><comments>https://news.ycombinator.com/item?id=45875035</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45875035</guid></item><item><title><![CDATA[New comment by mabster in "Control structures in programming languages: from goto to algebraic effects"]]></title><description><![CDATA[
<p>I'm the opposite - I really like checked exceptions in Java because it's very easy to see how developers are handling errors and they also form part of the function signature.<p>Most functions will just pass on exceptions verbatim so it's better than error return values because with them the entire codebase has to be littered with error handling, compared to fewer try catch blocks.<p>setjmp, etc. are like unchecked exceptions, so I'm also not a fan, but I use this occasionally in C anyway.</p>
]]></description><pubDate>Sun, 09 Nov 2025 04:49:08 +0000</pubDate><link>https://news.ycombinator.com/item?id=45862976</link><dc:creator>mabster</dc:creator><comments>https://news.ycombinator.com/item?id=45862976</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45862976</guid></item><item><title><![CDATA[New comment by mabster in "Analysis indicates that the universe’s expansion is not accelerating"]]></title><description><![CDATA[
<p>I just pictured someone getting a message to check which model was right from an ancestor 20 giga generations ago!</p>
]]></description><pubDate>Fri, 07 Nov 2025 01:37:45 +0000</pubDate><link>https://news.ycombinator.com/item?id=45842678</link><dc:creator>mabster</dc:creator><comments>https://news.ycombinator.com/item?id=45842678</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45842678</guid></item><item><title><![CDATA[New comment by mabster in "An overengineered solution to `sort | uniq -c` with 25x throughput (hist)"]]></title><description><![CDATA[
<p>Or the timeline just doesn't have capacity for experimentation so the expectations are clear right from the start!</p>
]]></description><pubDate>Tue, 28 Oct 2025 21:38:38 +0000</pubDate><link>https://news.ycombinator.com/item?id=45739578</link><dc:creator>mabster</dc:creator><comments>https://news.ycombinator.com/item?id=45739578</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45739578</guid></item><item><title><![CDATA[New comment by mabster in "An overengineered solution to `sort | uniq -c` with 25x throughput (hist)"]]></title><description><![CDATA[
<p>In context most of the major optimisation work was on the engine. The game code can be and usually is slow but we do try to tame things in an O() sense.<p>I worked licensed titles for a while and that area the quality of a title and whether it sells were largely uncorrelated haha!</p>
]]></description><pubDate>Tue, 28 Oct 2025 21:37:28 +0000</pubDate><link>https://news.ycombinator.com/item?id=45739563</link><dc:creator>mabster</dc:creator><comments>https://news.ycombinator.com/item?id=45739563</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45739563</guid></item><item><title><![CDATA[New comment by mabster in "An overengineered solution to `sort | uniq -c` with 25x throughput (hist)"]]></title><description><![CDATA[
<p>I've written this kind of function so many times it's not funny. I usually want something that is fed from an iterator, removes duplicates, and yields values as soon as possible.</p>
]]></description><pubDate>Mon, 27 Oct 2025 07:04:37 +0000</pubDate><link>https://news.ycombinator.com/item?id=45718144</link><dc:creator>mabster</dc:creator><comments>https://news.ycombinator.com/item?id=45718144</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45718144</guid></item></channel></rss>