I Am a Software Mechanic
########################

:author: Russell Ballestrini
:slug: i-am-a-software-mechanic
:date: 2026-03-20 12:00
:tags: Opinion, Code
:status: published

That job title doesn't exist yet on any W-2.

But it describes exactly what I do.

You call me when a machine-generated tool breaks something real.
A harvest lost. A contract mispriced. A greenhouse running dry.
I show up. I read the spec. I find the gap between what someone told the machine to do & what the world actually did.
Then I fix it. Unfortunately, not every job arrives as a Jira ticket.
Some come undisciplined & urgent, undergoing triage in a Slack room without a number.
One of those could terminate you into unemployment.
One of those could fire you.

**The pay reflects the gap between what this work actually does & what people think it costs.**

Software mechanics don't write code.
We maintain code that writes code.
Nobody budgeted for that role yet.
So most of us patch things on a handshake & call it consulting.

I keep a box of $4 toggle switches in my basement.
Not for the wiring.
For the clients who need to feel like they still have a hand on the wheel.

---

**Life as a software mechanic sucks. Let me explain.**

Every upstream dependency mutates without a release note.
Weather models recalibrate. Pricing APIs shift. ML models get quietly retrained.
Your client's tool keeps running. Keeps returning confident outputs.
Nobody notices until someone loses $25,000 in undersized cabbage.

Then they call you. You charge $200 for the visit.
You spend 4 hours diagnosing a spec that never mentioned the weather service it silently relied on.
You bill 4 hours. You eat 2.
The client balks at the invoice because "it's just a setting."

I never haggle. I work on my own ideas & try to sell them.
Never works.

**This happens every week.**

Tools get better. Specifications don't keep pace.
The world underneath the specs never simplifies.
So the gap between intent & execution keeps widening.
Someone has to crawl into that gap.

That someone doesn't have a union. Doesn't have a job board.
Doesn't have a standard rate card.
Mostly posts on forums & waits for DMs.

This blog goes back to 2010.
Every post, a spec against territory.
Most technical posts need no update. Ground beneath them held.
Others aged out quietly. A Minikube guide. A CircleCI config. A FreeNAS fallback tutorial. Accurate when written. Overtaken soon after.
Not failure. Just terrain. Most stays. Some shifts while you stand on it. An unquake.

---

**Why this matters right now:**

A post on `nearzero.software <https://nearzero.software/p/warranty-void-if-regenerated>`_ by Scott Werner called "Warranty Void If Regenerated" nails the shape of this work.
Tom Hartmann, a fictional software mechanic in rural Wisconsin, visits three clients in a day.
Three different failure modes. Three different root causes.
All of them trace back to specifications that didn't account for a world that moves.

Read it. Then come back for your homework.

---

---

HOMEWORK ASSIGNMENT
===================

.. class:: center

**Word Hunt — "Warranty Void If Regenerated"**

.. class:: center

*For students learning about software, language, & the `un` prefix*

|

**Your mission:**

Scrape `https://nearzero.software/p/warranty-void-if-regenerated <https://nearzero.software/p/warranty-void-if-regenerated>`_.

Find every word that starts with ``un``.

List them alphabetically.

Write your best definition for each word.

Then check your answers below.

|

**Scraping starter (Python):**

.. code-block:: python

    import urllib.request
    from html.parser import HTMLParser
    import re

    url = "https://nearzero.software/p/warranty-void-if-regenerated"

    with urllib.request.urlopen(url) as response:
        html = response.read().decode("utf-8")

    # strip tags, split on whitespace, find un* words
    text = re.sub(r"<[^>]+>", " ", html)
    words = text.split()
    un_words = sorted(set(
        w.strip(".,;:!?\"'()[]").lower()
        for w in words
        if w.lower().startswith("un")
    ))

    for word in un_words:
        print(word)

|

**Define each word you find. Write your definitions before clicking the answer sheet.**

|

.. raw:: html

    <details>
    <summary style="cursor:pointer; font-weight:bold; font-size:1.1em; padding:0.5em 0; user-select:none;">
        ▶ Click to reveal answer sheet
    </summary>
    <div style="margin-top:1em; padding:1em; border-left:3px solid #666;">

    <p><strong>Words starting with <code>un</code> found in the article:</strong></p>

    <ol>
    <li>
        <strong>under-watered</strong><br>
        Past tense: Carol under-watered the clay spot. Not a mistake. Thirty years of site knowledge encoded in action, never in words.
    </li>
    <li>
        <strong>under-watering</strong><br>
        The act of applying less water than a baseline recommends. Carol does this on purpose. Tyler's spec doesn't know. Neither does the sensor.
    </li>
    <li>
        <strong>underlying</strong><br>
        The foundation below what you see. The "underlying weather models" power the harvest tool but live outside its spec. When they change, the tool breaks. Nobody planned for that.
    </li>
    <li>
        <strong>underneath</strong><br>
        Below the surface, literally & figuratively. Clay sits underneath Carol's greenhouse soil. And underneath client resistance, Tom finds a real question every time.
    </li>
    <li>
        <strong>underpriced</strong><br>
        Sold for less than actual value. Ethan's miswired feed tool caused automated contracts to lock in milk prices below market. A small parsing error. A three-month loss.
    </li>
    <li>
        <strong>undersized</strong><br>
        Below the grade threshold. Margaret's early-harvested cabbage came in undersized. Undersized gets a discount. $25,000 worth of discount.
    </li>
    <li>
        <strong>understand</strong><br>
        To grasp deeply enough to use. Tom's central argument: a software mechanic in a farming town needs to understand farming. Not software. Farming.
    </li>
    <li>
        <strong>understood</strong><br>
        Past tense of understand. Hardware people understood atoms. Software people understood bits. People understood coffee. Coffee became Tom's benchmark for explaining spec complexity.
    </li>
    <li>
        <strong>uneventful</strong><br>
        Nothing went wrong. Tom's afternoon checkups ran uneventful. He appreciated that more than his clients probably knew. An uneventful visit means the spec held. That's a win.
    </li>
    <li>
        <strong>unexpected</strong><br>
        Something that arrived without warning. Carol's reaction to her grandson's irrigation upgrade matched "the expression people reserve for wasps' nests & unexpected tax bills." Technically superior. Emotionally disastrous.
    </li>
    <li>
        <strong>unfortunately</strong><br>
        Signals a gap between how things should work & how they do. "Unfortunately, software maintenance was a next-Tuesday problem in a world that was very good at producing lions."
    </li>
    <li>
        <strong>unkindly</strong><br>
        Without harshness. Tom delivers the spaghetti diagnosis "not unkindly." The word does quiet work: it marks him as someone who fixes things without making people feel broken.
    </li>
    <li>
        <strong>unless</strong><br>
        A conditional that marks the edge of machine knowledge. "That's a detail the AI has no way of knowing matters <em>unless</em> you tell it." One word. The whole argument.
    </li>
    <li>
        <strong>until</strong><br>
        The moment a static spec meets a dynamic world. "The tool worked perfectly <em>until</em> the world shifted underneath it." Until signals latent failure. The gap existed before the loss. You just couldn't see it yet.
    </li>
    </ol>

    <p><em>14 unique words. 35 total occurrences. <code>understood</code> appears 8 times. <code>underneath</code> appears 5 times. All the same prefix. All pointing at the same problem: something below, something before, something outside the spec.</em></p>

    </div>
    </details>

|

---

Software mechanics study language too.

Prefixes carry meaning. ``un`` signals what sits below the surface, before the failure, outside the specification.

Good luck.

.. contents::
