Though I do somewhat envy the possibility of having read the article close to publication and feel in some sense part of the history when it crops up again like this.
Let's go for experienced and ready to educate the young'uns.
"10 years ago we couldn't send an email 500 miles, but these days we can't send it 500 miles because it just routes internally."
Too bad, I think that would have been more interesting to read.
Obviously? I think I've had this phone call myself a few times, although in my experience it was never from a statistician and they didn't give me as much data, but I'm pretty sure the story is mostly accurate.
> I think this is nonsense... why would an invalid or incomplete sendmail configuration default to three milliseconds?
This is a wonderful question, and perhaps much more interesting than anything else in the page, but first, let's reproduce the timing;
My desktop, a 2017 Xeon E7-8880 (144 cores of 2.3ghz; 1tb ram) with a load of 2.26 at this moment:
$ time sleep 0.001
real 0m0.004s
user 0m0.001s
sys 0m0.003s
On my i9-10900k (3.7ghz) current load of 3,31: $ time sleep 0.001
real 0m0,002s
user 0m0,000s
sys 0m0,001s
(In case you think I'm measuring exec; time /bin/echo returns 0's on both machine)Now as to why this is? Well in order to understand that, you need to understand how connect() actually works, and how to create a timeout for connect(). Those skilled in the art know you've got a number of choices on how to do it, but they all involve multiple steps because connect() does not take a timeout as an argument. Here's one way (not too different than what sendmail does/did):
fcntl(f,F_SETFL,O_NONBLOCK);
if(-1==connect(f,...)&&errno==EWOULDBLOCK){
fd_set a;FD_ZERO(&a);FD_SET(f,&a);
if(!select(f+1,&a,&a,NULL,{.tv_sec=0,.tv_usec=0})) {
close(f);return error;
}
}
If you read this carefully, you only need to ask yourself how much time can pass between the top of connect() and the bottom of select(), and if you think it is zero like tedu does, you might probably have the same surprise: Computers are not abstract machines, but made out of matter and powered by energy and thus subject to the laws of physics, and so everything takes time.For others, the surprise might be that it's still 3msec over twenty years later, and I think that is a much more interesting subject to explore than whether the speed of light exists.
A 333 Hz clock seems like something you might have on computers going back to those days, even if not for the CPU.
I can't help but feel that's somewhat excessive for a desktop. Have you considered closing a few browser tabs?
I got it on ebay for €2k. You can't not expect me to use it as a desktop.
> Have you considered closing a few browser tabs?
No? I mean actually no: I made a brotab+wofi script that allows me to search tabs, and I find it a lot more convenient than bookmarks.
Here's the relevant bits:
brotab_filter='{
split($1,A,".");
t=$2;
gsub(/&/, "\\&",t); gsub(/, "\\<",t); gsub(/>/, "\\>",t);
print ""A[1]"."A[2]"."A[3]" Firefox "t""
}';
( # more stuff is in here
brotab list | awk -F" " "$brotab_filter" ) | \
wofi -m --insensitive --show dmenu --prompt='Focus a window' | sed -e 's/<[^>]*>//g' | {
read -r id name || exit 1
case "$id" in
exec) exec "$name" ;;
[0-9]*) swaymsg "[con_id=$id]" focus ;;
[a-z]\.*)
brotab activate "$id"; sleep 0.2;
swaymsg "[title=\"${name#Firefox }\"]" focus
;;
esac
}
Works fine on 19,294 tabs at the moment...Well, first light does 500 miles in 3ms, but the connect signal needs to come back, right? So it should be 250 miles, at most? But this is just a detail.
More importantly, because it seems to assume that all other operations besides the signal actually reaching the destination are instantaneous. As you point out yourself, computers are not abstract machines, so the actual response time between the signal being received by the destination (even assuming it's just one straight line with zero electronics in between) and the destination replying is not zero. I imagine there can be a large variation between physical installations and different types of hardware, so much as to make it very hard to detect a clear 500 miles boundary.
Or am I missing something?
"Should have been 6ms instead of 3 for the ACK to come back? Yes, sorry, it was too boring to add"; "Should it be much more and variable because of the routers in between? Yes sure, I probably pinged them and added up the delays"; "Shouldn't plenty of deliveries have failed for destinations much closer than 500 miles? Yes sure, but that must have been the limit..." Etc.
"The secret here is the kernel will always round 3ms up to at least one whole tick, 10ms."
Interestingly, not covered in the FAQ.
> "There are a number of destinations within that radius that we can't reach, either, or reach sporadically, but we can never email farther than this radius."
Yeah, the original retelling even states up-front:
> The story is slightly altered in order to protect the guilty, elide over irrelevant and boring details, and generally make the whole thing more entertaining.
It's pretty common to alter minor details of stories in order to make them easier to follow, not to mention that the entire account is also written several years after it happened, when details are presumably less likely to be completely accurate. Obviously the dialogue is reconstructive for narrative ease; no reader would look at that and assume it's intended to be a verbatim transcript.
Unless the author here can cite specific things that make it truly impossible for anything of that shape to have occurred, I'm not seeing anything that justifies the conclusion "there's a lot to the story that's obviously made up".
NO. NO NO NO.
How can you get SO MANY facts wrong when the freaking story is googlable?
Here's the original email: https://web.mit.edu/jemorris/humor/500-miles
Here's the FAQ that covers the ambiguous parts: https://www.ibiblio.org/harris/500milemail-faq.html
This annoys me because I know the original author and I remember when this happened (he told the story a few times).
Let's recap:
> there was a university president
NO! It was the chairman of the statistics department.
> who couldn’t send an email more than 500 miles,
True. Being in the statistics department he had the tools to make actual maps.
> and the wise sysadmin said that’s not possible, so the president said come to my office
Kind of true. There was an office involved.
> and lo and behold, the emails stopped before going 500 miles.
True.
> There’s a lot to the story that’s obviously made up,
NO! Zero of this story was made up.
ALL the people that were involved in the story are still alive. You can literally get them on the phone and talk to them. We're not debating whether or not Han Solo ever used a light saber. THIS SHIT REALLY HAPPENED.
Sheesh.
Today the websites are hosted on third party cloud servers (my school's main website is some company that hosts your Wordpress or Drupal site so you don't have to) and the email by Microsoft or Google. Same for every school it seems. I guess the IT department that used to run all the infra is now probably just a few people in charge of ordering new laptops for faculty/staff when they break, and replacing Wi-Fi access points every 5 years.
I'm sure the same thing happened with e.g. electricity - at first people in the physics department ran their own generators, then at some point the university was using enough electricity for day-to-day stuff like lights that the main generators moved to being operated by the facilities department, and nowadays the university just gets their electricity from the local wholesaler like every other big organisation and probably doesn't have a whole lot of transformer expertise in their maintenance department.
Typically that "IT department" was just a few CS teachers, who assigned some slacking students creating a webpage as a homework, and replacing a bad memory in a server computer as a lab work, and then gave up when that become impossible.
The answer is that per the original story, it was not defaulting to three milliseconds. It was defaulting to 0, and the 3ms was just how long it took the system to check for a response with a 0 timeout:
> Some experimentation established that on this particular machine with its typical load, a zero timeout would abort a connect call in slightly over three milliseconds.
This is a very different scenario, as it's not clear there should be a poll() there at all (or more likely select() given the age of the story) to match the original, but if there was, the select would have a timeout of 0, not 3ms, and would just happen to be unable to distinguish between 0 and up to 3ms.
Apparently not.
Of course, yes, the HFT firms will be using also the standard tricks of microwave towers, shortwave radio, weather balloon etc, to beat the fibre route.
It has a 500ms timeout to load some settings from a server in the UK via TLS. If it goes more than that 500ms (or something, it's unclear the exact timeout cause) the app just vapourises.
This is fine in the UK, TLS needs about* 3 times RTT to complete though, so an RTT above about 160ms and it's screwed.
Almost all our users are in the UK, europe, mid-east or east coast USA, and in that 160ms RTT range.
We ran into issues when a dozen people tried to use it in Australia, so the principal still happens with some badly written code.
I mean, I want reliability. But I also want Europeans to be able to taste that authentic latency they'd expect from a fledgling startup running out of a garage in San Jose.
connect() will take time. Either you then fail on reiceiving EINPROGRESS, or you attempt a select() with 0 for the timeout, which will also take time. That that time could add up to 3ms on a mid-90's system also used for other things seems entirely plausible to me.
(discussed previously on HN 5 years ago – https://news.ycombinator.com/item?id=23775404 – and 10 years ago – https://news.ycombinator.com/item?id=9338708)
I can only imagine the euphoria of reconciling the inputs of “the things I know to be true of computers and email” and “my emails won’t send further than 500 miles”. What a great story - thanks for posting the original.
- Car allergic to vanilla ice cream: https://www.cs.cmu.edu/~wkw/humour/carproblems.txt
- Can't log in when standing up: https://www.reddit.com/r/talesfromtechsupport/comments/3v52p...
- OpenOffice won't print on Tuesdays: https://bugs.launchpad.net/ubuntu/+source/cupsys/+bug/255161...
- The Wi-Fi only works when it's raining: https://predr.ag/blog/wifi-only-works-when-its-raining/
Each time it took several days before they repair centre got to it, and they then contacted us to tell us there was nothing wrong with the computer at all.
After we picked it up, eventually, when it started happening again for the third or fourth time, we realised the problem:
The "large" (a whopping 26") CRT TV we'd recently started placing it under when not in use caused it... A few days away from the TV to dishcharge it, and it was fine - hence why the repair technician didn't find anything.
Turns out it was old building with loose floorboards. The vibrational force of standing up was enough to short out a failing power supply. As long as I sat my desk, it was fine.
But I had a co-worker who had a worse problem with getting up to get a drink of water. Once while she was kitchen, an eight foot steel lighting ballast came loose from the ceiling and felt right onto her chair.That what-if memory still haunts me.
Or, was it?
https://superuser.com/questions/1406140/monitor-screen-that-...
(not disclaiming that it wasn't, but that "chair piston causes EM surge" had me driven crazy for the longest time til I was able to pinpoint the cause)
Standing up from the chair was enough to cause it to crash.
Not computer related really, but I'm reminded of when my Mom was helping set up macs in the lab at my middle school. I, a 4th grader, tagged along and hung out in the other lab across the hall. I got very incredulous looks when i claimed that there was a lizard in there. It was the Midwest over summer break! I was obviously a kid seeing things. There's no lizards here.
Then I produced it, caught under a bin. It was a brown anole that had come back in a plant sent from Florida. I wasn't crazy that day.
I told my mom to keep the system up to date and set up an ssh connection for remote access just in case.
A few months go by and one day I receive a phone call that she cannot find the system updater shortcut anymore. I started to think how I could get Gnome to load over ssh, I was sure she moved the icon accidentally or something but decided to google it just in case.
Lo and behold and there is a bug report that due to some bug in package management dependency resolution the graphic software updater GUI could remove… itself… if the user performed a routine system update. It seemed to even affect RHEL at the time if I’m not mistaken.
A yum install command away over ssh and it was solved but that was the day I realized that no matter how stable a distro is famed to be or how much support it has from a company, there was still lots of work to be done until Linux could be seen as friendly enough for the end user.
Car allergic to vanilla ice cream: https://news.ycombinator.com/item?id=37584399 and https://news.ycombinator.com/item?id=13347852
The Wi-Fi only works when it's raining: https://news.ycombinator.com/item?id=39896371
Quote: "Hitting the key, through a rube-goldberg-esque series of events, forces all outstanding load requests to be filled immediately in a single frame. This causes a massive hitch, and potentially could crash the game. If you don't care about those adverse effects the synchronous load is faster."
[1] https://www.eurogamer.net/a-single-button-press-skips-loadin...
Yes, it releases it at about 200 meters per second.
Perfection.
If I work 42 hours/week, how many minutes is that per year?
I've downloaded 4.91GB in the last minute, what's that in Mbps? How long will it take to download a 76GB game?
This AWS feature costs $0.045/hour, how much is that per month?
This guy I read about traveled 58,000km in 27 years, what's his average speed in m/s?
How much would a 10cm sphere of gold be worth in GBP?
If a 36 inch pipeline can deliver 25580 acre-feet of water in a year, how fast is the water flowing in m/s?
https://news.ycombinator.com/item?id=36988917
Is there some trick to this? Or do you have to input it like:
You have: 4/3pi(10 cm)^319320 kg/m^345000 GBP/kg
(What ChatGPT gave me)
The invocation is
You have: goldprice * golddensity * spherevol(10cm/2)
You want: GBP
The / value is the inverse of that in case you wanted that, ie 0.1 meters in miles.
It's explained in `man 1 units`
/ divide
(The second line is telling me 1USD is 0.00422357 of 1500DKK.)
Note if you use the currency conversions,
is needed to keep them up-to-date.You have: 1 miles You want: feet * 5280 / 0.00018939394
In the above example, 1 mile is 5280 feet, and 1 foot is 0.00018939394 miles
If I do 2 miles to feet, the values are doubled (or halved for the reverse conversion)
You have: 2 miles You want: feet * 10560 / 9.469697e-05
I found it via a "trey harris sage.org" search on Google.
Obligatory xkcd 10,000 lucky people explainer: https://xkcd.com/1053/