1 To Wash It All Away James m ickens This is my last column! Thanks hen I was in graduate school in Ann Arbor, I had a friend who for reading, and thanks for all was deeply involved with the environmentalist movement. He ever forget of the support :-). n W purchased his food from local farmers’ markets, and he com - that when you are alone, i - muted by bike instead of by car to reduce his carbon footprint, and he main am with you, and when you tained a horrid compost bin that will probably be the origin of the next f lu are with someone else, i am also with you, because i think that i am better than that other pandemic. One day, he told me that he was going to visit a farm for a week. person and i have lengthy opinions about why I asked him why, and he said that he wanted to “get closer to the land,” a [email protected] this is true. phrase that you can only say with a straight face if you’re narrating a docu - mentary about ancient South American tribes. I told my friend that the land didn’t want to get closer to him, and if he really looked at the land, he’d see that it was not composed of delicious organic trail mix, but famine and vultures and backbreaking labor involving wheelbarrows and generally acceptable quantities of insects. He responded with an extended lecture un about eco-responsibility, a lecture that I immediately forgot because I real - ized that my naïve friend was going to die on that farm. So, I told my friend that he shouldn’t be afraid to end his trip early if he wasn’t having a good time. He smiled at me, the way that people in slasher movies smile before they get chopped up, and he left for the farm. Precisely 37 hours later, he called me on the phone. I asked him how everything was going, and he made a haunting, elegiac noise, like a foghorn calling out for its mate. I asked him to describe his first day, and he said that his entire existence revolved around bleating things: bleating goats that wanted to be fed, and bleating crows that wanted to steal the food that he gave the bleating goats, and bleating farm machines that were composed of spinning metal blades and had no discern - able purpose besides enrolling you in the “Hook Hand of the Month” club. I asked my friend when he was coming back home, and he said that he was calling me from the Ann Arbor train station; he had already returned. And then he let out that foghorn noise, that awful, lingering sound, and I thought, MAYBE THAT’S THE FIRST SYMPTOM OF COMPOST BIN FLU. Computer scientists often look at Web pages in the same way that my friend looked at farms. People think that Web browsers are elegant computation platforms, and Web pages are light, f luffy things that you can edit in Notepad as you trade ironic comments with your Nothing could be further from the truth . A modern Web page is a friends in the coffee shop. catastrophe. It’s like a scene from one of those apocalyptic medieval paintings that depicts what would happen if Galactus arrived: people are tumbling into fiery crevasses and - lament pass ing various lamentable things and hanging from playground equipment that would not OSHA safety checks. This kind of stuff is exactly what you’ll see if you look at the HTML, WWW.usenix.oR ge 2 PA g | MARCH 2014 |

2 To Wash It All Away ocean because nobody wants to look at a painting of a blue man CSS, and JavaScript in a modern Web page. Of course, no human who is composed of isosceles triangles and has a guitar - can truly “look” at this content, because a Web page is now like emerg ing from his forehead for no reason at all. V’Ger from the first “Star Trek” movie, a piece of technology that we once understood but can no longer fathom, a thrashing Given the unbearable proliferation of Web standards, and the leviathan of code and markup written by people so untrust - comically ill-expressed semantics of those standards, browser worthy that they’re not even third parties, they’re fifth parties vendors should just give up and tell society to stop asking for who weren’t even INVITED to the party, but who showed up such ridiculous things. However, this opinion is unpopular, anyways because the hippies got it right and free love or - what because nobody will watch your TED talk if your sense of ever. I’m pretty sure that the Web browser is one of the “dens of optimism is grounded in reality. I frequently try to explain to iniquity” that I keep hearing about on Fox News; I would verify my friends why they should abandon Web pages and exchange this using a Web search, but a Web search would require me to information using sunlight ref lected from mirrors, or the use a browser, AND THIS IS EX ACTLY WHAT BICOASTAL enthusiastic waving of colored f lags. My friends inevitably LIBER AL ELITES WANT ME TO DO. respond with a spiritually vacant affirmation like, “People Describing why the Web is horrible is like describing why it’s invented f lying machines, so we can certainly make a good horrible to drown in an ocean composed of pufferfish that are browser!” Unfortunately, defining success for a f lying machine is easy (“I’M ME BUT I’M A BIRD”), whereas defining success pregnant with tiny Freddy Kruegers—each detail is horrendous for a Web browser involves Cascading Style Sheets, a technol - in isolation, but the aggregate sum is delightfully arranged ogy which intrinsically dooms any project to epic failure. For into a hate f lower that blooms all year. For example, the World the uninitiated, Cascading Style Sheets are a cryptic language specifications Wide Web Consortium (W3C) provides “official” for many client-side Web technologies. Unfortunately, these developed by the Freemasons to obscure the visual nature specifications are binding upon browser vendors in the same of reality and encourage people to depict things using ASCII way that you can ask a Gila monster to meet you at the airport, art. Ostensibly, CSS files allow you to separate the defini - but that gila monster may, in fact, have better things to do [1]. tion of your content from the definition of how that content looks—using CSS, you can specify the layout for your HTML Each W3C document is filled with alienating sentences that tags, as well as the fonts and the color schemes used by those largely consist of hyperlinks to different hyperlinks. For tags. Sadly, the relationship between CSS and HTML is the instance, if you’re a browser vendor, and you want to add same relationship that links the instructions for building your support for HTML selectors, you should remember that, IKEA bed, and the unassembled, spiteful wooden planks that result during the third step of parsing the selector string, “If purportedly contain latent bed structures. CSS is not so much is SYNTA X _ ERR invalid raise a section 12), ([SELECT], a description of what your final page will look like, but rather section 1.4) and abort exception ([DOM-LEVEL-3-CORE] , a loose, high-level overview of what happen to your page, could this algorithm.” Such bodice-ripping legalese is definitely depending on the weather, the stock market, and how long it’s exciting for people who yearn for the dullness of the Cheerios been since you last spoke to your mother. Like a naïve ingredient list combined with the multi-layered bureaucracy Dungeon Master untouched by the sorrow of adulthood, you create of the Soviet Union. Indeed, you could imagine a world in which browser vendors hire legions of Talmudic scholars to under - imaginative CSS classes for your

tags and your tags, assigning them strengths and weaknesses, and defining stand why, precisely, SYNTA X _ ERR is orange and not mauve, the roles that they will play in the larger, uplifting narrative of and how, exactly, this orangeness relates to the parenthetic your HTML. Everything is assembled in its proper place; you purpleness of ). You could also ([DOM-LEVEL-3-CORE] glorious load your page in a browser and prepare yourself for a imagine a world in which browser vendors do not do this, and victory. However, you quickly discover that your elf tag is over - instead implement 53% of each spec and then hope that no Web page tries to use HTML selectors and then the geolocation weight. THE ELF CAN NEVER BE OVERWEIGHT. Even interface and then a tag, because that sequence of worse, your barbarian tag does not have an oversized hammer - or axe. Without an oversized hammer or axe, YOUR BARBAR events will unleash the Antichrist and/or a rendered Web page IAN IS JUST AN ILLITER ATE STEROID USER. And then that looks like one of those Picasso paintings that you pretend to understand, but which everyone wants to throw into an you look at your wizard tag, and you see that he’s not an old white man with a f lowing beard, but a young black man from [1] “Gila Monsters Meet You at the Airport” is the name of a real children’s Brooklyn. FOR COMPLEX REASONS THAT ARE ROOTED book that had an enormous impact on my emotional growth. The book’s IN EUROPEAN COLONIAL NARR ATIVES, YOUR WIZARD unf linching realism inspired my own series of ill-received children’s books, such as “Spiders Ate Your Sister That We Never Talk About,” MUST BE AN OLD WHITE MAN WITH A FLOWING BEARD, talist Advertising Makes You Hate Your Body and Buy Things Made “Capi NOT A BLACK MAN WITH HIPSTER SHOES AND A from Slave Labor,” and “I Could Lie and Say that Your Comic Book Collec - FANTASTIC VINYL COLLECTION. Such are the disasters tion Is Interesting, Or I Could Tell The Truth and Explain Why You Don’t Get Second Dates.” WWW.usenix.oR ge 3 PA g | MARCH 2014 |

3 To Wash It All Away that CSS will wroughth upon thee. Or wrought *at* thee. To be honest, I don’t know how to conjugate or spell “wrought,” but my point is undoubtedly understood. See Figure 1 for a con - crete example of CSS’s wroughtiness. Or CSS’ (no trailing “s”) wroughtiness. MY NON-CASCADING STYLE MANUALS FIGHT FOR MY SOUL. When you’re a Web developer, CSS is just one of your worries. The aggregate stack of Web technologies is so fragile that developers just accept a world in which various parts of a Web page will fail at random times. Apparently this is okay because e-commerce isn’t a serious thing, and if you really wanted a secure banking experience, you’d visit the bank in person like someone from the 1800s instead of accessing a banking Web site that is constantly ( but silently ) vomiting execution errors to the console log (a console log which the browser does not show by default, because if you knew about it, and you read its tales of woe, you’d abandon computer science and become a maker of fine wooden shoes). In Figure 2, I provide an unal - tered example of such a console log; the log was generated by a real Web page from a popular site. ◆ ◆ The first log entry says that the browser executed a downloaded file as JavaScript, even though the MIME type of the file was text/html. Here’s a life tip: when you’re confused about what something is, DON’T EXECUTE IT TO DISCOVER MORE CLUES. This is like observing that your next-door neighbor is a creepy, bedraggled man with weird eyes, and then you start falling asleep on his doorstep using a chloroform rag as a pillow, just to make sure that he’s not going to tie you to a radiator and force you to paint tiny figurines. Here’s how your life story ends: YOU ARE A PAINTER OF TINY FIGURINES. ◆ ◆ The second and third errors say that the page’s JavaScript used a variable name that is deprecated in strict mode, but accept- able in quirks mode. How can I begin to explain this delicious confection of awfulness? Listen: when a man and a woman fall Figure 1: - ne time, i tried to build a browser-agnostic debugging infra o script library that could traverse the structure. i had a client-side Java in love, they want to demonstrate their love to each other. So, script heap and display fun things about the page’s state. My art his Java - they force browsers to support different types of runtime envi- eanderthals, so i made an tory friends told me that console output is for n ronments. “Standards mode” refers to the unreliable browser HTML gui to display the diagnostic information. The first version of the APIs that are described by recent HTML and CSS specifica- carus, i dreamt gui used the browser’s default layout policies. Much like i tions. “Quirks mode” refers to the unreliable browser APIs that of more, so i decided to make A Fancy Layout™. i wrote C ss that specified whether my tags should have static positioning, or floating positioning, were defined by browsers from the Eisenhower administration. Never specify or relative zodiac-based positioning. Here’s what i learned: Quirks mode was originally invented because many Web pages As soon as a whether your tags should be static or floating or zodiac-based. were made during the Eisenhower administration, and the single tag is released from the automatic layout process, the browser will computing industry wanted to preserve Web-based narratives immediately go insane and stack random HTML tags along the z-axis, an about why “the rock and roll” is corrupting our youth. Quirks axis which apparently is an option even if your monitor can only display two dimensions. i eventually found a working C ss file inside a bottle that mode then persisted because Web developers learned about washed up on the beach, and i tweaked the file until it worked for my gui . quirks mode and used it as an excuse to not learn new skills. Then i went home and cried big man tears that were filled with ninja stars But then some Web developers wanted to learn new skills, so and that turned into lions when they hit the ground. standards mode was invented to allow these developers to make old mistakes in new ways. There is also a third browser mode called “almost standards mode”; this mode is similar to WWW.usenix.oR ge 4 PA g | MARCH 2014 |

4 To Wash It All Away ow i own fifteen cats and i wonder where the parties are. They said that i could become anything, so i became the error log of a Web browser. n Figure 2: standards mode, except that it renders images inside table cells with things . Such a dramatic mismatch of expectations would using the quirks mode algorithm. For reasons that have been be unacceptable in any other context. You would be sad if you eaten by a wildebeest, “almost standards mode” is also called went to the hospital to have your appendix removed, and the “strict” mode, even though it is less strict than standards mode. surgeon opened you up, and she said, “I DIDN’T EXPECT For reasons so horrendous that the wildebeest would not eat YOUR LIVER TO HAVE GILLS,” and then she proceeded with them, there is no completely reliable way to make all brows- despite the fact that you’re apparently her original surgical plan, ers load your page using the same compatibility mode. Thus, a mer-person . Being a mer-person should have non-ignorable even if your page recites the recommended incantations, the ramifications in the material universe. Similarly, if a Web page wants to do, how browser may still do what wants to do it. it it thinks than an object should be initialized, but the object has no And that’s where babies come from. initialization method, the browser shouldn’t laugh about it and then proceed under the assumption that the rest of the page is The fourth and seventh errors represent uncaught JavaScript ◆ ◆ agnostic about whether its objects are composed of folly. exceptions. In a rational universe, a single uncaught excep- tion would terminate a program, and if a program continued An interpretation of the remaining errors is left as an exercise to execute after throwing such an exception, we would know to the reader. Note that understanding the eighth error requires a Ouija board, the eye of a newt, and the whispering of a secret that Ragnarok is here and Odin is not happy. In the browser to a long-lost friend. world, ignoring uncaught exceptions is called “Wednesday, and all days not called ‘Wednesday.’” The JavaScript event loop is At this point, it should be intuitively obvious that different quite impervious to conventional notions of software reliabil- browsers may or may not produce the same error log for the ity, so if an event handler throws an exception, the event loop same page. In general, if a Web page has more than three bits will literally pretend like nothing happened and keep running. of entropy, different browsers will generate extravagantly This ludicrous momentum continues even if, in the case of unique mappings between the Web developer’s intentions and the seventh error, the Web page tries to call init() on an object the schizophrenic beast palette that browsers use to paint that has no method. You should feel uncomfortable that init() the world. Thus, picking the “best browser” is like playing a Web page can disagree with itself about the existence of one of those horrid trust-building exercises where you decide but the page is still allowed to do things initialization routines, WWW.usenix.oR | MARCH 2014 | PA g ge 5

5 To Wash It All Away “\roaming\ pots\ pans\cache\4$$Dtub.partial”, where “\4$$” is which three of your five senses you would prefer to lose, and an exotic escape sequence that resolves to the Latvian double then your coworkers berate you for making different tradeoffs umlaut. You do an Internet search for potential solutions, and than they made, even though there is no partial ordering that you’re confronted with a series of contradictory, ill-founded relates scuba diving accidents in which you lose your ears and opinions: your browser has a virus; your virus has a virus; you eyes, and industrial accidents in which you lose your nose and should be using Emacs; you should be using vi, and this is why tongue. All options are bad options; it’s a world of lateral moves. your marriage is loveless. Indeed, trying to pick the best browser is like trying to decide which of your worthless children should inherit family the any Of course, the most popular advice for solving browser business. Little Oliver refuses to accept society’s notion of problem is to clear your browser cache. It is definitely true that what an event handling loop should do, so whenever the user emptying the cache will sometimes help, in the same sense that presses a key on the keyboard, Oliver does not fire one keyPress if you’re poor, kicking a tree will sometimes lead to a hilarious event, but instead three keyDown events, a keyUp event, and series of events that conclude with you finding a big bag of the deleted saxophone solo from Mozart’s eighth symphony. money on the ground with a note that says, “Spend it all! XOXO, Dearest Fiona, an unrepentant workaholic, designed her Life.” Unfortunately, kicking a tree does not typically lead to browser so that when you “close” it, the GUI goes away, but riches, so your faith-based act of tree assault really just makes the underlying process lingers in the background, silent and - you a savage, tree-kicking monster who will be vilified by chil - angry, slowly consuming entries in kernel tables and mak dren and emotionally sensitive adults. Similarly, your arbitrary ing it impossible to restart the browser without receiving clearing of the browser cache, however well-intentioned, is the error message “Somewhere in this world, another copy of just a topical anesthetic to brief ly dull the pain of existence. the browser is running; find Carmen Sandiego and she will Clearing the cache to fix a Web browser is like when your dad reveal the truth.” Beloved Christopher, in an attempt to make was driving you to kindergarten, and the car started to smoke, his browser fast and lightweight, decided to replace his Flash and he tried to fix the car by banging on the hood three times plugin with code that prints “Shockwave has crashed” and and then asking you if you could still smell the carbon monox - then immediately dereferences a NULL pointer; this ensures ide, and you said, “Yeah, it’s better,” because you didn’t want to - that most attempts to watch a video will end with you wish expose your dad as a fraud, and then both of you rode to school ing for the simpler audiovisual pleasures of a woodcut or in silence as you struggled to remain conscious. cave painting. And poor IE6, voted “Least Likely to Succeed Because IE6 Is Not a Proper Christian Name,” manages to So, yes, it would be great if fixing your browser involved actions that were not semantically equivalent to voodoo. But, on the stumble through the world while surviving more assassination attempts than Fidel Castro. bright side, things could always be worse. For example, it - would definitely be horrible if your browser’s scripting lan Each browser is reckless and fanciful in its own way, but all guage combined the prototype-based inheritance of Self, a browsers share a love of epic paging to disk. Not an infrequent quasi-functional aspect borrowed from LISP, a structured showering of petite I/Os that are aligned on the allocation syntax adapted from C, and an aggressively asynchronous - boundaries of the file system—I mean adversarial thunder I/O model that requires elaborate callback chains that span snows of reads and writes, a primordial deluge that makes you multiple generations of hard-working Americans. OH NO I’VE gather your kinfolk and think about which things you need two JUST DESCRIBED JAVASCRIPT. What an unpleasant turn of, and what the consequences would be if you didn’t bring fire of events! People were begging for a combination of Self, LISP, ants, because fire ants ruin summers. Browsers don’t require and C in the same way that the denizens of Middle Earth were a specific reason to thrash the disk; instead, paging is a way of begging Saruman to breed Orcs and men to make Uruk-hai. life for browsers, a leisure activity that is fulfilling in and of - Orcs and men were doing a fine job of struggling in their sepa itself. If you’re not a computer scientist or a tinkerer, you just rate communities—creating a new race with the drawbacks of accept the fact that going to will cause the green both is not a good way to win popularity contests. But despite blinky light with the cylinder icon to stay green and not blinky. its faults, Java Script has become widespread. Discovering why - the incessant pag However, if you know how computers work, this happened is similar to understanding the causes for World . It turns you into Torquemada, a wretched ing drives you mad War I—everyone agrees on the top five reasons, but everyone figure consumed by the fear that your ideological system is an ranks those causes differently. The basic story is that, in the - elaborate lie designed to hide the excessive disk seeks of shad ’90s, when JavaScript and Java were competing for client-side owy overlords. You launch your task manager, and you discover supremacy, Java applets were horrendously slow and lacked that your browser has launched 67 different processes, all of a story for interacting with HTML; in contrast, JavaScript which are named “browser.exe,” and all of which are launching was only semi-horrendously slow, and it had a bad (but extant) desperate volleys of I/Os to cryptic parts of the file system like WWW.usenix.oR ge 6 PA g | MARCH 2014 |

6 To Wash It All Away }; story for interacting with HTML. So, Java lost, despite facts var circle = new Circle(2); like this: alert(circle.getDiameter()); //Displays “4”. ◆ ◆ JavaScript is dynamically typed, and its aggressive type co- The exemplar object for the Circle class is Circle.prototype , ercion rules were apparently designed by Monty Python. For and that prototype object is a regular JavaScript object. example, because the string is coerced into a num- 12 == “12” Thus, by dynamically changing the properties of that object, ber. This is a bit silly, but it kind of makes sense. Now consider I can dynamically change the properties of all instances of the fact that null == undefined . That is completely janky; a that class. YEAH I KNOW. For example, at some random reference that points to null is not undefined—IT IS DEFINED point in my program’s execution, I can do this... AS POINTING TO THE NULL VALUE. And now that you’re warmed up, look at this: “\r\n\t” == false . Here’s why: the Circle.prototype.getDiameter = function(){ browser detects that the two operands have different types, so return -5; it converts to false 0 and retries the comparison. The operands }; still have different types (string and number), so the browser ...and all of my circles will think that they have a diameter of coerces “\r\n\t” , because somehow, a 0 into the number less than nothing. That’s a shame, but what’s worse is that non-zero number of characters is equal to equals 0 . Voila— 0 the predefined (or “native”) JavaScript objects can also have 0 ! AWESOME. That explanation was like the plot to Inception , their prototypes reset. So, if I do something like this... but the implanted idea was “the correctness of your program has been coerced to .” false Number.prototype.valueOf = function(){return 42;}; ◆ ◆ Hello, kind stranger—let me keep you warm during this cold ...then number primitive that is boxed into a Number any winter night! Did you know that JavaScript defines a special - object will think that it’s the answer to the ultimate ques (“not a number”) value? This value is what you get when NaN tion of life, the universe, and everything: you do foolish things like parseInt(“BatmanIsNotAnInteger”). In other words, NaN is a value that is not indicative of a number. alert((0).valueOf()); //0 should be 0 for all values of 0, However, typeof(NaN) returns... “number.” A more obvious //but it is 42. - return value would be “HAIL BEELZEBUB, LORD OF DARK alert((1).valueOf()); //Zeus help me, 1 is 42 as well. NESS,” but I digress. alert((NaN).valueOf()); //NaN is 42. DECAPITATE ME AND //BURN MY WRITHING BODY WITH FIRE. By the way, , so Aristotle was wrong about that ◆ NaN != NaN ◆ I obviously get what I deserve if my JavaScript library rede - whole “Law of Identity” thing. fines native prototypes in a way that breaks my own code. ◆ Also, JavaScript defines two identity operators ◆ (=== !== and However, a single frame in a Web page contains multiple operators) which don’t perform the type coercion that the stan- multiple origins, so who knows JavaScript libraries from dard equality operators do; however, NaN !== NaN . So, basically, what kinds of horrendous prototype manipulations those don’t use numbers in JavaScript, and if you absolutely have to heathen libraries did before my library even got to run. This use numbers, implement a software-level ALU. It’s slow, but it’s - is just one of the reasons why the phrase “JavaScript secu the only way to be sure. rity” causes Bibles to burst into f lames. ◆ ◆ Actually, you still can’t be sure. Unlike C++, which uses stati- Much like C, JavaScript uses semicolons to terminate many ◆ ◆ cally declared class interfaces, JavaScript uses prototype-based kinds of statements. However, in JavaScript, if you forget a inheritance. A prototype is a dynamically defined object which semicolon, the JavaScript parser can automatically insert acts as an exemplar for “instances” of that object. For example, semicolons where it thinks that semicolons might ought to if I wanted to declare a Circle class in JavaScript, I could do possibly maybe go. This sounds really helpful until you realize something like this: . You can’t just scatter semicolons have semantic meaning that //This is the constructor, which defines a them around like you’re the Johnny Appleseed of punctua- //“radius” property for new instances. tion. Automatically inserting semicolons into source code is function Circle(radius){ like mishearing someone over a poor cell-phone connection, this.radius = radius; and then assuming that each of the dropped words should be } replaced with the phrase “your mom.” This is a great way to cre- //The constructor function has an object property ate excitement in your interpersonal relationships, but it is not //called “prototype” which defines additional a good way to parse code. Some JavaScript libraries intention- //attributes for class instances. ally begin with an initial semicolon, to ensure that if the library Circle.prototype.getDiameter = function(){ is appended to another one (e.g., to save HTTP roundtrips return 2*this.radius; WWW.usenix.oR ge 7 PA g | MARCH 2014 |

7 To Wash It All Away during download), the JavaScript parser will not try to merge subset of Latin, with images represented as mathematical the last statement of the first library and the first statement of combinati ons of line segments, arcs, and other timeless shapes the second library into some kind of semicolon-riven statement described by dead philosophers who believed that minotaurs party. Such an initial semicolon is called a “defensive semico- were real but incapable of escaping mazes. That is the kind of lon.” That is the saddest programming concept that I’ve ever clear thinking that will help us defeat the space Egyptians heard, and I am fluent in C++. - that emerge from the StarGates. Or whatever. I’m an Ameri can and I don’t really understand history, but I strongly believe I could go on and on about the reasons why JavaScript is a that Greeks spoke Latin to defeat intergalactic Egyptians. cancer upon the world. I know that there are people who like #TeachTheControversy! Anyways, my point is that browsers JavaScript, and I hope that these people find the mental health are too complex to be trusted. Unfortunately, youth is always services that they so desperately need. I don’t know all of the wasted on the young, and the current generation of software answers in life, but I do know all of the things which aren’t developers is convinced that browsers need more features, not the answers, and JavaScript falls into the same category as fewer. So, we are encouraged to celebrate the fact that browsers Scientology, homeopathic medicine, and making dogs wear tiny turn our computers into little Star Wars cantinas where every - sweaters due to a misplaced belief that this is what dogs would one is welcome and you can drink a blue drink if you want to do if they had access to looms and opposable thumbs. drink a blue drink and if something bad happens, then maybe offer In summary, Web browsers are like quantum physics: they a Jedi will save you, and if not, HEY IT’S A STAR WARS probabilistic guarantees at best, and anyone who claims to CANTINA YESSSSS. Space cantinas are fun, but they’re just fully understand them is a liar. At this stage in human devel - a fantasy; they’re just a series of outlandish details stitched opment, there are big problems to solve: climate change, together to amuse and entertain. You have to open your eyes heart disease, the poor financial situation of Nigerian princes and see that in the real, non-hyperbolic world that you actually who want to contact you directly. With all of these problems inhabit, your browser will frequently stop playing a video and way to spend our time; the un terrible solved, Web browsing is a then display f lashing epilepsy pixels while making the sound last thing that we should do is run unstable hobbyist operating that TVs make in Japanese horror movies before a pasty sala - systems that download strange JavaScript files from people mander child steps out of the screen and voids your warranty. we don’t know. Instead, we should exchange information using That’s a thing which could actually happen, and we should fixed-length ASCII messages written in a statically verifiable wash it all away. Why Join USENIX? We support members’ professional and technical Your membership dollars go towards programs including: development through many ongoing activities, including: Open access policy: All conference papers and videos are immediately free to everyone upon publication Open access to research presented at our events Student program, including grants for conference Workshops on hot topics attendance Conferences presenting the latest in research and Good Works program practice LISA: The USENIX Special Interest Group for Sysadmins Helping our many communities share, develop, and adopt , the magazine of USENIX ;login: ground-breaking ideas in advanced technology Student outreach Join us at

Related documents