summaryrefslogtreecommitdiffstats
path: root/articles/index.xml
diff options
context:
space:
mode:
authorLoïc Hoguin <[email protected]>2017-03-26 12:37:17 +0200
committerLoïc Hoguin <[email protected]>2017-03-26 12:37:17 +0200
commit65b900e73c1875e4fdb136f6e6fd517c9e5922c6 (patch)
tree9377fa19f957a286dae2e7f5e179dcc939ab6207 /articles/index.xml
parentade8a523dd6afe21f169a3f41cd78cc1ba730c74 (diff)
downloadninenines.eu-65b900e73c1875e4fdb136f6e6fd517c9e5922c6.tar.gz
ninenines.eu-65b900e73c1875e4fdb136f6e6fd517c9e5922c6.tar.bz2
ninenines.eu-65b900e73c1875e4fdb136f6e6fd517c9e5922c6.zip
New article: the elephant in the room
Diffstat (limited to 'articles/index.xml')
-rw-r--r--articles/index.xml283
1 files changed, 143 insertions, 140 deletions
diff --git a/articles/index.xml b/articles/index.xml
index dbb9bb8f..70dc98a5 100644
--- a/articles/index.xml
+++ b/articles/index.xml
@@ -6,10 +6,152 @@
<description>Recent content in Articles-rsses on Nine Nines</description>
<generator>Hugo -- gohugo.io</generator>
<language>en-us</language>
- <lastBuildDate>Sun, 22 Jan 2017 00:00:00 +0100</lastBuildDate>
+ <lastBuildDate>Sun, 26 Mar 2017 00:00:00 +0100</lastBuildDate>
<atom:link href="https://ninenines.eu/articles/index.xml" rel="self" type="application/rss+xml" />
<item>
+ <title>The elephant in the room</title>
+ <link>https://ninenines.eu/articles/the-elephant-in-the-room/</link>
+ <pubDate>Sun, 26 Mar 2017 00:00:00 +0100</pubDate>
+
+ <guid>https://ninenines.eu/articles/the-elephant-in-the-room/</guid>
+ <description>&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;Have you ever tried telling someone why they should use
+Erlang? You boast the smaller code size, the auto healing
+mechanisms, the distribution and they seem really excited.
+They wonder why they never heard about Erlang before. And
+then you show them what the code looks like. All excitement
+goes away. The smiles disappear. Their face starts
+becoming really serious.&lt;/p&gt;&lt;/div&gt;
+&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;You lost them. You know you lost them. They comment on the
+syntax, or perhaps you do, already admitting defeat. It&amp;#8217;s
+unlike anything they have ever used before. And they will
+most likely end up not using it.&lt;/p&gt;&lt;/div&gt;
+&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;What about people who already know what the syntax looks
+like? As soon as you mention Erlang, the topic of the syntax
+comes in. It&amp;#8217;s like nothing else matters.&lt;/p&gt;&lt;/div&gt;
+&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;Perhaps the topic of syntax didn&amp;#8217;t come up. But they&amp;#8217;re
+still not going to try Erlang because of it.&lt;/p&gt;&lt;/div&gt;
+&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;You&amp;#8217;re probably not having these kinds of interactions at
+Erlang conferences. This doesn&amp;#8217;t happen with people who are
+already somewhat interested in, or need, the features that
+Erlang provides. With them the syntax is at worst a minor
+inconvenience.&lt;/p&gt;&lt;/div&gt;
+&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;This happens because most developers are familiar with
+syntaxes that look nothing like Erlang. To be clear, I
+include language features and other concepts like objects
+as part of &#34;syntax&#34; here. Familiarity is a very important
+factor to drive adoption.&lt;/p&gt;&lt;/div&gt;
+&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;You can see an example of that in the Elixir world, where
+the majority of people come from Ruby or already knew and
+liked Ruby. The 2016 survey tells us that 59% of Elixir
+developers were using Ruby primarily before. That&amp;#8217;s in
+large part because of the syntax. They will deny it of
+course and find other reasons. And yet, we don&amp;#8217;t see such
+a strong adoption of Erlang from Ruby developers, before
+or after Elixir appeared.&lt;/p&gt;&lt;/div&gt;
+&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;Side note: have you ever wondered why the Elixir community
+is, I quote, much friendlier than the Ruby community?
+Despite having much of the same people?&lt;/p&gt;&lt;/div&gt;
+&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;Before we continue, let me be clear. I love the Erlang
+syntax. It is simple and explicit. It is powerful, especially
+when dealing with binary data. It has very few quirks.
+It has little to no ambiguity. It&amp;#8217;s great. Except for
+persuading people to use it.&lt;/p&gt;&lt;/div&gt;
+&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;Over the years I have been writing Erlang, I have seen
+very few people point out that the syntax slows down
+adoption. We have no problem with it, so why would others?
+At the same time, people coming to Erlang come to solve
+a real problem they&amp;#8217;re having, so the syntax is fairly
+secondary. Even if they hate it at first, they know they
+can solve their problems despite the syntax.&lt;/p&gt;&lt;/div&gt;
+&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;You don&amp;#8217;t build a popular product or language by solving
+people&amp;#8217;s problems though. In general you end up solving
+some problems and creating new problems. No, you build
+a popular product by &lt;strong&gt;convincing people to use it&lt;/strong&gt;. And
+you make them stay with your product by making them
+&lt;strong&gt;commit&lt;/strong&gt; to using it.&lt;/p&gt;&lt;/div&gt;
+&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;Take MongoDB for example. It didn&amp;#8217;t become popular by
+working, or even by being practical. It wasn&amp;#8217;t performing
+its primary function and was losing people&amp;#8217;s data. That
+didn&amp;#8217;t stop it from becoming popular. Smart people would
+knowingly use a database that was losing data. Think about
+that for a minute.&lt;/p&gt;&lt;/div&gt;
+&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;MongoDB of course had a huge marketing machine, and they
+focused on that. They helped organize many meetups all
+over the world, complete with various swag items given
+for free, including a small handbook about MongoDB. All
+people had to do was show up.&lt;/p&gt;&lt;/div&gt;
+&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;They didn&amp;#8217;t go tell people to look at all the weaknesses
+their product had. They focused on the strengths. On
+what would convince people to try it. People would go
+to meetups, discuss with people, commit to try it (or
+try it at meetups directly), and by doing so sell MongoDB
+to themselves.&lt;/p&gt;&lt;/div&gt;
+&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;How do we get people to meetups though? That&amp;#8217;d be the
+first step: you need to &lt;strong&gt;catch people&amp;#8217;s attention&lt;/strong&gt;.
+I believe MongoDB did this using benchmark results.
+Ironic isn&amp;#8217;t it? MongoDB gets fast benchmark results
+because they lose data, and this gets everyone to buy
+into the product.&lt;/p&gt;&lt;/div&gt;
+&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;The key points to remember about this are:&lt;/p&gt;&lt;/div&gt;
+&lt;div class=&#34;ulist&#34;&gt;&lt;ul&gt;
+&lt;li&gt;
+&lt;p&gt;
+catch people&amp;#8217;s attention
+&lt;/p&gt;
+&lt;/li&gt;
+&lt;li&gt;
+&lt;p&gt;
+show your product&amp;#8217;s strengths
+&lt;/p&gt;
+&lt;/li&gt;
+&lt;li&gt;
+&lt;p&gt;
+make people take a commitment
+&lt;/p&gt;
+&lt;/li&gt;
+&lt;/ul&gt;&lt;/div&gt;
+&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;Once they commit to something, you win. Everyone will not
+end up ultimately using your product of course, but it&amp;#8217;s
+at the very least become a consideration. It&amp;#8217;s on their
+mind. Their resolve will be stronger when they ultimately
+try it and inevitably run into issues.&lt;/p&gt;&lt;/div&gt;
+&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;Erlang&amp;#8217;s syntax is a weakness. Almost nobody looks at the
+Erlang syntax and falls in love with it at first sight.
+No, it takes time to learn it and understand how good it
+is. You need to sell Erlang to people without showing
+the Erlang syntax. If you do show it, then you need to
+hide the parts that feel alien. Function calls are OK.
+Recursion, not so much. Maps are OK. Records, not.&lt;/p&gt;&lt;/div&gt;
+&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;Avoiding code is not always possible when you try
+to sell it, especially to developers. You can however
+prepare them to accept the alien syntax by admitting
+that the syntax is not perfect before you show it.
+You can do this while praising it at the same time.
+For example, &#34;the syntax is a little out there, but
+it matches the concepts perfectly, it will all make
+sense when you start learning&#34;.&lt;/p&gt;&lt;/div&gt;
+&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;This might not be the best introduction. Someone will
+need to A/B test it to find the one that gives the
+best results. But that should give you ideas.&lt;/p&gt;&lt;/div&gt;
+&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;When something terrible happens, mentioning that this
+isn&amp;#8217;t the end of the world &lt;strong&gt;before&lt;/strong&gt; you tell others what
+happened will soften their reaction. When someone
+breaks your favorite item and cries over it calling
+themselves stupid, it&amp;#8217;s harder to get mad at them,
+compared to the same event with no emotional reaction.&lt;/p&gt;&lt;/div&gt;
+&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;Our behavior is largely dependent on what&amp;#8217;s at the
+top of our mind, so it&amp;#8217;s up to you to take advantage
+of this to make your case in the best conditions.&lt;/p&gt;&lt;/div&gt;
+&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;Next time you try to make someone use Erlang, remember
+that you should aim for getting a spoken commitment
+out of them, if possible before you show the syntax.
+If that&amp;#8217;s not possible, then prepare them to accept
+the flaws or the weirdness before they see them.&lt;/p&gt;&lt;/div&gt;
+</description>
+ </item>
+
+ <item>
<title>Don&#39;t let it crash</title>
<link>https://ninenines.eu/articles/dont-let-it-crash/</link>
<pubDate>Sun, 22 Jan 2017 00:00:00 +0100</pubDate>
@@ -1509,144 +1651,5 @@ containing all the flags to pass to the Erlang VM, for example
</description>
</item>
- <item>
- <title>Xerl: intermediate module</title>
- <link>https://ninenines.eu/articles/xerl-0.5-intermediate-module/</link>
- <pubDate>Mon, 25 Mar 2013 00:00:00 +0100</pubDate>
-
- <guid>https://ninenines.eu/articles/xerl-0.5-intermediate-module/</guid>
- <description>&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;Today we will start the work on the intermediate module
-that will be used to run the code for the expressions found
-in our file&amp;#8217;s body, replacing our interpreter.&lt;/p&gt;&lt;/div&gt;
-&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;This is what we want to have when all the work is done:&lt;/p&gt;&lt;/div&gt;
-&lt;div class=&#34;listingblock&#34;&gt;
-&lt;div class=&#34;content&#34;&gt;
-&lt;pre&gt;&lt;code&gt;xerl -&amp;gt; tokens -&amp;gt; AST -&amp;gt; intermediate -&amp;gt; cerl&lt;/code&gt;&lt;/pre&gt;
-&lt;/div&gt;&lt;/div&gt;
-&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;Today we will perform this work only on the atomic integer
-expression however, so we will not build any module at the end.
-We have a few more things to take care of before getting there.
-This does mean that we completely break compilation of modules
-though, so hopefully we can resolve that soon.&lt;/p&gt;&lt;/div&gt;
-&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;This intermediate representation is in the form of a module
-which contains a single function: &lt;code&gt;run/0&lt;/code&gt;. This function
-contains all the expressions from our Xerl source file.&lt;/p&gt;&lt;/div&gt;
-&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;In the case of a Xerl source file only containing the integer
-&lt;code&gt;42&lt;/code&gt;, we will obtain the following module ready to
-be executed:&lt;/p&gt;&lt;/div&gt;
-&lt;div class=&#34;listingblock&#34;&gt;
-&lt;div class=&#34;content&#34;&gt;&lt;!-- Generator: GNU source-highlight 3.1.8
-by Lorenzo Bettini
-http://www.lorenzobettini.it
-http://www.gnu.org/software/src-highlite --&gt;
-&lt;pre&gt;&lt;tt&gt;&lt;span style=&#34;font-weight: bold&#34;&gt;&lt;span style=&#34;color: #000080&#34;&gt;-module&lt;/span&gt;&lt;/span&gt;(&lt;span style=&#34;color: #FF6600&#34;&gt;&#39;$xerl_intermediate&#39;&lt;/span&gt;)&lt;span style=&#34;color: #990000&#34;&gt;.&lt;/span&gt;
-&lt;span style=&#34;font-weight: bold&#34;&gt;&lt;span style=&#34;color: #000080&#34;&gt;-export&lt;/span&gt;&lt;/span&gt;([&lt;span style=&#34;font-weight: bold&#34;&gt;&lt;span style=&#34;color: #000000&#34;&gt;run&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;0&lt;/span&gt;])&lt;span style=&#34;color: #990000&#34;&gt;.&lt;/span&gt;
-
-&lt;span style=&#34;font-weight: bold&#34;&gt;&lt;span style=&#34;color: #000000&#34;&gt;run&lt;/span&gt;&lt;/span&gt;() &lt;span style=&#34;color: #990000&#34;&gt;-&amp;gt;&lt;/span&gt;
- &lt;span style=&#34;color: #993399&#34;&gt;42&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;.&lt;/span&gt;&lt;/tt&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
-&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;Running it will of course give us a result of &lt;code&gt;42&lt;/code&gt;,
-the same we had when interpreting expressions.&lt;/p&gt;&lt;/div&gt;
-&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;The resulting Core Erlang code looks like this:&lt;/p&gt;&lt;/div&gt;
-&lt;div class=&#34;listingblock&#34;&gt;
-&lt;div class=&#34;content&#34;&gt;&lt;!-- Generator: GNU source-highlight 3.1.8
-by Lorenzo Bettini
-http://www.lorenzobettini.it
-http://www.gnu.org/software/src-highlite --&gt;
-&lt;pre&gt;&lt;tt&gt;&lt;span style=&#34;color: #FF6600&#34;&gt;module&lt;/span&gt; &lt;span style=&#34;color: #FF6600&#34;&gt;&#39;$xerl_intermediate&#39;&lt;/span&gt; [&lt;span style=&#34;color: #FF6600&#34;&gt;&#39;run&#39;&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;0&lt;/span&gt;]
- &lt;span style=&#34;color: #FF6600&#34;&gt;attributes&lt;/span&gt; []
-&lt;span style=&#34;color: #FF6600&#34;&gt;&#39;run&#39;&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;0&lt;/span&gt; &lt;span style=&#34;color: #990000&#34;&gt;=&lt;/span&gt;
- &lt;span style=&#34;font-weight: bold&#34;&gt;&lt;span style=&#34;color: #0000FF&#34;&gt;fun&lt;/span&gt;&lt;/span&gt; () &lt;span style=&#34;color: #990000&#34;&gt;-&amp;gt;&lt;/span&gt;
- &lt;span style=&#34;color: #993399&#34;&gt;42&lt;/span&gt;
-&lt;span style=&#34;font-weight: bold&#34;&gt;&lt;span style=&#34;color: #0000FF&#34;&gt;end&lt;/span&gt;&lt;/span&gt;&lt;/tt&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
-&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;The nice thing about doing it like this is that other than the
-definition of the intermediate module and its &lt;code&gt;run/0&lt;/code&gt;
-function, we can use the same code we are using for generating
-the final Beam file. It may also be faster than interpreting
-if you have complex modules.&lt;/p&gt;&lt;/div&gt;
-&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;Of course this here only works for the simplest cases, as you
-cannot declare a module or a function inside another Erlang function.
-We will need to wrap these into function calls to the Xerl compiler
-that will take care of compiling them, making them available for
-any subsequent expression. We will also need to pass the environment
-to the &lt;code&gt;run&lt;/code&gt; function to keep track of all this.&lt;/p&gt;&lt;/div&gt;
-&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;This does mean that we will have different code for compiling
-&lt;code&gt;fun&lt;/code&gt; and &lt;code&gt;mod&lt;/code&gt; expressions when creating
-the intermediate module. But the many other expressions don&amp;#8217;t need
-any special care.&lt;/p&gt;&lt;/div&gt;
-&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;Right now we&amp;#8217;ve used the &lt;code&gt;&#39;$xerl_intermediate&#39;&lt;/code&gt; atom
-for the intermediate module name because we only have one, but we
-will need to have a more random name later on when we&amp;#8217;ll implement
-modules this way.&lt;/p&gt;&lt;/div&gt;
-&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;The attentive mind will know by now that when compiling a Xerl
-file containing one module, we will need to compile two intermediate
-modules: one for the file body, and one for the module&amp;#8217;s body. Worry
-not though, if we only detect &lt;code&gt;mod&lt;/code&gt; instructions in the file
-body, we can just skip this phase.&lt;/p&gt;&lt;/div&gt;
-&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;While we&amp;#8217;re at it, we&amp;#8217;ll modify our code generator to handle lists
-of expressions, which didn&amp;#8217;t actually work with integer literals
-before.&lt;/p&gt;&lt;/div&gt;
-&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;We&amp;#8217;re going to use Core Erlang sequences for running the many
-expressions. Sequences work like &lt;code&gt;let&lt;/code&gt;, except no value
-is actually bound. Perfect for our case, since we don&amp;#8217;t support
-binding values at this time anyway.&lt;/p&gt;&lt;/div&gt;
-&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;Sequences have an argument and a body, both being Core Erlang
-expressions. The simplest way to have many expressions is to use
-a simple expression for the argument and a sequence for the rest
-of the expressions. When we encounter the last expression in the
-list, we do not create a sequence.&lt;/p&gt;&lt;/div&gt;
-&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;The result is this very simple function:&lt;/p&gt;&lt;/div&gt;
-&lt;div class=&#34;listingblock&#34;&gt;
-&lt;div class=&#34;content&#34;&gt;&lt;!-- Generator: GNU source-highlight 3.1.8
-by Lorenzo Bettini
-http://www.lorenzobettini.it
-http://www.gnu.org/software/src-highlite --&gt;
-&lt;pre&gt;&lt;tt&gt;&lt;span style=&#34;font-weight: bold&#34;&gt;&lt;span style=&#34;color: #000000&#34;&gt;comp_body&lt;/span&gt;&lt;/span&gt;([&lt;span style=&#34;color: #009900&#34;&gt;Expr&lt;/span&gt;]) &lt;span style=&#34;color: #990000&#34;&gt;-&amp;gt;&lt;/span&gt;
- &lt;span style=&#34;font-weight: bold&#34;&gt;&lt;span style=&#34;color: #000000&#34;&gt;expr&lt;/span&gt;&lt;/span&gt;(&lt;span style=&#34;color: #009900&#34;&gt;Expr&lt;/span&gt;);
-&lt;span style=&#34;font-weight: bold&#34;&gt;&lt;span style=&#34;color: #000000&#34;&gt;comp_body&lt;/span&gt;&lt;/span&gt;([&lt;span style=&#34;color: #009900&#34;&gt;Expr&lt;/span&gt;|&lt;span style=&#34;color: #009900&#34;&gt;Exprs&lt;/span&gt;]) &lt;span style=&#34;color: #990000&#34;&gt;-&amp;gt;&lt;/span&gt;
- &lt;span style=&#34;color: #009900&#34;&gt;Arg&lt;/span&gt; &lt;span style=&#34;color: #990000&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;font-weight: bold&#34;&gt;&lt;span style=&#34;color: #000000&#34;&gt;expr&lt;/span&gt;&lt;/span&gt;(&lt;span style=&#34;color: #009900&#34;&gt;Expr&lt;/span&gt;),
- &lt;span style=&#34;color: #009900&#34;&gt;Body&lt;/span&gt; &lt;span style=&#34;color: #990000&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;font-weight: bold&#34;&gt;&lt;span style=&#34;color: #000000&#34;&gt;comp_body&lt;/span&gt;&lt;/span&gt;(&lt;span style=&#34;color: #009900&#34;&gt;Exprs&lt;/span&gt;),
- &lt;span style=&#34;font-weight: bold&#34;&gt;&lt;span style=&#34;color: #000000&#34;&gt;cerl:c_seq&lt;/span&gt;&lt;/span&gt;(&lt;span style=&#34;color: #009900&#34;&gt;Arg&lt;/span&gt;, &lt;span style=&#34;color: #009900&#34;&gt;Body&lt;/span&gt;)&lt;span style=&#34;color: #990000&#34;&gt;.&lt;/span&gt;&lt;/tt&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
-&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;In the case of our example above, a sequence will not be created,
-we only have one expression. If we were to have &lt;code&gt;42, 43, 44&lt;/code&gt;
-in our Xerl source file, we would have a result equivalent to the
-following before optimization:&lt;/p&gt;&lt;/div&gt;
-&lt;div class=&#34;listingblock&#34;&gt;
-&lt;div class=&#34;content&#34;&gt;&lt;!-- Generator: GNU source-highlight 3.1.8
-by Lorenzo Bettini
-http://www.lorenzobettini.it
-http://www.gnu.org/software/src-highlite --&gt;
-&lt;pre&gt;&lt;tt&gt;&lt;span style=&#34;font-weight: bold&#34;&gt;&lt;span style=&#34;color: #000080&#34;&gt;-module&lt;/span&gt;&lt;/span&gt;(&lt;span style=&#34;color: #FF6600&#34;&gt;&#39;$xerl_intermediate&#39;&lt;/span&gt;)&lt;span style=&#34;color: #990000&#34;&gt;.&lt;/span&gt;
-&lt;span style=&#34;font-weight: bold&#34;&gt;&lt;span style=&#34;color: #000080&#34;&gt;-export&lt;/span&gt;&lt;/span&gt;([&lt;span style=&#34;font-weight: bold&#34;&gt;&lt;span style=&#34;color: #000000&#34;&gt;run&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;0&lt;/span&gt;])&lt;span style=&#34;color: #990000&#34;&gt;.&lt;/span&gt;
-
-&lt;span style=&#34;font-weight: bold&#34;&gt;&lt;span style=&#34;color: #000000&#34;&gt;run&lt;/span&gt;&lt;/span&gt;() &lt;span style=&#34;color: #990000&#34;&gt;-&amp;gt;&lt;/span&gt;
- &lt;span style=&#34;color: #993399&#34;&gt;42&lt;/span&gt;,
- &lt;span style=&#34;color: #993399&#34;&gt;43&lt;/span&gt;,
- &lt;span style=&#34;color: #993399&#34;&gt;44&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;.&lt;/span&gt;&lt;/tt&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
-&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;And the result is of course &lt;code&gt;44&lt;/code&gt;.&lt;/p&gt;&lt;/div&gt;
-&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;The resulting Core Erlang code looks like this:&lt;/p&gt;&lt;/div&gt;
-&lt;div class=&#34;listingblock&#34;&gt;
-&lt;div class=&#34;content&#34;&gt;&lt;!-- Generator: GNU source-highlight 3.1.8
-by Lorenzo Bettini
-http://www.lorenzobettini.it
-http://www.gnu.org/software/src-highlite --&gt;
-&lt;pre&gt;&lt;tt&gt;&lt;span style=&#34;color: #FF6600&#34;&gt;module&lt;/span&gt; &lt;span style=&#34;color: #FF6600&#34;&gt;&#39;$xerl_intermediate&#39;&lt;/span&gt; [&lt;span style=&#34;color: #FF6600&#34;&gt;&#39;run&#39;&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;0&lt;/span&gt;]
- &lt;span style=&#34;color: #FF6600&#34;&gt;attributes&lt;/span&gt; []
-&lt;span style=&#34;color: #FF6600&#34;&gt;&#39;run&#39;&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;0&lt;/span&gt; &lt;span style=&#34;color: #990000&#34;&gt;=&lt;/span&gt;
- &lt;span style=&#34;font-weight: bold&#34;&gt;&lt;span style=&#34;color: #0000FF&#34;&gt;fun&lt;/span&gt;&lt;/span&gt; () &lt;span style=&#34;color: #990000&#34;&gt;-&amp;gt;&lt;/span&gt;
- &lt;span style=&#34;color: #FF6600&#34;&gt;do&lt;/span&gt; &lt;span style=&#34;color: #993399&#34;&gt;42&lt;/span&gt;
- &lt;span style=&#34;color: #FF6600&#34;&gt;do&lt;/span&gt; &lt;span style=&#34;color: #993399&#34;&gt;43&lt;/span&gt;
- &lt;span style=&#34;color: #993399&#34;&gt;44&lt;/span&gt;
-&lt;span style=&#34;font-weight: bold&#34;&gt;&lt;span style=&#34;color: #0000FF&#34;&gt;end&lt;/span&gt;&lt;/span&gt;&lt;/tt&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
-&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;Feels very lisp-y, right? Yep.&lt;/p&gt;&lt;/div&gt;
-&lt;div class=&#34;ulist&#34;&gt;&lt;ul&gt;
-&lt;li&gt;
-&lt;p&gt;
-&lt;a href=&#34;https://github.com/extend/xerl/blob/0.5/&#34;&gt;View the source&lt;/a&gt;
-&lt;/p&gt;
-&lt;/li&gt;
-&lt;/ul&gt;&lt;/div&gt;
-</description>
- </item>
-
</channel>
</rss> \ No newline at end of file