<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: MaxBarraclough</title><link>https://news.ycombinator.com/user?id=MaxBarraclough</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Sat, 03 Oct 2026 12:11:44 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=MaxBarraclough" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by MaxBarraclough in "PS5 Relapse Exploit"]]></title><description><![CDATA[
<p>They could apply a different policy to their web-based dashboard GUIs (if these do exist) than to the web browser.</p>
]]></description><pubDate>Tue, 29 Sep 2026 20:19:32 +0000</pubDate><link>https://news.ycombinator.com/item?id=49899802</link><dc:creator>MaxBarraclough</dc:creator><comments>https://news.ycombinator.com/item?id=49899802</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49899802</guid></item><item><title><![CDATA[New comment by MaxBarraclough in "Optimizing x264 settings and per-title ladders"]]></title><description><![CDATA[
<p>Interesting, thanks.</p>
]]></description><pubDate>Tue, 29 Sep 2026 18:46:58 +0000</pubDate><link>https://news.ycombinator.com/item?id=49898421</link><dc:creator>MaxBarraclough</dc:creator><comments>https://news.ycombinator.com/item?id=49898421</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49898421</guid></item><item><title><![CDATA[New comment by MaxBarraclough in "PS5 Relapse Exploit"]]></title><description><![CDATA[
<p>At a glance, it looks like it exploits a bug in WebKit's <i>JavaScriptCore</i> JavaScript engine.<p>Does the PS5's WebKit use JavaScriptCore with JIT enabled? Have to wonder if Sony will respond by disabled its JIT, to narrow the attack surface.</p>
]]></description><pubDate>Tue, 29 Sep 2026 18:44:45 +0000</pubDate><link>https://news.ycombinator.com/item?id=49898390</link><dc:creator>MaxBarraclough</dc:creator><comments>https://news.ycombinator.com/item?id=49898390</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49898390</guid></item><item><title><![CDATA[New comment by MaxBarraclough in "Writing Efficient C++ Code (2013)"]]></title><description><![CDATA[
<p>I think that's fair. It's neat that it's possible through C++'s template system. It wouldn't be possible in many other languages.</p>
]]></description><pubDate>Tue, 29 Sep 2026 18:40:37 +0000</pubDate><link>https://news.ycombinator.com/item?id=49898324</link><dc:creator>MaxBarraclough</dc:creator><comments>https://news.ycombinator.com/item?id=49898324</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49898324</guid></item><item><title><![CDATA[New comment by MaxBarraclough in "Writing Efficient C++ Code (2013)"]]></title><description><![CDATA[
<p>> unlike a lot of high level languages, there isn't an extra allocation for a node structure. The node structure is a member of the structure being linked.<p>That's good, but it seems like how-hanging fruit. Boost offers <i>intrusive_prt</i> for this. [0]<p><i>make_shared</i> goes half way, and performs a single allocation to return a <i>shared_ptr</i> to a new object. It eventually made its way from Boost to the standard. [1][2]<p>See also [3] which contrasts the two. (As you can imagine, <i>intrusive_prt</i> is slightly more efficient.)<p>[0] <a href="https://www.boost.org/doc/libs/latest/libs/smart_ptr/doc/html/smart_ptr.html#intrusive_ptr" rel="nofollow">https://www.boost.org/doc/libs/latest/libs/smart_ptr/doc/htm...</a><p>[1] <a href="https://www.boost.org/doc/libs/latest/libs/smart_ptr/doc/html/smart_ptr.html#make_shared" rel="nofollow">https://www.boost.org/doc/libs/latest/libs/smart_ptr/doc/htm...</a><p>[2] <a href="https://en.cppreference.com/cpp/memory/shared_ptr/make_shared" rel="nofollow">https://en.cppreference.com/cpp/memory/shared_ptr/make_share...</a><p>[3] <a href="https://stackoverflow.com/a/13913161" rel="nofollow">https://stackoverflow.com/a/13913161</a></p>
]]></description><pubDate>Tue, 29 Sep 2026 17:40:49 +0000</pubDate><link>https://news.ycombinator.com/item?id=49897264</link><dc:creator>MaxBarraclough</dc:creator><comments>https://news.ycombinator.com/item?id=49897264</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49897264</guid></item><item><title><![CDATA[New comment by MaxBarraclough in "Optimizing x264 settings and per-title ladders"]]></title><description><![CDATA[
<p>I don't know that much about video codecs, could decoding performance improve, given the reduced input size?</p>
]]></description><pubDate>Tue, 29 Sep 2026 17:28:33 +0000</pubDate><link>https://news.ycombinator.com/item?id=49897011</link><dc:creator>MaxBarraclough</dc:creator><comments>https://news.ycombinator.com/item?id=49897011</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49897011</guid></item><item><title><![CDATA[New comment by MaxBarraclough in "Writing Efficient C++ Code (2013)"]]></title><description><![CDATA[
<p>The compiler no longer guarantees to generate confirming code, so correctness could be affected. If this weren't the case, there would be no need for a flag, it would be GCC's default behaviour.<p>(I'm not creata, but I imagine this is what they had in mind.)</p>
]]></description><pubDate>Tue, 29 Sep 2026 17:25:26 +0000</pubDate><link>https://news.ycombinator.com/item?id=49896953</link><dc:creator>MaxBarraclough</dc:creator><comments>https://news.ycombinator.com/item?id=49896953</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49896953</guid></item><item><title><![CDATA[New comment by MaxBarraclough in "Writing Efficient C++ Code (2013)"]]></title><description><![CDATA[
<p>Allocation and deallocation are fairly expensive with or without modern caches though, surely?<p>Or are pools used to avoid that?</p>
]]></description><pubDate>Mon, 28 Sep 2026 18:41:40 +0000</pubDate><link>https://news.ycombinator.com/item?id=49882523</link><dc:creator>MaxBarraclough</dc:creator><comments>https://news.ycombinator.com/item?id=49882523</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49882523</guid></item><item><title><![CDATA[New comment by MaxBarraclough in "Writing Efficient C++ Code (2013)"]]></title><description><![CDATA[
<p>Yes you're right. Here's an alternative that behaves the way I had in mind but doesn't support deletions, as handling deletions the way std::vector does would naturally mean relocating elements. [0]<p>I figure it would be possible to add support for deletions, but it would cost us: we would lose guaranteed contiguous placement of elements with neighbouring indices, and (unless no deletions are made) we'd need a private data structure to correspond vector indices to addresses, and to determine where to locate new elements. This would of course bring us back to continually paying the price of indirection overhead, and simple lock-free modifications would not be possible.<p>My completely unsupported guess is the cache behaviour wouldn't be too bad unless deletions (of elements that aren't at the end of the vector) are common. I imagine the cache behaviour of a linked list must depend greatly on what the allocator gives you. Presumably using a pool, specific to that particular list, could help there.<p>[0] <a href="https://github.com/david-grs/stable_vector" rel="nofollow">https://github.com/david-grs/stable_vector</a></p>
]]></description><pubDate>Mon, 28 Sep 2026 14:19:17 +0000</pubDate><link>https://news.ycombinator.com/item?id=49878408</link><dc:creator>MaxBarraclough</dc:creator><comments>https://news.ycombinator.com/item?id=49878408</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49878408</guid></item><item><title><![CDATA[New comment by MaxBarraclough in "Writing Efficient C++ Code (2013)"]]></title><description><![CDATA[
<p>I'm not sure I follow the second point. Array-based solutions are able to guarantee that an element is never relocated, it's just that std::vector doesn't offer this guarantee. The Boost libraries offer this though, they call it <i>stable_vector</i>.<p><a href="https://www.boost.org/doc/libs/1_92_0/doc/html/container/non_standard_containers.html#container.non_standard_containers.stable_vector" rel="nofollow">https://www.boost.org/doc/libs/1_92_0/doc/html/container/non...</a></p>
]]></description><pubDate>Mon, 28 Sep 2026 12:03:30 +0000</pubDate><link>https://news.ycombinator.com/item?id=49876685</link><dc:creator>MaxBarraclough</dc:creator><comments>https://news.ycombinator.com/item?id=49876685</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49876685</guid></item><item><title><![CDATA[New comment by MaxBarraclough in "Writing Efficient C++ Code (2013)"]]></title><description><![CDATA[
<p>Naturally the mind races to think of where linked lists <i>are</i> used.<p>The Linux kernel uses them, at least some of the time they're used with their lock-free <i>RCU</i> pattern. I'm not sure if it's   for performance reasons though, I think they're using it in contexts where correctness requires the absence of blocking operations.<p>I'd expect a lock-free non-linked-list solution would also be possible, but I don't know enough to state that definitively.<p><a href="https://docs.kernel.org/RCU/listRCU.html" rel="nofollow">https://docs.kernel.org/RCU/listRCU.html</a></p>
]]></description><pubDate>Mon, 28 Sep 2026 11:46:57 +0000</pubDate><link>https://news.ycombinator.com/item?id=49876536</link><dc:creator>MaxBarraclough</dc:creator><comments>https://news.ycombinator.com/item?id=49876536</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49876536</guid></item><item><title><![CDATA[New comment by MaxBarraclough in "Writing Efficient C++ Code (2013)"]]></title><description><![CDATA[
<p>I'm no expert in this stuff but:<p>creata's comment [0] mentions the works of Agner Fog, which seem very good, and are freely available.<p>I haven't read <i>C++ High Performance</i> [1] but it looks like it covers the sorts of topics you'd expect, although it looks like it doesn't cover computer architecture in detail e.g. branch prediction. There are books on that too, of course.<p>[0] <a href="https://news.ycombinator.com/item?id=49868657">https://news.ycombinator.com/item?id=49868657</a><p>[1] <a href="https://www.packtpub.com/en-us/product/c-high-performance-9781839212581" rel="nofollow">https://www.packtpub.com/en-us/product/c-high-performance-97...</a></p>
]]></description><pubDate>Sun, 27 Sep 2026 18:56:05 +0000</pubDate><link>https://news.ycombinator.com/item?id=49869697</link><dc:creator>MaxBarraclough</dc:creator><comments>https://news.ycombinator.com/item?id=49869697</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49869697</guid></item><item><title><![CDATA[New comment by MaxBarraclough in "Writing Efficient C++ Code (2013)"]]></title><description><![CDATA[
<p>I've not read Fog's <i>Optimizing software in C++</i> but I see it's freely available there as a PDF (182 pages). Looks like a great resource on these topics.<p><a href="https://www.agner.org/optimize/optimizing_cpp.pdf" rel="nofollow">https://www.agner.org/optimize/optimizing_cpp.pdf</a></p>
]]></description><pubDate>Sun, 27 Sep 2026 17:33:56 +0000</pubDate><link>https://news.ycombinator.com/item?id=49868851</link><dc:creator>MaxBarraclough</dc:creator><comments>https://news.ycombinator.com/item?id=49868851</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49868851</guid></item><item><title><![CDATA[New comment by MaxBarraclough in "Writing Efficient C++ Code"]]></title><description><![CDATA[
<p>That has a similar problem to the article, it's trying to fit far too much into too small a format.<p>What you've written mostly makes sense to someone who already has a solid understanding of SIMD and of C++ (although I can't say I follow all of it), but the target audience is people who don't. For them, each point needs a much lengthier explanation.</p>
]]></description><pubDate>Sun, 27 Sep 2026 17:14:30 +0000</pubDate><link>https://news.ycombinator.com/item?id=49868641</link><dc:creator>MaxBarraclough</dc:creator><comments>https://news.ycombinator.com/item?id=49868641</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49868641</guid></item><item><title><![CDATA[New comment by MaxBarraclough in "Writing Efficient C++ Code (2013)"]]></title><description><![CDATA[
<p>There's no mention of branch prediction, or context switching, or synchronisation. Depending on what you're doing, they could be very consequential. There's only very brief mention of parallelisation with threads and with SIMD.<p>High-performance programming is a big topic. The scope is far too broad for a single blog post, which naturally gives only cursory discussion of C++ and computer architecture. The article isn't bad considering, but I do think it's the wrong format. A blog series, or even a book, would be more fitting.</p>
]]></description><pubDate>Sun, 27 Sep 2026 16:34:13 +0000</pubDate><link>https://news.ycombinator.com/item?id=49868246</link><dc:creator>MaxBarraclough</dc:creator><comments>https://news.ycombinator.com/item?id=49868246</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49868246</guid></item><item><title><![CDATA[New comment by MaxBarraclough in "On caring for user data: NeoVim caused Vim undo files to be deleted"]]></title><description><![CDATA[
<p>Vim's persist undo is disabled by default, perhaps for privacy reasons. <i>edit: I see sebzim4500 got there first.</i><p>* <a href="https://news.ycombinator.com/item?id=49867678">https://news.ycombinator.com/item?id=49867678</a><p>* <a href="https://bastian.rieck.me/blog/2015/persistent_undo_vim/" rel="nofollow">https://bastian.rieck.me/blog/2015/persistent_undo_vim/</a></p>
]]></description><pubDate>Sun, 27 Sep 2026 16:16:19 +0000</pubDate><link>https://news.ycombinator.com/item?id=49868043</link><dc:creator>MaxBarraclough</dc:creator><comments>https://news.ycombinator.com/item?id=49868043</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49868043</guid></item><item><title><![CDATA[New comment by MaxBarraclough in "How I changed teaching after AI managed to do all my homework assignments"]]></title><description><![CDATA[
<p>The linked video is <i>Planning a Heist - Key & Peele.</i><p>Please include a description of what you're linking to. People aren't likely to follow a link to an unknown YouTube video.</p>
]]></description><pubDate>Sun, 27 Sep 2026 14:55:34 +0000</pubDate><link>https://news.ycombinator.com/item?id=49867165</link><dc:creator>MaxBarraclough</dc:creator><comments>https://news.ycombinator.com/item?id=49867165</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49867165</guid></item><item><title><![CDATA[New comment by MaxBarraclough in "How I changed teaching after AI managed to do all my homework assignments"]]></title><description><![CDATA[
<p>> doesn't this highlight how mundane and rote teaching has become<p>The example questions given in the article do not assess wrote learning.<p>> It's been distilled to the point that the lowest of the lowest common denominators can pass.<p>Have pass rates been increasing? Unless I missed it, the article doesn't say so.<p>> forced to learn things they will never use<p>A computer science degree is not a coding academy, it's a basic grounding in an area of study. A computer science graduate should have some understanding of theoretical computer science and of computer architecture, say, even if they're unlikely to apply these topics directly in their careers.<p>> My hope is that this is a wake up call to teachers / professors to find a better way to evaluate students. To determine who has actually come away with a real understanding, vs those who were running around copying the assignments off of their peers anyway.<p>Academics are already aware of the importance of fair assessment, but it isn't easy, especially with LLMs in the mix.<p>> These same people are now just skipping the peers and going straight to the all knowing oracle. It's the same as it ever was, degree mills.<p>Students that cheat, and degree mills, are two different things.</p>
]]></description><pubDate>Sun, 27 Sep 2026 13:18:00 +0000</pubDate><link>https://news.ycombinator.com/item?id=49866441</link><dc:creator>MaxBarraclough</dc:creator><comments>https://news.ycombinator.com/item?id=49866441</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49866441</guid></item><item><title><![CDATA[New comment by MaxBarraclough in "Modern Object Pascal Introduction for Programmers"]]></title><description><![CDATA[
<p>I wasn't able to find a definitive account of why they're separated in Ada, but I believe the idea is this: functions are for where code behaves in a roughly functionally pure way and yields a value that should not be discarded by the caller, whereas procs are for functionality with 'deep' side-effects.<p>The <i>SPARK</i> subset of Ada comes pretty close to enforcing purity of Ada functions, although it still permits them to read globals. [0]<p>It's not just an oversight. The core of the Ada language was designed deliberately. [1]<p>[0] <a href="https://learn.adacore.com/courses/intro-to-spark/chapters/01_Overview.html#no-side-effects-in-expressions" rel="nofollow">https://learn.adacore.com/courses/intro-to-spark/chapters/01...</a><p>[1] <a href="https://en.wikipedia.org/wiki/Ada_(programming_language)#History" rel="nofollow">https://en.wikipedia.org/wiki/Ada_(programming_language)#His...</a></p>
]]></description><pubDate>Sat, 26 Sep 2026 21:13:40 +0000</pubDate><link>https://news.ycombinator.com/item?id=49860605</link><dc:creator>MaxBarraclough</dc:creator><comments>https://news.ycombinator.com/item?id=49860605</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49860605</guid></item><item><title><![CDATA[New comment by MaxBarraclough in "We're gonna need a lot more mathematicians"]]></title><description><![CDATA[
<p>In the case of medicine it goes deeper than that, sometimes <i>nobody</i> really understands why a medication works.</p>
]]></description><pubDate>Sat, 26 Sep 2026 10:17:20 +0000</pubDate><link>https://news.ycombinator.com/item?id=49855065</link><dc:creator>MaxBarraclough</dc:creator><comments>https://news.ycombinator.com/item?id=49855065</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49855065</guid></item></channel></rss>