summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLoïc Hoguin <[email protected]>2020-07-01 17:05:11 +0200
committerLoïc Hoguin <[email protected]>2020-07-01 17:05:11 +0200
commit90e4885d7ca8e9d4a5e18f898fc172da900015c5 (patch)
treea6c78039694f8296057e4c55e9dedbd6ed69d7a0
parentf96e84ea1a420e770d306f6e37daadddd82a7da4 (diff)
downloadninenines.eu-90e4885d7ca8e9d4a5e18f898fc172da900015c5.tar.gz
ninenines.eu-90e4885d7ca8e9d4a5e18f898fc172da900015c5.tar.bz2
ninenines.eu-90e4885d7ca8e9d4a5e18f898fc172da900015c5.zip
Add the new Erlanger Playbook landing page
-rw-r--r--_build/content/erlanger-playbook.asciidoc117
-rw-r--r--_build/themes/ninenines/layouts/erlanger-playbook/single.html25
-rw-r--r--_build/themes/ninenines/layouts/index.html2
-rw-r--r--_build/themes/ninenines/layouts/services/single.html2
-rw-r--r--donate/index.html8
-rw-r--r--erlanger-playbook/index.html2334
-rw-r--r--index.html4
-rw-r--r--index.xml12
-rw-r--r--services/index.html8
-rw-r--r--sitemap.xml15
10 files changed, 2512 insertions, 15 deletions
diff --git a/_build/content/erlanger-playbook.asciidoc b/_build/content/erlanger-playbook.asciidoc
new file mode 100644
index 00000000..795739bd
--- /dev/null
+++ b/_build/content/erlanger-playbook.asciidoc
@@ -0,0 +1,117 @@
++++
+date = "2020-07-01T00:00:00+01:00"
+title = "The Erlanger Playbook"
+type = "erlanger-playbook"
++++
+
+The Erlanger Playbook is an upcoming book written by
+Loïc Hoguin, author of Cowboy, Ranch, Gun, Erlang.mk
+and other Erlang/OTP projects. It provides a general
+exploration of Erlang/OTP; advice on writing Erlang
+code, writing tests and documentation and provide
+other Erlang-related insights.
+
+In the _Erlang_ section of the book, we learn about
+the building blocks of the Erlang language; we introspect
+a running Erlang/OTP system to understand how it functions;
+we learn about behaviors by writing our own `gen_server`
+and `supervisor` modules; we explore `gen_statem`; and
+we build and discuss process regitries and process groups.
+
+In the _Code_ section of the book we learn how to
+start a project; we discuss version control, project
+structure, code style and best practices; we
+delve into various technical topics such as the
+"enter loop" mechanism, special processes, IOLists
+and the process dictionary; and we discuss how to
+deal with compilation warnings across Erlang/OTP
+versions.
+
+In the _Tests_ section we cover success typing analysis,
+manual testing, unit testing and functional testing; we
+also learn what to do about timeouts when testing an
+application and how to write client/server tests.
+
+In the _Documentation_ section we gain insight on
+how to write better tutorials, user guides, manuals
+and README files.
+
+The _Design_ section covers public interfaces, REST
+APIs and other lessons learned. The _Workflow_ and
+_Selling Erlang_ sections end this book with short,
+non-technical advice.
+
+The book is roughly:
+
+* 80 pages for the _Erlang_ section
+* 60 pages for the _Code_ section
+* 70 pages for the _Tests_ section
+* 20 pages for the _Documentation_ section
+* 20 pages for the _Design_ section
+* 10 pages for the final two sections
+
+You may currently buy lifetime access to the book's
+git repository. This lifetime access will give you
+access to the pre-release builds and to any future
+release of the book.
+
+The plan is to continue to add content to this book
+for a long time after its initial release, and to
+occasionally produce a proper edition of the book.
+The _First Edition_ will feature the same content as
+is currently available in the most recent pre-release
+build. The _First Edition_ will be released after an
+editing pass has been done.
+
+The _First Edition_ and any subsequent editions
+will be available both as an ebook and on a
+print-on-demand service. It will be possible to buy
+the _First Edition_ at a price lower than the lifetime
+access, though the price remains to be determined.
+
+Buyers of the lifetime access of the book will
+receive all releases and pre-releases as ebook
+versions. A coupon code will also be provided on
+demand for those that want to print the book. The
+coupon will reduce the price to the printing
+costs (you do not have to buy the content twice).
+
+The lifetime access costs 50€ (EUR) and may be
+bought using Paypal:
+
+++++
+<div id="paypal-button-container"></div>
+<script src="https://www.paypal.com/sdk/js?client-id=AdR1GuV-1nyPWjltERgKbL4c3V1VrpjdpA9SI7yrBJADAdSXKaiMrKnc6TAWkM9miArbsFC5gpR_4zs0&currency=EUR" data-sdk-integration-source="button-factory"></script>
+<script>
+ paypal.Buttons({
+ style: {
+ shape: 'rect',
+ color: 'silver',
+ layout: 'vertical',
+ label: 'checkout',
+
+ },
+ createOrder: function(data, actions) {
+ return actions.order.create({
+ purchase_units: [{
+ amount: {
+ value: '50'
+ }
+ }]
+ });
+ },
+ onApprove: function(data, actions) {
+ return actions.order.capture().then(function(details) {
+ alert('Thanks ' + details.payer.name.given_name + ' for your purchase!');
+ });
+ }
+ }).render('#paypal-button-container');
+</script>
+++++
+
+There will be a *delay* between payment and delivery of
+the credentials to access the git repository and download
+pages for the book. This process is currently manual.
+
+As the book is a pre-release, feedback is more than welcome. You can
+send your comments to the contact address at the top of this website.
diff --git a/_build/themes/ninenines/layouts/erlanger-playbook/single.html b/_build/themes/ninenines/layouts/erlanger-playbook/single.html
new file mode 100644
index 00000000..ed3264c2
--- /dev/null
+++ b/_build/themes/ninenines/layouts/erlanger-playbook/single.html
@@ -0,0 +1,25 @@
+{{ partial "header.html" . }}
+</header>
+
+<div id="contents" class="two_col">
+<div class="container">
+<div class="row">
+<div class="span9 maincol">
+
+<h1 class="lined-header"><span>{{ .Title }}</span></h1>
+
+{{ .Content }}
+
+</div>
+<div class="span3 sidecol">
+{{ range $.Site.Pages }}
+ {{ if eq .RelPermalink "/donate/" }}
+ {{ .Content}}
+ {{ end }}
+{{ end }}
+</div>
+</div>
+</div>
+</div>
+
+{{ partial "footer.html" . }}
diff --git a/_build/themes/ninenines/layouts/index.html b/_build/themes/ninenines/layouts/index.html
index 0bf475f4..809a76a6 100644
--- a/_build/themes/ninenines/layouts/index.html
+++ b/_build/themes/ninenines/layouts/index.html
@@ -13,7 +13,7 @@
{{ $.Scratch.Add "projects" 1 }}
</li>
{{ end }}
- <li><a href="/articles/erlanger-playbook">The Erlanger Playbook</a></li>
+ <li><a href="/erlanger-playbook">The Erlanger Playbook</a></li>
</ul>
</div>
</div>
diff --git a/_build/themes/ninenines/layouts/services/single.html b/_build/themes/ninenines/layouts/services/single.html
index e7df4440..ed3264c2 100644
--- a/_build/themes/ninenines/layouts/services/single.html
+++ b/_build/themes/ninenines/layouts/services/single.html
@@ -6,7 +6,7 @@
<div class="row">
<div class="span9 maincol">
-<h1 class="lined-header"><span>Services</span></h1>
+<h1 class="lined-header"><span>{{ .Title }}</span></h1>
{{ .Content }}
diff --git a/donate/index.html b/donate/index.html
index 2668c7c3..45da96d5 100644
--- a/donate/index.html
+++ b/donate/index.html
@@ -60,7 +60,7 @@
<div class="row">
<div class="span9 maincol">
-<h1 class="lined-header"><span>Services</span></h1>
+<h1 class="lined-header"><span>Donate</span></h1>
<h3 id="_like_my_work__donate">Like my work? Donate!</h3>
<p>Donate to Loïc Hoguin because his work on Cowboy, Ranch, Gun and Erlang.mk is fantastic:</p>
@@ -730,6 +730,10 @@
+
+
+
+
<h3 id="_like_my_work__donate">Like my work? Donate!</h3>
<p>Donate to Loïc Hoguin because his work on Cowboy, Ranch, Gun and Erlang.mk is fantastic:</p>
<form action="https://www.paypal.com/cgi-bin/webscr" method="post" style="display:inline">
@@ -2259,8 +2263,6 @@
-
-
</div>
</div>
</div>
diff --git a/erlanger-playbook/index.html b/erlanger-playbook/index.html
new file mode 100644
index 00000000..f2f6bfce
--- /dev/null
+++ b/erlanger-playbook/index.html
@@ -0,0 +1,2334 @@
+<!DOCTYPE html>
+<html lang="en">
+
+<head>
+ <meta charset="utf-8">
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
+ <meta name="description" content="">
+ <meta name="author" content="Loïc Hoguin based on a design from (Soft10) Pol Cámara">
+
+ <title>Nine Nines: The Erlanger Playbook</title>
+
+ <link href='https://fonts.googleapis.com/css?family=Open+Sans:400,700,400italic' rel='stylesheet' type='text/css'>
+ <link href="/css/99s.css?r=7" rel="stylesheet">
+
+ <link rel="shortcut icon" href="/img/ico/favicon.ico">
+ <link rel="apple-touch-icon-precomposed" sizes="114x114" href="/img/ico/apple-touch-icon-114.png">
+ <link rel="apple-touch-icon-precomposed" sizes="72x72" href="/img/ico/apple-touch-icon-72.png">
+ <link rel="apple-touch-icon-precomposed" href="/img/ico/apple-touch-icon-57.png">
+
+
+</head>
+
+
+<body class="">
+ <header id="page-head">
+ <div id="topbar" class="container">
+ <div class="row">
+ <div class="span2">
+ <h1 id="logo"><a href="/" title="99s">99s</a></h1>
+ </div>
+ <div class="span10">
+
+ <div id="side-header">
+ <nav>
+ <ul>
+ <li><a title="Hear my thoughts" href="/articles">Articles</a></li>
+ <li><a title="Watch my talks" href="/talks">Talks</a></li>
+ <li><a title="Read the docs" href="/docs">Documentation</a></li>
+ <li><a title="Request my services" href="/services">Consulting & Training</a></li>
+ </ul>
+ </nav>
+ <ul id="social">
+ <li>
+ <a href="https://github.com/ninenines" title="Check my Github repositories"><img src="/img/ico_github.png" data-hover="/img/ico_github_alt.png" alt="Github"></a>
+ </li>
+ <li>
+ <a title="Contact me" href="mailto:[email protected]"><img src="/img/ico_mail.png" data-hover="/img/ico_mail_alt.png"></a>
+ </li>
+ </ul>
+ </div>
+ </div>
+ </div>
+ </div>
+
+
+</header>
+
+<div id="contents" class="two_col">
+<div class="container">
+<div class="row">
+<div class="span9 maincol">
+
+<h1 class="lined-header"><span>The Erlanger Playbook</span></h1>
+
+<p>The Erlanger Playbook is an upcoming book written by Loïc Hoguin, author of Cowboy, Ranch, Gun, Erlang.mk and other Erlang/OTP projects. It provides a general exploration of Erlang/OTP; advice on writing Erlang code, writing tests and documentation and provide other Erlang-related insights.</p>
+<p>In the <em>Erlang</em> section of the book, we learn about the building blocks of the Erlang language; we introspect a running Erlang/OTP system to understand how it functions; we learn about behaviors by writing our own <code>gen_server</code> and <code>supervisor</code> modules; we explore <code>gen_statem</code>; and we build and discuss process regitries and process groups.</p>
+<p>In the <em>Code</em> section of the book we learn how to start a project; we discuss version control, project structure, code style and best practices; we delve into various technical topics such as the &quot;enter loop&quot; mechanism, special processes, IOLists and the process dictionary; and we discuss how to deal with compilation warnings across Erlang/OTP versions.</p>
+<p>In the <em>Tests</em> section we cover success typing analysis, manual testing, unit testing and functional testing; we also learn what to do about timeouts when testing an application and how to write client/server tests.</p>
+<p>In the <em>Documentation</em> section we gain insight on how to write better tutorials, user guides, manuals and README files.</p>
+<p>The <em>Design</em> section covers public interfaces, REST APIs and other lessons learned. The <em>Workflow</em> and <em>Selling Erlang</em> sections end this book with short, non-technical advice.</p>
+<p>The book is roughly:</p>
+<ul><li>80 pages for the <em>Erlang</em> section
+</li>
+<li>60 pages for the <em>Code</em> section
+</li>
+<li>70 pages for the <em>Tests</em> section
+</li>
+<li>20 pages for the <em>Documentation</em> section
+</li>
+<li>20 pages for the <em>Design</em> section
+</li>
+<li>10 pages for the final two sections
+</li>
+</ul>
+<p>You may currently buy lifetime access to the book&apos;s git repository. This lifetime access will give you access to the pre-release builds and to any future release of the book.</p>
+<p>The plan is to continue to add content to this book for a long time after its initial release, and to occasionally produce a proper edition of the book. The <em>First Edition</em> will feature the same content as is currently available in the most recent pre-release build. The <em>First Edition</em> will be released after an editing pass has been done.</p>
+<p>The <em>First Edition</em> and any subsequent editions will be available both as an ebook and on a print-on-demand service. It will be possible to buy the <em>First Edition</em> at a price lower than the lifetime access, though the price remains to be determined.</p>
+<p>Buyers of the lifetime access of the book will receive all releases and pre-releases as ebook versions. A coupon code will also be provided on demand for those that want to print the book. The coupon will reduce the price to the printing costs (you do not have to buy the content twice).</p>
+<p>The lifetime access costs 50€ (EUR) and may be bought using Paypal:</p>
+<div id="paypal-button-container"></div>
+<script src="https://www.paypal.com/sdk/js?client-id=AdR1GuV-1nyPWjltERgKbL4c3V1VrpjdpA9SI7yrBJADAdSXKaiMrKnc6TAWkM9miArbsFC5gpR_4zs0&currency=EUR" data-sdk-integration-source="button-factory"></script>
+<script>
+ paypal.Buttons({
+ style: {
+ shape: 'rect',
+ color: 'silver',
+ layout: 'vertical',
+ label: 'checkout',
+
+ },
+ createOrder: function(data, actions) {
+ return actions.order.create({
+ purchase_units: [{
+ amount: {
+ value: '50'
+ }
+ }]
+ });
+ },
+ onApprove: function(data, actions) {
+ return actions.order.capture().then(function(details) {
+ alert('Thanks ' + details.payer.name.given_name + ' for your purchase!');
+ });
+ }
+ }).render('#paypal-button-container');
+</script><p>There will be a <strong>delay</strong> between payment and delivery of the credentials to access the git repository and download pages for the book. This process is currently manual.</p>
+<p>As the book is a pre-release, feedback is more than welcome. You can send your comments to the contact address at the top of this website.</p>
+
+
+
+</div>
+<div class="span3 sidecol">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <h3 id="_like_my_work__donate">Like my work? Donate!</h3>
+<p>Donate to Loïc Hoguin because his work on Cowboy, Ranch, Gun and Erlang.mk is fantastic:</p>
+<form action="https://www.paypal.com/cgi-bin/webscr" method="post" style="display:inline">
+<input type="hidden" name="cmd" value="_donations">
+<input type="hidden" name="business" value="[email protected]">
+<input type="hidden" name="lc" value="FR">
+<input type="hidden" name="item_name" value="Loic Hoguin">
+<input type="hidden" name="item_number" value="99s">
+<input type="hidden" name="currency_code" value="EUR">
+<input type="hidden" name="bn" value="PP-DonationsBF:btn_donate_LG.gif:NonHosted">
+<input type="image" src="https://www.paypalobjects.com/en_US/i/btn/btn_donate_LG.gif" border="0" name="submit" alt="PayPal - The safer, easier way to pay online!">
+<img alt="" border="0" src="https://www.paypalobjects.com/fr_FR/i/scr/pixel.gif" width="1" height="1">
+</form><p>Recurring payment options are also available via <a href="https://github.com/sponsors/essen">GitHub Sponsors</a>. These funds are used to cover the recurring expenses like food, dedicated servers or domain names.</p>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</div>
+</div>
+</div>
+</div>
+
+ <footer>
+ <div class="container">
+ <div class="row">
+ <div class="span6">
+ <p id="scroll-top"><a href="#">↑ Scroll to top</a></p>
+ <nav>
+ <ul>
+ <li><a href="mailto:[email protected]" title="Contact us">Contact us</a></li><li><a href="https://github.com/ninenines/ninenines.github.io" title="Github repository">Contribute to this site</a></li>
+ </ul>
+ </nav>
+ </div>
+ <div class="span6 credits">
+ <p><img src="/img/footer_logo.png"></p>
+ <p>Copyright &copy; Loïc Hoguin 2012-2018</p>
+ </div>
+ </div>
+ </div>
+ </footer>
+
+
+ <script src="/js/custom.js"></script>
+ </body>
+</html>
+
diff --git a/index.html b/index.html
index 1aa0b169..4a6a409b 100644
--- a/index.html
+++ b/index.html
@@ -90,7 +90,7 @@
</li>
- <li><a href="/articles/erlanger-playbook">The Erlanger Playbook</a></li>
+ <li><a href="/erlanger-playbook">The Erlanger Playbook</a></li>
</ul>
</div>
</div>
@@ -873,6 +873,8 @@
+
+
<p>Reward my work via <a href="https://github.com/sponsors/essen">GitHub Sponsors</a> and<br/>GitHub will double the funds I receive!</p>
diff --git a/index.xml b/index.xml
index ab2fdb45..02378b8a 100644
--- a/index.xml
+++ b/index.xml
@@ -6,7 +6,7 @@
<description>Recent content on Nine Nines</description>
<generator>Hugo -- gohugo.io</generator>
<language>en-us</language>
- <lastBuildDate>Wed, 01 Jul 2015 00:00:00 +0100</lastBuildDate>
+ <lastBuildDate>Wed, 01 Jul 2020 00:00:00 +0100</lastBuildDate>
<atom:link href="https://ninenines.eu/index.xml" rel="self" type="application/rss+xml" />
@@ -3148,6 +3148,16 @@ HTTP IANA Registries HTTP Method Registry HTTP Status Code Registry Message He
</item>
<item>
+ <title>The Erlanger Playbook</title>
+ <link>https://ninenines.eu/erlanger-playbook/</link>
+ <pubDate>Wed, 01 Jul 2020 00:00:00 +0100</pubDate>
+
+ <guid>https://ninenines.eu/erlanger-playbook/</guid>
+ <description>The Erlanger Playbook is an upcoming book written by Loïc Hoguin, author of Cowboy, Ranch, Gun, Erlang.mk and other Erlang/OTP projects. It provides a general exploration of Erlang/OTP; advice on writing Erlang code, writing tests and documentation and provide other Erlang-related insights.
+In the Erlang section of the book, we learn about the building blocks of the Erlang language; we introspect a running Erlang/OTP system to understand how it functions; we learn about behaviors by writing our own gen_server and supervisor modules; we explore gen_statem; and we build and discuss process regitries and process groups.</description>
+ </item>
+
+ <item>
<title>Ranch 2.0</title>
<link>https://ninenines.eu/articles/ranch-2.0.0/</link>
<pubDate>Thu, 25 Jun 2020 07:00:00 +0100</pubDate>
diff --git a/services/index.html b/services/index.html
index a3974d23..cea946e4 100644
--- a/services/index.html
+++ b/services/index.html
@@ -60,7 +60,7 @@
<div class="row">
<div class="span9 maincol">
-<h1 class="lined-header"><span>Services</span></h1>
+<h1 class="lined-header"><span>Consulting &amp; Training</span></h1>
<p>If you are interested by any of these opportunities, <a href="mailto:[email protected]">send me an email</a>.</p>
<h2 id="_consulting">Consulting</h2>
@@ -756,6 +756,10 @@
+
+
+
+
<h3 id="_like_my_work__donate">Like my work? Donate!</h3>
<p>Donate to Loïc Hoguin because his work on Cowboy, Ranch, Gun and Erlang.mk is fantastic:</p>
<form action="https://www.paypal.com/cgi-bin/webscr" method="post" style="display:inline">
@@ -2285,8 +2289,6 @@
-
-
</div>
</div>
</div>
diff --git a/sitemap.xml b/sitemap.xml
index d80c71da..4b1d713d 100644
--- a/sitemap.xml
+++ b/sitemap.xml
@@ -1147,6 +1147,16 @@
</url>
<url>
+ <loc>https://ninenines.eu/</loc>
+ <lastmod>2020-07-01T00:00:00+01:00</lastmod>
+ </url>
+
+ <url>
+ <loc>https://ninenines.eu/erlanger-playbook/</loc>
+ <lastmod>2020-07-01T00:00:00+01:00</lastmod>
+ </url>
+
+ <url>
<loc>https://ninenines.eu/articles/</loc>
<lastmod>2020-06-25T07:00:00+01:00</lastmod>
</url>
@@ -1342,11 +1352,6 @@
</url>
<url>
- <loc>https://ninenines.eu/</loc>
- <lastmod>2015-07-01T00:00:00+01:00</lastmod>
- </url>
-
- <url>
<loc>https://ninenines.eu/talks/</loc>
<lastmod>2015-07-01T00:00:00+01:00</lastmod>
</url>