<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Reflections on Dinko Pehar</title>
    
    
    
    <link>/reflections/</link>
    <description>Recent content in Reflections on Dinko Pehar</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en-us</language>
    
	<atom:link href="/reflections/index.xml" rel="self" type="application/rss+xml" />
    
    
    <item>
      <title>Packing the infinite truck</title>
      <link>/reflections/packing-the-infinite-truck/</link>
      <pubDate>Sat, 04 Jul 2026 12:00:00 +0200</pubDate>
      <guid>/reflections/packing-the-infinite-truck/</guid>
      <description>
        
          
          
          
        
        
        &lt;p&gt;Imagine that everything needed for a move must travel in one truck.&lt;/p&gt;
&lt;h2 id=&#34;capacity-and-correction&#34;&gt;
  Capacity and correction
  &lt;a href=&#34;#capacity-and-correction&#34; class=&#34;h-anchor&#34; aria-hidden=&#34;true&#34;&gt;#&lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;It is an ordinary truck, and it can return if something is forgotten.&lt;/p&gt;

  &lt;img src=&#34;/img/packing-the-infinite-truck/normal-returnable-truck.png&#34;  alt=&#34;A normal moving truck with boxes left outside for another trip&#34;  class=&#34;center&#34;  /&gt;


&lt;p&gt;Because the truck can return, packing does not need to be perfect. That is
useful. A forgotten box can still arrive. A mistake can be corrected. But the
ability to return does not make the second trip free.&lt;/p&gt;
&lt;p&gt;The second trip is not a disaster or a punishment. It simply has a regular
cost: more fuel, more time, another stretch of driving, and more work for
everyone loading and unloading it.&lt;/p&gt;
&lt;p&gt;Now imagine that the goal is to avoid another trip entirely. The obvious
answer is to hire a larger truck. It costs more than the ordinary one, but
everything is more likely to fit. That is also a regular cost. We are buying
capacity because we believe it will cost less than returning.&lt;/p&gt;

  &lt;img src=&#34;/img/packing-the-infinite-truck/oversized-single-trip-truck.png&#34;  alt=&#34;An oversized moving truck with loosely packed cargo and unused space&#34;  class=&#34;center&#34;  /&gt;


&lt;p&gt;The larger truck solves the immediate problem. It also makes poor packing
harder to notice. Half-filled boxes, unused furniture, and things nobody
remembers loading can travel together without forcing a decision. Empty space
feels free after the truck has been paid for, even though a smaller load must
still be driven, unloaded, and sorted from a larger vehicle.&lt;/p&gt;
&lt;p&gt;But what if you had only a single small truck, one that would leave once and
never return?&lt;/p&gt;

  &lt;img src=&#34;/img/packing-the-infinite-truck/small-one-way-truck.png&#34;  alt=&#34;A small moving truck packed carefully to use the available space&#34;  class=&#34;center&#34;  /&gt;


&lt;p&gt;Packing changes immediately. If boxes are placed wherever they fit at first,
the furniture may not fit later. Smaller boxes can go inside larger ones.
Loose objects can fill drawers, cabinets, and gaps between furniture.
Packaging that carries no value can be removed, and something less important
may stay behind so that the complete load can fit. The order matters because a
poor decision near the front can waste space all the way to the back.&lt;/p&gt;
&lt;p&gt;The smaller truck forces the people loading it to pack smarter. The constraint
forces you to think about the problem.&lt;/p&gt;
&lt;h2 id=&#34;constraint-driven-design&#34;&gt;
  Constraint-driven design
  &lt;a href=&#34;#constraint-driven-design&#34; class=&#34;h-anchor&#34; aria-hidden=&#34;true&#34;&gt;#&lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;If we take an older console, such as the original PlayStation, we find the same
visible edges as the small truck. Its memory, processing capacity, and storage
medium were fixed. If a scene did not fit in memory, the team could not
increase the machine&amp;rsquo;s capacity in production. If the console could not draw
everything a designer imagined, there was no better PlayStation model with
more memory or processing power available.&lt;/p&gt;
&lt;p&gt;The release itself was close to a one-way trip. Once a game was pressed onto a
disc, boxed, and placed on a store shelf, it was effectively final. Corrected
revisions were possible, but producing and distributing them was slow and
expensive. For the person holding the original copy, most mistakes would
remain part of the game.&lt;/p&gt;
&lt;p&gt;The release build carried a different kind of weight because &lt;strong&gt;this disc is
the game&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Those boundaries did not create one universal style. Different teams packed
their trucks in different ways.&lt;/p&gt;

&lt;div style=&#34;padding: 1em; display: flex; align-items: center;&#34;&gt;
    &lt;div&gt;
        &lt;svg class=&#34;tip-squid&#34; width=&#34;96px&#34; height=&#34;96px&#34; viewBox=&#34;0 0 128 128&#34; data-name=&#34;Squid&#34; id=&#34;Squid&#34;
            xmlns=&#34;http://www.w3.org/2000/svg&#34;&gt;
            &lt;circle cx=&#34;49.516&#34; cy=&#34;76.516&#34; r=&#34;1.336&#34; /&gt;
            &lt;path
                d=&#34;M99.08,79.94H89.45a5,5,0,0,0-5,5v3.12a1,1,0,0,1-1,1H78.54a1,1,0,0,1-1-1l-.009-6.187a5.449,5.449,0,0,0,0-10.715V63.969a8.566,8.566,0,0,0,5.652-3.239,5.322,5.322,0,0,0,.746-4.954l-6.683-19a6.02,6.02,0,0,0,3.93-2.995,6.5,6.5,0,0,0-.155-6.59L65.2,1.705A2.564,2.564,0,0,0,63.212.476c-.083-.009-.174-.016-.27-.016h-.007c-.008,0-.015,0-.024,0a1.549,1.549,0,0,0-.257.02c-.071.009-.143.032-.215.048a2.17,2.17,0,0,0-.305.088,2.717,2.717,0,0,0-.291.117l-.02.01L61.774.77c-.024.013-.042.034-.066.048s-.028.021-.042.031A2.561,2.561,0,0,0,60.8,1.7L44.98,27.192A6.512,6.512,0,0,0,44.8,33.73a6.028,6.028,0,0,0,3.84,3.013l-6.7,19.032a5.321,5.321,0,0,0,.746,4.954A8.62,8.62,0,0,0,48.52,64v7.16a5.449,5.449,0,0,0,0,10.716V83.51a1,1,0,0,1-1,1H42.51a1,1,0,0,1-1-1V75.99a5,5,0,0,0-5-5H27a1,1,0,0,0-1,1,5.544,5.544,0,0,0,5.54,5.53h2.43a1,1,0,0,1,1,1v7.53a5,5,0,0,0,5,5h8.55v34.97a1,1,0,0,0,1,1,5.544,5.544,0,0,0,5.53-5.54V82.44a.474.474,0,0,1,.49-.47.469.469,0,0,1,.47.47v43.58a1,1,0,0,0,1,1,5.552,5.552,0,0,0,5.54-5.54V82.44a.474.474,0,0,1,.49-.47.469.469,0,0,1,.47.47v39.04a5.552,5.552,0,0,0,5.54,5.54,1,1,0,0,0,1-1V82.44a.475.475,0,0,1,.95,0v39.04a5.552,5.552,0,0,0,5.54,5.54,1,1,0,0,0,1-1V95.6H86a5,5,0,0,0,5-5v-.54c0-.02-.01-.03-.01-.05V87.47a1,1,0,0,1,1-1h2.56a5.531,5.531,0,0,0,5.53-5.53A1,1,0,0,0,99.08,79.94ZM51.367,46.063a2.852,2.852,0,1,1-2.852,2.852A2.855,2.855,0,0,1,51.367,46.063Zm-5.3,30.453a3.453,3.453,0,1,1,3.453,3.453A3.457,3.457,0,0,1,46.063,76.516Zm5.083-16.182a3.823,3.823,0,1,1,3.823-3.823A3.827,3.827,0,0,1,51.146,60.333Zm5.385-6.583a2.094,2.094,0,1,1,2.094-2.094A2.1,2.1,0,0,1,56.531,53.75ZM79.985,76.516a3.453,3.453,0,1,1-3.453-3.453A3.457,3.457,0,0,1,79.985,76.516ZM72.229,64.583a2.4,2.4,0,1,1-2.4,2.4A2.4,2.4,0,0,1,72.229,64.583Zm-2.281,8.479A1.948,1.948,0,1,1,71.9,71.115,1.95,1.95,0,0,1,69.948,73.063Z&#34; /&gt;
            &lt;circle cx=&#34;76.53&#34; cy=&#34;76.516&#34; r=&#34;1.336&#34; /&gt;
        &lt;/svg&gt;
    &lt;/div&gt;
    &lt;div style=&#34; padding-left: 1em; padding-right: 1em&#34;&gt;
        &lt;p style=&#34;font-family: &#39;Amatic SC&#39;, cursive; font-size: 22px; font-weight: bold;&#34;&gt;When capacity cannot expand, every decision has to earn its place.&lt;/p&gt;
    &lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Crash Bandicoot is perhaps the most literal example. Its developers wanted
levels far larger than the PlayStation could hold in memory at once. Instead of
reducing the ambition to whatever fit naturally, they built custom compression,
resource-packing, and virtual-memory systems. Geometry, textures, animation,
sound, and code could be moved through the console&amp;rsquo;s limited memory as they
were needed.&lt;/p&gt;

  &lt;figure class=&#34;center&#34; &gt;
    &lt;img src=&#34;/img/packing-the-infinite-truck/crash-bandicoot.jpg&#34;  alt=&#34;Crash Bandicoot standing among crates in a detailed PlayStation level&#34;   /&gt;
    
      &lt;figcaption class=&#34;center&#34; &gt;&lt;a href=&#34;https://all-things-andy-gavin.com/2011/02/04/making-crash-bandicoot-part-3/&#34;&gt;Source: Andy Gavin&amp;rsquo;s development retrospective&lt;/a&gt;. Crash Bandicoot © Activision Publishing, Inc.&lt;/figcaption&gt;
    
  &lt;/figure&gt;


&lt;p&gt;The result was not simply a smaller game. It was an ambitious game arranged
around the exact shape of its hardware. The technical system and the level
design supported each other, like boxes packed in an order that makes the full
load possible.&lt;/p&gt;
&lt;p&gt;Resident Evil made a different tradeoff. Fully real-time 3D environments could
not provide the visual detail its creators wanted, so the game used
pre-rendered backgrounds and fixed camera angles. The PlayStation had less
work to perform while each room could look richer and more deliberate.&lt;/p&gt;

  &lt;figure class=&#34;center&#34; &gt;
    &lt;img src=&#34;/img/packing-the-infinite-truck/resident-evil.jpg&#34;  alt=&#34;Resident Evil character viewed from a distant fixed camera in the detailed Spencer Mansion&#34;   /&gt;
    
      &lt;figcaption class=&#34;center&#34; &gt;&lt;a href=&#34;https://www.gog.com/en/game/resident_evil&#34;&gt;Source: official GOG release page&lt;/a&gt;. Resident Evil © CAPCOM.&lt;/figcaption&gt;
    
  &lt;/figure&gt;


&lt;p&gt;The fixed camera was also more than a technical compromise. It framed scenes
like shots in a film. It could hide what waited around a corner, show danger
that the character had not reached, or leave the player moving toward
something outside the frame. A rendering decision became part of the language
of survival horror.&lt;/p&gt;
&lt;p&gt;Silent Hill is the example I return to most. Its fog limited how far the
player could see, reducing how much of the world had to be visible at once.
But the fog did not feel like a technical apology. It became atmosphere.&lt;/p&gt;

  &lt;figure class=&#34;center&#34; &gt;
    &lt;img src=&#34;/img/packing-the-infinite-truck/silent-hill.jpg&#34;  alt=&#34;Harry Mason walking along a street obscured by fog in Silent Hill&#34;   /&gt;
    
      &lt;figcaption class=&#34;center&#34; &gt;Screenshot contributed by &lt;a href=&#34;https://www.mobygames.com/game/3564/silent-hill/screenshots/playstation/30593/&#34;&gt;MAT via MobyGames&lt;/a&gt;. Silent Hill © Konami Digital Entertainment.&lt;/figcaption&gt;
    
  &lt;/figure&gt;


&lt;p&gt;The player could hear danger before seeing it. Empty streets felt uncertain
because the fog withheld information. A boundary of the hardware became part
of the game&amp;rsquo;s identity. Removing the limit might have produced a more
technically impressive view and a less memorable game.&lt;/p&gt;
&lt;p&gt;Final Fantasy VII shows why the lesson cannot simply be &amp;ldquo;always choose the
smallest truck.&amp;rdquo; Its cinematic ambition required space, and the game shipped
across multiple discs. The team expanded the physical capacity because the
result justified the cost.&lt;/p&gt;

  &lt;figure class=&#34;center&#34; &gt;
    &lt;img src=&#34;/img/packing-the-infinite-truck/final-fantasy-vii.jpg&#34;  alt=&#34;Cloud, Barret, Biggs, and Wedge in a pre-rendered Final Fantasy VII environment&#34;   /&gt;
    
      &lt;figcaption class=&#34;center&#34; &gt;&lt;a href=&#34;https://blog.playstation.com/2021/09/17/final-fantasy-vii-yoshinori-kitase-on-the-highs-and-lows-of-creating-the-timeless-playstation-classic/&#34;&gt;Source: Yoshinori Kitase&amp;rsquo;s PlayStation retrospective&lt;/a&gt;. Final Fantasy VII © SQUARE ENIX.&lt;/figcaption&gt;
    
  &lt;/figure&gt;


&lt;p&gt;That was not a failure to optimize. It was a deliberate decision about what
deserved to travel. Good engineering can mean packing the small truck
brilliantly, but it can also mean paying for a larger one when the value inside
it is clear.&lt;/p&gt;
&lt;p&gt;These examples are memorable because the solution does more than remove a
technical obstacle. Crash Bandicoot&amp;rsquo;s resource system supports its visual
ambition. Resident Evil&amp;rsquo;s fixed framing creates detail and tension. Silent
Hill&amp;rsquo;s fog manages visibility and fear. Final Fantasy VII&amp;rsquo;s additional discs
make room for a cinematic scale that became central to the game.&lt;/p&gt;
&lt;p&gt;This is the elegance that constraints can produce. Not making something small
for its own sake, but making one decision solve several problems.&lt;/p&gt;
&lt;h2 id=&#34;the-cost-of-easy&#34;&gt;
  The cost of easy
  &lt;a href=&#34;#the-cost-of-easy&#34; class=&#34;h-anchor&#34; aria-hidden=&#34;true&#34;&gt;#&lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;Modern engineering gives us trucks that appear to have no edges.&lt;/p&gt;
&lt;p&gt;Need one small function? Install a library. Need to call one endpoint? Add the
vendor&amp;rsquo;s entire SDK. Need more capacity? Increase the instance size. Each
action is easy, and that ease can feel like the problem has been solved.&lt;/p&gt;
&lt;p&gt;But importing a large library for one small function is like hiring an
oversized truck to move a single box. The box arrives, so the decision looks
successful. What remains less visible is everything that arrived with it:
transitive dependencies, updates, vulnerabilities, breaking changes, and code
that somebody must understand when it behaves unexpectedly.&lt;/p&gt;

&lt;div style=&#34;padding: 1em; display: flex; align-items: center;&#34;&gt;
    &lt;div&gt;
        &lt;svg class=&#34;tip-squid&#34; width=&#34;96px&#34; height=&#34;96px&#34; viewBox=&#34;0 0 128 128&#34; data-name=&#34;Squid&#34; id=&#34;Squid&#34;
            xmlns=&#34;http://www.w3.org/2000/svg&#34;&gt;
            &lt;circle cx=&#34;49.516&#34; cy=&#34;76.516&#34; r=&#34;1.336&#34; /&gt;
            &lt;path
                d=&#34;M99.08,79.94H89.45a5,5,0,0,0-5,5v3.12a1,1,0,0,1-1,1H78.54a1,1,0,0,1-1-1l-.009-6.187a5.449,5.449,0,0,0,0-10.715V63.969a8.566,8.566,0,0,0,5.652-3.239,5.322,5.322,0,0,0,.746-4.954l-6.683-19a6.02,6.02,0,0,0,3.93-2.995,6.5,6.5,0,0,0-.155-6.59L65.2,1.705A2.564,2.564,0,0,0,63.212.476c-.083-.009-.174-.016-.27-.016h-.007c-.008,0-.015,0-.024,0a1.549,1.549,0,0,0-.257.02c-.071.009-.143.032-.215.048a2.17,2.17,0,0,0-.305.088,2.717,2.717,0,0,0-.291.117l-.02.01L61.774.77c-.024.013-.042.034-.066.048s-.028.021-.042.031A2.561,2.561,0,0,0,60.8,1.7L44.98,27.192A6.512,6.512,0,0,0,44.8,33.73a6.028,6.028,0,0,0,3.84,3.013l-6.7,19.032a5.321,5.321,0,0,0,.746,4.954A8.62,8.62,0,0,0,48.52,64v7.16a5.449,5.449,0,0,0,0,10.716V83.51a1,1,0,0,1-1,1H42.51a1,1,0,0,1-1-1V75.99a5,5,0,0,0-5-5H27a1,1,0,0,0-1,1,5.544,5.544,0,0,0,5.54,5.53h2.43a1,1,0,0,1,1,1v7.53a5,5,0,0,0,5,5h8.55v34.97a1,1,0,0,0,1,1,5.544,5.544,0,0,0,5.53-5.54V82.44a.474.474,0,0,1,.49-.47.469.469,0,0,1,.47.47v43.58a1,1,0,0,0,1,1,5.552,5.552,0,0,0,5.54-5.54V82.44a.474.474,0,0,1,.49-.47.469.469,0,0,1,.47.47v39.04a5.552,5.552,0,0,0,5.54,5.54,1,1,0,0,0,1-1V82.44a.475.475,0,0,1,.95,0v39.04a5.552,5.552,0,0,0,5.54,5.54,1,1,0,0,0,1-1V95.6H86a5,5,0,0,0,5-5v-.54c0-.02-.01-.03-.01-.05V87.47a1,1,0,0,1,1-1h2.56a5.531,5.531,0,0,0,5.53-5.53A1,1,0,0,0,99.08,79.94ZM51.367,46.063a2.852,2.852,0,1,1-2.852,2.852A2.855,2.855,0,0,1,51.367,46.063Zm-5.3,30.453a3.453,3.453,0,1,1,3.453,3.453A3.457,3.457,0,0,1,46.063,76.516Zm5.083-16.182a3.823,3.823,0,1,1,3.823-3.823A3.827,3.827,0,0,1,51.146,60.333Zm5.385-6.583a2.094,2.094,0,1,1,2.094-2.094A2.1,2.1,0,0,1,56.531,53.75ZM79.985,76.516a3.453,3.453,0,1,1-3.453-3.453A3.457,3.457,0,0,1,79.985,76.516ZM72.229,64.583a2.4,2.4,0,1,1-2.4,2.4A2.4,2.4,0,0,1,72.229,64.583Zm-2.281,8.479A1.948,1.948,0,1,1,71.9,71.115,1.95,1.95,0,0,1,69.948,73.063Z&#34; /&gt;
            &lt;circle cx=&#34;76.53&#34; cy=&#34;76.516&#34; r=&#34;1.336&#34; /&gt;
        &lt;/svg&gt;
    &lt;/div&gt;
    &lt;div style=&#34; padding-left: 1em; padding-right: 1em&#34;&gt;
        &lt;p style=&#34;font-family: &#39;Amatic SC&#39;, cursive; font-size: 22px; font-weight: bold;&#34;&gt;Abundant capacity can hide poor decisions, but it cannot remove their weight.&lt;/p&gt;
    &lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;The package manager shows how quickly the dependency can enter. It does not
show the years it may remain in the system.&lt;/p&gt;
&lt;p&gt;This is not an argument against libraries. Writing your own cryptography to
avoid a dependency is not elegance. Neither is rebuilding a complex protocol
that a mature library already implements correctly. A good dependency can be
the smallest truck because it removes more complexity than it brings.&lt;/p&gt;
&lt;p&gt;The question is whether that tradeoff was considered at all.&lt;/p&gt;
&lt;p&gt;When capacity looks unlimited, addition becomes the default answer. Another
service can be introduced before the existing one is understood. Data can be
stored forever because deciding what to discard is harder than buying more
storage. A feature can be added because there is room in the release, even
though it will occupy testing, documentation, support, and maintenance for
years.&lt;/p&gt;
&lt;p&gt;Abundance does not remove the constraint. It moves it somewhere less visible.
The system eventually runs out of something: attention, clarity, ownership, or
the ability to change one part without being surprised by another.&lt;/p&gt;
&lt;p&gt;Connected software also makes mistakes easier to patch. That is real progress.
A defect no longer needs to remain on every copy of a physical disc. But an
easy return trip should not become an excuse for careless packing before the
truck leaves. Deploying a correction may take minutes while diagnosing the
problem, coordinating the fix, and recovering trust costs much more.&lt;/p&gt;
&lt;p&gt;The stronger lesson from old hardware is not that we should make modern
development painful. It is that a hard edge forces the problem to be
understood before more capacity can be used to cover it.&lt;/p&gt;
&lt;p&gt;Before adding a dependency, do we need the whole library for this one use? Can
the problem be solved clearly with a small amount of code that the team owns?
Does the library remove more complexity than its updates and behavior will
introduce?&lt;/p&gt;
&lt;p&gt;Before adding a feature, does it deserve permanent maintenance? Before storing
more data, do we know why it needs to exist? Before expanding infrastructure,
does the problem require more capacity, or is expansion simply easier than
understanding where the current capacity went?&lt;/p&gt;
&lt;p&gt;These questions are the modern version of standing in front of a small truck.
They force us to open boxes, remove packaging, combine what can be combined,
and decide what does not need to travel.&lt;/p&gt;
&lt;p&gt;Elegance is not having the fewest dependencies, the least code, or the smallest
server. It is proportionality. The solution should not be much larger than the
problem unless the additional weight earns its place.&lt;/p&gt;
&lt;p&gt;An elegant system can look effortless after it is built. That is because the
difficult work happened before release: understanding the load, arranging its
parts, removing what carried no value, and choosing deliberately what would
remain.&lt;/p&gt;
&lt;p&gt;The original PlayStation gave developers a hard boundary. Modern engineering
rarely does. We have to draw some of those boundaries ourselves, because an
apparently infinite truck can still become impossible to unpack.&lt;/p&gt;

        
        </description>
    </item>
    
    <item>
      <title>The 100% acceptance rate</title>
      <link>/reflections/the-100-percent-acceptance-rate/</link>
      <pubDate>Thu, 11 Jun 2026 01:00:00 +0200</pubDate>
      <guid>/reflections/the-100-percent-acceptance-rate/</guid>
      <description>
        
          
          
          
        
        
        &lt;p&gt;In conversations with engineering teams, I keep seeing the same pattern with developers
entering the market: the AI spend grows month over month, from $30 to $100,
then $500, and the code keeps flowing. The number that stays with me isn&amp;rsquo;t
the bill, though. It&amp;rsquo;s the acceptance rate, sitting at nearly &lt;strong&gt;100%&lt;/strong&gt;.
&lt;strong&gt;Everything the model suggests gets shipped&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Acceptance rate doesn&amp;rsquo;t measure thinking. It only shows accepted versus
rejected. But it hints at it. An experienced engineer, or simply one with
critical thinking, might keep half of what the model offers and rewrite the
rest, or accept the periphery and keep the core logic for themselves. The
rejections &lt;em&gt;are&lt;/em&gt; the engineering.&lt;/p&gt;

&lt;div style=&#34;padding: 1em; display: flex; align-items: center;&#34;&gt;
    &lt;div&gt;
        &lt;svg class=&#34;tip-squid&#34; width=&#34;96px&#34; height=&#34;96px&#34; viewBox=&#34;0 0 128 128&#34; data-name=&#34;Squid&#34; id=&#34;Squid&#34;
            xmlns=&#34;http://www.w3.org/2000/svg&#34;&gt;
            &lt;circle cx=&#34;49.516&#34; cy=&#34;76.516&#34; r=&#34;1.336&#34; /&gt;
            &lt;path
                d=&#34;M99.08,79.94H89.45a5,5,0,0,0-5,5v3.12a1,1,0,0,1-1,1H78.54a1,1,0,0,1-1-1l-.009-6.187a5.449,5.449,0,0,0,0-10.715V63.969a8.566,8.566,0,0,0,5.652-3.239,5.322,5.322,0,0,0,.746-4.954l-6.683-19a6.02,6.02,0,0,0,3.93-2.995,6.5,6.5,0,0,0-.155-6.59L65.2,1.705A2.564,2.564,0,0,0,63.212.476c-.083-.009-.174-.016-.27-.016h-.007c-.008,0-.015,0-.024,0a1.549,1.549,0,0,0-.257.02c-.071.009-.143.032-.215.048a2.17,2.17,0,0,0-.305.088,2.717,2.717,0,0,0-.291.117l-.02.01L61.774.77c-.024.013-.042.034-.066.048s-.028.021-.042.031A2.561,2.561,0,0,0,60.8,1.7L44.98,27.192A6.512,6.512,0,0,0,44.8,33.73a6.028,6.028,0,0,0,3.84,3.013l-6.7,19.032a5.321,5.321,0,0,0,.746,4.954A8.62,8.62,0,0,0,48.52,64v7.16a5.449,5.449,0,0,0,0,10.716V83.51a1,1,0,0,1-1,1H42.51a1,1,0,0,1-1-1V75.99a5,5,0,0,0-5-5H27a1,1,0,0,0-1,1,5.544,5.544,0,0,0,5.54,5.53h2.43a1,1,0,0,1,1,1v7.53a5,5,0,0,0,5,5h8.55v34.97a1,1,0,0,0,1,1,5.544,5.544,0,0,0,5.53-5.54V82.44a.474.474,0,0,1,.49-.47.469.469,0,0,1,.47.47v43.58a1,1,0,0,0,1,1,5.552,5.552,0,0,0,5.54-5.54V82.44a.474.474,0,0,1,.49-.47.469.469,0,0,1,.47.47v39.04a5.552,5.552,0,0,0,5.54,5.54,1,1,0,0,0,1-1V82.44a.475.475,0,0,1,.95,0v39.04a5.552,5.552,0,0,0,5.54,5.54,1,1,0,0,0,1-1V95.6H86a5,5,0,0,0,5-5v-.54c0-.02-.01-.03-.01-.05V87.47a1,1,0,0,1,1-1h2.56a5.531,5.531,0,0,0,5.53-5.53A1,1,0,0,0,99.08,79.94ZM51.367,46.063a2.852,2.852,0,1,1-2.852,2.852A2.855,2.855,0,0,1,51.367,46.063Zm-5.3,30.453a3.453,3.453,0,1,1,3.453,3.453A3.457,3.457,0,0,1,46.063,76.516Zm5.083-16.182a3.823,3.823,0,1,1,3.823-3.823A3.827,3.827,0,0,1,51.146,60.333Zm5.385-6.583a2.094,2.094,0,1,1,2.094-2.094A2.1,2.1,0,0,1,56.531,53.75ZM79.985,76.516a3.453,3.453,0,1,1-3.453-3.453A3.457,3.457,0,0,1,79.985,76.516ZM72.229,64.583a2.4,2.4,0,1,1-2.4,2.4A2.4,2.4,0,0,1,72.229,64.583Zm-2.281,8.479A1.948,1.948,0,1,1,71.9,71.115,1.95,1.95,0,0,1,69.948,73.063Z&#34; /&gt;
            &lt;circle cx=&#34;76.53&#34; cy=&#34;76.516&#34; r=&#34;1.336&#34; /&gt;
        &lt;/svg&gt;
    &lt;/div&gt;
    &lt;div style=&#34; padding-left: 1em; padding-right: 1em&#34;&gt;
        &lt;p style=&#34;font-family: &#39;Amatic SC&#39;, cursive; font-size: 22px; font-weight: bold;&#34;&gt;A more useful metric would be acceptance rate paired with thinking time: how long a suggestion sits under review before it gets accepted.&lt;/p&gt;
    &lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;It&amp;rsquo;s not &amp;ldquo;using AI more and more&amp;rdquo;, it&amp;rsquo;s the monthly cost of replacing &lt;strong&gt;judgment with tokens&lt;/strong&gt;. Judgment
compounds because every rejected suggestion teaches you something. Tokens don&amp;rsquo;t.
So the question worth asking after a year of $$$ spendings: what do you own?
If the answer is a codebase nobody has a mental model of, you&amp;rsquo;ve been paying
to accumulate liability.&lt;/p&gt;
&lt;p&gt;If a software real value lives in someone&amp;rsquo;s head, and code no human
has a theory of, is legacy code
from day one. Unread AI output is born legacy.&lt;/p&gt;
&lt;p&gt;Frameworks soften this more than we admit.&lt;/p&gt;

&lt;div style=&#34;padding: 1em; display: flex; align-items: center;&#34;&gt;
    &lt;div&gt;
        &lt;svg class=&#34;tip-squid&#34; width=&#34;96px&#34; height=&#34;96px&#34; viewBox=&#34;0 0 128 128&#34; data-name=&#34;Squid&#34; id=&#34;Squid&#34;
            xmlns=&#34;http://www.w3.org/2000/svg&#34;&gt;
            &lt;circle cx=&#34;49.516&#34; cy=&#34;76.516&#34; r=&#34;1.336&#34; /&gt;
            &lt;path
                d=&#34;M99.08,79.94H89.45a5,5,0,0,0-5,5v3.12a1,1,0,0,1-1,1H78.54a1,1,0,0,1-1-1l-.009-6.187a5.449,5.449,0,0,0,0-10.715V63.969a8.566,8.566,0,0,0,5.652-3.239,5.322,5.322,0,0,0,.746-4.954l-6.683-19a6.02,6.02,0,0,0,3.93-2.995,6.5,6.5,0,0,0-.155-6.59L65.2,1.705A2.564,2.564,0,0,0,63.212.476c-.083-.009-.174-.016-.27-.016h-.007c-.008,0-.015,0-.024,0a1.549,1.549,0,0,0-.257.02c-.071.009-.143.032-.215.048a2.17,2.17,0,0,0-.305.088,2.717,2.717,0,0,0-.291.117l-.02.01L61.774.77c-.024.013-.042.034-.066.048s-.028.021-.042.031A2.561,2.561,0,0,0,60.8,1.7L44.98,27.192A6.512,6.512,0,0,0,44.8,33.73a6.028,6.028,0,0,0,3.84,3.013l-6.7,19.032a5.321,5.321,0,0,0,.746,4.954A8.62,8.62,0,0,0,48.52,64v7.16a5.449,5.449,0,0,0,0,10.716V83.51a1,1,0,0,1-1,1H42.51a1,1,0,0,1-1-1V75.99a5,5,0,0,0-5-5H27a1,1,0,0,0-1,1,5.544,5.544,0,0,0,5.54,5.53h2.43a1,1,0,0,1,1,1v7.53a5,5,0,0,0,5,5h8.55v34.97a1,1,0,0,0,1,1,5.544,5.544,0,0,0,5.53-5.54V82.44a.474.474,0,0,1,.49-.47.469.469,0,0,1,.47.47v43.58a1,1,0,0,0,1,1,5.552,5.552,0,0,0,5.54-5.54V82.44a.474.474,0,0,1,.49-.47.469.469,0,0,1,.47.47v39.04a5.552,5.552,0,0,0,5.54,5.54,1,1,0,0,0,1-1V82.44a.475.475,0,0,1,.95,0v39.04a5.552,5.552,0,0,0,5.54,5.54,1,1,0,0,0,1-1V95.6H86a5,5,0,0,0,5-5v-.54c0-.02-.01-.03-.01-.05V87.47a1,1,0,0,1,1-1h2.56a5.531,5.531,0,0,0,5.53-5.53A1,1,0,0,0,99.08,79.94ZM51.367,46.063a2.852,2.852,0,1,1-2.852,2.852A2.855,2.855,0,0,1,51.367,46.063Zm-5.3,30.453a3.453,3.453,0,1,1,3.453,3.453A3.457,3.457,0,0,1,46.063,76.516Zm5.083-16.182a3.823,3.823,0,1,1,3.823-3.823A3.827,3.827,0,0,1,51.146,60.333Zm5.385-6.583a2.094,2.094,0,1,1,2.094-2.094A2.1,2.1,0,0,1,56.531,53.75ZM79.985,76.516a3.453,3.453,0,1,1-3.453-3.453A3.457,3.457,0,0,1,79.985,76.516ZM72.229,64.583a2.4,2.4,0,1,1-2.4,2.4A2.4,2.4,0,0,1,72.229,64.583Zm-2.281,8.479A1.948,1.948,0,1,1,71.9,71.115,1.95,1.95,0,0,1,69.948,73.063Z&#34; /&gt;
            &lt;circle cx=&#34;76.53&#34; cy=&#34;76.516&#34; r=&#34;1.336&#34; /&gt;
        &lt;/svg&gt;
    &lt;/div&gt;
    &lt;div style=&#34; padding-left: 1em; padding-right: 1em&#34;&gt;
        &lt;p style=&#34;font-family: &#39;Amatic SC&#39;, cursive; font-size: 22px; font-weight: bold;&#34;&gt;Conventions from frameworks like Django or Laravel keep a codebase maintainable almost by themselves because the architecture and structure are already there, so the AI doesn&amp;#39;t get to reinvent much. Generated code lands in well-worn grooves: a model, a migration, a view. Wrong code in a conventional shape is findable.&lt;/p&gt;
    &lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;But conventions end where the business begins. Pricing rules, approval
workflows, the gnarly domain logic that makes the product the product. No
convention exists there. That&amp;rsquo;s exactly where born legacy is most critical,
and exactly where suggestions get accepted as readily as boilerplate.&lt;/p&gt;
&lt;p&gt;The more we deliver, the faster scope grows. Every shipped feature invites the
next one. And maintaining all of that software will require the same
judgment, at any price.&lt;/p&gt;
&lt;p&gt;This isn&amp;rsquo;t an argument against AI; I use it daily. It&amp;rsquo;s an argument for
balance: use the model for research and explanation
as much as for generation. Always question, never accept blindly. Be skeptical,
never accept what the model suggests without your own reasoning.&lt;/p&gt;

        
        </description>
    </item>
    
  </channel>
</rss>