<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Geir&apos;s Everything</title>
    <description>Philosophy - Sciences - Geekery - Art - Life - Coaching - Fun &lt; Simplify Everything</description>
    <link>https://isene.org/</link>
    <atom:link href="nathanrooy.github.io/feed.xml" rel="self" type="application/rss+xml"/>
    <pubDate>Sun, 26 Jul 2026 14:51:43 +0000</pubDate>
    <lastBuildDate>Sun, 26 Jul 2026 14:51:43 +0000</lastBuildDate>
    <generator>Jekyll v3.10.0</generator>
      
    
    <item>
        <title>Stars and particles</title>
        <description>&lt;p&gt;&lt;img src=&quot;/assets/posts/fe2o3-science.png&quot; alt=&quot;Stars and particles&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Yesterday I posted &lt;a href=&quot;/2026/07/Five-New-Rust-Tools.html&quot;&gt;five new tools&lt;/a&gt;. Today there are two more, and they are both science.&lt;/p&gt;

&lt;p&gt;My mother got me going when I was 8. She pointed to the sky just above the apartment building where we lived (Tveita, Oslo) and said, “Do you see those three stars up there? That’s the belt of Orion”. I was hooked. Four years later I was hanging out at Oslo University bugging professors in astrophysics with questions about the cosmos. Then I got into particle physics and started pestering professors at the physics campus as well.&lt;/p&gt;

&lt;p&gt;Together the two new apps cover about 36 orders of magnitude. Betelgeuse is 500 light-years out. A quark is smaller than an attometre. Both fit in a terminal.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/posts/fe2o3-logo-stars.svg&quot; align=&quot;left&quot; width=&quot;150&quot; /&gt;&lt;/p&gt;

&lt;h2 id=&quot;stars&quot;&gt;stars&lt;/h2&gt;

&lt;p&gt;The Hertzsprung-Russell diagram. Temperature across, luminosity up. Stars land where their physics puts them, and the shape that falls out of that is the main sequence, running diagonally from the hot blue stars down to the cool red dwarfs.&lt;/p&gt;

&lt;p&gt;&lt;br clear=&quot;all&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/posts/fe2o3-stars.png&quot; alt=&quot;stars&quot; /&gt;&lt;/p&gt;

&lt;p&gt;461 named stars from the HYG catalog. Walk the diagram cell by cell with the arrow keys. Several stars often share one cell, so &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Tab&lt;/code&gt; cycles them and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Enter&lt;/code&gt; lists them all. Each one brings its numbers and its full Wikipedia article, cached locally.&lt;/p&gt;

&lt;p&gt;Press &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;t&lt;/code&gt; and a schematic evolutionary track is laid over the plot: 1, 5 or 15 solar masses, with every stage named below. Up the giant branch, back across the top at constant brightness while the core burns out, then down and left onto the white dwarf cooling track. The one solar mass track is the Sun’s future.&lt;/p&gt;

&lt;p&gt;Measured values come from Wikidata. The rest are derived from spectral type and absolute magnitude, and one color mode paints the diagram by which is which.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/posts/fe2o3-logo-particles.svg&quot; align=&quot;right&quot; width=&quot;150&quot; /&gt;&lt;/p&gt;

&lt;h2 id=&quot;particles&quot;&gt;particles&lt;/h2&gt;

&lt;p&gt;The Standard Model. Seventeen fundamental particles, three generations of quarks and leptons, the four force carriers, the Higgs, plus the proton and neutron they build.&lt;/p&gt;

&lt;p&gt;&lt;br clear=&quot;all&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/posts/fe2o3-particles.png&quot; alt=&quot;particles&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Mass, charge, spin, color charge, which of the four forces it feels, its antiparticle, the year it was found. The neutrinos only have upper limits.&lt;/p&gt;

&lt;p&gt;Then press &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Tab&lt;/code&gt; and it takes a carbon atom apart. Four levels, each labelled with its real size. The atom, almost entirely empty. The nucleus, six protons and six neutrons. One proton. One quark.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/posts/fe2o3-particles-proton.png&quot; alt=&quot;a proton&quot; /&gt;&lt;/p&gt;

&lt;p&gt;That is a proton: three valence quarks, red, green and blue, held by gluon flux tubes, in a haze of virtual pairs. The quarks account for about 1% of its mass. The rest is the energy of the field itself.&lt;/p&gt;

&lt;p&gt;One level down you try to pull a quark out. The string stretches, stores energy, and snaps into a new quark-antiquark pair. You end up holding two mesons. You never get a free quark.&lt;/p&gt;

&lt;p&gt;It rotates with the arrow keys. There is no animation loop, so a still model costs nothing. Drawn in braille, eight sub-pixels per character cell.&lt;/p&gt;

&lt;h2 id=&quot;summary&quot;&gt;Summary&lt;/h2&gt;

&lt;p&gt;Two apps, both built today with &lt;a href=&quot;https://claude.com/claude-code&quot;&gt;Claude&lt;/a&gt;. “particles” was an Opus 5 one-shot from a rather slim prompt (but with knowledge drawn from “stars” and “elements”). Same rules as the rest of the suite: a single static binary, instant start, zero cost when idle.&lt;/p&gt;

&lt;p&gt;Both fetch once and then work offline. Press &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;c&lt;/code&gt; and ask Claude about whatever is on screen, with the data and the article as context.&lt;/p&gt;

&lt;p&gt;Public Domain, like &lt;a href=&quot;/2026/04/MyTools.html&quot;&gt;everything I make&lt;/a&gt;.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/isene/stars&quot;&gt;stars&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/isene/particles&quot;&gt;particles&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;hr /&gt;

&lt;p&gt;Link to this post: https://isene.org/2026/07/Stars-And-Particles.html&lt;/p&gt;
</description>
        <pubDate>Sun, 26 Jul 2026 00:00:00 +0000</pubDate>
        
        <link>/2026/07/Stars-And-Particles.html</link>
          
        
            <category>Geekery</category>
        
            <category>Technology</category>
        
          
        
          
      </item>
    
    <item>
        <title>Five new Rust tools</title>
        <description>&lt;p&gt;&lt;img src=&quot;/assets/posts/fe2o3-new.png&quot; alt=&quot;Five new Fe2O3 tools&quot; /&gt;&lt;/p&gt;

&lt;p&gt;I keep building the tools I use. I know, the world doesn’t need another calculator, but I do. My &lt;a href=&quot;https://isene.org/fe2o3/&quot;&gt;Fe₂O₃ suite&lt;/a&gt; of Rust terminal tools has swallowed almost everything I run in a day. Over the last five weeks it got five new members.&lt;/p&gt;

&lt;p&gt;I have an itch. I scratch. Or I get an urge, and by evening it was a binary in &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;~/bin&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/posts/fe2o3-logo-elements.svg&quot; align=&quot;left&quot; width=&quot;150&quot; /&gt;&lt;/p&gt;

&lt;h2 id=&quot;elements&quot;&gt;elements&lt;/h2&gt;

&lt;p&gt;The periodic table in the terminal. All 118 of them, plus the hypothesized ones out to 126 that nobody has made yet. Move with the arrow keys. Every element brings its full Wikipedia article, cached locally. No browser, no network, snappy.&lt;/p&gt;

&lt;p&gt;&lt;br clear=&quot;all&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/posts/fe2o3-elements.png&quot; alt=&quot;elements&quot; /&gt;&lt;/p&gt;

&lt;p&gt;The colors are the fun part. Eight modes recolor the whole table: category, phase, block, electronegativity, melting point, density. My favourite is cosmic origin, which paints each element by how it came into existence. Hydrogen and helium from the Big Bang. Carbon and lead from dying stars. Gold and platinum from neutron stars colliding. The heavy end made by us. You can see the history of the universe in one screen of colored squares.&lt;/p&gt;

&lt;p&gt;Press &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;c&lt;/code&gt; and you get &lt;a href=&quot;https://claude.com/claude-code&quot;&gt;Claude&lt;/a&gt; in the pane, with that element’s data and article as context. I asked why Osmium is so dense and got lanthanide contraction, relativistic orbitals and hexagonal packing… a better answer than I would have found on my own.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/posts/fe2o3-logo-rpnx.svg&quot; align=&quot;right&quot; width=&quot;150&quot; /&gt;&lt;/p&gt;

&lt;h2 id=&quot;rpnx&quot;&gt;rpnx&lt;/h2&gt;

&lt;p&gt;The HP-41 grabbed me when I was a young teen and just wouldn’t let go. Reverse Polish Notation has no &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;=&lt;/code&gt; and no parentheses. You push values on a stack and the operators act on what is there. Once that is in your fingers, everything else feels like extra typing… no parenthesis and you see every intermediate result.&lt;/p&gt;

&lt;p&gt;&lt;br clear=&quot;all&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/posts/fe2o3-rpnx.png&quot; alt=&quot;rpnx&quot; /&gt;&lt;/p&gt;

&lt;p&gt;The X/Y/Z/T stack, Last X, the full math, trig, log, stats and base-conversion set. It also runs &lt;a href=&quot;https://github.com/isene/xrpn&quot;&gt;XRPN&lt;/a&gt; programs, so my old HP-41 FOCAL code still executes. The calculation engine is a shared crate. The terminal version and the one on my phone give identical answers.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/posts/fe2o3-logo-typo.svg&quot; align=&quot;left&quot; width=&quot;150&quot; /&gt;&lt;/p&gt;

&lt;h2 id=&quot;typo&quot;&gt;typo&lt;/h2&gt;

&lt;p&gt;A touch typing tutor. It’s idiotic that I still can’t touch type at the age of 59. This app is long overdue for me. Eight lessons, home row to full sentences. Strict mode, live WPM and accuracy, personal bests. It knows the US and Norwegian layouts. Here æ, ø and å get their own drills.&lt;/p&gt;

&lt;p&gt;&lt;br clear=&quot;all&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/posts/fe2o3-typo.png&quot; alt=&quot;typo&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Strict means the drill does not move until you hit the right key. No skipping ahead, no fudging the numbers. Typing is the one interface I use for everything, so it needs sharpening.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/posts/fe2o3-logo-melody.svg&quot; align=&quot;right&quot; width=&quot;150&quot; /&gt;&lt;/p&gt;

&lt;h2 id=&quot;melody&quot;&gt;melody&lt;/h2&gt;

&lt;p&gt;A piano roll in the terminal. Put notes down, jam freely on the keyboard, or record against a metronome. What you play is quantized to the grid. Then tweak each note’s pitch, length and strength until the line sits right.&lt;/p&gt;

&lt;p&gt;&lt;br clear=&quot;all&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/posts/fe2o3-melody.png&quot; alt=&quot;melody&quot; /&gt;&lt;/p&gt;

&lt;p&gt;It exports a clean WAV, which is the whole point. I sketch a melody here and hand it to something bigger to build a real track around. No audio library. Notes are synthesised to raw PCM and streamed to whatever player is on the system. The WAV file is written by hand. The sound device only wakes when something actually plays.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/posts/fe2o3-logo-fonts.svg&quot; align=&quot;left&quot; width=&quot;150&quot; /&gt;&lt;/p&gt;

&lt;h2 id=&quot;fonts&quot;&gt;fonts&lt;/h2&gt;

&lt;p&gt;A font picker that shows you the actual font, in your terminal. Every family on the system, rendered in its own typeface as you move down the list.&lt;/p&gt;

&lt;p&gt;&lt;br clear=&quot;all&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/posts/fe2o3-fonts.png&quot; alt=&quot;fonts&quot; /&gt;&lt;/p&gt;

&lt;p&gt;It exists because I was tired of running xfontsel or guessing from names. It hands back the family and point size. My editor &lt;a href=&quot;https://github.com/isene/scribe&quot;&gt;scribe&lt;/a&gt; calls it as a picker, the way it calls &lt;a href=&quot;https://github.com/isene/prism&quot;&gt;prism&lt;/a&gt; for colors. The preview in that screenshot is the &lt;a href=&quot;/2026/07/A-Font-For-Amar.html&quot;&gt;Amar font&lt;/a&gt; Claude made for my role-playing world.&lt;/p&gt;

&lt;h2 id=&quot;summary&quot;&gt;Summary&lt;/h2&gt;

&lt;p&gt;Five tools, five weeks, all built with &lt;a href=&quot;https://claude.com/claude-code&quot;&gt;Claude&lt;/a&gt; in the evenings. Each is a single static binary. It starts instantly and burns nothing while it waits. That is the rule the whole suite obeys: when idle, it does NOTHING. No timers, no polling, no wakeups.&lt;/p&gt;

&lt;p&gt;All of it is Public Domain, like &lt;a href=&quot;/2026/04/MyTools.html&quot;&gt;everything I make&lt;/a&gt;. Take it, fork it, or ignore it.&lt;/p&gt;

&lt;p&gt;Software built for everyone fits everyone a little. This fits one person exactly. That person can be you too, if you build your own.&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;Link to this post: https://isene.org/2026/07/Five-New-Rust-Tools.html&lt;/p&gt;
</description>
        <pubDate>Sat, 25 Jul 2026 00:00:00 +0000</pubDate>
        
        <link>/2026/07/Five-New-Rust-Tools.html</link>
          
        
            <category>Geekery</category>
        
            <category>Technology</category>
        
          
        
          
      </item>
    
    <item>
        <title>A font for Amar</title>
        <description>&lt;p&gt;&lt;img src=&quot;/assets/posts/amarfont.png&quot; alt=&quot;A font for Amar&quot; /&gt;&lt;/p&gt;

&lt;p&gt;For a couple of years I have used one task as my litmus test for AI models: Create a fantasy font suitable for &lt;a href=&quot;http://d6gaming.org&quot;&gt;the Kingdom of Amar&lt;/a&gt;, my role-playing world. I want a TTF file I can install and write with. Every model has failed. Say hello to Fable.&lt;/p&gt;

&lt;p&gt;Why is this hard? A font is pure geometry. The model must place every point of every letter by numbers, blind. It cannot look at what it draws. If the leg of the R lands wrong, the R is broken. And a font is a hundred glyphs that must also look like family.&lt;/p&gt;

&lt;p&gt;Here is what Opus 4.7 delivered in December:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/posts/amarfont-opus.png&quot; alt=&quot;The Opus 4.7 attempt&quot; /&gt;&lt;/p&gt;

&lt;p&gt;There is no font here. It painted a PICTURE of an alphabet and declared victory. The S is in two pieces, the small r lost its arm, the 3 and the 5 fell apart. Opus 4.8 was not much better.&lt;/p&gt;

&lt;p&gt;Today I handed the same task to &lt;a href=&quot;https://claude.com/claude-code&quot;&gt;Claude&lt;/a&gt;  &lt;a href=&quot;https://www.anthropic.com/news/claude-fable-5-mythos-5&quot;&gt;Fable 5&lt;/a&gt;. It read up on the Amar world and picked a chisel-cut style, like letters carved in stone. Then he wrote a program that outputs a real TTF, rendered a specimen sheet, looked at his own work and fixed what he did not like. Then he installed the font on my machine and showed me this:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/posts/amarfont-chisel.png&quot; alt=&quot;Amar - the chisel-cut font&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Runes with diamond accents. Every letter solid, consistent and readable. This is an actual font. But straight strokes are the easy part of type design, so I raised the bar: make me a more Celtic one, one that is even more suitable to the Kingdom of Amar.&lt;/p&gt;

&lt;p&gt;Minutes later I had an uncial font in the style of the Book of Kells. Curved strokes drawn with a simulated broad-nib pen. Thick verticals, thin horizontals, wedge serifs. Even the old insular letterforms are there; the g is the flat-topped squiggle the monks actually wrote:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/posts/amarfont-celtic.png&quot; alt=&quot;Amar Celtic - the uncial font&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Both fonts are Public Domain, like &lt;a href=&quot;/2026/04/MyTools.html&quot;&gt;everything I make&lt;/a&gt;. My litmus test finally has a passing grade. Now I need a new test.&lt;/p&gt;

&lt;p&gt;Got any ideas?&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;Link to this post: https://isene.org/2026/07/A-Font-For-Amar.html&lt;/p&gt;
</description>
        <pubDate>Thu, 16 Jul 2026 00:00:00 +0000</pubDate>
        
        <link>/2026/07/A-Font-For-Amar.html</link>
          
        
            <category>Geekery</category>
        
            <category>Technology</category>
        
            <category>Amar RPG</category>
        
          
        
          
      </item>
    
    <item>
        <title>The Freedom Proof in four minutes</title>
        <description>&lt;p&gt;&lt;img src=&quot;/assets/posts/freedomproof.jpg&quot; alt=&quot;The Freedom Proof&quot; /&gt;&lt;/p&gt;

&lt;p&gt;I have spent more than forty years researching free will and several years on &lt;a href=&quot;https://isene.com/freewill/&quot;&gt;the Freedom Proof&lt;/a&gt;, a mathematical argument that free will grounds existence. There is a &lt;a href=&quot;https://isene.com/freewill/&quot;&gt;presentation&lt;/a&gt;, an &lt;a href=&quot;https://philpapers.org/rec/ISEAMF&quot;&gt;academic paper&lt;/a&gt; and a &lt;a href=&quot;/2026/07/The-Selection-Gap.html&quot;&gt;companion paper on Petri nets&lt;/a&gt;. Heavy stuff that could use a simple introduction.&lt;/p&gt;

&lt;p&gt;So I made a four minute track. It walks the whole argument in plain words. Everything that exists has properties. Where do the basic properties come from? Gödel proved no formal system can ground itself. Existence is such a system. So the grounding must come from outside, from something without properties. Pure potential. And for existence to hold together, that potential must deliberately choose. That choosing is free will.&lt;/p&gt;

&lt;p&gt;No math or belief needed.&lt;/p&gt;

&lt;p&gt;Then I turned the track into a video. Ten images, slow pans, the spoken words as captions.&lt;/p&gt;

&lt;div class=&quot;youtube-wrapper&quot;&gt;
  &lt;iframe src=&quot;https://www.youtube.com/embed/O_sQb2_KaHQ&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;p&gt;If the four minutes leave you wanting the full argument, it is all at &lt;a href=&quot;https://isene.com/freewill/&quot;&gt;isene.com/freewill&lt;/a&gt;.&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;Link to this post: https://isene.org/2026/07/The-Freedom-Proof.html&lt;/p&gt;
</description>
        <pubDate>Mon, 13 Jul 2026 00:00:00 +0000</pubDate>
        
        <link>/2026/07/The-Freedom-Proof.html</link>
          
        
            <category>Philosophy</category>
        
            <category>Music</category>
        
          
        
          
      </item>
    
    <item>
        <title>Frame - the first Linux Assembly X server</title>
        <description>&lt;p&gt;&lt;img src=&quot;/assets/posts/framestack.png&quot; alt=&quot;Frame&quot; /&gt;&lt;/p&gt;

&lt;p&gt;On my quest to &lt;a href=&quot;/2026/04/MyTools.html&quot;&gt;own my software&lt;/a&gt;, one foundational piece kept itching… the X server. The underlying graphics engine, the thing that puts pixels on the screen. &lt;a href=&quot;https://www.x.org/&quot;&gt;X11&lt;/a&gt; is 4 million lines of code, a beast very few can claim they understand. So I did the reasonable thing. I wrote my own, in Assembly.&lt;/p&gt;

&lt;p&gt;It is called &lt;a href=&quot;https://github.com/isene/frame&quot;&gt;frame&lt;/a&gt;. No dependencies, no libraries, no garbage collector. No hot paths, no unnecessary wakeups. When it is idle, it sits still. It shuts up unless spoken to. My kind of software. It clocks in at some 20 thousand lines, and it already runs my whole desktop plus Firefox and &lt;a href=&quot;/2026/07/Fable-to-the-Rescue.html&quot;&gt;GIMP&lt;/a&gt; whenever I need that. It is still young, and there is a long list of X protocol left to chew through. But it boots, it draws, and I am typing this on it.&lt;/p&gt;

&lt;p&gt;So the stack now looks like this: The Linux kernel at the bottom. On top of that, frame. Then the window manager &lt;a href=&quot;https://github.com/isene/tile&quot;&gt;tile&lt;/a&gt; with the info bar &lt;a href=&quot;https://github.com/isene/tile&quot;&gt;strip&lt;/a&gt;. Inside tile runs the terminal &lt;a href=&quot;https://github.com/isene/glass&quot;&gt;glass&lt;/a&gt;, and in glass lives the shell &lt;a href=&quot;https://github.com/isene/bare&quot;&gt;bare&lt;/a&gt;. &lt;a href=&quot;https://github.com/isene/bolt&quot;&gt;Bolt&lt;/a&gt; has been promoted from screen locker to greeter, showing gdm the door. All of it Assembly. All of &lt;a href=&quot;https://isene.org/chasm/&quot;&gt;CHasm&lt;/a&gt; together is about 100 thousand lines. The stack it replaced (gdm, X11, i3, conky, wezterm, zsh) is somewhere north of fifty times that. I did it for the &lt;a href=&quot;/2026/05/Baseline.html&quot;&gt;battery life&lt;/a&gt;. I am not sure this laptop has a fan anymore. Except me.&lt;/p&gt;

&lt;p&gt;Today I put numbers on it. Idle on battery, frame and Xorg pull the same watts, because the panel and the wifi own that number anyway. But Xorg burns almost three times the CPU that frame needs to do nothing. And tile and glass used zero milliseconds over three minutes of measuring. The desktop sits completely still until I touch it.&lt;/p&gt;

&lt;p&gt;Beyond the desktop I have my &lt;a href=&quot;https://isene.org/fe2o3/&quot;&gt;Fe₂O₃ suite&lt;/a&gt; of Rust tools, which by now has replaced everything else I used to run. Except Firefox. That is the last GUI standing that I regularly use. The rest is terminal interfaces with the same keybindings everywhere, and a fraction of the size and electrical appetite of what they replaced.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/posts/framescrot.png&quot; alt=&quot;Frame screenshot&quot; /&gt;&lt;/p&gt;

&lt;p&gt;But is it stable? Stable enough that I daily-drive it, write this post on it, and only occasionally yell. When something breaks or I want a feature, I turn to my buddy &lt;a href=&quot;https://claude.com/claude-code&quot;&gt;Claude&lt;/a&gt; and describe the itch. He never gets tired, is not opinionated, and turns out to be a really good teacher. I now know more about hardware layers, cursor painting, GPU handoffs and event watchers than I ever planned to.&lt;/p&gt;

&lt;p&gt;The &lt;a href=&quot;/2026/05/Nomad.html&quot;&gt;phone got the same treatment&lt;/a&gt;, with my own launcher, a daily personalized news digest and a pile of apps tailored for an audience of exactly one.&lt;/p&gt;

&lt;p&gt;The upside is simple. I have what I need and want. I control and own the software, and all of it is given to the Public Domain. Software designed for a large audience fits everyone a little. This fits one person exactly.&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;Link to this post: https://isene.org/2026/07/Frame.html&lt;/p&gt;
</description>
        <pubDate>Mon, 06 Jul 2026 00:00:00 +0000</pubDate>
        
        <link>/2026/07/Frame.html</link>
          
        
            <category>Geekery</category>
        
            <category>Technology</category>
        
          
        
          
      </item>
    
    <item>
        <title>The Selection Gap</title>
        <description>&lt;p&gt;&lt;img src=&quot;/assets/posts/petrinets.png&quot; alt=&quot;The Selection Gap&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Back in my consulting days I toyed with &lt;a href=&quot;https://en.wikipedia.org/wiki/Petri_net&quot;&gt;Petri nets&lt;/a&gt; to map business processes. Circles hold tokens, bars fire, tokens move. It could be used for finding bottlenecks. I never could find any serious application for them, filed them under useful engineering and moved on.&lt;/p&gt;

&lt;p&gt;For years I have worked on &lt;a href=&quot;https://isene.com/freewill/&quot;&gt;the Freedom Proof&lt;/a&gt;, a mathematical argument that free will grounds existence. Recently I got the hunch that there could be a connection here to explore.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/posts/petri.png&quot; alt=&quot;Petri Nets&quot; /&gt;&lt;/p&gt;

&lt;p&gt;A Petri net is a lawful system. The firing rule is completely formal. Without any randomness. There are no hidden knobs and no observer obscuring the clean machine. A transition fires when every input place holds a token. It eats one token per input arc and drops one on each output:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/posts/petri-firing.png&quot; alt=&quot;The firing rule&quot; /&gt;&lt;/p&gt;

&lt;p&gt;But put one token in front of two transitions and both are ready to fire. Firing one kills the other. Net theory calls this a conflict. The theory refuses to pick. Both continuations are lawful. The math maps the choice point with full rigor and leaves the choosing open. It cannot be closed from inside. The choosing must lie outside the system.&lt;/p&gt;

&lt;p&gt;That gives a clean result: lawful does not necessarily mean determined. A fully law-governed system can have a branching, undetermined future. Determinism was always an extra, hidden assumption on top of the laws.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/posts/petri-unfolding.png&quot; alt=&quot;The unfolding: every lawful run, one actual history&quot; /&gt;&lt;/p&gt;

&lt;p&gt;All the lawful runs of a net form one branching tree. The actual history is one path through it. The math describes the whole tree and stays silent on which path gets to be real.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/2026/04/TEG.html&quot;&gt;Gödel&lt;/a&gt; shows the laws cannot ground themselves. Petri shows the laws cannot select the history. Two gaps, and the Freedom Proof fills both with the same answer: choice.&lt;/p&gt;

&lt;p&gt;I searched the literature, fanning out a bunch of AI agents, and found nobody who has made this argument before. So I wrote it up, with proper figures and also a section on what it does NOT prove. The paper is on &lt;a href=&quot;https://philpapers.org/rec/ISETSG&quot;&gt;PhilPapers&lt;/a&gt; and as a &lt;a href=&quot;https://isene.com/freewill/TEG-PetriNets.pdf&quot;&gt;PDF on my site&lt;/a&gt;.&lt;/p&gt;

&lt;h2 id=&quot;and-of-course-there-is-an-app&quot;&gt;And of course there is an app&lt;/h2&gt;

&lt;p&gt;I could not write about token games without building one. &lt;a href=&quot;https://github.com/isene/petri&quot;&gt;petri&lt;/a&gt; is a terminal Petri net player, part of my &lt;a href=&quot;https://isene.org/fe2o3/&quot;&gt;Fe₂O₃ suite&lt;/a&gt; of Rust tools. Describe a net in a few lines of plain text. Fire transitions by hand, or let a random run resolve the conflicts while a trace shows the path you got. It hunts deadlocks for you too. Conflicts are marked with ‼. That is the exact spot where the system hands you the choice.&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;Link to this post: https://isene.org/2026/07/The-Selection-Gap.html&lt;/p&gt;
</description>
        <pubDate>Fri, 03 Jul 2026 00:00:00 +0000</pubDate>
        
        <link>/2026/07/The-Selection-Gap.html</link>
          
        
            <category>Geekery</category>
        
            <category>Philosophy</category>
        
            <category>Technology</category>
        
          
        
          
      </item>
    
    <item>
        <title>Fable to the rescue</title>
        <description>&lt;p&gt;&lt;img src=&quot;/assets/posts/fable.png&quot; alt=&quot;Fable to the rescue&quot; /&gt;&lt;/p&gt;

&lt;p&gt;On my quest to &lt;a href=&quot;/2026/04/MyTools.html&quot;&gt;own my software&lt;/a&gt;, I am in the process of adding an X server to &lt;a href=&quot;https://isene.org/chasm/&quot;&gt;CHasm&lt;/a&gt;. That means reducing the 4M lines of code in &lt;a href=&quot;https://www.x.org/&quot;&gt;X11&lt;/a&gt; to the exact set of functionality I need in a fraction of the size and in pure Assembly. I spent the weekend getting a functional X server running but then hit a wall. After getting &lt;a href=&quot;https://www.gimp.org/&quot;&gt;GIMP&lt;/a&gt; to run on &lt;a href=&quot;https://github.com/isene/frame&quot;&gt;frame&lt;/a&gt;, there were serious issues with getting menus and popup windows working. And for three evenings I kept &lt;a href=&quot;https://claude.com/claude-code&quot;&gt;Claude Code&lt;/a&gt; Opus 4.8 banging its virtual head against that wall in the hope of smashing through. Tons of prompts, lots of angles. But no luck.&lt;/p&gt;

&lt;p&gt;Then we got &lt;a href=&quot;https://www.anthropic.com/news/claude-fable-5-mythos-5&quot;&gt;Fable 5&lt;/a&gt; back online, and with a few hours tonight the wall dissipated. GIMP is running nicely, tray icons in &lt;a href=&quot;https://github.com/isene/tile&quot;&gt;strip&lt;/a&gt; are showing and are functional. It seems I will be getting my own X server after all. Say what you will, but Fable is pretty fab.&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;Link to this post: https://isene.org/2026/07/Fable-to-the-Rescue.html&lt;/p&gt;
</description>
        <pubDate>Thu, 02 Jul 2026 00:00:00 +0000</pubDate>
        
        <link>/2026/07/Fable-to-the-Rescue.html</link>
          
        
            <category>Geekery</category>
        
            <category>Technology</category>
        
          
        
          
      </item>
    
    <item>
        <title>Simpler</title>
        <description>&lt;p&gt;&lt;img src=&quot;/assets/posts/simpler.png&quot; alt=&quot;Simpler&quot; /&gt;&lt;/p&gt;

&lt;p&gt;I started programming on calculators in the late 70s. Always fascinated with the &lt;a href=&quot;https://isene.org/hp-41/&quot;&gt;HP-41&lt;/a&gt; that came out in the 80s. Did a huge number of projects on that beauty, including lots of Assembly programming. That led me to create the &lt;a href=&quot;https://github.com/isene/xrpn&quot;&gt;XRPN programming language&lt;/a&gt; back in 2022 - an extension to the RPN language of the HP-41.&lt;/p&gt;

&lt;p&gt;But I have been toying with the idea of a really simple programming language since the mid 90s. A week ago this idea came creeping back in and bit me.&lt;/p&gt;

&lt;p&gt;Since a while now I have been &lt;a href=&quot;/2026/06/Office.html&quot;&gt;replacing the tools I depend on&lt;/a&gt; with tools I control. A &lt;a href=&quot;https://isene.org/chasm/&quot;&gt;desktop in assembly&lt;/a&gt;, a &lt;a href=&quot;https://isene.org/fe2o3/&quot;&gt;shelf of Rust programs&lt;/a&gt;, &lt;a href=&quot;/2026/05/Nomad.html&quot;&gt;lots of phone apps&lt;/a&gt;. Through all of it I’ve had one buddy: &lt;a href=&quot;https://claude.com/claude-code&quot;&gt;Claude Code&lt;/a&gt;. I describe a change, it writes the code, and the itch is usually gone before I finish the sentence. I program in English these days.&lt;/p&gt;

&lt;p&gt;So I write a great deal of code with an AI now. And every language I write it in, Rust, Ruby, Kotlin, was designed for a human to read and recall. The AI is fluent in them because it has read millions of examples. It made me wonder what a language would look like if it were built, from the first line, for the AI to write rather than for me to remember.&lt;/p&gt;

&lt;p&gt;So I built one. It is called &lt;a href=&quot;https://github.com/isene/simpler&quot;&gt;Simpler&lt;/a&gt;, and its only goal is to be simple.&lt;/p&gt;

&lt;h2 id=&quot;the-whole-language-fits-in-the-prompt&quot;&gt;The whole language fits in the prompt&lt;/h2&gt;

&lt;p&gt;An AI writes good code in a mature language by recalling the right idiom out of the ten thousand it has seen. It has seen none of mine. So the one thing that matters is whether the entire language fits in the prompt at once. Make it small enough and Claude holds all of it in its head. That makes for less guessing.&lt;/p&gt;

&lt;p&gt;Simpler’s surface is tiny. Everything is a message send: a field read, a method call, an operator, all the same shape, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;receiver.name(arguments)&lt;/code&gt;. Four pieces of punctuation. Seven operators. A single page of built-in methods. The spec is IT, and you can read the whole thing in one sitting.&lt;/p&gt;

&lt;p&gt;It outputs C and hands that to the system compiler, so it is fast and runs everywhere a C compiler does. No garbage collector, so no pauses and nothing waking up to &lt;a href=&quot;/2026/05/Baseline.html&quot;&gt;burn battery&lt;/a&gt; while the program sits idle. No borrow checker, so there is nothing hard to learn. Effects and permissions live in the function signature, so a function can touch only what it was handed, which kills the most common way AI-written code goes wrong: reaching for something that is not there.&lt;/p&gt;

&lt;h2 id=&quot;it-writes-itself&quot;&gt;It writes itself&lt;/h2&gt;

&lt;p&gt;The compiler is written in Simpler. It compiles its own source into C, that C compiles into a new compiler, and the new compiler compiles the same source again to a byte-for-byte identical result. A language that can reproduce its own compiler exactly is a language that holds together. I started creating it with Rust. Now it builds with no Rust at all.&lt;/p&gt;

&lt;p&gt;On top of that I wrote a handful of real little Unix tools in it: a line numberer, a CSV column summer, a word-frequency counter, a sorter, an averager.&lt;/p&gt;

&lt;h2 id=&quot;the-test&quot;&gt;The test&lt;/h2&gt;

&lt;p&gt;Then I ran the one test I cared about. I gave an AI nothing but the spec, one file, with no sight of the compiler and no sight of a single example, and asked it to write a small statistics tool: count, min, max and mean of the numbers you feed it. It compiled and ran correctly the first time. It even handed back an honest list of the few places the spec had left it guessing, and I folded those back in.&lt;/p&gt;

&lt;p&gt;The spec was enough. That was the whole idea. The language is small enough that an AI can learn all of it from one page and write it correctly, with nothing memorised in advance. Leaning on NO training for that language.&lt;/p&gt;

&lt;h2 id=&quot;why-bother&quot;&gt;Why bother&lt;/h2&gt;

&lt;p&gt;Same reason as all the rest. I would rather understand and own the things I use than rent them. But this one has a twist: I mostly describe what I want now and read what comes back. Simpler is the first tool I have built where I am not really the one meant to write the code. The machine is. I just had to give it a language small enough to hold.&lt;/p&gt;

&lt;p&gt;It is &lt;a href=&quot;https://github.com/isene/simpler&quot;&gt;version 0.1.0&lt;/a&gt;, public domain, and it compiles itself.&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;Link to this post: https://isene.org/2026/06/Simpler.html&lt;/p&gt;
</description>
        <pubDate>Sun, 28 Jun 2026 00:00:00 +0000</pubDate>
        
        <link>/2026/06/Simpler.html</link>
          
        
            <category>Geekery</category>
        
            <category>Technology</category>
        
          
        
          
      </item>
    
    <item>
        <title>Replacing LibreOffice</title>
        <description>&lt;p&gt;&lt;img src=&quot;/assets/posts/office.png&quot; alt=&quot;Replacing LibreOffice&quot; /&gt;&lt;/p&gt;

&lt;p&gt;A few weeks ago, I embarked upon a journey of creating my own &lt;a href=&quot;https://isene.org/chasm/&quot;&gt;desktop environment in pure Assembly&lt;/a&gt;. A &lt;a href=&quot;https://github.com/isene/tile&quot;&gt;tiling window manager&lt;/a&gt;, a &lt;a href=&quot;https://github.com/isene/glass&quot;&gt;terminal&lt;/a&gt;, a &lt;a href=&quot;https://github.com/isene/bare&quot;&gt;shell&lt;/a&gt; with &lt;a href=&quot;/2026/04/Bare.html&quot;&gt;nothing between my keystrokes and the kernel&lt;/a&gt;, all in x86_64 assembly, no libc, the whole desktop measured in kilobytes.&lt;/p&gt;

&lt;p&gt;Then I &lt;a href=&quot;/2026/04/MyTools.html&quot;&gt;replaced my main tools&lt;/a&gt; with my own &lt;a href=&quot;https://www.rust-lang.org/&quot;&gt;Rust&lt;/a&gt; equivalents. An &lt;a href=&quot;https://github.com/isene/kastrup&quot;&gt;email and messaging center&lt;/a&gt;, a new &lt;a href=&quot;https://github.com/isene/scribe&quot;&gt;text editor&lt;/a&gt;, a &lt;a href=&quot;https://github.com/isene/tock&quot;&gt;calendar&lt;/a&gt;, a &lt;a href=&quot;https://github.com/isene/tune&quot;&gt;Spotify player&lt;/a&gt;, an &lt;a href=&quot;https://github.com/isene/astro&quot;&gt;astronomy program&lt;/a&gt;, and &lt;a href=&quot;https://isene.org/fe2o3/&quot;&gt;many more&lt;/a&gt;. One by one, the tools I depend on became tools I control. The tools fit me. I no longer have to adapt to other people’s tools.&lt;/p&gt;

&lt;p&gt;A few days ago I looked at what I still used that was not under my complete control. Two things remained: &lt;a href=&quot;https://www.mozilla.org/firefox/&quot;&gt;Firefox&lt;/a&gt; and &lt;a href=&quot;https://www.libreoffice.org/&quot;&gt;LibreOffice&lt;/a&gt;. Firefox is a mountain to replace. But LibreOffice? That was doable. I now have a system that effectively replaces my use of LibreOffice, or any other office suite.&lt;/p&gt;

&lt;h2 id=&quot;one-viewer-to-rule-them-all&quot;&gt;One viewer to rule them all&lt;/h2&gt;

&lt;p&gt;The centerpiece is &lt;a href=&quot;https://github.com/isene/viewer&quot;&gt;viewer&lt;/a&gt;. Point it at almost any file, a spreadsheet, a document, a slide deck, a PDF, an image, source code, and it renders a clean read-only preview right in the terminal. Tables as aligned columns, documents as flowing text, slide decks as a per-slide outline, images inline. It detects the type and picks the right method, all driven by a small config table. Teaching it a new extension is one line…. no need for a recompile.&lt;/p&gt;

&lt;p&gt;Viewing is half the job. The other half is editing, the bridge to an office suite. From the preview, one key hands the file to the right editor. Spreadsheets open in &lt;a href=&quot;https://github.com/isene/grid&quot;&gt;grid&lt;/a&gt;, my AI-native terminal spreadsheet with a real formula engine, cell colors, and CSV/xlsx/ods support. Text and Markdown open in &lt;a href=&quot;https://github.com/isene/scribe&quot;&gt;scribe&lt;/a&gt;, the editor I &lt;a href=&quot;/2026/05/Scribe.html&quot;&gt;keep growing in two-minute iterations&lt;/a&gt;. Etc.&lt;/p&gt;

&lt;p&gt;I don’t need to open an office GUI. Where a binary format genuinely needs muscle, LibreOffice still runs, but headless and invisible, a silent converter rather than an application I look at. The interface is mine; the format plumbing is borrowed quietly in the background.&lt;/p&gt;

&lt;h2 id=&quot;ai-as-the-editing-layer&quot;&gt;AI as the editing layer&lt;/h2&gt;

&lt;p&gt;The interesting part is editing the formats that have no business being edited as plain text: PowerPoint, Word, Excel, PDF. In viewer, I press one key to open an integrated &lt;a href=&quot;https://claude.com/claude-code&quot;&gt;Claude Code&lt;/a&gt; session seeded with the file. A matching skill activates by type and edits the document in place, preserving its layout. I describe what I want, and the deck or the document changes, structure intact.&lt;/p&gt;

&lt;p&gt;Color is also handled. In scribe I select text, press a key, and &lt;a href=&quot;https://github.com/isene/prism&quot;&gt;prism&lt;/a&gt; (my color picker) opens to set foreground and background. The color lives in the text as a small HTML span, so it shows live while I write. And it survives export. Scribe writes straight to docx and odt with the colors, highlights, and font sizes intact, and to PDF as well.&lt;/p&gt;

&lt;h2 id=&quot;a-practical-example&quot;&gt;A practical example&lt;/h2&gt;

&lt;p&gt;Here is a workflow that, a month ago, would have meant opening Impress. It’s smoother now.&lt;/p&gt;

&lt;p&gt;I want a presentation, based on a template. I run &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;viewer template.pptx&lt;/code&gt;, press edit, and start talking with Claude. We build the deck together. Now and then I want to see how it actually looks, so the editor re-renders the deck to a PDF after each change, and a single &lt;a href=&quot;https://pwmt.org/projects/zathura/&quot;&gt;zathura&lt;/a&gt; window on the next workspace reloads it automatically. I keep talking; the preview keeps updating. The slides take shape on one screen while the conversation happens on the other.&lt;/p&gt;

&lt;p&gt;No office suite was opened. No mouse was involved. I work in the terminal whenever I can. TUI rules.&lt;/p&gt;

&lt;h2 id=&quot;why-bother&quot;&gt;Why bother&lt;/h2&gt;

&lt;p&gt;The same reason as the &lt;a href=&quot;https://isene.org/chasm/&quot;&gt;assembly desktop&lt;/a&gt; and the Rust tools before it. I would rather understand the things I use every day than &lt;a href=&quot;/2026/05/The-Agency-Stack.html&quot;&gt;rent them&lt;/a&gt;. Each replacement is smaller, faster, and &lt;a href=&quot;/2026/05/Baseline.html&quot;&gt;lighter on the battery&lt;/a&gt; than the thing it replaced, and every one of them is mine to change and control. It all rolls up into &lt;a href=&quot;/2026/05/Watt.html&quot;&gt;Watt, the lean desktop project&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The office suite was the last big holdout that fell. Firefox is still standing.&lt;/p&gt;

&lt;p&gt;For now.&lt;/p&gt;
</description>
        <pubDate>Wed, 17 Jun 2026 00:00:00 +0000</pubDate>
        
        <link>/2026/06/Office.html</link>
          
        
            <category>Geekery</category>
        
            <category>Technology</category>
        
          
        
          
      </item>
    
    <item>
        <title>Nomad</title>
        <description>&lt;p&gt;&lt;img src=&quot;/assets/posts/nomad1.png&quot; alt=&quot;nomad - the Fe2O3 mobile suite&quot; /&gt;&lt;/p&gt;

&lt;p&gt;About ten years ago I made my first phone app. It was a simple browser for &lt;a href=&quot;https://d6gaming.org&quot;&gt;d6gaming.org&lt;/a&gt;, the wiki for my &lt;a href=&quot;https://d6gaming.org&quot;&gt;Amar&lt;/a&gt; role-playing game. A glorified web view. It worked, barely, and I never built anything more complex. Real apps — with their own logic, their own data, their own storage on the device always felt like a mountain I wasn’t going to climb.&lt;/p&gt;

&lt;p&gt;Then &lt;a href=&quot;https://isene.org/2026/05/Todo.html&quot;&gt;tasks&lt;/a&gt; happened, in a single evening. And once that mountain turned out to be a tiny hill, I kept walking.&lt;/p&gt;

&lt;p&gt;A few days later I have seven apps on my phone. Tools I actually need. &lt;a href=&quot;https://github.com/isene/nomad/tree/master/apps/tasks&quot;&gt;tasks&lt;/a&gt; and &lt;a href=&quot;https://github.com/isene/nomad/tree/master/apps/hyperlist&quot;&gt;hyperlist&lt;/a&gt; for my Hyperlists. &lt;a href=&quot;https://github.com/isene/nomad/tree/master/apps/relay&quot;&gt;relay&lt;/a&gt;, which forwards my WhatsApp, Messenger, Instagram, SMS and Discord straight into &lt;a href=&quot;https://github.com/isene/kastrup&quot;&gt;kastrup&lt;/a&gt; on the laptop and lets me reply from there. That made it possible to realize my dream from 2007… a true communication hub. And with the app I could finally retire the headless Firefox I’d been babysitting for that.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://github.com/isene/nomad/tree/master/apps/astro&quot;&gt;astro&lt;/a&gt; (an app clone of my astro TUI) tells me when to pull out my scopes and what to view. It covers the weather, the observing conditions and my telescope gear. &lt;a href=&quot;https://github.com/isene/nomad/tree/master/apps/watchit&quot;&gt;watchit&lt;/a&gt; browses films and series and where it streams. &lt;a href=&quot;https://github.com/isene/nomad/tree/master/apps/amardice&quot;&gt;amardice&lt;/a&gt; is a dice roller for Amar that knows the full crit and fumble tables. And finally &lt;a href=&quot;https://github.com/isene/nomad/tree/master/apps/xrpn&quot;&gt;xrpn&lt;/a&gt;, a pocket HP-41 that even runs my old FOCAL programs.&lt;/p&gt;

&lt;p&gt;The trick is that almost none of the interesting code is Kotlin. Kotlin is generall too heavy for my taste. Each app is a thin shell over a shared &lt;strong&gt;Rust core&lt;/strong&gt; — the very same logic that runs the desktop &lt;a href=&quot;https://github.com/isene/fe2o3&quot;&gt;Fe₂O₃&lt;/a&gt; tools, compiled for the phone and bridged into Kotlin with &lt;a href=&quot;https://mozilla.github.io/uniffi-rs/&quot;&gt;UniFFI&lt;/a&gt;. So the phone and the laptop compute the same answers, because they run the same code. The data rides over &lt;a href=&quot;https://syncthing.net&quot;&gt;Syncthing&lt;/a&gt;: my todo list, my telescope &amp;amp; gear catalogue, my calculator programs. No Google account, no cloud middleman, no account at all.&lt;/p&gt;

&lt;p&gt;None of this is on any app store. It may never be. These are built for an audience of one. That’s the whole point. I don’t have to fit my workflow to someone else’s app; the app fits me. When something annoys me, I open &lt;a href=&quot;https://claude.com/claude-code&quot;&gt;Claude Code&lt;/a&gt;, describe the change, and it’s done before the itch is gone.&lt;/p&gt;

&lt;p&gt;Ten years ago a single web-view app was the edge of what I would make. This week it was an afternoon’s idea each. The mountain didn’t move. The tools did.&lt;/p&gt;

&lt;p&gt;The whole suite lives at &lt;a href=&quot;https://isene.org/nomad/&quot;&gt;isene.org/nomad&lt;/a&gt;.&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;Link to this post: https://isene.org/2026/05/Nomad.html&lt;/p&gt;
</description>
        <pubDate>Sun, 31 May 2026 00:00:00 +0000</pubDate>
        
        <link>/2026/05/Nomad.html</link>
          
        
            <category>Geekery</category>
        
            <category>Technology</category>
        
          
        
          
      </item>
    
  </channel>
</rss>
