<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="3.10.0">Jekyll</generator><link href="https://markjanzer.github.io/feed.xml" rel="self" type="application/atom+xml" /><link href="https://markjanzer.github.io/" rel="alternate" type="text/html" /><updated>2026-05-06T23:59:36+00:00</updated><id>https://markjanzer.github.io/feed.xml</id><title type="html">Mark Janzer</title><subtitle>Personal site of Mark Janzer</subtitle><entry><title type="html">Scaling the model isn’t enough: A lesson from chess engines</title><link href="https://markjanzer.github.io/2026/05/06/scaling-the-model-isnt-enough.html" rel="alternate" type="text/html" title="Scaling the model isn’t enough: A lesson from chess engines" /><published>2026-05-06T00:00:00+00:00</published><updated>2026-05-06T00:00:00+00:00</updated><id>https://markjanzer.github.io/2026/05/06/scaling-the-model-isnt-enough</id><content type="html" xml:base="https://markjanzer.github.io/2026/05/06/scaling-the-model-isnt-enough.html"><![CDATA[<p>I’ve been learning about chess engines, and one of the things that surprised me most is the neural net at the heart of the strongest engine in the world. The rule I’d internalized about deep learning was that complex problems need deep networks.</p>

<p>Chess seemed obviously complex. So I expected the network running the best chess engine ever built to be deep and sophisticated.</p>

<p>Instead it’s wide and shallow. And I can beat it.</p>

<p>The engine is Stockfish — nineteen-time champion of the Top Chess Engine Championship, the best chess player that has ever existed by a comfortable margin. It runs an evaluator called NNUE (Efficiently Updatable Neural Network) that can score tens of millions of positions per second on a typical computer. The thing is fast, and not much else.</p>

<p>DeepMind, by contrast, published a paper in 2024 called “Grandmaster-Level Chess Without Search,” where they trained a 270-million-parameter dense transformer to predict Stockfish’s evaluations directly. It’s the network you’d design if you wanted depth. It runs at maybe 20 evaluations per second on a $200 GPU.</p>

<p>Stockfish wins. Easily. It’s not close.</p>

<p>The answer is that Stockfish doesn’t try to be smart. It tries to look far.</p>

<h2 id="the-math-of-looking-ahead">The math of looking ahead</h2>

<p>Chess has an average branching factor of about 35 — that is, in a typical position, there are around 35 legal moves. If you wanted to brute-force look 10 moves into the future, you’d need to evaluate 35^10 positions. That’s roughly 2.7 quadrillion.</p>

<p>Stockfish regularly looks 25 moves ahead.</p>

<p>It does this through aggressive pruning — alpha-beta search, transposition tables, null-move heuristics, late-move reductions, and a stack of other techniques accumulated over decades of computer chess research. The combined effect is that the <em>effective</em> branching factor drops from 35 to roughly 2. At that point, looking 25 moves ahead means evaluating around 33 million positions instead of 35^25 (I’m not going to type out all 38 zeroes).</p>

<p>33 million is still a lot of evaluations. This is where a small, fast network earns its keep. NNUE is designed to be cheap to run — its architecture is shaped almost entirely by the constraint “this has to fit inside a tight per-evaluation compute budget, tens of millions of times per move.” The depth and sophistication you’d want for understanding chess get traded away in favor of throughput. The model isn’t trying to be smart on its own. It’s trying to be a fast oracle for a deep search to lean on.</p>

<p>There’s a feedback loop worth pulling out: a better evaluator also means more aggressive pruning. If your model can confidently rank moves, you can throw away more branches earlier. Smart and fast aren’t fully independent — but for any fixed compute budget, you have to pick where on the curve you sit.</p>

<h2 id="the-spectrum">The spectrum</h2>

<p>This tradeoff defines a spectrum. At one end, fast cheap evaluations spent on deep search. At the other, slow expensive evaluations of a single position. Three points on it.</p>

<p><strong>Stockfish.</strong> Without search, NNUE plays around club level — many decent amateurs would beat it. It’s the search machinery, not the model, that makes Stockfish the best engine in the world. (NNUE: ~70 MB, runs on CPU at tens of millions of evaluations per second. Nineteen-time TCEC champion.)</p>

<p><strong>Leela Chess Zero.</strong> Without search, its network plays at strong master level — would crush any hobbyist, lose to a titled player. (~365 MB dense network, GPU-bound, tens of thousands of evals/sec, paired with MCTS. Beat Stockfish in 2019–2020, and has been second almost every time since.)</p>

<p><strong>“Grandmaster-Level Chess Without Search.”</strong> No search at all. The model is the answer. Plays at 2895 Elo on Lichess blitz — better than all but 16 humans on the site. Loses badly to any actual engine.</p>

<p>So if you rank the three engines purely by <em>model strength</em>, the order flips: DeepMind &gt; Leela &gt; Stockfish. If you rank them by <em>playing strength</em> — model plus search — the order is exactly reversed. The pure-scaling approach has the strongest model and finishes last.</p>

<h2 id="theory-vs-practice">Theory vs. practice</h2>

<p>There’s a flavor of objection here that goes: in principle, a sufficiently large model could learn to do search internally. The DeepMind paper hints at this — they’re careful to say their model does no <em>explicit</em> search, leaving open the possibility that something search-like is happening inside the weights. So why can’t we just scale our way past this?</p>

<p>Maybe in principle. But theory is not practice, and we don’t have unlimited compute. The chess engine community has been running this experiment in the open for thirty years. The result keeps coming out the same way: for any compute budget you actually have, spending it on search beats spending it on a bigger model.</p>

<p>This is why the recent shift in LLMs is so interesting. For years the frontier was just bigger models. Now the frontier is reasoning models — models that spend extra compute at inference time, exploring possibilities, backtracking, checking their own work. That’s search. It doesn’t look like minimax over a game tree, but the underlying claim is identical to the one Stockfish has been making since the 90s: depth of deliberation beats raw model strength, <em>for the same compute</em>.</p>

<p>The chess engine result is a thirty-year head start on a lesson the LLM world is now learning. Some problems aren’t solved by scaling alone. The interesting question for the next few years isn’t how big the next model gets. It’s how the search layer on top of it is structured, and what the right tradeoff between the two looks like for problems that aren’t chess.</p>

<p>My bet is that we end up somewhere closer to Stockfish than to the DeepMind transformer. We’ll see.</p>

<hr />

<p>P.S. I learned all of this on hone — a learning app I’m building, where you bring your own model and it builds a curriculum, tutors you through it, and tests your understanding. Coming soon at hone.study.</p>]]></content><author><name></name></author><summary type="html"><![CDATA[I’ve been learning about chess engines, and one of the things that surprised me most is the neural net at the heart of the strongest engine in the world. The rule I’d internalized about deep learning was that complex problems need deep networks.]]></summary></entry><entry><title type="html">You’re A Terrible Game Designer</title><link href="https://markjanzer.github.io/2026/03/06/youre-a-terrible-game-designer.html" rel="alternate" type="text/html" title="You’re A Terrible Game Designer" /><published>2026-03-06T00:00:00+00:00</published><updated>2026-03-06T00:00:00+00:00</updated><id>https://markjanzer.github.io/2026/03/06/youre-a-terrible-game-designer</id><content type="html" xml:base="https://markjanzer.github.io/2026/03/06/youre-a-terrible-game-designer.html"><![CDATA[<p>I have been struggling to get myself to play the piano recently. With some experience and a degree in music education, you think it would be easier. The piece that I want to play is a ridiculous rendition of Kung Fu Panda’s Oogway Ascends. This is achievable, but not immediately, I would need to practice multiple hours a day for several months to achieve it. But I don’t do it. Why not? Do I not enjoy playing piano? Right now, I don’t—but it’s less about piano itself and more about how I design my practice.</p>

<h2 id="what-video-games-get-right">What video games get right</h2>

<p>On paper, most people would rather be good at piano than video games. Video games offer little reward outside the joy of playing, no prestige that transfers to the real world. So why do so many people (myself included) end up better at video games than piano?</p>

<p>Video game designers build reward loops. The structure is OCR: Objective, Challenge, Reward. They think carefully about both what the rewards are and how often they hit.</p>

<p>Rewards can be extrinsic—levels, loot, currency—or intrinsic—the satisfaction of overcoming a real challenge. I still remember beating the second boss in the Ocarina of Time, I was terrified of it, and overcoming it was more meaningful than the heart container I received.</p>

<p>And when it comes to frequency, modern games are obsessed with the pacing of rewards. They layer in smaller and smaller loops so you’re never waiting long for a reward, even when working towards something bigger.</p>

<h2 id="designing-for-flow">Designing for flow</h2>

<p>When someone tells me about a new habit they’re picking up, I can usually predict whether they’ll still be at it in a month. The tell? The design of the reward loops. With this in mind, it’s no wonder I don’t practice.</p>

<p>My piano campaign drops me half naked into a boss fight. I’ve practiced and made it further before getting my ass kicked, but it’s not an experience I want to repeat.  I’m miles from intrinsic reward, and there’s no extrinsic reward to speak of.</p>

<p>What we’re aiming for is Csikszentmihalyi’s flow channel. If the challenge is too easy, the rewards are too small to be meaningful and we get bored. If it’s too hard, we never reach the reward and get frustrated. I’ve found I almost never err on the side of making things too easy, and instead I have difficult challenges with no incremental rewards along the way.</p>

<h2 id="improving-reward-loops">Improving reward loops</h2>

<p>You don’t need to change your ambitions, you just need to get rewards sooner, through smaller reward loops. There are two ways to do this.</p>

<p>The first is to find an easier version of the same goal. For piano it might mean learning a simpler arrangement, or stripping a piece down to a melody and single bass note instead of full voicings. For exercise, it might mean 20 minutes at the gym instead of an hour. You’re still working towards the same thing, you’ve just added incremental challenges that you can get the reward from faster.</p>

<p>The second is side quests: different, easier goals that build the same underlying skill. On piano that means learning other pieces that you can finish and feel good about, while your ambitious goal waits on the horizon, becoming more achievable as you improve.</p>

<p>Both approaches are doing the same thing, adding incremental rewards to keep you motivated as you work towards your larger goal.</p>

<h2 id="the-best-extrinsic-motivator">The best extrinsic motivator</h2>

<p>I haven’t had great success with extrinsic rewards like cookies or cash. The reward is either too small to matter or too large for me to resist cheating.</p>

<p>Social rewards are different. Not only are we wired to seek them, but you can’t self-administer: the validation only comes if you show the work.</p>

<p>Show a supportive friend or family member the song you learned that week. Post it on social media, or an alt account if you’re shy about it. The bar is low, one person is enough.</p>

<h2 id="change-the-game">Change the game</h2>

<p>The goal isn’t to “be better at the game,” it’s to design a game you will want to play again tomorrow. This is not easy. Designing a curriculum—sorry, campaign—that is both interesting and rewarding is a challenge unto itself, just ask the game designers.</p>

<p>But this is better than white-knuckling through it, teaching your body and brain that this hobby is inherently unpleasant and without reward.</p>

<p>So next time you find yourself losing momentum, don’t hate the player, change the game.</p>]]></content><author><name></name></author><summary type="html"><![CDATA[I have been struggling to get myself to play the piano recently. With some experience and a degree in music education, you think it would be easier. The piece that I want to play is a ridiculous rendition of Kung Fu Panda’s Oogway Ascends. This is achievable, but not immediately, I would need to practice multiple hours a day for several months to achieve it. But I don’t do it. Why not? Do I not enjoy playing piano? Right now, I don’t—but it’s less about piano itself and more about how I design my practice.]]></summary></entry><entry><title type="html">Don’t change your life over a burrito</title><link href="https://markjanzer.github.io/2026/02/19/dont-change-your-life-over-a-burrito.html" rel="alternate" type="text/html" title="Don’t change your life over a burrito" /><published>2026-02-19T00:00:00+00:00</published><updated>2026-02-19T00:00:00+00:00</updated><id>https://markjanzer.github.io/2026/02/19/dont-change-your-life-over-a-burrito</id><content type="html" xml:base="https://markjanzer.github.io/2026/02/19/dont-change-your-life-over-a-burrito.html"><![CDATA[<p>I was in the shower one morning and I thought, “I’ve got to negotiate a 30 hour workweek with my job”, and I felt a familiar knot of dissatisfaction. It was not a new thought, nor a new feeling. I had been thinking about this for weeks and the thought had a familiar shape: “I need X, then I’ll be happy.”</p>

<p>But I had the presence of mind to ask, “what is the physical feeling that accompanies this thought?”</p>

<p>I was surprised to notice indigestion, and a slight bodily ache. Normal things for a 34-year old with IBS.</p>

<p>This made me wonder: did the thought cause the feeling, or did the feeling cause the thought?</p>

<h2 id="a-little-experiment">A little experiment</h2>

<p>About a minute later, I thought about this same idea—my desire for a 30 hour work week—and waited to see how I felt, physically and emotionally.</p>

<p>I didn’t feel indigestion or aches. I felt a very mild tightening in my stomach and warmth in the top of my hands, and emotionally I felt a slight longing. This wasn’t nothing, but it’s far from the drastic emotion I felt just a minute earlier.</p>

<p>What gives?</p>

<h2 id="emotions-the-traditional-model">Emotions: the traditional model</h2>

<p>For a while the conventional understanding of emotions is that they were generated by thoughts: <strong>Thought → Emotion + Feeling</strong></p>

<p>We all know this can be true. Right now you can think of your recent success, the person who cut you off in traffic, or the embarrassing thing that happened in 4th grade—each of these can generate an emotion right now.</p>

<p>But this model doesn’t explain the results of the experiment.</p>

<h2 id="barrett--the-predictive-brain">Barrett &amp; The Predictive Brain</h2>

<p>Enter Lisa Feldman Barrett and her Theory of Constructed Emotion.</p>

<p>Barrett argues the brain is constantly predicting, using bodily sensations as raw material. The brain felt indigestion, reached for a familiar concept (dissatisfaction), constructed an emotion, and the thought followed.</p>

<p>She doesn’t rule out the idea that the brain can generate feelings and emotions, but rather she expands the relationship. Instead of the linear Thought → Emotion → Feeling, it becomes a free for all, thoughts, emotions and feelings all effecting and feeding back into each other.</p>

<p>My experiment validated this. The indigestion and aches may have prompted my brain to look for a cause and it landed on the most familiar candidate: work.</p>

<p>So how much of my thoughts and suffering is caused by this?</p>

<h2 id="dukkha">Dukkha</h2>

<p><strong>Dukkha</strong> is the Buddhist concept of pervasive, persistent background dissatisfaction.</p>

<p>Alongside it is the realization that no matter how many victories you have in life you are always left not quite done and always wanting more. First I wanted a job, then I wanted to change my job, then I wanted to change my personal life, etc.</p>

<p>So given that feelings can cause thoughts—how much of our Dukkha is caused by the fact that we exist in these creaky, gassy, imperfect corporeal forms? How much of my Dukkha is caused by the tweak in my back from exercise, or the fact that I ate the entire super burrito at 11pm last night?</p>

<p>I would love to know, but I don’t.</p>

<h2 id="what-to-do">What to do</h2>

<p>Given that we’re in these imperfect bodies, what do we do about it?</p>

<p>Barrett would say: pay attention to the physical sensations. Knowledge of this connection between physical sensations and emotion and thought can help moderate and manage these responses.</p>

<p>I would add to it: run the experiment. Next time you have a strong emotional thought, try to generate the same thought independently and see if the feeling is the same.</p>

<p>If the feeling is real—heartache, pride, frustration, joy—maybe there is something to savor, or maybe there’s change to be made, be it internal or external.</p>

<p>But sometimes the feeling won’t be the same, which means that there is something else going on. It would be nice to know before you go changing your life over last night’s burrito.</p>]]></content><author><name></name></author><summary type="html"><![CDATA[I was in the shower one morning and I thought, “I’ve got to negotiate a 30 hour workweek with my job”, and I felt a familiar knot of dissatisfaction. It was not a new thought, nor a new feeling. I had been thinking about this for weeks and the thought had a familiar shape: “I need X, then I’ll be happy.”]]></summary></entry></feed>