<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title type="html">James Gasek</title>
  <subtitle>Writing on software, hardware, and applied AI.</subtitle>
  <link href="https://www.gasek.net/feed.xml" rel="self" type="application/atom+xml" />
  <link href="https://www.gasek.net/" rel="alternate" type="text/html" />
  <id>https://www.gasek.net/feed.xml</id>
  <updated>2026-09-03T00:00:00.000Z</updated>
  <entry>
    <title type="html">On Rich Sutton's &quot;The Bitter Lesson&quot;</title>
    <link href="https://www.gasek.net/posts/bitter-lesson" rel="alternate" type="text/html" title="On Rich Sutton's &quot;The Bitter Lesson&quot;" />
    <id>https://www.gasek.net/posts/bitter-lesson</id>
    <published>2026-09-03T00:00:00.000Z</published>
    <updated>2026-09-03T00:00:00.000Z</updated>
    <content type="html"><![CDATA[<p>Last night, I met up with a friend working in a similar field, and we talked about some of the industry patterns we saw emerging and compared how our roles have changed in the last 24 months or so. We both spend a lot of time working with LLMs, "Prompt engineering" (Context engineering? Harness engineering?). Throughout our discussion, we eventually agreed that we'd find the most effective solution to often be to just "get out of the way"- my friend referenced Rich Sutton's <a href="http://www.incompleteideas.net/IncIdeas/BitterLesson.html">"The Bitter Lesson"</a> .</p>
<p>In the article, Rich argues that, in the long run, the only thing that matters for a solution to a problem is how effectively you can offload the problem to something bottlenecked (or solved) by raw computation.  Although there are often optimizations that can be made on top of these brute-force style methods, Rich argues that it's probably not worth the trouble. He uses the examples of computer vision, speech recognition, and chess- each of these areas of research began with engineers trying to map their understanding of the problem to some explicit set of rules- some sort of feature extraction, some sort of static approach to the game of chess- only to be eventually outdone by methods of deep-learning and massive training datasets.</p>
<p>Although Moore's Law (in it's literal form) has began to prove inaccurate (due to physical constraints of transistor size)- the meta-point, of the scaling and commoditization of compute, has not. The economic forces behind this are undeniable (see big tech capex growth over the past 5 years). The argument is then, that it's probably a better bet to ride this exponential growth in computational capability, than it is to impose our own (often flawed) understandings of many complex problems.</p>
<p>This viewpoint is now more relevant than ever ("how AI-pilled are you? / is your company?") Clearly, we see money and development moving in agreement with this article. However, among engineers, I often see a contradicting sentiment- arguments that LLMs are fundamentally flawed; investors and leadership are under some sort of psychosis, and that such investments will lead to the downfall of organizations as we know them. I think this is as much a technical debate as a pessimism / optimism (political? <a href="https://en.wikipedia.org/wiki/Effective_accelerationism">effective accelerationism</a>) discussion. Personally, I think the investment and excitement is justified.</p>
<p>It's also funny to think the article was written in 2019, during the GPT-2 era.  Clearly, this isn't the first time the industry has experienced something like this, and I don't think it will be the last. See also: <a href="http://www.incompleteideas.net/IncIdeas/KeytoAI.html">Verification, The Key to AI</a> (2001)</p>]]></content>
  </entry>
  <entry>
    <title type="html">Starting a posts page</title>
    <link href="https://www.gasek.net/posts/hello" rel="alternate" type="text/html" title="Starting a posts page" />
    <id>https://www.gasek.net/posts/hello</id>
    <published>2026-08-11T00:00:00.000Z</published>
    <updated>2026-08-11T00:00:00.000Z</updated>
    <summary type="html">What this is and how posts get written.</summary>
    <content type="html"><![CDATA[<p>I added this page to have somewhere to write up things I work on: embedded
projects, applied AI, and whatever else turns out to be worth a few paragraphs.</p>
<p>Posts are Markdown files in <code>content/posts/</code>, parsed at build time. A post needs
a title and a date; a category and summary are optional:</p>
<pre><code class="hljs language-yaml"><span class="hljs-meta">---</span>
<span class="hljs-attr">title:</span> <span class="hljs-string">'Starting a posts page'</span>
<span class="hljs-attr">date:</span> <span class="hljs-string">'2026-08-11'</span>
<span class="hljs-attr">category:</span> <span class="hljs-string">meta</span>
<span class="hljs-attr">summary:</span> <span class="hljs-string">'What this is and how posts get written.'</span>
<span class="hljs-meta">---
</span></code></pre>
<p>Fenced code blocks get syntax highlighting, so this renders with tokens coloured:</p>
<pre><code class="hljs language-ts"><span class="hljs-keyword">export</span> <span class="hljs-keyword">async</span> <span class="hljs-keyword">function</span> <span class="hljs-title function_">getPosts</span>(<span class="hljs-params"></span>): <span class="hljs-title class_">Promise</span>&#x3C;<span class="hljs-title class_">PostMeta</span>[]> {
  <span class="hljs-keyword">const</span> files = <span class="hljs-keyword">await</span> <span class="hljs-title function_">readPostFiles</span>();
  <span class="hljs-keyword">return</span> (<span class="hljs-keyword">await</span> <span class="hljs-title class_">Promise</span>.<span class="hljs-title function_">all</span>(files.<span class="hljs-title function_">map</span>(read))).<span class="hljs-title function_">sort</span>(byDateDesc);
}
</code></pre>
<p>The file name becomes the URL, so this one lives at <code>/posts/hello</code>. There is an
<a href="/feed.xml">RSS feed</a> too.</p>]]></content>
  </entry>
</feed>