summaryrefslogtreecommitdiffstats
path: root/articles/index.xml
diff options
context:
space:
mode:
authorLoïc Hoguin <[email protected]>2016-04-01 00:14:56 +0200
committerLoïc Hoguin <[email protected]>2016-04-01 00:14:56 +0200
commitba9013eaeb8369d800dcac1cf5e59b846ac6c1c5 (patch)
tree53e07053856667d66fb406475c024c8d31b19dfc /articles/index.xml
parentfe3492a98de29942477b061cd02c92246f4bf85a (diff)
downloadninenines.eu-ba9013eaeb8369d800dcac1cf5e59b846ac6c1c5.tar.gz
ninenines.eu-ba9013eaeb8369d800dcac1cf5e59b846ac6c1c5.tar.bz2
ninenines.eu-ba9013eaeb8369d800dcac1cf5e59b846ac6c1c5.zip
Add post about website update
Diffstat (limited to 'articles/index.xml')
-rw-r--r--articles/index.xml215
1 files changed, 67 insertions, 148 deletions
diff --git a/articles/index.xml b/articles/index.xml
index 81663a56..975e34cc 100644
--- a/articles/index.xml
+++ b/articles/index.xml
@@ -6,10 +6,76 @@
<description>Recent content in Articles on Nine Nines</description>
<generator>Hugo -- gohugo.io</generator>
<language>en-us</language>
- <lastBuildDate>Wed, 02 Sep 2015 00:00:00 +0100</lastBuildDate>
+ <lastBuildDate>Sat, 02 Apr 2016 00:00:00 +0100</lastBuildDate>
<atom:link href="http://ninenines.eu/articles/index.xml" rel="self" type="application/rss+xml" />
<item>
+ <title>Website update</title>
+ <link>http://ninenines.eu/articles/website-update/</link>
+ <pubDate>Sat, 02 Apr 2016 00:00:00 +0100</pubDate>
+
+ <guid>http://ninenines.eu/articles/website-update/</guid>
+ <description>&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;Last week-end I updated the Nine Nines website.&lt;/p&gt;&lt;/div&gt;
+&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;I switched to &lt;a href=&#34;http://gohugo.io/&#34;&gt;Hugo&lt;/a&gt;. The site is
+now built from &lt;a href=&#34;http://asciidoc.org/&#34;&gt;Asciidoc&lt;/a&gt;
+documents. You probably saw me switch to Asciidoc
+for documentation this past year. This is the
+natural conclusion to that story. The great thing
+is that with a little bit of Makefile magic I can
+just copy the documentation files into Hugo and
+poof, they appear on the website.&lt;/p&gt;&lt;/div&gt;
+&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;I am very happy with that new setup. I can now
+post my thoughts again. Woo! Expect regular posts
+from now on. I will try to replace my long series
+of tweets with posts.&lt;/p&gt;&lt;/div&gt;
+&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;The sections have been rearranged. There used to
+be a separate training section; now
+&lt;a href=&#34;http://ninenines.eu/services&#34;&gt;all my services&lt;/a&gt; are described in
+one page. I have also clarified my areas of
+expertise. There used to be confusion in the past,
+so now it should be clearer that I am not a
+distributed systems expert.&lt;/p&gt;&lt;/div&gt;
+&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;On that note, if you are looking for my
+services right now, I&amp;#8217;m not available. I&amp;#8217;ll have
+to work 7 days a week for a while. Try again in a
+couple months. More on that in a future post.&lt;/p&gt;&lt;/div&gt;
+&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;The &lt;a href=&#34;http://ninenines.eu/docs&#34;&gt;documentation&lt;/a&gt; becomes a first class
+citizen. Bullet and Cowlib don&amp;#8217;t have proper
+documentation&amp;#8230; yet. I have started working on the
+Cowlib documentation, and Bullet shouldn&amp;#8217;t take too
+long. All these projects will be documented when
+Cowboy gets to 2.0, and will all be supported
+equally. Note that the Cowboy 1.0 documentation
+still has the old website templates and links.
+Don&amp;#8217;t worry about it.&lt;/p&gt;&lt;/div&gt;
+&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;The mailing lists link has been removed. I did
+announce a few months back that mailing lists were
+going to go. They&amp;#8217;re still up right now, but not
+for long. I am planning to put the archives
+read-only, link to them from a future post and
+be done with it. If you have a question, open a
+ticket on Github. Then I can just decide to leave
+the ticket open if I want to do improvements based
+on your feedback.&lt;/p&gt;&lt;/div&gt;
+&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;I have replaced most of the &#34;we&#34; by &#34;I&#34;. I am
+a one-man company right now. Have been for a while.
+Doesn&amp;#8217;t make sense to keep a facade. I want to be
+close to users, not put a barrier between us.&lt;/p&gt;&lt;/div&gt;
+&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;The RSS changed. The old link doesn&amp;#8217;t work anymore.
+The new link is at &lt;a href=&#34;http://ninenines.eu/index.xml&#34;&gt;/index.xml&lt;/a&gt;,
+or &lt;a href=&#34;http://ninenines.eu/articles/index.xml&#34;&gt;/articles/index.xml&lt;/a&gt;
+if you only care about my posts. I guess that&amp;#8217;s the
+one most people want.&lt;/p&gt;&lt;/div&gt;
+&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;I still have some tweaks to do, but it will take a
+while. My long term plan is to remove Bootstrap, use
+vanilla CSS and as little JS as possible. The reason
+for that is that it&amp;#8217;s cheaper than upgrading libraries
+every few years. Life is too short to spend it
+upgrading JS libraries.&lt;/p&gt;&lt;/div&gt;
+</description>
+ </item>
+
+ <item>
<title>The Erlanger Playbook September 2015 Update</title>
<link>http://ninenines.eu/articles/erlanger-playbook-september-2015-update/</link>
<pubDate>Wed, 02 Sep 2015 00:00:00 +0100</pubDate>
@@ -1768,152 +1834,5 @@ though, so let&amp;#8217;s get back to it after we add more.&lt;/p&gt;&lt;/div&g
</description>
</item>
- <item>
- <title>Xerl: empty modules</title>
- <link>http://ninenines.eu/articles/xerl-0.1-empty-modules/</link>
- <pubDate>Wed, 30 Jan 2013 00:00:00 +0100</pubDate>
-
- <guid>http://ninenines.eu/articles/xerl-0.1-empty-modules/</guid>
- <description>&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;Let&amp;#8217;s build a programming language. I call it Xerl: eXtended ERLang.
-It&amp;#8217;ll be an occasion for us to learn a few things, especially me.&lt;/p&gt;&lt;/div&gt;
-&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;Unlike in Erlang, in this language, everything is an expression.
-This means that modules and functions are expression, and indeed that
-you can have more than one module per file.&lt;/p&gt;&lt;/div&gt;
-&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;We are just starting, so let&amp;#8217;s no go ahead of ourselves here. We&amp;#8217;ll
-begin with writing the code allowing us to compile an empty module.&lt;/p&gt;&lt;/div&gt;
-&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;We will compile to Core Erlang: this is one of the many intermediate
-step your Erlang code compiles to before it becomes BEAM machine code.
-Core Erlang is a very neat language for machine generated code, and we
-will learn many things about it.&lt;/p&gt;&lt;/div&gt;
-&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;Today we will only focus on compiling the following code:&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;mod&lt;/span&gt; &lt;span style=&#34;color: #FF6600&#34;&gt;my_module&lt;/span&gt;
-&lt;span style=&#34;font-weight: bold&#34;&gt;&lt;span style=&#34;color: #0000FF&#34;&gt;begin&lt;/span&gt;&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;Compilation will be done in a few steps. First, the source file will
-be transformed in a tree of tokens by the lexer. Then, the parser will
-use that tree of tokens and convert it to the AST, bringing semantical
-meaning to our representation. Finally, the code generator will transform
-this AST to Core Erlang AST, which will then be compiled.&lt;/p&gt;&lt;/div&gt;
-&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;We will use &lt;em&gt;leex&lt;/em&gt; for the lexer. This lexer uses .xrl files
-which are then compiled to .erl files that you can then compile to BEAM.
-The file is divided in three parts: definitions, rules and Erlang code.
-Definitions and Erlang code are obvious; rules are what concerns us.&lt;/p&gt;&lt;/div&gt;
-&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;We only need two things: atoms and whitespaces. Atoms are a lowercase
-letter followed by any letter, number, _ or @. Whitespace is either a
-space, an horizontal tab, \r or \n. There exists other kinds of whitespaces
-but we simply do not allow them in the Xerl language.&lt;/p&gt;&lt;/div&gt;
-&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;Rules consist of a regular expression followed by Erlang code. The
-latter must return a token representation or the atom &lt;code&gt;skip_token&lt;/code&gt;.&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: #009900&#34;&gt;L&lt;/span&gt;}{&lt;span style=&#34;color: #009900&#34;&gt;A&lt;/span&gt;}&lt;span style=&#34;color: #990000&#34;&gt;*&lt;/span&gt; &lt;span style=&#34;color: #990000&#34;&gt;:&lt;/span&gt;
- &lt;span style=&#34;color: #009900&#34;&gt;Atom&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;list_to_atom&lt;/span&gt;&lt;/span&gt;(&lt;span style=&#34;color: #009900&#34;&gt;TokenChars&lt;/span&gt;),
- {&lt;span style=&#34;color: #FF6600&#34;&gt;token&lt;/span&gt;, &lt;span style=&#34;font-weight: bold&#34;&gt;&lt;span style=&#34;color: #0000FF&#34;&gt;case&lt;/span&gt;&lt;/span&gt; &lt;span style=&#34;font-weight: bold&#34;&gt;&lt;span style=&#34;color: #000000&#34;&gt;reserved_word&lt;/span&gt;&lt;/span&gt;(&lt;span style=&#34;color: #009900&#34;&gt;Atom&lt;/span&gt;) &lt;span style=&#34;font-weight: bold&#34;&gt;&lt;span style=&#34;color: #0000FF&#34;&gt;of&lt;/span&gt;&lt;/span&gt;
- &lt;span style=&#34;color: #000080&#34;&gt;true&lt;/span&gt; &lt;span style=&#34;color: #990000&#34;&gt;-&amp;gt;&lt;/span&gt; {&lt;span style=&#34;color: #009900&#34;&gt;Atom&lt;/span&gt;, &lt;span style=&#34;color: #009900&#34;&gt;TokenLine&lt;/span&gt;};
- &lt;span style=&#34;color: #000080&#34;&gt;false&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: #000080&#34;&gt;atom&lt;/span&gt;&lt;/span&gt;, &lt;span style=&#34;color: #009900&#34;&gt;TokenLine&lt;/span&gt;, &lt;span style=&#34;color: #009900&#34;&gt;Atom&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;span style=&#34;color: #990000&#34;&gt;.&lt;/span&gt;
-
-{&lt;span style=&#34;color: #009900&#34;&gt;WS&lt;/span&gt;}&lt;span style=&#34;color: #990000&#34;&gt;+&lt;/span&gt; &lt;span style=&#34;color: #990000&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color: #FF6600&#34;&gt;skip_token&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;The first rule matches an atom, which is converted to either a special
-representation for reserved words, or an atom tuple. The
-&lt;code&gt;TokenChars&lt;/code&gt; variable represents the match as a string, and
-the &lt;code&gt;TokenLine&lt;/code&gt; variable contains the line number.
-&lt;a href=&#34;https://github.com/extend/xerl/blob/0.1/src/xerl_lexer.xrl&#34;&gt;View the complete file&lt;/a&gt;.&lt;/p&gt;&lt;/div&gt;
-&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;We obtain the following result from the lexer:&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;mod&lt;/span&gt;,&lt;span style=&#34;color: #993399&#34;&gt;1&lt;/span&gt;},{&lt;span style=&#34;font-weight: bold&#34;&gt;&lt;span style=&#34;color: #000080&#34;&gt;atom&lt;/span&gt;&lt;/span&gt;,&lt;span style=&#34;color: #993399&#34;&gt;1&lt;/span&gt;,&lt;span style=&#34;color: #FF6600&#34;&gt;my_module&lt;/span&gt;},{&lt;span style=&#34;color: #FF6600&#34;&gt;&#39;begin&#39;&lt;/span&gt;,&lt;span style=&#34;color: #993399&#34;&gt;2&lt;/span&gt;},{&lt;span style=&#34;color: #FF6600&#34;&gt;&#39;end&#39;&lt;/span&gt;,&lt;span style=&#34;color: #993399&#34;&gt;3&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 second step is to parse this list of tokens to add semantic meaning
-and generate what is called an &lt;em&gt;abstract syntax tree&lt;/em&gt;. We will be
-using the &lt;em&gt;yecc&lt;/em&gt; parser generator for this. This time it will take
-.yrl files but the process is the same as before. The file is a little
-more complex than for the lexer, we need to define at the very least
-terminals, nonterminals and root symbols, the grammar itself, and
-optionally some Erlang code.&lt;/p&gt;&lt;/div&gt;
-&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;To compile our module, we need a few things. First, everything is an
-expression. We thus need list of expressions and individual expressions.
-We will support a single expression for now, the &lt;code&gt;mod&lt;/code&gt;
-expression which defines a module. And that&amp;#8217;s it! We end up with the
-following grammar:&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;exprs&lt;/span&gt; &lt;span style=&#34;color: #990000&#34;&gt;-&amp;gt;&lt;/span&gt; &lt;span style=&#34;color: #FF6600&#34;&gt;expr&lt;/span&gt; &lt;span style=&#34;color: #990000&#34;&gt;:&lt;/span&gt; [&lt;span style=&#34;color: #FF6600&#34;&gt;&#39;$1&#39;&lt;/span&gt;]&lt;span style=&#34;color: #990000&#34;&gt;.&lt;/span&gt;
-&lt;span style=&#34;color: #FF6600&#34;&gt;exprs&lt;/span&gt; &lt;span style=&#34;color: #990000&#34;&gt;-&amp;gt;&lt;/span&gt; &lt;span style=&#34;color: #FF6600&#34;&gt;expr&lt;/span&gt; &lt;span style=&#34;color: #FF6600&#34;&gt;exprs&lt;/span&gt; &lt;span style=&#34;color: #990000&#34;&gt;:&lt;/span&gt; [&lt;span style=&#34;color: #FF6600&#34;&gt;&#39;$1&#39;&lt;/span&gt; | &lt;span style=&#34;color: #FF6600&#34;&gt;&#39;$2&#39;&lt;/span&gt;]&lt;span style=&#34;color: #990000&#34;&gt;.&lt;/span&gt;
-
-&lt;span style=&#34;color: #FF6600&#34;&gt;expr&lt;/span&gt; &lt;span style=&#34;color: #990000&#34;&gt;-&amp;gt;&lt;/span&gt; &lt;span style=&#34;color: #FF6600&#34;&gt;module&lt;/span&gt; &lt;span style=&#34;color: #990000&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color: #FF6600&#34;&gt;&#39;$1&#39;&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;.&lt;/span&gt;
-
-&lt;span style=&#34;color: #FF6600&#34;&gt;module&lt;/span&gt; &lt;span style=&#34;color: #990000&#34;&gt;-&amp;gt;&lt;/span&gt; &lt;span style=&#34;color: #FF6600&#34;&gt;&#39;mod&#39;&lt;/span&gt; &lt;span style=&#34;font-weight: bold&#34;&gt;&lt;span style=&#34;color: #000080&#34;&gt;atom&lt;/span&gt;&lt;/span&gt; &lt;span style=&#34;color: #FF6600&#34;&gt;&#39;begin&#39;&lt;/span&gt; &lt;span style=&#34;color: #FF6600&#34;&gt;&#39;end&#39;&lt;/span&gt; &lt;span style=&#34;color: #990000&#34;&gt;:&lt;/span&gt;
- {&lt;span style=&#34;color: #FF6600&#34;&gt;&#39;mod&#39;&lt;/span&gt;, &lt;span style=&#34;font-weight: bold&#34;&gt;&lt;span style=&#34;color: #000080&#34;&gt;?line&lt;/span&gt;&lt;/span&gt;(&lt;span style=&#34;color: #FF6600&#34;&gt;&#39;$1&#39;&lt;/span&gt;), &lt;span style=&#34;color: #FF6600&#34;&gt;&#39;$2&#39;&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;&lt;a href=&#34;https://github.com/extend/xerl/blob/0.1/src/xerl_parser.yrl&#34;&gt;View the complete file&lt;/a&gt;.&lt;/p&gt;&lt;/div&gt;
-&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;We obtain the following result from the parser:&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;mod&lt;/span&gt;,&lt;span style=&#34;color: #993399&#34;&gt;1&lt;/span&gt;,{&lt;span style=&#34;font-weight: bold&#34;&gt;&lt;span style=&#34;color: #000080&#34;&gt;atom&lt;/span&gt;&lt;/span&gt;,&lt;span style=&#34;color: #993399&#34;&gt;1&lt;/span&gt;,&lt;span style=&#34;color: #FF6600&#34;&gt;my_module&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;We obtain a list of a single &lt;code&gt;mod&lt;/code&gt; expression. Just like
-we wanted. Last step is generating the Core Erlang code from it.&lt;/p&gt;&lt;/div&gt;
-&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;Code generation generally is comprised of several steps. We will
-discuss these in more details later on. For now, we will focus on the
-minimal needed for successful compilation.&lt;/p&gt;&lt;/div&gt;
-&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;We can use the &lt;code&gt;cerl&lt;/code&gt; module to generate Core Erlang AST.
-We will simply be using functions, which allows us to avoid learning
-and keeping up to date with the internal representation.&lt;/p&gt;&lt;/div&gt;
-&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;There&amp;#8217;s one important thing to do when generating Core Erlang AST
-for a module: create the &lt;code&gt;module_info/{0,1}&lt;/code&gt; functions.
-Indeed, these are added to Erlang before it becomes Core Erlang, and
-so we need to replicate this ourselves. Do not be concerned however,
-as this only takes a few lines of extra code.&lt;/p&gt;&lt;/div&gt;
-&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;As you can see by
-&lt;a href=&#34;https://github.com/extend/xerl/blob/0.1/src/xerl_codegen.erl&#34;&gt;looking at the complete file&lt;/a&gt;,
-the code generator echoes the grammar we defined in the parser, and
-simply applies the appropriate Core Erlang functions for each expressions.&lt;/p&gt;&lt;/div&gt;
-&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;We obtain the following pretty-printed Core Erlang generated code:&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;my_module&#39;&lt;/span&gt; [&lt;span style=&#34;color: #FF6600&#34;&gt;&#39;module_info&#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;&#39;module_info&#39;&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;1&lt;/span&gt;]
- &lt;span style=&#34;color: #FF6600&#34;&gt;attributes&lt;/span&gt; []
-&lt;span style=&#34;color: #FF6600&#34;&gt;&#39;module_info&#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;font-weight: bold&#34;&gt;&lt;span style=&#34;color: #000080&#34;&gt;call&lt;/span&gt;&lt;/span&gt; &lt;span style=&#34;color: #FF6600&#34;&gt;&#39;erlang&#39;&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color: #FF6600&#34;&gt;&#39;get_module_info&#39;&lt;/span&gt;
- (&lt;span style=&#34;color: #FF6600&#34;&gt;&#39;empty_module&#39;&lt;/span&gt;)
-&lt;span style=&#34;color: #FF6600&#34;&gt;&#39;module_info&#39;&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color: #993399&#34;&gt;1&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: #009900&#34;&gt;Key&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: #000080&#34;&gt;call&lt;/span&gt;&lt;/span&gt; &lt;span style=&#34;color: #FF6600&#34;&gt;&#39;erlang&#39;&lt;/span&gt;&lt;span style=&#34;color: #990000&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color: #FF6600&#34;&gt;&#39;get_module_info&#39;&lt;/span&gt;
- (&lt;span style=&#34;color: #FF6600&#34;&gt;&#39;empty_module&#39;&lt;/span&gt;, &lt;span style=&#34;color: #009900&#34;&gt;Key&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;For convenience I added all the steps in a &lt;code&gt;xerl:compile/1&lt;/code&gt;
-function that you can use against your own .xerl files.&lt;/p&gt;&lt;/div&gt;
-&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;That&amp;#8217;s it for today! We will go into more details over each steps in
-the next few articles.&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.1/&#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