<?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://polgarp.com/feed.xml" rel="self" type="application/atom+xml" /><link href="https://polgarp.com/" rel="alternate" type="text/html" /><updated>2026-10-03T11:30:04+02:00</updated><id>https://polgarp.com/feed.xml</id><title type="html">Péter Balázs Polgár</title><subtitle>Design explorer. Building products and product design teams. Ideas and stuff by Péter Balázs Polgár, product design leader.</subtitle><author><name>Péter Balázs Polgár</name></author><entry><title type="html">Ration: Claude usage in your menubar</title><link href="https://polgarp.com/blog/ration-claude-usage-in-your-menubar/" rel="alternate" type="text/html" title="Ration: Claude usage in your menubar" /><published>2026-08-28T00:00:00+02:00</published><updated>2026-08-28T00:00:00+02:00</updated><id>https://polgarp.com/blog/ration-claude-usage-in-your-menubar</id><content type="html" xml:base="https://polgarp.com/blog/ration-claude-usage-in-your-menubar/"><![CDATA[<p>I built a Mac menubar app called <strong>Ration</strong> to see my Claude Code usage. <a href="https://github.com/polgarp/ration">Get it here</a>.</p>

<p>This is one of the things with coding agents, building small tools solving a small pain became increasingly easy. It’s also the situation where you are least likely to notice that you’re designing for one person. On one hand it’s cool that more people can build their own things, on the other hand personal tools have idiosyncrasies that make them fairly difficult for others.</p>

<p>I kinda hope Ration is a bit different, but it’s also good to be self aware.</p>

<h2 id="what-i-actually-wanted-to-know">What I actually wanted to know</h2>

<p>My use case is simple. 95% of my Claude usage is via Claude Code CLI in a nice customized Ghostty. I have set up a <a href="https://code.claude.com/docs/en/statusline">statusline</a> to track my session usage there, so I kinda know how I’m doing. It looks like this:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>claude-usage-menubar | ctx:12% | 5h:28% | wk:56% -13% | Opus 5 · high
</code></pre></div></div>

<p>Actually when I started to work on this, I didn’t had the <code class="language-plaintext highlighter-rouge">wk:</code> pacing yet on my statusline, that came later, as a side effect of building Ration.</p>

<p>Also, I generally like having a subscription with limits, as they give me a good cadence of focused work with the agent, intertwined with focused work somewhere else. So having the limits has some energy and focus management value too.</p>

<p>But when I’ve run out of tokens, I don’t want the terminal kept open on my screen to see when it auto restarts, and also don’t want to open Claude all the time to check when it starts to time my coffee breaks correctly.</p>

<p>Also more importantly, if I do a busy start on Monday, sometimes my weekly session limit ran out by Friday, and I wanted some control over my pacing.</p>

<p>So I got the idea to build a small tool for this case: see how I’m doing compared to my week, get a signal if I’m over the pace, and see when my daily session is available again without opening up a new tool or page.</p>

<figure class="figure">
  <img src="/assets/images/2026-08-28-ration-menu.jpg" alt="Ration's dropdown menu. Week: 42% used, +8% ahead of pace, resets Monday 01.00. Session: 60% used, resets today 14.20. Status: a green dot next to Claude Code operational. Below that, when the reading was last updated, then Settings and Quit." loading="lazy" />
  
  <figcaption><p>The whole app. The session windows, a service status, and how old the reading is.</p>
</figcaption>
  
</figure>

<h2 id="pacing-is-a-subtraction">Pacing is a subtraction</h2>

<p>Pace was a nice little idea, take how much of the week you have spent, subtract how much of the week has passed, and you have your answer. Claude tells you when the weekly window ends, so the start is the end minus a week.</p>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">elapsed</span> <span class="o">=</span> <span class="p">(</span><span class="n">now</span> <span class="o">-</span> <span class="p">(</span><span class="n">resets_at</span> <span class="o">-</span> <span class="mi">604800</span><span class="p">))</span> <span class="o">/</span> <span class="mi">604800</span> <span class="o">*</span> <span class="mi">100</span>
<span class="n">delta</span>   <span class="o">=</span> <span class="n">used_percentage</span> <span class="o">-</span> <span class="n">elapsed</span>
</code></pre></div></div>
<p>The menubar shows the week rather than the session, since the statusline already covered the session while I was in there.</p>

<p>84% used is alarming on a Tuesday and unremarkable on a Sunday. The other menubar tools I looked at show you the weekly percentage, same as Claude usage on the web. If the delta is positive, I’m burning faster than the week is passing, so Ration extrapolates and tells me the day I’d run out: <em>“Week runs out Sat 19.47.”</em></p>

<h2 id="making-it-work-for-me-was-quick-aka-pareto">Making it work for me was quick aka Pareto</h2>

<p>One point here is that it’s one thing to build something that you can use and runs on your computer. That takes like 20% of the time, together with making it a nice Mac menubar app that subtly helps and doesn’t look “overdesigned” with sloppy purple colors.</p>

<p>The rest of the 80% took to make it usable to others, get it covered with proper tests, set up a proper install sequence, iron out the small copy and design issues. Kinda the Pareto principle in action, but also gives a hint how far working prototypes can be from actual releasable code.</p>

<p>The copy part is a good example. The menu item for taking the app back out originally read <strong>“Remove Ration’s status line hook…”</strong>, which is super technical. It now reads <strong>“Undo Setup…”</strong>, which is something normal people would also understand. Standard UX polish but also shows how it’s not only people working on their stuff start to lose track how things behave outside, but agents can also get lost in their own context.</p>

<h2 id="getting-things-runnable-on-other-peoples-computers">Getting things runnable on other people’s computers</h2>

<p>This brought some “nice” issues, as in I would have never seen these if I would have not tried to make this app.</p>

<p>My favourite was the app reading its data once and then quietly stopping, because the function that checks a file’s modification date caches its answer (for better performance). It looked completely alive the whole time, since the countdown next to the number kept ticking off the system clock, while it had been showing me its launch-time reading for hours. Then there were my other Claude Code sessions. I had four open, some idle since before the weekly reset, and an idle session keeps rebroadcasting its expired numbers every ten seconds. So the app would fade out and announce that Claude Code had stopped, while three copies of it were writing to that file every five seconds.</p>

<p>The login item had a similar flavour. macOS identifies an app without a developer certificate by hashing the binary, so every rebuild orphaned it, and the checkbox stayed ticked while nothing launched. Distribution was the same kind of thing again. I planned to ship a Homebrew cask on the assumption that Homebrew strips the flag that makes Gatekeeper complain, and it turned out to do the opposite (thanks for checking this Claude). The solution was a formula that builds from source on your machine, which sidesteps the whole thing, since nothing downloads a binary so nothing gets flagged.</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>brew tap polgarp/tap
brew trust polgarp/tap
brew <span class="nb">install </span>ration
</code></pre></div></div>

<p>Probably I wouldn’t have caught these if I hadn’t tried to make things properly and deployable elsewhere.</p>

<h2 id="details-also-include-things-like-choosing-a-name">Details also include things like choosing a name</h2>

<p>Anthropic’s trademark guidelines require written permission for any use of their marks, so “Claude” something-something was out and so was using their orange. Which I didn’t want anyway. Going for <em>Ration</em> meant having a portion you are given for a period, which is more or less the product.</p>

<figure class="figure">
  <img src="/assets/images/2026-08-28-ration-menubar.png" alt="A close-up of the Ration icon in the macOS menu bar: a small circle filled clockwise like a pie chart, roughly a quarter spent, with a hole punched out of the filled part, followed by the number 28%." loading="lazy" />
  
  <figcaption><p>The disc fills as the week is spent, and the middle is punched out once I am over pace, so it stays nearly invisible when there is room and gets loud when there is not.</p>
</figcaption>
  
</figure>

<h2 id="the-fun-in-making-something-after-all">The fun in making something after all</h2>

<p>Pacing probably didn’t need an app, the statusline was already there, and I just like to manage my focus by not having too many things on screen at the same time. The app adds a few things though, something visible when the terminal isn’t on screen, and a countdown for the moment you are locked out and Claude Code isn’t open to tell you anything.</p>

<p>And I wanted to make a Mac app, which is reason enough fur such a side project.</p>]]></content><author><name>Péter Balázs Polgár</name></author><category term="Blog" /><category term="Side project" /><category term="AI design" /><summary type="html"><![CDATA[I built a Mac menubar app called Ration to see my Claude Code usage. Get it here.]]></summary></entry><entry><title type="html">e52 Assumptions draw the edge of the solution space, and agents draw it tighter</title><link href="https://polgarp.com/newsletter/Assumptions-draw-the-edge-of-the-solution-space/" rel="alternate" type="text/html" title="e52 Assumptions draw the edge of the solution space, and agents draw it tighter" /><published>2026-08-23T00:00:00+02:00</published><updated>2026-08-23T00:00:00+02:00</updated><id>https://polgarp.com/newsletter/Assumptions-draw-the-edge-of-the-solution-space</id><content type="html" xml:base="https://polgarp.com/newsletter/Assumptions-draw-the-edge-of-the-solution-space/"><![CDATA[<p>Assumptions set the boundary of the problem space, and also define the region of potential in solution space. We learn about unsaid assumptions during testing solutions by asking questions about the problem space. Agents can help in exploring the solution space faster, but will also make the problem space more rigid.</p>

<figure class="figure">
  <img src="/assets/images/2026-08-23-Assumptions-draw-the-edge-of-the-solution-space.jpg" alt="An aerial view of a neighborhood in the fall" loading="lazy" />
  
  <figcaption><p>Photo by <a href="https://unsplash.com/@federi?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Patrick Federi</a> on <a href="https://unsplash.com/photos/an-aerial-view-of-a-neighborhood-in-the-fall-JGkcj2xq5sc?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Unsplash</a></p>
</figcaption>
  
</figure>

<h1 id="-assumptions-draw-the-edge-of-the-solution-space-and-agents-draw-it-tighter">☕ Assumptions draw the edge of the solution space, and agents draw it tighter</h1>

<p>Whenever we start working on a project or on a piece of software, we have some ideas what we are getting into. We believe certain things about who is going to use the thing, how they are going to use it, why we work on this, and how we are going to progress. These beliefs or assumptions set the initial stage.</p>

<p>Holding the wrong beliefs, as in getting assumptions wrong is bad of course, since we and the product fail in one way or another. So we usually set out to both declare assumptions, and do some testing to manage these risks. We usually start optimistic, so at the beginning we mostly come up with reasons on why it will work.</p>

<p>In a good environment, we write with the product team the <a href="/newsletter/Writing-useful-hypotheses/">list of assumptions</a> we have, and how risky they are. If we are right about these the product will succeed. To account for limited time and resources the usual approach would be to construct tests and experiments to collect evidence about the riskiest assumptions. This is the right approach, and I’ve never regretted putting discipline to this.</p>

<p>But what about the things not on the list, we just took for granted?</p>

<p>Recognizing assumptions and collecting some data to make sure what we believe is correct is just one side of the puzzle, as <strong>assumptions also bound the <a href="/newsletter/Problem-space-solution-space/">solution space</a>, limiting what results are achievable</strong>.</p>

<p>Designers and more broadly product teams often fall into this trap, as they believe all problems will be addressed with their solution. Testing is of course right, as it tells us if the solution works and more broadly teaches something about the assumptions we stated. But it should also talk about the problem space and the deeper assumptions about whether a problem is worth solving. Product teams are especially bad at this, since we mostly believe we are already on the right track to solve the problem.</p>

<p>Considering a narrower problem space does remove risky solutions. And it also removes things the framing hid, cutting potentially more innovative ideas.</p>

<p><strong>We can’t test things we haven’t even considered</strong>, if they were obscured by deeply held beliefs.</p>

<p>I call this dogma.</p>

<p><strong>Designers usually don’t think about whether the solution should be a screen or not.</strong> They just open Figma, and the version of the solution that might have been a policy change, or an email, or removing the step altogether, was just missing.</p>

<p>That’s the difference. A belief is something someone said, which is what lets us argue with it, test it, and drop it when the data comes back unkind. Dogma never gets said, so there’s nothing to argue with. It shows up in which options got sketched, which questions felt worth asking, and which version of the problem everyone recognised without needing to discuss it.</p>

<p>Can’t we just think about our beliefs harder to also articulate dogma? It’s not enough, as we need a different vantage point to look outside of the frame.</p>

<p><strong>A longer list is still the same list.</strong> And often we don’t even start from our own frame, but one set up by the organizations and structures around us.</p>

<p>Testing the riskiest assumption is not enough, if the tests only address beliefs and don’t touch dogma. Early in discovery there’s no easy way to check if we work on the right problem, so good tests should talk about both problems and solutions.</p>

<p>This was the goal of making MVPs, not smaller versions of the product, but telling us whether the problem is worth solving. If a team tests only whether the solution works, it only asks the easier and less useful question.</p>

<p>This is why I also like Teresa Torres’s opportunity solution trees. It shows how we need different problem versions, not only different solution versions. As she puts it, a tree that grows deep at the cost of breadth means fixating on one opportunity, one solution, one experiment.</p>

<p>My worry is that with agents, cheaper depth puts even higher cost to breadth. Running one more experiment against the opportunity we already like is nearly free now. Finding a different opportunity has the same cost as before.</p>

<p>But if you are building faster, learning is also faster, so the risks must be lower?</p>

<p>Not really, since if we don’t know why something failed, we won’t know how to change course efficiently, even if we are faster. <strong>Building more things from the same dogma will lead to the same region in the solution space</strong>, we need to break out of that.</p>

<p>When building was slow, teams spent time thinking, arguing about their assumptions, committing to a direction was an experiment. Dogma had a chance of surfacing in these discussions. A wrong frame cost the team six months, and people were concerned enough to start asking questions early.</p>

<p>With building becoming fast, we still need to have these arguments, but they need to be more purposeful.</p>

<p>One way we arrive at dogma is the context we are working in, for example the tools we choose. Many designers have been starting their design work in Figma, which defaults to creating UI elements on screens. This bounds potential solutions into UI, often discounting other interaction paradigms or even alternative services.</p>

<p>Another source of dogma is ownership. Teams who have a certain ownership will ignore solutions outside of their domains. The checkout team will find checkout answers and ignore other parts of the user flow. This is where design must think holistically.</p>

<p>Even generating solutions with agents is bound by dogma. They generate average ideas or default solutions to the problem, which limits the potential of radically different solutions.</p>

<p>There is already not-so-surprising research on this. In a crowdsourcing challenge run across a couple of hundred solutions, the ones developed with AI scored higher than the human crowd’s on viability and on financial and environmental value. The human ones scored higher on novelty — on average, and especially at the far end. Not worse answers, then. <strong>Good answers with the tail cut off.</strong></p>

<p>In short, holding dogma doesn’t necessarily result in bad solutions, but it is also less likely to produce great solutions. This is a major challenge with asking LLMs to assist in discovery.</p>

<p>There are two reasons for it. First, how people often work with agents is already defined by their own dogma. Second, LLMs answer based on the average of their training data.</p>

<p>Agents can be used to help with common assumptions, opening up new ideas, but returning to average also means the further away we are from that, the worse answers we get. It shows you the things you almost missed, but for things farther out, you’ll need <a href="/newsletter/Discovery-artifacts-are-vacation-photos/">people in the room</a> to be able to articulate different assumptions, keeping in mind <a href="/newsletter/Combating-groupthink/">groupthink</a> problems.</p>

<p>Average is often not wrong, considering <a href="https://lawsofux.com/jakobs-law/">Jakob’s law</a>. People spend most of their time with other people’s products, so following convention is often the right call and the agent will be right. So narrowing doesn’t produce bad work, it’ll be defensible work, but stops anything better.</p>

<p>We need more purposeful argument points in the process to fix this.</p>

<p>Don’t skip the <a href="/newsletter/Discovery-is-more-than-user-research/">planning of discovery</a>, it has to stretch out, so we know what directions to take. In the past when I still worked in an office, we often had project kickoffs at an offsite, or at least in a meeting room to show something new is possible.</p>

<p>Start with listing assumptions before you involve the agent, this sets a broader problem space, and also helps you to make better judgement on the agentic output.</p>

<p>Besides planning experiments, also think about opportunities. If you are on your fourth test on the same problem, maybe the problem is not in depth, but in breadth. There is an opportunity cost of running more experiments and going deeper.</p>

<p>For every assumption you have, think not only about confidence, but also think about what other doors the assumption opens. If it’s wrong, what other thing would we build instead? Confidence just tells what to test, but this question talks about different opportunities.</p>

<p>Agents make very plausible artifacts, which also keeps us from thinking deeper about our assumptions. This includes also ready-made assumption lists generated by an agent, which we need solid ground to judge.</p>

<p>If you lead designers, testing is not the most valuable part to protect, since testing is getting cheaper now. It’s the discussions leading to a test, where team members can ask whether this is the right problem at all. This is not slowing down, but making sure we are taking the right direction.</p>

<p>Agents get us to the same region of the solution space faster, and help us to design better experiments there. But being faster doesn’t imply being right more often, if we don’t update our beliefs and don’t explore our dogmas.</p>

<p><strong>Going faster doesn’t mean we need less process. It means we now have to pay for the parts we used to get for free.</strong></p>

<h3 id="-questions-to-consider">🚲 Questions to consider</h3>

<ul>
  <li>What did we decide, and what did the tool decide for us?</li>
  <li>Which solutions stopped being candidates before anyone evaluated them?</li>
  <li>How many versions of the problem are still on the board, and when did we last add one?</li>
</ul>

<blockquote>
  <p>This is a post from my newsletter, <strong><a href="/categories/newsletter/">9am26</a></strong>, subscribe here:</p>
</blockquote>
<aside class="newsletter">
  <p class="newsletter__label">9am26</p>
  <p class="newsletter__text">Reflections on design leadership, a few times a year, in your inbox.</p>
  <iframe class="newsletter__embed" src="https://embeds.beehiiv.com/37db567b-1484-4bb3-8430-ed1d569535ca?slim=true" title="Subscribe to the 9am26 newsletter" height="52" loading="lazy" scrolling="no"></iframe>
</aside>

<h1 id="-things-to-snack-on">🍪 Things to snack on</h1>

<p><a href="https://udanium.substack.com/p/an-ai-that-argues-back">An AI that argues back?</a> by <strong>Uday Gajendar</strong></p>

<p>Describes blindspots as a different type of assumption. While assumptions are known, unverified, and testable beliefs, blindspots never entered the frame at all. A framework to manage these is FADE: facts, assumptions, dependencies and expectations. AI tools can help with blindspots, but relocate them from human cognitive limits to human–AI interaction patterns.</p>

<p><em>A blindspot is something else entirely. It’s not a belief you’re holding loosely. It’s a consideration that hasn’t entered the frame at all.</em></p>

<p style="text-align: center;">🀁</p>

<p><a href="https://solutionspace.blog/2021/10/29/problem-space-and-solution-space/">Problem Space and Solution Space</a> by <strong>Daniel Mescheder</strong></p>

<p>Formalises what an assumption actually does to the option set. Solutions map onto problems as projections, and narrowing the problem set narrows the candidate solution set. An assumption doesn’t make a candidate risky, it deletes the candidate. Also notes the mapping is not continuous, so a small shift in problem framing can move you to a completely disjoint set of solutions.</p>

<p><em>Clearly, the narrower we define a subset of the problem space P, the smaller the set of candidate solutions S(P).</em></p>

<p style="text-align: center;">🀁</p>

<p><a href="https://uxdesign.cc/riskiest-assumption-canvas-73ec0e2e0abc">Introducing the Riskiest Assumption Canvas</a> by <strong>Ioannis Nousis</strong></p>

<p>A workshop format for mapping assumptions across six themes (customers, problem, solution, MVP, competition, sales channels), then scoring each on probability of being wrong × impact to produce a ranked list for risks. The probability score is “like an inverse confidence rating”, so the less confident you are the higher the number.</p>

<p><em>Risk = impact × probability.</em></p>

<p style="text-align: center;">🀁</p>

<p><a href="https://nesslabs.com/illusory-correlations">Illusory correlation: how to identify your hidden assumptions</a> by <strong>Anne-Laure Le Cunff</strong></p>

<p>There is a cognitive mechanism under hidden assumptions, we overestimate relationships between variables where none exist (especially under time pressure), and when we look at events, we only notice the cases where cause and effect co-occur. The key point for this issue is that illusory correlations are powerful because they are easy to rationalise.</p>

<p><em>Illusory correlations are powerful because it’s easy to rationalise them.</em></p>

<p style="text-align: center;">🀁</p>

<p><a href="https://papers.ssrn.com/sol3/papers.cfm?abstract_id=4533642">The Crowdless Future? Generative AI and Creative Problem-Solving</a> by <strong>Léonard Boussioux, Jacqueline N. Lane, Miaomiao Zhang, Vladimir Jacimovic and Karim R. Lakhani</strong></p>

<p>A circular-economy crowdsourcing challenge with 125 solvers produced 234 solutions, judged across 3,900 evaluator-solution pairs. Human-AI solutions won on strategic viability and financial/environmental value, while human crowd solutions won on novelty, both on average and at the extreme. The loss is specifically at the right tail of the novelty distribution, which the authors attribute to the model aligning with central patterns in its training.</p>

<p><em>Human crowd solutions exhibited higher novelty — both on average and for highly novel outcomes — while human-AI solutions demonstrated superior strategic viability, financial and environmental value.</em></p>

<p style="text-align: center;">🀁</p>

<p><a href="https://www.producttalk.org/five-types-of-assumptions/">Evaluating Solutions</a> by <strong>Teresa Torres</strong></p>

<p>Defines assumptions as beliefs that must be true for an idea to succeed, and gives the five categories for assumptions (desirability, viability, feasibility, usability, ethical).</p>

<p><em>It can be hard to see our own assumptions. Oftentimes they are core beliefs that we rarely think to question. It’s a bit like asking a fish about water.</em></p>]]></content><author><name>Péter Balázs Polgár</name></author><category term="Newsletter" /><category term="Product discovery" /><category term="Product design" /><category term="AI design" /><summary type="html"><![CDATA[Assumptions set the boundary of the problem space, and also define the region of potential in solution space. We learn about unsaid assumptions during testing solutions by asking questions about the problem space. Agents can help in exploring the solution space faster, but will also make the problem space more rigid.]]></summary></entry><entry><title type="html">How I ended up fine-tuning a language model</title><link href="https://polgarp.com/blog/How-I-ended-up-fine-tuning-a-language-model/" rel="alternate" type="text/html" title="How I ended up fine-tuning a language model" /><published>2026-08-15T00:00:00+02:00</published><updated>2026-08-15T00:00:00+02:00</updated><id>https://polgarp.com/blog/How-I-ended-up-fine-tuning-a-language-model</id><content type="html" xml:base="https://polgarp.com/blog/How-I-ended-up-fine-tuning-a-language-model/"><![CDATA[<p>Fine-tuning a language model for your own purposes is easier than it has ever been. The technical side is a couple of hours of understanding and a few minutes of compute. While your friendly neighborhood agent handles most of the process, it needs some babysitting and course corrections.</p>

<p>Agents won’t solve some of the meatier parts, however. Knowing what you’re trying to make, and being able to tell whether you got there. Both are design problems.</p>

<h2 id="nobody-makes-small-models-any-more">Nobody makes small models any more</h2>

<p><a href="https://murmur.polgarp.com">murmur</a> is a haiku generator with a t-shirt shop attached. You type a situation, a small language model writes you a haiku, and you can put it on a shirt. The model runs in your browser rather than on a server, so it runs locally, does no data-center inference, and has a relatively small download.</p>

<p>I started the next iterations, since the haikus weren’t interesting or diverse enough. My assumption was that some time had passed, so there was probably a newer and better model, and while I was in there I could improve prompting too.</p>

<p><strong>That turned out not to be true.</strong> We ran nine configurations of three models against the same topics. Most of them failed to keep even the basic format.</p>

<p>Worse, the new releases were all trending up in size, which bumped straight into the constraint I had. A browser app can’t ask you to download gigabytes before it says anything:</p>

<table>
  <thead>
    <tr>
      <th>model</th>
      <th>released</th>
      <th>download</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>LFM2.5-350M</td>
      <td>Mar 2026</td>
      <td>258 MB</td>
    </tr>
    <tr>
      <td>SmolLM2-360M, the base murmur uses now</td>
      <td>Oct 2024</td>
      <td>273 MB</td>
    </tr>
    <tr>
      <td><strong>murmur’s fine-tune</strong></td>
      <td><strong>Aug 2026</strong></td>
      <td><strong>312 MB</strong></td>
    </tr>
    <tr>
      <td>Qwen3-0.6B, what murmur used to ship</td>
      <td>Apr 2025</td>
      <td>570 MB</td>
    </tr>
    <tr>
      <td>Qwen3.5-0.8B</td>
      <td>Feb 2026</td>
      <td>~600 MB</td>
    </tr>
  </tbody>
</table>

<p>I didn’t want to go for larger models because of the size constraint. And the reason they are that big is that small stopped meaning small. Qwen3.5’s 0.8B includes a vision encoder. A wry English haiku generator doesn’t need that many model features. Meanwhile Gemma 3’s 270M was dropped rather than replaced, and what still gets published in the 200–400M range is fine-tuned for narrow jobs with small target spaces, like function calling, classification and extraction.</p>

<p><strong>So that tier is a fine-tuning tier</strong> rather than a prompting one.</p>

<p>That makes fine-tuning the next thing to try, instead of a better model and better prompting. It’s not complicated at my scale, and the agent takes care of the execution. But you do need a general understanding of the process, which takes a couple of hours, learning to do it yourself would take weeks.</p>

<h2 id="the-corpus-is-where-the-voice-gets-decided">The corpus is where the voice gets decided</h2>

<p>Fine-tuning is simple: you show the model a few hundred examples of what you want, and it adjusts its own weights so that becomes its default, rather than you describing what you want each time. It needs input data, and that data is also where the judgement lives.</p>

<p>I used Claude Code with Opus 5 to do the finetuning. The frontier model wrote the candidate haikus, since it can work from a much more sophisticated brief than the small model in the browser.</p>

<p>Then every candidate needed reviewing by hand. I reviewed 688 haikus over nine batches, each taking 20-30 minutes.</p>

<figure class="figure">
  <img src="/assets/images/2026-08-15-finetuning-curation.png" alt="The curation tool showing one haiku about a job interview, set large in Space Grotesk with the syllable count of each line in the margin. It is marked CUT in red, and a note underneath reads 'the cut in the last line is not super inspiring a bit nihilistic'. A dashed box at the bottom restates the voice rules." loading="lazy" />
  
  <figcaption><p>The curation tool, on batch 01. One haiku at a time, with the syllable count in the margin and the voice rules pinned at the bottom. The review notes are the input to the prompt for the next batch.</p>
</figcaption>
  
</figure>

<p>The keep rate went <strong>57%, 70%, 79%</strong>, and then sat between 85% and 98% for the rest of the project. I’m probably not the most mindful chooser, but generally would select in a consistent way. The batch approach also allowed me to find the method and dimensions for good coverage, so the first rounds were more explorative.</p>

<p>I’d described the tone at the start as wry, urban, nerdy, satirical, which was true and completely insufficient. Batch 01 came back technically competent and reading like one long sigh:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>where do you see yourself
in five years — I look up, past
his head, at nothing
</code></pre></div></div>

<p>My note on that one was “the cut in the last line is not super inspiring a bit nihilistic”. That can be translated to a more concrete rule, point the cynicism at systems and warmth at people. Institutions, software, landlords and corporate language get the cynicism. Friends, animals, strangers being briefly kind, and small physical pleasures get the warmth.</p>

<p>Then the correction overshot, and batch 02 came back legible and dull:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>keys, phone, wallet, keys
I check the same pocket
four times. we leave late
</code></pre></div></div>

<p>That’s an anecdote with line breaks. So image versus explanation became another test to evaluate against.</p>

<p>I ended up with nine rules like that, informed by the judgement rounds. This is how an explorative approach was helpful, these couldn’t have been written in advance, because the difference between wry and bleak only becomes visible when you look at forty examples at once.</p>

<p><strong>On timescales</strong>: generating a batch takes minutes, training takes minutes, and curating to a taste standard takes hours for each round. The whole project ran over five evening sessions, and most of that was me reading. As a general takeaway, plan timeframes around human availability rather than compute. Judging haikus also gets tedious, so even in focus time I took a lot of breaks and read other stuff to reset.</p>

<h2 id="the-metrics-measured-shape-i-was-judging-sense">The metrics measured shape, I was judging sense</h2>

<p>To steer finetuning you need a measurement, and I had no obvious one for “is this a good haiku”. So the agent built a suite of proxies: three lines or not, syllable shape, is it about the topic that was typed, does it repeat itself, how often does it open with “the” (which was a weird artifact of early batches).</p>

<p>Then we did a bakeoff between models, and I judged 96 generations blind, with no indication of which model wrote what.</p>

<table>
  <thead>
    <tr>
      <th> </th>
      <th>the metric suite said</th>
      <th>I said</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Qwen3-0.6B</td>
      <td>61% on topic, 98% three lines</td>
      <td><strong>25% keep</strong></td>
    </tr>
    <tr>
      <td>SmolLM2-360M</td>
      <td>70% on topic, 98% three lines</td>
      <td><strong>19% keep</strong></td>
    </tr>
  </tbody>
</table>

<p>The numbers track, the model did produce three lines almost every time, and on topic about two thirds of the time. Those are just not the properties that decide whether a haiku works. Three lines, syllables, topic words, repetition: all countable, and all of them about form. What I was judging was whether the thing made sense. Of the seventy notes I wrote in that round, fifty-one were about coherence, and none of those is countable.</p>

<p>So I ran the test that should have come first: do these metrics separate the haikus I kept from the ones I cut? Nearly six hundred labelled judgements were sitting there to check against. We tested the six metrics we had, and the best scored 0.58 at telling a keep from a cut, where 0.5 is a coin flip and 0.7 would be a reasonable bar.</p>

<p>“Opens with the” is the clearest case. The agent spent four rounds driving that number down because it was trivially countable and produced a result. It turns out to run backwards, my cuts open with “the” more often than my keeps do. It only stopped when I read a report and said the cut in the third line mattered more.</p>

<p>There’s a name for this, the McNamara fallacy: measure what is easy to measure, then treat what you couldn’t measure as if it didn’t matter. A suite of proxies is an efficient way to commit it, because every one of them returns a number on demand.</p>

<p><strong>A metric that can’t separate your keeps from your cuts isn’t measuring quality</strong>, whatever else it happens to be measuring. Validate it against your own judgement before you let it steer anything.</p>

<h2 id="two-settings-tuned-against-the-wrong-thing">Two settings, tuned against the wrong thing</h2>

<p>Once I revised the metrics, decoding remained the knob to tune against a real judgement, that’s how the model picks its next word.</p>

<p>We set the temperature to 0.8 earlier to optimize topicality. So I generated the same topics at four settings and judged them blind:</p>

<figure class="figure">
  <img src="/assets/images/2026-08-15-finetuning-blind-ab.png" alt="The same tool in blind A/B mode, showing a generated haiku about morning coffee reading 'the coffee is hot / I take it. it is not hot / I do not know why', with keep, borderline and cut buttons and nothing indicating which model produced it." loading="lazy" />
  
  <figcaption><p>The same tool in blind mode, comparing four decoding settings. Variants are interleaved and stripped of labelling to help fair comparison.</p>
</figcaption>
  
</figure>

<table>
  <thead>
    <tr>
      <th> </th>
      <th>keep rate</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>temperature 0 (greedy)</td>
      <td>31%</td>
    </tr>
    <tr>
      <td><strong>temperature 0.4</strong></td>
      <td><strong>50%</strong></td>
    </tr>
    <tr>
      <td>temperature 0.6</td>
      <td>28%</td>
    </tr>
    <tr>
      <td>temperature 0.8, where we started</td>
      <td>19%</td>
    </tr>
  </tbody>
</table>

<p>Later rounds pushed lower still. 0.3 scored 79% on the first set of topics and stayed ahead when I pooled every round after, and then swapping how the sampler trims its options, <code class="language-plaintext highlighter-rouge">min_p</code> instead of <code class="language-plaintext highlighter-rouge">top_k</code>, added roughly another 30 points.</p>

<p><strong>These two took the model from 19% to around 70%</strong>, with no retraining and download size staying the same.</p>

<p>So it pays to play with the settings early. A decoding sweep takes minutes where a batch of corpus takes hours, and I ran them in the wrong order: 0.8 was set once, against the metrics that turned out not to work.</p>

<h2 id="what-the-corpus-actually-bought">What the corpus actually bought</h2>

<p>Going into this I assumed that more data equals better results, but that turned out to be wrong.</p>

<p><strong>Corpus size does nothing measurable.</strong> I trained on 114, 228 and 455 examples, and scored all three against the same set of topics. None of them was significantly better at staying on topic than the smallest. More examples did improve the form, the three lines and the syllable counts, but the form was already at 98% accuracy.</p>

<p><strong>Nor does more variety.</strong> Blind judging had shown certain topics were failing almost every time, while others almost always worked. So a whole batch of 104 haikus tried to improve this. But testing against fresh prompts, it moved nothing.</p>

<p><strong>And a well-written prompt ties the fine-tune.</strong> Beating my old bad prompt proves very little, so we re-ran the original setup with a better written one and put it against the fine-tuned model, blind, on identical topics. 57% against 50%, which is close enough to be a tie.</p>

<p>So what did 688 curated haikus buy? Not better haikus. They bought the voice, plus half the download and a tenth of the wait in generation speed. The prompted model passes “is this a good haiku” while producing generic workshop poetry, just not my target <em>murmurs</em>.</p>

<p>Which also proved to be the limit of my own judging. The main metric has been the keep rate, which guided other questions in this project. But it also measured a different question, whether a haiku is good, not whether it’s a murmur.</p>

<h2 id="small-models-repeat-whatever-you-hand-them">Small models repeat whatever you hand them</h2>

<p>The old prompt ended with an instruction to think of a toaster giving advice, gravity filing taxes, your inbox growing teeth, these were supposed to give more flavor and create interesting output. However, a model this small can’t tell “here is the style I mean” from “output this”, so in the test thirteen of fourteen generations echoed those images back, two of them as verbatim copies of the example list, on completely unrelated topics.</p>

<p>Replacing them with blander examples didn’t fix it either, it moved the echo onto the new words. Prompting a small model is handing it vocabulary to repeat, while a prompt has to contain some words. That’s the argument for fine-tuning stated as a measurement rather than a preference, and it explains why every richer system prompt we tried on the fine-tuned model made things worse. Telling a 0.6B model not to do something doubled how often it did it.</p>

<p>One more thing only reading caught: phrases like “we both know” turn up constantly, and the model reaches for one of its eight rhetorical moves three times as often as the corpus does. Neither is a defect in any single haiku, which is why no metric could see it: this can be seen when looking at a larger set. I noticed because I had read hundreds in a row. There’s an experience tradeoff here for showing something nice to a single user, while being aware that on scale patterns will show. This is also a general problem with LLM output.</p>

<p>These models are very good at executing, and what they execute is exactly what you told them. So your intention matters, and so does how you express that intention with the tools you have.</p>

<h2 id="what-shipped">What shipped</h2>

<p>SmolLM2-360M with a LoRA fine-tune, exported and quantized to 312 MB against the 570 MB the site used to ship. It loads in about 2.5 seconds and writes a haiku in about 1.4s, where the old path took over 14s. It runs entirely in your browser, so there’s no server, no inference cost, and nothing leaves your device. The model is also <a href="https://huggingface.co/polgarp/murmur-360m">published openly</a>, basically my taste for murmur compressed into an LLM model.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>monday                monday arrives in the
                      same place, at the same time
                      I know it by heart

doomscrolling         doomscrolling, I say
                      it is the thing that happens
                      when you have not done it
</code></pre></div></div>

<p>Still not perfect, about a third of generations are worth keeping. So, the “Generate another” button is part of the expected experience.</p>

<h2 id="what-id-tell-a-designer-starting-this">What I’d tell a designer starting this</h2>

<p><strong>Lean on your agent for technical questions, but verify and push back.</strong> Agents are pretty good at exploring options, but can box themselves into technical decisions that don’t make sense after all.</p>

<p><strong>Validate your metric against your own judgement before you let it steer anything.</strong> If it can’t separate your keeps from your cuts, it isn’t measuring quality.</p>

<p><strong>Tune the cheap knobs first.</strong> Two decoding parameters were worth more than 600 curated examples.</p>

<p><strong>The corpus buys voice, not competence.</strong> Work out which one you’re short of before you spend a week on it.</p>

<p>The reason I think designers should try to finetune their models (beyond it being interesting), is that all of the above is design work. Choosing which constraint binds, deciding what “good” means to reject things against it, noticing that your instrument measures the wrong property, and knowing when a lever is exhausted. The agent did all the work with Python in this project, but it couldn’t have told me that a haiku was a bit nihilistic.</p>]]></content><author><name>Péter Balázs Polgár</name></author><category term="Blog" /><category term="AI design" /><category term="Side project" /><summary type="html"><![CDATA[Fine-tuning a language model for your own purposes is easier than it has ever been. The technical side is a couple of hours of understanding and a few minutes of compute. While your friendly neighborhood agent handles most of the process, it needs some babysitting and course corrections.]]></summary></entry><entry><title type="html">e51 Discovery artifacts are vacation photos, and agents were never there</title><link href="https://polgarp.com/newsletter/Discovery-artifacts-are-vacation-photos/" rel="alternate" type="text/html" title="e51 Discovery artifacts are vacation photos, and agents were never there" /><published>2026-08-09T00:00:00+02:00</published><updated>2026-08-09T00:00:00+02:00</updated><id>https://polgarp.com/newsletter/Discovery-artifacts-are-vacation-photos</id><content type="html" xml:base="https://polgarp.com/newsletter/Discovery-artifacts-are-vacation-photos/"><![CDATA[<p>Teams build shared understanding and intuition through product discovery. Discovery artifacts are an imperfect representation of what was learned, but help the team remember what they did together. Since agents don’t participate in the work, those imperfect artifacts need to get better to help them move in the right direction.</p>

<figure class="figure">
  <img src="/assets/images/2026-08-09-Discovery-artifacts-are-vacation-photos.jpg" alt="Person holding a vacation photo on the beach the photo was taken at" loading="lazy" />
  
  <figcaption><p>Photo by <a href="https://unsplash.com/@jakobowens1?utm_source=unsplash\&amp;utm_medium=referral\&amp;utm_content=creditCopyText">Jakob Owens</a> on <a href="https://unsplash.com/photos/person-holding-outdoor-lounge-chairs-photo-TqnpKA_elIU?utm_source=unsplash\&amp;utm_medium=referral\&amp;utm_content=creditCopyText">Unsplash</a></p>
</figcaption>
  
</figure>

<h1 id="-discovery-artifacts-are-vacation-photos-and-agents-were-never-there">☕ Discovery artifacts are vacation photos, and agents were never there</h1>

<p>You’ve almost certainly been there before. A friend comes back from a holiday and excitedly shows a photo on their phone of a sunset or a city, talking with clear energy about their experience. The photo is nice, but doesn’t particularly stand out, and somehow their excitement doesn’t transmit to your mood. You were not there to feel it as they do.</p>

<p>A few years ago I heard the “vacation photo metaphor” from Jeff Patton, and it made me realize why I often felt the same about discovery artifacts, like maps, decks or rationale documents. Artifacts, just like vacation photos, help people relive and recall the details, but they don’t give people who were not there the same amount or quality of information. This sets a boundary on how we do product discovery.</p>

<p>Product discovery is a team effort, and while it needs different expertise to work with the four product risks (usability, value, business fit, feasibility), the main goal is to build a shared understanding of both the <a href="/newsletter/Problem-space-solution-space/">problem space and the solution space</a> for the team.</p>

<p>Developing the shared understanding is what develops the product intuition. Team members can then solve the problems in their domains, provide a coherent solution, and make decisions that ultimately lower the product risks. The outcome of discovery is to know what is the right thing to build, both for the current project and, through the better intuition, for future ones.</p>

<p>Of all the activities in product discovery, the most important is drawing conclusions together. This is why it’s important to broaden <a href="/newsletter/Discovery-is-more-than-user-research/">discovery beyond user research</a>, so everyone also understands the product constraints and technical options. That understanding is externalized by shared artifacts.</p>

<p>Shared artifacts are helpful, as making something together is better than just talking about things: it gives embodiment to the ideas in everybody’s head, lets those ideas get richer with additional information, and shapes them into a matching form among the team members.</p>

<p>There is a difference between a well made, designed, polished artifact that somebody made on their own, so pretty we could frame it and hang it in the corridor, and a messy whiteboard with post-its everywhere and some messy rectangles obviously drawn by a non-designer, done together by the team. The difference is in how team members absorb the conclusions afterwards. While socializing results can be helpful, working the insights directly is far more effective.</p>

<p>To make something together, you have to be there. Working with the details directly is what helps develop the intuition that answers the questions not yet asked, the unknown unknowns.</p>

<p>This also tells us something about the quality of discovery artifacts. In the past I’ve argued that most discovery artifacts, just like photos, don’t need that much care, as they are intended for the team working with them. If teams worked together, they developed their intuition together and almost any artifact would have worked for them. Artifacts never carried the shared understanding, the people did.</p>

<p>To make a vacation photo work well for others, it has to be really good, much better than what you would usually do. You need to think about framing, lighting, composition, details and colors, wait for the right moment, and tell the story in a way that helps the viewer connect to the experience more closely. This helps the photo transcend the individual’s experience and transmit richer information.</p>

<p>With more and more teams enhancing their discovery with agentic tools, the expected quality of artifacts changes. Teams now use agentic tools that can’t be there in the shared sessions (and transcripts are a poor proxy), and that need richer context than average to make decisions of the same quality a team member would.</p>

<p>Agents can never participate. They rely on context from us and don’t do the work of embodiment, which is part of why AI findings are so often described as shallow and generic. For agents to absorb the context properly, the new artifacts need rigor and inspiration that goes beyond the transcript or the final artifacts.</p>

<p>This rigor also means agents are better suited to some parts of the discovery process than others. Outsourcing synthesis to agents both keeps the team from developing the intuition they need and removes some of the rigor the agents would need.</p>

<p>So where does this leave us? While agentic tools promise to speed things up, they also take more time to accommodate. We have to budget for both: time for the team to work together, and time for making artifacts good enough for whoever wasn’t there. Cutting the first to pay for the second is a trade that looks efficient and isn’t.</p>

<h3 id="-questions-to-consider">🚲 Questions to consider</h3>

<ul>
  <li>Who on this team has the intuition, and how did they get it?</li>
  <li>Which of our artifacts were made together, and which were made alone?</li>
  <li>If an agent only had our written record, what would it get wrong?</li>
</ul>

<blockquote>
  <p>This is a post from my newsletter, <strong><a href="/categories/newsletter/">9am26</a></strong>, subscribe here:</p>
</blockquote>
<aside class="newsletter">
  <p class="newsletter__label">9am26</p>
  <p class="newsletter__text">Reflections on design leadership, a few times a year, in your inbox.</p>
  <iframe class="newsletter__embed" src="https://embeds.beehiiv.com/37db567b-1484-4bb3-8430-ed1d569535ca?slim=true" title="Subscribe to the 9am26 newsletter" height="52" loading="lazy" scrolling="no"></iframe>
</aside>

<h1 id="-things-to-snack-on">🍪 Things to snack on</h1>

<p><a href="https://jpattonassociates.com/documents-fail-can/">Why Documents Fail And What You Can Do About It</a> by <strong>Jeff Patton</strong> <em>(jpattonassociates.com, 10 November 2014)</em></p>

<p>The origin of the vacation-photo metaphor. The argument is specifically about asymmetry. Documents reinforce for those who were present and substantially under-serve those who weren’t.</p>

<p><em>Product design documents are like vacation photos. They help the people that were there relive and recall details, but fail to give people who weren’t there the same amount or quality of information.</em></p>

<p style="text-align: center;">🀚</p>

<p><a href="https://eleganthack.com/ai-can-synthesize-data-for-you-but-should-it/">AI Can Synthesize Data for You—But Should It?</a> by <strong>Christina Wodtke</strong></p>

<p>Names the loss precisely, as in, the issue isn’t whether AI synthesis is accurate, it’s that wrestling with raw information rewires the brain of the person doing it, and that’s where product intuition comes from. This is grounded in embodied cognition and there is a case for physically moving ideas around.</p>

<p><em>When AI does the synthesis, you skip an essential part of the process. You don’t inhabit the data.</em></p>

<p style="text-align: center;">🀚</p>

<p><a href="https://medium.com/design-bootcamp/description-depiction-delivery-a-practical-grammar-for-accountable-discovery-807a5e5a7d33">Description, Depiction, Delivery</a> by <strong>Dan Ramsden</strong></p>

<p>Categorizes discovery modes based on what kind of evidence they produce (alignment, response, outcome) and argues teams falter when they ask one mode to prove what another is for. The most operational counter to treating a cheap prototype as validation.</p>

<p><em>Accountable discovery means being explicit about the evidence we have, what evidence is missing, and why we’ve made the decisions we have.</em></p>

<p style="text-align: center;">🀚</p>

<p><a href="https://www.producttalk.org/2021/11/discovery-handoffs/">Discovery Hand-Offs Kill Momentum: Here’s What to Do Instead</a> by <strong>Teresa Torres</strong></p>

<p>Frames every role-to-role transfer as a game of telephone in which context and nuance are lost, and locates the value of the product trio in removing transfers rather than improving them. Useful because it makes participation, not documentation quality, the variable that matters.</p>

<p><em>Good discovery establishes a direct communication line between the team who is building the product and the customer.</em></p>

<p style="text-align: center;">🀚</p>

<p><a href="https://www.prodpad.com/blog/ai-made-product-team-faster-not-better/">AI Made Product Teams Faster, Not Better</a> by <strong>Janna Bastow</strong></p>

<p>How things are changing in 2026, agents accelerate shipping without strengthening problem validation. Teams already building the wrong things now do it more efficiently. Directly names polished AI-generated artifacts as a source of false confidence, and puts the fix at the incentive level: reward validated learning, not throughput.</p>

<p><em>AI doesn’t eliminate bad product decisions. It amplifies them.</em></p>

<p style="text-align: center;">🀚</p>

<p><a href="https://jocatorres.substack.com/p/continuous-discovery-at-scale-what">Continuous Discovery at Scale: What Changed with AI</a> by <strong>Joca Torres</strong></p>

<p>With the new stack agents can do automated planning, recruiting, conducting and analyzing, which removes the barriers that made continuous discovery impractical at scale rather than removing the need for contact. This is the new boundary we can now assume.</p>

<p><em>This does not replace an in-person conversation or a deep research session.</em></p>

<p style="text-align: center;">🀚</p>

<p><a href="https://articles.centercentre.com/user_exposure_hours/">Fast Path to a Great UX – Increased Exposure Hours</a> by <strong>Jared M. Spool</strong></p>

<p>There is a direct correlation between hours of direct team exposure to users and design quality, with the explicit finding that reported results are not a substitute. Also dissolves the sample-size debate: two hours with one participant can beat eight participants at fifteen minutes each.</p>

<p><em>Teams that have dedicated user research professionals, who watch the users, then in turn, report the results through documents or videos, don’t deliver the same benefits.</em></p>]]></content><author><name>Péter Balázs Polgár</name></author><category term="Newsletter" /><category term="Product discovery" /><category term="Product design" /><category term="AI design" /><summary type="html"><![CDATA[Teams build shared understanding and intuition through product discovery. Discovery artifacts are an imperfect representation of what was learned, but help the team remember what they did together. Since agents don’t participate in the work, those imperfect artifacts need to get better to help them move in the right direction.]]></summary></entry><entry><title type="html">collage-design, Claude skill for making collage art</title><link href="https://polgarp.com/blog/collage-design/" rel="alternate" type="text/html" title="collage-design, Claude skill for making collage art" /><published>2026-07-28T00:00:00+02:00</published><updated>2026-07-28T00:00:00+02:00</updated><id>https://polgarp.com/blog/collage-design</id><content type="html" xml:base="https://polgarp.com/blog/collage-design/"><![CDATA[<p>I made an agent skill that creates collage images, you can <a href="https://github.com/polgarp/collage-design">get it here</a>.</p>

<p>I’ve been playing a lot recently with Anthropic’s <a href="https://github.com/anthropics/skills/tree/main/skills/canvas-design">canvas-design</a> skill, it’s also a nice example how context and workflow can be embedded into a skill to enhance the agent’s harness, rather than just adding a glorified prompt that will probably be improved anyway by a better model.</p>

<p>But algorithmic images only go so far, and I was missing real imagery without the taste of generated photos. So I got the idea of trying to create collages with an algorithm instead.</p>

<p>Creating a collage has a fairly simple approach: decide the topic and format, collect material, cut and compose until you like what you see. Replicating that into an algorithmic skill turned out to be three separate problems.</p>

<figure class="figure">
  <img src="/assets/images/2026-07-28-collage-design-strike-anywhere.jpg" alt="A square sheet packed with hundreds of vintage Indian and Japanese matchbox labels, tidy rows in one corner decaying into an overlapping pile" loading="lazy" />
  
  <figcaption><p><em>Strike Anywhere</em>, from the brief: “A square print for my kitchen made from old matchbox labels, hundreds of tiny loud pictures. I want it to feel like a collector’s sheet that’s got out of hand.” 244 fragments cut from 179 public domain labels.</p>
</figcaption>
  
</figure>

<p><strong>Topic and format</strong> needed deeper guidance than just a brief prompt. Here is where I took inspiration from canvas-design and added a philosophy step, which the skill writes for each piece before anything gets downloaded. It’s a short document that invents an aesthetic movement for that one picture and sets the rules the rest of the run has to follow. It ships with the artwork, so you can read back why a piece ended up the way it did.</p>

<p><strong>Material</strong> is where licensing concerns become real (it’s not like you just take a magazine and work with scissors), so building a pipeline serving only open licensed images was necessary. A collage is a derivative of every fragment in it, so the most restrictive source sets the terms for the whole piece. Every run logs each asset with its URL, creator and licence, and says what that means for reuse: CC BY-SA is viral and makes your finished artwork copyleft, ND is disqualifying. That ledger ships next to the finished collage.</p>

<figure class="figure">
  <img src="/assets/images/2026-07-28-collage-design-sodium.jpg" alt="A tall dark poster, a running figure’s silhouette filled with sepia night photography under a sodium streetlamp glow, titled NOCTURNE" loading="lazy" />
  
  <figcaption><p><em>Sodium</em>, from: “A tall poster for a running club’s night race through the city. Bodies in motion, streetlights, sweat. Should feel like it’s moving.” The city is clipped into the runner’s silhouette.</p>
</figcaption>
  
</figure>

<p><strong>Cut and compose</strong> was a highly iterative process, I needed to get from simple and vague ideas to a concrete approach. Cutting ended up as seven edge styles, from clean die-cut keylines through to torn paper. Composing has no layout presets at all, because presets are how you end up with a moodboard grid instead of a collage. Instead there’s a check at the end that tests four things: whether fragments occlude each other, whether any escape the canvas edge, whether one treatment ran across everything, and whether there’s enough variance in fragment scale.</p>

<p>The reconciling treatment is the part I underestimated. Sources arrive from different archives with different exposures, different paper, different centuries, and getting them to read as one object rather than a pile proved to be most of the work. In <em>Strike Anywhere</em> above the reconciler is sixty years in the same album rather than any kind of colour grade: fugitive red bleaching where the light hit it, a water bloom, a warmer rectangle where the glue was. The amount of fade is read from a single field sampled at each fragment’s position on the finished sheet, so the labels age by where they sat in the book rather than each on their own.</p>

<figure class="figure">
  <img src="/assets/images/2026-07-28-collage-design-mauve.jpg" alt="A portrait poster of Victorian studio portraits in grey with hard-edged fluorescent magenta squares and colour calibration charts laid across them" loading="lazy" />
  
  <figcaption><p><em>Mauve</em>, from: “A portrait poster where Victorian studio portraiture collides with present-day colour photography. Don’t blend them, I want the seam to show.” Here the unifying treatment is deliberately overridden.</p>
</figcaption>
  
</figure>

<p>You don’t need to say any of this to use the skill. You ask for the picture you want in a sentence or two, and mention what it’s for if you know, since that decides which licences are acceptable. Interestingly, because of all the steps that go into a collage, a piece takes twenty to forty minutes, most of it spent sourcing rather than rendering.</p>

<p>It installs as a Claude Code plugin with <code class="language-plaintext highlighter-rouge">/plugin marketplace add polgarp/collage-design</code>, or you can clone it into your skills folder. Claude Code only though, since the pipeline shells out to ImageMagick, Inkscape and librsvg on your own machine.</p>

<figure class="figure">
  <img src="/assets/images/2026-07-28-collage-design-brine.jpg" alt="Square cover art layering Norwegian sardine tin labels, lima bean can wrappers and market produce photography over black" loading="lazy" />
  
  <figcaption><p><em>Brine</em>, from: “Square cover art for a supper club called Brine. Sardine tins, market stalls, mid-century food packaging. Appetising and slightly grotesque.”</p>
</figcaption>
  
</figure>

<p>As for the final result, sometimes the output is usable and interesting, other times it just drifts, which I think is right with such algorithmic tools. It does find interesting compositions and pictures often enough to be worth the wait, other times it’s just random. Because the final image is generated by a build script (hence it’s algorithmic art), adjustments can be also made manually, rather than restarting the whole process.</p>

<p>Probably I’ll need to add over time different types of tools to cuts and treatments. Both take drop-in files, so an invented edge or a new treatment is a first-class citizen rather than a fork of the whole thing.</p>

<p>There’s more on <a href="/playground/collage-design/">the playground page</a> about what building it taught me, particularly about specifying a system that has to invent its own rules for every piece.</p>]]></content><author><name>Péter Balázs Polgár</name></author><category term="Blog" /><category term="AI design" /><category term="Side project" /><summary type="html"><![CDATA[I made an agent skill that creates collage images, you can get it here.]]></summary></entry><entry><title type="html">Streaming UIs</title><link href="https://polgarp.com/blog/Streaming-UIs/" rel="alternate" type="text/html" title="Streaming UIs" /><published>2026-06-21T00:00:00+02:00</published><updated>2026-06-21T00:00:00+02:00</updated><id>https://polgarp.com/blog/Streaming-UIs</id><content type="html" xml:base="https://polgarp.com/blog/Streaming-UIs/"><![CDATA[<p><a href="https://peterscontextdesign.substack.com/p/agents-streaming-ui-is-starting-to">Agents streaming UI is starting to happen</a> by <strong>Peter Van Dijck</strong></p>

<blockquote>
  <p>Christine Vallaure <a href="https://uxdesign.cc/a2ui-under-the-hood-designing-for-the-new-era-of-radically-adaptive-ui-cebbf5f32fbe">wrote about</a> a new <a href="https://a2ui.org/">protocol from Google</a> in UXdesign. Basically, if the interface is generated fresh for each request and then thrown away, the unit of design stops being the screen and becomes the system that decides what screen to make — which is context design, not screen design.</p>
</blockquote>

<p>When I think about on-demand UI generation, I reach back to how working with computers are supposed to work in Star Trek (The Next Generation and after): interaction is a mix of voice commands and pushing buttons on the interface. The interface is a mix of permanent buttons (for example steering the ship) and on demand UI generated to fit a specific purpose, like running an experimental process.</p>

<figure class="figure">
  <img src="/assets/images/2026-06-21-Streaming-UIs.jpg" alt="" loading="lazy" />
  
  <figcaption><p>A character from the TV show Star Trek: Voyager using an LCARS UI</p>
</figcaption>
  
</figure>

<p>When somebody (in-universe) designed the system, they made the system of UI elements, and how generated elements should work as a system. As even generated elements can work without any apparent onboarding (provided the users have domain knowledge), it’s not only about the individual elements, but also the rules how complete flows come together.</p>]]></content><author><name>Péter Balázs Polgár</name></author><category term="Blog" /><category term="AI design" /><summary type="html"><![CDATA[Agents streaming UI is starting to happen by Peter Van Dijck]]></summary></entry><entry><title type="html">Deliberate design practice</title><link href="https://polgarp.com/blog/Deliberate-design-practice/" rel="alternate" type="text/html" title="Deliberate design practice" /><published>2026-06-15T00:00:00+02:00</published><updated>2026-06-15T00:00:00+02:00</updated><id>https://polgarp.com/blog/Deliberate-design-practice</id><content type="html" xml:base="https://polgarp.com/blog/Deliberate-design-practice/"><![CDATA[<p><a href="https://leadership.garden/typing-was-the-safety-harness/">The Typing Was the Safety Harness</a> by <strong>Csaba Okrona</strong>:</p>

<blockquote>
  <p>The slowness of writing code was doing a kind of work we never named. It forced you to think carefully about each line, and when the slowness left, the thinking left with it.</p>
</blockquote>

<p>This is also true to various design practices, we are loosing benefits that we got due to how the design process was working. For example:</p>
<ul>
  <li>Agents are great at finding patterns in a large repository of user interviews. If the researcher outsources this work, their tacit knowledge doesn’t get built. It’s much harder to jump in to a conversation with the team on a new user need or recognizing assumptions. The team’s product intuition gets shallow.</li>
  <li>With new design tools creating full prototypes in a few minutes, the designers don’t build an intimate knowledge of the solution space. Finding new interactions and spotting holistic problems becomes much harder.</li>
</ul>

<figure class="illo illo--wide" data-illo="field" data-illo-render="deepen" data-illo-path="M14 22 H86 V78 H14 Z" data-illo-fit="wide" data-illo-seed="6" data-illo-cell="11" style="--illo-h: 12rem">
  <div class="illo__stage"><div class="illo__static" role="img" aria-label="A loose rectangular field of marks. Moving the cursor across it fills the marks in solidly at any speed, so the field looks finished. Pausing over a spot, or working across the ground at a steady pace, brings out a scattering of red marks underneath it. Rushing through leaves none."><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" viewBox="0 0 1024 192" preserveAspectRatio="xMidYMid meet" font-family="var(--font-mono), monospace" font-size="15" fill="currentColor" text-anchor="middle" dominant-baseline="central"><g font-weight="400"><text x="160" y="50">.</text><text x="215" y="39">.</text><text x="204" y="17">.</text><text x="237" y="39">.</text><text x="215" y="50">.</text><text x="259" y="39">.</text><text x="248" y="17">.</text><text x="281" y="39">.</text><text x="259" y="50">.</text><text x="292" y="28">.</text><text x="281" y="28">.</text><text x="325" y="39">.</text><text x="325" y="50">.</text><text x="325" y="17">.</text><text x="325" y="50">.</text><text x="347" y="61">.</text><text x="347" y="17">.</text><text x="380" y="28">.</text><text x="380" y="17">.</text><text x="413" y="28">.</text><text x="413" y="28">.</text><text x="391" y="39">.</text><text x="424" y="17">.</text><text x="413" y="39">.</text><text x="468" y="39">.</text><text x="479" y="39">.</text><text x="457" y="28">.</text><text x="490" y="28">.</text><text x="512" y="39">.</text><text x="501" y="61">.</text><text x="523" y="50">.</text><text x="512" y="28">.</text><text x="523" y="28">.</text><text x="534" y="50">.</text><text x="545" y="28">.</text><text x="567" y="61">.</text><text x="567" y="50">.</text><text x="611" y="28">.</text><text x="611" y="50">.</text><text x="622" y="50">.</text><text x="622" y="17">.</text><text x="655" y="39">.</text><text x="655" y="28">.</text><text x="644" y="28">.</text><text x="677" y="50">.</text><text x="699" y="39">.</text><text x="688" y="17">.</text><text x="721" y="39">.</text><text x="710" y="17">.</text><text x="710" y="28">.</text><text x="721" y="50">.</text><text x="721" y="39">.</text><text x="743" y="28">.</text><text x="765" y="61">.</text><text x="754" y="39">.</text><text x="787" y="17">.</text><text x="787" y="50">.</text><text x="787" y="39">.</text><text x="809" y="17">.</text><text x="820" y="50">.</text><text x="820" y="39">.</text><text x="193" y="138">.</text><text x="215" y="149">.</text><text x="193" y="138">.</text><text x="193" y="149">.</text><text x="226" y="171">.</text><text x="215" y="149">.</text><text x="248" y="127">.</text><text x="259" y="127">.</text><text x="281" y="160">.</text><text x="292" y="160">.</text><text x="281" y="138">.</text><text x="292" y="127">.</text><text x="292" y="149">.</text><text x="347" y="149">.</text><text x="325" y="138">.</text><text x="369" y="149">.</text><text x="336" y="149">.</text><text x="347" y="149">.</text><text x="358" y="138">.</text><text x="402" y="160">.</text><text x="402" y="127">.</text><text x="435" y="149">.</text><text x="413" y="138">.</text><text x="435" y="171">.</text><text x="435" y="138">.</text><text x="468" y="160">.</text><text x="479" y="138">.</text><text x="468" y="171">.</text><text x="512" y="149">.</text><text x="512" y="160">.</text><text x="490" y="149">.</text><text x="523" y="171">.</text><text x="523" y="160">.</text><text x="556" y="138">.</text><text x="545" y="138">.</text><text x="589" y="149">.</text><text x="567" y="160">.</text><text x="578" y="127">.</text><text x="600" y="171">.</text><text x="600" y="160">.</text><text x="633" y="160">.</text><text x="622" y="160">.</text><text x="633" y="160">.</text><text x="644" y="138">.</text><text x="677" y="160">.</text><text x="688" y="160">.</text><text x="688" y="127">.</text><text x="710" y="160">.</text><text x="699" y="138">.</text><text x="721" y="127">.</text><text x="743" y="160">.</text><text x="743" y="127">.</text><text x="765" y="160">.</text><text x="754" y="138">.</text><text x="787" y="160">.</text><text x="809" y="160">.</text><text x="776" y="149">.</text><text x="831" y="138">.</text><text x="809" y="138">.</text><text x="842" y="138">.</text><text x="831" y="127">.</text><text x="171" y="39">:</text><text x="853" y="61">:</text><text x="171" y="50">:</text><text x="864" y="61">:</text><text x="160" y="72">:</text><text x="864" y="72">:</text><text x="160" y="83">:</text><text x="864" y="83">:</text><text x="171" y="105">:</text><text x="864" y="94">:</text><text x="171" y="94">:</text><text x="842" y="94">:</text><text x="182" y="116">:</text><text x="842" y="127">:</text><text x="160" y="127">:</text><text x="864" y="116">:</text><text x="171" y="127">:</text><text x="842" y="149">:</text></g><g font-weight="600"><text x="182" y="61">=</text><text x="193" y="39">=</text><text x="204" y="61">=</text><text x="215" y="61">=</text><text x="215" y="50">=</text><text x="237" y="39">=</text><text x="248" y="61">=</text><text x="259" y="61">=</text><text x="281" y="61">=</text><text x="270" y="50">=</text><text x="292" y="61">=</text><text x="303" y="39">=</text><text x="303" y="50">=</text><text x="325" y="39">=</text><text x="347" y="50">=</text><text x="358" y="50">=</text><text x="358" y="61">=</text><text x="369" y="39">=</text><text x="369" y="50">=</text><text x="380" y="50">=</text><text x="413" y="50">=</text><text x="424" y="50">=</text><text x="424" y="39">=</text><text x="446" y="50">=</text><text x="446" y="39">=</text><text x="457" y="39">=</text><text x="468" y="61">=</text><text x="490" y="50">=</text><text x="479" y="50">=</text><text x="501" y="39">=</text><text x="512" y="61">=</text><text x="534" y="50">=</text><text x="534" y="39">=</text><text x="545" y="61">=</text><text x="556" y="61">=</text><text x="578" y="50">=</text><text x="578" y="39">=</text><text x="578" y="50">=</text><text x="589" y="50">=</text><text x="611" y="61">=</text><text x="622" y="39">=</text><text x="633" y="39">=</text><text x="633" y="50">=</text><text x="655" y="39">=</text><text x="666" y="61">=</text><text x="677" y="61">=</text><text x="677" y="50">=</text><text x="688" y="50">=</text><text x="710" y="39">=</text><text x="721" y="61">=</text><text x="721" y="50">=</text><text x="743" y="61">=</text><text x="754" y="61">=</text><text x="754" y="50">=</text><text x="776" y="61">=</text><text x="776" y="39">=</text><text x="787" y="50">=</text><text x="820" y="50">=</text><text x="820" y="61">=</text><text x="842" y="50">=</text><text x="842" y="61">=</text><text x="182" y="72">=</text><text x="193" y="50">=</text><text x="215" y="61">=</text><text x="215" y="50">=</text><text x="226" y="72">=</text><text x="237" y="50">=</text><text x="248" y="72">=</text><text x="248" y="72">=</text><text x="259" y="61">=</text><text x="281" y="50">=</text><text x="281" y="61">=</text><text x="314" y="61">=</text><text x="325" y="61">=</text><text x="314" y="61">=</text><text x="325" y="61">=</text><text x="358" y="61">=</text><text x="358" y="72">=</text><text x="369" y="72">=</text><text x="380" y="72">=</text><text x="402" y="61">=</text><text x="413" y="61">=</text><text x="424" y="61">=</text><text x="424" y="50">=</text><text x="424" y="61">=</text><text x="457" y="61">=</text><text x="457" y="50">=</text><text x="457" y="61">=</text><text x="479" y="72">=</text><text x="490" y="50">=</text><text x="512" y="61">=</text><text x="501" y="61">=</text><text x="534" y="72">=</text><text x="523" y="72">=</text><text x="556" y="61">=</text><text x="556" y="50">=</text><text x="578" y="61">=</text><text x="567" y="61">=</text><text x="600" y="50">=</text><text x="611" y="61">=</text><text x="600" y="61">=</text><text x="622" y="50">=</text><text x="644" y="61">=</text><text x="644" y="50">=</text><text x="644" y="61">=</text><text x="666" y="72">=</text><text x="688" y="61">=</text><text x="677" y="61">=</text><text x="699" y="50">=</text><text x="710" y="50">=</text><text x="721" y="50">=</text><text x="743" y="61">=</text><text x="743" y="50">=</text><text x="754" y="50">=</text><text x="765" y="50">=</text><text x="776" y="50">=</text><text x="798" y="61">=</text><text x="787" y="61">=</text><text x="809" y="72">=</text><text x="831" y="61">=</text><text x="831" y="50">=</text><text x="842" y="72">=</text><text x="182" y="61">=</text><text x="182" y="72">=</text><text x="193" y="72">=</text><text x="226" y="72">=</text><text x="215" y="72">=</text><text x="237" y="61">=</text><text x="248" y="61">=</text><text x="259" y="61">=</text><text x="259" y="72">=</text><text x="270" y="83">=</text><text x="303" y="72">=</text><text x="314" y="72">=</text><text x="314" y="83">=</text><text x="314" y="72">=</text><text x="336" y="83">=</text><text x="336" y="72">=</text><text x="358" y="61">=</text><text x="380" y="72">=</text><text x="380" y="83">=</text><text x="402" y="72">=</text><text x="402" y="83">=</text><text x="413" y="83">=</text><text x="435" y="72">=</text><text x="435" y="83">=</text><text x="435" y="72">=</text><text x="468" y="72">=</text><text x="457" y="72">=</text><text x="490" y="72">=</text><text x="490" y="83">=</text><text x="501" y="61">=</text><text x="523" y="72">=</text><text x="523" y="61">=</text><text x="523" y="72">=</text><text x="534" y="72">=</text><text x="556" y="61">=</text><text x="578" y="72">=</text><text x="567" y="72">=</text><text x="578" y="72">=</text><text x="600" y="61">=</text><text x="611" y="61">=</text><text x="622" y="83">=</text><text x="633" y="83">=</text><text x="655" y="72">=</text><text x="644" y="72">=</text><text x="655" y="72">=</text><text x="666" y="72">=</text><text x="699" y="72">=</text><text x="688" y="72">=</text><text x="710" y="61">=</text><text x="710" y="61">=</text><text x="743" y="72">=</text><text x="743" y="83">=</text><text x="765" y="72">=</text><text x="754" y="72">=</text><text x="787" y="72">=</text><text x="798" y="72">=</text><text x="798" y="83">=</text><text x="809" y="61">=</text><text x="809" y="72">=</text><text x="842" y="72">=</text><text x="853" y="72">=</text><text x="171" y="83">=</text><text x="193" y="72">=</text><text x="215" y="83">=</text><text x="204" y="83">=</text><text x="237" y="83">=</text><text x="226" y="83">=</text><text x="259" y="83">=</text><text x="259" y="72">=</text><text x="281" y="83">=</text><text x="281" y="94">=</text><text x="281" y="83">=</text><text x="292" y="83">=</text><text x="303" y="94">=</text><text x="325" y="72">=</text><text x="347" y="83">=</text><text x="347" y="94">=</text><text x="358" y="94">=</text><text x="369" y="94">=</text><text x="380" y="72">=</text><text x="380" y="83">=</text><text x="413" y="83">=</text><text x="413" y="94">=</text><text x="424" y="72">=</text><text x="435" y="94">=</text><text x="435" y="83">=</text><text x="446" y="83">=</text><text x="479" y="83">=</text><text x="468" y="83">=</text><text x="490" y="94">=</text><text x="512" y="83">=</text><text x="501" y="72">=</text><text x="512" y="83">=</text><text x="545" y="83">=</text><text x="545" y="94">=</text><text x="556" y="72">=</text><text x="567" y="94">=</text><text x="578" y="94">=</text><text x="589" y="94">=</text><text x="611" y="72">=</text><text x="611" y="72">=</text><text x="633" y="72">=</text><text x="633" y="94">=</text><text x="633" y="83">=</text><text x="655" y="94">=</text><text x="666" y="94">=</text><text x="688" y="83">=</text><text x="699" y="83">=</text><text x="699" y="72">=</text><text x="699" y="83">=</text><text x="732" y="83">=</text><text x="743" y="83">=</text><text x="754" y="83">=</text><text x="754" y="94">=</text><text x="776" y="83">=</text><text x="776" y="72">=</text><text x="776" y="83">=</text><text x="798" y="94">=</text><text x="809" y="72">=</text><text x="820" y="72">=</text><text x="831" y="72">=</text><text x="853" y="83">=</text><text x="182" y="83">=</text><text x="193" y="83">=</text><text x="204" y="83">=</text><text x="215" y="83">=</text><text x="226" y="83">=</text><text x="237" y="83">=</text><text x="248" y="83">=</text><text x="248" y="105">=</text><text x="270" y="105">=</text><text x="281" y="105">=</text><text x="303" y="94">=</text><text x="292" y="94">=</text><text x="314" y="105">=</text><text x="314" y="94">=</text><text x="336" y="83">=</text><text x="347" y="105">=</text><text x="358" y="105">=</text><text x="369" y="105">=</text><text x="369" y="94">=</text><text x="402" y="94">=</text><text x="391" y="94">=</text><text x="413" y="105">=</text><text x="424" y="105">=</text><text x="435" y="105">=</text><text x="446" y="105">=</text><text x="457" y="83">=</text><text x="457" y="94">=</text><text x="479" y="83">=</text><text x="490" y="83">=</text><text x="490" y="94">=</text><text x="512" y="83">=</text><text x="534" y="94">=</text><text x="534" y="83">=</text><text x="545" y="83">=</text><text x="567" y="94">=</text><text x="578" y="94">=</text><text x="567" y="83">=</text><text x="578" y="94">=</text><text x="600" y="105">=</text><text x="611" y="83">=</text><text x="633" y="94">=</text><text x="622" y="94">=</text><text x="644" y="83">=</text><text x="644" y="94">=</text><text x="666" y="105">=</text><text x="666" y="94">=</text><text x="677" y="94">=</text><text x="710" y="94">=</text><text x="699" y="94">=</text><text x="721" y="105">=</text><text x="732" y="83">=</text><text x="743" y="83">=</text><text x="743" y="94">=</text><text x="776" y="94">=</text><text x="776" y="105">=</text><text x="776" y="94">=</text><text x="787" y="83">=</text><text x="809" y="83">=</text><text x="809" y="94">=</text><text x="820" y="94">=</text><text x="853" y="94">=</text><text x="182" y="94">=</text><text x="193" y="94">=</text><text x="215" y="105">=</text><text x="215" y="116">=</text><text x="215" y="105">=</text><text x="237" y="116">=</text><text x="248" y="94">=</text><text x="259" y="116">=</text><text x="259" y="105">=</text><text x="292" y="116">=</text><text x="292" y="116">=</text><text x="314" y="105">=</text><text x="303" y="105">=</text><text x="314" y="105">=</text><text x="336" y="94">=</text><text x="336" y="105">=</text><text x="358" y="116">=</text><text x="369" y="116">=</text><text x="380" y="116">=</text><text x="380" y="105">=</text><text x="402" y="116">=</text><text x="424" y="105">=</text><text x="413" y="105">=</text><text x="435" y="116">=</text><text x="457" y="105">=</text><text x="468" y="105">=</text><text x="457" y="105">=</text><text x="468" y="105">=</text><text x="490" y="116">=</text><text x="501" y="94">=</text><text x="512" y="116">=</text><text x="534" y="105">=</text><text x="534" y="116">=</text><text x="545" y="116">=</text><text x="545" y="116">=</text><text x="556" y="105">=</text><text x="589" y="94">=</text><text x="578" y="105">=</text><text x="589" y="105">=</text><text x="622" y="105">=</text><text x="622" y="116">=</text><text x="644" y="105">=</text><text x="644" y="94">=</text><text x="666" y="105">=</text><text x="666" y="116">=</text><text x="666" y="105">=</text><text x="699" y="105">=</text><text x="688" y="105">=</text><text x="721" y="105">=</text><text x="721" y="94">=</text><text x="721" y="105">=</text><text x="743" y="94">=</text><text x="754" y="94">=</text><text x="754" y="105">=</text><text x="787" y="105">=</text><text x="776" y="105">=</text><text x="787" y="105">=</text><text x="809" y="94">=</text><text x="831" y="105">=</text><text x="831" y="94">=</text><text x="831" y="105">=</text><text x="171" y="116">=</text><text x="182" y="116">=</text><text x="215" y="116">=</text><text x="226" y="116">=</text><text x="215" y="105">=</text><text x="237" y="105">=</text><text x="237" y="116">=</text><text x="259" y="127">=</text><text x="259" y="116">=</text><text x="270" y="116">=</text><text x="292" y="127">=</text><text x="303" y="105">=</text><text x="325" y="116">=</text><text x="336" y="116">=</text><text x="347" y="127">=</text><text x="347" y="105">=</text><text x="358" y="127">=</text><text x="369" y="105">=</text><text x="380" y="105">=</text><text x="402" y="116">=</text><text x="402" y="105">=</text><text x="413" y="105">=</text><text x="424" y="105">=</text><text x="435" y="127">=</text><text x="446" y="105">=</text><text x="468" y="116">=</text><text x="468" y="105">=</text><text x="479" y="127">=</text><text x="490" y="127">=</text><text x="501" y="127">=</text><text x="501" y="116">=</text><text x="523" y="105">=</text><text x="545" y="116">=</text><text x="534" y="116">=</text><text x="567" y="116">=</text><text x="567" y="127">=</text><text x="589" y="116">=</text><text x="578" y="116">=</text><text x="600" y="105">=</text><text x="622" y="116">=</text><text x="611" y="116">=</text><text x="622" y="116">=</text><text x="633" y="116">=</text><text x="655" y="127">=</text><text x="677" y="116">=</text><text x="677" y="105">=</text><text x="699" y="116">=</text><text x="688" y="116">=</text><text x="710" y="127">=</text><text x="710" y="116">=</text><text x="732" y="105">=</text><text x="743" y="127">=</text><text x="754" y="105">=</text><text x="776" y="116">=</text><text x="776" y="105">=</text><text x="776" y="116">=</text><text x="798" y="105">=</text><text x="798" y="116">=</text><text x="809" y="116">=</text><text x="831" y="127">=</text><text x="842" y="127">=</text><text x="193" y="127">=</text><text x="193" y="138">=</text><text x="204" y="138">=</text><text x="215" y="138">=</text><text x="226" y="138">=</text><text x="248" y="127">=</text><text x="248" y="138">=</text><text x="270" y="138">=</text><text x="270" y="138">=</text><text x="281" y="116">=</text><text x="303" y="127">=</text><text x="303" y="116">=</text><text x="303" y="138">=</text><text x="325" y="138">=</text><text x="336" y="138">=</text><text x="336" y="127">=</text><text x="358" y="138">=</text><text x="369" y="116">=</text><text x="380" y="116">=</text><text x="402" y="127">=</text><text x="391" y="127">=</text><text x="413" y="138">=</text><text x="424" y="116">=</text><text x="435" y="116">=</text><text x="446" y="116">=</text><text x="457" y="138">=</text><text x="479" y="138">=</text><text x="479" y="138">=</text><text x="490" y="116">=</text><text x="512" y="127">=</text><text x="523" y="138">=</text><text x="523" y="138">=</text><text x="545" y="127">=</text><text x="534" y="127">=</text><text x="545" y="127">=</text><text x="567" y="138">=</text><text x="578" y="116">=</text><text x="600" y="127">=</text><text x="600" y="138">=</text><text x="611" y="138">=</text><text x="622" y="116">=</text><text x="633" y="116">=</text><text x="644" y="116">=</text><text x="655" y="116">=</text><text x="666" y="138">=</text><text x="677" y="116">=</text><text x="688" y="116">=</text><text x="688" y="127">=</text><text x="699" y="127">=</text><text x="721" y="138">=</text><text x="721" y="127">=</text><text x="754" y="138">=</text><text x="743" y="127">=</text><text x="754" y="127">=</text><text x="787" y="127">=</text><text x="787" y="116">=</text><text x="798" y="138">=</text><text x="798" y="127">=</text><text x="831" y="127">=</text><text x="831" y="116">=</text><text x="831" y="127">=</text><text x="182" y="127">=</text><text x="193" y="127">=</text><text x="204" y="149">=</text><text x="215" y="149">=</text><text x="215" y="138">=</text><text x="226" y="149">=</text><text x="259" y="138">=</text><text x="259" y="127">=</text><text x="270" y="149">=</text><text x="292" y="138">=</text><text x="292" y="127">=</text><text x="314" y="138">=</text><text x="314" y="149">=</text><text x="325" y="149">=</text><text x="347" y="138">=</text><text x="336" y="138">=</text><text x="358" y="149">=</text><text x="358" y="138">=</text><text x="380" y="149">=</text><text x="402" y="138">=</text><text x="402" y="127">=</text><text x="413" y="127">=</text><text x="413" y="138">=</text><text x="424" y="138">=</text><text x="446" y="149">=</text><text x="446" y="138">=</text><text x="468" y="149">=</text><text x="490" y="149">=</text><text x="490" y="127">=</text><text x="501" y="127">=</text><text x="501" y="149">=</text><text x="512" y="138">=</text><text x="523" y="138">=</text><text x="545" y="127">=</text><text x="556" y="127">=</text><text x="556" y="138">=</text><text x="578" y="149">=</text><text x="578" y="138">=</text><text x="589" y="138">=</text><text x="611" y="127">=</text><text x="633" y="138">=</text><text x="644" y="149">=</text><text x="644" y="149">=</text><text x="644" y="138">=</text><text x="677" y="138">=</text><text x="677" y="127">=</text><text x="688" y="127">=</text><text x="699" y="149">=</text><text x="699" y="138">=</text><text x="732" y="127">=</text><text x="721" y="138">=</text><text x="754" y="138">=</text><text x="743" y="127">=</text><text x="765" y="149">=</text><text x="776" y="149">=</text><text x="776" y="138">=</text><text x="798" y="149">=</text><text x="798" y="149">=</text><text x="831" y="138">=</text><text x="842" y="138">=</text><text x="853" y="138">=</text></g></svg>
</div>
  </div>
  <figcaption>The output arrives and looks finished. Rushing costs the invisible work.</figcaption>
</figure>

<p>These will cause long term degradation, as experience gets shallow and less effective. Less mature teams will not even recognize what they are loosing, while more mature team may develop practices to counteract this, like human-in-the-loop reviews and rely on institutional knowledge.</p>

<p>This boils down to being more mindful and explicit what goes where in the design process, that is being more rigorous, which helps in understanding which step can go fast, and where the team needs to slow down.</p>]]></content><author><name>Péter Balázs Polgár</name></author><category term="Blog" /><category term="AI design" /><summary type="html"><![CDATA[The Typing Was the Safety Harness by Csaba Okrona:]]></summary></entry><entry><title type="html">e50 Consistency is spelling, coherence is voice</title><link href="https://polgarp.com/newsletter/Consistency-is-spelling-coherence-is-voice/" rel="alternate" type="text/html" title="e50 Consistency is spelling, coherence is voice" /><published>2026-04-06T00:00:00+02:00</published><updated>2026-04-06T00:00:00+02:00</updated><id>https://polgarp.com/newsletter/Consistency-is-spelling-coherence-is-voice</id><content type="html" xml:base="https://polgarp.com/newsletter/Consistency-is-spelling-coherence-is-voice/"><![CDATA[<p>Consistency and coherence are both important qualities in product design, and they work at different levels. Product designers need to master both.</p>

<figure class="figure">
  <img src="/assets/images/2026-04-06-Consistency-is-spelling-coherence-is-voice.jpg" alt="Photo by [Ian Barsby](https://unsplash.com/@ian_barsby?utm_source=unsplash\&amp;utm_medium=referral\&amp;utm_content=creditCopyText) on [Unsplash](https://unsplash.com/photos/pink-bicycle-parked-beside-brown-concrete-wall-9Eq26n8TeCM?utm_source=unsplash\&amp;utm_medium=referral\&amp;utm_content=creditCopyText)
" loading="lazy" />
  
  <figcaption><p>Photo by <a href="https://unsplash.com/@ian_barsby?utm_source=unsplash\&amp;utm_medium=referral\&amp;utm_content=creditCopyText">Ian Barsby</a> on <a href="https://unsplash.com/photos/pink-bicycle-parked-beside-brown-concrete-wall-9Eq26n8TeCM?utm_source=unsplash\&amp;utm_medium=referral\&amp;utm_content=creditCopyText">Unsplash</a></p>
</figcaption>
  
</figure>

<h1 id="-consistency-is-spelling-coherence-is-voice">☕ Consistency is spelling, coherence is voice</h1>

<p>I was leading a team working on a fairly complex CRM product. We were building a design system, had good coverage, and once we worked through the design debt accumulated over previous eras, the screens looked great and (more importantly) consistent.</p>

<p>But we still saw users struggling across workflows. After some analysis, I got the designers to work together on our fundamentals. That meant going beyond design system components and screen-level consistency. In our “20% design time” we worked on understanding the business strategy, how well we served users’ goals in each flow, and what principles guided our decisions. In short, we s on consistency and started thinking about coherence.</p>

<p>Consistency is important in designing anything beyond the simplest software. It’s the practice of solving the same things the same way: using buttons that look the same for the same kind of action, making navigation predictable, using the same terms for the same concepts, and following brand guidelines.</p>

<p>Consistency is <em>the result</em> of systematic design. Good designers solve things consistently by following their own system, and we create design systems so that teams can be consistent across people and surfaces.</p>

<p>Since inconsistency is so visible, design teams often set consistency as a target in various ways, through design system compliance checks or explicit review standards. It also makes consistency-related projects, like design systems, easy to pitch to product and engineering partners, because the work shows up in the product they already care about. Consistency is also a good rationale for rebranding projects, since making software look more uniform, pages following a single logic.</p>

<p>This is where the tension with consistency shows up. Taken to the extreme and applied rigidly, it leads to uniformity and a stiff UX that doesn’t actually help users. Because consistency keeps the focus on internally visible problems, it can overshadow the problems real users face. Making design system compliance the target pushes designers to follow guidelines first and put usability second.</p>

<p>Coherence is <em>the practice</em> of systematic design. It goes beyond solving problems consistently. It also applies the system to which problems get solved, and considers how problems and solutions fit together as a whole. For example, destructive actions can consistently use a red delete button. If we consider the user’s intent, the button should add more or less friction depending on the consequences of the action.</p>

<p>Coherence connects business and user goals to design activities and gives designers an approach, a set of principles that leads to consistency in the broader system beyond the immediate screens. Applied across each layer of the design, brand, design system, journeys, and user flows, it produces consistency at every level.</p>

<p>To put it simply, consistency is spelling things right, while coherence is getting the grammar and the voice right. Consistency works in the touchpoints of the user journey, while coherence works across the entire journey.</p>

<p>Where coherence considers users’ context, builds on their existing knowledge, and serves their goals, consistency mostly serves the team’s internal goals. Those matter too, consistency speeds up development, eases maintenance, and enables better brand alignment.</p>

<p>Consistency makes things more predictable, timelines for the team. Coherence adds predictability also for the users. Both are essential qualities of efficient and effective design.</p>

<p>Naturally, coherence requires more thought and practice than consistency. Teams with weaker alignment and lower maturity tend to focus on consistency first, because it offers visible, stable guardrails that are easy to align to. As teams get better, they can make more coherent decisions. For example they can work on sharper brand articulation that enables real brand alignment, not just consistent colors and logos.</p>

<p>Even consistency takes effort to achieve. A good design system is key, treating it as a living system rather than a strict rulebook is what enables more coherent designs. A gammar and voice that helps designers express intent, evolving as the team’s understanding of users and business deepens.</p>

<p>If consistency is spelling, coherence is the grammar and voice your product speaks in. Spelling keeps you legible; voice is what makes the product actually say something.</p>

<p>The work for design teams isn’t only to police the rules, it’s to decide what the product is trying to say, write those principles down, and then walk a full user journey end to end asking not only “is this consistent?” but “does this sound like us, and does it help the user get where they’re going?” Coherence begins with the first flow you’ll start on this week.</p>

<blockquote>
  <p>This is a post from my newsletter, <strong><a href="/categories/newsletter/">9am26</a></strong>, subscribe here:</p>
</blockquote>
<aside class="newsletter">
  <p class="newsletter__label">9am26</p>
  <p class="newsletter__text">Reflections on design leadership, a few times a year, in your inbox.</p>
  <iframe class="newsletter__embed" src="https://embeds.beehiiv.com/37db567b-1484-4bb3-8430-ed1d569535ca?slim=true" title="Subscribe to the 9am26 newsletter" height="52" loading="lazy" scrolling="no"></iframe>
</aside>

<h1 id="-things-to-snack-on">🍪 Things to snack on</h1>

<p><a href="http://www.uxmatters.com/mt/archives/2010/07/achieving-and-balancing-consistency-in-user-interface-design.php">Achieving and Balancing Consistency in User Interface Design</a> by <strong>Michael Zuschlag</strong></p>

<p>Provides a taxonomy of inconsistency types (irregularity vs. contradiction), strength assessment, and impact analysis. Argues that contradictions are almost never acceptable, while irregularities can be justified with empirical evidence of user benefit.</p>

<p><em>“We want the best overall user experience for our users, and sometimes that means trading consistency for something else.”</em></p>

<p style="text-align: center;">🀙</p>

<p><a href="https://uxdesign.cc/coherent-not-consistent-b44244dadec4">Coherent, Not Consistent</a> by <strong>Bruno Bergher</strong></p>

<p>The article argues that coherence (making every part feel like it belongs) should replace consistency as the design priority. Identifies information architecture, nomenclature, and brand as the three areas where consistency remains essential, while everything else should be cleaned up periodically rather than blocking innovation.</p>

<p><em>“Coherence means making sure every part of your product feels like it belongs there, instead of trying to make them exactly the same.”</em></p>

<p style="text-align: center;">🀙</p>

<p><a href="https://www.doc.cc/syntax/consistency">Consistency</a> by <strong>DOC</strong></p>

<p>A nuanced exploration that treats consistency as multifaceted: spanning familiarity, business efficiency, predictability, and identity. Argues that consistent principles matter more than consistent UI, and that consistency should create room for differentiation rather than suppress it. Uses the jazz metaphor: improvisation works because the foundation is consistent.</p>

<p><em>“The real power of consistency isn’t in uniformity, it’s predictability.”</em></p>

<p style="text-align: center;">🀙</p>

<p><a href="https://medium.com/@jmspool/consistency-in-design-is-the-wrong-approach-3cfbc87a327">Consistency in Design is the Wrong Approach</a> by <strong>Jared M. Spool</strong></p>

<p>Reframes the consistency question entirely: instead of asking “is this consistent with what we’ve designed?”, ask “will the user’s current knowledge help them use this?” Notes the irony that interfaces designed around current knowledge end up feeling consistent anyway, reinforcing the wrong lesson.</p>

<p><em>“When you think about consistency, you’re thinking about the product. When you’re thinking about current knowledge, you’re thinking about the user.”</em></p>

<p style="text-align: center;">🀙</p>

<p><a href="https://uxmag.com/articles/design-for-coherence-not-consistency">Design for Coherence, not Consistency</a> by <strong>Carlos Yllobre</strong></p>

<p>Frames consistency-first design as artificial, rigid, and innovation-killing, while coherence-focused design is natural, flexible, and innovation-friendly. Argues that design system teams should empower product teams as contributors rather than passive consumers of locked-down components.</p>

<p><em>“When designing for coherence your focus is not just on building and maintaining the user interface elements, but on the problem you are trying to solve and the people you are trying to help.”</em></p>

<p style="text-align: center;">🀙</p>

<p><a href="https://alistapart.com/article/design-dialects-breaking-the-rules-not-the-system/">Design Dialects: Enhancing User Experience</a> by <strong>Michel Ferreira</strong></p>

<p>Introduces the “design dialect” concept, systematic adaptations that maintain core principles while developing context-specific patterns. Two examples, one from Shopify, how their Polaris system went from 0% to 100% task completion for warehouse pickers by creating a dialect, and another example from Atlassian and it’s Flexibility Framework: Consistent, Opinionated, Flexible tiers.</p>

<p><em>“Consistency isn’t ROI; solved problems are.”</em></p>

<p style="text-align: center;">🀙</p>

<p><a href="https://davelinke.medium.com/design-system-coherence-vs-consistency-its-complicated-31990cd3fce1">Design Systems: Coherence vs. Consistency</a> by <strong>David Linke</strong></p>

<p>Analyzes coherence and consistency as a spectrum rather than a binary. Consistent systems (like Bootstrap) are efficient for less experienced teams, while coherent systems require more skill but produce more tailored user experiences. Concludes that organizations should be prepared for both approaches depending on context.</p>

<p><em>“A consistent design system is highly coherent, but a coherent design system does not need to be highly consistent.”</em></p>]]></content><author><name>Péter Balázs Polgár</name></author><category term="Newsletter" /><category term="Design leadership" /><category term="Product design" /><summary type="html"><![CDATA[Consistency and coherence are both important qualities in product design, and they work at different levels. Product designers need to master both.]]></summary></entry><entry><title type="html">AI and clarity of intentions</title><link href="https://polgarp.com/blog/AI-and-clarity-of-interactions/" rel="alternate" type="text/html" title="AI and clarity of intentions" /><published>2026-03-29T00:00:00+01:00</published><updated>2026-03-29T00:00:00+01:00</updated><id>https://polgarp.com/blog/AI-and-clarity-of-interactions</id><content type="html" xml:base="https://polgarp.com/blog/AI-and-clarity-of-interactions/"><![CDATA[<p>While working on my side project, <a href="https://polgarp.com/tilecraft/">Tilecraft</a> I’ve been thinking a lot about the rendering of intentions, and how they influence the outcomes in vibe-coded software.</p>

<p>Obviously just telling a coding tool to go and build something is not enough to solve any kind of real problem, there needs to be a clear intention. On the highest level, there should be a clear goal. As a thing gets built, the solution space gains more granularity and the rendering of intention (translating what you want into something concrete) should infuse each of the decisions. Rendering the intention also updates how we think about the initial intention, creating the iterative nature of design.</p>

<p>In the case of Tilecraft I had a clear high level intention (create a tool to explore pattern making), and a fairly well described solution space (in the form of a book describing each of the pattern operations). But even in this case, a lot of the finer interaction details (like canvas navigation, the drag and drop interactions of the pipeline or the snapping on the controls) needed a lot of back and forth and multiple iterations. Seeing the interactions in action also helped me to better understand what a pattern making tool should do.</p>

<p>But intention is just half the equation. Using a coding tool well is not just about having clear intentions, it’s also about how the intention gets rendered into a concrete thing. The tool sometimes needs us getting into the weeds and creating very specific examples or definitions it can absorb. Intention sets the direction, but we also need to update it to make progress. Like I needed to have almost specification-like descriptions for some of the geometric transformations, to get the outcomes I was after</p>

<p>Product design boils down to two main activities: creating a shared intention and rendering the intention. AI tools can definitely help in <a href="/blog/AI-lacks-intentionality/">some of the activities</a> supporting these.</p>

<p>As AI tools are getting better and better at rendering intentions, there will always be parts where someone needs to craft things by hand. Like creating core primitives of a visual language, writing an important library for the code base, or making sure a user flow is coherent. The Pareto principle applies: 80% of the experience gets done much faster by an AI tool, but the remaining 20% will need a systematic design effort. <strong>That’s precisely where clarity of intention matters most.</strong></p>

<p>Creating a shared intention is still not something these tools can do well. Even in a small team, getting the right understanding of the problem space (even if research is sped up), and developing a shared intention takes effort. People need to watch the same TV channel, so to speak, to be able to create things that fit together.</p>

<p>With Tilecraft, I didn’t even need a shared intention, but clarifying my own intentions took time. In creating a shared intention both “shared” and “creating intention” are both important and hard parts, and AI tools don’t solve these fundamental challenges of design.</p>

<p>Some shared intention can be developed while working on the project, we understand the problem space as we work on the solution space. But initial assumptions about the problems limit the solution space, plus the almost ready feeling of the output also makes it harder to step back and restart with a completely new approach.</p>

<p>So to make sure we do have a clarity of intention, we need to approach the outcomes of vibe-coded software with extra mindfulness. External validation (like usability testing) gets even more important. We will need new ways to treat “almost done” prototypes as “barely 10% there” products. The speed of AI-generated output can trick us into thinking we’re further along than we are. Slowing down to question whether the output matches the intention (not just whether it looks finished) is a real skill to be developed.</p>]]></content><author><name>Péter Balázs Polgár</name></author><category term="Blog" /><category term="AI design" /><category term="Product design" /><category term="Side project" /><summary type="html"><![CDATA[While working on my side project, Tilecraft I’ve been thinking a lot about the rendering of intentions, and how they influence the outcomes in vibe-coded software.]]></summary></entry><entry><title type="html">Brain fry and the automation trap</title><link href="https://polgarp.com/blog/brain-fry-and-the-automation-trap/" rel="alternate" type="text/html" title="Brain fry and the automation trap" /><published>2026-03-15T00:00:00+01:00</published><updated>2026-03-15T00:00:00+01:00</updated><id>https://polgarp.com/blog/brain-fry-and-the-automation-trap</id><content type="html" xml:base="https://polgarp.com/blog/brain-fry-and-the-automation-trap/"><![CDATA[<p><a href="https://hbr.org/2026/03/when-using-ai-leads-to-brain-fry">When Using AI Leads to “Brain Fry”</a>:</p>

<blockquote>
  <p>We found that the phenomenon described in these posts—cognitive exhaustion from intensive oversight of AI agents—is both real and significant. We call it “AI brain fry,” which we define as <em>mental fatigue from excessive use or oversight of AI tools beyond one’s cognitive capacity.</em> Participants described a “buzzing” feeling or a mental fog with difficulty focusing, slower decision-making, and headaches. This AI-associated mental strain carries significant costs in the form of increased employee errors, decision fatigue, and intention to quit.</p>
</blockquote>

<p>I believe this will be another example for the <a href="/blog/Generative-AIs-automation-trap/">automation trap</a>. While these agentic systems are great at automating some of the tedious work away, they also great at automating easy decisions, leaving only the hard ones for the human part of the centaur.</p>

<figure class="illo illo--wide" data-illo="field" data-illo-render="sift" data-illo-path="M6 42 H94 V58 H6 Z" data-illo-fit="wide" data-illo-seed="4" data-illo-cell="8" style="--illo-h: 11rem">
  <div class="illo__stage"><div class="illo__static" role="img" aria-label="A wide band of marks with soft, smudged edges. Sweeping the cursor across it clears away the lighter marks; the heavier ones that survive darken and a few turn red. The cleared marks drift back over the following seconds."><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" viewBox="0 0 1024 176" preserveAspectRatio="xMidYMid meet" font-family="var(--font-mono), monospace" font-size="11" fill="currentColor" text-anchor="middle" dominant-baseline="central"><g font-weight="400"><text x="132" y="76">.</text><text x="116" y="52">.</text><text x="132" y="52">.</text><text x="140" y="52">.</text><text x="148" y="52">.</text><text x="140" y="68">.</text><text x="164" y="84">.</text><text x="164" y="84">.</text><text x="164" y="68">.</text><text x="204" y="76">.</text><text x="188" y="84">.</text><text x="188" y="52">.</text><text x="220" y="84">.</text><text x="236" y="60">.</text><text x="220" y="52">.</text><text x="236" y="52">.</text><text x="228" y="68">.</text><text x="236" y="60">.</text><text x="260" y="52">.</text><text x="260" y="52">.</text><text x="260" y="68">.</text><text x="300" y="76">.</text><text x="308" y="68">.</text><text x="292" y="52">.</text><text x="324" y="60">.</text><text x="332" y="68">.</text><text x="340" y="60">.</text><text x="348" y="76">.</text><text x="332" y="52">.</text><text x="364" y="60">.</text><text x="340" y="84">.</text><text x="364" y="84">.</text><text x="356" y="60">.</text><text x="372" y="52">.</text><text x="396" y="52">.</text><text x="396" y="52">.</text><text x="420" y="60">.</text><text x="396" y="76">.</text><text x="436" y="76">.</text><text x="444" y="60">.</text><text x="420" y="76">.</text><text x="444" y="84">.</text><text x="444" y="84">.</text><text x="476" y="76">.</text><text x="452" y="76">.</text><text x="492" y="52">.</text><text x="484" y="52">.</text><text x="484" y="84">.</text><text x="484" y="60">.</text><text x="492" y="68">.</text><text x="516" y="52">.</text><text x="540" y="60">.</text><text x="516" y="84">.</text><text x="532" y="84">.</text><text x="532" y="68">.</text><text x="564" y="52">.</text><text x="580" y="52">.</text><text x="588" y="84">.</text><text x="572" y="52">.</text><text x="596" y="84">.</text><text x="612" y="68">.</text><text x="620" y="60">.</text><text x="620" y="84">.</text><text x="636" y="52">.</text><text x="612" y="52">.</text><text x="636" y="52">.</text><text x="660" y="52">.</text><text x="652" y="52">.</text><text x="668" y="84">.</text><text x="660" y="52">.</text><text x="684" y="84">.</text><text x="676" y="84">.</text><text x="708" y="60">.</text><text x="716" y="84">.</text><text x="692" y="68">.</text><text x="708" y="52">.</text><text x="724" y="52">.</text><text x="724" y="52">.</text><text x="732" y="84">.</text><text x="732" y="68">.</text><text x="772" y="60">.</text><text x="748" y="68">.</text><text x="788" y="76">.</text><text x="796" y="76">.</text><text x="788" y="52">.</text><text x="796" y="84">.</text><text x="812" y="52">.</text><text x="828" y="60">.</text><text x="836" y="68">.</text><text x="820" y="52">.</text><text x="852" y="68">.</text><text x="860" y="68">.</text><text x="860" y="52">.</text><text x="852" y="84">.</text><text x="884" y="76">.</text><text x="892" y="60">.</text><text x="868" y="76">.</text><text x="908" y="68">.</text><text x="916" y="68">.</text><text x="900" y="84">.</text><text x="116" y="92">.</text><text x="108" y="116">.</text><text x="148" y="124">.</text><text x="148" y="92">.</text><text x="164" y="100">.</text><text x="156" y="92">.</text><text x="164" y="124">.</text><text x="188" y="116">.</text><text x="196" y="108">.</text><text x="188" y="124">.</text><text x="180" y="124">.</text><text x="220" y="116">.</text><text x="196" y="108">.</text><text x="204" y="92">.</text><text x="220" y="124">.</text><text x="252" y="108">.</text><text x="260" y="100">.</text><text x="268" y="100">.</text><text x="244" y="108">.</text><text x="252" y="100">.</text><text x="260" y="92">.</text><text x="284" y="92">.</text><text x="284" y="92">.</text><text x="316" y="100">.</text><text x="316" y="92">.</text><text x="316" y="124">.</text><text x="316" y="124">.</text><text x="316" y="100">.</text><text x="324" y="116">.</text><text x="364" y="116">.</text><text x="348" y="92">.</text><text x="356" y="92">.</text><text x="380" y="124">.</text><text x="380" y="92">.</text><text x="396" y="92">.</text><text x="396" y="92">.</text><text x="404" y="124">.</text><text x="428" y="116">.</text><text x="404" y="92">.</text><text x="412" y="116">.</text><text x="452" y="92">.</text><text x="452" y="124">.</text><text x="468" y="108">.</text><text x="476" y="92">.</text><text x="476" y="124">.</text><text x="484" y="124">.</text><text x="484" y="92">.</text><text x="476" y="116">.</text><text x="516" y="108">.</text><text x="492" y="108">.</text><text x="524" y="124">.</text><text x="540" y="92">.</text><text x="548" y="116">.</text><text x="556" y="100">.</text><text x="564" y="116">.</text><text x="540" y="108">.</text><text x="556" y="92">.</text><text x="588" y="116">.</text><text x="564" y="100">.</text><text x="572" y="124">.</text><text x="604" y="124">.</text><text x="612" y="92">.</text><text x="596" y="100">.</text><text x="636" y="116">.</text><text x="612" y="108">.</text><text x="652" y="116">.</text><text x="636" y="124">.</text><text x="644" y="124">.</text><text x="676" y="124">.</text><text x="676" y="124">.</text><text x="692" y="100">.</text><text x="700" y="116">.</text><text x="708" y="124">.</text><text x="716" y="124">.</text><text x="716" y="92">.</text><text x="700" y="100">.</text><text x="740" y="108">.</text><text x="740" y="124">.</text><text x="756" y="100">.</text><text x="764" y="116">.</text><text x="748" y="92">.</text><text x="748" y="92">.</text><text x="764" y="92">.</text><text x="780" y="92">.</text><text x="780" y="124">.</text><text x="780" y="124">.</text><text x="812" y="92">.</text><text x="828" y="116">.</text><text x="820" y="124">.</text><text x="836" y="124">.</text><text x="836" y="92">.</text><text x="828" y="92">.</text><text x="860" y="92">.</text><text x="860" y="92">.</text><text x="860" y="92">.</text><text x="876" y="124">.</text><text x="868" y="116">.</text><text x="876" y="116">.</text><text x="892" y="92">.</text><text x="924" y="100">.</text><text x="116" y="76">:</text><text x="924" y="60">:</text><text x="108" y="108">:</text><text x="940" y="108">:</text></g><g font-weight="600"><text x="116" y="84">-</text><text x="124" y="68">-</text><text x="116" y="76">-</text><text x="124" y="68">-</text><text x="148" y="76">-</text><text x="156" y="76">-</text><text x="156" y="84">-</text><text x="156" y="84">-</text><text x="164" y="76">-</text><text x="172" y="68">-</text><text x="196" y="68">-</text><text x="204" y="68">-</text><text x="204" y="68">-</text><text x="220" y="68">-</text><text x="212" y="68">-</text><text x="228" y="68">-</text><text x="244" y="84">-</text><text x="244" y="68">-</text><text x="260" y="76">-</text><text x="260" y="68">-</text><text x="276" y="68">-</text><text x="284" y="84">-</text><text x="292" y="76">-</text><text x="284" y="84">-</text><text x="300" y="68">-</text><text x="308" y="68">-</text><text x="324" y="68">-</text><text x="324" y="68">-</text><text x="340" y="76">-</text><text x="340" y="84">-</text><text x="356" y="76">-</text><text x="348" y="68">-</text><text x="364" y="68">-</text><text x="372" y="84">-</text><text x="388" y="68">-</text><text x="396" y="84">-</text><text x="404" y="68">-</text><text x="404" y="84">-</text><text x="420" y="84">-</text><text x="412" y="68">-</text><text x="428" y="68">-</text><text x="444" y="84">-</text><text x="444" y="84">-</text><text x="452" y="68">-</text><text x="452" y="84">-</text><text x="468" y="84">-</text><text x="484" y="84">-</text><text x="484" y="68">-</text><text x="500" y="76">-</text><text x="500" y="68">-</text><text x="516" y="68">-</text><text x="508" y="84">-</text><text x="532" y="68">-</text><text x="532" y="84">-</text><text x="532" y="68">-</text><text x="548" y="84">-</text><text x="556" y="68">-</text><text x="556" y="68">-</text><text x="580" y="84">-</text><text x="588" y="76">-</text><text x="596" y="84">-</text><text x="596" y="84">-</text><text x="596" y="68">-</text><text x="620" y="68">-</text><text x="628" y="68">-</text><text x="628" y="68">-</text><text x="628" y="84">-</text><text x="644" y="68">-</text><text x="652" y="68">-</text><text x="652" y="68">-</text><text x="660" y="76">-</text><text x="684" y="76">-</text><text x="676" y="76">-</text><text x="684" y="68">-</text><text x="692" y="76">-</text><text x="716" y="84">-</text><text x="708" y="68">-</text><text x="732" y="84">-</text><text x="740" y="84">-</text><text x="732" y="84">-</text><text x="740" y="76">-</text><text x="764" y="68">-</text><text x="764" y="84">-</text><text x="764" y="84">-</text><text x="788" y="76">-</text><text x="796" y="84">-</text><text x="788" y="84">-</text><text x="804" y="84">-</text><text x="804" y="76">-</text><text x="828" y="84">-</text><text x="836" y="68">-</text><text x="828" y="76">-</text><text x="844" y="84">-</text><text x="852" y="68">-</text><text x="868" y="84">-</text><text x="868" y="84">-</text><text x="884" y="84">-</text><text x="876" y="68">-</text><text x="900" y="84">-</text><text x="900" y="68">-</text><text x="916" y="68">-</text><text x="908" y="76">-</text><text x="116" y="100">-</text><text x="108" y="92">-</text><text x="132" y="100">-</text><text x="124" y="100">-</text><text x="148" y="108">-</text><text x="148" y="108">-</text><text x="164" y="92">-</text><text x="164" y="92">-</text><text x="180" y="100">-</text><text x="172" y="108">-</text><text x="196" y="108">-</text><text x="188" y="92">-</text><text x="212" y="108">-</text><text x="204" y="92">-</text><text x="228" y="92">-</text><text x="220" y="92">-</text><text x="244" y="108">-</text><text x="252" y="108">-</text><text x="244" y="92">-</text><text x="268" y="108">-</text><text x="276" y="108">-</text><text x="268" y="92">-</text><text x="292" y="92">-</text><text x="284" y="100">-</text><text x="300" y="108">-</text><text x="316" y="100">-</text><text x="324" y="100">-</text><text x="316" y="92">-</text><text x="332" y="92">-</text><text x="340" y="108">-</text><text x="340" y="108">-</text><text x="348" y="100">-</text><text x="364" y="108">-</text><text x="380" y="92">-</text><text x="372" y="92">-</text><text x="388" y="92">-</text><text x="404" y="108">-</text><text x="412" y="100">-</text><text x="420" y="100">-</text><text x="420" y="92">-</text><text x="428" y="92">-</text><text x="444" y="92">-</text><text x="436" y="92">-</text><text x="444" y="100">-</text><text x="468" y="92">-</text><text x="476" y="108">-</text><text x="476" y="108">-</text><text x="492" y="108">-</text><text x="492" y="92">-</text><text x="508" y="100">-</text><text x="516" y="100">-</text><text x="508" y="108">-</text><text x="516" y="100">-</text><text x="532" y="92">-</text><text x="532" y="108">-</text><text x="556" y="100">-</text><text x="548" y="92">-</text><text x="572" y="108">-</text><text x="564" y="92">-</text><text x="572" y="108">-</text><text x="580" y="108">-</text><text x="604" y="92">-</text><text x="596" y="100">-</text><text x="620" y="108">-</text><text x="612" y="108">-</text><text x="620" y="100">-</text><text x="644" y="100">-</text><text x="652" y="100">-</text><text x="644" y="92">-</text><text x="660" y="108">-</text><text x="676" y="108">-</text><text x="684" y="108">-</text><text x="684" y="108">-</text><text x="700" y="92">-</text><text x="708" y="108">-</text><text x="700" y="100">-</text><text x="708" y="100">-</text><text x="716" y="100">-</text><text x="724" y="108">-</text><text x="732" y="108">-</text><text x="756" y="108">-</text><text x="764" y="92">-</text><text x="764" y="92">-</text><text x="772" y="108">-</text><text x="772" y="92">-</text><text x="780" y="108">-</text><text x="804" y="108">-</text><text x="796" y="100">-</text><text x="820" y="100">-</text><text x="812" y="108">-</text><text x="836" y="108">-</text><text x="836" y="92">-</text><text x="852" y="92">-</text><text x="844" y="100">-</text><text x="868" y="92">-</text><text x="868" y="108">-</text><text x="884" y="92">-</text><text x="884" y="92">-</text><text x="884" y="92">-</text><text x="900" y="108">-</text><text x="916" y="100">-</text><text x="908" y="108">-</text><text x="108" y="76">=</text><text x="100" y="84">=</text><text x="124" y="76">=</text><text x="124" y="92">=</text><text x="124" y="76">=</text><text x="140" y="76">=</text><text x="140" y="92">=</text><text x="156" y="76">=</text><text x="172" y="76">=</text><text x="172" y="92">=</text><text x="180" y="76">=</text><text x="180" y="92">=</text><text x="204" y="76">=</text><text x="212" y="76">=</text><text x="220" y="92">=</text><text x="212" y="76">=</text><text x="228" y="76">=</text><text x="228" y="76">=</text><text x="244" y="92">=</text><text x="252" y="92">=</text><text x="260" y="92">=</text><text x="260" y="76">=</text><text x="268" y="84">=</text><text x="276" y="84">=</text><text x="300" y="92">=</text><text x="308" y="84">=</text><text x="316" y="84">=</text><text x="308" y="76">=</text><text x="324" y="76">=</text><text x="340" y="84">=</text><text x="340" y="76">=</text><text x="348" y="92">=</text><text x="356" y="76">=</text><text x="356" y="84">=</text><text x="364" y="76">=</text><text x="388" y="84">=</text><text x="396" y="76">=</text><text x="404" y="84">=</text><text x="396" y="92">=</text><text x="420" y="84">=</text><text x="420" y="76">=</text><text x="420" y="92">=</text><text x="428" y="76">=</text><text x="444" y="76">=</text><text x="460" y="84">=</text><text x="468" y="84">=</text><text x="460" y="84">=</text><text x="476" y="92">=</text><text x="492" y="84">=</text><text x="484" y="92">=</text><text x="500" y="76">=</text><text x="508" y="76">=</text><text x="516" y="76">=</text><text x="524" y="92">=</text><text x="524" y="76">=</text><text x="548" y="92">=</text><text x="556" y="76">=</text><text x="548" y="84">=</text><text x="572" y="84">=</text><text x="572" y="76">=</text><text x="572" y="76">=</text><text x="580" y="84">=</text><text x="604" y="84">=</text><text x="596" y="76">=</text><text x="612" y="92">=</text><text x="628" y="92">=</text><text x="628" y="76">=</text><text x="636" y="76">=</text><text x="652" y="84">=</text><text x="644" y="92">=</text><text x="668" y="76">=</text><text x="676" y="84">=</text><text x="676" y="92">=</text><text x="676" y="84">=</text><text x="700" y="76">=</text><text x="700" y="92">=</text><text x="700" y="84">=</text><text x="708" y="84">=</text><text x="724" y="76">=</text><text x="740" y="92">=</text><text x="740" y="76">=</text><text x="740" y="92">=</text><text x="748" y="76">=</text><text x="756" y="84">=</text><text x="772" y="76">=</text><text x="772" y="92">=</text><text x="780" y="76">=</text><text x="788" y="76">=</text><text x="804" y="76">=</text><text x="820" y="92">=</text><text x="828" y="84">=</text><text x="820" y="84">=</text><text x="828" y="76">=</text><text x="852" y="84">=</text><text x="852" y="76">=</text><text x="852" y="76">=</text><text x="868" y="92">=</text><text x="876" y="76">=</text><text x="884" y="76">=</text><text x="900" y="92">=</text><text x="908" y="84">=</text><text x="900" y="84">=</text><text x="916" y="76">=</text><text x="924" y="92">=</text><text x="100" y="100">=</text><text x="108" y="84">=</text><text x="124" y="92">=</text><text x="116" y="100">=</text><text x="124" y="100">=</text><text x="148" y="84">=</text><text x="148" y="84">=</text><text x="156" y="100">=</text><text x="164" y="100">=</text><text x="164" y="92">=</text><text x="172" y="84">=</text><text x="180" y="92">=</text><text x="196" y="100">=</text><text x="212" y="92">=</text><text x="212" y="84">=</text><text x="220" y="100">=</text><text x="228" y="84">=</text><text x="244" y="84">=</text><text x="236" y="84">=</text><text x="260" y="84">=</text><text x="260" y="84">=</text><text x="268" y="100">=</text><text x="268" y="92">=</text><text x="284" y="84">=</text><text x="284" y="92">=</text><text x="292" y="100">=</text><text x="308" y="84">=</text><text x="316" y="84">=</text><text x="332" y="92">=</text><text x="324" y="92">=</text><text x="348" y="92">=</text><text x="348" y="84">=</text><text x="364" y="100">=</text><text x="356" y="100">=</text><text x="364" y="84">=</text><text x="388" y="92">=</text><text x="388" y="84">=</text><text x="388" y="92">=</text><text x="396" y="92">=</text><text x="420" y="100">=</text><text x="428" y="84">=</text><text x="428" y="84">=</text><text x="436" y="100">=</text><text x="452" y="84">=</text><text x="460" y="100">=</text><text x="468" y="84">=</text><text x="476" y="92">=</text><text x="468" y="84">=</text><text x="492" y="92">=</text><text x="500" y="84">=</text><text x="492" y="100">=</text><text x="516" y="84">=</text><text x="508" y="92">=</text><text x="524" y="84">=</text><text x="524" y="84">=</text><text x="548" y="100">=</text><text x="548" y="84">=</text><text x="556" y="100">=</text><text x="564" y="84">=</text><text x="564" y="92">=</text><text x="580" y="84">=</text><text x="580" y="92">=</text><text x="604" y="84">=</text><text x="612" y="84">=</text><text x="604" y="100">=</text><text x="628" y="100">=</text><text x="628" y="100">=</text><text x="644" y="92">=</text><text x="652" y="92">=</text><text x="660" y="84">=</text><text x="652" y="92">=</text><text x="668" y="84">=</text><text x="668" y="100">=</text><text x="692" y="84">=</text><text x="692" y="84">=</text><text x="708" y="92">=</text><text x="708" y="84">=</text><text x="716" y="84">=</text><text x="732" y="92">=</text><text x="740" y="84">=</text><text x="748" y="84">=</text><text x="748" y="100">=</text><text x="756" y="84">=</text><text x="764" y="100">=</text><text x="772" y="84">=</text><text x="772" y="92">=</text><text x="780" y="92">=</text><text x="796" y="100">=</text><text x="804" y="84">=</text><text x="812" y="100">=</text><text x="812" y="92">=</text><text x="828" y="100">=</text><text x="828" y="100">=</text><text x="852" y="84">=</text><text x="852" y="84">=</text><text x="852" y="84">=</text><text x="860" y="84">=</text><text x="868" y="100">=</text><text x="892" y="100">=</text><text x="892" y="100">=</text><text x="900" y="100">=</text><text x="900" y="84">=</text><text x="908" y="92">=</text><text x="932" y="92">=</text></g></svg>
</div>
  </div>
  <figcaption>Automation takes the easy decisions first. What’s left is less work, and also only the hard work.</figcaption>
</figure>

<p>Also tools like Claude make it very easy to work on multiple things parallel, making the hard part taking even more energy (Pablo Stanley’s <a href="https://pablostanley.substack.com/p/fried">Fried</a> writes about this).</p>

<p>So how to deal with this?</p>
<ul>
  <li><a href="/newsletter/the-power-of-stepping-back/">Take a step back</a>. Making decisions and orchestrating agents (or directing orchestration agents) is highly creative work, you not only need to take a step back to get new ideas, but also to let your brain breathe a bit.</li>
  <li>Embrace the new design process: sketch → agentic prototype → define details (doc, Figma, other tools). While sketching and writing also take brain power, they add a good mix of microtasks with various levels of cognitive costs.</li>
  <li>Mindful time planning. The old rule of thumb of max 5-6 hours of deep work per day is still very much true, even if agents can do more. Plan ahead what you want to get done over the day and week, and allow yourself to close your Claude Code terminal once those are done.</li>
</ul>

<p>While speed always remains a concern, in the end distance wins the race.</p>]]></content><author><name>Péter Balázs Polgár</name></author><category term="Blog" /><category term="AI design" /><summary type="html"><![CDATA[When Using AI Leads to “Brain Fry”:]]></summary></entry></feed>