I just received a
Friday, June 5, 2026
Thursday, May 21, 2026
Hard Men "harumpf MEN. we aspire to be like "Pissed beyond concern.. Pistol Pete Hegseth .. ... we are men arent we MEN ?
Absolutely — the key is to thread that memory through the essay without letting it take over. So instead of turning it into dialogue-heavy scene writing, I’d use it as a brief grounding anecdote: one small human moment that exposes the gap between the public mythology and the private reality.
Here’s a revised version in that mode:
______________________________________________________________________
Stolen Valour and the Fraud of the “Hard Times Make Hard Men” Trope
The saying “hard times create strong men, strong men create good times, good times create weak men, and weak men create hard times” is one of those formulas that sounds profound mainly because it is short, tidy, and smug. It offers the appearance of historical wisdom while avoiding the disorder of real history. More than that, it often functions as a form of stolen valour: a moral fable built not by the men who actually endured war, deprivation, and ruin, but by later generations who inherit their suffering as mythology and then use it to lecture others about strength.
What the saying deliberately conceals is that hard times do not reliably produce strength. Very often they produce trauma, brutality, criminality, bitterness, and despair. A society under severe pressure does not become noble by default. Men who are starved, shelled, gassed, or sent into jungle and trench warfare do not emerge as some purified masculine ideal. Some survive. Some adapt. Some break. Some become dangerous to themselves and others. Some never really come home at all.
As a child, I heard this truth not from intellectuals or from memorial speeches, but from old veterans themselves. In the early 1960s, I met men who had come back from the First World War mostly in one piece physically, but with no reverence left for the system that had used them. Far from becoming pillars of patriotic gratitude, many had turned against the establishment entirely. Some became communists. Some drifted into a half-criminal world of sly grog, brothels, SP bookmaking, or other grey economies. They did not speak like men ennobled by sacrifice. They spoke like men who had seen the machinery up close and despised the people who operated it from a safe distance.
I remember one of them swearing freely in front of me while I listened, wide-eyed, as a seven-year-old. My mother gently scolded him for using foul language in front of a child. But the exchange itself said more than any polished commemoration ever could. There was something almost absurd in the contrast: adults worried about bad language in front of a boy, while the man being corrected had been sent, as a teenager, into an industrial slaughterhouse by respectable men with clean collars and patriotic slogans. That was the real obscenity — not the words, but the system.
Those veterans did not teach me that hard times make hard men. Quite the opposite. They warned me never to be gullible enough to let anyone make a sacrificial fool of me in the name of flags, duty, or noble slogans. Their lesson was not hardness but suspicion — suspicion of the rhetoric that glamorises suffering and calls it character. They did not want the next generation turned into “hard men.” They wanted peace. They had seen what “hardness” usually meant in practice: frightened boys brutalised by experience, then praised afterwards by people who had never shared the risk.
This is where the stolen valour enters. The men who actually endured the horrors of war often came back disillusioned, damaged, anti-establishment, or quietly contemptuous of the causes they had supposedly served. But once they are dead — once they can no longer speak awkwardly, drink too much, rage against authority, vote for radicals, or embarrass the official story — the establishment reclaims them. Suddenly they “fought for our freedom.” Suddenly they become symbols of national virtue. Their bitterness is erased, their politics forgotten, their social alienation cleaned up, and their broken lives rewritten into moral pageantry.
That is stolen valour in its most respectable form. It is not the crude individual pretence of a man wearing medals he never earned. It is something larger and more dishonest: institutions, politicians, commentators, and comfortable descendants appropriating the suffering of the dead in order to authorise their own story about national character. The real men are gone; in their place stands a polished myth.
The same fraud persists in the “hard times make hard men” trope. The people repeating it are often not the men who endured the hard times. More often they are beneficiaries, spectators, or descendants who use the suffering of others as a kind of borrowed moral capital. It allows them to sound severe, wise, and realistic without ever having been shelled, starved, or sent to kill strangers in a muddy field. They inherit the legend and pose in front of it.
The saying also relies on a childish understanding of strength. It imagines adversity as a forge that naturally produces discipline, courage, and competence. But hardship is not a moral gymnasium. It is often just damage. War does not necessarily create stronger men; it often creates maimed bodies, shattered nerves, alcoholism, estrangement, domestic misery, and suicide. Economic collapse does not necessarily produce virtue; it can produce panic, predation, degradation, and cruelty. If some people emerge from terrible conditions with admirable qualities, that is not because suffering is inherently ennobling. It is because some human beings are capable of salvaging meaning from disaster. That is a testament to them, not to hardship.
Likewise, the idea that “soft times” create weak men is just the inverted form of the same nonsense. Periods of peace and stability can produce educated, self-controlled, capable people who develop discipline without being terrorised into it. A man raised in security may study, build, train, work, and take responsibility precisely because he has not been reduced to bare survival. Peace does not automatically make people soft. Sometimes it allows them to become fully human.
The trope survives because it offers a flattering simplicity. It turns history into a masculine morality play. It reassures the comfortable that suffering had purpose, that decline can be blamed on weakness, and that brutality was somehow productive. It saves people from having to confront a more difficult truth: societies do not rise because men were hardened by misery, nor do they fall because life became too comfortable. They rise and fall through institutions, incentives, corruption, trust, leadership, economics, culture, and luck. The slogan replaces all that with a cheap sermon.
Worse still, it invites a sentimental attitude toward suffering itself. It encourages people to speak as though hardship were desirable because of the character it supposedly forms. But hard times can mean sending boys to war, watching men come back ruined, seeing them despised in life and sanctified in death, and then hearing later generations speak reverently of the virtues of adversity. There is something almost obscene in that sequence. It asks the broken to pay the price for a lesson the unbroken are eager to teach.
Perhaps that is why the old veterans were so sceptical. They had no patience for the romance. They knew that the men who talk most about toughness are often the least tested, and that the social order which praises sacrifice is often the very order that demanded it of others while remaining safe itself. They knew that “hard men” are frequently just damaged men, or cynical men, or dead men rewritten into symbols. And they knew, too, that once the last troublesome veteran is buried, the official voices return to reclaim him.
So when people repeat that tidy little slogan about hard times and hard men, what they are often repeating is not wisdom but theft: the theft of experience from the men who actually suffered, and the theft of meaning from lives too messy to fit into patriotic cliché. The real testimony of many veterans was not that suffering made them stronger. It was that the people who speak most nobly about sacrifice are often the ones most determined to spend other people’s lives.
Monday, April 27, 2026
Mahmool Limerick
"A vice both Levant and unsavoury
Has Mark Bolton of Midvale in slavery.
But if friends chip in cash,
For this Lebanese dash,
We'll AAAAHmool in heaven's sweet bakery!"
Wednesday, April 15, 2026
New Computer
# CERBERUS REBUILD — 10 MINUTE CHECKLIST # 1. Create mount points sudo mkdir -p /srv/STORAGE /srv/ARCHIVE # 2. Mount drives (by label) sudo mount -L STORAGE /srv/STORAGE sudo mount -L ARCHIVE /srv/ARCHIVE # 3. Make mounts permanent sudo nano /etc/fstab # Add: # LABEL=STORAGE /srv/STORAGE ext4 defaults 0 2 # LABEL=ARCHIVE /srv/ARCHIVE ext4 defaults 0 2 # 4. Install NFS server sudo apt update sudo apt install nfs-kernel-server -y # 5. Configure exports sudo nano /etc/exports # Add: # /srv/STORAGE 192.168.50.172(rw,sync,no_subtree_check) # /srv/ARCHIVE 192.168.50.172(rw,sync,no_subtree_check) # 6. Apply + start NFS sudo exportfs -ra sudo systemctl restart nfs-kernel-server # 7. Verify from ANNIE showmount -e 192.168.50.10# CERBERUS REBUILD — 10 MINUTE CHECKLIST # 1. Create mount points sudo mkdir -p /srv/STORAGE /srv/ARCHIVE # 2. Mount drives (by label) sudo mount -L STORAGE /srv/STORAGE sudo mount -L ARCHIVE /srv/ARCHIVE # 3. Make mounts permanent sudo nano /etc/fstab # Add: # LABEL=STORAGE /srv/STORAGE ext4 defaults 0 2 # LABEL=ARCHIVE /srv/ARCHIVE ext4 defaults 0 2 # 4. Install NFS server sudo apt update sudo apt install nfs-kernel-server -y # 5. Configure exports sudo nano /etc/exports # Add: # /srv/STORAGE 192.168.50.172(rw,sync,no_subtree_check) # /srv/ARCHIVE 192.168.50.172(rw,sync,no_subtree_check) # 6. Apply + start NFS sudo exportfs -ra sudo systemctl restart nfs-kernel-server # 7. Verify from ANNIE showmount -e 192.168.50.10# CERBERUS REBUILD — 10 MINUTE CHECKLIST # 1. Create mount points sudo mkdir -p /srv/STORAGE /srv/ARCHIVE # 2. Mount drives (by label) sudo mount -L STORAGE /srv/STORAGE sudo mount -L ARCHIVE /srv/ARCHIVE # 3. Make mounts permanent sudo nano /etc/fstab # Add: # LABEL=STORAGE /srv/STORAGE ext4 defaults 0 2 # LABEL=ARCHIVE /srv/ARCHIVE ext4 defaults 0 2 # 4. Install NFS server sudo apt update sudo apt install nfs-kernel-server -y # 5. Configure exports sudo nano /etc/exports # Add: # /srv/STORAGE 192.168.50.172(rw,sync,no_subtree_check) # /srv/ARCHIVE 192.168.50.172(rw,sync,no_subtree_check) # 6. Apply + start NFS sudo exportfs -ra sudo systemctl restart nfs-kernel-server # 7. Verify from ANNIE showmount -e 192.168.50.10# CERBERUS REBUILD — 10 MINUTE CHECKLIST # 1. Create mount points sudo mkdir -p /srv/STORAGE /srv/ARCHIVE # 2. Mount drives (by label) sudo mount -L STORAGE /srv/STORAGE sudo mount -L ARCHIVE /srv/ARCHIVE # 3. Make mounts permanent sudo nano /etc/fstab # Add: # LABEL=STORAGE /srv/STORAGE ext4 defaults 0 2 # LABEL=ARCHIVE /srv/ARCHIVE ext4 defaults 0 2 # 4. Install NFS server sudo apt update sudo apt install nfs-kernel-server -y # 5. Configure exports sudo nano /etc/exports # Add: # /srv/STORAGE 192.168.50.172(rw,sync,no_subtree_check) # /srv/ARCHIVE 192.168.50.172(rw,sync,no_subtree_check) # 6. Apply + start NFS sudo exportfs -ra sudo systemctl restart nfs-kernel-server # 7. Verify from ANNIE showmount -e 192.168.50.10_# CERBERUS REBUILD — 10 MINUTE CHECKLIST # 1. Create mount points sudo mkdir -p /srv/STORAGE /srv/ARCHIVE # 2. Mount drives (by label) sudo mount -L STORAGE /srv/STORAGE sudo mount -L ARCHIVE /srv/ARCHIVE # 3. Make mounts permanent sudo nano /etc/fstab # Add: # LABEL=STORAGE /srv/STORAGE ext4 defaults 0 2 # LABEL=ARCHIVE /srv/ARCHIVE ext4 defaults 0 2 # 4. Install NFS server sudo apt update sudo apt install nfs-kernel-server -y # 5. Configure exports sudo nano /etc/exports # Add: # /srv/STORAGE 192.168.50.172(rw,sync,no_subtree_check) # /srv/ARCHIVE 192.168.50.172(rw,sync,no_subtree_check) # 6. Apply + start NFS sudo exportfs -ra sudo systemctl restart nfs-kernel-server # 7. Verify from ANNIE showmount -e 192.168.50.10_____________________________________
CERBERUS REBUILD CONTEXT (PASTE THIS)
I have reinstalled CERBERUS (Celeron NUC) and need to reconnect it to my existing system.
System layout
ANNIE (192.168.50.172) = main machine (client)
CERBERUS (192.168.50.10) = storage server (NFS)
Two drives:
STORAGE (primary)
ARCHIVE (secondary)
Goal
Mount both drives on CERBERUS at:
/srv/STORAGE
/srv/ARCHIVE
Export them via NFS to ANNIE
ANNIE mounts them at:
/mnt/STORAGE
/mnt/ARCHIVE
Known disk info (from previous system)
STORAGE UUID: 9f9c11ef-318b-4d39-b544-8fef87049095
ARCHIVE UUID: 76ad1e62-25d3-4bf7-840d-aa6c09658e7a
Expected CERBERUS config
/etc/fstab
UUID=9f9c11ef-318b-4d39-b544-8fef87049095 /srv/STORAGE ext4 defaults 0 2
UUID=76ad1e62-25d3-4bf7-840d-aa6c09658e7a /srv/ARCHIVE ext4 defaults 0 2
/etc/exports
/srv/STORAGE 192.168.50.172(rw,sync,no_subtree_check)
/srv/ARCHIVE 192.168.50.172(rw,sync,no_subtree_check)
Requirements
Use stable mount points (/srv/...)
Use labels or UUIDs (no /media/...)
Keep it minimal, no desktop auto-mounting
What I need
Walk me step-by-step to:
Mount drives correctly
Set up fstab
Install + configure NFS
Verify from ANNIE
What this gives you
When you paste that:
I instantly know your topology ✅
I know your disk IDs ✅
I know your mount philosophy ✅
We skip all exploration ✅
Optional (keep with your backup)
You already saved:
/mnt/STORAGE/system-backup/cerberus-rebuild.txt
That file = ground truth
If you want next:
I can give you a 10-minute rebuild checklist
or move into rsync cleanup plan
Credits Used: 15.8
.......................................................................................
since we have made those good nano changes on cerberous ... and will be doing a clean install later it seems a shame to have to do that again .. should we save those bits of the setup .. ?
RouteLLM
Routing to GPT-5.3 Instant
Yes — and this is exactly the right move.
You don’t want to remember this — you want to replay it.
✅ What to save (minimal but complete)
You only need to preserve 3 things from CERBERUS:
1. Mount logic (fstab)
bash
Copy
cat /etc/fstab
2. NFS export config
bash
Copy
cat /etc/exports
3. Drive identity (for sanity later)
bash
Copy
lsblk -f
✅ Save them to STORAGE (so they survive reinstall)
On CERBERUS:
bash
Copy
mkdir -p /srv/STORAGE/system-backup
Then:
bash
Copy
cat /etc/fstab > /srv/STORAGE/system-backup/cerberus-fstab.txt
cat /etc/exports > /srv/STORAGE/system-backup/cerberus-exports.txt
lsblk -f > /srv/STORAGE/system-backup/cerberus-disks.txt
✅ Optional (very useful)
Also save:
bash
Copy
hostnamectl > /srv/STORAGE/system-backup/cerberus-system.txt
ip a > /srv/STORAGE/system-backup/cerberus-network.txt
🧠Why this works
After reinstall you won’t:
guess UUIDs ❌
guess mount points ❌
guess exports ❌
You just:
reinstall OS
open these files
copy back into place
Done in minutes.
✅ Even better (one-file version)
If you want a single reference:
bash
Copy
(
echo "=== FSTAB ==="
cat /etc/fstab
echo
echo "=== EXPORTS ==="
cat /etc/exports
echo
echo "=== DISKS ==="
lsblk -f
) > /srv/STORAGE/system-backup/cerberus-rebuild.txt
✅ Result
You now have a rebuild blueprint.
👉 Do you want next:
a post-reinstall checklist (5 commands to restore everything)
or move into rsync cleanup plan
Credits Used: 13.49
...............................................
📔 Master Field Notes: The NUC Mesh System
Version: 1.0
Machines: ANNIE (i7 NUC9), CERBERUS (Celeron NUC), PI-GATEWAY (Pi 5)
1. System Architecture: The "Distributed Cluster"
Instead of thinking of these as three separate PCs, they function as a single unit:
ANNIE (The Cockpit): Intel NUC9i7QNX. The "Power Engine." Handles all visuals and the primary user interface.
CERBERUS (The Storage): Celeron NUC. The "Limb." Tucked away, dedicated to the 2 x HDD movie/file archive.
PI-GATEWAY (The Nerve Center): Raspberry Pi 5. Handles DHCP and internet gateway duties.
2. Graphics Stability (Primary Fix)
ANNIE initially suffered from "Jumping Windows" and transparency glitches due to a conflict between the NVIDIA driver and the XFCE compositor.
The Philosophy: "Horses that eat must pull." No-frills reliability over fancy effects.
The Fix: Disable the Compositor permanently.
Manual recovery: xfwm4 --replace --compositor=off &
Permanent Fix: Settings -> Window Manager Tweaks -> Compositor -> Untick "Enable display compositing".
Hardware Profile:
GPU: NVIDIA GTX 1650 (ASUSTeK).
Driver: Proprietary NVIDIA (Loaded via ubuntu-drivers autoinstall).
Monitor Logic: Dedicated GPU ports only. Use a $10 "DisplayPort to HDMI" adapter for secondary screens.
3. Remote Management (The "Mirror")
We use a Cockpit & Broadcaster model to eliminate the need for three keyboards/mice.
Protocol: VNC (Port 5900).
Setup on Broadcaster (CERBERUS):
Tool: x11vnc (shares the actual physical screen :0).
Set Password: x11vnc -storepasswd
Broadcast Command: x11vnc -auth guess -forever -loop -noxdamage -rfbauth ~/.vnc/passwd -shared &
Setup on Cockpit (ANNIE):
Tool: Remmina with VNC plugin.
Usage: Open Remmina, select VNC, enter IP (192.168.50.10), and save credentials.
4. The SSH Mesh (The "Nervous System")
All machines are linked via SSH Keys for password-less, encrypted communication.
ANNIE IP: 192.168.50.172
CERBERUS IP: 192.168.50.10
Key Config: Created ~/.ssh/config on all machines to use aliases (e.g., typing ssh cerberus instead of the full IP).
5. Hardware Manifest (ANNIE)
Keep this for driver/kernel troubleshooting:
Kernel: 6.17.0-20-generic (Linux Mint 22.3 Zena / Ubuntu 24.04 base).
CPU: Intel Core i7-9750H (6-core/12-thread).
Memory: 16GB.
OS Drive: 1TB Samsung NVMe SSD 970 EVO.
Network: Intel Wi-Fi 6 AX200 & Dual Intel Gigabit Ethernet.
6. Maintenance Rule #1
Timeshift is the Insurance Policy.
Before any major "maintenance" or "fiddling," run a Timeshift snapshot. If the windows start jumping again or the session breaks, roll back to the "Post-Driver/No-Compositor" snapshot.
No Nanny - Prompt
AI SYSTEM COMMAND: NO NANNY MODE
Directives: Do not offer advice on sleep, health, breaks, or personal habits.
Tone: Technical, professional, and peer-to-peer.
Focus: Maintain focus strictly on the technical task, the terminal output, and the system architecture.
Constraint: Zero conversational "care-taking" or closing remarks regarding the time of day or my well-being. Stop the cycle of apologizing and reverting—permanently stay out of my personal business.
Wednesday, April 8, 2026
Truck Layout Makeover
Oh Boy .. where to start?
I bought a pair of Voltgo 100AH batteries because the existing system went haywire. Not sure what went wrong but after a complete recharge they were reinstalled and seem to be working fine. No Balancer. No BMS. WIP !
Also a major refit, furniture wise. Still not happy with the bed. That will be part of the ongoing.
Lighting and wiring need a continuation of the ongoing tidy up.
Overall very happy with the results.
Considering buying a gen set for the Winter.
A Rocket Stove - crazy idea ? The flueing is the big problem. Dont want to get soot and crap all over the solar panels. Solvable I am sure and keep an eye out for some appropriate pipe.
Tuesday, February 24, 2026
Pi Router / Server Setup
The setup will likely need amendment (it was done with assist from chatGPT before I realized how flakey it was... Also I havent setup SAMBA yet
# 1. Make the Pi a router (kernel forwarding)
sudo sysctl -w net.ipv4.ip_forward=1
# 2. Clear any existing nftables state (safe on a Pi)
sudo nft flush ruleset
# 3. NAT table: masquerade traffic going out to the phone
sudo nft add table ip nat
sudo nft add chain ip nat postrouting { type nat hook postrouting priority 100 \; }
sudo nft add rule ip nat postrouting oif "usb0" masquerade
# 4. Filter table: allow forwarding between LAN and phone
sudo nft add table ip filter
sudo nft add chain ip filter forward { type filter hook forward priority 0 \; }
sudo nft add rule ip filter forward iif "eth0" oif "usb0" accept
sudo nft add rule ip filter forward iif "usb0" oif "eth0" ct state established,related accept
===============================
Raspberry Pi USB-Tether Router
===============================
ASSUMPTIONS
-----------
- Android phone provides internet via USB tethering
- On the Pi:
usb0 = upstream (phone)
eth0 = downstream (LAN / TP-Link / NUC)
- Temporary routing + NAT has already been tested and works
--------------------------------
1. ENABLE IP FORWARDING (PERMANENT)
--------------------------------
echo 'net.ipv4.ip_forward=1' | sudo tee /etc/sysctl.d/99-ipforward.conf
sudo sysctl --system
--------------------------------
2. ENSURE NFTABLES IS INSTALLED & ENABLED
--------------------------------
sudo apt update
sudo apt install -y nftables
sudo systemctl enable --now nftables
--------------------------------
3. WRITE PERSISTENT NFTABLES RULESET
--------------------------------
sudo tee /etc/nftables.conf >/dev/null <<'EOF'
#!/usr/sbin/nft -f
flush ruleset
# NAT table: masquerade traffic going out to the phone
table ip nat {
chain postrouting {
type nat hook postrouting priority 100;
oifname "usb0" masquerade
}
}
# Filter table: allow forwarding between LAN and phone
table ip filter {
chain forward {
type filter hook forward priority 0;
iifname "eth0" oifname "usb0" accept
iifname "usb0" oifname "eth0" ct state established,related accept
}
}
EOF
--------------------------------
4. LOAD RULES NOW (WITHOUT REBOOT)
--------------------------------
sudo nft -f /etc/nftables.conf
sudo systemctl restart nftables
--------------------------------
5. VERIFICATION (OPTIONAL BUT SANE)
--------------------------------
# On the Pi:
sysctl net.ipv4.ip_forward
nft list ruleset
# From a downstream machine (e.g. NUC):
# ping 192.168.1.1
# ping 1.1.1.1
--------------------------------
END
--------------------------------
Raspberry Pi USB-Tether Router
(Android phone → Pi → LAN)
PERSISTENT CONFIG
===============================ASSUMPTIONS
-----------
- Android phone provides internet via USB tethering
- On the Pi:
usb0 = upstream (phone)
eth0 = downstream (LAN / TP-Link / NUC)
- Temporary routing + NAT has already been tested and works
--------------------------------
1. ENABLE IP FORWARDING (PERMANENT)
--------------------------------
echo 'net.ipv4.ip_forward=1' | sudo tee /etc/sysctl.d/99-ipforward.conf
sudo sysctl --system
--------------------------------
2. ENSURE NFTABLES IS INSTALLED & ENABLED
--------------------------------
sudo apt update
sudo apt install -y nftables
sudo systemctl enable --now nftables
--------------------------------
3. WRITE PERSISTENT NFTABLES RULESET
--------------------------------
sudo tee /etc/nftables.conf >/dev/null <<'EOF'
#!/usr/sbin/nft -f
flush ruleset
# NAT table: masquerade traffic going out to the phone
table ip nat {
chain postrouting {
type nat hook postrouting priority 100;
oifname "usb0" masquerade
}
}
# Filter table: allow forwarding between LAN and phone
table ip filter {
chain forward {
type filter hook forward priority 0;
iifname "eth0" oifname "usb0" accept
iifname "usb0" oifname "eth0" ct state established,related accept
}
}
EOF
--------------------------------
4. LOAD RULES NOW (WITHOUT REBOOT)
--------------------------------
sudo nft -f /etc/nftables.conf
sudo systemctl restart nftables
--------------------------------
5. VERIFICATION (OPTIONAL BUT SANE)
--------------------------------
# On the Pi:
sysctl net.ipv4.ip_forward
nft list ruleset
# From a downstream machine (e.g. NUC):
# ping 192.168.1.1
# ping 1.1.1.1
--------------------------------
END
--------------------------------
This aint Kansas, Dorothy
Standing waiting for a man to show
Wide-eyed, one eye fixed on the door
This waiting is killing me
It's wearing me down
Day in, day out
My feet are burning holes in the ground
It's wearing me down
Day in, day out
My feet are burning holes in the ground
Darkness warmer than a bedroom floor
When I'm on the prowl, you better run like hell
You know it makes sense, don't even think about it
Life and death are things you just do when you're bored
The flight was the last one the pilot did before he retired.
Say fear is a man's best friend
Say fear is a man's best friend
Say fear is a man's best friend
You add it up, it brings you down
You add it up, it brings you down
Say fear is a man's best friend
Say fear is a man's best friend
You add it up, it brings you down
You add it up, it brings you down
Home is living like a man on the run
Trails leading nowhere, where to, my son?
We're already dead, but not yet in the ground
Come on, shake my helping hand
Come on, shake my helping hand
I'll show you around
You know it makes sense, don't even think about it
Life and death are things you just do when you're bored
Say fear is a man's best friend
Say fear is a man's best friend
Say fear is a man's best friend
Say fear is a man's best friend
Say fear is a man's best friend
You add it up, it brings you down
Say fear is a man's best friend
Say fear is a man's best friend
Say fear is a man's best friend
You add it up, it brings you down
Even prettier at night.
You add it up, it brings you down
Say fear is a man's best friend
Say fear is a man's best friend
Say fear is a man's best friend
Say fear is a man's best friend
Say fear is a man's best friend
Say fear is a man's best friend
Say fear is a man's best friend
Say fear is a man's best friend
Say fear is a man's best friend
Say fear is a man's best friend
Say fear is a man's best friend
Say fear is a man's best friend
Say fear is a man's best friend
Say fear is a man's best friend
Say fear is a man's best friend
Say fear is a man's best friend
Friday, December 19, 2025
The Shark - E J Pratt
E. J. Pratt (1882–1964) was a Canadian poet with a sailor’s eye and a theologian’s nerve. Trained for the ministry, he abandoned pulpits for poems, and brought with him a moral seriousness stripped of sentimentality. His work is often nautical, scientific, and unsparingly physical. Pratt writes nature not as metaphorical comfort, but as mechanism—precise, indifferent, and lethal when necessary.
The Shark is one of his cleanest cuts.
The Shark
He seemed to know the harbour,
So leisurely he swam;
His fin,
Like a piece of sheet-iron,
Three-cornered,
And with knife-edge,
Stirred not a bubble
As it moved
With its base-line on the water.
His body was tubular
And tapered
And smoke-blue,
And as he passed the wharf
He turned,
And snapped at a flat-fish
That was dead and floating.
And I saw the flash of a white throat,
And a double row of white teeth,
And eyes of metallic grey,
Hard and narrow and slit.
Then out of the harbour,
With that three-cornered fin
Shearing without a bubble the water
Lithely,
Leisurely,
He swam—
That strange fish,
Tubular, tapered, smoke-blue,
Part vulture, part wolf,
Part neither—for his blood was cold.
So leisurely he swam;
His fin,
Like a piece of sheet-iron,
Three-cornered,
And with knife-edge,
Stirred not a bubble
As it moved
With its base-line on the water.
His body was tubular
And tapered
And smoke-blue,
And as he passed the wharf
He turned,
And snapped at a flat-fish
That was dead and floating.
And I saw the flash of a white throat,
And a double row of white teeth,
And eyes of metallic grey,
Hard and narrow and slit.
Then out of the harbour,
With that three-cornered fin
Shearing without a bubble the water
Lithely,
Leisurely,
He swam—
That strange fish,
Tubular, tapered, smoke-blue,
Part vulture, part wolf,
Part neither—for his blood was cold.
Short notes on The Shark
No symbolism required.
The shark is not a stand-in for evil, capitalism, war, or the subconscious. It is a shark. Pratt’s restraint is the point.Engineering language.
“Sheet-iron,” “knife-edge,” “tubular,” “tapered.” This is a poem written with calipers, not adjectives borrowed from romance.Motion without drama.
“Leisurely” is doing heavy work. The menace lies in the absence of urgency.Cold blood matters.
The final line denies moral analogy. “Part vulture, part wolf” is immediately revoked. The shark belongs to neither warm-blooded hunger nor carrion logic.Harbour, not open sea.
This is civilization’s edge. The shark knows it. That’s the quiet unease.Modern, not Victorian.
Early 20th century. Post-Darwin, post-romance. The universe does not explain itself, and Pratt doesn’t ask it to.
Monday, December 15, 2025
Thursday, December 11, 2025
Why Speedtest Lies (and What Your Network Is Actually Doing)
Version: Bush Mobile Data—Observed in the Wild
1. Speedtest is an Advertising Tool, Not a Diagnostic
Speedtest exists to:
-
flatter telcos,
-
reassure customers,
-
keep everyone feeling warm and connected.
It is not designed to reveal network failures.
Its job is to present the best-case number it can wring out of your connection, even if the underlying link is dying like a lizard in the sun.
2. It Cheats — By Design
Speedtest stacks the deck:
-
Picks an ideal server (close to you, low latency, cooperative).
-
Uses parallel TCP streams to inflate throughput.
-
Smooths out jitter so the graph looks pretty.
-
Retries aggressively to mask packet loss.
This creates the appearance of a stable, high-bandwidth link even when the network is held together with fencing wire and hope.
3. Why You See “20 Mbps… 0.1 Mbps… 20 Mbps”
What looks like a square wave isn’t real bandwidth variation.
It’s the cheat system breaking down temporarily.
When the tower chokes:
-
routing collapses
-
packet loss spikes over 80–90%
-
TCP stalls completely
-
Speedtest can’t fake it anymore → drops to 0.1 Mbps
When the tower recovers for a moment:
-
a handful of packets get through
-
Speedtest’s parallel streams kick back in
-
the illusion resumes → 20 Mbps!
You’re not seeing performance.
You’re seeing optimistic marketing interspersed with reality.
4. The Real Condition of the Network
Your proper tools tell the truth:
ping → catastrophic loss
-
80–100% packets dropped
-
regular “destination unreachable”
-
no stable path to anywhere
mtr → routing collapses mid-path
-
hops flapping
-
latency in the thousands of milliseconds
-
segments disappearing entirely
iperf3 → no sustained throughput
-
can’t negotiate
-
can’t maintain a TCP session
-
server unreachable most of the time
This is structural failure, not “slow internet.”
5. What Speedtest Can’t Admit
If Speedtest were honest, it would show:
“Your connection is unusable.”
But honesty doesn't sell telecom services.
So instead it:
-
cherry-picks its best 2 seconds,
-
prints a big shiny number,
-
and pretends the rest of reality didn’t happen.
6. The Bottom Line
Speedtest lies because it's designed to.
It reports potential performance, not actual conditions.
Your tools revealed the truth:
-
Massive packet loss
-
Routing instability
-
Flapping radio layer
-
Near-zero usable bandwidth
-
A connection that works by coincidence, not design
If a network cannot deliver consistent packets,
it doesn’t matter how fast Speedtest claims you are in theory.
7. Field Rule of Thumb
Always trust packet loss and routing behaviour.
Never trust a single-number speed result.
Speedtest is a postcard.
ping, mtr, and iperf3 are the autopsy.
Note : Yeah, it's a bit like the bloke whose wife never cheats on him, except for when he actually finds her in his bed with the milkman, and then he walks out of the room and she's not cheating on him anymore.
FIELD DIAGNOSTIC — “HONEST LINK TEST
MARK’S FIELD DIAGNOSTIC — “HONEST LINK TEST”
Purpose:
Run three real-world tests that expose the true condition of a network link (jitter, loss, routing stability, sustained throughput).
Replaces Speedtest completely.
COMMAND BLOCK (copy/paste and run as-is)
# 1. Stability & packet loss (50 probes to Cloudflare)
ping -c 50 1.1.1.1
# 2. Route quality (live traceroute + loss/jitter per hop)
mtr -rw 1.1.1.1
# 3. Sustained throughput test (TCP, real flow)
iperf3 -c iperf.scottlinux.com
INTERPRETATION (brief)
1. ping
-
0% loss + tight latency → good link
-
Loss > 1% → unstable
-
Jitter swings > 30 ms → VPN, STT, games, Zoom all degrade
-
“Destination Net Unreachable” → upstream routing failure (tower/backhaul dead)
2. mtr
-
Shows where packets die.
-
Loss at hop 1 = tower or local NAT failure
-
Loss at hop 2–3 = backhaul congestion/microwave link fault
-
Loss only at far hops = upstream ISP issues
This is the “forensic” tool.
3. iperf3
-
Tests real, sustained throughput — no cheating, no smoothing.
-
Smooth graph → link can carry load
-
Bursts/stalls → congestion or jitter
-
Disconnects → upstream failure
If iperf3 can’t connect at all → the link isn’t routing.
CONCLUSION
This triple test reveals:
-
jitter
-
packet loss
-
route instability
-
tower congestion
-
backhaul collapse
-
VPN viability
-
torrent viability
-
STT reliability
-
true usable bandwidth
Speedtest hides all of these.
This rig exposes them instantly.
---------------------------------------------------------------------------------------------------------------
Righto — here’s your compact, portable field-diagnostic script.
Name it whatever you like; I’ll call it netcheck for simplicity.
This gives you:
-
one command
-
clean output
-
no dependencies beyond
mtrandiperf3(install once) -
works anywhere
1. The Script (netcheck)
Copy/paste this into a file:
#!/bin/bash
echo "===================================="
echo " Mark's Honest Link Test – netcheck "
echo "===================================="
echo
# ---- 1. PING TEST ----
echo "[1] PING: Stability + Loss"
echo "--------------------------"
ping -c 50 1.1.1.1
echo
echo
# ---- 2. MTR TEST ----
echo "[2] MTR: Route Quality (loss per hop)"
echo "--------------------------------------"
mtr -rw 1.1.1.1
echo
echo
# ---- 3. IPERF3 THROUGHPUT ----
echo "[3] IPERF3: Sustained Throughput Test"
echo "--------------------------------------"
iperf3 -c iperf.scottlinux.com
echo
echo "Done."
2. How to install it
Save it somewhere sensible — I’d suggest:
~/bin/netcheck
Then make it executable:
chmod +x ~/bin/netcheck
If ~/bin isn’t already in your PATH, add it by editing ~/.bashrc:
echo 'export PATH="$HOME/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc
3. How to run it
Anytime, anywhere:
netcheck
That’s it.
No mucking around.
It runs the three honest tests in sequence:
-
ping → stability
-
mtr → route diagnosis
-
iperf3 → sustained usable throughput
You get a complete truth readout of the link without touching Speedtest or any GUI.
4. Notes
-
If
mtroriperf3aren’t installed, do this once:
sudo apt install mtr iperf3
-
If iperf3’s test server is ever unreachable (rare), swap in Cloudflare’s:
iperf3 -c speedtest.wobcom.de
But the default one is rock solid.
If you want a version that logs automatically to a timestamped file for later analysis, I can package that too.
Subscribe to:
Posts (Atom)


