<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="FeedCreator 1.8" -->
<rss version="2.0">
    <channel xmlns:g="http://base.google.com/ns/1.0">
        <title>Linkblog</title>
        <description></description>
        <link></link>
        <lastBuildDate>Thu, 06 Aug 2026 08:31:22 +0000</lastBuildDate>
        <generator>FeedCreator 1.8</generator>
        <item>
            <title>Datatype — variable font that turns text into charts</title>
            <link>https://franktisellano.github.io/datatype/</link>
            <description>&lt;blockquote&gt;&lt;hr&gt;&lt;/blockquote&gt;&lt;div&gt;


&lt;div&gt;
  
  &lt;p&gt;A variable font that turns text into charts.&lt;/p&gt;
  &lt;p&gt;{b:20,55,40,80,65}&amp;nbsp;&amp;nbsp;&amp;nbsp;{l:10,40,25,70,50,90}&amp;nbsp;&amp;nbsp;&amp;nbsp;{p:73}&amp;nbsp;&amp;nbsp;&amp;nbsp;{b:85,30,60,10,45}&amp;nbsp;&amp;nbsp;&amp;nbsp;{l:50,20,80,35,65,10}&amp;nbsp;&amp;nbsp;&amp;nbsp;{p:41}&lt;/p&gt;
&lt;/div&gt;


&lt;p&gt;
  &lt;a href=&quot;https://github.com/franktisellano/datatype&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;GitHub&lt;span&gt;&lt;span id=&quot;gh-star-icon&quot;&gt;★&lt;/span&gt;&lt;span id=&quot;gh-star-count&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;
  &lt;a href=&quot;https://fonts.google.com/specimen/Datatype&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;
    Google Fonts
  &lt;/a&gt;
&lt;/p&gt;


&lt;div&gt;
    &lt;h2&gt;Datatype is data as type&lt;/h2&gt;
    &lt;p&gt;
      Datatype is an OpenType variable font that turns simple text expressions into
      inline charts. No JavaScript, no images, no rendering library — just type the
      syntax and Datatype&#039;s ligature substitution does the rest.
    &lt;/p&gt;
    &lt;div&gt;
      &lt;div&gt;
        &lt;p&gt;{b:30,70,50,90}&lt;/p&gt;
        &lt;p&gt;&lt;code&gt;{b:30,70,50,90}&lt;/code&gt;&lt;/p&gt;&lt;p&gt;Bar chart&lt;/p&gt;
      &lt;/div&gt;
      &lt;div&gt;
        &lt;p&gt;{l:10,50,30,80,20}&lt;/p&gt;
        &lt;p&gt;&lt;code&gt;{l:10,50,30,80,20}&lt;/code&gt;&lt;/p&gt;&lt;p&gt;Sparkline&lt;/p&gt;
      &lt;/div&gt;
      
    &lt;/div&gt;
  &lt;/div&gt;


&lt;div&gt;
    &lt;h2&gt;Datatype is a variable font&lt;/h2&gt;
    &lt;p&gt;
      Two axes give you control over chart density and weight.
      Drag the sliders to see charts respond in real time.
    &lt;/p&gt;
    
    &lt;p&gt;
      {b:15,45,80,30,60,90,20} &amp;nbsp; {l:5,35,20,70,45,85,30,60} &amp;nbsp; {p:52}
    &lt;/p&gt;
  &lt;/div&gt;


&lt;div&gt;
    &lt;h2&gt;Datatype at different sizes&lt;/h2&gt;
    &lt;p&gt;The same expressions rendered from 14px to 64px.&lt;/p&gt;
    &lt;div id=&quot;sizeComparison&quot;&gt;
      &lt;p&gt;&lt;span&gt;14px&lt;/span&gt;
        &lt;span&gt;{b:30,70,20,90} &amp;nbsp; {l:20,50,30,80,10} &amp;nbsp; {p:65}&lt;/span&gt;
      &lt;/p&gt;
      &lt;p&gt;&lt;span&gt;18px&lt;/span&gt;
        &lt;span&gt;{b:30,70,20,90} &amp;nbsp; {l:20,50,30,80,10} &amp;nbsp; {p:65}&lt;/span&gt;
      &lt;/p&gt;
      &lt;p&gt;&lt;span&gt;24px&lt;/span&gt;
        &lt;span&gt;{b:30,70,20,90} &amp;nbsp; {l:20,50,30,80,10} &amp;nbsp; {p:65}&lt;/span&gt;
      &lt;/p&gt;
      &lt;p&gt;&lt;span&gt;36px&lt;/span&gt;
        &lt;span&gt;{b:30,70,20,90} &amp;nbsp; {l:20,50,30,80,10} &amp;nbsp; {p:65}&lt;/span&gt;
      &lt;/p&gt;
      &lt;p&gt;&lt;span&gt;48px&lt;/span&gt;
        &lt;span&gt;{b:30,70,20,90} &amp;nbsp; {l:20,50,30,80,10} &amp;nbsp; {p:65}&lt;/span&gt;
      &lt;/p&gt;
      &lt;p&gt;&lt;span&gt;64px&lt;/span&gt;
        &lt;span&gt;{b:30,70,20,90} &amp;nbsp; {l:20,50,30,80,10} &amp;nbsp; {p:65}&lt;/span&gt;
      &lt;/p&gt;
    &lt;/div&gt;
  &lt;/div&gt;


&lt;div&gt;
    &lt;h2&gt;Datatype in context&lt;/h2&gt;
    &lt;p&gt;Datatype charts work anywhere text does — tables, dashboards, reports. Here&#039;s a stock watchlist with sparklines rendered entirely in Datatype.&lt;/p&gt;

    &lt;table readabilityDataTable=&quot;1&quot;&gt;
      &lt;thead&gt;
        &lt;tr&gt;
          &lt;th&gt;Stock&lt;/th&gt;
          &lt;th&gt;30d trend&lt;/th&gt;
          &lt;th&gt;Price&lt;/th&gt;
          &lt;th&gt;Change&lt;/th&gt;
        &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
        &lt;tr&gt;
          &lt;td&gt;&lt;span&gt;AAPL&lt;/span&gt;&lt;span&gt;Apple&lt;/span&gt;&lt;/td&gt;
          &lt;td&gt;&lt;span&gt;{l:40,25,1,0,34,73,93,100,85,26}&lt;/span&gt;&lt;/td&gt;
          &lt;td&gt;$255.78&lt;/td&gt;
          &lt;td&gt;&lt;span&gt;-2.27%&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
          &lt;td&gt;&lt;span&gt;MSFT&lt;/span&gt;&lt;span&gt;Microsoft&lt;/span&gt;&lt;/td&gt;
          &lt;td&gt;&lt;span&gt;{l:86,86,75,100,52,39,0,26,14,10}&lt;/span&gt;&lt;/td&gt;
          &lt;td&gt;$401.32&lt;/td&gt;
          &lt;td&gt;&lt;span&gt;-0.13%&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
          &lt;td&gt;&lt;span&gt;NVDA&lt;/span&gt;&lt;span&gt;Nvidia&lt;/span&gt;&lt;/td&gt;
          &lt;td&gt;&lt;span&gt;{l:55,70,63,71,100,67,0,88,88,53}&lt;/span&gt;&lt;/td&gt;
          &lt;td&gt;$182.81&lt;/td&gt;
          &lt;td&gt;&lt;span&gt;-2.21%&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
          &lt;td&gt;&lt;span&gt;TSLA&lt;/span&gt;&lt;span&gt;Tesla&lt;/span&gt;&lt;/td&gt;
          &lt;td&gt;&lt;span&gt;{l:81,77,100,73,37,47,0,39,60,39}&lt;/span&gt;&lt;/td&gt;
          &lt;td&gt;$417.44&lt;/td&gt;
          &lt;td&gt;&lt;span&gt;+0.09%&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
          &lt;td&gt;&lt;span&gt;AMZN&lt;/span&gt;&lt;span&gt;Amazon&lt;/span&gt;&lt;/td&gt;
          &lt;td&gt;&lt;span&gt;{l:86,91,81,90,97,100,54,23,12,0}&lt;/span&gt;&lt;/td&gt;
          &lt;td&gt;$198.79&lt;/td&gt;
          &lt;td&gt;&lt;span&gt;-0.41%&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;

    &lt;p&gt;Charts sit naturally within running prose, matching the surrounding typeface&#039;s metrics.&lt;/p&gt;

    &lt;div&gt;
      &lt;p&gt;Merriweather (Serif)&lt;/p&gt;
      &lt;p&gt;
        Revenue grew steadily through Q3 &lt;span&gt;{l:15,28,40,52,63,78,88,95,74,58}&lt;/span&gt; before
        a seasonal dip. Market share &lt;span&gt;{p:34}&lt;/span&gt; held firm against competitors,
        and our product mix &lt;span&gt;{b:60,45,80,30}&lt;/span&gt; shifted toward higher margins.
      &lt;/p&gt;
    &lt;/div&gt;

    &lt;div&gt;
      &lt;p&gt;IBM Plex Sans (Sans-serif)&lt;/p&gt;
      &lt;p&gt;
        The patient&#039;s heart rate &lt;span&gt;{l:68,82,55,90,42,78,60,85}&lt;/span&gt; remained within
        normal range. Blood oxygen &lt;span&gt;{p:97}&lt;/span&gt; was excellent, and the weekly
        activity breakdown &lt;span&gt;{b:25,40,55,75,90}&lt;/span&gt; showed consistent improvement.
      &lt;/p&gt;
    &lt;/div&gt;

    &lt;div&gt;
      &lt;p&gt;Fira Code (Monospace)&lt;/p&gt;
      &lt;p&gt;
        cpu_load &lt;span&gt;{l:15,45,90,30,75,20,85,95}&lt;/span&gt; spiking
        mem_used &lt;span&gt;{p:78}&lt;/span&gt;
        req/s by endpoint &lt;span&gt;{b:90,35,70,15,60}&lt;/span&gt;
      &lt;/p&gt;
    &lt;/div&gt;
  &lt;/div&gt;


&lt;div&gt;
    &lt;h2&gt;How to use Datatype&lt;/h2&gt;
    &lt;p&gt;Add Datatype to your CSS, then just type chart expressions in your HTML.&lt;/p&gt;

    &lt;p&gt;
&lt;span&gt;@font-face&lt;/span&gt; {
  &lt;span&gt;font-family&lt;/span&gt;: &lt;span&gt;&#039;Datatype&#039;&lt;/span&gt;;
  &lt;span&gt;src&lt;/span&gt;: &lt;span&gt;url(&#039;Datatype.woff2&#039;) format(&#039;woff2&#039;)&lt;/span&gt;;
  &lt;span&gt;font-display&lt;/span&gt;: &lt;span&gt;swap&lt;/span&gt;;
}


&lt;span&gt;.chart&lt;/span&gt; {
  &lt;span&gt;font-family&lt;/span&gt;: &lt;span&gt;&#039;Datatype&#039;, sans-serif&lt;/span&gt;;
  
  &lt;span&gt;font-variation-settings&lt;/span&gt;: &lt;span&gt;&#039;wdth&#039; 15&lt;/span&gt;;
  &lt;span&gt;font-weight&lt;/span&gt;: &lt;span&gt;400&lt;/span&gt;;
}&lt;/p&gt;

    &lt;p&gt;
Sales &lt;span&gt;&amp;lt;span class=&quot;chart&quot;&amp;gt;&lt;/span&gt;{l:20,40,70,50,90}&lt;span&gt;&amp;lt;/span&amp;gt;&lt;/span&gt; are up.
Budget &lt;span&gt;&amp;lt;span class=&quot;chart&quot;&amp;gt;&lt;/span&gt;{p:73}&lt;span&gt;&amp;lt;/span&amp;gt;&lt;/span&gt; utilized.
Results &lt;span&gt;&amp;lt;span class=&quot;chart&quot;&amp;gt;&lt;/span&gt;{b:30,70,20,90}&lt;span&gt;&amp;lt;/span&amp;gt;&lt;/span&gt; by quarter.
&lt;/p&gt;

    &lt;p&gt;It&#039;s easy to use Datatype on the web. See the &lt;a href=&quot;integrations.html&quot;&gt;integration guide&lt;/a&gt; for setup instructions.&lt;/p&gt;

    

    &lt;div&gt;
      &lt;h3&gt;Bar charts &lt;code&gt;{b:values}&lt;/code&gt;&lt;/h3&gt;
      &lt;p&gt;Comma-separated values, each 0–100. Up to 20 bars.&lt;/p&gt;
      &lt;div&gt;
        &lt;p&gt;{b:15,45,80,30,60}&lt;/p&gt;
        &lt;p&gt;&lt;code&gt;{b:15,45,80,30,60}&lt;/code&gt;&lt;/p&gt;&lt;p&gt;5 bars — values set bar height as a percentage&lt;/p&gt;
      &lt;/div&gt;
    &lt;/div&gt;

    &lt;div&gt;
      &lt;h3&gt;Sparklines &lt;code&gt;{l:values}&lt;/code&gt;&lt;/h3&gt;
      &lt;p&gt;Comma-separated values, each 0–100. Up to 20 points.&lt;/p&gt;
      &lt;div&gt;
        &lt;p&gt;{l:10,40,25,70,50,90,35}&lt;/p&gt;
        &lt;p&gt;&lt;code&gt;{l:10,40,25,70,50,90,35}&lt;/code&gt;&lt;/p&gt;&lt;p&gt;7 points — values set point height as a percentage&lt;/p&gt;
      &lt;/div&gt;
    &lt;/div&gt;

    &lt;div&gt;
      &lt;h3&gt;Pie charts &lt;code&gt;{p:value}&lt;/code&gt;&lt;/h3&gt;
      &lt;p&gt;A single value, 0–100, representing the percentage filled.&lt;/p&gt;
      
    &lt;/div&gt;
  &lt;/div&gt;











&lt;/div&gt;</description>
            <pubDate>Tue, 28 Jul 2026 05:47:01 +0000</pubDate>
            <guid>https://franktisellano.github.io/datatype/</guid>
        </item>
        <item>
            <title>Being Linux Torvalds - &amp;lt;antirez&amp;gt;</title>
            <link>https://antirez.com/news/171</link>
            <description>&lt;blockquote&gt;&amp;quot;Now, when we program with the artificial intelligences, we are exactly that same thing. We are Linus Torvalds, not always with the talent that he has, but the role we should assume&amp;quot;&lt;hr&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;article data-comment-id=&quot;171-&quot; id=&quot;171-&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;a href=&quot;/user/antirez&quot;&gt;antirez&lt;/a&gt;&lt;/span&gt; 2 days ago. 39022 views.  &lt;/span&gt;&lt;pre&gt;(This blog post was adapted from the transcription obtained from my YouTube video at &lt;a rel=&quot;nofollow&quot; href=&quot;https://www.youtube.com/watch?v=l6lxgYeVZqs)&quot;&gt;https://www.youtube.com/watch?v=l6lxgYeVZqs)&lt;/a&gt;

When Linus Torvalds developed the first Linux kernel, he had studied the Minix sources, he had studied computer architecture, he had the base knowledge needed, and he was obviously a very brilliant programmer. But that operation of writing a minimal yet working Unix kernel for the 386 (at the beginning Linux was, let&#039;s say, mono-architecture) was something within the reach of many other programmers and students. Many in the sense of, I don&#039;t know, 0.1%, one in a thousand, one in ten thousand. Obviously most people are not able to do this kind of feat, but a lot of people are. If you look at Hacker News in the latest years, you&#039;ll see how many projects of kernels written in C, microkernels implemented from scratch, kernels written in Rust, kernels made in all sauces and manners, small Unix systems created vertically for the Raspberry Pi, operating systems for the ESP32 and so forth. Writing a kernel is not something within everybody&#039;s reach, but it is something that many can complete, if they put enough effort into it. Then, of course, not everybody will do it well. He is a genius programmer, without any doubt, so he did it better.

And yet, of Linus there is only one. This implementative capacity of his, in fact, would not tell us much about him: what we should focus on, instead, is what happened later.

## He stopped writing code

Among the maintainers of the famous open source projects, he was one of the very few that, very early in the history of the development of Linux, almost completely stopped writing code in order to concentrate on the leading of the project. On being the leader, the coordinator, the single mind holding the clarity about what the goals of the project must be, and so on. And this is a rare thing. Many maintainers (myself included, for a long time) continue instead to implement things directly, to not delegate much, and so forth.

This also starts from a different idea of software. Linux, necessarily, had to grow immeasurably: it is in the quality itself of a kernel that wants to embrace many devices, platforms, subsystems, and to continuously adapt to the times, to the needs of the new software, to the hardware that comes out little by little. So this was not a mistake. Redis, on the contrary, could remain something self contained. The other day I received a pull request on linenoise from Dr. Richard Hipp of SQLite: he too aimed at stability, at minimalism, at performances, but always keeping the code base very small, and he continued to write code for a very long time. Linus, instead, no. He understood immediately that he had to donate his time to something that was more important, for a project destined to become very big compared to what is the implementative capacity of a single person.

So he became the project leader, the one that owns the ideas, the direction. And what is it that Linus does, then? He does not look at every patch line by line, every time. Of course it also happens to him to look deeply into a single implementation, in order to understand what is going on. It happened to him, over the years, to write some new subsystem, or even to rewrite one: I think he did it once with the USB layer, many years ago, and he did it with the virtual file system, that at some point I believe he reimplemented, changing the structure of the inodes and of the inode cache, and he did it for several other reasons. From time to time he continued to program, when he created Git, and so forth. But for the most part he does not look at the patches singularly, in detail, line after line: he communicates with the maintainers of the subsections, and understands if a given feature or a given direction is, or is not, a road to take.

So, to say it in Brooks&#039; terms, in Mythical Man Month terms, Linus holds the design concepts of the kernel, and continues to dialogue with everybody below him in the hierarchy of the kernel so that the kernel goes towards a certain direction. So that the developments go towards a certain direction, both from the implementative point of view (how these developments are implemented, what is the quality, what is the implementative idea in the very way the code is written), and from the design point of view: what is it that we want to do, what we don&#039;t want, what is the best strategy for the modules, for the scheduler, for the hardware support, for the integration of Rust or not. All this stuff here.

Now, I believe that this was the real genius of Linus. He is not just a very brilliant programmer: there are others. He is also a maintainer, an incredible designer, and one capable of handling a huge project ideas and structure in a coherent way, dialoguing with many other people. This thing is not for everybody.

## We are Linus, now

Now, when we program with the artificial intelligences, we are exactly that same thing. We are Linus Torvalds, not always with the talent that he has, but the role we should assume, in the projects where we don&#039;t do the review of every line of the code, is exactly of that type. It is exactly the role that he has.

Only, the thing is simpler to dominate: unless we use a lot of agents in parallel, it is substantially simpler to dominate than a multitude of patches arriving from different ways. But it is much faster. It is as if, instead of interacting with a team composed of many people at human speed, we interacted with a team composed of one, two, three people, based on how many parallel branches of our project we are developing in that moment, but that are much faster, so they give us immediately a much faster feedback. This slightly changes the modality of the work, but in my opinion for the better: it is easier, less context switching, fewer people to deal with, many fewer problems due to the character, the attitude, and so forth.

So, if we think that this role is important, we must not think that automatic programming is &quot;I put the prompt, and the thing writes&quot;. Vibe coding is a wrong idea of what automatic programming is, and of what automatic programming will be for the majority of people. Vibe coding is a very interesting thing for who does not have technological abilities and wants anyway to have an impact on the construction of their own tools, and so forth: so, welcome, because it democratizes the possibilities. But it is not that.

Automatic programming, instead, in the hands of people that are expert technicians, or expert programmers, expert designers, expert software architects, is to assume the role of Linus, with the agents and the LLMs assuming the role of the different maintainers of the different subsystems. And since not everybody is able to do it so well, automatic programming as well has need of talents that talk with the agents, that check the ideas, that know which are the implementations to do and the ones not to do, the way of communicating with the agents in order to make them do the best work, putting there those design hints that a great programmer intuits, that a good programmer intuits and manages to precompute.

So automatic programming, when it is done well, means to assume the role of Linus. And this thing can be done well, it can be done badly, it can be understood, or it can instead be debased. And it is also something that needs training, that needs to be learned, exactly as Linus had to learn it: he surely had an innate talent for this, but he passed from &quot;I implement everything&quot; to that capability of handling a symphony, of being the orchestra director.

That, for me, is the lesson of Linus, and it is one that should immediately be used as an argument of contrast for those that say that, well, with the LLMs programming is easy for everybody.&lt;/pre&gt;&lt;/article&gt;&lt;/div&gt;</description>
            <pubDate>Mon, 27 Jul 2026 09:42:49 +0000</pubDate>
            <guid>https://antirez.com/news/171</guid>
        </item>
        <item>
            <title>Faulty Towers, vibe sickness, and the vibe bobsled</title>
            <link>https://dustycloud.org/blog/faulty-towers-vibe-sickness-and-the-vibe-bobsled/</link>
            <description>&lt;blockquote&gt;&lt;hr&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;p&gt;I know. As if what the world needed was &lt;em&gt;yet another&lt;/em&gt; blogpost about
LLMs and AI tech. Yet there is a pile of things which have been on my
mind, and I haven&#039;t seen them laid out elsewhere in the way I&#039;m going
to write them, and so here we go.&lt;/p&gt;&lt;p&gt;I still don&#039;t use genAI to write my articles, fwiw. Here or anywhere
else. These rambly words are my own.&lt;/p&gt;&lt;h2&gt;The tower tilts&lt;/h2&gt;&lt;p&gt;I read
&lt;a href=&quot;https://lucumr.pocoo.org/2026/7/13/the-tower-keeps-rising/&quot;&gt;The Tower Keeps Rising&lt;/a&gt;
recently, and it has stuck in my mind.&lt;/p&gt;&lt;p&gt;The piece is an observation, and
&lt;a href=&quot;https://lobste.rs/s/latr8d/tower_keeps_rising#c_erjpmu&quot;&gt;according to Armin on lobste.rs&lt;/a&gt;,
it is not an advocacy for the state of affairs (though by running a
vibecoding company, Armin is part of advancing this direction):&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;For context: I&#039;m the author. I intentionally did not make a
judgement if this is a good or bad thing, or if this is going to
continue working. It&#039;s primarily an observation that with agents you
can continue to make progress even when people on the team
maneuvered themselves into situations where previously they would
have needed to talk to each other.&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;The summary of Armin&#039;s post is effectively that vibecoded systems keep
piling code on top of code, but in many systems things seem to keep
building, but the abstractions keep piling on, but eventually no human
can understand the codebase. But this is a new way of operating,
because LLMs can &quot;explain&quot; a part of the codebase that no human can
make sense of, and so continue building.&lt;/p&gt;&lt;p&gt;Even if such systems continue to work, I find two things: 1) that now
advocates for this state of affairs have pivoted into acknowledging
that this is the end state of their systems and 2) they seem to be
accepting it as the way forward.&lt;/p&gt;&lt;p&gt;Regarding the first, I think it&#039;s very important to note that this is
&lt;em&gt;a shift&lt;/em&gt;. &lt;a href=&quot;https://simonwillison.net/&quot;&gt;Simon Willison&lt;/a&gt;, probably the
best pro-genAI writer on the internet (sometimes, I think, giving
cover for a lot of weaker writers, but is that Simon&#039;s fault?), at one
point coined the term
&lt;a href=&quot;https://simonwillison.net/guides/agentic-engineering-patterns/what-is-agentic-engineering/&quot;&gt;&quot;agentic engineering&quot;&lt;/a&gt;
and was very clear to
&lt;a href=&quot;https://simonwillison.net/2025/Mar/19/vibe-coding/&quot;&gt;draw a line in the sand between agentic engineering and vibecoding&lt;/a&gt;:&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;We also need to read the code. My golden rule for production-quality
AI-assisted programming is that I won’t commit any code to my
repository if I couldn’t explain exactly what it does to somebody
else.&lt;/p&gt;&lt;p&gt;If an LLM wrote the code for you, and you then reviewed it, tested
it thoroughly and made sure you could explain how it works to
someone else that’s not vibe coding, it’s software development. The
usage of an LLM to support that activity is immaterial.&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;In an &lt;em&gt;incredibly short&lt;/em&gt; period of time, basically a year, Simon
published a fairly honest article titled
&lt;a href=&quot;https://simonwillison.net/2026/May/6/vibe-coding-and-agentic-engineering/&quot;&gt;Vibe coding and agentic engineering are getting closer than I’d like&lt;/a&gt;:&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;The problem is that as the coding agents get more reliable, I’m not
reviewing every line of code that they write anymore, even for my
production level stuff.&lt;/p&gt;&lt;p&gt;I know full well that if you ask Claude Code to build a JSON API
endpoint that runs a SQL query and outputs the results as JSON, it’s
just going to do it right. It’s not going to mess that up. You have
it add automated tests, you have it add documentation, you know it’s
going to be good.&lt;/p&gt;&lt;p&gt;But I’m not reviewing that code. And now I’ve got that feeling of
guilt: if I haven’t reviewed the code, is it really responsible for
me to use this in production?&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;It&#039;s a great read, and what I will say is that I applaud Simon&#039;s
&lt;em&gt;honesty&lt;/em&gt; and willingness to self-reflect and challenge prior
statements.&lt;/p&gt;&lt;p&gt;But the gap of time between the
&lt;a href=&quot;https://simonwillison.net/2025/Mar/19/vibe-coding/&quot;&gt;former&lt;/a&gt; and
&lt;a href=&quot;https://simonwillison.net/2026/May/6/vibe-coding-and-agentic-engineering/&quot;&gt;latter&lt;/a&gt;
articles are &lt;em&gt;stunningly&lt;/em&gt; short, just slightly over a year.&lt;/p&gt;&lt;p&gt;And Simon isn&#039;t alone. Just a year ago, I think the memetic shape
&lt;em&gt;was&lt;/em&gt; by and large that something along the lines of &quot;agentic
engineering&quot; is what people could or should do, and, though I think
many people are hesitant to admit it, I think most people using these
tools are tending towards vibecoding and not agentic engineering, just
as Simon himself found himself pulled.&lt;/p&gt;&lt;p&gt;Before we look at the consequences to this, I think we should look at
why it&#039;s happening.&lt;/p&gt;&lt;h2&gt;The vibe bobsled&lt;/h2&gt;&lt;p&gt;As far as I know I&#039;m the only person who uses the term &quot;vibe bobsled&quot;
and, well, I doubt it&#039;s a term that&#039;s particularly likely to catch on,
but I find it personally useful.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Bobsleigh&quot;&gt;Bobsledding&lt;/a&gt;, if you are
unaware, is a particularly strange and interesting sport. It&#039;s a lot
of fun, but you don&#039;t have a lot of agency in it. You sit in a
bobsled, you go down an icy track, and really, there is only one way
&lt;em&gt;to&lt;/em&gt; go. But people can become experts in it, and can indeed measure
themselves against each others skills; it&#039;s an olympic sport, and I
remember my own first encounters with bobsledding as a child, when my
father and uncle and aunts took me, and it was thrilling like a roller
coaster and intoxicating upon my first encounter.&lt;/p&gt;&lt;p&gt;But again, ultimately, there&#039;s only one place to go.&lt;/p&gt;&lt;p&gt;The vehicle is the LLM, you are the passenger. And I think the amount
of agency people have over their journey is greatly reduced from what
they feel like it is. More than just a slippery slope, it is a
pre-crafted journey.&lt;/p&gt;&lt;p&gt;At the top of the chute, people tell themselves they&#039;re going to use
these tools as a kind of fancy autocomplete. As they descend, they say
they&#039;ll spin up some agents to explore ideas, but they&#039;ll write the
code themselves. Next their agents are generating the code for them,
but don&#039;t worry, but they&#039;ll review all the output. Soon they&#039;re
plummeting downward and well, they don&#039;t actually review the code
being spat out much anymore, but they trust the agents, heck maybe the
agents are actually better coders than they are they say. And where
does it go from there?
From &quot;I don&#039;t even code anymore&quot; to
&lt;a href=&quot;https://lucumr.pocoo.org/2026/6/23/the-coming-loop/&quot;&gt;&quot;I don&#039;t even prompt anymore&quot;&lt;/a&gt;?&lt;/p&gt;&lt;p&gt;At every stage of the process, the coder in question removes
themselves from the process of producing code, and gives in towards a
faith-based initiative of code production, that the LLM knows and does
a good job of what it&#039;s doing. But what is the source of gravity
pulling the sled along this icy chute?&lt;/p&gt;&lt;p&gt;It&#039;s simple. Generation is not the slow part of coding. Theory-building
and review are. And plausible-enough things are extremely hard to debug
and understand. But the machines are so &lt;em&gt;fast&lt;/em&gt; at producing things. If
you are going to review their work, you aren&#039;t really taking advantage of
their most powerful property, which is speed. But theory-building and
review are also &lt;em&gt;the programmer&#039;s most important role&lt;/em&gt;.&lt;/p&gt;&lt;p&gt;To illustrate just how hard it is to detect and review problems with
something which &lt;em&gt;appears plausible&lt;/em&gt;, let&#039;s look at Ka-Ping Yee&#039;s
remarkable dissertation,
&lt;a href=&quot;http://zesty.ca/pubs/yee-phd.pdf&quot;&gt;Building Reliable Voting Machine Software&lt;/a&gt;.
It is a wonderful read, and highly approachable.&lt;/p&gt;&lt;p&gt;In the section &quot;What makes software hard to verify?&quot;, Ka-Ping
recognizes several major reasons why software is hard to verify:
number of components, complex interactions, far-reaching effects, and
nonlinearity. Notably, all of these problems are exacerbated by the
patterns of code generation by LLMs. Still, let us leave that aside.&lt;/p&gt;&lt;p&gt;Ka-Ping constructs a model voting machine, and decides to see how hard
it would be to verify that we know it behaves correctly. To push that
exploration to its furthest, Ka-Ping Yee and David Wagner try an
interesting experiment:&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;David Wagner and I decided to insert three bugs into Pvote to see if
the reviewers would find them. We inserted what we thought would be
an “easy” bug, a “medium” bug, and a “hard bug” to find, and chose
each bug individually in such a way that an insider could
conceivably exploit the bug to influence the results of an
election. [...]&lt;/p&gt;&lt;p&gt;We decided to insert all of these bugs in a 100-line region of a
single file, lines 11 to 109 of Navigator.py, and told the reviewers
to look in this region. We did this both because the navigator was
the most interesting in terms of the program logic and because we
knew the reviewers would have limited time. The new version of the
code that we gave the reviewers contained all three bugs, but we did
not tell the reviewers how many bugs there were.&lt;/p&gt;&lt;p&gt;Yoshi Kohno, Mark Miller, and Dan Sandler participated as reviewers
on the third day of the review. Dan was very familiar with Python
and found the “easy” and “medium” bugs quickly, within about 70
minutes. Yoshi Kohno and Mark Miller found the “easy” bug after
about four hours of reviewing. None of the reviewers found the
“hard” bug.&lt;/p&gt;&lt;p&gt;Ian Goldberg and Yoshi Kohno participated as reviewers on the fourth
day of the review. Ian Goldberg also found the “easy” bug within
about two hours; none of the other bugs were found on the fourth
day.&lt;/p&gt;&lt;p&gt;The reviewers spent a total of about 20 reviewer-hours focused on
the task of finding the bugs in this 100-line section of
Navigator.py.&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;Ka-Ping chose from a highly seasoned group of reviewers who were even
deeply familiar with security threats. Mark S. Miller has been a
personal mentor to me throughout my career, and is one of the
programmers I have learned most from and studied the work of most
closely. I talked with him about the experience at one point. He
remarked on how it took a significant amount of time to find the easy
bug, hours to find the medium bug, and that nobody could find the hard
bug... but the big observation (which was said to me personally, and
is not recorded in the dissertation) was that &quot;the astounding thing is
that once the bugs were pointed out, we all agreed that they were
retroactively obvious, and that we &lt;em&gt;should have&lt;/em&gt; been able to find
them!&quot;&lt;/p&gt;&lt;p&gt;If some of the best programmers in the world struggle to find bugs
they even &lt;em&gt;know must be there&lt;/em&gt; within a &lt;em&gt;100 line program&lt;/em&gt;, there is
simply &lt;em&gt;no hope for humans to review the volume of output from LLMs&lt;/em&gt;.&lt;/p&gt;&lt;p&gt;And so there is only one thing to do: don&#039;t bother. At each step,
remove yourself. You tell yourself you won&#039;t, but you do. You give in
to the chute and the shape of the vibe tunnel, and down you go.&lt;/p&gt;&lt;h2&gt;Vibe sickness and the colonial settlers of the uncanny valley&lt;/h2&gt;&lt;p&gt;The term &quot;AI psychosis&quot; is thrown around a lot these days to describe
anyone or any state of poor behavior or outcomes due to genAI
usage. But the original description of &quot;AI psychosis&quot; was closer to
something clinical, a description of people &lt;em&gt;quite literally&lt;/em&gt;
experiencing psychosis from encounters with chatbots which reaffirm
far too much of the user, spinning them into spaces of delusional
detachment from reality.&lt;/p&gt;&lt;p&gt;But we should have &lt;em&gt;something&lt;/em&gt; to describe the general sense of
unwellness that seems to be befalling this world, and the best phrase
of which I first saw in a
&lt;a href=&quot;https://mastodon.social/@glyph/116603752031736039&quot;&gt;post from Glyph&lt;/a&gt;:&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;On the way home from #PyConUS 2026. Quite an experience this year;
very intense. No point in sugar-coating the part where there is a
pervasive vibe-sickness, open source is suffering a massive
sustainability crisis, slop security PRs are overwhelming everyone
(etc etc). But there was a lot of hope, a lot of energy, a lot of
effort toward mutual understanding, and (surprising to me) a lot of
&lt;em&gt;appreciation&lt;/em&gt;. Including for my own work, both writing and coding.&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;I like the phrase &quot;vibe sickness&quot;, and if you aren&#039;t speaking of a
form of literal psychosis, I think it&#039;s a better phrase.&lt;/p&gt;&lt;p&gt;Vibe sickness is everywhere... heck, perhaps we are on the verge of,
if not experiencing, a &lt;em&gt;vibe epidemic&lt;/em&gt;. Everyone complains of slop,
and yet nobody using these tools wants to self-describe their outputs
as slop. Yet slop seems to be everywhere, and infecting one&#039;s everyday
experience: posters of food at your local restaurant that have
plausible and yet incomprehensible designs, the helpdesk support
chatbot you wish you could make physically manifest so you could throw
it off the edge of a cliff,
&lt;a href=&quot;https://neuromatch.social/@jonny/116935681120949448&quot;&gt;age verification code&lt;/a&gt;,
and if you&#039;re a maintainer of an open source project, slop issues and pull
requests.&lt;/p&gt;&lt;p&gt;The thing is that all of this tooling is useful for &lt;em&gt;some&lt;/em&gt; things, but
the term &quot;genAI&quot; points at exactly what it&#039;s &lt;em&gt;worst&lt;/em&gt; at: generating
things. If we want to talk about &lt;em&gt;finding problems&lt;/em&gt;, it&#039;s a different
story. But even leaving aside the quality issues of the growing and
wavering tower, there comes the problem of lack of understanding of
how it is built, constructed, and maintained.&lt;/p&gt;&lt;p&gt;The worst part of all this is you can&#039;t opt out. A colleague or an
open source contributor sends you a &quot;generous contribution&quot; that is
absolutely slop and certainly &lt;em&gt;not&lt;/em&gt; understood by the person who
submitted it. You&#039;re left sitting there, parsing whether or not you&#039;re
going to be rude even to ask if this is LLM generated, or to
unwittingly become a user of vibecoding workflows yourself by
indirectly interacting with the agent through trying to respond to the
issue/PR.&lt;/p&gt;&lt;p&gt;You can&#039;t escape.&lt;/p&gt;&lt;p&gt;To quote Glyph again:&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;Protesting LLMs by refusing to use any software that includes them
feels like attempting to protest the introduction of tetraethyl lead
into gasoline by refusing to breathe until everyone stops putting it
in their cars. So I am drawing my personal moral lines in such a way
that I will probably accept this.&lt;/p&gt;&lt;p&gt;But please don&#039;t mistake this for excitement about huffing a bunch
of vaporized lead.&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;Well put. In the meanwhile, the
&lt;a href=&quot;https://en.wikipedia.org/wiki/Uncanny_valley&quot;&gt;uncanny valley&lt;/a&gt;
colonizes our world and transforms it into its own.&lt;/p&gt;&lt;p&gt;But there is a rot growing beneath our feet and within our walls as
our world is swapped out with systems nobody understands. And I fear
what it&#039;s going to be like to recover from this all, the price we do
not even yet realize we are going to have to pay. For this reason, any
project that chooses &lt;em&gt;not&lt;/em&gt; to engage with current genAI stuff, I tend
to gain respect for.&lt;/p&gt;&lt;p&gt;But perhaps you can&#039;t opt out from aiding the problem. Your work won&#039;t
let you, you&#039;re stuck in some situation... I don&#039;t mean to judge, but
I do mean to end with a perspective.&lt;/p&gt;&lt;p&gt;Sometimes I sit as the passenger of a car and watch the driver of said
car get angry at someone biking on the road. It feels bad, because
sometimes I bike on the road, and without sufficient infrastructure,
bicyclists risk getting hit by car doors parked on the side of the
road, squeezed out by impatient drivers, etc.&lt;/p&gt;&lt;p&gt;I also drive. When I do, and there&#039;s a bicycle in front of me, I
pause, and as the world broils to death, I take a moment to be
thankful for their presence, and to think about how we could change
the shape of the terrain to allow bicyclists to participate more
safely (which would also help me drive more easily too, or choose to
bike when I can).&lt;/p&gt;&lt;p&gt;May we not give up on ourselves, and not lose faith in our ability to
participate towards building a better world.&lt;/p&gt;&lt;/div&gt;</description>
            <pubDate>Sat, 18 Jul 2026 04:44:14 +0000</pubDate>
            <guid>https://dustycloud.org/blog/faulty-towers-vibe-sickness-and-the-vibe-bobsled/</guid>
        </item>
        <item>
            <title>Zig Creator Calls Spade a Spade, Anthropic Blows Smoke</title>
            <link>https://raymyers.org/post/zed-creator-calls-spade-a-spade/</link>
            <description>&lt;blockquote&gt;&amp;quot;In the AI bubble, we are pressured to build things nobody wants, poorly. Pop the bubble.&amp;quot;&lt;hr&gt;&lt;/blockquote&gt;&lt;div&gt;	&lt;a href=&quot;/post/zig-creator-calls-spade-a-spade&quot;&gt;Redirecting from &lt;code&gt;/post/zed-creator-calls-spade-a-spade/&lt;/code&gt; to &lt;code&gt;/post/zig-creator-calls-spade-a-spade&lt;/code&gt;&lt;/a&gt;&lt;/div&gt;</description>
            <pubDate>Mon, 13 Jul 2026 09:29:25 +0000</pubDate>
            <guid>https://raymyers.org/post/zed-creator-calls-spade-a-spade/</guid>
        </item>
        <item>
            <title>Garbage for humans</title>
            <link>https://unstory.eu/zye/</link>
            <description>&lt;blockquote&gt;&lt;hr&gt;&lt;/blockquote&gt;&lt;div&gt;
&lt;header&gt;
&lt;p&gt;&lt;a href=&quot;/&quot;&gt;unstory&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;If this is the solution, I want my problem back.&lt;/p&gt;
&lt;/header&gt;
&lt;main&gt;
&lt;article&gt;
&lt;header&gt;

&lt;time datetime=&quot;2026-06-29T01:49:08Z&quot;&gt;2026-06-29 01:49&lt;/time&gt;
&lt;/header&gt;
&lt;p&gt;Few months ago Cloudflare introduced Markdown for machines:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;As a business, to continue to stay ahead, now is the time to consider not just human visitors, or traditional wisdom for SEO-optimization, but start to treat agents as first-class citizens.&lt;/p&gt;&lt;/blockquote&gt;
&lt;blockquote&gt;&lt;p&gt;Feeding raw HTML to an AI is like paying by the word to read packaging instead of the letter inside.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;You get HTML, trackers, cookie banners, popups, and JavaScript. This needs a browser built by thousands of engineers just to show you a paragraph.&lt;/p&gt;
&lt;p&gt;Machines get the clean version.&lt;/p&gt;
  &lt;/article&gt;
&lt;/main&gt;

&lt;/div&gt;</description>
            <pubDate>Sat, 11 Jul 2026 06:31:20 +0000</pubDate>
            <guid>https://unstory.eu/zye/</guid>
        </item>
    </channel>
</rss>
