Networking Issues is probably Cache Invalidation in Disguise.
there's mostly only two relentless hardships in programming: networking issues, naming things, and off by one errors.
a month ago by gandalf_der_13te to c/programmer_humor
Networking Issues is probably Cache Invalidation in Disguise.
I started in networks.
The volume of people who work in technology that don't understand networking is astonishing. I probably spent more time explaining how a web proxy works than I did actually setting things up.
Firewall rules? Spells and magic. Routing? Unpossible! DNS? Forget it, I'm going home.
Subnetting and the difference between /8 and /24 or /32 and how you allocate IP addresses between them has always been crazy for me to grasp.
I feel like if I could finally understand that after 20 years β¦ Iβd be happy but no here I am, effectively ignorant to it and looking at networking wizards as true wizards
It's always DNS...
Networking is so easy nowadays. Just plug a network cable into your device and it mostly works out of the box. Don't you guys remember the bad old times of coax cables and token ring?
Imagine providing a public WiFi before 1993, even if you ignore the fact that WiFis had a cable back then.
The most important technique to master: The Ping and Wiggle.
Distributed systems.
There are only two hard things in Computer Science: cache invalidation and naming things.
β Widely attributed to Phil Karlton
There are 2 hard problems in computer science: cache invalidation, naming things, and off-by-1 errors.
β Leon Bambrick 2010-01-01
There's actually only one and it's my coworkers.
Human-human interface configuration falls under networking issues. And naming things, now that I think about it.
And occasionally off-by-one issues :(
Off-by-one errors are real errors. A common mistake rookie developers make (or used to make, anyway) is forgetting that arrays are zero-indexed when creating an array, then seeing the value that should be in array[n-1] when they read array[n].
Another common off-by-one error is double counting: Some accumulators don't do all their processing in the same function, and occasionally one thing will be checked for inclusion twice, causing the accumulator to have one more element than it should.
The more I get into the more I'm convinced that the most important skill in programming is lexicography.
yeah i agree ... many people can write good software, but to make it stick around, you need a good name for it
0 based indexing of course, so what's the joke? oh, mixing up count and max index is a hardship you get over after a couple of years, but it comes back sometimes.
The more you move through the networking stack, the more you start seeing OB1 error potentials.
Many protocols have packet ids starting from (and wrapping back to) 1. Modbus registers start from 1, but stored in memory offset 0.
Packet lengths can either include or exclude the length itself. E.g. packet length 200 in a protocol could either mean the length is followed by 200 bytes of data; or 1 byte containing the length + 199 data; or even 4 bytes length + 196 data (off by four!)
It's a wild world out there.
it's not just zero-based indexing though. i've had situations like these a couple of times: write a for ... of loop to iterate through the elements of an iterable. a lot of the times, there's an unwanted first / last element in the list (that doesn't actually belong there) and i forget to remove it, then end up with garbage data in the result set.
Relentless problems... leadership
thanks for using Leebra!
go to feed...
what happened to cache invalidation?
save