
Operant Conditioning by Software Bugs (2012) - skybrian
https://blog.regehr.org/archives/861
======
price
I often tell people about this post by Dan Luu from 2014:
[https://danluu.com/everything-is-broken/](https://danluu.com/everything-is-
broken/) It's about how, very, many, bugs there are in lots of software and
how most of us developers have gotten used to unseeing them. Since reading it,
I've always found it harder to unsee the bugs myself.

This post is a great writeup of another angle on the same phenomenon -- how
even as we unsee the bugs we adapt our behavior to avoid them.

(Dan's post also has a proposed solution, but I've never found that one as
convincing as the picture he paints of the problem.)

~~~
evincarofautumn
As a programming language developer, this is a persistent difficulty I’ve
slowly been training myself out of. I know how to use a language I’ve written
because, well, I wrote it—but if I sit down with a new user for an hour, they
discover all the bugs I knew about and a few I didn’t! (This applies to all
kinds of software, of course, it’s just particularly noticeable with developer
tools.)

But an hour of someone’s time is hard to get, and once they’ve used the
software a bit, they’re spent—you can’t make them naïve again. So fuzzing and
randomised property testing have begun to take their place for me, as well as
an adversarial dialogue in my own mind of “What happens if I try this stupid
thing?” versus “The software should patiently and correctly do _something_
reasonable, with no casualties, no matter what stupid thing the user does”,
each constantly trying to one-up the other. It’s pretty fun, actually—I’ve
thought of getting a “devil duck” and an “angel duck” to personify them, in
addition to the standard-issue debugging duck. :)

------
Animats
In the early days of the Macintosh, applications were expected to survive 24
hours on the Monkey, a program which randomly pressed keys and moved and
clicked the mouse.

Who's doing that today?

~~~
icebraining
Netflix; they even call it a monkey as well:
[https://github.com/Netflix/chaosmonkey](https://github.com/Netflix/chaosmonkey)

------
nwatson
The newest pattern I'm trying to learn ... on macOS whenever I copy text then
switch to Chrome and click on a field ... I need to wait 3 seconds before
pasting otherwise Chrome freezes 15% of the time.

Since it doesn't happen all the time it's hard to instill.

And another I just noticed ... the HN 'add comment' button disappears behind
the text box on Android... fixed by switch to landscape the back to portrait.

~~~
tomsmeding
Never had that HN bug personally, even though I check HN reasonably regularly
on my Android phone. Possibly your Android version is outdated?

~~~
DanBC
I get it sometimes, using Chrome on Android 7.0 on a Lenovo Moto G5.

------
ak39
This is the very definition of "super user" at some of the financial
institutions I've worked at: someone who knows the traps, pitfalls and quirks
of a highly complicated and fragile system that _mostly_ works.

And they get paid commensurate to this scarce but very useful "skill".

------
hellofunk
> For example, I never let my wife’s Windows 7 machine go for more than about
> two weeks without restarting it, whereas I reboot my Linux box only every
> few months. One time I had a job doing software development on Windows 3.1
> and my computer generally had to be rebooted at least twice a day if it was
> to continue working. Of the half-dozen Windows laptops that I’ve owned, none
> of them could reliably suspend/resume ten times without being rebooted.

I realized to my astonishment last week that despite using my Macbook for 12+
hours of coding nearly every day, I had not rebooted it in nearly four months!
This only became clear when I did an OS update that needed a reboot.

~~~
mrguyorama
I have to reboot my work macbook routinely, otherwise the WiFi gets flakey, to
the point that the wifi will drop every ten minutes and need to have its DHCP
lease renewed to function again. It also gets entirely taken over by apps that
decide to use up 100% of the CPU and MacOSX has no problem letting them, to
the point that javascript in Firefox begins to struggle to get any cycles of
its own, and electron apps also see this degradation. Occasionally when I try
to wake it from sleep, the computer wakes up and begins processing keyboard
and mouse events, but the screensaver stays on top of the whole screen,
ignoring any attempt to dismiss it.

I once installed an ubuntu VM. I then installed Java and Eclipse to work on a
C project I downloaded, and was greeted by all fonts on system windows
magically tripling in size and not being able to find a settings window to fix
it anywhere. I had to reinstall. The whole process from initial install to un-
usability was less than two hours

Meanwhile, my windows 7 desktop and windows 2012r2 server run 24/7, reboot
once a month on patch tuesday, and are rock-freaking-solid. Despite the fact
that they both see more diverse and stranger work than the macbook. Despite
using spinning rust Hard Drives in both, they are more responsive and reliable
under load than my macbook, and show no signs of misbehavior even when a bug
in a video editor I use cause the graphics driver to lock up and hard crash
(IN KERNEL SPACE) repeatedly, recovering with just a slight warning.

I'll never understand the "mac is reliable" ideology.

~~~
hellofunk
Strange luck you've had there. Odd.

I've owned three Macs over many years, and at least in my own experience, they
have been the most reliable machines I've owned in the twenty years I've been
developing. I still have a 2011 13-inch MBP that despite a hard drive
replacement is still whirring along fine. My main dev machine is a 15-inch
2016 model that is the most dependable I've personally experienced.

------
b1daly
This is an interesting perspective. I think this sort of behavior is
ubiquitous.

A recent example for me is some webpages seem to crash on iOS safari if I
scroll to fast. It happens more on older devices. So I’m constantly trying to
feel out the rate at which I’m scrolling. Carefully trying to balance the
desire to scroll quickly with the desire to not crash the page!

One issue here is that many people I’ve observed using software don’t perceive
the difference between “workarounds” for bugs and the using of the program in
its intended way.

It just becomes this generic blob of behaviors required to “make the program
work.”

