Hacker News new | past | comments | ask | show | jobs | submit login
Operant Conditioning by Software Bugs (2012) (regehr.org)
78 points by skybrian on Apr 17, 2018 | hide | past | favorite | 14 comments

I often tell people about this post by Dan Luu from 2014: 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.)

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. :)

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?

Netflix; they even call it a monkey as well: https://github.com/Netflix/chaosmonkey

If you accept fuzzing as similar to your random monkey: https://testing.googleblog.com/2017/05/oss-fuzz-five-months-...

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.

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

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

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".

> 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.

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.

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.

> 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.

I have this exact problem when reconnecting to a corporate hardline.

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.”

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact