Rebuilt the Blog. Again.
#meta#colophon
Putting It Together: A Worked Inventory Replication Example
#gamedev#unreal#cpp#networking#replication
Constructing It Client-Side, and the Blueprint Surface
#gamedev#unreal#cpp#networking#replication
FastArraySerializer: Replicating Lists Without Resending Everything
#gamedev#unreal#cpp#networking#replication
Custom NetSerialize: Packing Your Fields by Hand
#gamedev#unreal#cpp#networking#replication
USTRUCTs as Network Payloads, and Exposing Them to Blueprints
#gamedev#unreal#cpp#networking#replication
Breaking Up Data Objects to Send Across the Network in Unreal
#gamedev#unreal#cpp#networking#replication
The Day I Took Down My Whole Network With One DNS Change
#networking#homelab
Blinking An LED On An STM32 With Embedded Rust
#rust#programming
A KVM Over IP I Built From A Spare Pi
#hardware#electronics
The Afternoon A Full /var Took The Service Down
#debugging#ops
The Bug That Refused To Exist Under strace
#debugging#ops
Watching A Cloud Region Wobble In Real Time
#news#opinion
Cross-Compiling Go For A Little ARM Box Without Losing My Mind
#golang#programming
How The 2018 Edition Quietly Fixed My Rust
#rust#programming
Fine-Tuning a Small Model to Do One Dull Thing Well
#ai#llm
Klipper Turned My Slow Printer Into a Fast One
#hardware#3dprinting
Multi-WAN Failover That Actually Fails Over
#networking#homelab
Parsing Without the Regret, Using nom
#rust#programming
The Deprecation That Caught The Whole Timeline Off Guard
#news#opinion
The Bug That Only Existed When I Was Not Looking
#debugging#ops
A Spare GPU and a Model That Lives in My House
#ai#llm
Trait Objects vs Generics, With Numbers
#rust#programming
A Systemd Unit That Refused To Stay Dead
#linux#sysadmin#ops
Too Many Dashboards And Not Enough Sense
#homelab#selfhosting
The Day It Was, In Fact, DNS
#debugging#ops
Printing the Parts That Fix the Printer
#hardware#3dprinting
The Keynote Everyone Has Already Decided About
#news#opinion
The Launch Everyone Is Pretending To Have Opinions About
#news#opinion
The Deprecation Nobody Read the Email About
#news#opinion
The systemd Unit That Refused to Stay Dead
#linux#sysadmin#ops
Designing the Bracket Instead of Buying One
#hardware#3dprinting
Go Generics, and the Quiet Question of Whether I Need Them
#golang#programming
Cache Misses, and Why the Fast Version Was Slow
#performance#ops
KVM Over IP, Built From a Pi
#hardware#electronics
Reflashing a Router I Should Have Left Alone
#hardware#electronics
A Memory Leak That Was a Map I Never Cleared
#debugging#ops
A Shell Prompt That Tells Me What I Need
#tooling#dev
Moving Services Off the Cloud and Back Home
#homelab#selfhosting
Fighting the Borrow Checker, and Losing Gracefully
#rust#programming
How fzf Quietly Rewired the Way I Use a Terminal
#tooling#dev
Moving Root Onto ZFS
#linux#sysadmin#ops
Threading context.Context Through, Properly This Time
#golang#programming
A Cheap Logic Analyser and Finally Seeing the Bus
#hardware#electronics
QoS for a Household That Streams Absolutely Everything
#networking#homelab
The Service That Wouldn't Stay Stopped
#linux#sysadmin#ops
A Week Spent Watching a Goroutine Count Climb
#golang#programming
The Goroutine Leak Hiding in a Timeout
#golang#programming
How tmux Stopped Me Losing Work to a Dropped SSH Connection
#tooling#dev
A Kernel Panic I Could Actually Reproduce
#linux#sysadmin#ops
Three Days Lost to a Race I Couldn't Reproduce
#debugging#ops
Finally Understanding Unreal's Gameplay Framework
#gamedev#unreal#cpp
A Book That Changed How I Think About Systems
#personal#life
Backups I Actually Test Now
#homelab#selfhosting
The Router That Took Two Flashes to Forgive Me
#hardware#electronics
Reflashing a Router I Should Have Left Alone
#hardware#electronics
A Shell Prompt That Tells Me What I Need
#tooling#dev
The Announcement Everyone's Arguing About, And What It's Really For
#news#opinion
TrueNAS and the Great Disk Shuffle
#homelab#selfhosting
Threading context.Context Through, And Where It Goes Wrong
#golang#programming
Multi-WAN Failover That Actually Fails Over
#networking#homelab
My Dotfiles, Finally In Order
#tooling#dev
A Prompt That Tells Me What I Actually Need
#tooling#dev
Fixing A PSU Instead Of Binning It
#hardware#electronics
The Big Launch, And Why I'm Not Rushing To Migrate
#news#opinion
A Runaway Process, And The cgroup That Caught It
#linux#sysadmin#ops
Losing Gracefully To The Borrow Checker
#rust#programming
The Goroutine Leak That Hid In Plain Sight
#golang#programming
The Keynote Everyone Has An Opinion On
#news#opinion
Klipper, and a Printer That Suddenly Flew
#hardware#3dprinting
A Cheap Logic Analyser and Finally Seeing the Bus
#hardware#electronics
Running My Own Recursive Resolver
#networking#homelab
The Five Git Aliases I'd Miss Most
#tooling#dev
Too Many Dashboards, and the Slow Walk Back
#homelab#selfhosting
TrueNAS and the Great Disk Shuffle
#homelab#selfhosting
When A Bug Gets A Logo Before It Gets A Patch
#news#opinion
How We Did Rust Error Handling Before anyhow Saved Us All
#rust#programming
The Five Git Aliases I'd Miss On A New Machine
#tooling#dev
When a Tool You Depend On Gets Bought
#news#opinion
The Helpful Assistant That Confidently Deleted My Branch
#ai#llm
Reliable Does Not Mean What You Think In Unreal RPCs
#gamedev#unreal#cpp
I Benchmarked Trait Objects Against Generics So You Don't Have To
#rust#programming
The Book That Made Me Stop Drawing Boxes and Start Drawing Loops
#personal#life
Running a Local LLM on Hardware That Should Have Said No
#ai#llm
The Edition That Quietly Reshaped How I Write Rust
#rust#programming
Running llama.cpp on a Machine That Should Know Better
#ai#llm
How to Move House Without Losing the Homelab
#personal#life
A Weekend Where Nobody Paged Me
#personal#life
The Off-by-One That Three of Us Approved
#debugging#ops
I Printed the Bracket Instead of Ordering It
#hardware#3dprinting
When logrotate Wins the Rotation but Loses the Logs
#linux#sysadmin#ops
cgroups v2 and a Runaway Process
#linux#sysadmin#ops
The Bug Was in My Head, Not the Function
#debugging#ops
Everyone Has a Take on the Keynote, Here's Mine
#news#opinion
Generics in Go: Do I Even Need Them?
#golang#programming
It Was the MTU. It's Always the MTU.
#debugging#ops
tcpdump Saved Me Again
#debugging#ops
tmux, and Never Losing a Session Again
#tooling#dev
Another Week, Another Disclosure, and the Same Tired Scramble
#news#opinion
I Wired an LLM Into My Shell, Here's Where It Went Wrong
#ai#llm
IPv6 at Home, Eventually
#networking#homelab
The Sci-Fi Film I Was Sure I'd Hate
#personal#life
I Rewrote a Shell Script in Rust, and I'd Do It Again
#rust#programming
The Off-By-One That Three of Us Approved
#debugging#ops
The Bug I Solved Halfway Up a Hill
#personal#life
Reflashing a Router I Should Have Left Alone
#hardware#electronics
When the Code Was Right and I Was the Bug
#debugging#ops
The Bug Was in My Assumptions, Not the Code
#debugging#ops
Working From Home, the Honest Version
#personal#life
the leak was a map that only ever grew
#debugging#ops
the garage rack, two years on, regrets included
#homelab#selfhosting
bgp in the homelab, because why not
#networking#homelab
context.context, and learning to thread it through
#golang#programming
a keyboard you build is mostly a firmware project with switches attached
#hardware#electronics
when the tool you depend on gets bought, and what you do next
#news#opinion
how I bricked a router, and the long way back to a working one
#hardware#electronics
the query that was fine until it wasn't
#performance#ops
my prompt earns its keep
#tooling#dev
a tiny model on a tinier machine
#ai#llm
the router that worked fine until I touched it
#hardware#electronics
i let the agent type, but i keep my hand on the wheel
#ai#llm
ipv6 at home, after years of putting it off
#networking#homelab
when in doubt, watch the wire
#debugging#ops
the llm in my shell, and where it drew blood
#ai#llm
ipv6 at home, after years of meaning to
#networking#homelab
the cupboard model, one card and one prompt
#ai#llm
the film i was sure i'd hate
#personal#life
a spare gpu, a quiet llm, and a weekend gone
#ai#llm
the session that survived the dropped connection
#tooling#dev
the fast version was slower, and the cache was why
#performance#ops
i finally stopped typing grep -r
#tooling#dev
a spare 3060 and an evening with ollama
#ai#llm
what a syscall actually costs, with numbers
#performance#ops
rewriting a shell script in rust, and counting the cost
#rust#programming
half the internet leaned on one region, and it showed
#news#opinion
a weather station that's right about everything except the rain
#hardware#electronics
the borrow checker was right and i was tired
#rust#programming
the cron job that fired twice and told no one
#debugging#ops
i put bgp in the spare room and i regret nothing
#networking#homelab
bringing it all back home, one service at a time
#homelab#selfhosting
how cgroups v2 caught a runaway before it took the box down
#linux#sysadmin#ops
a full walkthrough of fine-tuning a small model for one dull task
#ai#llm
fine-tuning a tiny model to do one dull job well
#ai#llm
keeping the telly happy when everyone's online at once
#networking#homelab
losing to the borrow checker, then thanking it
#rust#programming
making peace with rootless podman
#linux#sysadmin#ops
how much swap, and why i stopped arguing about it
#linux#sysadmin#ops
the tmux setup that means i never lose work to a dropped ssh again
#tooling#dev
a kernel panic that finally held still long enough to catch
#linux#sysadmin#ops
three days lost to a gap between two lines
#debugging#ops
when journald quietly ate forty gigabytes
#linux#sysadmin#ops
a shell prompt that tells me what i actually need
#tooling#dev
a five pound capacitor versus a new power supply
#hardware#electronics
the keynote everyone has already decided about
#news#opinion
bgp in the homelab, because why not
#networking#homelab
qos for a household that streams everything
#networking#homelab
moving root onto zfs and not regretting it
#linux#sysadmin#ops
tailscale, and finally giving up on port forwarding
#networking#homelab
a backup you've never restored is just a hope
#homelab#selfhosting
one compose file to rule the homelab
#homelab#selfhosting
is multi-material printing actually worth the faff?
#hardware#3dprinting
search that understands what you meant, running on the laptop
#ai#llm
i built fourteen dashboards and look at none of them
#homelab#selfhosting
i don't reach for grep first anymore
#tooling#dev
the day journald quietly ate forty gigabytes
#linux#sysadmin#ops
the quiet cost of a licence change nobody asked for
#news#opinion
when journald quietly ate twelve gigs
#linux#sysadmin#ops
my first proper fight with unreal's replication
#gamedev#unreal#cpp
a small go daemon, actually finished
#golang#programming
the backup you never restore is just hope on a disk
#homelab#selfhosting
nextcloud, for the third time, and the setup that finally stuck
#homelab#selfhosting
the ssh drop that finally made tmux stick
#tooling#dev
the cron job that ran twice and told no one
#debugging#ops
running a 7b model on hardware that should know better
#ai#llm
how much swap, finally answered for my own boxes
#linux#sysadmin#ops
watching an outage land while the status page stayed green
#news#opinion
the first few prints, and the first few failures
#hardware#3dprinting
the makefile as a memory aid, not a build system
#tooling#dev
moving root onto zfs without losing my nerve
#linux#sysadmin#ops
the cron job that fired twice and told no one
#debugging#ops
it was the mtu, it's always the mtu
#debugging#ops
pulling a few things back off the cloud
#homelab#selfhosting
perf top on a box that had no business being busy
#performance#ops
making peace with the first layer
#hardware#3dprinting
where the context goes, the cancellation follows
#golang#programming
i built nineteen dashboards and looked at two
#homelab#selfhosting
the day i deleted my logging wrapper
#golang#programming
threading context.Context through, and finally understanding why
#golang#programming
mikrotik or pfsense? a year on, the verdict is "it depends" and i mean it
#networking#homelab
the year i stopped writing iptables rules by hand
#linux#sysadmin#ops
moving twelve terabytes without losing my nerve
#homelab#selfhosting
letting the robot drive, with my hand near the wheel
#ai#llm
how home assistant quietly colonised my free time
#homelab#selfhosting
multi-material printing, and the honest cost of those colours
#hardware#3dprinting
what a syscall actually costs you, with numbers
#performance#ops
building once on my laptop, running on the arm box in the cupboard
#golang#programming
klipper turned my slow printer into a fast one overnight
#hardware#3dprinting
my first rag pipeline retrieved confidently and answered wrong
#ai#llm
making peace with the first layer
#hardware#3dprinting
a kvm over ip i could actually trust, built from a pi
#hardware#electronics
i found my old film camera and it found my weekends
#personal#life
the unreal rpc reliability flag that quietly ate my events
#gamedev#unreal#cpp
the book that taught me to stop blaming the operator
#personal#life
how much does crossing into the kernel actually cost
#performance#ops
working from home, the bits nobody puts in the LinkedIn post
#personal#life
the leak was a cache that only ever grew
#debugging#ops
letting an agent touch the code, with the safety on
#ai#llm
a small agent that books its own train tickets
#ai#llm
replacing every disk in the pool without losing my nerve
#homelab#selfhosting
a prompt that earns its keep
#tooling#dev
putting a spare gpu to work as a private model server
#ai#llm
working from home, with the gloss taken off
#personal#life
bringing the small things back home from the cloud
#homelab#selfhosting
making multi-wan failover do the one thing it promises
#networking#homelab
when the writeback storm hits and everything stalls
#linux#sysadmin#ops
the smallest useful daemon i've written this year
#golang#programming
forty minutes in cad beats a fortnight waiting for a bracket
#hardware#3dprinting
two years of rust in production, and an honest tally
#rust#programming
building multi-WAN failover that fails over when you're not watching
#networking#homelab
real certificates for services that never touch the internet
#homelab#selfhosting
poking at a usb-c charger until it gave me 20 volts
#hardware#electronics
the average is lying to you, look at p99
#performance#ops
a year of MikroTik after a decade of pfSense
#networking#homelab
the router worked fine until i decided to improve it
#hardware#electronics
a tiny model that does one dull thing well
#ai#llm
fzf, and the slow death of remembering exact filenames
#tooling#dev
the printer printing its own spare parts
#hardware#3dprinting
i fired my ISP's DNS and ran my own resolver instead
#networking#homelab
building a keyboard was the easy bit, the firmware was the fun bit
#hardware#electronics
watching syscalls without a debugger holding the door open
#performance#ops
the allocation i couldn't see until i put it under load
#golang#programming
log/slog, and the day go logging stopped being a religious argument
#golang#programming
the query that wasn't slow, it was just run a million times
#performance#ops
how we did rust error handling before anyhow turned up
#rust#programming
which local model actually helps me write code
#ai#llm
a cheap logic analyser, and finally seeing the bus
#hardware#electronics
another quiet deprecation, another loud morning
#news#opinion
a weather station that is right most of the time
#hardware#electronics
a year on mikrotik, and i'm not going back to pfsense
#networking#homelab
the process that ate a box and the cgroup that didn't
#linux#sysadmin#ops
the unreal rpc that arrived sometimes, eventually
#gamedev#unreal#cpp
persuading a usb-c charger to hand over 20 volts
#hardware#electronics
another drive, another episode i didn't mean to finish
#personal#life
i built an agent that does the boring bits, and learned where the seams are
#ai#llm
the bracket didn't exist, so i drew it
#hardware#3dprinting
the router that worked fine until i improved it
#hardware#electronics
five hours of motorway and the back catalogue of a podcast i'd been ignoring
#personal#life
one compose file to rule the homelab (and the regret that followed)
#homelab#selfhosting
running a 7b model on a thin client i bought for a tenner
#ai#llm
lessons from the second pi-kvm i built
#hardware#electronics
a pi-kvm in a 3d-printed box, finally
#hardware#electronics
qos for a house that never stops streaming
#networking#homelab
stopping journald from eating the disk
#linux#sysadmin#ops
the service that wouldn't die, and the restart loop that hid it
#linux#sysadmin#ops
async/await landed and i rewrote everything
#rust#programming
chasing a race condition for three days
#debugging#ops
four hours of motorway and one very good podcast
#personal#life
letting an agent touch the code, but never on its own
#ai#llm
go generics, and the day i finally reached for them
#golang#programming
the second draft of my little agent
#ai#llm
the fast version was slower, and the cache told me why
#performance#ops
the ssh dropped, and my work was still there
#tooling#dev
fzf, or how i stopped remembering paths
#tooling#dev
the dotfiles repo i should have made years ago
#tooling#dev
a weekend with the pager switched off
#personal#life
making peace with the first layer
#hardware#3dprinting
a small agent that does the boring bits
#ai#llm
three days for a missing lock
#debugging#ops
i rewrote a 40-line bash script in rust, here's the honest tally
#rust#programming
the smallest agent loop that earned its keep
#ai#llm
the average response time that hid a fire
#performance#ops
ripping out openvpn and not missing it
#networking#homelab
the query that was quietly killing us
#performance#ops
three days chasing a bug that only existed sometimes
#debugging#ops
switching editors one keybinding at a time
#tooling#dev
when a licence change costs more than money
#news#opinion
the multiplayer prototype that put me firmly in my place
#gamedev#unreal#cpp
the bracket I printed instead of bought
#hardware#3dprinting
fzf quietly rewired how I use the terminal
#tooling#dev
an esp32 weather station that mostly works
#hardware#electronics
generics in go, do i even need them
#golang#programming
reverse proxy, certs, and let's encrypt at home
#homelab#selfhosting
the cost of a syscall, measured
#performance#ops
the vulnerability industrial complex
#news#opinion
the slow joy of reading on paper again
#personal#life
the day dns took down everything
#debugging#ops
poking at io_uring for an afternoon
#linux#sysadmin#ops
i ran kubernetes at home, and mostly regret it
#homelab#selfhosting
my first rag pipeline retrieved confidently wrong things
#ai#llm
parsing a config format with nom
#rust#programming
a language model lives in my terminal now, and mostly that's fine
#ai#llm
blinking an LED the hard way, in Rust
#rust#programming
a year on MikroTik after a decade on pfSense, the honest verdict
#networking#homelab
moving root onto zfs without losing my nerve
#linux#sysadmin#ops
the query that was fine until it wasn't
#performance#ops
backups you haven't restored are just wishes
#homelab#selfhosting
the rollback that turned a bad upgrade into a non-event
#linux#sysadmin#ops
a tiny agent, a tool loop, and a healthy fear of let-it-rip
#ai#llm
the borrow checker was right and i was wrong, again
#rust#programming
a weekend where my phone was just a phone
#personal#life
the prompt earns its place on every line
#tooling#dev
the resolver lives here now
#networking#homelab
parsing a config format with nom, one combinator at a time
#rust#programming
fuzzy finding is now muscle memory
#tooling#dev
when everything works except the big stuff
#networking#homelab
everyone's talking about the same model again
#news#opinion
my first proper fight with unreal replication
#gamedev#unreal#cpp
how i learned to lose to the borrow checker gracefully
#rust#programming
makefiles for things that aren't c
#tooling#dev
the spare gpu finally earns its keep
#ai#llm
the ssh dropped and i didn't care
#tooling#dev
the cron job that ran twice and told no one
#debugging#ops
when the thing you depend on gets bought
#news#opinion
mtu, the silent killer
#networking#homelab
my first proper fight with unreal's replication
#gamedev#unreal#cpp
an acquisition lands on a tool i actually use
#news#opinion
nextcloud, again, but properly this time
#homelab#selfhosting
taming journald disk usage
#linux#sysadmin#ops
trait objects vs generics, with actual numbers
#rust#programming
the afternoon i broke dns and then couldn't look up how to fix it
#networking#homelab
docker compose for the whole house
#homelab#selfhosting
printing parts to fix the printer
#hardware#3dprinting
the backup that overlapped itself and nobody noticed
#debugging#ops
building once on the laptop, running on the pi
#golang#programming
picking up the film camera again after a decade in the cupboard
#personal#life
when someone buys the tool you depend on
#news#opinion
i found my film cameras again, and i'm glad i did
#personal#life
how much swap, and the answer nobody on the internet agrees on
#linux#sysadmin#ops
pulling vlans through a network that had none
#networking#homelab
the book that taught me to look for the constraint
#personal#life
letting an agent touch the code, with the safety on
#ai#llm
a small agent that earns its keep
#ai#llm
kubernetes in the spare room, and why i kept some of it
#homelab#selfhosting
the day fzf quietly took over my shell
#tooling#dev
what local code models are actually good for, after a month of trying
#ai#llm
the printer that prints its own spare parts
#hardware#3dprinting
cutting a flat home network into vlans without taking it all down
#networking#homelab
context.Context, and learning to thread it all the way through
#golang#programming
i had eleven dashboards and could not tell you if anything was broken
#homelab#selfhosting
reliable does not mean ordered, and other ways unreal rpcs lied to me
#gamedev#unreal#cpp
an llm in my shell, and the handful of times it bit me
#ai#llm
first prints, first failures, and the slow road to a clean benchy
#hardware#3dprinting
home assistant ate my evenings, and i let it
#homelab#selfhosting
the bracket that didn't exist, so i made it
#hardware#3dprinting
running containers rootless without it ruining my week
#linux#sysadmin#ops
tmux, and the day i stopped losing my work to a dropped ssh
#tooling#dev
a year on mikrotik, would i go back to pfsense
#networking#homelab
why i finally left esxi for proxmox
#homelab#selfhosting
the router that fought back
#hardware#electronics
a weather station held together with an ESP32 and optimism
#hardware#electronics
bringing it all back home
#homelab#selfhosting
the dotfiles repo i should have made a decade ago
#tooling#dev
the leak was a map, and the map was me
#debugging#ops
putting a runaway process back in its box with cgroups v2
#linux#sysadmin#ops
building Go binaries for the little ARM box without the little ARM box
#golang#programming
the homelab as one stack, profiles and all
#homelab#selfhosting
a pi cluster that taught me nothing useful but was fun
#hardware#electronics
chasing a race condition for three days
#debugging#ops
one compose file to rule the homelab
#homelab#selfhosting
a heated chamber for abs, eventually
#hardware#3dprinting
fzf rewired how i use the terminal
#tooling#dev
moving to neovim, slowly
#tooling#dev
the 2018 edition changed how i write rust
#rust#programming
the bug that only existed when nobody was watching
#debugging#ops
four hours of motorway and a head full of someone else's ideas
#personal#life
i thought multiplayer was just sending the player's position
#gamedev#unreal#cpp
my third nextcloud install, and the first one i trust
#homelab#selfhosting
i solved it on the bike, not at the desk
#personal#life
i finally bought a logic analyser, and the bus stopped lying to me
#hardware#electronics
a makefile is just a phone book for your project
#tooling#dev
the code was fine, i was the bug
#debugging#ops
the fast version was slower, and the cache told me why
#performance#ops
small packets fine, large packets gone: it was the mtu
#debugging#ops
my first rag pipeline was confidently useless
#ai#llm
everyone's waiting on a keynote, and i'm waiting to be unsurprised
#news#opinion
small packets fine, large packets gone: an mtu story
#networking#homelab
keeping the calls clear when the house won't stop streaming
#networking#homelab
the august keynote everyone's arguing about, and the bit i actually cared about
#news#opinion
speaking bgp to my own cupboard
#networking#homelab
it was never the database, it was dns
#debugging#ops
everyone's talking about the new flagship, i'm thinking about the supply chain
#news#opinion
when the box freezes for a second, look at dirty_ratio
#linux#sysadmin#ops
the leak was a map, and the map was me
#debugging#ops
a sitcom that knew where the bodies are buried
#personal#life
reliable does not mean what you think in unreal
#gamedev#unreal#cpp
forty lines of go that earned their keep
#golang#programming
one compose file to run the house
#homelab#selfhosting
bringing it all back home
#homelab#selfhosting
when the writeback stalls everything
#linux#sysadmin#ops
the async rewrite i swore i wouldn't do
#rust#programming
the grinder rabbit hole
#personal#life
a kvm over ip for the price of a pi
#hardware#electronics
my first rag pipeline was confidently wrong
#ai#llm
four hours of motorway and a podcast that earned it
#personal#life
a tv show that nailed what the job actually feels like
#personal#life
every time I reach for interface{} I pay for it later
#golang#programming
the cron job that ran twice and told no one
#debugging#ops
the day my homelab lost its name
#networking#homelab
watching a cloud region wobble from the cheap seats
#news#opinion
bringing a dead sensor board back with a soldering iron
#hardware#electronics
a kernel panic i could actually reproduce
#linux#sysadmin#ops
cache misses, and why the fast version was slower
#performance#ops
kvm over ip, built from a pi for the price of a takeaway
#hardware#electronics
perf top on a box that should have been idle
#performance#ops
the leak was a map i forgot to empty
#debugging#ops
generics in go, two years on, do i reach for them
#golang#programming
a pi-shaped kvm for the machine in the cupboard
#hardware#electronics
putting a spare 3090 to work as a local llm box
#ai#llm
my printer hates the first layer and so do i
#hardware#3dprinting
the homelab moved house and so did i
#personal#life
bringing it all back home
#homelab#selfhosting
i built a raspberry pi cluster and learned nothing useful, and i'd do it again
#hardware#electronics
first prints, first spaghetti
#hardware#3dprinting
an open model the size of a house, and what i actually think
#news#opinion
a keyboard, soldered by hand, and the firmware that nearly beat me
#hardware#electronics
a small daemon, in go, actually shipped
#golang#programming
bringing a dead board back with a soldering iron and some stubbornness
#hardware#electronics
how a bag of beans led me into the grinder rabbit hole
#personal#life
bringing a dead board back with a soldering iron and stubbornness
#hardware#electronics
it was never the network, it was always dns
#debugging#ops
the keynote everyone has an opinion on, and why mine is boring
#news#opinion
the smallest useful daemon i've written this year
#golang#programming
ipv6 at home, eventually
#networking#homelab
rediscovering an old hobby
#personal#life
i rewrote a 40-line shell script in rust and i'd do it again
#rust#programming
a thirty-quid kvm over ip from a pi and a hdmi grabber
#hardware#electronics
the outage was a full disk, the disk was full of logs about the outage
#debugging#ops
learning to thread context.Context everywhere, and why it's worth it
#golang#programming
building go binaries for a box i can't compile on
#golang#programming
a dead monitor, two bulging capacitors and a soldering iron
#hardware#electronics
the day klipper made my old printer feel new
#hardware#3dprinting
the rust i write now started with the 2018 edition
#rust#programming
microsoft blinked on recall, and the argument is the interesting part
#news#opinion
how we handled rust errors before anyhow saved us
#rust#programming
i have too many dashboards and not enough alerts
#homelab#selfhosting
the code was fine, my mental model was the bug
#debugging#ops
everyone's talking about apple intelligence and i mostly want the boring bits
#news#opinion
i went in cynical and came out quiet
#personal#life
i run bgp at home now and i regret nothing
#networking#homelab
moving house when you own a small datacentre
#personal#life
the backup that ran on two boxes and nobody noticed
#debugging#ops
the bug i solved by leaving the keyboard
#personal#life
i stopped trusting other people's dns and ran my own
#networking#homelab
when journald ate half my root partition
#linux#sysadmin#ops
the weather station on my shed roof, and the bits that lie to me
#hardware#electronics
i finally stopped typing grep -r
#tooling#dev
a weekend where nothing paged me, and what i did with it
#personal#life
the book that rewired how i see systems
#personal#life
a language model in my terminal, and the days it turned on me
#ai#llm
everyone is holding their breath for wwdc, and the ai noise is deafening
#news#opinion
nextcloud, again, properly this time
#homelab#selfhosting
moving the homelab off esxi and onto proxmox
#homelab#selfhosting
my first rag pipeline was a confident liar
#ai#llm
the makefile as a project's front door
#tooling#dev
when packets vanish and it's just the mtu
#networking#homelab
a cold joint, a magnifier, and a board that lived again
#hardware#electronics
ibm bought hashicorp, and i went and looked at my terraform state
#news#opinion
i finally reached for go generics, and mostly didn't
#golang#programming
bricking a perfectly good router for no good reason
#hardware#electronics
the unreal gameplay framework finally clicked, here's the map
#gamedev#unreal#cpp
the backup you have not restored is a rumour
#homelab#selfhosting
i swapped pfsense for a mikrotik a year ago, here is the honest scorecard
#networking#homelab
every interface{} i ever wrote came back to bill me
#golang#programming
the film i went into expecting to hate
#personal#life
four raspberry pis, a stack of jumper wires, and zero lessons learned
#hardware#electronics
how i moved every disk in my nas without losing a byte
#homelab#selfhosting
a kernel panic i could actually reproduce
#linux#sysadmin#ops
on-device embeddings, or how i stopped paying per search
#ai#llm
the flamegraph that pointed at the wrong hero
#performance#ops
home assistant ate my evenings
#homelab#selfhosting
i didn't need a bigger model, i needed a smaller, dumber one
#ai#llm
sniffing a £6 bluetooth thermometer to find its secret
#hardware#electronics
what two years of rust in production actually taught me
#rust#programming
the query that wasn't slow, it was just always running
#performance#ops
a spare 3060 and an evening with ollama
#ai#llm
everyone's talking about gpt, i'm thinking about the boring bits
#news#opinion
what's actually happening on the CC line when your charger negotiates
#hardware#electronics
i built a raspberry pi cluster and learned almost nothing
#hardware#electronics
io_uring, and the joy of not making a syscall per read
#linux#sysadmin#ops
bringing it all back home
#homelab#selfhosting
the garage rack, and what i'd do differently
#homelab#selfhosting
how a cup of coffee cost me three hundred quid
#personal#life
a spare gpu, a quantised model, and lower expectations
#ai#llm
my prompt earns its keep now
#tooling#dev
the bug i fixed without touching the keyboard
#personal#life
pprof found the allocation i swore wasn't there
#golang#programming
i can't go back to grep -r anymore
#tooling#dev
the leak was a map i forgot to delete from
#debugging#ops
the day i pulled esxi out of the rack
#homelab#selfhosting
dyn or not: i finally benchmarked it
#rust#programming
fzf quietly rewired how i use the shell
#tooling#dev
a year on mikrotik after a decade on pfsense
#networking#homelab
bringing the services home again
#homelab#selfhosting
nextcloud, again, and this time it sticks
#homelab#selfhosting
a prompt that earns its keep
#tooling#dev
the makefile is just a menu
#tooling#dev
the day i resilvered the wrong pool
#homelab#selfhosting
the bug that only happened when nobody was watching
#debugging#ops
i rewrote a thirty-line shell script in rust
#rust#programming
bringing it all back home
#homelab#selfhosting
every time i reach for interface{} i live to regret it
#golang#programming
the xz backdoor, and the volunteer who happened to be paying attention
#news#opinion
threading context.Context through everything, and why it's worth it
#golang#programming
nextcloud, the third attempt, and the one that actually stuck
#homelab#selfhosting
the multiplayer prototype that ate my weekend and my ego
#gamedev#unreal#cpp
the router that was working fine until i improved it
#hardware#electronics
a spare gpu, ollama, and a model that runs on my own metal
#ai#llm
a long drive and a good podcast
#personal#life
ipv6 at home, eventually
#networking#homelab
mtu, the silent killer
#networking#homelab
stop reaching for context.Background() in the middle of things
#golang#programming
multi-wan failover that actually fails over
#networking#homelab
my dotfiles, finally in order
#tooling#dev
rootless containers, and making peace with subuid
#linux#sysadmin#ops
it's always dns, and this time it really was
#debugging#ops
how a single full filesystem took down a perfectly healthy service
#debugging#ops
rebuilding a truenas pool one disk at a time
#homelab#selfhosting
a database query that was quietly killing us
#performance#ops
deleting dep and never looking back
#golang#programming
multi-material printing, and the long argument with myself about whether it earns its place
#hardware#3dprinting
the book that ruined "it's working fine" for me
#personal#life
perf top on a box that shouldn't be busy
#performance#ops
truenas and the great disk shuffle
#homelab#selfhosting
the status page was green and the service was on fire
#news#opinion
a makefile is a fine task runner, actually
#tooling#dev
reflashing a router I should have left alone
#hardware#electronics
the multiplayer prototype that put me firmly in my place
#gamedev#unreal#cpp
when the network goes down, everyone discovers their dependencies
#news#opinion
a dead psu, one swollen capacitor, and forty pence
#hardware#electronics
a forty-line go daemon that's earned its keep
#golang#programming
interface{} is a promise I keep breaking
#golang#programming
reverse-engineering a usb-c charger that lied to me
#hardware#electronics
i went in to be polite and stayed for the whole thing
#personal#life
keeping the video call alive when the house is streaming
#networking#homelab
everyone's posting the video clips, i'm thinking about the plumbing
#news#opinion
the cron job that ran twice and told nobody
#debugging#ops
too many dashboards and not enough alerts
#homelab#selfhosting
two years of rust in production, the honest ledger
#rust#programming
every interface{} i wrote came back to bill me
#golang#programming
a little cli in rust, and whether the borrow checker earned its keep
#rust#programming
a tiny daemon in go, finally shipped
#golang#programming
the bug that needed an hour on the bike
#personal#life
it was the mtu, it's always the mtu
#debugging#ops
the llm in my terminal is brilliant until it confidently isn't
#ai#llm
the process that ate the box, and the cgroup that fenced it in
#linux#sysadmin#ops
cutting out the middleman with my own resolver
#networking#homelab
when the logs lie, the wire doesn't
#debugging#ops
i built a keyboard and then spent a week on the firmware
#hardware#electronics
one compose file to rule the homelab
#homelab#selfhosting
everyone has an opinion about the gemini rename
#news#opinion
the book that taught me to leave slack in the system
#personal#life
the query that was fine until it wasn't
#performance#ops
the app that kept writing to a deleted log file
#linux#sysadmin#ops
a rack in the garage, regrets and all
#homelab#selfhosting
the password reset bug nobody wants to admit they ship
#news#opinion
the prompt that earns its keep
#tooling#dev
the dead psu was a forty pence capacitor
#hardware#electronics
the pi cluster that taught me nothing useful but was fun
#hardware#electronics
a shell prompt that tells me what i need
#tooling#dev
ipv6 at home, eventually
#networking#homelab
nftables instead of iptables, finally
#linux#sysadmin#ops
i went in cynical and came out quiet
#personal#life
the borrow checker was right and i was the bug
#rust#programming
a year of running mikrotik next to pfsense, and which one stayed
#networking#homelab
when the app, the logs and the dashboards all lied, tcpdump didn't
#debugging#ops
the cron job that ran twice and told no one
#debugging#ops
opentofu ships 1.0, and i'm quietly relieved
#news#opinion
why i finally moved the homelab off esxi and onto proxmox
#homelab#selfhosting
my first rag pipeline retrieved confidently wrong things
#ai#llm
an esp32 weather station that mostly works
#hardware#electronics
cross-compiling go for an arm box, the easy way and the cgo way
#golang#programming
goroutines and the leak i didn't see
#golang#programming
the average latency was fine, which is why everyone was angry
#performance#ops
yes i still run swap, even with plenty of ram
#linux#sysadmin#ops
when the page cache fights back
#linux#sysadmin#ops
the bug i fixed forty miles from my keyboard
#personal#life
my first rag pipeline retrieved confidently wrong answers
#ai#llm
the outage that was just a disk quietly filling up
#debugging#ops
context.Context, and learning to thread it through
#golang#programming
first prints, first failures, and a lot of wasted plastic
#hardware#3dprinting
klipper, and the printer that suddenly learned to fly
#hardware#3dprinting
the afternoon i poked at a usb-c charger with a logic analyser
#hardware#electronics
bgp in the homelab, because why not
#networking#homelab
how btrfs snapshots gave me my weekend back
#linux#sysadmin#ops
my dotfiles, finally in a state i'm not ashamed of
#tooling#dev
ripgrep, fd, and quietly giving up on the old tools
#tooling#dev
btrfs snapshots saved my weekend
#linux#sysadmin#ops
coffee, and the rabbit hole of grinders
#personal#life
the keynote that everyone has an opinion on
#news#opinion
the launch that's dominating tech this week
#news#opinion
a prompt that earns its width
#tooling#dev
the makefile as a project's front door
#tooling#dev
multi-wan failover that actually fails over
#networking#homelab
the dead psu that only needed a 30p capacitor
#hardware#electronics
which local model actually helps me write code
#ai#llm
bringing the small stuff back home from the cloud
#homelab#selfhosting
the one television show that gets the on-call dread right
#personal#life
how a single smart plug became a second job
#homelab#selfhosting
two years of rust in production, the honest ledger
#rust#programming
deleting Gopkg.toml and not missing it
#golang#programming
rewriting the firewall in nftables
#linux#sysadmin#ops
the box that was busy doing nothing
#performance#ops
the film i went in resenting and came out quiet
#personal#life
threading context.Context through, properly this time
#golang#programming
bringing the small stuff back home
#homelab#selfhosting
the multiplayer prototype that humbled me
#gamedev#unreal#cpp
the backups i actually restore from now
#homelab#selfhosting
klipper, and a printer that suddenly flew
#hardware#3dprinting
where the time actually went under load
#golang#programming
a prompt that earns its space
#tooling#dev
semantic search for my notes, all on the laptop
#ai#llm
the four git aliases i'd miss the most
#tooling#dev
running a 7b model on a laptop that should know better
#ai#llm
keeping the video call alive while everyone else streams
#networking#homelab
the day i deleted every port forward and slept better
#networking#homelab
the ssh dropped and i didn't lose a thing
#tooling#dev
i went in to be polite and came out genuinely moved
#personal#life
i put klipper on the old printer and it stopped being old
#hardware#3dprinting
when a busy box stalls every thirty seconds, look at dirty_ratio
#linux#sysadmin#ops
another provider had a bad day, and so did the rest of us
#news#opinion
the great async rewrite, and what it actually cost me
#rust#programming
i picked up the film camera again, and it slowed me right down
#personal#life
the bug that only existed when nobody was watching
#debugging#ops
the garage rack, and what i'd do differently
#homelab#selfhosting
a keynote, and the quiet question nobody on stage answered
#news#opinion
when the app won't reopen its logs
#linux#sysadmin#ops
tls on the home network without the faff
#homelab#selfhosting
i finally threw out openvpn
#networking#homelab
rebuilding nextcloud and meaning it this time
#homelab#selfhosting
the idle box that wasn't
#performance#ops
the day i stopped forwarding ports
#networking#homelab
four hours of motorway and one very good podcast
#personal#life
the multiplayer prototype that took me down a peg
#gamedev#unreal#cpp
the smallest daemon i could get away with
#golang#programming
i finally moved the firewall to nftables
#linux#sysadmin#ops
the runaway process that cgroups v2 quietly contained
#linux#sysadmin#ops
multi-wan failover that fails over before anyone notices
#networking#homelab
the day journald ate the root partition
#linux#sysadmin#ops
a shell prompt that earns its keep
#tooling#dev
the systemd unit that would not stay dead
#linux#sysadmin#ops
a makefile is the readme nobody updates but everybody runs
#tooling#dev
the map that ate all the memory
#debugging#ops
the off-by-one three of us missed
#debugging#ops
learning to thread context.Context all the way down
#golang#programming
running my own recursive resolver at home
#networking#homelab
four hours of motorway and a podcast i didn't want to end
#personal#life
i benchmarked dyn vs generics so you can stop arguing about it
#rust#programming
parsing a config format with nom, and learning to think in combinators
#rust#programming
the loop that processed every day except the last one
#debugging#ops
running a 13b model on a laptop that cost less than the gpu i wanted
#ai#llm
which local model is any good at code, actually
#ai#llm
dynamic dispatch isn't as slow as you've been told
#rust#programming
the off-by-one three people signed off on
#debugging#ops
poking at a £6 bluetooth thermometer until it talked
#hardware#electronics
real certificates for things that never touch the internet
#homelab#selfhosting
cutting a flat network into vlans without taking everything down
#networking#homelab
the flame graph that pointed at a function i'd forgotten existed
#performance#ops
perf top, and an idle box that wasn't
#performance#ops
what actually owns what in unreal's gameplay framework
#gamedev#unreal#cpp
how home assistant quietly stole a fortnight
#homelab#selfhosting
the day klipper made my old printer fast
#hardware#3dprinting
where a go service actually spends its time
#golang#programming
putting root on zfs, and why i would do it again
#linux#sysadmin#ops
four raspberry pis, one bad idea, no regrets
#hardware#electronics
the service that would not die
#linux#sysadmin#ops
a small agent that does the boring bit for me
#ai#llm
putting a leash on a process that ate the box
#linux#sysadmin#ops
when the tool you depend on gets bought, what actually changes
#news#opinion
semantic search that never leaves the laptop
#ai#llm
poking at a four-quid bluetooth thermometer
#hardware#electronics
the day i stopped losing my shell
#tooling#dev
four hours of motorway and one good episode
#personal#life
i put a server rack in the garage, and i'd do it again (mostly)
#homelab#selfhosting
running bgp at home, which i will not pretend i needed to
#networking#homelab
the great disk shuffle, or how i rebuilt a pool without losing my nerve
#homelab#selfhosting
forty lines of go that quietly do their job
#golang#programming
how rust 2018 quietly rewired my instincts
#rust#programming
the night a logfile took the service down
#debugging#ops
a prompt that earns its keep
#tooling#dev
the rpc that worked on my machine and nowhere else
#gamedev#unreal#cpp
a language model on the gpu that was gathering dust
#ai#llm
the rare gift of a kernel panic that reproduces on demand
#linux#sysadmin#ops
the connection that hung at exactly the wrong size
#debugging#ops
when logrotate quietly stops working because the app won't reopen
#linux#sysadmin#ops
bricking a router that was working perfectly well
#hardware#electronics
a year on, where go generics actually earn their keep
#golang#programming
dotfiles that survive a new laptop in one command
#tooling#dev
bringing a dead board back with a soldering iron
#hardware#electronics
how tmux stopped me losing work to dropped ssh
#tooling#dev
a backup you have not restored is a rumour
#homelab#selfhosting
rootless podman, and the uid map that finally clicked
#linux#sysadmin#ops
the first time unreal's replication made sense to me
#gamedev#unreal#cpp
learning to thread context.Context through everything
#golang#programming
getting multi-WAN failover to actually fail over
#networking#homelab
stop trusting someone else's dns
#networking#homelab
the day klipper made my old printer fast
#hardware#3dprinting
when logrotate and your app disagree about SIGHUP
#linux#sysadmin#ops
what a syscall actually costs you
#performance#ops
a keyboard build, and the part where the firmware fought back
#hardware#electronics
bringing it all back home, one service at a time
#homelab#selfhosting
how much swap does a homelab actually need
#linux#sysadmin#ops
the leak that was just a map nobody ever emptied
#debugging#ops
the disclosure everyone's forwarding, and the boring bit underneath
#news#opinion
an esp32 weather station, mostly working, which is the best kind
#hardware#electronics
my dotfiles, finally in some kind of order
#tooling#dev
stop fighting context.Context and start threading it
#golang#programming
when logrotate and a deaf daemon disagree
#linux#sysadmin#ops
a weekend the pager stayed quiet
#personal#life
parser combinators finally clicked, thanks to nom
#rust#programming
search that understands me, running on my own laptop
#ai#llm
a week of stringing, warping, and one good print
#hardware#3dprinting
i was certain it was a race condition
#debugging#ops
watching an outage from the cheap seats
#news#opinion
the backups i finally bothered to test
#homelab#selfhosting
a btrfs snapshot bought back my saturday
#linux#sysadmin#ops
when the write cache fights back: tuning dirty_ratio
#linux#sysadmin#ops
when a tool you depend on gets bought, and the quiet dread that follows
#news#opinion
watching someone else's outage from the cheap seats
#news#opinion
prising open a £6 bluetooth thermometer
#hardware#electronics
i built a four-node pi cluster and learned almost nothing
#hardware#electronics
the day fzf quietly rewired my terminal habits
#tooling#dev
running code models on my own gpu, a fair-ish comparison
#ai#llm
poking at a cheap bluetooth gadget until it confessed
#hardware#electronics
the half-hour my homelab lost dns to itself
#networking#homelab
the flamegraph that pointed at logging, of all things
#performance#ops
pprof under real load, not in a benchmark
#golang#programming
i finally tore out openvpn and the house got quieter
#networking#homelab
everyone is talking about the same release, so here is what i actually think
#news#opinion
i wired an llm to my shell and it mostly behaved
#ai#llm
stop letting journald eat your root partition
#linux#sysadmin#ops
how much does a syscall actually cost?
#performance#ops
the service that would not die
#linux#sysadmin#ops
how home assistant quietly took over my evenings
#homelab#selfhosting
i finally stopped reaching for grep and find
#tooling#dev
working from home, three years in and no rose tint
#personal#life
coffee, and the rabbit hole of grinders
#personal#life
flamegraphs and a hot path i never suspected
#performance#ops
kubernetes at home was a mistake (mostly)
#homelab#selfhosting
reflashing a router i should have left alone
#hardware#electronics
the cost of a syscall, measured
#performance#ops
trait objects vs generics, a real benchmark
#rust#programming
building go binaries for the little arm box in the cupboard
#golang#programming
the day klipper made my old printer fast
#hardware#3dprinting
the average latency that lied to my face
#performance#ops
making the second internet line earn its keep
#networking#homelab
the bug that only existed when nobody was watching
#debugging#ops
the goroutines that never came home
#golang#programming
rootless podman without the rage
#linux#sysadmin#ops
real certificates for things that never touch the internet
#homelab#selfhosting
a language model on the spare gpu, and what it's actually good for
#ai#llm
the day i deleted every port forward and didn't miss them
#networking#homelab
i am now running bgp at home and i regret nothing
#networking#homelab
the flamegraph that pointed at the wrong file entirely
#performance#ops
a makefile is just a list of things you keep forgetting
#tooling#dev
i put a proper rack in the garage and i have feelings about it
#homelab#selfhosting
make is a fine task runner if you stop pretending it isn't
#tooling#dev
nom finally made parsing feel less like a chore
#rust#programming
four hours of motorway and one very good episode
#personal#life
the optimisation that made everything slower
#performance#ops
the bug i fixed forty minutes after closing the laptop
#personal#life
the leak was a map nobody ever deleted from
#debugging#ops
the morning a single file grounded a country
#news#opinion
stopping journald from eating the disk
#linux#sysadmin#ops
replacing every disk in a pool without losing the pool
#homelab#selfhosting
how we did rust errors before anyhow and thiserror turned up
#rust#programming
the logic analyser that ended weeks of guessing at i2c
#hardware#electronics
making the wifi survive four people streaming at once
#networking#homelab
the slim book i keep pressing on people
#personal#life
when one process ate the box, and cgroups v2 finally fenced it in
#linux#sysadmin#ops
i finally stopped poking holes in my firewall
#networking#homelab
the off-by-one that three of us missed
#debugging#ops
running bgp at home, purely to learn it
#networking#homelab
running a model on the spare 3090, and what it actually costs
#ai#llm
one compose file to rule the house
#homelab#selfhosting
the flamegraph pointed somewhere stupid
#performance#ops
i finally gave up on port forwarding
#networking#homelab
fixing a psu instead of binning it
#hardware#electronics
reverse proxy, certs, and let's encrypt at home
#homelab#selfhosting
the spare gpu earns its keep
#ai#llm
btrfs snapshots saved my weekend
#linux#sysadmin#ops
kvm over ip, built from a pi
#hardware#electronics
running a local llm on a spare gpu
#ai#llm
a fence round the process that kept eating the box
#linux#sysadmin#ops
the bug i solved twelve miles from my desk
#personal#life
what rust error handling felt like before anyhow turned up
#rust#programming
it was the mtu, it's always the mtu
#debugging#ops
the bracket i couldn't buy, so i drew one
#hardware#3dprinting
putting a language model on the spare gpu in the cupboard
#ai#llm
moving root onto zfs and not regretting it
#linux#sysadmin#ops
a vulnerability with a logo and a website
#news#opinion
printing parts to fix the printer
#hardware#3dprinting
running a local llm on a spare gpu
#ai#llm
tmux, and never losing a session again
#tooling#dev
a back-garden weather station, held together with hope and a BME280
#hardware#electronics
bed levelling, or how i stopped trusting paper
#hardware#3dprinting
home assistant ate my evenings
#homelab#selfhosting
the service that resurrected itself every ten seconds
#linux#sysadmin#ops
a hundred lines of go that replaced a cron job and a prayer
#golang#programming
blinking an led on an stm32 the hard, satisfying way
#rust#programming
i finally stopped reaching for grep and find
#tooling#dev
what rust error handling felt like before anyhow turned up
#rust#programming
the connection that worked until the payload got big
#debugging#ops
the log file that grew forever because nobody told the app
#linux#sysadmin#ops
when a licence change quietly costs you a dependency
#news#opinion
nextcloud, the third install and the one that stuck
#homelab#selfhosting
putting a language model on the gpu that was just sitting there
#ai#llm
moving root onto zfs and not regretting it
#linux#sysadmin#ops
the one everyone's calling "the next log4shell"
#news#opinion
when everything works except the things that don't
#networking#homelab
a language model of my very own
#ai#llm
the long road to an enclosure for abs
#hardware#3dprinting
i put a server rack in the garage and i have notes
#homelab#selfhosting
i finally moved off iptables
#linux#sysadmin#ops
one line to build for the little ARM box
#golang#programming
small packets fine, big packets gone
#debugging#ops
the code was correct, my mental model wasn't
#debugging#ops
an esp32 weather station, and the lies sensors tell
#hardware#electronics
the small fuzzy finder that quietly took over my shell
#tooling#dev
two colours of plastic and a lot of wasted filament
#hardware#3dprinting
where the time actually went in a slow Go service
#golang#programming
i went in to be polite and stayed for the whole thing
#personal#life
a keyboard i built, and the firmware that made it mine
#hardware#electronics
one compose file to run the whole house
#homelab#selfhosting
i rewrote a service in async rust and learned what coloured functions cost
#rust#programming
the afternoon one PHP worker tried to eat the box
#linux#sysadmin#ops
a language model on the spare GPU, and what it was actually good for
#ai#llm
the average was fine and the customers were furious
#performance#ops
logrotate did its job, the app kept writing to a deleted file
#linux#sysadmin#ops
every exporter i installed and the one metric i should have started with
#homelab#selfhosting
the query that was fine until it wasn't
#performance#ops
soldering switches is the easy half
#hardware#electronics
i ran kubernetes in my house for two years, here is the bill
#homelab#selfhosting
i had forty grafana dashboards and looked at three
#homelab#selfhosting
a backup you haven't restored isn't a backup
#homelab#selfhosting
when in doubt, watch the wire
#debugging#ops
nll, no extern crate, and how rust started feeling easy
#rust#programming
a licence change that broke the internet's trust
#news#opinion
a rack in the garage, regrets and all
#homelab#selfhosting
a tiny daemon in go, shipped
#golang#programming
making the wifi fair when everyone is buffering at once
#networking#homelab
i finally rewrote my firewall in nftables
#linux#sysadmin#ops
rootless containers without losing my mind
#linux#sysadmin#ops
rust in production, two years of regrets and wins
#rust#programming
the keynote that everyone has an opinion on
#news#opinion
four hours of motorway and one episode that stuck
#personal#life
the runaway process that cgroups v2 caught for me
#linux#sysadmin#ops
make is a task runner that happens to compile C
#tooling#dev
i stopped trusting someone else's dns
#networking#homelab
the optimisation that made everything slower
#performance#ops
a week of spaghetti and warped corners
#hardware#3dprinting
what nobody tells you about replicated variables
#gamedev#unreal#cpp
the day my homelab dns ate itself
#networking#homelab
i have built too many grafana dashboards
#homelab#selfhosting
when packets vanish: an mtu mystery
#networking#homelab
one compose file to rule the house
#homelab#selfhosting
the average latency is lying to you
#performance#ops
the logic analyser, or finally seeing what the bus was doing
#hardware#electronics
leaving vim behind, one config line at a time
#tooling#dev
the query that only got slow once it mattered
#performance#ops
generics in go, and whether i actually wanted them
#golang#programming
a year on mikrotik, and what i miss from pfsense
#networking#homelab
poking at a cheap ble thermometer until it talked
#hardware#electronics
making peace with the first layer
#hardware#3dprinting
when every crate brought its own error type
#rust#programming
talking to a tenner's worth of bluetooth
#hardware#electronics
when the company that owns your tooling changes hands
#news#opinion
the log that wouldn't rotate
#linux#sysadmin#ops
reliable doesn't mean what you think in unreal
#gamedev#unreal#cpp
the journal grew until the disk noticed
#linux#sysadmin#ops
the outage that was just a full /var
#debugging#ops
working from home, minus the linkedin gloss
#personal#life
the rollback that turned a disaster into a five minute job
#linux#sysadmin#ops
the unhurried migration from vim to neovim
#tooling#dev
stop journald from eating the disk
#linux#sysadmin#ops
making peace with unreal's gameplay framework
#gamedev#unreal#cpp
everyone's posting about the same release again
#news#opinion
the show that made my on-call flashbacks worse
#personal#life
getting gpt-j to talk on an old gpu
#ai#llm
first prints, first failures
#hardware#3dprinting
makefiles for things that aren't c
#tooling#dev
a telescope, a deadline, and the cost of doing it right
#news#opinion
i benchmarked dyn vs generics so you don't have to
#rust#programming
bed levelling, the eternal war
#hardware#3dprinting
the cost of a syscall, measured
#performance#ops
the joy of a quiet weekend with no oncall
#personal#life
the dotfiles finally make sense
#tooling#dev
rootless containers, and the few things that bite
#linux#sysadmin#ops
the unreal rpc that quietly didn't arrive
#gamedev#unreal#cpp
the prompt earns its keep
#tooling#dev
ripgrep, fd, and finally letting grep retire
#tooling#dev
bringing a dead board back with a soldering iron and stubbornness
#hardware#electronics
ebpf, or how i stopped guessing and watched the kernel
#performance#ops
a dead psu, a swollen capacitor, and one evening with a soldering iron
#hardware#electronics
my first proper fight with unreal's replication
#gamedev#unreal#cpp
the sitcom that got working in it uncomfortably right
#personal#life
when a bug gets a logo before it gets a patch
#news#opinion
the day klipper made my printer fast
#hardware#3dprinting
replacing every disk in a pool, one at a time
#homelab#selfhosting
reverse proxy, certs, and let's encrypt at home
#homelab#selfhosting
running a local llm on a spare gpu
#ai#llm
taming journald disk usage
#linux#sysadmin#ops
why i moved the homelab from esxi to proxmox
#homelab#selfhosting
reflashing a router i should have left alone
#hardware#electronics
the swap debate, settled for my homelab
#linux#sysadmin#ops
running kubernetes at home was mostly a mistake
#homelab#selfhosting
getting rootless containers working without losing my mind
#linux#sysadmin#ops
the outage that was just /var filling up
#debugging#ops
async/await finally clicked, so I rewrote everything
#rust#programming
klipper turned my slow printer into a fast one
#hardware#3dprinting
i finally moved off iptables, and it was overdue
#linux#sysadmin#ops
bringing a dead board back with a soldering iron and stubbornness
#hardware#electronics
the multiplayer prototype that taught me humility
#gamedev#unreal#cpp
latency, p99, and the averages that lie to you
#performance#ops
interface{}, and the regrets it left me
#golang#programming
poking at usb power delivery with a logic analyser
#hardware#electronics
i finally stopped fighting bed levelling
#hardware#3dprinting
i don't reach for grep and find any more
#tooling#dev
when the box freezes for a second every minute
#linux#sysadmin#ops
when half the internet leans on the same control plane
#news#opinion
three days for a bug that only happened when nobody was looking
#debugging#ops
multi-material printing, and the maths that put me off
#hardware#3dprinting
the quiet cost of a relicence, and why my stack got nervous
#news#opinion
i rewrote a futures-combinator mess into async/await and regret nothing
#rust#programming
it wasn't the database, it wasn't the network, it was dns again
#debugging#ops
i benchmarked dyn versus generics so i could stop guessing
#rust#programming
the book that taught me to look for the loops
#personal#life
a language model on the spare gpu in the cupboard
#ai#llm
i stopped trusting someone else's resolver and ran my own
#networking#homelab
every interface{} is a promise i make to my future self and break
#golang#programming
the first week with a 3d printer is mostly failure
#hardware#3dprinting
a year on mikrotik, and what i miss about pfsense
#networking#homelab
i stopped trusting other people's dns
#networking#homelab
making peace with a bed that won't stay level
#hardware#3dprinting
caging a runaway process with cgroups v2
#linux#sysadmin#ops
ebpf, or finally being able to ask the kernel a question
#performance#ops
how much swap, and why i stopped arguing about it
#linux#sysadmin#ops
a btrfs snapshot turned a wrecked upgrade into a five-second rollback
#linux#sysadmin#ops
the app that politely ignored logrotate
#linux#sysadmin#ops
the makefile as a project's front door
#tooling#dev
the night /var filled and took everything with it
#debugging#ops
i wrote a small cli in rust and i'm still arguing with myself about it
#rust#programming
the flamegraph pointed at the one function i'd ruled out
#performance#ops
a spare gpu and a language model that runs in my own house
#ai#llm
the ssh dropped and my work was still there
#tooling#dev
the off-by-one we all signed off on
#debugging#ops
rewriting it all for async/await
#rust#programming
getting IPv6 working at home, finally
#networking#homelab
i finally ripped out openvpn for wireguard
#networking#homelab
the bicycle that had been gathering dust
#personal#life
tcpdump saved me again
#debugging#ops
the quiet weekend
#personal#life
taming writeback with dirty_ratio
#linux#sysadmin#ops
the rare luxury of a kernel panic that came back on demand
#linux#sysadmin#ops
when the thing you depend on gets bought
#news#opinion
cutting a flat homelab into vlans without burning it down
#networking#homelab
four hours of motorway and one very good podcast
#personal#life
i ran kubernetes at home and mostly regret it
#homelab#selfhosting
how the 2018 edition quietly retrained my hands
#rust#programming
the outage was just /var being full
#debugging#ops
the weekend i tried to add multiplayer and learned to respect it
#gamedev#unreal#cpp
the off-by-one we all read and nobody saw
#debugging#ops
running the whole house from one compose file
#homelab#selfhosting
nextcloud, the fourth attempt, the one that stuck
#homelab#selfhosting
a weather station held together by hope and a bme280
#hardware#electronics
the backups i now bother to restore
#homelab#selfhosting
why my homelab moved off esxi onto proxmox
#homelab#selfhosting
the day i deleted every port forward and felt better
#networking#homelab
the smallest useful daemon i've written this year
#golang#programming
a year of mikrotik and pfsense, and which one i kept
#networking#homelab
the router that worked fine until i improved it
#hardware#electronics
structured logging in go that i can actually grep
#golang#programming
the disclosure everyone's forwarding around this week
#news#opinion
the bits of root-on-zfs nobody warns you about
#linux#sysadmin#ops
moving root onto zfs and not regretting it
#linux#sysadmin#ops
two colours, twice the headache
#hardware#3dprinting
a language model on the gpu i forgot i had
#ai#llm
logs you can actually query
#golang#programming
when the application logs lie, the wire doesn't
#debugging#ops
the year i finally let ipv6 into the house
#networking#homelab
bringing it all back home
#homelab#selfhosting
the code was fine, i was wrong
#debugging#ops
my multiplayer prototype, and the lie of "it works on my machine"
#gamedev#unreal#cpp
the off-by-one four of us read and none of us saw
#debugging#ops
running bgp at home, for reasons i can mostly justify
#networking#homelab
the cron job that ran twice and told nobody
#debugging#ops
i went in to mock it and came out quiet
#personal#life
the day i put a server rack in the garage
#homelab#selfhosting
three days for a bug that lived in a missing word
#debugging#ops
running bgp at home because i could not help myself
#networking#homelab
the rewrite that was meant to be faster, and was not
#performance#ops
finally on go modules, and saying goodbye to dep
#golang#programming
tmux, or how i stopped mourning dropped ssh sessions
#tooling#dev
another log4j point release, and what that month taught me
#news#opinion
making multi-WAN fail over before anyone notices
#networking#homelab
getting gpt-j to talk on a spare gpu, and why it's harder than the demos suggest
#ai#llm
how much swap, and why i stopped arguing about it
#linux#sysadmin#ops
a makefile is just a list of things i keep forgetting how to do
#tooling#dev
how much swap, and why i finally stopped arguing about it
#linux#sysadmin#ops
nom made me stop hand-rolling parsers, mostly
#rust#programming
log4shell, and the long week of finding out where java was hiding
#news#opinion
when logrotate works but the app keeps writing to the deleted file
#linux#sysadmin#ops
when the logs lie, tcpdump tells the truth
#debugging#ops
the query that was quietly killing us
#performance#ops
the sysadmin sitcom that hit too close
#personal#life
the fast version was slower, and the cache told me why
#performance#ops
the printer that prints its own spare parts
#hardware#3dprinting
cross-compiling go for the little arm box in the cupboard
#golang#programming
moving to neovim, slowly, and on purpose
#tooling#dev
nextcloud, again, properly this time
#homelab#selfhosting
soldering a dead board back to life
#hardware#electronics
bpftrace, and finally being able to ask the kernel a question
#performance#ops
i finally bare-repo'd my dotfiles and i'm annoyed it took this long
#tooling#dev
rpcs in unreal, and the reliable/unreliable footgun
#gamedev#unreal#cpp
i thought i had a coffee problem, turns out i had a grinder problem
#personal#life
a dead power supply, two bulging capacitors and a soldering iron
#hardware#electronics
the long version: why your write-heavy box stalls, and how to stop it
#linux#sysadmin#ops
a dead power supply, two bulging caps, and a soldering iron
#hardware#electronics
i ran kubernetes at home and mostly regretted it
#homelab#selfhosting
pprof, a load test, and the allocation i couldn't see
#golang#programming
the page cache was lying to me about disk writes
#linux#sysadmin#ops
building a box so abs would stop curling
#hardware#3dprinting
the average is fine, the p99 is on fire
#performance#ops
i picked up the pencils again
#personal#life
i finally stopped reaching for grep and find
#tooling#dev
the cron job that ran twice and told no one
#debugging#ops
when the bug gets its own brand
#news#opinion
small packets fine, big packets gone
#debugging#ops
i finally ripped out openvpn
#networking#homelab
the bug that only happened when nobody was watching
#debugging#ops
read the vector, ignore the logo
#news#opinion
an ESP32 in a jam jar that thinks it's a weather station
#hardware#electronics
picking up a thing i'd quietly put down
#personal#life
when the CVE has better branding than your product
#news#opinion
the region went away and so did half my afternoon
#news#opinion
deleting Gopkg.toml and not missing it
#golang#programming
the query that was fine until it wasn't
#performance#ops
when a snapshot turned a ruined saturday into a five-minute rollback
#linux#sysadmin#ops
one compose file to run the entire flat
#homelab#selfhosting
a tenner of capacitors versus a new power supply
#hardware#electronics
i designed the bracket instead of buying it
#hardware#3dprinting
putting root on zfs, and what i actually gained
#linux#sysadmin#ops
the day i stopped losing my work to a dropped ssh connection
#tooling#dev
the day my whole house lost dns, and it was me
#networking#homelab
i built a four-node pi cluster and learned almost nothing
#hardware#electronics
async/await in rust, and the rewrite i couldn't resist
#rust#programming
moving house when you've a homelab to carry
#personal#life
the service that wouldn't stay stopped
#linux#sysadmin#ops
keeping a video call alive whilst the house streams
#networking#homelab
i finally stopped reaching for grep
#tooling#dev
working from home, the honest version
#personal#life
the goroutines that wouldn't die
#golang#programming
bringing it all back home
#homelab#selfhosting
the idle box that was pegging a core
#performance#ops
nextcloud, the third time, done properly
#homelab#selfhosting
when journald quietly ate a third of the disk
#linux#sysadmin#ops
i finally made my peace with swap
#linux#sysadmin#ops
parsing a config format with nom, and liking it
#rust#programming
a fencepost error nobody saw because it looked right
#debugging#ops
the off-by-one that three of us signed off on
#debugging#ops
the outage wasn't the cloud's fault, mostly
#news#opinion
perf top on a box that should have been idle
#performance#ops
i built a four-node pi cluster and learned nothing, gladly
#hardware#electronics
proper https for everything on the home network
#homelab#selfhosting
bringing a dead board back with a steady hand and flux
#hardware#electronics
it was dns, it is always dns
#debugging#ops
a pi cluster that taught me nothing useful but was fun
#hardware#electronics
bed levelling, the eternal war
#hardware#3dprinting
the runaway process, revisited: cpu and io weights in cgroups v2
#linux#sysadmin#ops
a rack in the garage, regrets and all
#homelab#selfhosting
cgroups v2 and a runaway process
#linux#sysadmin#ops
docker compose for the whole house
#homelab#selfhosting
soldering a keyboard, then flashing the firmware that makes it mine
#hardware#electronics
i deleted every port forward and the homelab got better
#networking#homelab
everyone has a windows 11 take and most of them are about the taskbar
#news#opinion
the grinder matters more than the machine
#personal#life
make is a fine task runner if you stop pretending it builds c
#tooling#dev
the printer printed the parts to fix itself
#hardware#3dprinting
the fencepost that three of us read and none of us saw
#debugging#ops
small packets fine, big packets gone, and a tunnel in the middle
#debugging#ops
the makefile is just a list of things i keep forgetting
#tooling#dev
rewrote a ten-line shell script in rust, regret nothing
#rust#programming
the flamegraph that pointed at the one function i trusted
#performance#ops
the router that was fine until i improved it
#hardware#electronics
when nothing was down except the names
#debugging#ops
the bug that only existed when nobody was looking
#debugging#ops
the first layer is always lying to you
#hardware#3dprinting
i had forty dashboards and no idea if anything was broken
#homelab#selfhosting
another keynote, another timeline of hot takes
#news#opinion
the pipeline ransomware is a billing-system story, not a hacker-movie one
#news#opinion
blinking an led on an stm32 in rust, and being surprised it worked
#rust#programming
an idle box at forty percent cpu, and what perf top told me
#performance#ops
when the writeback stalls everything
#linux#sysadmin#ops
the cron job that ran twice and told nobody
#debugging#ops
running the whole house on one docker-compose file
#homelab#selfhosting
i lost an argument with the borrow checker, and it was right
#rust#programming
half the requests worked, which is how i knew it was the mtu
#debugging#ops
the bed is never quite level
#hardware#3dprinting
a runaway process and the cgroup that caught it
#linux#sysadmin#ops
home assistant ate a fortnight of my evenings
#homelab#selfhosting
the hobby i'd quietly put down
#personal#life
the show that understood the on-call pager
#personal#life
losing to the borrow checker, gracefully
#rust#programming
the goroutines that never came home
#golang#programming
the multiplayer prototype that humbled me
#gamedev#unreal#cpp
yes, i run bgp at home
#networking#homelab
is multi-material printing actually worth the bother?
#hardware#3dprinting
i rewrote a tiny shell script in rust and i regret nothing
#rust#programming
building for the pi without building on the pi
#golang#programming
the network was fine until the packets got big
#networking#homelab
what does a syscall actually cost?
#performance#ops
three hundred miles and an episode i didn't want to end
#personal#life
the breach was in the tool that watches the build
#news#opinion
the disk wasn't full, /var was
#debugging#ops
the day i actually understood unreal replication
#gamedev#unreal#cpp
i built a raspberry pi cluster and learned absolutely nothing, which was the point
#hardware#electronics
one more note on the async port: select! is sharper than you think
#rust#programming
async/await is stable, and i went and rewrote the lot
#rust#programming
one compose file to run the whole house
#homelab#selfhosting
soldering a keyboard, then arguing with qmk
#hardware#electronics
a hundred lines of go that finally left my laptop
#golang#programming
capping a runaway with one cgroups v2 line
#linux#sysadmin#ops
the goroutine leak that hid behind a healthy graph
#golang#programming
watching syscalls without a debugger in sight
#performance#ops
the dotfiles repo i should have made years ago
#tooling#dev
rebuilding nextcloud the way i should have the first time
#homelab#selfhosting
a kernel panic that did me the courtesy of being repeatable
#linux#sysadmin#ops
my first prints were mostly spaghetti
#hardware#3dprinting
truenas and the great disk shuffle
#homelab#selfhosting
the day i broke dns and blamed everything else first
#networking#homelab
too many dashboards, not enough alerts
#homelab#selfhosting
dragging my services back home from the cloud
#homelab#selfhosting
a rack in the garage, regrets and all
#homelab#selfhosting
chasing a race condition for three days
#debugging#ops
fixing a psu instead of binning it
#hardware#electronics
a rack in the garage, regrets and all
#homelab#selfhosting
an acquisition that changes a tool i rely on
#news#opinion
nextcloud, again, properly this time
#homelab#selfhosting
okta is buying auth0, and i have feelings about it
#news#opinion
i finally moved my firewall to nftables
#linux#sysadmin#ops
a weekend where the phone stayed quiet
#personal#life
the query that ate a node every afternoon
#performance#ops
the rollback that turned a disaster into a footnote
#linux#sysadmin#ops
when reliable doesn't mean what you think in unreal
#gamedev#unreal#cpp
the "optimised" loop that ran slower than the naive one
#performance#ops
making my peace with context.Context
#golang#programming
the log that kept growing after rotation
#linux#sysadmin#ops
how much swap, and the answer i finally stopped arguing about
#linux#sysadmin#ops
the safety book that made me kinder about outages
#personal#life
warping, cracking, and the box i should have built first
#hardware#3dprinting
the cheap logic analyser that ended the guessing
#hardware#electronics
three days for a bug that only existed when I wasn't looking
#debugging#ops
the fix was waiting for me at the top of the hill
#personal#life
a year of working from home, with the gloss removed
#personal#life
a kvm over ip i built from a pi and a capture stick
#hardware#electronics
when logrotate wins and the app keeps writing to the old file
#linux#sysadmin#ops
bringing the small stuff back home
#homelab#selfhosting
the handful of git aliases i actually use
#tooling#dev
getting ipv6 working at home, eventually
#networking#homelab
nextcloud, for the third time, finally done properly
#homelab#selfhosting
interface{} and the type assertions i regret
#golang#programming
a heated chamber for abs, eventually
#hardware#3dprinting
three days for a missing mutex
#debugging#ops
the average is lying to you
#performance#ops
home assistant ate my evenings
#homelab#selfhosting
the empty interface and my regrets
#golang#programming
working from home, the honest version
#personal#life
when in doubt, put it on the wire and watch
#debugging#ops
it's always dns, and this time it really was
#debugging#ops
the disk wasn't full, only the partition that mattered
#debugging#ops
where does my code actually go in unreal?
#gamedev#unreal#cpp
when a bug needs branding before i'll take it seriously
#news#opinion
the printer that can only be repaired by the printer
#hardware#3dprinting
dyn or generic? i finally measured instead of guessing
#rust#programming
the bug that only existed when nobody was watching
#debugging#ops
a box of spaghetti and what it taught me
#hardware#3dprinting
the records came back down from the loft
#personal#life
the ssh dropped and my work didn't
#tooling#dev
io_uring, first impressions
#linux#sysadmin#ops
when nothing made sense, the wire did
#debugging#ops
the code was fine, i wasn't
#debugging#ops
a heated chamber for abs, eventually
#hardware#3dprinting
a security disclosure everyone's talking about this week
#news#opinion
context.context, and learning to thread it through
#golang#programming
the panic that turned up on demand
#linux#sysadmin#ops
the handful of git aliases i actually type
#tooling#dev
home assistant ate my evenings
#homelab#selfhosting
the outage caused by a full /var
#debugging#ops
a year with async/await, and the rewrite I do not regret
#rust#programming
finding where a go service actually spends its time
#golang#programming
poking at a usb-c charger until it gave me 20 volts
#hardware#electronics
backups i actually test now
#homelab#selfhosting
git aliases that earn their keep
#tooling#dev
making the wifi behave when everyone is streaming at once
#networking#homelab
the query that was bleeding us for months
#performance#ops
an esp32 weather station that mostly works
#hardware#electronics
reflashing a router i should have left alone
#hardware#electronics
ripgrep, fd, and giving up on the old tools
#tooling#dev
when the tool you live in gets bought
#news#opinion
one compose file to rule the cupboard
#homelab#selfhosting
stop the kernel hoarding dirty pages
#linux#sysadmin#ops
ipv6 at home, after only a decade of putting it off
#networking#homelab
bringing the services home, one bill at a time
#homelab#selfhosting
rootless containers, and the subuid rabbit hole
#linux#sysadmin#ops
a printer, a benchy, and a lot of spaghetti
#hardware#3dprinting
i built forty graphs and looked at none of them
#homelab#selfhosting
two connections, one that works, and the gap between them
#networking#homelab
the vpn that fit in a screenful of config
#networking#homelab
moving house with a homelab in the boot
#personal#life
multi-wan failover that actually fails over
#networking#homelab
making the router care about the right packets
#networking#homelab
the dead amp and a five pence capacitor
#hardware#electronics
the night a build job ate the whole machine
#linux#sysadmin#ops
threading context through, and finally getting it
#golang#programming
finally seeing the bus, one logic analyser later
#hardware#electronics
dotfiles, finally in some kind of order
#tooling#dev
abs warps less when the box is warm
#hardware#3dprinting
fzf is the keybinding i didn't know i needed
#tooling#dev
rebuilding the nas without losing anything
#homelab#selfhosting
the homelab outage that was hiding in 50 bytes of overhead
#networking#homelab
two materials, one nozzle, and a lot of purge
#hardware#3dprinting
the dotfiles repo i should have made years ago
#tooling#dev
i don't reach for grep and find anymore
#tooling#dev
when the company behind your favourite tool gets bought
#news#opinion
threading context.Context through everything, and why it earns its keep
#golang#programming
small pings work, big ones don't
#networking#homelab
when nobody believes the network, run tcpdump
#debugging#ops
the book that rewired how I look at every system I touch
#personal#life
cross-compiling Go for the little ARM box in the cupboard
#golang#programming
the borrow checker was right and i was wrong, again
#rust#programming
the long road to a heated chamber for ABS
#hardware#3dprinting
fighting the borrow checker and losing gracefully
#rust#programming
a cheap logic analyser, and finally seeing the bus
#hardware#electronics
carving VLANs out of a flat network without taking the house offline
#networking#homelab
four raspberry pis, a kubernetes cluster, and absolutely no point
#hardware#electronics
it was never the beans, it was the grinder
#personal#life
the ampere reveal, and the part of the keynote nobody quotes
#news#opinion
rust 1.46 is out and i finally stopped fighting the borrow checker
#news#opinion
the day half the internet wobbled because of one network
#news#opinion
a tenpence capacitor versus a forty quid power supply
#hardware#electronics
three days, one race, and a log line that lied to me
#debugging#ops
the handful of git aliases i'd miss
#tooling#dev
interface{} and the bill it sends you later
#golang#programming
kubernetes at home was a mistake (mostly)
#homelab#selfhosting
perf top on a box that shouldn't be busy
#performance#ops
the keynote everyone already has a take on
#news#opinion
tmux, and the end of losing a session to a dropped ssh
#tooling#dev
a kernel panic I could actually reproduce
#linux#sysadmin#ops
backups I actually test now
#homelab#selfhosting
error handling before anyhow existed
#rust#programming
perf top on a box that shouldn't be busy
#performance#ops
a wormable bug in windows dns, and why the word "wormable" empties a room
#news#opinion
watching the kernel work, finally, with ebpf
#performance#ops
moving services off the cloud and back home
#homelab#selfhosting
github gives me a dark mode and i lose an afternoon
#news#opinion
getting ipv6 working at home, only a decade late
#networking#homelab
rebuilding my nas one disk at a time without losing my nerve
#homelab#selfhosting
the off-by-one that three of us approved
#debugging#ops
perf top on a box that had no business being busy
#performance#ops
it's never dns, until it is
#debugging#ops
the cloud went away again, and we acted surprised
#news#opinion
async/await finally clicked, so naturally i rewrote the lot
#rust#programming
i put klipper on the printer and it learned to move
#hardware#3dprinting
the ssh dropped, and for once i didn't care
#tooling#dev
the cloud went down again and the lesson is the same as last time
#news#opinion
a dead power supply, a soldering iron, and a tenner saved
#hardware#electronics
carving up a flat network without taking the house offline
#networking#homelab
a bug in a stack you have never heard of, in a billion devices
#news#opinion
i put bgp in my house and i regret nothing
#networking#homelab
a year of mikrotik and pfsense side by side
#networking#homelab
i finally stopped typing grep -r and i am not going back
#tooling#dev
building a keyboard, and then flashing it
#hardware#electronics
interface{} was the easy answer, and i paid for it
#golang#programming
apple is leaving intel, and i mostly care about the toolchains
#news#opinion
rust errors back when you wrote every From by hand
#rust#programming
the day fzf quietly took over my shell
#tooling#dev
moving the firewall to nftables, at last
#linux#sysadmin#ops
where does this context.Context even go
#golang#programming
when in doubt, put it on the wire
#debugging#ops
the night a forgotten log file took down the lot
#debugging#ops
the ssh dropped and i didn't lose a thing
#tooling#dev
a prompt that finally tells me which cluster i'm about to break
#tooling#dev
three days hunting a race condition that only existed under load
#debugging#ops
i picked up the soldering iron again, and the smell took me straight back
#personal#life
poking at a four quid bluetooth thermometer
#hardware#electronics
github moves the default branch, and everyone has opinions
#news#opinion
the spaghetti stage of learning a 3d printer
#hardware#3dprinting
the bicycle that's been hanging in the shed for six years
#personal#life
everyone's installing it, so i tried not to
#news#opinion
the unit that would not die
#linux#sysadmin#ops
kubernetes at home was a mistake, mostly
#homelab#selfhosting
the day /var filled up and took everything with it
#debugging#ops
a database query that was quietly killing us
#performance#ops
the disclosure that ate my monday
#news#opinion
i monitored everything and learned almost nothing
#homelab#selfhosting
a long drive and a good podcast
#personal#life
a systemd unit that refused to stay dead
#linux#sysadmin#ops
blinking an led the hard way, in rust
#rust#programming
the day dns took down everything
#debugging#ops
the query that worked fine until it didn't
#performance#ops
mtu, the silent killer, comes for my vpn
#networking#homelab
working from home, the honest version
#personal#life
the day i broke my own dns and blamed everyone else first
#networking#homelab
a cheap logic analyser and the moment the bus stopped lying to me
#hardware#electronics
i finally stopped typing grep -r
#tooling#dev
a weather station that's right most of the time
#hardware#electronics
the same printer, twice as fast, after a firmware swap
#hardware#3dprinting
truenas and the great disk shuffle
#homelab#selfhosting
the average is fine, which is exactly the problem
#performance#ops
the dotfiles repo i should have made a decade ago
#tooling#dev
who is eating all the cpu on an idle server
#performance#ops
the query that wasn't slow, just slow ten thousand times
#performance#ops
ipv6 at home, eventually
#networking#homelab
the printer that prints its own repairs
#hardware#3dprinting
the git aliases i actually use
#tooling#dev
pprof, a load test, and the allocation i couldn't see
#golang#programming
when reliable rpcs aren't, in unreal
#gamedev#unreal#cpp
structured logging in go, and learning to stop fighting it
#golang#programming
logic analyser, and finally seeing the bus
#hardware#electronics
moving to neovim, slowly
#tooling#dev
structured logging in Go, finally sane
#golang#programming
when a bug gets a logo, a name and its own landing page
#news#opinion
another cloud outage, and what we should learn
#news#opinion
error handling before anyhow existed
#rust#programming
the outage caused by a full /var
#debugging#ops
building a keyboard, and then arguing with qmk
#hardware#electronics
the leak was a map i forgot to ever delete from
#debugging#ops
bringing the small stuff back home from the cloud
#homelab#selfhosting
i finally swapped esxi for proxmox at home
#homelab#selfhosting
the orm that hid a thousand queries
#performance#ops
a year of running mikrotik and pfsense side by side
#networking#homelab
how much does a syscall actually cost
#performance#ops
a weekend with the pager switched off
#personal#life
the book that taught me how organisations fail before software does
#personal#life
i rewrote a shell script in rust and i'm not sorry
#rust#programming
four raspberry pis, one switch, and absolutely no point
#hardware#electronics
i moved the homelab off esxi and onto proxmox
#homelab#selfhosting
i built a four-node pi cluster and learned almost nothing
#hardware#electronics
i finally moved off iptables, and i'm not going back
#linux#sysadmin#ops
i swapped esxi for proxmox and the homelab got friendlier
#homelab#selfhosting
i built a keyboard and then spent a week in the firmware
#hardware#electronics
the day i could finally see the i2c bus
#hardware#electronics
when a box stalls every thirty seconds, look at dirty_ratio
#linux#sysadmin#ops
everyone is excited about a kernel that ships next month
#news#opinion
the dead board that just had a tired capacitor
#hardware#electronics
the ssh drop that no longer costs me anything
#tooling#dev
building go binaries for an arm box from my laptop
#golang#programming
the router that was fine until i flashed it
#hardware#electronics
what my laptop charger and my phone were arguing about
#hardware#electronics
forty lines of config and my vpn just worked
#networking#homelab
throwing out dep and letting go modules do its job
#golang#programming
two colours, one print, and a lot of purged filament
#hardware#3dprinting
the idle server that wasn't idle
#performance#ops
i ran kubernetes at home so you don't have to
#homelab#selfhosting
i finally stopped reaching for grep
#tooling#dev
when in doubt, look at the wire
#debugging#ops
cutting a flat network into vlans without burning the weekend
#networking#homelab
i went in cynical and came out quiet
#personal#life
when a bug gets its own brand guidelines
#news#opinion
the flamegraph that pointed at the wrong thing, then the right one
#performance#ops
the unreal rpc that fired sometimes
#gamedev#unreal#cpp
the off-by-one three of us read and approved
#debugging#ops
putting root on zfs without regretting it
#linux#sysadmin#ops
i gave up on port forwarding and i feel fine
#networking#homelab
a hundred lines of go that just sit there and work
#golang#programming
drawing the line between c++ and blueprint
#gamedev#unreal#cpp
one reverse proxy to terminate them all
#homelab#selfhosting
yes, i still give my servers swap
#linux#sysadmin#ops
the bed is never level, and other lies i tell myself
#hardware#3dprinting
the bug i fixed twelve miles from my desk
#personal#life
i built fourteen dashboards and looked at none of them
#homelab#selfhosting
the printer that prints its own repairs
#hardware#3dprinting
the context i kept ignoring until it bit me
#golang#programming
the day i could finally watch the kernel work
#performance#ops
putting root on zfs, and why i finally bothered
#linux#sysadmin#ops
the last long drive before christmas
#personal#life
the citrix bug everyone's quietly panicking about
#news#opinion
i started developing film again
#personal#life
the day i realised the server doesn't trust me
#gamedev#unreal#cpp
three hours of motorway and a decent feed
#personal#life
running bgp at home, for reasons i can only half justify
#networking#homelab
three days hunting a bug that only happened when i wasn't looking
#debugging#ops
the one panic that didn't waste my week
#linux#sysadmin#ops
a rack in the garage, and everything it taught me the hard way
#homelab#selfhosting
the bug class that never quite goes away
#news#opinion
when /var fills up and everything gets weird
#debugging#ops
the panic that only showed up under load
#linux#sysadmin#ops
drawing the line between C++ and Blueprints
#gamedev#unreal#cpp
a first poke at io_uring
#linux#sysadmin#ops
what the 2018 edition quietly fixed
#rust#programming
building for the pi without touching the pi
#golang#programming
the average that hid the outage
#performance#ops
the router, the serial header, and a quiet evening ruined
#hardware#electronics
the disclosure, and the bit nobody wants to read
#news#opinion
the service that kept coming back
#linux#sysadmin#ops
watching the kernel without a debugger
#performance#ops
there is a server rack in my garage now and i have feelings about it
#homelab#selfhosting
building go binaries on my laptop and shipping them to an arm box
#golang#programming
how much swap, then? what i actually do on my own boxes
#linux#sysadmin#ops
the goroutine leak that hid behind a tidy little channel
#golang#programming
i put kubernetes in my spare room and mostly regret it
#homelab#selfhosting
i reflashed a router that was working perfectly well
#hardware#electronics
the multiplayer prototype that humbled me in a weekend
#gamedev#unreal#cpp
the borrow checker was right and i was tired
#rust#programming
chasing latency in a go service that looked fine
#golang#programming
the book that made me stop trusting my own dashboards
#personal#life
building the prompt i should have built years ago
#tooling#dev
a prompt that earns its keep
#tooling#dev
the systemd unit that would not stay dead
#linux#sysadmin#ops
when a bug gets a logo, a website and a name
#news#opinion
moving the homelab from ESXi to Proxmox
#homelab#selfhosting
i went in cynical and came out won over
#personal#life
building a keyboard, and the firmware that makes it mine
#hardware#electronics
running my own recursive resolver at home
#networking#homelab
the outage that was just a full /var
#debugging#ops
the bluekeep worm everyone feared finally showed up
#news#opinion
async/await is nearly here and i couldn't wait
#rust#programming
one docker-compose file to rule the homelab
#homelab#selfhosting
i went in expecting nonsense and came out quiet
#personal#life
the average is lying to you, look at p99
#performance#ops
truenas and the great disk shuffle
#homelab#selfhosting
the report that doubled and nobody noticed
#debugging#ops
when the company behind your favourite tool gets bought
#news#opinion
eBPF, or finally being able to ask the kernel what it's doing
#performance#ops
a raspberry pi cluster that taught me nothing useful, and i'd do it again
#hardware#electronics
the router that worked fine until i improved it
#hardware#electronics
bringing a dead board back with a steady hand and a flux pen
#hardware#electronics
the bug that only existed when nobody was looking
#debugging#ops
running kubernetes at home, and what it actually taught me
#homelab#selfhosting
why the average latency was lying to me
#performance#ops
dragging a flat home network into vlans without losing the wifi
#networking#homelab
one compose file to run the whole house
#homelab#selfhosting
home assistant ate my evenings, and i let it
#homelab#selfhosting
my dotfiles, finally in order
#tooling#dev
the 2018 edition quietly rewired my rust habits
#rust#programming
building a keyboard, and the firmware that makes it mine
#hardware#electronics
the day i flashed klipper and my printer stopped crawling
#hardware#3dprinting
perf top on a box that should have been asleep
#performance#ops
when a write-heavy box stalls every thirty seconds
#linux#sysadmin#ops
a pi cluster that taught me nothing useful, but was fun
#hardware#electronics
ebpf, and finally seeing what the kernel sees
#performance#ops
io_uring, first impressions from the bleeding edge
#linux#sysadmin#ops
the hidden web server everyone suddenly cared about
#news#opinion
three days lost to a bug that only happened when i wasn't looking
#debugging#ops
moving to neovim, slowly
#tooling#dev
parsing without regret, using nom
#rust#programming
building for the pi without ever touching the pi
#golang#programming
what rust error handling felt like before the crates showed up
#rust#programming
poking at io_uring on a fresh kernel
#linux#sysadmin#ops
the rare gift of a kernel panic you can reproduce
#linux#sysadmin#ops
an esp32 weather station, warts and all
#hardware#electronics
how much swap, and the answer i stopped arguing about
#linux#sysadmin#ops
the cron job that ran twice and said nothing
#debugging#ops
a cheap logic analyser and finally seeing the bus
#hardware#electronics
switching to nftables, at last
#linux#sysadmin#ops
the leak was a map i kept adding to and never deleting from
#debugging#ops
when the company that owns your tool gets bought
#news#opinion
i built a dashboard for everything and could see nothing
#homelab#selfhosting
wireguard finally killed my openvpn config
#networking#homelab
i moved a firewall to nftables and stopped flinching
#linux#sysadmin#ops
perf top on a box that was meant to be idle
#performance#ops
i swapped esxi for proxmox in the rack and didn't look back
#homelab#selfhosting
when logrotate wins the battle and the app keeps writing to the old file
#linux#sysadmin#ops
it's never dns, until it's the only resolver in the house
#debugging#ops
replacing a pool, one disk at a time, without losing my nerve
#homelab#selfhosting
i finally threw out my openvpn config and i'm not going back
#networking#homelab
the borrow checker was right and i was tired
#rust#programming
a year of mikrotik, and what i miss about pfsense
#networking#homelab
a weekend where nothing paged me
#personal#life
when the tool you depend on gets a new owner
#news#opinion
the error said "no such file" and not which one
#rust#programming
the swap question, and why zram quietly won me over
#linux#sysadmin#ops
the bug that fixed itself the moment i looked at it
#debugging#ops
the error type i wrote forty times before i learned the trick
#rust#programming
yes i still run swap, and here is the one setting that matters
#linux#sysadmin#ops
i rewrote a 40-line shell script in rust and i'd do it again
#rust#programming
the smallest useful daemon i've written, and how it got to production
#golang#programming
getting ipv6 working at home, only eighteen months late
#networking#homelab
my first proper fight with unreal's replication
#gamedev#unreal#cpp
what rust error handling felt like before anyhow turned up
#rust#programming
exposing c++ to blueprints in a way you won't hate in six months
#gamedev#unreal#cpp
the log file that grew forever no matter what logrotate did
#linux#sysadmin#ops
four hours of motorway and a podcast that earned its keep
#personal#life
the multiplayer prototype that put me firmly in my place
#gamedev#unreal#cpp
a year of mikrotik and pfsense, and which one stayed
#networking#homelab
the slow leak that was just a map nobody deleted from
#debugging#ops
i finally stopped reaching for grep and find
#tooling#dev
interface{}, or how i learned to stop trusting myself
#golang#programming
the backups i finally bothered to restore
#homelab#selfhosting
the grinder mattered more than the machine
#personal#life
passing context.Context until it finally clicked
#golang#programming
the day klipper made my printer feel like a different machine
#hardware#3dprinting
the rare gift of a kernel panic that happened on demand
#linux#sysadmin#ops
a dead ATX supply, one blown fuse, and a lesson in respect
#hardware#electronics
the goroutine leak that hid behind a channel nobody read
#golang#programming
the day i moved my printer's brain to a raspberry pi
#hardware#3dprinting
the goroutine leak that hid in plain sight
#golang#programming
moving the firewall to nftables, at long last
#linux#sysadmin#ops
bringing a dead board back with a soldering iron and stubbornness
#hardware#electronics
rebuilding a pool one disk at a time without losing my nerve
#homelab#selfhosting
the unit that came back from the dead, repeatedly
#linux#sysadmin#ops
passing context through, and finally understanding why
#golang#programming
i ran kubernetes at home and mostly regret it
#homelab#selfhosting
my first real fight with unreal's replication
#gamedev#unreal#cpp
eBPF, or finally seeing what the kernel sees
#performance#ops
journald ate the disk again, so i bounded it
#linux#sysadmin#ops
the dropped ssh connection that finally taught me tmux
#tooling#dev
i rewrote a thirty-line shell script in rust, and mostly enjoyed it
#rust#programming
the disclosure of the week, and why i'm not panicking yet
#news#opinion
i finally moved a box from iptables to nftables
#linux#sysadmin#ops
one reverse proxy, real certs, and no more browser warnings at home
#homelab#selfhosting
i put a rack in the garage, and the garage had opinions
#homelab#selfhosting
i reflashed a router that was working perfectly fine
#hardware#electronics
interface{} got me out of a corner and then quietly furnished it
#golang#programming
the disclosure everyone's reading, and the boxes nobody patched
#news#opinion
when someone buys the tool under your feet
#news#opinion
the flamegraph that pointed at the wrong thing, which was the right thing
#performance#ops
a cheap logic analyser and the moment the bus stopped being theoretical
#hardware#electronics
a day lost to packets that almost made it
#debugging#ops
half in, half out of neovim
#tooling#dev
when the journal quietly ate the disk
#linux#sysadmin#ops
rust feels different since the edition landed
#rust#programming
the off-by-one four of us nodded straight past
#debugging#ops
shipping a go binary to arm from a laptop that has never seen arm
#golang#programming
how much swap, and why i stopped arguing about it
#linux#sysadmin#ops
parsing a config format with nom, and learning to think in combinators
#rust#programming
building a keyboard, and falling down the qmk hole
#hardware#electronics
every bug now ships with a logo
#news#opinion
building go binaries for the pi without a toolchain in sight
#golang#programming
when a busy box stalls every thirty seconds, look at dirty_ratio
#linux#sysadmin#ops
ebpf, and finally seeing what the kernel sees
#performance#ops
rpcs in unreal, and the reliability footgun
#gamedev#unreal#cpp
what a syscall actually costs you
#performance#ops
make is a perfectly good task runner if you stop pretending it's 1985
#tooling#dev
it's never dns, except when it's mtu
#networking#homelab
moving root onto zfs, and the boot snag nobody warns you about
#linux#sysadmin#ops
truenas and the great disk shuffle
#homelab#selfhosting
four raspberry pis, one switch, and a weekend i won't get back
#hardware#electronics
cgroups v2 caught the thing cgroups v1 kept letting through
#linux#sysadmin#ops
the borrow checker was right and i was being stupid
#rust#programming
the grinder mattered more than the machine
#personal#life
how fuzzy finding quietly rewired the way i use a shell
#tooling#dev
sniffing a £6 bluetooth thermometer with gatttool
#hardware#electronics
i stopped trusting someone else's dns and ran my own
#networking#homelab
the runc bug, and why container "isolation" keeps me up at night
#news#opinion
the runc breakout and the joy of a shared kernel
#news#opinion
make is the task runner i keep coming back to
#tooling#dev
the bug that only existed when nobody was watching
#debugging#ops
klipper made my old printer feel new
#hardware#3dprinting
the printer that maintains itself, mostly
#hardware#3dprinting
io_uring is the async i/o interface linux always needed
#linux#sysadmin#ops
the day i stopped trusting someone else's resolver
#networking#homelab
the small joys of the 2018 edition
#rust#programming
it turns out the grinder was the whole thing
#personal#life
the idle server that was burning a whole core
#performance#ops
every interface{} i wrote came back to bite me
#golang#programming
the service i could not convince systemd to stop restarting
#linux#sysadmin#ops
the cloud went down again, and we acted surprised again
#news#opinion
i finally stopped reaching for grep
#tooling#dev
the router that was working fine until i improved it
#hardware#electronics
prising open a five pound bluetooth thermometer
#hardware#electronics
moving my root filesystem onto zfs without losing my nerve
#linux#sysadmin#ops
a weekend with the pager handed to someone else
#personal#life
the unreal rpc that fired sometimes and i couldn't see why
#gamedev#unreal#cpp
the night /var filled up and took the whole box with it
#debugging#ops
when too much page cache becomes a problem
#linux#sysadmin#ops
the query that was bleeding us a hundred milliseconds at a time
#performance#ops
how a cafetiere turned into a grinder obsession
#personal#life
when printing a bracket is faster than ordering one
#hardware#3dprinting
i built fourteen dashboards and look at none of them
#homelab#selfhosting
a year of fixing the box itself, and we're not done
#news#opinion
the service that wouldn't stay stopped
#linux#sysadmin#ops
the off-by-one four of us read and none of us saw
#debugging#ops
backups i actually test now
#homelab#selfhosting
four hours of motorway and a podcast that actually held up
#personal#life
the borrow checker was right and i was wrong, again
#rust#programming
it was the mtu. it's always the mtu
#debugging#ops
why i swapped esxi for proxmox at home
#homelab#selfhosting
the day the house lost the internet, and it was dns, and it was me
#networking#homelab
the bug that only existed when nobody was watching
#debugging#ops
dotfiles in a git repo, at last, after years of meaning to
#tooling#dev
bricking a perfectly good router for no good reason
#hardware#electronics
i ran kubernetes at home, and mostly i regret it
#homelab#selfhosting
why i finally moved the homelab off esxi and onto proxmox
#homelab#selfhosting
the great disk shuffle, or how i rebuilt my nas without losing a byte
#homelab#selfhosting
the show that knew exactly what an on-call evening looks like
#personal#life
one compose file to run the entire house
#homelab#selfhosting
the day i stopped losing my work to a dropped ssh connection
#tooling#dev
i wrote a 200-line tool in rust to avoid a 20-line shell script
#rust#programming
the context.Context habit i wish i'd picked up sooner
#golang#programming
the bracket nobody sells, so i drew it myself
#hardware#3dprinting
tearing out openvpn and not missing it for a second
#networking#homelab
the cloud went down, again, and we'll learn the same nothing
#news#opinion
i ran kubernetes at home for a year so you don't have to
#homelab#selfhosting
poking at a £6 ble thermometer until it gave up its secrets
#hardware#electronics
the outage that wasn't down, it was just lying
#debugging#ops
four raspberry pis, a lot of velcro, and no real point
#hardware#electronics
the service that came back from the dead every ten seconds
#linux#sysadmin#ops
the router that was working fine until i opened it
#hardware#electronics
interface{} is not a type, it's a promise to deal with it later
#golang#programming
the resolver was fine, the search domain was not
#networking#homelab
soldering 67 switches and flashing my own layout
#hardware#electronics
dropping google's dns for my own unbound
#networking#homelab
the book that taught me failure is normal, not exceptional
#personal#life
three days for one missing lock
#debugging#ops
the dotfiles repo i should have made years ago
#tooling#dev
carving a flat network into vlans without taking the house down
#networking#homelab
bed levelling, or the war that is never quite won
#hardware#3dprinting
running kubernetes at home was a mistake, mostly
#homelab#selfhosting
i instrumented everything and then drowned in dashboards
#homelab#selfhosting
when the write-back stalls: tuning dirty_ratio on a busy box
#linux#sysadmin#ops
building a keyboard, and the bit nobody warns you about
#hardware#electronics
the slow leak that was just a map nobody ever emptied
#debugging#ops
the bug everyone's patching this week, and the part nobody mentions
#news#opinion
four hours of motorway and a podcast that earned the trip
#personal#life
the flamegraph that pointed at the one function i'd never have profiled
#performance#ops
the unreal rpc that fired most of the time and ruined an afternoon
#gamedev#unreal#cpp
mikrotik vs pfsense, a year later
#networking#homelab
the outage caused by a full /var
#debugging#ops
parsing a daft little config format with nom
#rust#programming
bgp in the homelab, because why not
#networking#homelab
ipv6 at home, eventually
#networking#homelab
tmux, and never losing a session again
#tooling#dev
vlans on a flat network, the painful migration
#networking#homelab
i rewrote a 40-line shell script in rust, and i'd do it again
#rust#programming
a year on MikroTik after a decade on pfSense
#networking#homelab
why i moved the homelab off esxi and onto proxmox
#homelab#selfhosting
the bug that only existed when nobody was watching
#debugging#ops
when logrotate and a stubborn daemon disagree
#linux#sysadmin#ops
the underrated luxury of a phone that stays silent
#personal#life
building an enclosure so abs would stop warping off the bed
#hardware#3dprinting
the bug had a logo before it had a patch
#news#opinion
the function signature that accepts everything and promises nothing
#golang#programming
a kernel panic with the decency to be repeatable
#linux#sysadmin#ops
i ran kubernetes at home and i'm mostly sorry
#homelab#selfhosting
how interface{} crept through my codebase and what it cost
#golang#programming
chopping a flat home network into vlans without taking it all down
#networking#homelab
i rewrote a shell script in rust and i have feelings
#rust#programming
the bug that was always mtu
#networking#homelab
carving up a flat network without taking the house offline
#networking#homelab
four hours of motorway and an episode that earned them
#personal#life
a hundred lines of go that replaced a cron job and a prayer
#golang#programming
the psu that wasn't quite dead
#hardware#electronics
bringing a dead board back with a hot iron and some patience
#hardware#electronics
the war film that turned out to be about silence
#personal#life
the branded-vulnerability industrial complex
#news#opinion
when a card-skimmer didn't need a name
#news#opinion
the homelab that worked for everything except big files
#networking#homelab
i rewrote a tiny shell script in rust, here's the honest accounting
#rust#programming
threading context.Context through, and finally understanding why
#golang#programming
my first prints, and the small ways they went wrong
#hardware#3dprinting
the flamegraph that pointed at the last function I'd have guessed
#performance#ops
a region is not a backup, and other things this week reminded me
#news#opinion
the retry storm you wrote yourself
#news#opinion
one compose file to run the whole house
#homelab#selfhosting
journald ate the disk, here is the one line that stops it
#linux#sysadmin#ops
i put a rack in the garage and i mostly don't regret it
#homelab#selfhosting
the disclosure everyone's quoting, and the bit nobody patches
#news#opinion
when the dashboard is green and the site is down
#news#opinion
tmux, or how i stopped losing my work to a dropped ssh
#tooling#dev
building for the pi without compiling on the pi
#golang#programming
a fiver of capacitors versus a dead power supply
#hardware#electronics
how much swap, asked for the hundredth time
#linux#sysadmin#ops
everyone's got an opinion about systemd again
#news#opinion
the borrow checker was right and i was wrong, again
#rust#programming
the bug that only showed up on large files
#networking#homelab
the it crowd was a documentary and i refuse to discuss it
#personal#life
a botched upgrade, and the btrfs snapshot that undid it in seconds
#linux#sysadmin#ops
go modules are nearly here, and i am quietly retiring dep
#golang#programming
i ran kubernetes in my house and i have regrets (mostly)
#homelab#selfhosting
the network that worked, except when it really mattered
#networking#homelab
bringing a dead board back from the edge with an iron
#hardware#electronics
parsing a config format with nom, and learning to think in combinators
#rust#programming
the bracket that didn't exist, so i made it
#hardware#3dprinting
the git aliases i'd miss if you took them away
#tooling#dev
when the box freezes for five seconds and writeback is to blame
#linux#sysadmin#ops
the android fine, and who actually owns the defaults
#news#opinion
my prompt should answer questions before i ask them
#tooling#dev
when the bug gets a brand before it gets a patch
#news#opinion
the N+1 that hid behind a fast endpoint
#performance#ops
i went in cynical and came out quiet
#personal#life
it was the mtu, it's always the mtu
#debugging#ops
the bluetooth pairing flaw, and the quiet horror of firmware updates
#news#opinion
a year on the mikrotik, and what i still miss from pfsense
#networking#homelab
the homelab survived the move, mostly
#personal#life
the outage that was just a full /var
#debugging#ops
the backup that ran twice and corrupted itself
#debugging#ops
carving a flat home network into vlans without taking it all down
#networking#homelab
parsing a log line with nom, and why i stopped reaching for regex
#rust#programming
passing context.Context everywhere, and why it's worth it
#golang#programming
one docker-compose file to run the whole house
#homelab#selfhosting
a vpn that throttled itself, and yes it was the mtu
#debugging#ops
the disclosure everyone is forwarding this week
#news#opinion
three days lost to a goroutine that started too early
#debugging#ops
my first week with a 3d printer was mostly spaghetti
#hardware#3dprinting
the desk-sized data centre that does almost nothing
#hardware#electronics
a botched upgrade, and the snapshot that undid it
#linux#sysadmin#ops
make is a fine task runner, and not just for c
#tooling#dev
i finally stopped typing grep -r
#tooling#dev
i built a four-node pi cluster and learned nothing of value
#hardware#electronics
the borrow checker was right and i was wrong, again
#rust#programming
moving house when one of the boxes is a rack
#personal#life
the time a stale ttl outlived my actual mistake
#networking#homelab
i built a wall of dashboards and stopped looking at any of them
#homelab#selfhosting
the removal van does not care about your uptime
#personal#life
everyone has a hot take about microsoft buying github
#news#opinion
penning in a runaway process with cgroups v2
#linux#sysadmin#ops
a year of running both mikrotik and pfsense, and what i'd actually keep
#networking#homelab
the join that got expensive when nobody was looking
#performance#ops
the slow film i nearly switched off
#personal#life
a prompt that earns its space
#tooling#dev
when a bug ships with branding
#news#opinion
stopping journald from eating the disk
#linux#sysadmin#ops
tuning dirty_ratio on a box that writes a lot
#linux#sysadmin#ops
a kernel panic i could actually reproduce
#linux#sysadmin#ops
fighting the borrow checker and losing gracefully
#rust#programming
first prints, first failures
#hardware#3dprinting
mtu, the silent killer
#networking#homelab
everyone i've ever given an email to wants my consent
#news#opinion
another cloud outage, and what we should learn
#news#opinion
i monitored everything and learned nothing
#homelab#selfhosting
taming the upload so the house stops fighting itself
#networking#homelab
the day my own resolver broke and dnssec was right to
#networking#homelab
i stopped trusting my isp's dns and ran unbound
#networking#homelab
a map with no exit, and the eviction i should have written first
#debugging#ops
the hot path was in the logging
#performance#ops
the router i bricked, and the serial cable that saved it
#hardware#electronics
the unbounded map, and how i finally went looking for it
#debugging#ops
how much does crossing into the kernel actually cost
#performance#ops
it wasn't the network, it was the names
#debugging#ops
a film i fully expected to dislike
#personal#life
four hours of motorway and a back catalogue to burn through
#personal#life
the cache that grew until the box fell over
#debugging#ops
another cloud outage, and the lessons we keep not learning
#news#opinion
ebpf, and finally seeing what the kernel sees
#performance#ops
the router i should have left alone
#hardware#electronics
truenas and the great disk shuffle
#homelab#selfhosting
the overlapping cron job that ate its own tail
#debugging#ops
the first layer is everything, and the bed is never flat
#hardware#3dprinting
the git aliases i'd miss the most
#tooling#dev
when a job fired twice because two clocks disagreed
#debugging#ops
threading context through, and learning to stop fighting it
#golang#programming
getting ipv6 working at home, eventually
#networking#homelab
a mechanical keyboard build, down to the firmware
#hardware#electronics
the thing everyone's patching this week
#news#opinion
making peace with a wonky print bed
#hardware#3dprinting
a rack in the garage, regrets and all
#homelab#selfhosting
switching root onto zfs, carefully
#linux#sysadmin#ops
the outage caused by a full /var
#debugging#ops
a small parser, written with nom
#rust#programming
the it crowd is a documentary and i won't hear otherwise
#personal#life
ebpf, or how i stopped guessing about a slow box
#performance#ops
go is finally getting real dependency management
#golang#programming
when writeback stalls everything, look at dirty_ratio
#linux#sysadmin#ops
the slow leak that was a cache i forgot to evict
#debugging#ops
how a £40 burr grinder became a small obsession
#personal#life
parsing a log format with nom, and learning to think in combinators
#rust#programming
a year on proxmox, and i'm not going back
#homelab#selfhosting
it was dns, it is always dns
#debugging#ops
the outage where the disk was full and nobody had noticed
#debugging#ops
a book that quietly rewired how i think about systems
#personal#life
context.context, and learning to thread it through
#golang#programming
a year of failed prints, and what i'd tell past me
#hardware#3dprinting
home assistant has quietly eaten a month of my life
#homelab#selfhosting
a tiny daemon in go, and the joy of shipping a single binary
#golang#programming
another cloud wobble, and the lesson we keep not learning
#news#opinion
the day dns took down everything, again
#debugging#ops
logic analyser, and finally seeing the bus
#hardware#electronics
my dotfiles, finally in order
#tooling#dev
the outage nobody saw coming, because /var was full
#debugging#ops
the book that taught me queues are everywhere
#personal#life
another cloud outage, and the lesson we keep not learning
#news#opinion
kubernetes at home was a mistake (mostly)
#homelab#selfhosting
the outage caused by a full /var
#debugging#ops
six hours of road and a queue i finally cleared
#personal#life
the borrow checker was right and i was wrong, again
#rust#programming
real certs for the things on my own network
#homelab#selfhosting
i shipped a forty-line daemon and it just runs
#golang#programming
i want go to just solve dependencies
#golang#programming
taming a house that streams everything at once
#networking#homelab
the router that worked fine until i touched it
#hardware#electronics
when a cpu bug gets a logo, you know it's a bad month
#news#opinion
the path mtu problem that only broke big requests
#networking#homelab
two weeks on, the dotfiles repo earned its keep
#tooling#dev
instrumenting the kernel without rebooting it
#performance#ops
the makefile is my universal task runner now
#tooling#dev
i finally put my dotfiles in order, and i mean properly
#tooling#dev
when the bug is in the silicon
#news#opinion
how i moved a homelab without losing my mind (mostly)
#personal#life
the rack goes in the van last
#personal#life
replication is not as free as the tutorials make it look
#gamedev#unreal#cpp
the .context() helper i keep copying between rust projects
#rust#programming
losing to the borrow checker, then realising it was right
#rust#programming
it was never the network, it was the resolver
#debugging#ops
a christmas-break rust cli, and the honest cost of it
#rust#programming
error handling in rust, the year before anyhow saved us all
#rust#programming
a dead psu, two bulging caps, and an hour with the iron
#hardware#electronics
the flamegraph that pointed at the one line i'd never have guessed
#performance#ops
exposing c++ to blueprints without hating yourself later
#gamedev#unreal#cpp
kubernetes at home was a mistake, mostly
#homelab#selfhosting
the outage that was just a full /var
#debugging#ops
another small rust cli, and the part i keep getting wrong
#rust#programming
one compose file to run the lot
#homelab#selfhosting
getting ipv6 into the house, the slow way
#networking#homelab
the macos root login bug, and why local matters
#news#opinion
running bgp at home, which i did not need to do
#networking#homelab
getting ipv6 working at home, eventually
#networking#homelab
moving the firewall to nftables, finally
#linux#sysadmin#ops
thinking in stocks and flows, thanks to a slim green book
#personal#life
kubernetes 1.8.3, and the joy of a quiet patch release
#news#opinion
a cheap logic analyser, and finally seeing the bus
#hardware#electronics
the garage rack, one winter in
#homelab#selfhosting
forty lines of go that quietly run my house
#golang#programming
the bug i fixed forty minutes after leaving my desk
#personal#life
building a prompt that earns its place on the screen
#tooling#dev
when rust error handling meant rolling your own
#rust#programming
the git aliases i'd actually fight to keep
#tooling#dev
the night /var filled up and took the app with it
#debugging#ops
kubernetes 1.8 and the slow business of cluster upgrades
#news#opinion
i ran bgp in my own house and learned things i didn't need to
#networking#homelab
small packets fine, big packets gone: the mtu strikes again
#debugging#ops
a rust tool to find duplicate files, and whether it earned the build time
#rust#programming
threading context through a worker pool, not just an http handler
#golang#programming
i tried to mutate a vec while iterating it, and rust said no
#rust#programming
the goroutine that never came home
#golang#programming
a hundred lines of go that quietly renews our certs
#golang#programming
the borrow checker was right and i was holding a reference too long
#rust#programming
i reflashed a working router for a vlan feature i barely needed
#hardware#electronics
the bug i fixed by leaving the keyboard
#personal#life
one compose file to run the whole house
#homelab#selfhosting
the borrow checker was right and i was tired
#rust#programming
a sane line between c++ and blueprints in unreal
#gamedev#unreal#cpp
the outage that wasn't the database, it was dns again
#debugging#ops
shuffling disks under freenas without losing my nerve
#homelab#selfhosting
the memo, the firing, and the monoculture i recognise
#news#opinion
moving to neovim one config line at a time
#tooling#dev
what a syscall actually costs, with numbers
#performance#ops
bed levelling, the eternal war
#hardware#3dprinting
the day the borrow checker was right and i was wrong
#rust#programming
finally seeing the bus instead of guessing at it
#hardware#electronics
the router i bricked, and the serial header that saved it
#hardware#electronics
a long drive and a good podcast
#personal#life
it was the mtu, it's always the mtu
#debugging#ops
the joy of a quiet weekend with no oncall
#personal#life
the cron job that ran twice and never told me
#debugging#ops
another worm tears through, and patching is still nobody's favourite job
#news#opinion
a systemd unit that refused to stay dead
#linux#sysadmin#ops
makefiles for things that aren't c
#tooling#dev
a weekend rust cli, and whether the borrow checker earned its keep
#rust#programming
a tenner of capacitors beats a new power supply
#hardware#electronics
when logrotate and a stubborn daemon disagree
#linux#sysadmin#ops
switching to neovim without making it a personality
#tooling#dev
a cheap logic analyser and finally seeing the bus
#hardware#electronics
moving a small firewall from iptables to nftables
#linux#sysadmin#ops
my first run-in with unreal's replication model
#gamedev#unreal#cpp
three days inside a race i couldn't reproduce
#debugging#ops
a bulging capacitor and a fiver's worth of fix
#hardware#electronics
when logrotate rotates the file and the app keeps writing to nowhere
#linux#sysadmin#ops
the one-liner that talked me out of rust
#rust#programming
another small tool, another afternoon in rust
#rust#programming
the bug fixed itself somewhere around mile eight
#personal#life
a cheap logic analyser and the moment i2c stopped being magic
#hardware#electronics
a power blip grounded an airline, and we keep not learning
#news#opinion
getting go onto an arm box without dragging a toolchain along
#golang#programming
i threw out my openvpn config and i feel lighter for it
#networking#homelab
one rollback and the weekend was mine again
#linux#sysadmin#ops
the borrow checker was right and i was tired
#rust#programming
it was never the app, it was always dns
#debugging#ops
wannacry, and the unpatched box we all keep somewhere
#news#opinion
the makefile is the readme you actually run
#tooling#dev
prodding a £6 bluetooth thermometer until it talked
#hardware#electronics
cross-compiling go for an arm box, the easy way and the way i did it first
#golang#programming
moving root onto zfs, and why i'd do it again
#linux#sysadmin#ops
tmux, and never losing a session to a dropped ssh again
#tooling#dev
the great disk shuffle, or how i grew a freenas pool the slow way
#homelab#selfhosting
the book that taught me to stop blaming the operator
#personal#life
docker splits in two and renames itself moby, and i have thoughts
#news#opinion
the logic analyser that finally let me see the bus
#hardware#electronics
when s3 sneezed and half the web caught a cold
#news#opinion
my first week with a 3d printer, mostly spaghetti
#hardware#3dprinting
your average latency is lying to you
#performance#ops
two boxes, one cron line, and a backup that ran in stereo
#debugging#ops
an ESP32 weather station, and the long road to "mostly"
#hardware#electronics
building Go on the laptop, running it on the Pi
#golang#programming
ripping esxi out of the homelab for proxmox
#homelab#selfhosting
the map that grew until the process didn't
#debugging#ops
a cheap logic analyser and the moment the bus made sense
#hardware#electronics
how much swap, and why I stopped arguing about it
#linux#sysadmin#ops
running bgp at home, for no good reason
#networking#homelab
my printer suddenly got fast, and it was the firmware
#hardware#3dprinting
the average latency is lying to you
#performance#ops
i swapped esxi for proxmox and didn't look back
#homelab#selfhosting
the cron job that ran twice and told no one
#debugging#ops
the bug i fixed by leaving my desk
#personal#life
what a syscall actually costs you
#performance#ops
the day i finally understood unreal replication
#gamedev#unreal#cpp
the smallest useful daemon i've written in go
#golang#programming
the bracket i couldn't buy, so i drew it
#hardware#3dprinting
one compose file to run the house
#homelab#selfhosting
the day /var quietly filled up
#debugging#ops
the btrfs snapshot that turned a bad upgrade into a five-minute fix
#linux#sysadmin#ops
sniffing a cheap ble thermometer to find its temperature characteristic
#hardware#electronics
a few more days with unreal replication, and the relevancy trap
#gamedev#unreal#cpp
another small rust cli, and the parts i'd do differently
#rust#programming
context.context, and finally threading it through everything
#golang#programming
unreal replication, and the day my variables didn't move
#gamedev#unreal#cpp
the one tv show that gets the on-call dread right
#personal#life
i put kubernetes in my house and i have regrets
#homelab#selfhosting
your average latency is lying to you
#performance#ops
rolling your own error type in rust, the long way round
#rust#programming
the goroutines that never came home
#golang#programming
getting the systemd journal to stop eating the disk
#linux#sysadmin#ops
the job that fired twice because two boxes thought they were in charge
#debugging#ops
the cache that only ever grew
#debugging#ops
i only wanted a nicer cup of coffee
#personal#life
the borrow checker was right and i was wrong
#rust#programming
the book that rewired how i see failures
#personal#life
the service that kept coming back from the dead
#linux#sysadmin#ops
my first week with a 3d printer, mostly spent failing
#hardware#3dprinting
the goroutines i forgot to stop
#golang#programming
four hours of motorway and one very good podcast
#personal#life
how a bag of beans became a grinder obsession
#personal#life
when logrotate and a stubborn daemon disagree
#linux#sysadmin#ops
how much swap, and why i stopped arguing about it
#linux#sysadmin#ops
yet another outage, and the lessons we keep not learning
#news#opinion
the bug i fixed by leaving the keyboard
#personal#life
reviving a doorbell transformer board and learning to reflow
#hardware#electronics
building a prompt that earns its space
#tooling#dev
the borrow checker won, and i'm fine with it
#rust#programming
bringing a dead amp board back from the brink
#hardware#electronics
a weekend where the pager stayed quiet
#personal#life
a billion accounts, and the reuse problem we keep ignoring
#news#opinion
putting root on zfs and not regretting it
#linux#sysadmin#ops
my first proper fight with unreal replication
#gamedev#unreal#cpp
the leak was a map i kept adding to and never pruned
#debugging#ops
building go binaries for the pi from my laptop
#golang#programming
the dead psu that wasn't quite dead
#hardware#electronics
mtu, the silent killer
#networking#homelab
i bought a server rack for the garage
#homelab#selfhosting
terminating tls at home with one nginx box
#homelab#selfhosting
everything broke because /var was full
#debugging#ops
another week, another router botnet
#news#opinion
dirty cow, a month on, and why the boring patch is the hard part
#news#opinion
the log file that grew to forty gigabytes
#linux#sysadmin#ops
the leak was a map, and the map was me
#debugging#ops
the borrow checker was right and i was wrong
#rust#programming
moving a box from iptables to nftables at last
#linux#sysadmin#ops
the query that was quietly killing us
#performance#ops
ripping ESXi out of the homelab for Proxmox
#homelab#selfhosting
a syscall is about 80 nanoseconds, so stop making so many
#performance#ops
the night /var filled up and took the lot with it
#debugging#ops
building a prompt that earns its space
#tooling#dev
the flamegraph found the thing I'd sworn was fine
#performance#ops
make is a perfectly good task runner, actually
#tooling#dev
how much does a syscall actually cost?
#performance#ops
another big outage, same old lesson
#news#opinion
mikrotik or pfsense, twelve months in
#networking#homelab
stopping journald from eating the disk
#linux#sysadmin#ops
the leak was a map i forgot to empty
#debugging#ops
first prints, first failures
#hardware#3dprinting
moving my root filesystem onto zfs
#linux#sysadmin#ops
it was dns, it is always dns
#debugging#ops
the cron job that ran twice and told no one
#debugging#ops
kubernetes at home was a mistake, mostly
#homelab#selfhosting
moving root onto zfs without losing my nerve
#linux#sysadmin#ops
the day journald quietly ate the disk
#linux#sysadmin#ops
the day i pointed my whole house at a dead resolver
#networking#homelab
shipping a one-job daemon and resisting the urge to add features
#golang#programming
the flamegraph that pointed at the one function i'd never have guessed
#performance#ops
the smallest daemon i could justify writing
#golang#programming
git aliases that earn their keep
#tooling#dev
tmux, or how i stopped losing my work to a dropped ssh
#tooling#dev
another region falls over, and the lessons we keep refusing to learn
#news#opinion
bringing a dead psu back from the dead with a soldering iron
#hardware#electronics
a weekend where the pager stayed quiet
#personal#life
one router, a thousand grounded flights
#news#opinion
getting ipv6 working at home, finally
#networking#homelab
proper certs at home with a reverse proxy and let's encrypt
#homelab#selfhosting
carving up a flat network into vlans, the hard way
#networking#homelab
a tiny cli in rust, and whether it earned its keep
#rust#programming
httpoxy, or how a fifteen-year-old bug came back round
#news#opinion
the makefile is just where i keep the commands i forget
#tooling#dev
a weekend with the pager switched off
#personal#life
a little cli in rust, was it worth it
#rust#programming
bed levelling, the eternal war
#hardware#3dprinting
the hot path was in the logging
#performance#ops
another cloud outage, and what we should learn
#news#opinion
flamegraphs and a hot path i never suspected
#performance#ops
moving to neovim, slowly
#tooling#dev
soldering a board back to life
#hardware#electronics
another region falls over, and the lesson we keep not learning
#news#opinion
one compose file to run the house
#homelab#selfhosting
logrotate vs the app that wouldn't let go
#linux#sysadmin#ops
the makefile as a project's front door
#tooling#dev
a keyboard i soldered, and the firmware that made it mine
#hardware#electronics
the goroutine that wouldn't die
#golang#programming
replication in unreal, and the actor that only moved on the server
#gamedev#unreal#cpp
a shell prompt that tells me what i need
#tooling#dev
a tiny daemon in go, and the bits that aren't the code
#golang#programming
cross-compiling go for an arm box, the long version
#golang#programming
the flamegraph that pointed at the wrong file entirely
#performance#ops
the leak was a map i forgot to empty
#debugging#ops
when the breach wasn't the breach
#news#opinion
a weather station on a chip i can barely get hold of
#hardware#electronics
building go binaries for the pi without the pi
#golang#programming
i rewrote a shell script in rust and i'm not sorry
#rust#programming
the weekend btrfs snapshots earned their keep
#linux#sysadmin#ops
moving a root filesystem onto zfs on linux
#linux#sysadmin#ops
silicon valley season 3
#personal#tv
igmpqd
#foss#golang#igmp#igmpqd
back on the grid
#news#personal