top | item 41420672

A Real Life Off-by-One Error

318 points| leejo | 1 year ago |leejo.github.io | reply

118 comments

order
[+] AEVL|1 year ago|reply
Not an off-by-one error—at least not in spirit. Interesting nonetheless.

I expected the article to eventually answer this puzzle:

> The competition started and got through a number of rounds. There were some comments about how the climber on the left always won.

Near the end:

> The kicker is that the out of place hold hasn’t been used in a long time. The climbers have optimised their route such that it is skipped. The same happens to the fourth hold from the bottom. So either being in the wrong place is immaterial to the climbers’ technique as long as they don’t get in the way.

So it seems like the error discovered by the article author should not have conferred any advantage to the climber on the left.

Anyone who can shine light on this matter?

[+] jhncls|1 year ago|reply
People are misunderstanding the meaning of an off-by-one error. Suppose the plan states that hold A and hold B need to be 11 holes apart. In the true spirit of the off-by-one error, this can be interpreted in 3 ways:

- either as 11 empty holes between the holds; - as 11 holes, start counting 1 just above hold A; - or as 11 holes, start counting with hold A as number 1.

Another real-life example, is a plumber who tells the construction worker that the distance between the holes for hot and cold water needs to be 15 cm. This was meant to be measured center to center, but the constructor worker interpreted it as the distance from the right side of the first hole to the left side of the second. The result can still be admired in our house, 10 years later.

[+] Arcuru|1 year ago|reply
The climbers had complained about an issue with the belay ropes on the right side that they also fixed.

> A few of the climbers had said that the automatic belay ropes on the right hand lane did not feel right, so the cherry picker was replacing those and not the hold that I had noticed being out of place. The climbers had noticed something wasn’t quite right, but hadn’t said anything about the out of place hold.

It was probably just two separate problems.

[+] fsckboy|1 year ago|reply
>Not an off-by-one error—at least not in spirit. Interesting nonetheless.

Literally it was an off-by-one error. Literally, literal meaning.

[+] Robbsen|1 year ago|reply
> So it seems like the error discovered by the article author should not have conferred any advantage to the climber on the left.

They might not use the hold by physically touching it, but they might still use it as a visual indicator of where the other holds are in relation. These competitors are used to the same layout for many years. If there is a slight misrepresentation it can surely put them off.

[+] rockfishroll|1 year ago|reply
It's true that modern competitive speed climbers don't use that hold. The collective optimization of the route is hilariously serious (it's an olympic sport after all) and the different optimizations have names, like 'The Tomoa Skip'.

But I think it's possible that 'extra' holds are potentially like 'junk' DNA. People fall into the trap of thinking that DNA is useless if it's never transcribed, but we know that's not actually the case. Non-expressed DNA can do things like alter binding affinity for neighboring sequences, affecting how often those neighboring sequences are expressed. I think it's possible that climbers are taking in a lot of information subconsciously as they sprint through this route in order to mike very small adjustments. The position of surrounding holds, even ones they never touch, could very well be a part of that information stream. They're fighting over hundredths of a second, so even a very small effect could be meaningful.

[+] throwawayk7h|1 year ago|reply
It may not be a fencepost error, but I think it's still off by one.
[+] merizian|1 year ago|reply
Even if the out of place hold were used, would you then conclude it to be causal? I still wouldn't rule out coincidence. Many discoveries happen as a result of investigating spurious patterns.

Also the author rules out psychology, but I wouldn't, especially since there were multiple confirmed errors in the route preparation, which I expect could reduce one's trust in the fairness of the competition. In the moment, I might start to wonder, "If one hold was out of place, why not more? Is anyone even checking this?" even if untrue / unlikely.

[+] ano-ther|1 year ago|reply
They run the whole 15 meter up in about 5-10 seconds (quite amazing to watch: https://m.youtube.com/watch?v=8O4g8JmWn9E ). At that speed, a small disturbance from the path they internalized means that they need to switch back to thinking which will take them out of their flow.
[+] NeoTar|1 year ago|reply
In terms of real-life off-by-one errors, it's hard to beat the town of Wemding in Bavaria (Germany).

Here a pyramid of 120 blocks is planned, with one placed every ten years. It started on the 1200th anniversary of the town, and is planned to be complete 1200 years later... and I'm sure you've spotted the problem.

Matt Parker, the 'stand-up Mathematician' has a video on it: https://youtu.be/FAdmpAZTH_M?si=_u8fM-fprUWiEqZ9

[+] delgaudm|1 year ago|reply
If you cross your eyes and look at the routes as if it were a single stereoscopic image overlaying one route on top of each other, the misplaced hold jumps out at you immediately.
[+] sukmaagung|1 year ago|reply
It works. It is actually my secret technique when solving "find five differences".
[+] sebtron|1 year ago|reply
I don't understand how this works. If I cross my eyes, the images become extremely blurry. I can't even tell if they are precisely overlapping or not, let alone see if one of the holds is out of place.

Am I the only one?

[+] lilyball|1 year ago|reply
Good idea. I just tried that on the first image of the whole route (after zooming in a bit) and the misplaced hold looks like it's floating in space away from the wall.
[+] dkbrk|1 year ago|reply
I tried this, and while I didn't have any difficulty establishing a stereoscopic view it didn't jump out for me at all. I perceived the blue line floating on top of the problem handhold, but the handhold seemed to be on the same plane as all the others. Knowing it was the problem one, I could use the stereoscopic view to see it, but without already knowing I don't think it would be apparent.

This is odd to me since I've successfully used stereoscopy in the past to find small differences. For some reason, with this image, rather than causing a change in perceived z-level, my eyes fight for dominance and my left ends up winning.

[+] pooriar|1 year ago|reply
I just did it and it didn't jump out for me at all. Odd
[+] anyfoo|1 year ago|reply
Great find!

One comment on what the article says:

> If this were actual code review the correct comment would be something like “this [piece] hasn’t been used for years, it should be deleted”. But this is something in physical space, and there would be arguments that removing it (them) means the route has changed, thus times are no longer comparable.

Hmm, I think the correct analogy is rather a benchmark. Like code in a benchmarking tool or test, the whole climbing course does not serve any purpose, any actual goal, except to be completed as fast as possible.

You wouldn't say "these instructions should be deleted because branch prediction and speculative execution in recent years have made it so that total cycle count is the same without them", for the reason stated ultimately after in the article already: That may not have been true in the past, and may change again in the future.

[+] bigiain|1 year ago|reply
> "these instructions should be deleted because branch prediction and speculative execution in recent years have made it so that total cycle count is the same without them"

Then a new CPU architecture becomes popular, and spiders start winning every speed climbing event

[+] canucker2016|1 year ago|reply
My analogy is that "The bug is in the error-handling portion of the common fast-path speed traversal of the climb."

The fast path that the speed climbers commonly use doesn't involve the slower path involving the buggy portion.

But if the climber can't get up/further using the fast path then the climber may be forced to take the slower path.

Since the slower path is standardized, the climber knows how much effort/time is needed on the slower path.

Except on the righthand side, the climber's typical effort along the slower "buggy" path is different from the typical slower path and will result in an even slower time aka the execution time in the error-handling path is larger than usual...

[+] masklinn|1 year ago|reply
> You wouldn't say "these instructions should be deleted because branch prediction and speculative execution in recent years have made it so that total cycle count is the same without them"

This is a very different statement than the original, and furthermore the original might actually trigger performance issues e.g. while the operation might not be used anymore it can have side effects (like triggering a prefetch) which end up affecting downstream code.

[+] yccs27|1 year ago|reply
In the benchmark analogy, that piece would be a line of code that can be optimized away by the compiler. It could still matter if the code (course) is recompiled (rerouted) for a different architecture (climber).
[+] philip1209|1 year ago|reply
That's funny.

I discovered an off-by-one error in college as I was graduating. Apparently the "class plan" I had put together with an advisor during my second year was missing a class, and I discovered it as I petitioned it for graduation. "You're one class short."

(It was for my second major, not the primary one, and the head of the physics department was nice enough to credit a nonlinear optimization course from engineering toward the major, so I earned it.)

[+] renewiltord|1 year ago|reply
That's a fantastic find. I imagine some standard CV tool can spot this since the holds are grid-aligned. We should probably have something like that. It's crazy how good human pattern-recognition can get when trained on things. What a spot by you.

Also, by the way, where is the photo on your about page: https://images.squarespace-cdn.com/content/v1/60f40aa1942bba...

I feel like it's Crater Lake, Oregon, but considering where you live it's probably somewhere in Switzerland. Looks lovely.

[+] stijnstijn|1 year ago|reply
You could also simply take two photos and overlay them. The difference would be obvious immediately to the human eye.
[+] leejo|1 year ago|reply
It is Crater Lake, from a second visit this summer.
[+] autarch|1 year ago|reply
> Maybe when the record is unbeaten for more than a couple of years they should throw it all away and start with a brand new route?

There's been some discussion of having new speed routes every few years. I think this would make the event a thousand times more interesting. That said, I'm still not sure I'd be interested.

[+] gre|1 year ago|reply
How about birthdays? When you turn "1" it's your second birthday. Or counting three seconds. Start counting zero..one..two..three.
[+] taraparo|1 year ago|reply
The number on your yearly "birthday" is not the number of birthdays you had (you only have one birthday) but the number of years you survived since your birth.

So the day of your fifth birthday is the first day of your sixth year alive.

[+] ars|1 year ago|reply
Jewish law sometimes counts from 1 instead of 0 for birthdays, so a newborn is not 0 years old, they are in their 1st year. (But it's written as "when they are 1", so you have to know which counting method is being used.)
[+] fracus|1 year ago|reply
Seems bizarre to keep the same wall config for all of time. The sport becomes about muscle memory more than anything else. The competitors can literally turn off their conscious brain. It would seem to me, it would be more exciting as a spectator and competitor if they had to problem solve on their way up there. Records could be less about best times and more about how many rounds did someone win in a row or something.

They could even still incorporate the one standardized wall config as a speed round once in a while or integrate it into the competition in some other way.

[+] lostlogin|1 year ago|reply
> Seems bizarre to keep the same wall config for all of time. The sport becomes about muscle memory more than anything else.

Plenty of other sport are pretty much the same each time, particularly track and field.

[+] francis-li|1 year ago|reply
The same wall config is only for the speed competition. There has been debate about changing it though, cause like you said they become muscle memory and hyper-optimized.

There are other forms of competition:

- bouldering: how many of 4 short boulder problems can you finish

- lead: how high can you get on a longer, higher route (pictured on the right of the image in the article)

In these ones the problems are switched up every competition.

[+] yallpendantools|1 year ago|reply
I don't watch this event but, coming from other sports, I think there's more to this than sheer muscle memory. Humans are not machines. Sometimes you compete with ongoing or lingering injuries. Conditioning changes even for the most disciplined of athletes. All of these mean that a different approach might be warranted for each event depending on your "set-up".

Not to mention other variables outside of the human body. Perhaps the type of rope could matter in your performance. The age of the holds could matter too; even when the governing body standardizes on a replacement period for holds, I'm sure competitors would have strong opinions about the difference between a hold at the start of its service life versus one about to be replaced.

Also, the one thing I love seeing in physical contests is how competitors eke out the last bit of performance advantage with sheer willpower. Muscle memory takes care of the actions but performance and willpower is a conscious effort.

In short, no, I don't think competitors can literally turn off their conscious brain and just let muscle memory take over. If a field has jargon, there's a hell lot to geek over it.

[+] LeonB|1 year ago|reply
Once an activity has become a “competitive sport” it has a way of prioritising “measurable” over meaningful or enjoyable. When you develop a critical eye for this aspect of sport, the Olympics stop being enjoyable and become an utter horror of human maladjustment, a horrid parody of what it alleges to stand for.
[+] mst|1 year ago|reply
> Also, maybe in future someone will optimise the route using that currently unused hold four down from the top?

This reminds me a lot of how Brood War meta changes as new 'bugs' are discovered, since the fandom loves the game without it ever being touched so when edge cases are discovered they become part of the game rather than something to be fixed.

[+] 10-22-38Astoria|1 year ago|reply
My favorite off by one error is that the index of a count down is always one less than the amount that you subtracted. This means if you count up and down at the same time, you won’t count the middle number twice.

1: 1, 10 :0

2: 2, 9 :-1

3: 3, 8 :-2

4: 4, 7 :-3

5: 5, 6 :-4

Since the sum on each line is 11, the sum of all the numbers from one to ten is 55.

The cool thing is that this generalizes

1: 1, N : 0

2: 2, N - 1 :-1

3: 3, N - 2 :-2 <-sum is N+1

N/2: N/2, N -(N/2)+1 => N/2+1

So the sum of N numbers is N/2 * (N/2+N/2+1) => N/2 * (N+1) if N is even.

It appears to be broken for odd numbers

1: 1, 9 :0

2: 2, 8 :-1

3: 3, 7 :-2

4: 4, 6 :-3

5: 5, 0 :-4 <- can’t reuse 5

But for odds, setting the odd number K equal to N+1, N is an even number so the total sum is sum(N) + N+1. We showed that sum(N) = N/2 *(N+1). So we have N/2 * (N+1) + (N+1).

But that means N/2+1 * (N+1) equals sum(K)

=> (N+2)/2 * (N+1)

=> (K+1)/2 * K

So the formula N/2 * (N+1) computes the sum of N numbers if N is odd too! It works for all numbers. Wow!

[Edit: Formatting]

[+] BobAliceInATree|1 year ago|reply
You wouldn't want to remove unused holds, because in the future, someone may find a more efficient path the makes use of that hold, but ignores other ones.
[+] dwighttk|1 year ago|reply
>The kicker is that the out of place hold hasn’t been used in a long time.

I’m guessing the belay rope issue was real and the actual cause of the other lane always winning then.

[+] quantadev|1 year ago|reply
An AI image prompt could easily detect the misplace grip, but there's probably no other sport that needs to detect exact placements of things is there?
[+] polynomial|1 year ago|reply
How is this an off BY ONE error? (Pretty sure it's not.)
[+] db48x|1 year ago|reply
They’re all in real life.