add: i am a software mechanic post with un-word homework
This commit is contained in:
parent
63ad455374
commit
68c9e16061
1 changed files with 200 additions and 0 deletions
200
content/2026-03-20-i-am-a-software-mechanic.rst
Normal file
200
content/2026-03-20-i-am-a-software-mechanic.rst
Normal file
|
|
@ -0,0 +1,200 @@
|
||||||
|
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 & drive to the next farm.
|
||||||
|
|
||||||
|
**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 truck.
|
||||||
|
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."
|
||||||
|
|
||||||
|
**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.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**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</strong> (as prefix: <em>under-watering</em>)<br>
|
||||||
|
Means below a threshold or less than needed. Carol deliberately applies less water than standard to a clay-heavy spot. Under-watering on purpose. Not a mistake.
|
||||||
|
</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>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>11 words. 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::
|
||||||
Loading…
Add table
Add a link
Reference in a new issue