There are people who say to the masses, “You’re doing it wrong!”, and generously provide the right way to do it. Which word gets chosen to describe them ultimately boils down to how many people they convince to see the light.

Linus Torvalds

First, a nod to Linus Torvalds, who’s demonstrably convinced a lot of people that his way is the right way. Android, based on the Linux kernel, has the largest installed base of all operating systems of any kind.[1] So who’s doing it wrong, according to Torvalds? Over the years, Torvalds has criticized Windows, Solaris, the BSDs, OS X, Mach… the list goes on and on. He’s never been shy with his opinion, condemning everything from C++ to GNU Emacs to XML.
“People who disagree with me are by definition crazy.” says he. “Until I change my mind …“[2]


Bryan Cantrill

Correct software is timeless. … There’s lots of correct software … correct, perfectly working software

Bryan Cantrill is the father of DTrace, and CTO of Joyent, home of on-the-metal cloud computing. His work with DTrace and ZFS stands as object lessons on software robustness, reliability, and observability.

Building on the Unix philosophy articulated by Doug McIlroy (“Write programs that do one thing and do it well. Write programs to work together. Write programs to handle text streams, because that is a universal interface.“[3] ) Cantrill gleefully uses awk for big data MapReduce jobs - but the computation goes to the data instead of the other way around.

And who’s doing it wrong? Linux and unikernels.

DTrace was open sourced in 2005. Referring to the absence of DTrace from Linux,

You've got this entire community that doesn't know that clean water is a thing. ... they should have something better, something better is available ...

In a recent blog article Cantrill explains that unikernels are entirely undebuggable, and concludes “[Unikernels] will join transactional memory and the M-to-N scheduling model as breathless systems software fads that fell victim to the merciless details of reality. … [they] are their own punishment.“[4] [5] [6]



Poul-Henning Kamp

The findings of CS … are still correct. They are just a lot less relevant … at least with respect to performance.

Poul-Henning Kamp is the lead architect of Varnish Cache and was the Atlas beneath FreeBSD for 15 years. Kamp’s article “You’re Doing It Wrong” may well be remembered as a watershed moment for performance programming. “Not just wrong as in not perfect, but wrong as in wasting half, or more, of your performance. … What good is an O(log2(n)) algorithm if those operations cause page faults and slow disk operations? For most relevant datasets an O(n) or even an O(n^2) algorithm, which avoids page faults, will run circles around it.” The paper describes a B-heap which fills pages vertically, reducing page faults.

In another article Kamp laments the unforeseen consequences of null-terminated strings in Unix. “When your Java, Python, Ruby, or Haskell program opens a file, its runtime environment passes the file-name as a NUL-terminated string to open(3) … As long as you keep doing that, you retain all the advantages when running your programs on a PDP/11, and all of the disadvantages if you run them on anything else.” The article discusses the ramifications for performance, hardware design, compiler optimizations, and, of course, security.

Kamp’s open source Varnish Cache is celebrating a decade of speeding up the web. Kamp’s take on HTTP/2? “[It’s] focused on solving yesteryears problems, rather than on creating a protocol that stands a chance to last us the next 20 years. [The proposals] preserve faithfully [the HTTP/1.1] heritage of badly thought out sedimentary hacks.”

watersheds or bikesheds - your choice.[7] [8] [9]

To be continued…

Notes

[1] https://en.wikipedia.org/wiki/Usage_share_of_operating_systems

[2] https://en.wikiquote.org/wiki/Linus_Torvalds

[3] http://www.faqs.org/docs/artu/ch01s06.html

[4] Bryan Cantrill on Containers, Linux, etc.: http://www.infoq.com/interviews/cantrill-containers

[5] BC on Manta: https://www.youtube.com/watch?v=79fvDDPaIoY   (“AWK puppet time theater” - I’d watch that!)

[6] BC on unikernels: https://www.joyent.com/blog/unikernels-are-unfit-for-production

[7] Poul-Henning Kamp, “You’re Doing It Wrong”: http://queue.acm.org/detail.cfm?id=1814327

[8] PHK - The Most Expensive One-Byte Mistake: http://cacm.acm.org/magazines/2011/9/122797-the-most-expensive-one-byte-mistake/fulltext

[9] PHK - Why HTTP/2.0 does not seem interesting: https://www.varnish-cache.org/docs/trunk/phk/http20.html