<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
  <title>Computer, Enhance!</title>
  <subtitle>Browse aymeric&#39;s, an independent, searchable archive of readable snapshots from followed feeds, preserved in Git with aggr.</subtitle>
  <id>https://aggr.aymericbeaumet.com/sources/computerenhance.com/</id>
  <link rel="alternate" type="text/html" href="https://aggr.aymericbeaumet.com/sources/computerenhance.com/"/>
  <link rel="self" type="application/atom+xml" href="https://aggr.aymericbeaumet.com/sources/computerenhance.com/atom.xml"/>
  <updated>2026-10-21T22:23:39+00:00</updated>
  <author>
    <name>aymeric&#39;s</name>
  </author>
  <generator version="2.0.0" uri="https://github.com/aymericbeaumet/aggr">aggr</generator>
  <entry>
    <id>urn:aggr:item:e47fec6ed01227355213fe33a4f82257574a39ac</id>
    <title type="text">Horizontal Operations</title>
    <link rel="alternate" type="text/html" href="https://aggr.aymericbeaumet.com/items/computerenhance-com/2026-10-21-horizontal-operations/"/>
    <link rel="via" type="text/html" href="https://www.computerenhance.com/p/horizontal-operations"/>
    <published>2026-10-21T22:23:39+00:00</published>
    <updated>2026-10-21T22:23:39+00:00</updated>
    <author>
      <name>Computer, Enhance!</name>
    </author>
    <category term="programming"/>
    <source>
      <title>Computer, Enhance!</title>
    </source>
    <summary type="text">We can employ our knowledge of shuffles and permutes to make horizontal operations out of the vertical ones provided by SIMD instruction sets.</summary>
    <content type="html">&lt;p&gt;--:--&lt;/p&gt;
&lt;p&gt;--:--&lt;/p&gt;
&lt;h3&gt;Paid episode&lt;/h3&gt;
&lt;p&gt;The full episode is only available to paid subscribers of Computer, Enhance!&lt;/p&gt;
&lt;p&gt;We can employ our knowledge of shuffles and permutes to make horizontal operations out of the vertical ones provided by SIMD instruction sets.&lt;/p&gt;
&lt;p&gt;Oct 21, 2026&lt;/p&gt;
&lt;p&gt;∙ Paid&lt;/p&gt;
&lt;p&gt;&lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://substackcdn.com/image/fetch/$s_!slLN!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6dfa8422-1d63-497d-b93f-ddfa10f0cb78_3840x2160.jpeg&quot;&gt;&lt;picture class=&quot;article-picture article-picture-fallback&quot; style=&quot;--image-ratio:16 / 9&quot;&gt;&lt;img src=&quot;https://substackcdn.com/image/fetch/$s_!slLN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6dfa8422-1d63-497d-b93f-ddfa10f0cb78_3840x2160.jpeg&quot; alt=&quot;&quot; loading=&quot;eager&quot; decoding=&quot;async&quot; fetchpriority=&quot;high&quot; referrerpolicy=&quot;no-referrer&quot; class=&quot;progressive-image&quot;&gt;&lt;/picture&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;This is the twenty-first video in Part 5 of the Performance-Aware Programming series. Please see the &lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://www.computerenhance.com/p/table-of-contents&quot;&gt;Table of Contents&lt;/a&gt; to quickly navigate through the rest of the course as it is updated, and &lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://github.com/cmuratori/computer_enhance&quot;&gt;the code repository&lt;/a&gt; for downloadable code listings.&lt;/em&gt;&lt;/p&gt;
</content>
  </entry>
  <entry>
    <id>urn:aggr:item:e7b34f2817fef75f287fc6e38602bfde0218ec05</id>
    <title type="text">SIMD Unpacks</title>
    <link rel="alternate" type="text/html" href="https://aggr.aymericbeaumet.com/items/computerenhance-com/2026-10-14-simd-unpacks/"/>
    <link rel="via" type="text/html" href="https://www.computerenhance.com/p/simd-unpacks"/>
    <published>2026-10-14T20:58:25+00:00</published>
    <updated>2026-10-14T20:58:25+00:00</updated>
    <author>
      <name>Computer, Enhance!</name>
    </author>
    <category term="programming"/>
    <source>
      <title>Computer, Enhance!</title>
    </source>
    <summary type="text">In addition to permutes and shuffles, “unpacks” can be used to rearrange data as long as the rearrangement conforms to a very specific pattern.</summary>
    <content type="html">&lt;p&gt;In addition to permutes and shuffles, “unpacks” can be used to rearrange data as long as the rearrangement conforms to a very specific pattern.&lt;/p&gt;
&lt;p&gt;Oct 14, 2026&lt;/p&gt;
&lt;p&gt;∙ Paid&lt;/p&gt;
&lt;p&gt;&lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://substackcdn.com/image/fetch/$s_!JN1f!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb6be371-00ab-45c7-b07e-70167a3dee6a_3840x2160.jpeg&quot;&gt;&lt;picture class=&quot;article-picture article-picture-fallback&quot; style=&quot;--image-ratio:16 / 9&quot;&gt;&lt;img src=&quot;https://substackcdn.com/image/fetch/$s_!JN1f!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb6be371-00ab-45c7-b07e-70167a3dee6a_3840x2160.jpeg&quot; alt=&quot;&quot; loading=&quot;eager&quot; decoding=&quot;async&quot; fetchpriority=&quot;high&quot; referrerpolicy=&quot;no-referrer&quot; class=&quot;progressive-image&quot;&gt;&lt;/picture&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;This is the twentieth video in Part 5 of the Performance-Aware Programming series. Please see the &lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://www.computerenhance.com/p/table-of-contents&quot;&gt;Table of Contents&lt;/a&gt; to quickly navigate through the rest of the course as it is updated, and &lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://github.com/cmuratori/computer_enhance&quot;&gt;the code repository&lt;/a&gt; for downloadable code listings.&lt;/em&gt;&lt;/p&gt;
&lt;h2&gt;The full video is for paid subscribers&lt;/h2&gt;
&lt;p&gt;&lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://substack.com/sign-in?redirect=%2Fp%2Fsimd-unpacks&amp;amp;for_pub=computerenhance&amp;amp;change_user=false&quot;&gt;Already a paid subscriber? &lt;strong&gt;Sign in&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://www.computerenhance.com/s/programming-courses&quot;&gt;&lt;picture class=&quot;article-picture article-picture-fallback&quot; style=&quot;--image-ratio:16 / 9&quot;&gt;&lt;img src=&quot;https://substackcdn.com/image/fetch/$s_!FgJW!,w_96,h_96,c_fill,f_auto,q_auto:good,fl_progressive:steep,g_auto/https%3A%2F%2Fsubstack.com%2Fimg%2Fpodcast%2Fgeneric.png&quot; alt=&quot;Computer, Enhance!&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; fetchpriority=&quot;low&quot; referrerpolicy=&quot;no-referrer&quot; class=&quot;progressive-image&quot;&gt;&lt;/picture&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Programming Courses&lt;/p&gt;
&lt;p&gt;A series of courses on programming topics.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <id>urn:aggr:item:b0c73ea548df207277a28baa4a4161215a37e366</id>
    <title type="text">SIMD Shuffles</title>
    <link rel="alternate" type="text/html" href="https://aggr.aymericbeaumet.com/items/computerenhance-com/2026-10-07-simd-shuffles/"/>
    <link rel="via" type="text/html" href="https://www.computerenhance.com/p/simd-shuffles"/>
    <published>2026-10-07T18:57:47+00:00</published>
    <updated>2026-10-07T18:57:47+00:00</updated>
    <author>
      <name>Computer, Enhance!</name>
    </author>
    <category term="programming"/>
    <source>
      <title>Computer, Enhance!</title>
    </source>
    <summary type="text">SIMD works seamlessly when everything is vertical. Once we want to operate horizontally, we enter the esoteric world of shuffles and permutes.</summary>
    <content type="html">&lt;p&gt;SIMD works seamlessly when everything is vertical. Once we want to operate horizontally, we enter the esoteric world of shuffles and permutes.&lt;/p&gt;
&lt;p&gt;Oct 07, 2026&lt;/p&gt;
&lt;p&gt;∙ Paid&lt;/p&gt;
&lt;p&gt;&lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://substackcdn.com/image/fetch/$s_!6jGE!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F005803ad-da51-4dca-b972-004bb9ea9f24_3840x2161.jpeg&quot;&gt;&lt;picture class=&quot;article-picture article-picture-fallback&quot; style=&quot;--image-ratio:16 / 9&quot;&gt;&lt;img src=&quot;https://substackcdn.com/image/fetch/$s_!6jGE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F005803ad-da51-4dca-b972-004bb9ea9f24_3840x2161.jpeg&quot; alt=&quot;&quot; loading=&quot;eager&quot; decoding=&quot;async&quot; fetchpriority=&quot;high&quot; referrerpolicy=&quot;no-referrer&quot; class=&quot;progressive-image&quot;&gt;&lt;/picture&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;This is the nineteenth video in Part 5 of the Performance-Aware Programming series. Please see the &lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://www.computerenhance.com/p/table-of-contents&quot;&gt;Table of Contents&lt;/a&gt; to quickly navigate through the rest of the course as it is updated, and &lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://github.com/cmuratori/computer_enhance&quot;&gt;the code repository&lt;/a&gt; for downloadable code listings.&lt;/em&gt;&lt;/p&gt;
&lt;h2&gt;The full video is for paid subscribers&lt;/h2&gt;
&lt;p&gt;&lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://substack.com/sign-in?redirect=%2Fp%2Fsimd-shuffles&amp;amp;for_pub=computerenhance&amp;amp;change_user=false&quot;&gt;Already a paid subscriber? &lt;strong&gt;Sign in&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://www.computerenhance.com/s/programming-courses&quot;&gt;&lt;picture class=&quot;article-picture article-picture-fallback&quot; style=&quot;--image-ratio:16 / 9&quot;&gt;&lt;img src=&quot;https://substackcdn.com/image/fetch/$s_!FgJW!,w_96,h_96,c_fill,f_auto,q_auto:good,fl_progressive:steep,g_auto/https%3A%2F%2Fsubstack.com%2Fimg%2Fpodcast%2Fgeneric.png&quot; alt=&quot;Computer, Enhance!&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; fetchpriority=&quot;low&quot; referrerpolicy=&quot;no-referrer&quot; class=&quot;progressive-image&quot;&gt;&lt;/picture&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Programming Courses&lt;/p&gt;
&lt;p&gt;A series of courses on programming topics.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <id>urn:aggr:item:0c382e7a50601815506ad1857ba8ec1329b12438</id>
    <title type="text">Q&amp;A #88 (2026-10-02)</title>
    <link rel="alternate" type="text/html" href="https://aggr.aymericbeaumet.com/items/computerenhance-com/2026-10-02-q-a-88-2026-10-02/"/>
    <link rel="via" type="text/html" href="https://www.computerenhance.com/p/q-and-a-88-2026-10-02"/>
    <published>2026-10-02T22:35:17+00:00</published>
    <updated>2026-10-02T22:35:17+00:00</updated>
    <author>
      <name>Computer, Enhance!</name>
    </author>
    <category term="programming"/>
    <source>
      <title>Computer, Enhance!</title>
    </source>
    <summary type="text">Answers to questions from the last Q&amp;A thread.</summary>
    <content type="html">&lt;p&gt;&lt;em&gt;In each Q&amp;amp;A video, I answer questions from the comments on the previous Q&amp;amp;A video, which can be from any part of the course.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;As an additional note, for those who are interested in the Loop Stream Detector from question #6 and don’t mind doing some additional reading, there is a security exploit called &lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://hajiabadi.github.io/papers/paper_gadget_spinner_hpca2024.pdf&quot;&gt;GADGETSPINNER&lt;/a&gt; you might want to look at. The writeup is helpful for learning about the particulars if, like me, you don’t have an Intel CPU with an LSD to play around with yourself. Of potential interest for people focused on optimization are the LSD’s dependence on the branches staying the same each iteration, as well as the total uop size of loop that it can handle.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;The questions addressed in this video are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;[00:02]&lt;/strong&gt; “Some time ago you were investigating some hardware for low level programming (Raspberry Pi, Beagle Board). Do you have any suggestions for someone who wants to try some old school game development with this kind of limited hardware? (Emulating old systems doesn’t really do it for me)”&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;[02:42]&lt;/strong&gt; “For some time now I am banging my head against the wall regarding timesteps, framepacing and vsync. I think I understand the gist of how it works in general (frame queues, presentation modes, composition, etc.), but when I try concrete implementations there’s always some kind of catch to work around, which makes it wonky. Like GetFrameStatistics works pretty well, but breaks on multi monitor setups. Manual timing and waiting seems to be too inprecise over time and gives weird results with vsync. What would be the (imaginary, magic) api call needed, to get a metric which solves this once and for all?”&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;[19:38]&lt;/strong&gt; “Has the situation regarding the 30 million line problem improved by now? More specifically, I wanted to know. If it’s feasible for someone to make their own mini os for their own mini game that can run on multiple pcs (only targetting modern hardware but also supporting gpu rendering for newer amd cards).”&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;[23:59]&lt;/strong&gt; “Hi, more on memory mapped files: the impression I got from the course is that they’re quite bad at nearly everything - you don’t have a lot of control over page faults and when / how io happens. But many fast databases, say lmdb, uses memory mapped files and have excellent performance. Could you maybe explain a little bit more nuance on that side, such as where they have a big advantage and should be used? Or maybe you believe that lmdb authors could have achieved similar performance with less effort?”&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;[30:02]&lt;/strong&gt; “I hear people usually say ‘nah, everything been written before us anyway’ or something like that, meaning that you can’t really write anything new, just rebuild/repackage/reinvent the wheel. and you clearly have a different view here. so could you please describe in more details why you think differently (or thought, if something changed)”&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;[35:52]&lt;/strong&gt; “I just tried running SpacingLoop with Rocket Lake on uops.info, and I noticed that it shows LSD instead of DSB. I looked it up and found that LSD means Loop Stream Detector. Could you explain how it works?”&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;[40:25]&lt;/strong&gt; “A question about those masked instructions: we can save some instructions and work by instead of separately computing two values and then recombining them we just do different computations on the same register with different masks: first computation touches a subset, second computation touches a subset. But doesn’t it create a serial chain? Now hardware can’t run both versions in parallel, which may be more efficient for longer chains, but has to do each operation after another? Or is it that smart that it tracks serial dependencies based on masks instead of registers?”&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;[48:43]&lt;/strong&gt; “Tim Davis (sparse matrix algorithms) pointed out that modern machines that rely heavily on caches are actually very similar to theoretical turing machines that have to pay the cost of a navigating head.&lt;/p&gt;
&lt;p&gt;I thought that was another instance of John Backus delaying the compiler technology besides him ignoring the SSA construction from Hoar. as he famously wrote ‘Can programming be liberated from Von Neumann style’. Which turns out not to be a style but a much more grounded method. and funny enough that SSA is just the recovery of functional benefits within this overarching method. I would be very happy if I can hear your thoughts around that, even if just to point out that I am hallucinating.”&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;[51:35]&lt;/strong&gt; “In light of recent videos on removing predication, I’d like to ask about the conditional move instruction. Is this something that’s considered a good thing, if you can’t remove predication otherwise?”&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
</content>
  </entry>
  <entry>
    <id>urn:aggr:item:a2814718a88c40982e5f06bf4f0ab90679549ede</id>
    <title type="text">Nested SIMD Predicates</title>
    <link rel="alternate" type="text/html" href="https://aggr.aymericbeaumet.com/items/computerenhance-com/2026-09-23-nested-simd-predicates/"/>
    <link rel="via" type="text/html" href="https://www.computerenhance.com/p/nested-simd-predicates"/>
    <published>2026-09-23T19:29:51+00:00</published>
    <updated>2026-09-23T19:29:51+00:00</updated>
    <author>
      <name>Computer, Enhance!</name>
    </author>
    <category term="programming"/>
    <source>
      <title>Computer, Enhance!</title>
    </source>
    <summary type="text">Before moving on, it’s worth looking at how we would handle more complex predicates than the ones present in the haversine loop.</summary>
    <content type="html">&lt;p&gt;Before moving on, it’s worth looking at how we would handle more complex predicates than the ones present in the haversine loop.&lt;/p&gt;
&lt;p&gt;Sep 23, 2026&lt;/p&gt;
&lt;p&gt;∙ Paid&lt;/p&gt;
&lt;p&gt;&lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://substackcdn.com/image/fetch/$s_!g9TJ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3bbd5b12-065d-4250-ac02-be3a277fcf7a_3840x2160.jpeg&quot;&gt;&lt;picture class=&quot;article-picture article-picture-fallback&quot; style=&quot;--image-ratio:16 / 9&quot;&gt;&lt;img src=&quot;https://substackcdn.com/image/fetch/$s_!g9TJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3bbd5b12-065d-4250-ac02-be3a277fcf7a_3840x2160.jpeg&quot; alt=&quot;&quot; loading=&quot;eager&quot; decoding=&quot;async&quot; fetchpriority=&quot;high&quot; referrerpolicy=&quot;no-referrer&quot; class=&quot;progressive-image&quot;&gt;&lt;/picture&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;This is the eighteenth video in Part 5 of the Performance-Aware Programming series. Please see the &lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://www.computerenhance.com/p/table-of-contents&quot;&gt;Table of Contents&lt;/a&gt; to quickly navigate through the rest of the course as it is updated, and &lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://github.com/cmuratori/computer_enhance&quot;&gt;the code repository&lt;/a&gt; for downloadable code listings.&lt;/em&gt;&lt;/p&gt;
&lt;h2&gt;The full video is for paid subscribers&lt;/h2&gt;
&lt;p&gt;&lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://substack.com/sign-in?redirect=%2Fp%2Fnested-simd-predicates&amp;amp;for_pub=computerenhance&amp;amp;change_user=false&quot;&gt;Already a paid subscriber? &lt;strong&gt;Sign in&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://www.computerenhance.com/s/programming-courses&quot;&gt;&lt;picture class=&quot;article-picture article-picture-fallback&quot; style=&quot;--image-ratio:16 / 9&quot;&gt;&lt;img src=&quot;https://substackcdn.com/image/fetch/$s_!FgJW!,w_96,h_96,c_fill,f_auto,q_auto:good,fl_progressive:steep,g_auto/https%3A%2F%2Fsubstack.com%2Fimg%2Fpodcast%2Fgeneric.png&quot; alt=&quot;Computer, Enhance!&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; fetchpriority=&quot;low&quot; referrerpolicy=&quot;no-referrer&quot; class=&quot;progressive-image&quot;&gt;&lt;/picture&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Programming Courses&lt;/p&gt;
&lt;p&gt;A series of courses on programming topics.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <id>urn:aggr:item:a307b434960e80db45c2086b5693bcf5a116ae89</id>
    <title type="text">SIMD Mask Registers</title>
    <link rel="alternate" type="text/html" href="https://aggr.aymericbeaumet.com/items/computerenhance-com/2026-09-14-simd-mask-registers/"/>
    <link rel="via" type="text/html" href="https://www.computerenhance.com/p/simd-mask-registers"/>
    <published>2026-09-14T18:33:37+00:00</published>
    <updated>2026-09-14T18:33:37+00:00</updated>
    <author>
      <name>Computer, Enhance!</name>
    </author>
    <category term="programming"/>
    <source>
      <title>Computer, Enhance!</title>
    </source>
    <summary type="text">Although CPUs that support them are still relatively rare by percentage of installed base, mask registers are a powerful feature of modern SIMD hardware well worth understanding.</summary>
    <content type="html">&lt;p&gt;Playback speed&lt;/p&gt;
&lt;p&gt;×&lt;/p&gt;
&lt;p&gt;Share post&lt;/p&gt;
&lt;p&gt;Share post at current time&lt;/p&gt;
&lt;p&gt;0:00&lt;/p&gt;
&lt;p&gt;/&lt;/p&gt;
&lt;h3&gt;Paid episode&lt;/h3&gt;
&lt;p&gt;The full episode is only available to paid subscribers of Computer, Enhance!&lt;/p&gt;
&lt;p&gt;Although CPUs that support them are still relatively rare by percentage of installed base, mask registers are a powerful feature of modern SIMD hardware well worth understanding.&lt;/p&gt;
&lt;p&gt;Sep 14, 2026&lt;/p&gt;
&lt;p&gt;∙ Paid&lt;/p&gt;
&lt;p&gt;&lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://substackcdn.com/image/fetch/$s_!Cgqd!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07ee4e0b-8b44-4b31-bd68-a18b5e5701fe_3840x2160.jpeg&quot;&gt;&lt;picture class=&quot;article-picture article-picture-fallback&quot; style=&quot;--image-ratio:16 / 9&quot;&gt;&lt;img src=&quot;https://substackcdn.com/image/fetch/$s_!Cgqd!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07ee4e0b-8b44-4b31-bd68-a18b5e5701fe_3840x2160.jpeg&quot; alt=&quot;&quot; loading=&quot;eager&quot; decoding=&quot;async&quot; fetchpriority=&quot;high&quot; referrerpolicy=&quot;no-referrer&quot; class=&quot;progressive-image&quot;&gt;&lt;/picture&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;This is the seventeenth video in Part 5 of the Performance-Aware Programming series. Please see the &lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://www.computerenhance.com/p/table-of-contents&quot;&gt;Table of Contents&lt;/a&gt; to quickly navigate through the rest of the course as it is updated, and &lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://github.com/cmuratori/computer_enhance&quot;&gt;the code repository&lt;/a&gt; for downloadable code listings.&lt;/em&gt;&lt;/p&gt;
</content>
  </entry>
  <entry>
    <id>urn:aggr:item:9ca94e9e2d055642a98fd47ca68e626c53f79414</id>
    <title type="text">What Is AI Doing to Math?</title>
    <link rel="alternate" type="text/html" href="https://aggr.aymericbeaumet.com/items/computerenhance-com/2026-09-10-what-is-ai-doing-to-math/"/>
    <link rel="via" type="text/html" href="https://www.computerenhance.com/p/what-is-ai-doing-to-math"/>
    <link rel="enclosure" type="audio/mpeg" href="https://api.substack.com/feed/podcast/215000996/c0c59fdab51f2b770f342fd3de254765.mp3"/>
    <published>2026-09-10T16:01:59+00:00</published>
    <updated>2026-09-10T16:01:59+00:00</updated>
    <author>
      <name>Computer, Enhance!</name>
    </author>
    <category term="programming"/>
    <source>
      <title>Computer, Enhance!</title>
    </source>
    <summary type="text">Listen now (113 mins) | A special double-episode of Wading Through AI covering the recent headlines in the world of formal mathematics.</summary>
    <content type="html">&lt;p&gt;Over the course of 2026, AI has advanced from being a mathematician’s assistant to, in some cases, doing the majority of the work behind important new discoveries. What does this mean for formal mathematics as a discipline?&lt;/p&gt;
&lt;p&gt;In this episode of &lt;em&gt;Wading Through AI&lt;/em&gt;, Demetri walks Casey through three recent high-profile results made possible by the use of AI, and discusses the potential impact of this new level of automation on the field going forward.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;As always, the art for the thumbnail, podcast cover, and banner of Wading Through AI were all hand-drawn by &lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://x.com/aerettberg&quot;&gt;Anna Rettberg&lt;/a&gt; in her signature style. We do not currently use generative AI here at &lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://mollyrocket.com/&quot;&gt;Molly Rocket&lt;/a&gt; .&lt;/em&gt;&lt;/p&gt;
</content>
  </entry>
  <entry>
    <id>urn:aggr:item:1b4961c18a1c274a9b19527e252d2382adcd1d74</id>
    <title type="text">High-Performance Database Architecture</title>
    <link rel="alternate" type="text/html" href="https://aggr.aymericbeaumet.com/items/computerenhance-com/2026-09-09-high-performance-database-architecture/"/>
    <link rel="via" type="text/html" href="https://www.computerenhance.com/p/spacetimedb"/>
    <published>2026-09-09T16:03:33+00:00</published>
    <updated>2026-09-09T16:03:33+00:00</updated>
    <author>
      <name>Casey Muratori</name>
    </author>
    <category term="programming"/>
    <source>
      <title>Computer, Enhance!</title>
    </source>
    <summary type="text">An interview with Tyler Cloutier</summary>
    <content type="html">&lt;p&gt;The conventional wisdom holds that you wouldn’t use an ACID-style, traditional database for holding the runtime state of a real-time application. Certainly you could use one on the backend to hold persistent state, or to handle financial transactions, but you wouldn’t expect an ACID database to be employed as the primary way you’d do something like complete world state management for a videogame.&lt;/p&gt;
&lt;p&gt;But does that actually have to be the case, or is that an antiquated notion of what a database can do? I sat down with Tyler Cloutier from the SpacetimeDB team to talk about that specific question.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <id>urn:aggr:item:16a30d0cae7f4b8f1c3cfc7e70940e16f977e293</id>
    <title type="text">520 Pages Per Hour</title>
    <link rel="alternate" type="text/html" href="https://aggr.aymericbeaumet.com/items/computerenhance-com/2026-09-08-520-pages-per-hour/"/>
    <link rel="via" type="text/html" href="https://www.computerenhance.com/p/520-pages-per-hour"/>
    <published>2026-09-08T16:02:41+00:00</published>
    <updated>2026-09-08T16:02:41+00:00</updated>
    <author>
      <name>Casey Muratori</name>
    </author>
    <category term="programming"/>
    <source>
      <title>Computer, Enhance!</title>
    </source>
    <summary type="text">I wanted to provide some perspective on the research process for The Big OOPs and The Root lectures. This was only feasible method I found.</summary>
    <content type="html">&lt;p&gt;Plumbing the depths of computer history for &lt;em&gt;&lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://www.computerenhance.com/p/the-big-oops-anatomy-of-a-thirty&quot;&gt;The Big OOPs&lt;/a&gt;&lt;/em&gt; and &lt;em&gt;&lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://www.computerenhance.com/p/theroot&quot;&gt;The Root of the Root of All Evil&lt;/a&gt;&lt;/em&gt; consistently proved to be deeply rewarding. Of course, given the limited time budget for preparation, whenever it came time to make the slides, it was a daunting task to create coherent presentations from such large volumes of material. But putting the stress of that aside, spending time with so many enlightening historical artifacts was an otherwise wonderful experience that completely changed the way I think about the history of programming.&lt;/p&gt;
&lt;p&gt;I wanted to share this part of the process in some way, so I originally planned to record myself scrolling through the papers I used in &lt;em&gt;The Big OOPs&lt;/em&gt;. I figured I could comment on each paper as I paged through them, and then edit that into a series of videos to post here. My goal was to do all of the papers that were used in the talk - a subset of everything I had read, but still a large number of papers.&lt;/p&gt;
&lt;p&gt;However, when I tried doing this, the result was completely unworkable. Going through even asubset of just the Bjarne Stroustrup papers &lt;em&gt;by themselves&lt;/em&gt; yielded over &lt;em&gt;eight hours&lt;/em&gt; of recorded material. Editing aggressively might have cut it to four at best.&lt;/p&gt;
&lt;p&gt;At a loss for what to do, I took a page from the modern TikTok playbook and tried going through the Stroustrup papers again, this time challenging myself to talk &lt;em&gt;as fast as humanly possible.&lt;/em&gt; Anna then did an editing pass on it to remove the pauses in between phrases &lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://www.computerenhance.com/p/520-pages-per-hour#footnote-1&quot;&gt;1&lt;/a&gt; .&lt;/p&gt;
&lt;p&gt;The result is arguably the most-ridiculous-100%-serious video I have ever made, but it does “successfully” walk through over 520 pages of historical material in only one hour of runtime! Whether or not it’s actually useful in relaying the “feel” of going through a large volume of material or not… well, you all will have to be judge of that!&lt;/p&gt;
&lt;p&gt;For those of you who like doing follow-up reading, I have included a linked bibliography below that lists all the materials shown, in order of their first appearance in the video:&lt;/p&gt;
</content>
  </entry>
  <entry>
    <id>urn:aggr:item:ba19e35343ab3d65930172f30a8c100741f4e260</id>
    <title type="text">Is AI a Good Research Assistant?</title>
    <link rel="alternate" type="text/html" href="https://aggr.aymericbeaumet.com/items/computerenhance-com/2026-09-02-is-ai-a-good-research-assistant/"/>
    <link rel="via" type="text/html" href="https://www.computerenhance.com/p/is-ai-a-good-research-assistant"/>
    <link rel="enclosure" type="audio/mpeg" href="https://api.substack.com/feed/podcast/213743581/4c0eca6027e44f8c6127802366f5c91e.mp3"/>
    <published>2026-09-02T19:41:44+00:00</published>
    <updated>2026-09-02T19:41:44+00:00</updated>
    <author>
      <name>Computer, Enhance!</name>
    </author>
    <category term="programming"/>
    <source>
      <title>Computer, Enhance!</title>
    </source>
    <summary type="text">Listen now | Recently, I gave a talk called The Root of the Root of All Evil. Like The Big OOPs, it was a research-intensive talk, so Demetri and I decided it might serve as a good spot test for how well the frontier models do on…</summary>
    <content type="html">&lt;p&gt;Recently, I gave a talk called &lt;em&gt;&lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://www.computerenhance.com/p/theroot&quot;&gt;The Root of the Root of All Evil&lt;/a&gt;&lt;/em&gt;. Like &lt;em&gt;&lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://www.computerenhance.com/p/the-big-oops-anatomy-of-a-thirty&quot;&gt;The Big OOPs&lt;/a&gt;&lt;/em&gt;, it was a research-intensive talk, so Demetri and I decided it might serve as a good spot test for how well the frontier models do on historical research.&lt;/p&gt;
&lt;p&gt;In this episode of &lt;em&gt;Wading Through AI&lt;/em&gt;, Demetri runs the major models on a query designed to reproduce the top-level research necessary for my talk. We evaluate how well they did, and speculate on the usefulness of current AIs for this kind of research.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Demetri has provided a download of the research reports on his website. If you’d like to check them out yourself, you can &lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;http://demetrispanos.com/casey_TROTROAE_research_AI.zip&quot;&gt;download them here&lt;/a&gt; .&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;As always, the art for the thumbnail, podcast cover, and banner of Wading Through AI were all hand-drawn by &lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://x.com/aerettberg&quot;&gt;Anna Rettberg&lt;/a&gt; in her signature style. We do not currently use generative AI here at &lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://mollyrocket.com/&quot;&gt;Molly Rocket&lt;/a&gt; .&lt;/em&gt;&lt;/p&gt;
</content>
  </entry>
  <entry>
    <id>urn:aggr:item:1d02f257cf6bc93cb1504d35962d6d8e4b9d8051</id>
    <title type="text">SIMD Masking</title>
    <link rel="alternate" type="text/html" href="https://aggr.aymericbeaumet.com/items/computerenhance-com/2026-08-31-simd-masking/"/>
    <link rel="via" type="text/html" href="https://www.computerenhance.com/p/simd-masking"/>
    <published>2026-08-31T20:51:15+00:00</published>
    <updated>2026-08-31T20:51:15+00:00</updated>
    <author>
      <name>Computer, Enhance!</name>
    </author>
    <category term="programming"/>
    <source>
      <title>Computer, Enhance!</title>
    </source>
    <summary type="text">Once we execute both sides of an if/else, we need some way of merging the results.</summary>
    <content type="html">&lt;p&gt;Playback speed&lt;/p&gt;
&lt;p&gt;×&lt;/p&gt;
&lt;p&gt;Share post&lt;/p&gt;
&lt;p&gt;Share post at current time&lt;/p&gt;
&lt;p&gt;0:00&lt;/p&gt;
&lt;p&gt;/&lt;/p&gt;
&lt;h3&gt;Paid episode&lt;/h3&gt;
&lt;p&gt;The full episode is only available to paid subscribers of Computer, Enhance!&lt;/p&gt;
&lt;p&gt;Once we execute both sides of an if/else, we need some way of merging the results.&lt;/p&gt;
&lt;p&gt;Aug 31, 2026&lt;/p&gt;
&lt;p&gt;∙ Paid&lt;/p&gt;
&lt;p&gt;&lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://substackcdn.com/image/fetch/$s_!JIxq!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3b2f687-f82d-4bc0-8bd0-b5e0c8a4fa97_3840x2160.jpeg&quot;&gt;&lt;picture class=&quot;article-picture article-picture-fallback&quot; style=&quot;--image-ratio:16 / 9&quot;&gt;&lt;img src=&quot;https://substackcdn.com/image/fetch/$s_!JIxq!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3b2f687-f82d-4bc0-8bd0-b5e0c8a4fa97_3840x2160.jpeg&quot; alt=&quot;&quot; loading=&quot;eager&quot; decoding=&quot;async&quot; fetchpriority=&quot;high&quot; referrerpolicy=&quot;no-referrer&quot; class=&quot;progressive-image&quot;&gt;&lt;/picture&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;This is the sixteenth video in Part 5 of the Performance-Aware Programming series. Please see the &lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://www.computerenhance.com/p/table-of-contents&quot;&gt;Table of Contents&lt;/a&gt; to quickly navigate through the rest of the course as it is updated, and &lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://github.com/cmuratori/computer_enhance&quot;&gt;the code repository&lt;/a&gt; for downloadable code listings.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://www.computerenhance.com/s/programming-courses&quot;&gt;&lt;picture class=&quot;article-picture article-picture-fallback&quot; style=&quot;--image-ratio:16 / 9&quot;&gt;&lt;img src=&quot;https://substackcdn.com/image/fetch/$s_!fGm8!,w_96,h_96,c_fill,f_auto,q_auto:good,fl_progressive:steep,g_auto/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdecce376-01ed-4022-bb6a-ed1d1322183e_800x800.png&quot; alt=&quot;Computer, Enhance!&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; fetchpriority=&quot;low&quot; referrerpolicy=&quot;no-referrer&quot; class=&quot;progressive-image&quot;&gt;&lt;/picture&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Programming Courses&lt;/p&gt;
&lt;p&gt;A series of courses on programming topics.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <id>urn:aggr:item:3c01fe081b8dc509844e286ea6f90c32293b4255</id>
    <title type="text">The Root of the Root of All Evil</title>
    <link rel="alternate" type="text/html" href="https://aggr.aymericbeaumet.com/items/computerenhance-com/2026-08-26-the-root-of-the-root-of-all-evil/"/>
    <link rel="via" type="text/html" href="https://www.computerenhance.com/p/theroot"/>
    <published>2026-08-26T03:00:49+00:00</published>
    <updated>2026-08-26T03:00:49+00:00</updated>
    <author>
      <name>Casey Muratori</name>
    </author>
    <category term="programming"/>
    <source>
      <title>Computer, Enhance!</title>
    </source>
    <summary type="text">A Brief History of Programming&#39;s Most Ambiguous Catchphrase</summary>
    <content type="html">&lt;p&gt;Following in the footsteps of last year’s &lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://www.youtube.com/watch?v=wo84LFzx5nI&quot;&gt;The Big OOPs&lt;/a&gt; , I once again decided to do a research-intensive talk for this year’s &lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://bettersoftwareconference.com/&quot;&gt;Better Software Conference&lt;/a&gt; . Last time, my starting point was Ivan Sutherland’s &lt;em&gt;Sketchpad&lt;/em&gt;. This time, it’s the phrase, “premature optimization is the root of all evil.”&lt;/p&gt;
&lt;p&gt;When people bring up this phrase, they typically want to debate its proper application, use it to argue a point, or divine which legendary computer science figure originated it. In this new talk, &lt;em&gt;The Root of the Root of All Evil&lt;/em&gt;, I do none of those things.&lt;/p&gt;
&lt;p&gt;Instead, I try to give as complete a picture as I can of the specific circumstances that lead to the phrase being coined &lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://www.computerenhance.com/p/theroot#footnote-1&quot;&gt;1&lt;/a&gt; . The more research I did on the historical figures involved, the more I came to believe that you can’t really grasp all the subtleties of the original meaning without knowing each of their stories: you’ll either read too much into the phrase, or too little, and miss the subtle understanding necessary to apply it properly.&lt;/p&gt;
&lt;p&gt;So, if you’ve ever wondered what “premature optimization is the root of all evil” &lt;em&gt;really&lt;/em&gt; means - or wondered why a prominent programmer would have said it - I hope you’ll join me for one more journey back into computer science history to search for &lt;em&gt;The Root of the Root of All Evil!&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Nearly all of the photographs used in the talk came from &lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://homepages.cs.ncl.ac.uk/brian.randell/NATO/index.html&quot;&gt;Brian Randell’s fantastic NATO conference history pages&lt;/a&gt; . They are credited to both Randell and his contemporary, Robert McClure. Randell actually appears briefly in the talk proper - he is Dijkstra’s primary interlocutor in the inciting incident for &lt;em&gt;GOTO Considered Harmful&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Unfortunately, at the time I am writing these credits, the server hosting Brian’s page seems to be experience SSL certificate issues. It is a wonderful page, with rare historical photographs, so hopefully this will be resolved soon! If it isn’t, you can try accessing a backup version of the page &lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://web.archive.org/web/20251213170245/http://homepages.cs.ncl.ac.uk/brian.randell/NATO/index.html&quot;&gt;at the internet archive&lt;/a&gt; .&lt;/p&gt;
&lt;p&gt;For the remaining photos: The pictures of Donald Knuth’s books were taken by &lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://en.wikipedia.org/wiki/H%C3%A9ctor_Garc%C3%ADa-Molina&quot;&gt;Héctor García-Molina&lt;/a&gt; , and are available to &lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://cs.stanford.edu/~knuth/graphics.html&quot;&gt;download directly from Donald Knuth’s web site&lt;/a&gt; . The picture of Donald Knuth himself, as well as the photograph of his long-time collaborator Robert Floyd, appear in many places on the internet, and in books, but never with attribution. If anyone knows the original sources of these two photographs, I would be grateful if you could let me know so I can properly credit the photographer(s) here!&lt;/p&gt;
&lt;p&gt;As you might imagine, to prepare a talk like this I read through a large volume of historical material. My research directory for &lt;em&gt;The Root&lt;/em&gt; has over 200 documents in it! From those sprawling thousands of pages, only a select few excerpts make it onto actual slides.&lt;/p&gt;
&lt;p&gt;Each quotation slide bears a footer saying where it came from. If you’d like to read the document behind a slide in more detail, I’ve included a hyperlinked list below to help you find them. Where possible, I have linked to a publicly available version of the material if it appears to have been legitimately posted (ie., not pirated).&lt;/p&gt;
&lt;p&gt;In the order in which each appears in the talk, the excerpts are from:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://archive.org/details/sim_acm-computing-surveys_1974_6_contents/mode/2up&quot;&gt;ACM Computing Surveys, Volume 6, No. 4&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://dl.acm.org/doi/10.1145/356635.356640&quot;&gt;Structured Programming with go to Statements&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://onlinelibrary.wiley.com/doi/abs/10.1002/spe.4380190702&quot;&gt;The Errors of TeX&lt;/a&gt; &lt;em&gt;(paid access only)&lt;/em&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://dl.acm.org/doi/10.1145/800001.811672&quot;&gt;EWD196 - The Structure of the “THE”-Multiprogramming System&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://dl.acm.org/doi/book/10.1145/3544585&quot;&gt;Edsger Wybe Dijkstra - His Life, Work and Legacy&lt;/a&gt; &lt;em&gt;(paid access only)&lt;/em&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://conservancy.umn.edu/server/api/core/bitstreams/7a97387c-e045-4647-925c-d6d94a312f6e/content&quot;&gt;An Interview with Edsger W. Dijkstra&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://www.cs.utexas.edu/~EWD/ewd02xx/EWD215.PDF&quot;&gt;EWD215 - A Case against the GO TO Statement&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://dl.acm.org/doi/epdf/10.1145/362929.362947&quot;&gt;Go To Statement Considered Harmful&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://www.cs.utexas.edu/~EWD/ewd13xx/EWD1308.PDF&quot;&gt;EWD1308 - What led to “Notes on Structured Programming”&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://www.cs.utexas.edu/~EWD/ewd02xx/EWD245.PDF&quot;&gt;EWD245 - On Useful Structuring&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://www.cs.utexas.edu/~EWD/ewd03xx/EWD340.PDF&quot;&gt;EWD340 - The Humble Programmer&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://bitsavers.trailing-edge.com/magazines/Datamation/196810.pdf&quot;&gt;Datamation - October 1968&lt;/a&gt; &lt;em&gt;(original scan preserved thanks to &lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://www.patreon.com/cw/bitsavers&quot;&gt;Bitsavers&lt;/a&gt; )&lt;/em&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://bitsavers.trailing-edge.com/magazines/Datamation/196812.pdf&quot;&gt;Datamation - December 1968&lt;/a&gt; &lt;em&gt;(original scan preserved thanks to &lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://www.patreon.com/cw/bitsavers&quot;&gt;Bitsavers&lt;/a&gt; )&lt;/em&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://www.cs.utexas.edu/~EWD/ewd02xx/EWD227.PDF&quot;&gt;EWD227 - Stepwise Program Construction&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;http://infolab.stanford.edu/pub/cstr/reports/cs/tr/73/371/CS-TR-73-371.pdf&quot;&gt;A Review of “Structured Programming”&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://web.archive.org/web/20251213165653/http://homepages.cs.ncl.ac.uk/brian.randell/NATO/nato1968.PDF&quot;&gt;NATO Software Engineering Conference 1968 Report&lt;/a&gt; &lt;em&gt;(at the Internet Archive, since Brian Randell’s page is currently down)&lt;/em&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://www.cs.utexas.edu/~EWD/ewd02xx/EWD249.PDF&quot;&gt;EWD249 - Notes on Structured Programming&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://www.cs.utexas.edu/~EWD/ewd02xx/EWD209.PDF&quot;&gt;EWD209 - A Constructive Approach to the Problem of Program Correctness&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://dl.acm.org/doi/10.1145/358549.358561&quot;&gt;The Emperor’s Old Clothes&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://www.cs.ox.ac.uk/publications/publication8100-abstract.html&quot;&gt;Efficient Production of Large Programs&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://dl.acm.org/doi/10.1145/365696.365702&quot;&gt;A Contribution to the Development of ALGOL&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://archive.computerhistory.org/resources/text/Knuth_Don_X4100/PDF_index/k-9-pdf/k-9-u2293-Record-Handling-Hoare.pdf&quot;&gt;Record Handling&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://www.computerhistory.org/collections/catalog/102658017/?media=131887&quot;&gt;Oral History of Sir Antony Hoare&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://archive.org/details/Structured_Programming__Dahl_Dijkstra_Hoare&quot;&gt;Structured Programming&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://archive.computerhistory.org/resources/text/Oral_History/Knuth_Don_1/Knuth_Don.oral_history.2007.102658053_all.pdf&quot;&gt;Oral History of Donald Knuth&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://exhibits.stanford.edu/stanford-pubs/catalog/ck700wt5969&quot;&gt;Research in the Computer Science Department (1969)&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://www.sciencedirect.com/science/article/abs/pii/0020019071900184&quot;&gt;Notes on Avoiding “go to” Statements&lt;/a&gt; &lt;em&gt;(paid access only)&lt;/em&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://ieeexplore.ieee.org/document/5392015&quot;&gt;The IBM System/360 Model 91&lt;/a&gt; &lt;em&gt;(paid access only)&lt;/em&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://link.springer.com/article/10.1007/BF01951942&quot;&gt;Optimal Measurement Points for Program Frequency Counts&lt;/a&gt; &lt;em&gt;(paid access only)&lt;/em&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://onlinelibrary.wiley.com/doi/abs/10.1002/spe.4380010203?msockid=116fcbc826066c661f1bdc7727fe6d05&quot;&gt;An Empirical Study of FORTRAN Programs&lt;/a&gt; &lt;em&gt;(paid access only)&lt;/em&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://archive.org/details/designoptimizati0000vari/mode/2up&quot;&gt;The Execution Time Profile As A Programming Tool&lt;/a&gt; &lt;em&gt;(a few months after I bought mine on eBay, somebody uploaded it to the Internet Archive! But it wasn’t me, I swear.)&lt;/em&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://commons.lib.jmu.edu/cgi/viewcontent.cgi?article=1206&amp;amp;context=selectedworks&quot;&gt;An Interview with Charles Antony Richard Hoare&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://www.proquest.com/openview/a7882c93c36fa41d1e1c2d305abbded8/1?pq-origsite=gscholar&amp;amp;cbl=18750&amp;amp;diss=y&quot;&gt;The Debugging of Computer Programs&lt;/a&gt; &lt;em&gt;(paid access only - only appears in the Q&amp;amp;A)&lt;/em&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I realize these days it’s a hard sell to convince people to spend time reading historical documents. Why not just have an AI do it for you?&lt;/p&gt;
&lt;p&gt;Personally, I find the literal act of going through the documents to be the most valuable part of the experience. The primary reason for this is that an overall sense of the material is what matters more than any particular fact, and it’s not possible to get that without spending a considerable amount of time immersed in the historical record.&lt;/p&gt;
&lt;p&gt;But a secondary reason is that it’s impossible to know beforehand all the facts you might want to look for. Every time I go spelunking in computer science history, I always happen upon dozens of fascinating artifacts that I was never specifically looking for. It might be Doug Ross’s invention (and use) of fat structs in the 1950s, Bjarne Stroustrup doing “Dependency Injection” in 1979 (more on that later), or, this latest time, finding Sir Charles Antony Richard Hoare proposing what appears to be static single-assignment form… in 1965!&lt;/p&gt;
&lt;p&gt;&lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://en.wikipedia.org/wiki/Static_single-assignment_form&quot;&gt;SSA&lt;/a&gt; - a mainstay of compiler construction still used in today’s most popular backends - was supposedly developed in the 1980s at IBM. Though I’ve never done any research into that claim (or its history), while doing research for &lt;em&gt;The Root&lt;/em&gt;, I stumbled upon the following passage in &lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://www.cs.ox.ac.uk/files/6069/H65%20-%20Programming.pdf&quot;&gt;an unpublished IFIP proposal of Hoare’s&lt;/a&gt; :&lt;/p&gt;
&lt;p&gt;&lt;picture class=&quot;article-picture article-picture-fallback&quot; style=&quot;--image-ratio:16 / 9&quot;&gt;&lt;img src=&quot;https://substackcdn.com/image/fetch/$s_!feZW!,w_720,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e16d08c-d60a-4774-ad1c-5b587196be06_1174x1666.png&quot; alt=&quot;&quot; loading=&quot;eager&quot; decoding=&quot;async&quot; fetchpriority=&quot;high&quot; referrerpolicy=&quot;no-referrer&quot; class=&quot;progressive-image&quot;&gt;&lt;/picture&gt;&lt;picture class=&quot;article-picture article-picture-fallback&quot; style=&quot;--image-ratio:16 / 9&quot;&gt;&lt;img src=&quot;https://substackcdn.com/image/fetch/$s_!1hI5!,w_720,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb20adefd-93e4-4a41-a0ee-e2021a966ac6_1182x1678.png&quot; alt=&quot;&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; fetchpriority=&quot;low&quot; referrerpolicy=&quot;no-referrer&quot; class=&quot;progressive-image&quot;&gt;&lt;/picture&gt;&lt;/p&gt;
&lt;p&gt;The coversheet and most relevant page from Hoare&#39;s IFIP 1965 proposal&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Firstly, the program is transformed into an identically equivalent program from which all inner blocks have been removed, and in which no identifier occurs more than once on the left hand side of an assignment statement. The satisfaction of these conditions is made possible by the absence of go to statements, conditional statements, and for statements from the language of the translation routines. The next stage is to rearrange [the] sequence of the statements of the program in such a way that every variable occurs on the left hand side of an assignment before its first occurrence on the right hand side. This can be done by the same topological sorting algorithm that is widely used in PERT programs.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Hoare proposes the SSA-like transformation for the exact same reason as it was eventually developed (and for which it is still used to this day): as an internal representation structure for multi-pass compilers.&lt;/p&gt;
&lt;p&gt;So why did the world have to wait another 15 years for compiler authors to develop SSA proper? According to the handwritten note added to the proposal’s coversheet by Hoare in 1998:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;As a result of negative comments of Naur at the congress, I never wrote this up for publication. He said writing a nine-pass compiler was easy.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;The “Naur”, in this case, is &lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://en.wikipedia.org/wiki/Peter_Naur&quot;&gt;Peter Naur&lt;/a&gt; , whose name you may recognize from the term “ &lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://en.wikipedia.org/wiki/Backus%E2%80%93Naur_form&quot;&gt;Backus-Naur Form&lt;/a&gt; ”, which is used ubiquitously to refer to a notation style for defining programming language syntax.&lt;/p&gt;
&lt;p&gt;I hope you enjoy &lt;em&gt;The Root of the Root of All Evil&lt;/em&gt;. As with &lt;em&gt;The Big OOPs&lt;/em&gt;, I once again learned a tremendous amount about the history of computing while preparing it. But, also like &lt;em&gt;The Big OOPs&lt;/em&gt;, I came away with the inescapable feeling that I’d only just scratched the surface.&lt;/p&gt;
&lt;p&gt;I’m not sure if I’ll do another one of these talks in the future. They’re extremely stressful to prepare, because the volume of information you’re trying to streamline is immense - far larger than any other kind of talk I’ve ever given. There is always more research you could do, and nagging questions whose answers might exist in some obscure document you just haven’t yet found. I am typically making slides right up until the moment I give the talk, and I never get the chance to do a proper rehearsal beforehand.&lt;/p&gt;
&lt;p&gt;But I doubt I’ll ever stop nosing around in computer science history. There’s so much great stuff, I’m sure I’ll never exhaust it. As an industry, sadly, it feels like we’ve forgotten far more than we’ve retained.&lt;/p&gt;
&lt;p&gt;On that note, since this is the one-year anniversary of &lt;em&gt;The Big OOPs&lt;/em&gt;, I’ve also prepared a special hour-long, members-only video where I do my best to show what it’s like to read through the historical materials used to prepare these two unusual talks. It attempts to condense an over-500-page slice of &lt;em&gt;Big OOPs&lt;/em&gt; research into one hour, which of course requires my best impression of the latest TikTok “fast talking” style. For all you OOP fans out there, it also includes the aforementioned finding that Stroustrup proposed dependency injection in the late seventies.&lt;/p&gt;
&lt;p&gt;I will be posting that video here as a follow-up, so if you’d like to be notified when it’s live, please check out our subscription options:&lt;/p&gt;
&lt;p&gt;Until next time, have fun programming everyone, and I’ll see you on the Internet.&lt;/p&gt;
&lt;p&gt;— Casey&lt;/p&gt;
&lt;p&gt;&lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://www.computerenhance.com/p/theroot#footnote-anchor-1&quot;&gt;1&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Regardless of who coined it, since some - including at times its most likely originator, Donald Knuth - have attributed it to others.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <id>urn:aggr:item:913effba24ab06626429e4b1c2d6ee776e7ba555</id>
    <title type="text">Q&amp;A #87 (2026-08-25)</title>
    <link rel="alternate" type="text/html" href="https://aggr.aymericbeaumet.com/items/computerenhance-com/2026-08-25-q-a-87-2026-08-25/"/>
    <link rel="via" type="text/html" href="https://www.computerenhance.com/p/q-and-a-87-2026-08-25"/>
    <published>2026-08-25T20:14:29+00:00</published>
    <updated>2026-08-25T20:14:29+00:00</updated>
    <author>
      <name>Computer, Enhance!</name>
    </author>
    <category term="programming"/>
    <source>
      <title>Computer, Enhance!</title>
    </source>
    <summary type="text">Answers to questions from the last Q&amp;A thread.</summary>
    <content type="html">&lt;p&gt;&lt;em&gt;In each Q&amp;amp;A video, I answer questions from the comments on the previous Q&amp;amp;A video, which can be from any part of the course.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;The questions addressed in this video are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;[00:03]&lt;/strong&gt; “Would you agree or disagree that, early abstraction is the root of all evil? I find once I stopped doing that I can come up with much better quality abstractions.”&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;[03:07]&lt;/strong&gt; “I have trouble quantifying how much memory/cache layout actually matters for real-world performance, in contrast to something like SIMD where the 8x speedup is predictable, intuitive and easy to measure … ‘Fit in cache’ is one of the most common phrases in performance circles but at the same time fat structs are often recommended. Anton Mikhailov’s modeler benchmark found no substantial difference until structs exceeded ~1KB … For something like the ~100x gap between Visual Studio and RAD Debugger, how much of that actually comes from cache/allocation patterns specifically, versus general algorithmic/architectural overhead—unnecessary work, abstraction layers, etc.? I keep hearing ‘CPUs have improved by orders of magnitude while memory hasn’t’ and ‘Performance nowadays is mostly about memory/cache” but dont see how that matches my observations above.”&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;[17:22]&lt;/strong&gt; “I would love to practice all the concepts from this course. Any tips what kind of game / genre would naturally force me to write performant code? I wanna make something 2D since iam making it alone and Iam not good at modeling.”&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;[22:24]&lt;/strong&gt; “Do you think there is harm in learning standard data structures standard implementation? or would it be best to wait until the end of this course to be armed with maximum knowledge for how to properly implement them on real hardware to get real speed wins?”&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;[27:54]&lt;/strong&gt; “What do you think of the Steam Machine specs?”&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;[28:02]&lt;/strong&gt; “You’ve mentioned many times that you think AI companies are doing things in an unethical way by not compensating the original content creators explicitly for training, even if they pay to acquire access to the content. For an AI company to get on your “good side,” would they need to make models that are only based on completely open or non-copyrighted works and/or explicitly pay for AI training rights for copyrighted works?”&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;[37:25]&lt;/strong&gt; “You said you’ve personally never seen an heap data structure used in the video game programming industry. I thought video games often need to compute shortest paths, and the main algorithm for that, Dijkstra’s algorithm, is usually implemented with an heap. Am I mistaken in thinking video games often compute shortest paths ? Or is it that you use other algorithms which don’t require heap ? If so, which algorithms are often used in video games ?”&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;[40:02]&lt;/strong&gt; “When a CPU experiences an L1 cache miss but an L2 cache hit, does the data get copied into L1 before the CPU core uses it, or can the core read the data directly from L2?”&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;[43:12]&lt;/strong&gt; “Can you comment on the Cyclomatic Complexity metric (and maybe complexity analysis in general)?”&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;[44:37]&lt;/strong&gt; “What do you think would be a good project to apply performance aware programming to? I&#39;ve seen the video editor Blick releasing recently and it looks super fast, are there other type of software that have a large gap in their performance and that someone could fix?”&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;[51:02]&lt;/strong&gt; &amp;quot;One of the things I’ve noticed in my own programming, as well as my coworkers, and dev logs on YouTube is that when people self evaluate their code solving a particular problem. There doesn’t seem to be much grounding on what actually worked, and what didn’t. Particularly with my own work, I tend to have rose tinted glasses about what I did, but then a few months later I start running into the limitations and edge cases and I’m no longer happy with it. Have you found this to be true with your own software projects? And do you have any advice or metrics to use to try to help evaluate the code early and get rid of the rose tinted glasses?”&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;[53:00]&lt;/strong&gt; “From the ‘Three Steps from Scalar to SIMD’ video: what is the difference between ‘Reduce’ and ‘Recode’?”&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;[54:14]&lt;/strong&gt; “I’m not really getting why the ‘Reservoir Sampling’ is better than caching all valid elements in an array and just doing a single random generation for the index. I get that probably the random-next function is just a bunch of adds muls mods or even xors (unless you use a Mersenne Twister or something). But if the list is short enough, and assuming the isValid predicate is simple, even the simpler RNGs can’t be faster than just a bunch of movs of indices or pointers pushed to the stack or copied into an array in a reserved page-aligned heap, and then one-shoting the index after.”&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
</content>
  </entry>
  <entry>
    <id>urn:aggr:item:d5796d450a98cf9a0c18a341ebb6f9283ae8be53</id>
    <title type="text">The Pit of Success</title>
    <link rel="alternate" type="text/html" href="https://aggr.aymericbeaumet.com/items/computerenhance-com/2026-08-19-the-pit-of-success/"/>
    <link rel="via" type="text/html" href="https://www.computerenhance.com/p/pit-of-success"/>
    <published>2026-08-19T17:24:18+00:00</published>
    <updated>2026-08-19T17:24:18+00:00</updated>
    <author>
      <name>Casey Muratori</name>
    </author>
    <category term="programming"/>
    <source>
      <title>Computer, Enhance!</title>
    </source>
    <summary type="text">An Interview with Rico Mariani</summary>
    <content type="html">&lt;p&gt;Most of the material I make for &lt;em&gt;Computer Enhance&lt;/em&gt; focuses on the programming side of software performance. What about the institutional side? How do you raise awareness of performance concerns inside an organization? At what stages of a project is a performance expert most useful? When did software development lose its emphasis on performance in the first place?&lt;/p&gt;
&lt;p&gt;In this interview with &lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://x.com/ricomariani&quot;&gt;Rico Mariani&lt;/a&gt; &lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://www.computerenhance.com/p/pit-of-success#footnote-1&quot;&gt;1&lt;/a&gt; , we talk about precisely these questions. He spent much of his career at Microsoft trying to fix performance problems, both directly and indirectly. While working on the C# CLR, he coined the term “pit of success” to express the need for platform developers to design APIs such that non-experts will create software that performs well by default.&lt;/p&gt;
&lt;p&gt;Rico walks me through that episode, and many more, in this hour-and-a-half interview.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;If you’re interested in software performance, you’ve come to the right place. Computer Enhance is &lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://www.computerenhance.com/p/table-of-contents&quot;&gt;a giant archive&lt;/a&gt; of performance programming materials, with more added every week. Check out our free and paid subscription options here:&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://www.computerenhance.com/p/pit-of-success#footnote-anchor-1&quot;&gt;1&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;In addition to following him on X, Rico also posts about performance from time to time &lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://ricomariani.medium.com/&quot;&gt;on medium&lt;/a&gt; . You can also find him on &lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://www.linkedin.com/in/ricomariani&quot;&gt;LinkedIn&lt;/a&gt; .&lt;/p&gt;
</content>
  </entry>
  <entry>
    <id>urn:aggr:item:0d0bf77b68c667ec921d285423bc9efb33b3c61d</id>
    <title type="text">The Pattern Behind x64 CMPPS/PD Immediates</title>
    <link rel="alternate" type="text/html" href="https://aggr.aymericbeaumet.com/items/computerenhance-com/2026-08-18-the-pattern-behind-x64-cmpps-pd-immediates/"/>
    <link rel="via" type="text/html" href="https://www.computerenhance.com/p/the-pattern-behind-x64-cmppspd-immediates"/>
    <published>2026-08-18T23:21:28+00:00</published>
    <updated>2026-08-18T23:21:28+00:00</updated>
    <author>
      <name>Casey Muratori</name>
    </author>
    <category term="programming"/>
    <source>
      <title>Computer, Enhance!</title>
    </source>
    <summary type="text">If you&#39;re wondering how the 5 bits used in the CMPPD/PS immediate got assigned the way they did, Pete Cawley&#39;s got your back.</summary>
    <content type="html">&lt;p&gt;While I can’t say it matters for any practical purpose, I have more-than-once wondered how Intel came up with this table:&lt;/p&gt;
&lt;p&gt;&lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://substackcdn.com/image/fetch/$s_!yQYq!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4ab4a228-d21c-4864-b6cc-b3329621e785_2006x2370.png&quot;&gt;&lt;picture class=&quot;article-picture article-picture-fallback&quot; style=&quot;--image-ratio:16 / 9&quot;&gt;&lt;img src=&quot;https://substackcdn.com/image/fetch/$s_!yQYq!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4ab4a228-d21c-4864-b6cc-b3329621e785_2006x2370.png&quot; alt=&quot;&quot; loading=&quot;eager&quot; decoding=&quot;async&quot; fetchpriority=&quot;high&quot; referrerpolicy=&quot;no-referrer&quot; class=&quot;progressive-image&quot;&gt;&lt;/picture&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Table 1-2 from the CMPPD entry in Volume 2, Chapter 3 of the Intel 64 and IA-32 Architectures Software Developer’s Manual&lt;/p&gt;
&lt;p&gt;The meaning of these immediate values is straightforward enough if you understand the &lt;code&gt;cmpps&lt;/code&gt; and &lt;code&gt;cmppd&lt;/code&gt; instructions. First, you pick one of eight different comparisons: equal, less-than, less-than-or-equal, always false, not equal, greater-than-or-equal, greater-than, and always true. Then, you pick whether or not you want the comparison to be signaling &lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://www.computerenhance.com/p/the-pattern-behind-x64-cmppspd-immediates#footnote-1&quot;&gt;1&lt;/a&gt; . Finally, you pick whether you want NaN’s to pass through as true values or false values (called “unordered” vs. “ordered” comparisons in this context).&lt;/p&gt;
&lt;p&gt;Once you’ve made those three decisions, you combine them together and you pick the immediate value that corresponds to your choice. Eight possible comparisons, times two for signaling-or-not, times another two for ordered-or-not, equals thirty-two different values. Great! That’s exactly how many are in the table. Everything checks out.&lt;/p&gt;
&lt;p&gt;But how did Intel choose which combination of immediate bits mapped to which combination of choices? Naively, one might think that a bit would be set whenever the comparison is signaling. Another might be set if the comparison is unordered. And so on.&lt;/p&gt;
&lt;p&gt;To some extent, this does seem to be true. 0H, 8H, 10H, and 18H code for the four different possible equals comparisons. This would imply that the 4th and 5th bits must code for ordering and signaling, respectively, right?&lt;/p&gt;
&lt;p&gt;Well, 0H, where the 4th bit is unset, is an ordered equals. 8H, where the 4th bit is set, is an unordered equals. So the 4th bit must code for an unordered comparison.&lt;/p&gt;
&lt;p&gt;Except wait - 4H, which does &lt;em&gt;not&lt;/em&gt; have the 4th bit set, is an unordered not-equals. CH, which &lt;em&gt;does&lt;/em&gt; have the 4th bit set, is the ordered version! So the bit seems to code for the opposite in this case.&lt;/p&gt;
&lt;p&gt;This kind of pattern continues whenever you look at the values. You can find &lt;em&gt;something&lt;/em&gt; like a relationship between bits, but never quite what you would expect.&lt;/p&gt;
&lt;p&gt;Recently, I asked The Internet if anyone knew what was actually going on here. While it unfortunately rewards my lazy behavior, I am delighted to report that &lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://x.com/corsix&quot;&gt;Pete Cawley&lt;/a&gt; worked out what was likely going on, and wrote it up:&lt;/p&gt;
&lt;p&gt;&lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://www.corsix.org/content/encoding-vcmpps-vcmppd&quot;&gt;&lt;picture class=&quot;article-picture article-picture-fallback&quot; style=&quot;--image-ratio:16 / 9&quot;&gt;&lt;img src=&quot;https://substackcdn.com/image/fetch/$s_!uUJy!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8dc40ab-1977-44f7-adb4-81ab32b3745f_1574x666.png&quot; alt=&quot;&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; fetchpriority=&quot;low&quot; referrerpolicy=&quot;no-referrer&quot; class=&quot;progressive-image&quot;&gt;&lt;/picture&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;It’s a quick read, and covers the entire immediate encoding. So, if you’re like me and are curious as to how these sorts of things end up the way they do, I highly recommend you &lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://www.corsix.org/content/encoding-vcmpps-vcmppd&quot;&gt;head over to Pete’s writeup&lt;/a&gt; and check it out!&lt;/p&gt;
&lt;p&gt;&lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://www.computerenhance.com/p/the-pattern-behind-x64-cmppspd-immediates#footnote-anchor-1&quot;&gt;1&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Which, unless you’ve unmasked them yourself, usually won’t signal either way, since NaN exceptions are masked out by default on the most x64-based OSes.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <id>urn:aggr:item:222f8b75993cd15d59a9378bded4e8d51bb11f28</id>
    <title type="text">SIMD Predicates</title>
    <link rel="alternate" type="text/html" href="https://aggr.aymericbeaumet.com/items/computerenhance-com/2026-08-17-simd-predicates/"/>
    <link rel="via" type="text/html" href="https://www.computerenhance.com/p/simd-predicates"/>
    <published>2026-08-17T19:58:27+00:00</published>
    <updated>2026-08-17T19:58:27+00:00</updated>
    <author>
      <name>Computer, Enhance!</name>
    </author>
    <category term="programming"/>
    <source>
      <title>Computer, Enhance!</title>
    </source>
    <summary type="text">Although counterintuitive at first, using purpose-built comparison instructions we can easily translate if/else branches into SIMD code.</summary>
    <content type="html">&lt;p&gt;Playback speed&lt;/p&gt;
&lt;p&gt;×&lt;/p&gt;
&lt;p&gt;Share post&lt;/p&gt;
&lt;p&gt;Share post at current time&lt;/p&gt;
&lt;p&gt;0:00&lt;/p&gt;
&lt;p&gt;/&lt;/p&gt;
&lt;h3&gt;Paid episode&lt;/h3&gt;
&lt;p&gt;The full episode is only available to paid subscribers of Computer, Enhance!&lt;/p&gt;
&lt;p&gt;Although counterintuitive at first, using purpose-built comparison instructions we can easily translate if/else branches into SIMD code.&lt;/p&gt;
&lt;p&gt;Aug 17, 2026&lt;/p&gt;
&lt;p&gt;∙ Paid&lt;/p&gt;
&lt;p&gt;&lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://substackcdn.com/image/fetch/$s_!CnMA!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53e36de6-4f4b-4f08-8ad8-72eff26f50aa_3840x2160.jpeg&quot;&gt;&lt;picture class=&quot;article-picture article-picture-fallback&quot; style=&quot;--image-ratio:16 / 9&quot;&gt;&lt;img src=&quot;https://substackcdn.com/image/fetch/$s_!CnMA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53e36de6-4f4b-4f08-8ad8-72eff26f50aa_3840x2160.jpeg&quot; alt=&quot;&quot; loading=&quot;eager&quot; decoding=&quot;async&quot; fetchpriority=&quot;high&quot; referrerpolicy=&quot;no-referrer&quot; class=&quot;progressive-image&quot;&gt;&lt;/picture&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;This is the fifteenth video in Part 5 of the Performance-Aware Programming series. Please see the &lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://www.computerenhance.com/p/table-of-contents&quot;&gt;Table of Contents&lt;/a&gt; to quickly navigate through the rest of the course as it is updated, and &lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://github.com/cmuratori/computer_enhance&quot;&gt;the code repository&lt;/a&gt; for downloadable code listings.&lt;/em&gt;&lt;/p&gt;
</content>
  </entry>
  <entry>
    <id>urn:aggr:item:9c383ad5f4c9a1e6ecd1825d202f1947d7de74bc</id>
    <title type="text">Branchless Absolute Value</title>
    <link rel="alternate" type="text/html" href="https://aggr.aymericbeaumet.com/items/computerenhance-com/2026-08-10-branchless-absolute-value/"/>
    <link rel="via" type="text/html" href="https://www.computerenhance.com/p/branchless-absolute-value"/>
    <published>2026-08-10T19:29:46+00:00</published>
    <updated>2026-08-10T19:29:46+00:00</updated>
    <author>
      <name>Computer, Enhance!</name>
    </author>
    <category term="programming"/>
    <source>
      <title>Computer, Enhance!</title>
    </source>
    <summary type="text">Some operations are uniform enough that, even though we might ordinarily think of them as using a predicate, they can nonetheless be done by direct manipulation of the underlying bit pattern.</summary>
    <content type="html">&lt;p&gt;Playback speed&lt;/p&gt;
&lt;p&gt;×&lt;/p&gt;
&lt;p&gt;Share post&lt;/p&gt;
&lt;p&gt;Share post at current time&lt;/p&gt;
&lt;p&gt;0:00&lt;/p&gt;
&lt;p&gt;/&lt;/p&gt;
&lt;h3&gt;Paid episode&lt;/h3&gt;
&lt;p&gt;The full episode is only available to paid subscribers of Computer, Enhance!&lt;/p&gt;
&lt;p&gt;Some operations are uniform enough that, even though we might ordinarily think of them as using a predicate, they can nonetheless be done by direct manipulation of the underlying bit pattern.&lt;/p&gt;
&lt;p&gt;Aug 10, 2026&lt;/p&gt;
&lt;p&gt;∙ Paid&lt;/p&gt;
&lt;p&gt;&lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://substackcdn.com/image/fetch/$s_!6lSF!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa38368d5-6b6a-4f2b-a165-e52bc9064d7b_3840x2160.jpeg&quot;&gt;&lt;picture class=&quot;article-picture article-picture-fallback&quot; style=&quot;--image-ratio:16 / 9&quot;&gt;&lt;img src=&quot;https://substackcdn.com/image/fetch/$s_!6lSF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa38368d5-6b6a-4f2b-a165-e52bc9064d7b_3840x2160.jpeg&quot; alt=&quot;&quot; loading=&quot;eager&quot; decoding=&quot;async&quot; fetchpriority=&quot;high&quot; referrerpolicy=&quot;no-referrer&quot; class=&quot;progressive-image&quot;&gt;&lt;/picture&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;This is the fourteenth video in Part 5 of the Performance-Aware Programming series. Please see the &lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://www.computerenhance.com/p/table-of-contents&quot;&gt;Table of Contents&lt;/a&gt; to quickly navigate through the rest of the course as it is updated, and &lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://github.com/cmuratori/computer_enhance&quot;&gt;the code repository&lt;/a&gt; for downloadable code listings.&lt;/em&gt;&lt;/p&gt;
</content>
  </entry>
  <entry>
    <id>urn:aggr:item:7bcecb583a253c834eb1b27eee7cf1f526a0bf60</id>
    <title type="text">What New Jobs?</title>
    <link rel="alternate" type="text/html" href="https://aggr.aymericbeaumet.com/items/computerenhance-com/2026-08-05-what-new-jobs/"/>
    <link rel="via" type="text/html" href="https://www.computerenhance.com/p/what-new-jobs"/>
    <link rel="enclosure" type="audio/mpeg" href="https://api.substack.com/feed/podcast/209966043/fe98ebd13e0d65617a69cd9b7ab6ad4e.mp3"/>
    <published>2026-08-05T18:23:23+00:00</published>
    <updated>2026-08-05T18:23:23+00:00</updated>
    <author>
      <name>Computer, Enhance!</name>
    </author>
    <category term="programming"/>
    <source>
      <title>Computer, Enhance!</title>
    </source>
    <summary type="text">Appeals to prior technological revolutions are often used to assuage fears that AI will lead to widespread unemployment.</summary>
    <content type="html">&lt;p&gt;Appeals to prior technological revolutions are often used to assuage fears that AI will lead to widespread unemployment. Yes, you may lose your job because of AI, but eventually you&#39;ll get a different job in a new field created by the resulting technological progress - or so the argument goes.&lt;/p&gt;
&lt;p&gt;In this episode of&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Wading Through AI&lt;/em&gt;, Demetri and Casey discuss whether this argument holds water, or if it&#39;s just wishful thinking unjustified by direct historical analogy.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;As always, the art for the thumbnail, podcast cover, and banner of Wading Through AI were all hand-drawn by &lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://x.com/aerettberg&quot;&gt;Anna Rettberg&lt;/a&gt; in her signature style. We do not currently use generative AI here at &lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://mollyrocket.com/&quot;&gt;Molly Rocket&lt;/a&gt; .&lt;/em&gt;&lt;/p&gt;
</content>
  </entry>
  <entry>
    <id>urn:aggr:item:9b3fb40878b73470154d46019b79f38bbca3d009</id>
    <title type="text">Three Steps from Scalar to SIMD</title>
    <link rel="alternate" type="text/html" href="https://aggr.aymericbeaumet.com/items/computerenhance-com/2026-08-03-three-steps-from-scalar-to-simd/"/>
    <link rel="via" type="text/html" href="https://www.computerenhance.com/p/three-steps-from-scalar-to-simd"/>
    <published>2026-08-03T17:35:21+00:00</published>
    <updated>2026-08-03T17:35:21+00:00</updated>
    <author>
      <name>Computer, Enhance!</name>
    </author>
    <category term="programming"/>
    <source>
      <title>Computer, Enhance!</title>
    </source>
    <summary type="text">When we want to change the interior of a loop (with complex control flow) from processing one thing to processing several at a time, it&#39;s best to tackle the problem in three sequential steps.</summary>
    <content type="html">&lt;p&gt;Playback speed&lt;/p&gt;
&lt;p&gt;×&lt;/p&gt;
&lt;p&gt;Share post&lt;/p&gt;
&lt;p&gt;Share post at current time&lt;/p&gt;
&lt;p&gt;0:00&lt;/p&gt;
&lt;p&gt;/&lt;/p&gt;
&lt;h3&gt;Paid episode&lt;/h3&gt;
&lt;p&gt;The full episode is only available to paid subscribers of Computer, Enhance!&lt;/p&gt;
&lt;p&gt;When we want to change the interior of a loop (with complex control flow) from processing one thing to processing several at a time, it&#39;s best to tackle the problem in three sequential steps.&lt;/p&gt;
&lt;p&gt;Aug 03, 2026&lt;/p&gt;
&lt;p&gt;∙ Paid&lt;/p&gt;
&lt;p&gt;&lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://substackcdn.com/image/fetch/$s_!SESu!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd43570a2-1431-41d8-a8e6-26df51f9de46_3840x2160.jpeg&quot;&gt;&lt;picture class=&quot;article-picture article-picture-fallback&quot; style=&quot;--image-ratio:16 / 9&quot;&gt;&lt;img src=&quot;https://substackcdn.com/image/fetch/$s_!SESu!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd43570a2-1431-41d8-a8e6-26df51f9de46_3840x2160.jpeg&quot; alt=&quot;&quot; loading=&quot;eager&quot; decoding=&quot;async&quot; fetchpriority=&quot;high&quot; referrerpolicy=&quot;no-referrer&quot; class=&quot;progressive-image&quot;&gt;&lt;/picture&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;This is the thirteenth video in Part 5 of the Performance-Aware Programming series. Please see the &lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://www.computerenhance.com/p/table-of-contents&quot;&gt;Table of Contents&lt;/a&gt; to quickly navigate through the rest of the course as it is updated, and &lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://github.com/cmuratori/computer_enhance&quot;&gt;the code repository&lt;/a&gt; for downloadable code listings.&lt;/em&gt;&lt;/p&gt;
</content>
  </entry>
  <entry>
    <id>urn:aggr:item:f34b09dff02fd0d79a16c1ce869cf179defd591e</id>
    <title type="text">Why AI Companies Need Scale</title>
    <link rel="alternate" type="text/html" href="https://aggr.aymericbeaumet.com/items/computerenhance-com/2026-07-02-why-ai-companies-need-scale/"/>
    <link rel="via" type="text/html" href="https://www.computerenhance.com/p/why-ai-companies-need-scale"/>
    <link rel="enclosure" type="audio/mpeg" href="https://api.substack.com/feed/podcast/204716904/62555ec3f995d3f6595187f0e36fb918.mp3"/>
    <published>2026-07-02T17:51:38+00:00</published>
    <updated>2026-07-02T17:51:38+00:00</updated>
    <author>
      <name>Computer, Enhance!</name>
    </author>
    <category term="programming"/>
    <source>
      <title>Computer, Enhance!</title>
    </source>
    <summary type="text">AI companies seem fixated on scaling.</summary>
    <content type="html">&lt;p&gt;AI companies seem fixated on scaling. From massive marketing budgets to supply-chain-altering datacenter plans, the drive to scale appears to be more urgent and aggressive than in any tech boom that came before.&lt;/p&gt;
&lt;p&gt;In this episode of Wading Through AI, Demetri walks Casey through the list of factors that make scaling a necessity for companies competing to be the AI providers of the future.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;As always, the art for the thumbnail, podcast cover, and banner of Wading Through AI were all hand-drawn by &lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://x.com/aerettberg&quot;&gt;Anna Rettberg&lt;/a&gt; in her signature style. We do not currently use generative AI here at &lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://mollyrocket.com/&quot;&gt;Molly Rocket&lt;/a&gt; .&lt;/em&gt;&lt;/p&gt;
</content>
  </entry>
  <entry>
    <id>urn:aggr:item:8c4f3d6cea60bd97c0c26fdb2de6439d2e483b38</id>
    <title type="text">Let&#39;s Decode the Mystery Bytes!</title>
    <link rel="alternate" type="text/html" href="https://aggr.aymericbeaumet.com/items/computerenhance-com/2026-06-22-let-s-decode-the-mystery-bytes/"/>
    <link rel="via" type="text/html" href="https://www.computerenhance.com/p/lets-decode-the-mystery-bytes"/>
    <published>2026-06-22T17:48:57+00:00</published>
    <updated>2026-06-22T17:48:57+00:00</updated>
    <author>
      <name>Casey Muratori</name>
    </author>
    <category term="programming"/>
    <source>
      <title>Computer, Enhance!</title>
    </source>
    <summary type="text">In this follow-up to &quot;Let&#39;s Answer Ray&#39;s Question!&quot;, we go all the way down the rabbit hole to decode the mysterious eight bytes that kept showing up in-between Ray&#39;s allocations.</summary>
    <content type="html">&lt;p&gt;Last month, I posted &lt;em&gt;&lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://www.computerenhance.com/p/lets-answer-rays-question&quot;&gt;Let’s Answer Ray’s Question!&lt;/a&gt;&lt;/em&gt; - a video where we looked at the memory behavior of two different compilations of the same program. I ended that video by saying that if you could read assembly language (like you can if you did &lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://www.computerenhance.com/i/99218768/performance-aware-programming-series&quot;&gt;Part I of the&lt;/a&gt; &lt;em&gt;&lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://www.computerenhance.com/i/99218768/performance-aware-programming-series&quot;&gt;Performance Aware Programming&lt;/a&gt;&lt;/em&gt;&lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://www.computerenhance.com/i/99218768/performance-aware-programming-series&quot;&gt;course&lt;/a&gt; !), you could go much further and determine even more specifics.&lt;/p&gt;
&lt;p&gt;In this video, we do exactly that. Using disassembly, memory view, and heap debugging, we zero in on exactly who is setting the magic eight bytes we saw next to Ray’s allocations in the first video - and we figure the convoluted way those bytes are encoded.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;If you’d like to be emailed when the third and final video is posted, you can subscribe your email address to either our free or paid tiers using the button below.&lt;/em&gt;&lt;/p&gt;
</content>
  </entry>
  <entry>
    <id>urn:aggr:item:a75ee8e695ba8fd764bd8305414533df7e9aea55</id>
    <title type="text">Will AI End the Open Internet?</title>
    <link rel="alternate" type="text/html" href="https://aggr.aymericbeaumet.com/items/computerenhance-com/2026-06-16-will-ai-end-the-open-internet/"/>
    <link rel="via" type="text/html" href="https://www.computerenhance.com/p/will-ai-end-the-open-internet"/>
    <link rel="enclosure" type="audio/mpeg" href="https://api.substack.com/feed/podcast/202147095/d2160c409d818ca6125e04be51283665.mp3"/>
    <published>2026-06-16T16:06:08+00:00</published>
    <updated>2026-06-16T16:06:08+00:00</updated>
    <author>
      <name>Computer, Enhance!</name>
    </author>
    <category term="programming"/>
    <source>
      <title>Computer, Enhance!</title>
    </source>
    <summary type="text">Listen now | With previously open source projects going closed, and artists increasingly concerned about posting their work online, is AI reversing the internet’s long-established trend toward openness?</summary>
    <content type="html">&lt;p&gt;With previously open source projects going closed, and artists increasingly concerned about posting their work online, is AI reversing the internet’s long-established trend toward openness?&lt;/p&gt;
&lt;p&gt;In this sixth episode of Wading Through AI, &lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://demetrispanos.com/&quot;&gt;Demetri&lt;/a&gt; and I consider the possibility that AI could substantially diminish, or even eventually end, the norms of the open internet.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;As always, the art for the thumbnail, podcast cover, and banner of Wading Through AI were all hand-drawn by &lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://x.com/aerettberg&quot;&gt;Anna Rettberg&lt;/a&gt; in her signature style. We do not currently use generative AI here at &lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://mollyrocket.com/&quot;&gt;Molly Rocket&lt;/a&gt; .&lt;/em&gt;&lt;/p&gt;
</content>
  </entry>
  <entry>
    <id>urn:aggr:item:b608a6ddd299003de1b010c92699a0ec097297aa</id>
    <title type="text">Q&amp;A #86 (2026-06-10)</title>
    <link rel="alternate" type="text/html" href="https://aggr.aymericbeaumet.com/items/computerenhance-com/2026-06-10-q-a-86-2026-06-10/"/>
    <link rel="via" type="text/html" href="https://www.computerenhance.com/p/q-and-a-86-2026-06-10"/>
    <published>2026-06-10T16:00:39+00:00</published>
    <updated>2026-06-10T16:00:39+00:00</updated>
    <author>
      <name>Computer, Enhance!</name>
    </author>
    <category term="programming"/>
    <source>
      <title>Computer, Enhance!</title>
    </source>
    <summary type="text">Answers to questions from the last Q&amp;A thread.</summary>
    <content type="html">&lt;p&gt;&lt;em&gt;In each Q&amp;amp;A video, I answer questions from the comments on the previous Q&amp;amp;A video, which can be from any part of the course.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;For those wondering what the name of the audio API was that made me go “I can’t believe I am forgetting the acronym” in the middle of this video, it was &lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://en.wikipedia.org/wiki/Audio_Stream_Input/Output&quot;&gt;ASIO&lt;/a&gt; .&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;The questions addressed in this video are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;[00:02]&lt;/strong&gt; “The D language actually has this because of Uniform Function Call Syntax. You could have a struct like … and have the rest of the code be none the wiser (even code like foo.x = 7). I think C# has stuff like this too. Is this what you’d be hoping for? If so, I’m surprised - I’d have guessed you usually don’t prefer implicit magic like this happening on things that don’t look like function calls.”&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;[04:37]&lt;/strong&gt; “Could someone remind me what the ‘warm’ criteria was?”&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;[06:00]&lt;/strong&gt; “I have a question about managing intrusive thoughts while writing code. When thoughts come up about edge cases, performance, reliability, or decisions that may need to be revisited later, how do you decide whether to address them immediately or set them aside? I’m finding it difficult to iterate quickly because I often get pulled into these concerns before I’ve built a working v0. I’ve tried writing TODOs in the code and keeping separate notes, but neither approach has worked well for me.”&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;[15:47]&lt;/strong&gt; “I now have a question about wasapi (I believe you now use wasapi but if I’m wrong then you can ignore this question). I’m writing the sound system for my codebase and had my wav parser ready, mixer chugging along, sat back to enjoy a song but then found out that changing the system volume causes these pops.... I know that changing the volume of a sound wave causes the discontinuity which manifests itself as audio popping but in this case where it’s not an internal volume I have control over I don’t know how to fix these. It seems to me as if windows just immediately applied the new volume and my futile attempt of trying to bypass windows’ volume logic didn’t work since they seem to first clamp my samples and then multiply by the volume... I tried some wasapi gist examples and they all had this same issue. Have you had this problem and fixed it in your own code and could you share your knowledge if you have?”&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;[25:07]&lt;/strong&gt; “I formed my question about heaps slightly misleading. It wasn’t about a memory heap, but a data structure, like in the heap sort. In the video together with Primeagen regarding code interviews you commented that heaps are quite slow. So I was wondering, what should you use instead, when the need arises?”&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;[33:27]&lt;/strong&gt; “I’m working on a project that uses a cortex-m7, a fairly fast 32-bit embedded core. It has some fancy pipeline features of big boy desktop chips, like a branch predictor, and the ability to dual issue many instructions, but doesn’t have a RAT (it’s not “out-of-order” at least as far as I know). Do I understand correctly that in CPUs without a RAT, any two adjacent instructions that use the same register are effectively serially dependent? Is this how it used to work in the desktop world back in the day?”&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;[40:53]&lt;/strong&gt; “This question relates to Part 5: Dependency Chain Stalls and In-order Interleaving. From these results, I would expect 12-way interleaving to maintain peak throughput regardless of chain length (4 FMAs/cycle * 3 cycles = 12 FMAs in flight needed to cover the latency). However, that’s not what I observe. With 12-way interleaving, throughput decreases from ~3.6 to ~3.0 FMAs/cycle as the chain length grows. I need a minimum of 16-way interleaving for throughput to stay flat at ~3.8 FMAs/cycle. My conclusion is that the CPU can’t sustain the 3-cycle latency when the FMA execution ports are saturated, resulting in an effective latency of 4 cycles under load. This would explain why I need 4 * 4 = 16 chains to obtain a flat throughput curve. I think you’ve hinted at this in some of your videos. Would you kindly explain why this happens? Thanks!”&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
</content>
  </entry>
  <entry>
    <id>urn:aggr:item:67e7832bbbb27169cf42df86a13ca9165d43d461</id>
    <title type="text">Intuitive Random Selection (with Marc LeBlanc)</title>
    <link rel="alternate" type="text/html" href="https://aggr.aymericbeaumet.com/items/computerenhance-com/2026-06-09-intuitive-random-selection-with-marc-leblanc/"/>
    <link rel="via" type="text/html" href="https://www.computerenhance.com/p/intuitive-random-selection-with-marc"/>
    <published>2026-06-09T17:19:31+00:00</published>
    <updated>2026-06-09T17:19:31+00:00</updated>
    <author>
      <name>Casey Muratori</name>
    </author>
    <category term="programming"/>
    <source>
      <title>Computer, Enhance!</title>
    </source>
    <summary type="text">After the ECS interview, Mahk shared a new random selection that&#39;s much more intuitive than the one typically used in game development.</summary>
    <content type="html">&lt;p&gt;Suppose you want to pick a random element from a set that is difficult to iterate. Perhaps the candidate elements are embedded in a spatial hierarchy, and only determined by a complex predicate.&lt;/p&gt;
&lt;p&gt;One obvious way to solve this problem is to first build a “filtered” array of all the candidate elements, then pick a random index into that array. This always works, and is fair (assuming the RNG is fair) — but it requires reserving space for a potentially-large array, and uses up bandwidth and cache space each time a random selection is made.&lt;/p&gt;
&lt;p&gt;A non-obvious-but-common alternative is to use a statistical method where random numbers are chosen during the initial iteration to continuously “retain or replace” a running selection. The random numbers must be carefully constructed, and typically require a modulus on each step. Proof of the fairness of the method is not obvious, and requires knowledge of the relevant underlying math.&lt;/p&gt;
&lt;p&gt;In short, while it works, and is likely more efficient than the array method, it has drawbacks.&lt;/p&gt;
&lt;p&gt;Inspired by the way you might write such a query in SQL, Marc “Mahk” LeBlanc shared with me a new arrayless picking method that has none of these drawbacks. It’s very similar to the statistical methods version, but without any of the drawbacks.&lt;/p&gt;
&lt;p&gt;In this video, Mahk presents the algorithm in a series of steps, starting from a “worst” random selector, and ending with his new one.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <id>urn:aggr:item:fab7c11b161d25636abd3dfc2c014ac0abc9d711</id>
    <title type="text">Will AI Make Me Worse?</title>
    <link rel="alternate" type="text/html" href="https://aggr.aymericbeaumet.com/items/computerenhance-com/2026-06-04-will-ai-make-me-worse/"/>
    <link rel="via" type="text/html" href="https://www.computerenhance.com/p/will-ai-make-me-worse"/>
    <link rel="enclosure" type="audio/mpeg" href="https://api.substack.com/feed/podcast/200639467/82f6e62ca7fe4f0f40754d62b952ac6c.mp3"/>
    <published>2026-06-04T19:34:18+00:00</published>
    <updated>2026-06-04T19:34:18+00:00</updated>
    <author>
      <name>Computer, Enhance!</name>
    </author>
    <category term="programming"/>
    <source>
      <title>Computer, Enhance!</title>
    </source>
    <summary type="text">As people increasingly rely on AI to do some or all of their work, what effects will this have on people&#39;s work quality, skills, and emotional state?</summary>
    <content type="html">&lt;p&gt;As people integrate more and more AI into their daily work, will the quality of the work they produce suffer? Will their own skills degrade as a result of relying on AI? Will there be negative psychological effects in the shift from doing work directly to doing it indirectly through AI prompting?&lt;/p&gt;
&lt;p&gt;In this episode, &lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://demetrispanos.com/&quot;&gt;Demetri&lt;/a&gt; and I explore these issues as we consider the broad question many people are asking themselves: “Will AI make me worse?”&lt;/p&gt;
&lt;p&gt;&lt;em&gt;As always, the art for the thumbnail, podcast cover, and banner of Wading Through AI were all hand-drawn by &lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://x.com/aerettberg&quot;&gt;Anna Rettberg&lt;/a&gt; in her signature style. We do not currently use generative AI here at &lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://mollyrocket.com/&quot;&gt;Molly Rocket&lt;/a&gt; .&lt;/em&gt;&lt;/p&gt;
</content>
  </entry>
</feed>
