Artificial truth

archives | latest | homepage | atom/rss/twitter

The more you see, the less you believe.

On rock climbing and C pointers
Wed 01 May 2019 — download

To do rock climbing, you usually need a couple of things: - two people; - two harnesses; - a couple of quidraws; - a rope; - a belaying device.

As a kid, I learned to belay with my uncle, with a HMS and a figure eight: those were the common solutions at that time, beside the super-ghetto hip-belaying.

Later, as I climbed with schoolmates, we belayed each other with tubular/plates devices, since they're super-lightweight, affordable, useable on two ropes (rappelling on two strands!), fitting on large scale of ropes diameters… I think that one of us had a grigri 2, which, released in 2011, were pretty new at that time. The auto-blocking feature didn't inspire a lot of confidence, especially after Petzl's recall of some devices. So we didn't rely on it very much, and the device was mostly used by beginners to belay climbers who were top-roping.

A couple of days ago, I went climbing with some coworkers of mine. We had only one rope, so a single belaying device was required. I suggested to use my tubular one, and was told that we were going to use a grigri instead.

A familiar conversation ensued:

  • What is wrong with my tubular device?
  • It doesn't autoblock, the grigri does.
  • It does autoblocking when you're belaying from above. Moreover, I'm not sure I trust the autoblocking feature, last time I tried a grigri (a dozen years ago), it didn't work very well. Why do you need autoblocking anyway?
  • Because people are doing mistakes.
  • It's just a matter of using your device correctly and paying attention. Also, you can't do everything with a grigri: it can only be used on a single rope of two different diameters, and you can't easily do rappel with it, belaying someone from above is terrible, …
  • We only have a single rope, and we won't belay from above today.
  • But because of the autoblocking, it's tedious to give rope when the climber is cliping quickdraws.
  • It's a simple matter of habit, and even if it wasn't, it's a small price to pay for automatic blocking.

It took me quite some time to actually trust the autoblocking feature, to understand how I was supposed to give rope, to lose my tubular/eight figure reflexes, and to quit mumbling grumpily on why the grigri isn't powerful enough and that climbing with a playschool toy sucks the fun out of belaying.

How often has this conversation/thought process been witnessed in the software development/security world? Those are almost the same arguments usually used when it comes to C versus safer programming languages:

  • I don't trust this new memory-safe language.
  • I've always been using C and it's great.
  • C isn't dangerous, you just have to use it carefully.
  • Even if it's completely unneeded in this case, you can't do this and that in this memory-safe language, while in C you can.
  • I'm used to C, and I don't know the ways of this new language that aren't looking like idiomatic C, so I will loudly complain about the differences and will try to write C-like code as much as possible.
  • What about the performance impact? C might not be safe, but it's super fast, even if it would make perfect sense in the situation to trade a small amount of speed for a lot of safety.
  • Those cool kids with their fancy languages are paying less attention to what they're doing: with C, you need to be always fully aware of what's happening, otherwise everything will explode, meaning that C code is written way more carefully.

For someone that is quick at yelling "Thou should'st better hast a good reason for using the naughty-but-powerful C language for thy project" at people, this was an enlightening revelation.