<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Git on statistical.systems</title>
    <link>https://statistical.systems/tags/git/</link>
    <description>Recent content in Git on statistical.systems</description>
    <image>
      <url>https://statistical.systems/</url>
      <link>https://statistical.systems/</link>
    </image>
    <generator>Hugo -- gohugo.io</generator>
    <language>en-us</language>
    <lastBuildDate>Tue, 22 Sep 2026 00:01:00 -0400</lastBuildDate><atom:link href="https://statistical.systems/tags/git/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Put a Pin on It</title>
      <link>https://statistical.systems/essays/put_a_pin_on_it/</link>
      <pubDate>Tue, 22 Sep 2026 00:01:00 -0400</pubDate>
      
      <guid>https://statistical.systems/essays/put_a_pin_on_it/</guid>
      <description>A ring that stayed in its pocket on the wrong beach, a fig tree people gave directions from long after it fell, and the one file that keeps a website from drifting.</description>
      <content:encoded><![CDATA[<p>A ring stayed in a man&rsquo;s pocket for a whole afternoon because of a caption.</p>
<p>Picture a cove that a travel vlogger found one summer and has not stopped posting about. There are no road signs out there and no street names, so her caption gives the way by what a visitor can see, smell, and hear. Follow the coast road until the whitewashed houses close in on both sides. Turn where the fig tree stands taller than the roofline, its leaves giving off that green, milky smell. Park where the fishermen leave their boats, hulls knocking soft against each other. Walk down to water that goes flat turquoise past the shallows. Salt is on the lips before anyone is even in. That summer, the cove is right where her words said it would be.</p>
<p>The next summer, a stranger sees her post and wants to go. He is bringing the person he means to marry, with the ring in his pocket for one moment at the water&rsquo;s edge. He follows her caption and lands on a different beach entirely. The fig tree came down in a storm. The boats moved to the new marina. A cafe opened where the turn used to be, and the smell of coffee now hangs where the fig leaves were. He assumes the mistake is his, a missed turn or a misread line. So they go back to the coast road and start over, reading her caption one line at a time, and end on the same wrong beach. They search the coast until the light goes. The ring stays in his pocket. The words were never the place. They were landmarks, and landmarks move.</p>
<p>The fig tree is not only in this story. In San Pedro, a district of San José, Costa Rica, directions are often given by landmarks instead of street numbers. A fig tree stood there for more than half a century, and people gave their addresses from it. It fell on its own on May 12, 1991. The directions did not change. People added one word, and for years afterward, addresses in San Pedro began from <em>el antiguo higuerón</em>, the old fig tree: a landmark that was no longer there.</p>
<p>Now picture a pin on the exact spot instead. It is the little marker a maps app leaves on a place someone presses and holds, the way people save where they parked the car. A pin is not a landmark. It is two numbers, a latitude and a longitude, and it does not care whether the tree is still standing. Tap it a year later and the map leads back to the same patch of ground. Put that in the caption. The fig tree can be gone and the cafe new, and he still finds the sand she stood on. That is what a pin is for: a place that can always be found again.</p>
<p>A personal website is a set of directions too: the steps that turn writing into pages a stranger can read. Like the caption, they are only worth something if someone else, or the writer a year later, can follow them and land in the same place. Say you decide to build one of your own. Personal branding, you have heard, means a place on the internet that is yours. Where do you even begin? The tech can feel daunting before you have typed a word. The usual choice is between two options, and each has a catch. You can rent a polished website builder, the way most people do. It is easy, but it costs every month, limits what you can change, and keeps your words on its own servers. Or you can build it yourself, which sounds cheaper and freer. Then you sit down to it and get lost in a sea of software to install, code you cannot read, and updates that break the site months later. Either way, the machine that makes the pages sits out of sight, and most people are happy never to look at it. It works, so why look? Because someday it stops working, and on that day you will want to know what changed. You will not know, because no one ever showed you.</p>
<p>This has really happened. This site is built with Hugo, a free website generator. In 2019, Hugo replaced the part of itself that reads the writing. Anyone who updated Hugo after that got the new part, whether they knew it or not. Some of their pages came out looking different. Worse, the new part hid anything built by hand in raw HTML, the code a browser reads directly, like the figures further down this page, unless one setting was switched on. On an updated Hugo, left as it came, those figures would simply disappear. Picture one of those sites the morning after: its owner opens it, the figures are gone, and not one word has changed. The tool changed under them, and they had kept no way back to the version that worked. The trouble was never in the writing. It was in whether the machine that builds the site holds still, or moves while no one is looking.</p>
<p>I am a statistician, not a software engineer, and when this started I had never heard of Nix or Hugo. My husband wrote the setup, chose a minimal Hugo theme for it, and left a short README to answer the questions he expected me to ask. I typed the commands he gave me and a finished website appeared. What he had handed me was working machinery. I could run it. I could not read it.</p>
<p>That was not enough for me. In my work, a result only counts if someone else can repeat the steps and end in the same place. I keep that rule at home. When I cook Bicol express, my husband&rsquo;s favorite Filipino dish, I follow the recipe I wrote down, so the pot he gets tonight tastes like the one he loved last month. A website I could not repeat was one I could not trust. I also wanted to learn the software side for its own sake, to understand the machinery and not just use it. So I studied it until I could read it, building a plain analogy for each piece as I went.</p>
<h2 id="what-holds-still">What Holds Still</h2>
<p>The machinery behind the page is called the backend. On this site, two tools run it.</p>
<p>The first is <a href="https://gohugo.io/">Hugo</a>. Its own website calls it &ldquo;one of the most popular open-source static site generators.&rdquo; What does that mean to someone who has never built a website? The plainest picture is an old letterpress. To print a single page on a press like that, someone built the page by hand. Each letter was a small metal block, lifted from a tray and set in a row. Thin slivers of lead held the lines apart. The whole block was locked into a frame, inked with a roller, and pressed to the sheet. Then they broke it apart and set the next page, matching it to the one before by eye. Hugo is that press with the hand-setting taken out. I type into a simple text file and mark a few things by hand, a heading here, a link there. Plain text marked up this way is called Markdown. Hugo sets every page, locks it, inks it, and pulls them all out identical. I bring the words. Hugo brings the site, and hands my hours back to writing.</p>
<p>The second is <a href="https://nixos.org/">Nix</a>. Its own website calls it &ldquo;a tool that takes a unique approach to package management and system configuration.&rdquo; A package manager is a program whose job is fetching the other programs a computer needs. That is harder to picture than a press. Nix is nowhere near as well known as Hugo. By its reputation, it is also far harder to learn. But it has few equals at keeping tools from drifting, and here the tool it holds still is Hugo. The cost of learning it is paid once. My husband paid it for me, and he has written up the same setup he handed me on <a href="https://paradigmatic.systems/posts/getting-started-with-hugo/">his own blog</a>, as a guide anyone can follow. After that, Nix asks almost nothing.</p>
<p>Think of how a workshop fills up over the years: tools bought at different times, some worn, some quietly upgraded, a few nobody recognizes anymore, and no record of which is which. Reach for a mallet and whichever one is nearest comes to hand. Most package managers work like that workshop, grabbing the newest version of each tool and leaving it on the machine to age. Nix refuses to. It keeps one written list that names every tool and the model of each. Each time I start, it lays out a fresh bench stocked from that list and nothing else (<code>nix develop</code>), then clears the bench away when I am done. Nothing is left out to age. Nothing updates behind my back. Next year that list lays out an identical bench, down to the last tool.</p>
<div style="max-width:760px;margin:2.4rem auto;padding:1.6rem 1.5rem 1.4rem;background:#14161b;border:1px solid #2b303a;border-radius:14px;color:#e7eaef;font-family:-apple-system,system-ui,sans-serif;line-height:1.5">
<p style="font-family:ui-monospace,'SF Mono',Menlo,monospace;font-size:.66rem;letter-spacing:.15em;text-transform:uppercase;color:#727a86;margin:0 0 .5rem"><i>Figure 1.</i> Personal branding comes down to a website you own</p>
<p style="font-family:Georgia,'Times New Roman',serif;font-weight:600;font-size:2rem;line-height:1.08;letter-spacing:-.01em;margin:0 0 .55rem">One Site, Three Possible Ways</p>
<div style="display:flex;align-items:stretch;gap:.5rem;flex-wrap:wrap;margin:0 0 1.6rem">
<div style="flex:1 1 148px;min-width:0;border:1px solid rgba(87,192,138,.35);background:rgba(87,192,138,.12);border-radius:11px;padding:.7rem .8rem"><p style="font-family:ui-monospace,Menlo,monospace;font-size:.55rem;letter-spacing:.1em;text-transform:uppercase;color:#57c08a;margin:0 0 .3rem">You wrote this</p><p style="font-family:Georgia,serif;font-size:1.04rem;font-weight:600;margin:0;line-height:1.15">The words</p><p style="font-size:.78rem;color:#9aa2ae;margin:.28rem 0 0">A Markdown file you own.</p></div>
<div style="display:flex;align-items:center;justify-content:center;font-family:Georgia,serif;font-size:1.4rem;color:#727a86">+</div>
<div style="flex:1 1 148px;min-width:0;border:1px solid rgba(207,123,114,.4);background:rgba(207,123,114,.12);border-radius:11px;padding:.7rem .8rem"><p style="font-family:ui-monospace,Menlo,monospace;font-size:.55rem;letter-spacing:.1em;text-transform:uppercase;color:#cf7b72;margin:0 0 .3rem">You never see this</p><p style="font-family:Georgia,serif;font-size:1.04rem;font-weight:600;margin:0;line-height:1.15">The machine that runs them</p><p style="font-size:.78rem;color:#9aa2ae;margin:.28rem 0 0">Hidden, and different in each lane.</p></div>
<div style="display:flex;align-items:center;justify-content:center;font-family:Georgia,serif;font-size:1.4rem;color:#727a86">=</div>
<div style="flex:1 1 148px;min-width:0;border:1px solid #2b303a;background:#171a20;border-radius:11px;padding:.7rem .8rem"><p style="font-family:ui-monospace,Menlo,monospace;font-size:.55rem;letter-spacing:.1em;text-transform:uppercase;color:#727a86;margin:0 0 .3rem">A visitor sees this</p><p style="font-family:Georgia,serif;font-size:1.04rem;font-weight:600;margin:0;line-height:1.15">The site</p><p style="font-size:.78rem;color:#9aa2ae;margin:.28rem 0 0">Identical the day you build it.</p></div>
</div>
<p style="color:#9aa2ae;font-size:1.02rem;max-width:60ch;margin:0 0 1.6rem">That machine in the middle is where the three part ways. Two questions run down every stage: is it in your hands, and will it hold?</p>
<div style="overflow-x:auto"><div style="min-width:648px;border:1px solid #2b303a;border-radius:12px;overflow:hidden;display:grid;grid-template-columns:112px 1fr 1fr 1fr">
<div style="display:flex;align-items:flex-end;padding:.8rem .78rem;background:#14161b"><span style="font-family:ui-monospace,Menlo,monospace;font-size:.55rem;letter-spacing:.13em;text-transform:uppercase;color:#727a86;line-height:1.4">The<br>route</span></div>
<div style="display:flex;flex-direction:column;padding:.8rem .82rem;border-bottom:1px solid #2b303a;background:rgba(153,161,173,.07)"><p style="font-family:Georgia,serif;font-weight:600;font-size:1.16rem;line-height:1.12;margin:0;color:#99a1ad">Rent a platform</p><p style="font-size:.8rem;color:#9aa2ae;margin:.15rem 0 .1rem">A host hands you a template.</p><p style="font-size:.74rem;color:#727a86;margin:.35rem 0 .5rem">A few of many: Squarespace, Substack, Wix.</p><div style="margin-top:auto;font-family:ui-monospace,Menlo,monospace;font-size:.56rem;letter-spacing:.09em;text-transform:uppercase;color:#727a86">Up-front effort <span style="color:#99a1ad;font-size:.72rem;letter-spacing:.12em">&#9679;<span style="opacity:.3">&#9679;&#9679;&#9679;</span></span></div></div>
<div style="display:flex;flex-direction:column;padding:.8rem .82rem;border-bottom:1px solid #2b303a;background:rgba(95,159,242,.09)"><p style="font-family:Georgia,serif;font-weight:600;font-size:1.16rem;line-height:1.12;margin:0;color:#5f9ff2">Hugo alone</p><p style="font-size:.8rem;color:#9aa2ae;margin:.15rem 0 .1rem">A site generator you run yourself.</p><p style="font-size:.74rem;color:#727a86;margin:.35rem 0 .5rem">Install it, theme it, host it.</p><div style="margin-top:auto;font-family:ui-monospace,Menlo,monospace;font-size:.56rem;letter-spacing:.09em;text-transform:uppercase;color:#727a86">Up-front effort <span style="color:#5f9ff2;font-size:.72rem;letter-spacing:.12em">&#9679;&#9679;&#9679;<span style="opacity:.3">&#9679;</span></span></div></div>
<div style="display:flex;flex-direction:column;padding:.8rem .82rem;border-bottom:1px solid #2b303a;background:rgba(87,192,138,.12)"><p style="font-family:Georgia,serif;font-weight:600;font-size:1.16rem;line-height:1.12;margin:0;color:#57c08a">Nix + Hugo</p><div style="font-family:ui-monospace,Menlo,monospace;font-size:.53rem;letter-spacing:.1em;text-transform:uppercase;color:#57c08a;margin:.28rem 0 0">what this site runs on</div><p style="font-size:.8rem;color:#9aa2ae;margin:.28rem 0 .1rem">The same generator, pinned in place.</p><p style="font-size:.74rem;color:#727a86;margin:.35rem 0 .5rem">One file names every tool, once.</p><div style="margin-top:auto;font-family:ui-monospace,Menlo,monospace;font-size:.56rem;letter-spacing:.09em;text-transform:uppercase;color:#727a86">Up-front effort <span style="color:#57c08a;font-size:.72rem;letter-spacing:.12em">&#9679;&#9679;&#9679;&#9679;</span></div></div>
<div style="padding:.7rem .8rem;border-top:1px solid #22262e;background:#14161b;display:flex;align-items:center"><b style="font-size:.86rem;font-weight:600;line-height:1.2">What it costs</b></div>
<div style="padding:.7rem .8rem;border-top:1px solid #22262e;background:rgba(153,161,173,.07);font-size:.87rem"><span style="font-family:ui-monospace,Menlo,monospace;font-size:.57rem;letter-spacing:.05em;text-transform:uppercase;font-weight:600;color:#cf7b72">A fee, every month</span><p style="margin:.22rem 0 0">A subscription for as long as the site is up. Stop paying and it goes dark.</p></div>
<div style="padding:.7rem .8rem;border-top:1px solid #22262e;background:rgba(95,159,242,.09);font-size:.87rem"><span style="font-family:ui-monospace,Menlo,monospace;font-size:.57rem;letter-spacing:.05em;text-transform:uppercase;font-weight:600;color:#57c08a">Only a host</span><p style="margin:.22rem 0 0">The software costs nothing; you pay only for hosting you arrange.</p></div>
<div style="padding:.7rem .8rem;border-top:1px solid #22262e;background:rgba(87,192,138,.12);font-size:.87rem"><span style="font-family:ui-monospace,Menlo,monospace;font-size:.57rem;letter-spacing:.05em;text-transform:uppercase;font-weight:600;color:#57c08a">Only a small server</span><p style="margin:.22rem 0 0">The software costs nothing; you pay only for a small server to run it.</p></div>
<div style="padding:.7rem .8rem;border-top:1px solid #22262e;background:#14161b;display:flex;align-items:center"><b style="font-size:.86rem;font-weight:600;line-height:1.2">Where your words live</b></div>
<div style="padding:.7rem .8rem;border-top:1px solid #22262e;background:rgba(153,161,173,.07);font-size:.87rem"><span style="display:inline-flex;align-items:center;gap:.34rem;font-family:ui-monospace,Menlo,monospace;font-size:.57rem;letter-spacing:.05em;text-transform:uppercase;font-weight:600;color:#cf7b72"><span style="font-size:.72rem;line-height:1">&#9675;</span>Not in your hands</span><p style="margin:.22rem 0 0">In their editor, on their servers.</p></div>
<div style="padding:.7rem .8rem;border-top:1px solid #22262e;background:rgba(95,159,242,.09);font-size:.87rem"><span style="display:inline-flex;align-items:center;gap:.34rem;font-family:ui-monospace,Menlo,monospace;font-size:.57rem;letter-spacing:.05em;text-transform:uppercase;font-weight:600;color:#57c08a"><span style="font-size:.72rem;line-height:1">&#9679;</span>Yours</span><p style="margin:.22rem 0 0">Plain text files on your own drive.</p></div>
<div style="padding:.7rem .8rem;border-top:1px solid #22262e;background:rgba(87,192,138,.12);font-size:.87rem"><span style="display:inline-flex;align-items:center;gap:.34rem;font-family:ui-monospace,Menlo,monospace;font-size:.57rem;letter-spacing:.05em;text-transform:uppercase;font-weight:600;color:#57c08a"><span style="font-size:.72rem;line-height:1">&#9679;</span>Yours</span><p style="margin:.22rem 0 0">Plain text files on your own drive.</p></div>
<div style="padding:.7rem .8rem;border-top:1px solid #22262e;background:#14161b;display:flex;align-items:center"><b style="font-size:.86rem;font-weight:600;line-height:1.2">Turning words into pages</b></div>
<div style="padding:.7rem .8rem;border-top:1px solid #22262e;background:rgba(153,161,173,.07);font-size:.87rem"><span style="display:inline-flex;align-items:center;gap:.34rem;font-family:ui-monospace,Menlo,monospace;font-size:.57rem;letter-spacing:.05em;text-transform:uppercase;font-weight:600;color:#cf7b72"><span style="font-size:.72rem;line-height:1">&#9675;</span>Not yours to see</span><p style="margin:.22rem 0 0">They build the site their way, where you cannot look.</p></div>
<div style="padding:.7rem .8rem;border-top:1px solid #22262e;background:rgba(95,159,242,.09);font-size:.87rem"><span style="display:inline-flex;align-items:center;gap:.34rem;font-family:ui-monospace,Menlo,monospace;font-size:.57rem;letter-spacing:.05em;text-transform:uppercase;font-weight:600;color:#d9a441"><span style="font-size:.72rem;line-height:1">&#9681;</span>Depends on you</span><p style="margin:.22rem 0 0"><code style="font-family:ui-monospace,Menlo,monospace;font-size:.82em;color:#cdd3db">hugo</code> builds it, using whatever version you happen to have that day.</p></div>
<div style="padding:.7rem .8rem;border-top:1px solid #22262e;background:rgba(87,192,138,.12);font-size:.87rem"><span style="display:inline-flex;align-items:center;gap:.34rem;font-family:ui-monospace,Menlo,monospace;font-size:.57rem;letter-spacing:.05em;text-transform:uppercase;font-weight:600;color:#57c08a"><span style="font-size:.72rem;line-height:1">&#9679;</span>Holds</span><p style="margin:.22rem 0 0"><code style="font-family:ui-monospace,Menlo,monospace;font-size:.82em;color:#cdd3db">nix build</code> uses the pinned tools and nothing else. The same site, every run.</p><div style="display:inline-block;font-family:ui-monospace,Menlo,monospace;font-size:.54rem;letter-spacing:.07em;text-transform:uppercase;color:#57c08a;margin-top:.42rem;border:1px solid rgba(87,192,138,.35);border-radius:5px;padding:.08rem .34rem">first pin &middot; the tools</div></div>
<div style="padding:.7rem .8rem;border-top:1px solid #22262e;background:#14161b;display:flex;align-items:center"><b style="font-size:.86rem;font-weight:600;line-height:1.2">Your earlier versions</b></div>
<div style="padding:.7rem .8rem;border-top:1px solid #22262e;background:rgba(153,161,173,.07);font-size:.87rem"><span style="display:inline-flex;align-items:center;gap:.34rem;font-family:ui-monospace,Menlo,monospace;font-size:.57rem;letter-spacing:.05em;text-transform:uppercase;font-weight:600;color:#d9a441"><span style="font-size:.72rem;line-height:1">&#9681;</span>Their limits</span><p style="margin:.22rem 0 0">Whatever undo they decide to give you.</p></div>
<div style="padding:.7rem .8rem;border-top:1px solid #22262e;background:rgba(95,159,242,.09);font-size:.87rem"><span style="display:inline-flex;align-items:center;gap:.34rem;font-family:ui-monospace,Menlo,monospace;font-size:.57rem;letter-spacing:.05em;text-transform:uppercase;font-weight:600;color:#d9a441"><span style="font-size:.72rem;line-height:1">&#9681;</span>Up to you</span><p style="margin:.22rem 0 0">Yours to set up. Easy to mean to, easy to skip.</p></div>
<div style="padding:.7rem .8rem;border-top:1px solid #22262e;background:rgba(87,192,138,.12);font-size:.87rem"><span style="display:inline-flex;align-items:center;gap:.34rem;font-family:ui-monospace,Menlo,monospace;font-size:.57rem;letter-spacing:.05em;text-transform:uppercase;font-weight:600;color:#57c08a"><span style="font-size:.72rem;line-height:1">&#9679;</span>Holds</span><p style="margin:.22rem 0 0">A full history that never forgets, back to a misplaced comma.</p><div style="display:inline-block;font-family:ui-monospace,Menlo,monospace;font-size:.54rem;letter-spacing:.07em;text-transform:uppercase;color:#57c08a;margin-top:.42rem;border:1px solid rgba(87,192,138,.35);border-radius:5px;padding:.08rem .34rem">second pin &middot; the history</div></div>
<div style="padding:.7rem .8rem;border-top:1px solid #22262e;background:#14161b;display:flex;align-items:center"><b style="font-size:.86rem;font-weight:600;line-height:1.2">Going live</b></div>
<div style="padding:.7rem .8rem;border-top:1px solid #22262e;background:rgba(153,161,173,.07);font-size:.87rem"><span style="display:inline-flex;align-items:center;gap:.34rem;font-family:ui-monospace,Menlo,monospace;font-size:.57rem;letter-spacing:.05em;text-transform:uppercase;font-weight:600;color:#d9a441"><span style="font-size:.72rem;line-height:1">&#9681;</span>Their ground</span><p style="margin:.22rem 0 0">One click, on their domain, under their rules.</p></div>
<div style="padding:.7rem .8rem;border-top:1px solid #22262e;background:rgba(95,159,242,.09);font-size:.87rem"><span style="display:inline-flex;align-items:center;gap:.34rem;font-family:ui-monospace,Menlo,monospace;font-size:.57rem;letter-spacing:.05em;text-transform:uppercase;font-weight:600;color:#d9a441"><span style="font-size:.72rem;line-height:1">&#9681;</span>You wire it</span><p style="margin:.22rem 0 0">Copy the finished files to a host you arrange yourself.</p></div>
<div style="padding:.7rem .8rem;border-top:1px solid #22262e;background:rgba(87,192,138,.12);font-size:.87rem"><span style="display:inline-flex;align-items:center;gap:.34rem;font-family:ui-monospace,Menlo,monospace;font-size:.57rem;letter-spacing:.05em;text-transform:uppercase;font-weight:600;color:#57c08a"><span style="font-size:.72rem;line-height:1">&#9679;</span>Holds</span><p style="margin:.22rem 0 0">One command puts it live. One command rolls it back.</p><div style="display:inline-block;font-family:ui-monospace,Menlo,monospace;font-size:.54rem;letter-spacing:.07em;text-transform:uppercase;color:#57c08a;margin-top:.42rem;border:1px solid rgba(87,192,138,.35);border-radius:5px;padding:.08rem .34rem">third pin &middot; what is live</div></div>
<div style="padding:.72rem .8rem;border-top:2px solid #2b303a;background:#14161b;display:flex;align-items:center;font-family:ui-monospace,Menlo,monospace;font-size:.57rem;letter-spacing:.11em;text-transform:uppercase;color:#727a86">The trade</div>
<div style="padding:.75rem .8rem;border-top:2px solid #2b303a;background:rgba(153,161,173,.07);font-size:.87rem;line-height:1.42">You rent the ground. Convenience today, nothing that stays yours.</div>
<div style="padding:.75rem .8rem;border-top:2px solid #2b303a;background:rgba(95,159,242,.09);font-size:.87rem;line-height:1.42">You own the words and the site. The route that makes them can still drift.</div>
<div style="padding:.75rem .8rem;border-top:2px solid #2b303a;background:rgba(87,192,138,.12);font-size:.87rem;line-height:1.42;font-weight:600">You own the ground, and it holds still. Rebuild it in a year and the same site comes back.</div>
</div></div>
<p style="margin:1rem 2px 0;font-size:.8rem;color:#9aa2ae;line-height:1.5;max-width:68ch">Renting is the easy path, and for most people the right one: least to set up, nothing to maintain. The rows above are what that ease costs.</p>
<p style="margin:1rem 2px 0;font-size:.8rem;color:#9aa2ae;line-height:1.5;max-width:68ch">A <b style="color:#57c08a">pin</b> is a fixed point you can always return to. Only the third lane puts any down, and it puts down three: one on the tools, one on the edit history, one on what is live.</p>
<div style="display:flex;flex-wrap:wrap;gap:1.1rem;margin:1rem 2px 0;font-size:.78rem;color:#9aa2ae"><span style="display:inline-flex;align-items:center;gap:.4rem"><b style="color:#57c08a;font-size:.85rem">&#9679;</b> Holds, and stays yours</span><span style="display:inline-flex;align-items:center;gap:.4rem"><b style="color:#d9a441;font-size:.85rem">&#9681;</b> Depends on you</span><span style="display:inline-flex;align-items:center;gap:.4rem"><b style="color:#cf7b72;font-size:.85rem">&#9675;</b> Not in your hands</span></div>
</div>
<p>Open the site&rsquo;s folder and Nix&rsquo;s written list is there, a real file named flake.lock. Every tool the site needs is listed there, each one beside a long string of letters and numbers that looks like nonsense. That string is the label on one particular mallet. It names a single version of each tool, and Nix hands over that one and no other, however many newer mallets have piled up on the shelf since. None of it moves on its own, either. When I do want a newer version of a tool, I do not go hunting for it. I take one deliberate step (<code>nix flake update</code>), and the list changes on purpose. The change itself gets written down, so even going forward leaves a mark I can find my way back from. The only way anything moves is if I decide it should.</p>
<p>Think back to the cove. The vlogger&rsquo;s caption was a set of landmarks, and by the next summer the landmarks had moved. flake.lock is the pin she never dropped. It does not describe each tool by what happens to sit near it. It names the exact spot, and a year later it leads back to the same ground, fig tree or no fig tree. With a pin in her caption, the man who came to propose parks on the right beach. The ring does not stay in his pocket.</p>
<p>This is where the machinery stopped feeling foreign to me. flake.lock is the rule I follow at work and at the stove, written for a website.</p>
<p>It is the most dependable thing in the project. It is why the site comes out identical on my laptop, on a borrowed laptop, and on a stranger&rsquo;s machine I will never touch. For anyone building a site, that is the end of &ldquo;it worked on my computer yesterday&rdquo;: what gets built can be rebuilt, and anyone handed the project gets the same site I did. That is the first pin: hold the tools in place, and they cannot wander off on their own.</p>
<h2 id="when-the-machine-moves">When the Machine Moves</h2>
<p>Without that pin, what moves is the version of Hugo, the one part no one sees or touches. Change laptops, run one upgrade, or reinstall once, and it quietly becomes a different Hugo.</p>
<div style="max-width:760px;margin:2.4rem auto;padding:1.6rem 1.5rem 1.4rem;background:#14161b;border:1px solid #2b303a;border-radius:14px;color:#e7eaef;font-family:-apple-system,system-ui,sans-serif;line-height:1.5">
<p style="font-family:ui-monospace,Menlo,monospace;font-size:.66rem;letter-spacing:.15em;text-transform:uppercase;color:#727a86;margin:0 0 .5rem"><i>Figure 2.</i> Same words, a different Hugo</p>
<p style="font-family:Georgia,'Times New Roman',serif;font-weight:600;font-size:2rem;line-height:1.08;letter-spacing:-.01em;margin:0 0 .55rem">Three Times Hugo Moved</p>
<p style="color:#9aa2ae;font-size:1.02rem;max-width:60ch;margin:0 0 1.4rem">Each row is a change Hugo really made. Read down the middle, and your writing never changed. Read across, and the site changed anyway.</p>
<div style="overflow-x:auto"><div style="min-width:560px;border:1px solid #2b303a;border-radius:12px;overflow:hidden;display:grid;grid-template-columns:1.3fr .75fr 1.1fr">
<div style="padding:.55rem .8rem;font-family:ui-monospace,Menlo,monospace;font-size:.56rem;letter-spacing:.11em;text-transform:uppercase;color:#727a86;background:#14161b">What Hugo changed</div><div style="padding:.55rem .8rem;font-family:ui-monospace,Menlo,monospace;font-size:.56rem;letter-spacing:.11em;text-transform:uppercase;color:#727a86;background:#14161b;color:#57c08a">Your words</div><div style="padding:.55rem .8rem;font-family:ui-monospace,Menlo,monospace;font-size:.56rem;letter-spacing:.11em;text-transform:uppercase;color:#727a86;background:#14161b;color:#cf7b72">What comes out</div>
<div style="padding:.75rem .8rem;border-top:1px solid #22262e;font-size:.86rem;background:#14161b"><p style="font-family:ui-monospace,Menlo,monospace;font-size:.56rem;letter-spacing:.08em;text-transform:uppercase;color:#727a86;margin:0 0 .3rem">2019 &middot; Hugo v0.60</p><p style="font-size:.94rem;font-weight:600;margin:0 0 .25rem">It swapped the engine</p><p style="font-size:.8rem;color:#9aa2ae;margin:0">The part that reads your writing went from Blackfriday to Goldmark.</p></div>
<div style="padding:.75rem .8rem;border-top:1px solid #22262e;font-size:.86rem;background:rgba(87,192,138,.08)"><span style="display:inline-flex;align-items:center;gap:.34rem;font-family:ui-monospace,Menlo,monospace;font-size:.57rem;letter-spacing:.05em;text-transform:uppercase;font-weight:600;color:#57c08a"><span style="font-size:.72rem;line-height:1">&#9679;</span>Unchanged</span><p style="font-size:.8rem;color:#9aa2ae;margin:.22rem 0 0">Not one character.</p></div>
<div style="padding:.75rem .8rem;border-top:1px solid #22262e;font-size:.86rem;background:rgba(207,123,114,.07)"><span style="display:inline-flex;align-items:center;gap:.34rem;font-family:ui-monospace,Menlo,monospace;font-size:.57rem;letter-spacing:.05em;text-transform:uppercase;font-weight:600;color:#d9a441"><span style="font-size:.72rem;line-height:1">&#9681;</span>Builds, but wrong</span><p style="margin:.22rem 0 0">Spacing, quotes, and footnotes shift.</p></div>
<div style="padding:.75rem .8rem;border-top:1px solid #22262e;font-size:.86rem;background:#14161b"><p style="font-family:ui-monospace,Menlo,monospace;font-size:.56rem;letter-spacing:.08em;text-transform:uppercase;color:#727a86;margin:0 0 .3rem">2019 &middot; Hugo v0.60</p><p style="font-size:.94rem;font-weight:600;margin:0 0 .25rem">It hid raw HTML</p><p style="font-size:.8rem;color:#9aa2ae;margin:0">Anything built by hand in raw HTML, code written for the browser rather than for Hugo, stays hidden unless one setting is on.</p></div>
<div style="padding:.75rem .8rem;border-top:1px solid #22262e;font-size:.86rem;background:rgba(87,192,138,.08)"><span style="display:inline-flex;align-items:center;gap:.34rem;font-family:ui-monospace,Menlo,monospace;font-size:.57rem;letter-spacing:.05em;text-transform:uppercase;font-weight:600;color:#57c08a"><span style="font-size:.72rem;line-height:1">&#9679;</span>Unchanged</span><p style="font-size:.8rem;color:#9aa2ae;margin:.22rem 0 0">Not one character.</p></div>
<div style="padding:.75rem .8rem;border-top:1px solid #22262e;font-size:.86rem;background:rgba(207,123,114,.07)"><span style="display:inline-flex;align-items:center;gap:.34rem;font-family:ui-monospace,Menlo,monospace;font-size:.57rem;letter-spacing:.05em;text-transform:uppercase;font-weight:600;color:#d9a441"><span style="font-size:.72rem;line-height:1">&#9681;</span>Builds, but wrong</span><p style="margin:.22rem 0 0">Figures like Figure 1 vanish from the page.</p></div>
<div style="padding:.75rem .8rem;border-top:1px solid #22262e;font-size:.86rem;background:#14161b"><p style="font-family:ui-monospace,Menlo,monospace;font-size:.56rem;letter-spacing:.08em;text-transform:uppercase;color:#727a86;margin:0 0 .3rem">2024 &middot; Hugo v0.128</p><p style="font-size:.94rem;font-weight:600;margin:0 0 .25rem">It retired a setting</p><p style="font-size:.8rem;color:#9aa2ae;margin:0"><code style="font-family:ui-monospace,Menlo,monospace;font-size:.82em;color:#cdd3db">paginate</code>, a setting many themes (the ready-made designs a Hugo site wears) leaned on, became <code style="font-family:ui-monospace,Menlo,monospace;font-size:.82em;color:#cdd3db">pagination.pagerSize</code>. Later versions stop the build if a theme still uses the old name.</p></div>
<div style="padding:.75rem .8rem;border-top:1px solid #22262e;font-size:.86rem;background:rgba(87,192,138,.08)"><span style="display:inline-flex;align-items:center;gap:.34rem;font-family:ui-monospace,Menlo,monospace;font-size:.57rem;letter-spacing:.05em;text-transform:uppercase;font-weight:600;color:#57c08a"><span style="font-size:.72rem;line-height:1">&#9679;</span>Unchanged</span><p style="font-size:.8rem;color:#9aa2ae;margin:.22rem 0 0">Not one character.</p></div>
<div style="padding:.75rem .8rem;border-top:1px solid #22262e;font-size:.86rem;background:rgba(207,123,114,.07)"><span style="display:inline-flex;align-items:center;gap:.34rem;font-family:ui-monospace,Menlo,monospace;font-size:.57rem;letter-spacing:.05em;text-transform:uppercase;font-weight:600;color:#cf7b72"><span style="font-size:.72rem;line-height:1">&#9675;</span>Will not build</span><p style="margin:.22rem 0 0">The build stops on an error you did not write. No site comes out at all.</p></div>
</div></div>
</div>
<p>None of these changes is the writer&rsquo;s fault. The second row is the 2019 change from the opening, and it would reach this very page: leave that one switch off, and Figure 1, the whole comparison of the three ways to build a site, would be missing.</p>
<p>The first two rows are quiet. The site still builds, so its owner may not notice for weeks. Every visitor does. The last row is loud. Nothing can be posted, nothing can be fixed fast, and there is no way back, because no one wrote down which Hugo made it work. It is the wrong beach at dusk all over again: an evening set aside to post something, and the night ends without it.</p>
<p>flake.lock names the one Hugo this site uses, and Nix fetches that version every time it builds. None of those three changes can reach this site until I choose to update, and if the newer Hugo breaks something, one step goes back to the Hugo that worked.</p>
<p>The same words, plus the pinned Hugo, equal the same site, always.</p>
<h2 id="the-vault-and-the-live-site">The Vault and the Live Site</h2>
<p>I do the rest of the work in one window. My files sit on one side and a terminal on the other, a plain box where I type short commands. When a new article is ready, two separate things happen, and for a long time I thought they were one.</p>
<p>The first is the edit history, kept by a tool called Git. I save the whole project as it stands (a commit), then send that saved copy somewhere safe off my laptop (a push). It lands on GitHub, a vault where every saved version piles up, so I can step back to any of them, down to a comma I fixed years ago. This never changes what a visitor sees. It changes what I can never lose. Because nothing is lost, I stop being afraid to change things. I can rewrite a page, cut a whole section, or try something I am not sure of, because one command puts everything back. That is the second pin described in Figure 1: the history.</p>
<p>The second is publishing, and it does not pass through GitHub at all. First Nix builds the whole finished site once, from the pinned tools and nothing else, and seals it into a single package (<code>nix build</code>). Then one command sends it live, in two moves. It first hands the package up to my server, an always-on computer on the internet (<code>nix copy</code>). The server keeps every printing I have ever sent it, stacked in order. One of them sits in the window, the way a print shop shows one sheet to the street.</p>
<p>That command then moves the new printing into the window in one motion (<code>nix-env --set</code>), so no visitor ever lands on a half-posted page. When a printing comes out wrong, one command puts the last good one back in the window (<code>nix-env --rollback</code>). There is no scramble to rebuild and no night spent trying to remember what the site looked like before it broke. In Figure 1, that is the third pin: what is live.</p>
<p>What arrives at the far end is barely a program, which is all &ldquo;static&rdquo; means in Hugo&rsquo;s own description. Because Hugo settled every question before a visitor ever arrived, it printed the whole site once, into pages that do nothing but sit and wait to be read. There is no login to guess past, no database of words behind a password. On the server, one small program (<code>nginx</code>) spends the day handing each visitor the page they asked for, already printed, and nothing more. It is the same page that answered an hour ago and will answer a year from now.</p>
<p>Even the padlock a browser shows for a secure connection takes care of itself. The site is issued one automatically, and it renews on its own (a certificate, handled through a standard called ACME). Once the site is up, there is little to maintain and little to break into.</p>
<p>The frightening pieces, Nix and the server, were set up once and have barely needed me since. They hold still in the background, and the writing is the one part left free to move.</p>
<p>Holding still mattered for one more reason. When the site came to me, most of it was not mine. It arrived with the placeholder life a ready-made theme ships with: an About page describing people who do not exist, a borrowed quote, a company that was never real. The parts worked. The person was missing. A foundation that holds still is what makes filling it safe. A real essay went where a fake case study used to be. My own question went in place of someone else&rsquo;s motivational line. My husband built the foundation. I am learning to fill it, one true thing at a time.</p>
<blockquote>
<p><strong>A Closing Invitation</strong>. <em>Put three pins on a recipe card someone handed over finished, in a hand only half readable. First, notice what it runs on: whose handwriting, which pan, which stove. Then take a photo of the card before touching it, and listen for the soft click of the camera. Leave the original on the fridge, grease stain and all, and write one small change on the copy, the first thing to try if there were no fear of ruining it. Cook from both and taste the difference. Something may burn. Nothing is lost. The fig tree can fall and a cafe can open where the turn used to be, and the pin still leads back to the same sand.</em></p></blockquote>
<h2 id="where-this-came-from">Where This Came From</h2>
<p>The cove, the travel vlogger, and the couple who went looking for it are invented, to make one idea concrete. The fig tree of San Pedro is not. Its fall on May 12, 1991, after more than half a century as a landmark in the district, is recorded in the district&rsquo;s Spanish-language Wikipedia entry. A 2004 article in <em>La Nación</em> describes neighbors giving directions by counting blocks from it. Both are in the references below. Everything else here is my own workflow, described as I run it. My husband built the site&rsquo;s original Nix and Hugo scaffolding and handed it to me finished, with a short README. That was before any of what this article describes began. His part is described here with his permission. He has written up the setup himself, in more technical depth than this article goes, and both posts are listed in the references below. The flake.lock file is my own, and the versions it pins are real, though I have kept its pinned version strings out of the text. The Hugo versions in Figure 2 are public releases, not the ones this site runs.</p>
<p>The 2019 change in the opening is real and documented. Hugo&rsquo;s own release notes for version 0.60 announced the new Markdown engine, Goldmark, and the setting needed to keep raw HTML on the page. The same day, a user reported on Hugo&rsquo;s support forum that an HTML table had disappeared from their site after the upgrade.</p>
<p>The 2024 change in Figure 2 is documented the same way. After Hugo retired the <code>paginate</code> setting, sites whose themes still used it stopped building, with an error naming the change. One theme&rsquo;s bug report from December 2024 quotes that error.</p>
<p>A word on the title. To <em>put a pin on</em> something, here, is the map gesture from the opening: press and hold to save a place, so the same ground can always be found again. It is the reverse of the everyday <em>put a pin in it</em>, which means to set a thing aside for later. This article is about the first kind. The point is not to shelve what was handed over, but to mark where it stands so the way back is always there.</p>
<p><strong>Intellectual Property Note.</strong> Nix, Hugo, GitHub, nginx, Squarespace, Substack, and Wix are the names and trademarks of their respective makers. Naming them describes tools I use daily, and is not an endorsement by, or affiliation with, any of them. Apart from the one-line descriptions quoted from the Hugo and Nix websites, no text, code, or figure from another source is reproduced here.</p>
<h2 id="references">References</h2>
<p>1a57danc3. (2024, December 29). <em>ERROR deprecated: site config key paginate was deprecated in Hugo v0.128.0 and will be removed in Hugo 0.141.0</em> (Issue #251). GitHub. <a href="https://github.com/nanxiaobei/hugo-paper/issues/251">https://github.com/nanxiaobei/hugo-paper/issues/251</a></p>
<p>Holmes, R. (2025, March 11). <em>Deploying Hugo in NixOS</em>. paradigmatic.systems. <a href="https://paradigmatic.systems/posts/getting-started-with-hugo/">https://paradigmatic.systems/posts/getting-started-with-hugo/</a></p>
<p>Holmes, R. (2026, July 11). <em>Decoupling My Deployment Model</em>. paradigmatic.systems. <a href="https://paradigmatic.systems/posts/decoupling-deployment-model/">https://paradigmatic.systems/posts/decoupling-deployment-model/</a></p>
<p>Hugo Authors. (2019, November 27). <em>Hugo v0.60.0</em> [Release notes]. GitHub. <a href="https://github.com/gohugoio/hugo/releases/tag/v0.60.0">https://github.com/gohugoio/hugo/releases/tag/v0.60.0</a></p>
<p>Jonathan_Griffin. (2019, November 27). <em>Hugo 0.60.0 raw HTML omitted issue</em> [Online forum post]. HUGO Discourse. <a href="https://discourse.gohugo.io/t/hugo-0-60-0-raw-html-omitted-issue/22010">https://discourse.gohugo.io/t/hugo-0-60-0-raw-html-omitted-issue/22010</a></p>
<p>No hay antiguo ni nuevo higuerón. (2004, April 28). <em>La Nación</em>. <a href="https://www.nacion.com/el-pais/no-hay-antiguo-ni-nuevo-higueron/CVB24V4B5VFRTLGARZ4HHCH5II/story/">https://www.nacion.com/el-pais/no-hay-antiguo-ni-nuevo-higueron/CVB24V4B5VFRTLGARZ4HHCH5II/story/</a></p>
<p>San Pedro de Montes de Oca. (n.d.). In <em>Wikipedia, la enciclopedia libre</em>. Retrieved September 24, 2026, from <a href="https://es.wikipedia.org/wiki/San_Pedro_de_Montes_de_Oca">https://es.wikipedia.org/wiki/San_Pedro_de_Montes_de_Oca</a></p>
]]></content:encoded>
    </item>
    
  </channel>
</rss>
