Links for 2014-09-01

  • Facebook’s drop-in replacement for std::vector

    Fixes some low-hanging fruit, performance-wise. ‘Simply replacing std::vector with folly::fbvector (after having included the folly/FBVector.h header file) will improve the performance of your C++ code using vectors with common coding patterns. The improvements are always non-negative, almost always measurable, frequently significant, sometimes dramatic, and occasionally spectacular.’ (via Tony Finch)

    (tags: c++ facebook performance algorithms vectors via:fanf optimization)

  • Applying cardiac alarm management techniques to your on-call

    An ops-focused take on a recent story about alarm fatigue, and how a Boston hospital dealt with it. When I was in Amazon, many of the teams in our division had a target to reduce false positive pages, with a definite monetary value attached to it, since many teams had “time off in lieu” payments for out-of-hours pages to the on-call staff. As a result, reducing false-positive pages was reasonably high priority and we dealt with this problem very proactively, with a well-developed sense of how to do so. It’s interesting to see how the outside world is only just starting to look into its amelioration. (Another benefit of a TOIL policy ;)

    (tags: ops monitoring sysadmin alerts alarms nagios alarm-fatigue false-positives pages)

  • “Invertible Bloom Lookup Tables” [paper]

    ‘We present a version of the Bloom filter data structure that supports not only the insertion, deletion, and lookup of key-value pairs, but also allows a complete listing of the pairs it contains with high probability, as long the number of key- value pairs is below a designed threshold. Our structure allows the number of key-value pairs to greatly exceed this threshold during normal operation. Exceeding the threshold simply temporarily prevents content listing and reduces the probability of a successful lookup. If entries are later deleted to return the structure below the threshold, everything again functions appropriately. We also show that simple variations of our structure are robust to certain standard errors, such as the deletion of a key without a corresponding insertion or the insertion of two distinct values for a key. The properties of our structure make it suitable for several applications, including database and networking applications that we highlight.’

    (tags: iblt bloom-filters data-structures performance algorithms coding papers probabilistic)

  • Some UX Dark Patterns now illegal in the EU

    The EU’s new consumer rights law bans certain dark patterns related to e-commerce across Europe. The “sneak into basket” pattern is now illegal. Full stop, end of story. You cannot create a situation where additional items and services are added by default. […] Hidden costs are now illegal, whether that’s an undeclared subscription, extra shipping charges, or extra items. [….] Forced continuity, when imposed on the user as a form of bait-and-switch, has been banned. Just the other day a web designer mentioned to me that he had only just discovered he had been charged for four years of annual membership dues in a “theme club”, having bought what he thought was a one-off theme. Since he lives in Europe, he may be able to claim all of this money back. All he needs to do is prove that the website did not inform him that the purchase included a membership with recurring payments.

    (tags: design europe law ecommerce ux dark-patterns scams ryanair selling online consumer consumer-rights bait-and-switch)

  • Girl Not Against Fluoride

    The CDC (Centre for Disease Control) lists water fluoridation as one of the ten great public health achievements of the 20th Century. Today, Dublin City Council will vote on whether to remove fluoride from our water supply, and when they do, it will not be because the CDC or the WHO have changed their mind about fluoridation, or because new and compelling information makes it the only choice. It will be because people who believe in angel healing, homeopathy, and chemtrails, have somehow gained the ability to influence public policy.

    (tags: dcc dublin law flouride science zenbuffy homeopathy woo health teeth)

  • Revisiting How We Put Together Linux Systems

    Building a running OS out of layered btrfs filesystems. This sounds awesome.

    Instantiating a new system or OS container (which is exactly the same in this scheme) just consists of creating a new appropriately named root sub-volume. Completely naturally you can share one vendor OS copy in one specific version with a multitude of container instances. Everything is double-buffered (or actually, n-fold-buffered), because usr, runtime, framework, app sub-volumes can exist in multiple versions. Of course, by default the execution logic should always pick the newest release of each sub-volume, but it is up to the user keep multiple versions around, and possibly execute older versions, if he desires to do so. In fact, like on ChromeOS this could even be handled automatically: if a system fails to boot with a newer snapshot, the boot loader can automatically revert back to an older version of the OS.
    (via Tony Finch)

    (tags: via:fanf linux docker btrfs filesystems unionfs copy-on-write os hacking unix)

This entry was posted in Uncategorized. Bookmark the permalink. Both comments and trackbacks are currently closed.

4 Comments

  1. Posted September 2, 2014 at 07:30 | Permalink

    My reaction to the btrfs article is that NixOS already does what he wants, and does not rely on nonexistent and/or flaky technology.

  2. Keith Brady
    Posted September 2, 2014 at 09:10 | Permalink

    We’re also strict about reducing alert noise. It’s taken a lot of time to get there though. A big help was that senior management (VP level) were looking at the alert and incident (batched alerts) counts and putting pressure on teams to reduce the numbers. It meant that even for real alerts we could get dev resources to increase the reliability of the system if they were frequent. Does mean we have endless wars about what to alert on (symptom vs cause).

  3. Posted September 2, 2014 at 09:39 | Permalink

    Tony: NixOS looks interesting, and I hadn’t seen it before (so out of touch!) Interestingly, that is exactly the packaging model used internally (to great effect) in Amazon. It’s brilliant to see that someone has reinvented it externally, at last. I know what I’ll be pushing for next time this question comes up…

    Keith: yeah, we didn’t get much traction until it was escalated quite high up the chain — not surprising, since it required pushing things around on the roadmap to make time to work on it. But attaching a real monetary value to it made a big diff in that regard.

    Also: symptom, every time. Make the cause visible in dashboards or low-severity alarms, but the symptom is what gets people out of bed ;)

  4. Posted September 3, 2014 at 07:30 | Permalink

    Re NixOS, I did a very basic package system along those lines in 2003ish, partly for the quick rollback and easy testability, partly for cross-platform Linux/Solaris uniformity. It isn’t much more than a set of build scripts sharing a library/framework. A bit too shonky to be worth publishing :-)