summaryrefslogtreecommitdiffstats
path: root/articles/dont-let-it-crash/index.html
diff options
context:
space:
mode:
authorLoïc Hoguin <[email protected]>2018-06-13 09:54:12 +0200
committerLoïc Hoguin <[email protected]>2018-06-13 09:54:12 +0200
commit92b54aacc0de5446dd5497c39897b0bbff72e626 (patch)
treec3a98cfec636d1271f5804e5c19b35b208bba00d /articles/dont-let-it-crash/index.html
parent8b5c3dc972b99f174750123c9e4abc96259c34a9 (diff)
downloadninenines.eu-92b54aacc0de5446dd5497c39897b0bbff72e626.tar.gz
ninenines.eu-92b54aacc0de5446dd5497c39897b0bbff72e626.tar.bz2
ninenines.eu-92b54aacc0de5446dd5497c39897b0bbff72e626.zip
Rebuild using Asciideck
Diffstat (limited to 'articles/dont-let-it-crash/index.html')
-rw-r--r--articles/dont-let-it-crash/index.html137
1 files changed, 25 insertions, 112 deletions
diff --git a/articles/dont-let-it-crash/index.html b/articles/dont-let-it-crash/index.html
index 53226cc3..95da0f88 100644
--- a/articles/dont-let-it-crash/index.html
+++ b/articles/dont-let-it-crash/index.html
@@ -69,118 +69,31 @@
</p>
</header>
-<div class="paragraph"><p>We have a specific mindset when writing Erlang
-programs. We focus on the normal execution of the
-program and don&#8217;t handle most of the errors that may
-occur. We sometimes call this normal execution the
-<em>happy path</em>.</p></div>
-<div class="paragraph"><p>The general pattern behind writing only for the
-<em>happy path</em>, letting the VM catch errors (writing
-them to a log for future consumption) and then
-having a supervisor restart the processes that
-failed from a clean state, has a name. We call it
-<em>let it crash</em>; and it drives many of our design
-decisions.</p></div>
-<div class="paragraph"><p>It&#8217;s a really great way to program and the results
-are fantastic compared to most other programming
-languages. And yet, <em>let it crash</em> barely convinced
-anyone that they should use Erlang. Why would that
-be?</p></div>
-<div class="paragraph"><p>You may already know that Cowboy is capable of
-handling at least 2 million Websocket connections
-on a single server. This is in large part thanks
-to the capabilities of the VM. Still, 2 million
-is good, much better than most other servers can
-do.</p></div>
-<div class="paragraph"><p>Cowboy is not just a Websocket server; it&#8217;s also
-an HTTP and HTTP/2 server, and it handles many
-related features like long polling or the parsing
-of most request headers.</p></div>
-<div class="paragraph"><p>Can you guess how large the Cowboy codebase is,
-without looking at the source?</p></div>
-<div class="paragraph"><p>Do make sure you have a clear answer in your mind
-before you go check.</p></div>
-<div class="paragraph"><p>Good, you are back. Now what were the results? If
-I am correct, you overestimated the size of Cowboy.
-Cowboy is in fact about five thousand lines of code.
-You probably thought it was at least ten thousand.
-About eighty percent of readers will have
-overestimated the size of Cowboy. And you did only
-because I mentioned it can handle millions of
-Websocket connections.</p></div>
-<div class="paragraph"><p>Numerous studies show this effect. Just mentioning
-the large number already prepared your mind to think
-in that direction. Repeating the number made you
-focus even more on it. Then the question asked for
-a number, which ended up larger than the reality.</p></div>
-<div class="paragraph"><p>The same effect can be applied to negotiation for
-example. You generally want to start by giving your
-offer (and not let the other party initiate) and
-you want to give a really large number first. You
-can also prepare your customer by mentioning an even
-larger number in the previous discussion.</p></div>
-<div class="paragraph"><p>And it&#8217;s not just numbers either. An experiment
-showed that just by looking at an image of clouds,
-customers of a pillow store were buying pillows
-more comfortable (and more expensive) than those
-who didn&#8217;t see that image.</p></div>
-<div class="paragraph"><p>This is the power of associations. It is covered in
-much larger detail in the books
-<a href="https://www.amazon.com/Influence-Psychology-Persuasion-Robert-Cialdini/dp/006124189X">Influence</a>
-and
-<a href="https://www.amazon.com/Pre-Suasion-Revolutionary-Way-Influence-Persuade/dp/1501109790">Pre-suasion</a>.
-I highly recommend reading those and applying what
-you learn to your daily life. I&#8217;m definitely not
-a professional psychologist so take this post with
-a grain of salt.</p></div>
-<div class="paragraph"><p>When selling Erlang, whether we are selling it to
-a customer or trying to convince a developer friend
-to start using it, we often talk about how Erlang
-<em>lets you sleep at night</em>, that it is auto healing
-and always gets fantastic uptimes.</p></div>
-<div class="paragraph"><p>And then we talk about <em>let it crash</em>.</p></div>
-<div class="paragraph"><p>And we describe what it means.</p></div>
-<div class="paragraph"><p>We might as well just say that Erlang crashes a lot
-and then take the door. It would have the same effect.
-It doesn&#8217;t even stop at programs crashing. You know
-what else crashes? Cars, planes, trains. Often with
-disastrous consequences. Is that really the message
-we want to convey?</p></div>
-<div class="paragraph"><p>They even <a href="https://img.youtube.com/vi/oEUBW2lCkIk/0.jpg">printed it on a t-shirt</a>!
-Keep calm and let it crash. It&#8217;s the kind of t-shirt
-you probably shouldn&#8217;t wear in an airport, and for good
-reasons. A few people did, then realized what they were
-wearing and were not too smug about it.</p></div>
-<div class="paragraph"><p>And yet this is how we sell Erlang.</p></div>
-<div class="paragraph"><p>A better way would be to focus on the positives, of
-course, but also to make sure that those positives
-are phrased in a way that prevents bad associations
-to be formed in people&#8217;s minds.</p></div>
-<div class="paragraph"><p>Instead of <em>let it crash</em>, you can say that Erlang
-has <em>auto healing mechanisms</em>. Healing is a good
-thing and accurately describes what happens in the
-system.</p></div>
-<div class="paragraph"><p>Should you need to go into more details, you will
-probably want to avoid <em>recover from crashes</em> and
-instead say <em>recover from exceptions</em>. Exceptions
-are a pretty neutral word and, should you explain
-what you mean by that, you can talk about exceptions
-that occur for reasons unrelated to Erlang, like
-hardware failure or network instability.</p></div>
-<div class="paragraph"><p>The trick is to always use positive words and
-phrases to describe Erlang, and to use external
-factors to explain how Erlang deals with failures.
-Never mention the failures internal to Erlang
-systems unless you are asked specifically, in
-which case you can say that the auto healing
-applies to all exceptions.</p></div>
-<div class="paragraph"><p>The <em>let it crash</em> philosophy is great when
-learning Erlang or when writing fault-tolerant
-systems. But it&#8217;s not going to convince anyone
-to use it unless they were already looking for
-it.</p></div>
-<div class="paragraph"><p>Do you like this post? Tell me on Twitter. I might
-make more.</p></div>
+<p>We have a specific mindset when writing Erlang programs. We focus on the normal execution of the program and don&apos;t handle most of the errors that may occur. We sometimes call this normal execution the <em>happy path</em>.</p>
+<p>The general pattern behind writing only for the <em>happy path</em>, letting the VM catch errors (writing them to a log for future consumption) and then having a supervisor restart the processes that failed from a clean state, has a name. We call it <em>let it crash</em>; and it drives many of our design decisions.</p>
+<p>It&apos;s a really great way to program and the results are fantastic compared to most other programming languages. And yet, <em>let it crash</em> barely convinced anyone that they should use Erlang. Why would that be?</p>
+<p>You may already know that Cowboy is capable of handling at least 2 million Websocket connections on a single server. This is in large part thanks to the capabilities of the VM. Still, 2 million is good, much better than most other servers can do.</p>
+<p>Cowboy is not just a Websocket server; it&apos;s also an HTTP and HTTP/2 server, and it handles many related features like long polling or the parsing of most request headers.</p>
+<p>Can you guess how large the Cowboy codebase is, without looking at the source?</p>
+<p>Do make sure you have a clear answer in your mind before you go check.</p>
+<p>Good, you are back. Now what were the results? If I am correct, you overestimated the size of Cowboy. Cowboy is in fact about five thousand lines of code. You probably thought it was at least ten thousand. About eighty percent of readers will have overestimated the size of Cowboy. And you did only because I mentioned it can handle millions of Websocket connections.</p>
+<p>Numerous studies show this effect. Just mentioning the large number already prepared your mind to think in that direction. Repeating the number made you focus even more on it. Then the question asked for a number, which ended up larger than the reality.</p>
+<p>The same effect can be applied to negotiation for example. You generally want to start by giving your offer (and not let the other party initiate) and you want to give a really large number first. You can also prepare your customer by mentioning an even larger number in the previous discussion.</p>
+<p>And it&apos;s not just numbers either. An experiment showed that just by looking at an image of clouds, customers of a pillow store were buying pillows more comfortable (and more expensive) than those who didn&apos;t see that image.</p>
+<p>This is the power of associations. It is covered in much larger detail in the books <a href="https://www.amazon.com/Influence-Psychology-Persuasion-Robert-Cialdini/dp/006124189X">Influence</a> and <a href="https://www.amazon.com/Pre-Suasion-Revolutionary-Way-Influence-Persuade/dp/1501109790">Pre-suasion</a>. I highly recommend reading those and applying what you learn to your daily life. I&apos;m definitely not a professional psychologist so take this post with a grain of salt.</p>
+<p>When selling Erlang, whether we are selling it to a customer or trying to convince a developer friend to start using it, we often talk about how Erlang <em>lets you sleep at night</em>, that it is auto healing and always gets fantastic uptimes.</p>
+<p>And then we talk about <em>let it crash</em>.</p>
+<p>And we describe what it means.</p>
+<p>We might as well just say that Erlang crashes a lot and then take the door. It would have the same effect. It doesn&apos;t even stop at programs crashing. You know what else crashes? Cars, planes, trains. Often with disastrous consequences. Is that really the message we want to convey?</p>
+<p>They even <a href="https://img.youtube.com/vi/oEUBW2lCkIk/0.jpg">printed it on a t-shirt</a>! Keep calm and let it crash. It&apos;s the kind of t-shirt you probably shouldn&apos;t wear in an airport, and for good reasons. A few people did, then realized what they were wearing and were not too smug about it.</p>
+<p>And yet this is how we sell Erlang.</p>
+<p>A better way would be to focus on the positives, of course, but also to make sure that those positives are phrased in a way that prevents bad associations to be formed in people&apos;s minds.</p>
+<p>Instead of <em>let it crash</em>, you can say that Erlang has <em>auto healing mechanisms</em>. Healing is a good thing and accurately describes what happens in the system.</p>
+<p>Should you need to go into more details, you will probably want to avoid <em>recover from crashes</em> and instead say <em>recover from exceptions</em>. Exceptions are a pretty neutral word and, should you explain what you mean by that, you can talk about exceptions that occur for reasons unrelated to Erlang, like hardware failure or network instability.</p>
+<p>The trick is to always use positive words and phrases to describe Erlang, and to use external factors to explain how Erlang deals with failures. Never mention the failures internal to Erlang systems unless you are asked specifically, in which case you can say that the auto healing applies to all exceptions.</p>
+<p>The <em>let it crash</em> philosophy is great when learning Erlang or when writing fault-tolerant systems. But it&apos;s not going to convince anyone to use it unless they were already looking for it.</p>
+<p>Do you like this post? Tell me on Twitter. I might make more.</p>
+
</article>
</div>