summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLoïc Hoguin <[email protected]>2017-07-24 17:13:20 +0200
committerLoïc Hoguin <[email protected]>2017-07-24 17:13:20 +0200
commitd344725cfd7169605ddecca46b9901af9f43ff1f (patch)
tree64e868690c16309d2d3d100f317673078a122002
parentd08cffb4f3131b292de0a83a575467d72e2684be (diff)
downloadninenines.eu-d344725cfd7169605ddecca46b9901af9f43ff1f.tar.gz
ninenines.eu-d344725cfd7169605ddecca46b9901af9f43ff1f.tar.bz2
ninenines.eu-d344725cfd7169605ddecca46b9901af9f43ff1f.zip
Cowboy 2.0.0-rc.1
-rw-r--r--_build/content/articles/cowboy-2.0.0-rc.1.asciidoc54
-rw-r--r--articles/cowboy-2.0.0-pre.4/index.html2
-rw-r--r--articles/cowboy-2.0.0-rc.1/index.html224
-rw-r--r--articles/cowboy2-qs/index.html2
-rw-r--r--articles/dont-let-it-crash/index.html2
-rw-r--r--articles/erlang-scalability/index.html2
-rw-r--r--articles/erlang-validate-utf8/index.html2
-rw-r--r--articles/erlang.mk-and-relx/index.html2
-rw-r--r--articles/erlanger-playbook-september-2015-update/index.html2
-rw-r--r--articles/erlanger-playbook/index.html2
-rw-r--r--articles/farwest-funded/index.html2
-rw-r--r--articles/index.html38
-rw-r--r--articles/index.xml164
-rw-r--r--articles/january-2014-status/index.html2
-rw-r--r--articles/ml-archives/index.html2
-rw-r--r--articles/on-open-source/index.html2
-rw-r--r--articles/page/2/index.html20
-rw-r--r--articles/ranch-1.3/index.html2
-rw-r--r--articles/ranch-ftp/index.html2
-rw-r--r--articles/the-elephant-in-the-room/index.html2
-rw-r--r--articles/the-story-so-far/index.html2
-rw-r--r--articles/tictactoe/index.html2
-rw-r--r--articles/website-update/index.html2
-rw-r--r--articles/xerl-0.1-empty-modules/index.html2
-rw-r--r--articles/xerl-0.2-two-modules/index.html2
-rw-r--r--articles/xerl-0.3-atomic-expressions/index.html2
-rw-r--r--articles/xerl-0.4-expression-separator/index.html2
-rw-r--r--articles/xerl-0.5-intermediate-module/index.html2
-rw-r--r--donate/index.html2
-rw-r--r--index.html2
-rw-r--r--index.xml193
-rw-r--r--services/index.html2
-rw-r--r--sitemap.xml7
33 files changed, 506 insertions, 246 deletions
diff --git a/_build/content/articles/cowboy-2.0.0-rc.1.asciidoc b/_build/content/articles/cowboy-2.0.0-rc.1.asciidoc
new file mode 100644
index 00000000..ae444e1d
--- /dev/null
+++ b/_build/content/articles/cowboy-2.0.0-rc.1.asciidoc
@@ -0,0 +1,54 @@
++++
+date = "2017-07-24T18:00:00+01:00"
+title = "Cowboy 2.0 release candidate 1"
+
++++
+
+Cowboy `2.0.0-rc.1` has been released!
+
+This is the new recommended version of Cowboy.
+Its API should not change before release. While
+you probably should not use it in production yet,
+many do successfully. Use at your own risk.
+
+The plan is to have a new RC version every couple
+weeks until the summer ends or later if there are
+still blocking issues open. Only issues that can't
+be fixed without making breaking changes to the
+interface may block the release.
+
+Numerous changes were made since Cowboy 1.0. The
+one most people care about is probably HTTP/2, but
+it's most likely not the only one worthwhile. The
+full list of changes (excluding types) can be found
+in the user guide chapter
+https://ninenines.eu/docs/en/cowboy/2.0/guide/migrating_from_1.0/[Migrating from Cowboy 1.0 to 2.0].
+
+As this is not the full release just yet, please pay
+extra attention to details and report anything
+suspicious you find.
+
+There are still some tests failing. Most of those are
+related to standards that are not being followed perfectly
+just yet. Some of those will probably not be fixed before
+Cowboy 2.0 is released. They are edge cases and should not
+prevent interoperability.
+
+The manual received a lot of love. It now has one page per
+function with a detailed description, arguments list, return
+value, changelog and examples. It also links to the other
+relevant manual pages: https://ninenines.eu/docs/en/cowboy/2.0/manual/
+
+Cowboy is now tested and supported with Erlang/OTP 19.0 or above
+on Arch Linux, FreeBSD, OSX, Ubuntu and Windows 7. Contact me
+if you can provide permanent access to another platform for the
+purposes of testing.
+
+Cowboy is now available from four locations:
+
+* https://git.ninenines.eu/cowboy.git
+* https://github.com/ninenines/cowboy.git
+* https://bitbucket.org/ninenines/cowboy.git
+* https://gitlab.com/ninenines/cowboy.git
+
+They are updated at the same time so there is no real difference.
diff --git a/articles/cowboy-2.0.0-pre.4/index.html b/articles/cowboy-2.0.0-pre.4/index.html
index 55576745..09aade06 100644
--- a/articles/cowboy-2.0.0-pre.4/index.html
+++ b/articles/cowboy-2.0.0-pre.4/index.html
@@ -192,6 +192,8 @@ added back.</p></div>
<h3>More articles</h3>
<ul id="articles-nav" class="extra_margin">
+ <li><a href="https://ninenines.eu/articles/cowboy-2.0.0-rc.1/">Cowboy 2.0 release candidate 1</a></li>
+
<li><a href="https://ninenines.eu/articles/the-elephant-in-the-room/">The elephant in the room</a></li>
<li><a href="https://ninenines.eu/articles/dont-let-it-crash/">Don&#39;t let it crash</a></li>
diff --git a/articles/cowboy-2.0.0-rc.1/index.html b/articles/cowboy-2.0.0-rc.1/index.html
new file mode 100644
index 00000000..a6bf77f6
--- /dev/null
+++ b/articles/cowboy-2.0.0-rc.1/index.html
@@ -0,0 +1,224 @@
+<!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">
+
+ <meta name="generator" content="Hugo 0.17" />
+
+ <title>Nine Nines: Cowboy 2.0 release candidate 1</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=1" 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 class="active"><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="Keep in touch!" href="http://twitter.com/lhoguin"><img src="/img/ico_microblog.png" data-hover="/img/ico_microblog_alt.png"></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">
+<div class="container">
+<div class="row">
+<div class="span9 maincol">
+
+<article class="blog_item">
+<header>
+ <h1 class="lined-header"><span>Cowboy 2.0 release candidate 1</span></h1>
+ <p class="date">
+ <span class="day">24</span>
+ <span class="month">Jul</span>
+ </p>
+</header>
+
+<div class="paragraph"><p>Cowboy <code>2.0.0-rc.1</code> has been released!</p></div>
+<div class="paragraph"><p>This is the new recommended version of Cowboy.
+Its API should not change before release. While
+you probably should not use it in production yet,
+many do successfully. Use at your own risk.</p></div>
+<div class="paragraph"><p>The plan is to have a new RC version every couple
+weeks until the summer ends or later if there are
+still blocking issues open. Only issues that can&#8217;t
+be fixed without making breaking changes to the
+interface may block the release.</p></div>
+<div class="paragraph"><p>Numerous changes were made since Cowboy 1.0. The
+one most people care about is probably HTTP/2, but
+it&#8217;s most likely not the only one worthwhile. The
+full list of changes (excluding types) can be found
+in the user guide chapter
+<a href="https://ninenines.eu/docs/en/cowboy/2.0/guide/migrating_from_1.0/">Migrating from Cowboy 1.0 to 2.0</a>.</p></div>
+<div class="paragraph"><p>As this is not the full release just yet, please pay
+extra attention to details and report anything
+suspicious you find.</p></div>
+<div class="paragraph"><p>There are still some tests failing. Most of those are
+related to standards that are not being followed perfectly
+just yet. Some of those will probably not be fixed before
+Cowboy 2.0 is released. They are edge cases and should not
+prevent interoperability.</p></div>
+<div class="paragraph"><p>The manual received a lot of love. It now has one page per
+function with a detailed description, arguments list, return
+value, changelog and examples. It also links to the other
+relevant manual pages: <a href="https://ninenines.eu/docs/en/cowboy/2.0/manual/">https://ninenines.eu/docs/en/cowboy/2.0/manual/</a></p></div>
+<div class="paragraph"><p>Cowboy is now tested and supported with Erlang/OTP 19.0 or above
+on Arch Linux, FreeBSD, OSX, Ubuntu and Windows 7. Contact me
+if you can provide permanent access to another platform for the
+purposes of testing.</p></div>
+<div class="paragraph"><p>Cowboy is now available from four locations:</p></div>
+<div class="ulist"><ul>
+<li>
+<p>
+<a href="https://git.ninenines.eu/cowboy.git">https://git.ninenines.eu/cowboy.git</a>
+</p>
+</li>
+<li>
+<p>
+<a href="https://github.com/ninenines/cowboy.git">https://github.com/ninenines/cowboy.git</a>
+</p>
+</li>
+<li>
+<p>
+<a href="https://bitbucket.org/ninenines/cowboy.git">https://bitbucket.org/ninenines/cowboy.git</a>
+</p>
+</li>
+<li>
+<p>
+<a href="https://gitlab.com/ninenines/cowboy.git">https://gitlab.com/ninenines/cowboy.git</a>
+</p>
+</li>
+</ul></div>
+<div class="paragraph"><p>They are updated at the same time so there is no real difference.</p></div>
+
+</article>
+</div>
+
+<div class="span3 sidecol">
+<h3>More articles</h3>
+<ul id="articles-nav" class="extra_margin">
+
+ <li><a href="https://ninenines.eu/articles/cowboy-2.0.0-rc.1/">Cowboy 2.0 release candidate 1</a></li>
+
+ <li><a href="https://ninenines.eu/articles/the-elephant-in-the-room/">The elephant in the room</a></li>
+
+ <li><a href="https://ninenines.eu/articles/dont-let-it-crash/">Don&#39;t let it crash</a></li>
+
+ <li><a href="https://ninenines.eu/articles/cowboy-2.0.0-pre.4/">Cowboy 2.0 pre-release 4</a></li>
+
+ <li><a href="https://ninenines.eu/articles/ranch-1.3/">Ranch 1.3</a></li>
+
+ <li><a href="https://ninenines.eu/articles/ml-archives/">Mailing list archived</a></li>
+
+ <li><a href="https://ninenines.eu/articles/website-update/">Website update</a></li>
+
+ <li><a href="https://ninenines.eu/articles/erlanger-playbook-september-2015-update/">The Erlanger Playbook September 2015 Update</a></li>
+
+ <li><a href="https://ninenines.eu/articles/erlanger-playbook/">The Erlanger Playbook</a></li>
+
+ <li><a href="https://ninenines.eu/articles/erlang-validate-utf8/">Validating UTF-8 binaries with Erlang</a></li>
+
+ <li><a href="https://ninenines.eu/articles/on-open-source/">On open source</a></li>
+
+ <li><a href="https://ninenines.eu/articles/the-story-so-far/">The story so far</a></li>
+
+ <li><a href="https://ninenines.eu/articles/cowboy2-qs/">Cowboy 2.0 and query strings</a></li>
+
+ <li><a href="https://ninenines.eu/articles/january-2014-status/">January 2014 status</a></li>
+
+ <li><a href="https://ninenines.eu/articles/farwest-funded/">Farwest got funded!</a></li>
+
+ <li><a href="https://ninenines.eu/articles/erlang.mk-and-relx/">Build Erlang releases with Erlang.mk and Relx</a></li>
+
+ <li><a href="https://ninenines.eu/articles/xerl-0.5-intermediate-module/">Xerl: intermediate module</a></li>
+
+ <li><a href="https://ninenines.eu/articles/xerl-0.4-expression-separator/">Xerl: expression separator</a></li>
+
+ <li><a href="https://ninenines.eu/articles/erlang-scalability/">Erlang Scalability</a></li>
+
+ <li><a href="https://ninenines.eu/articles/xerl-0.3-atomic-expressions/">Xerl: atomic expressions</a></li>
+
+ <li><a href="https://ninenines.eu/articles/xerl-0.2-two-modules/">Xerl: two modules</a></li>
+
+ <li><a href="https://ninenines.eu/articles/xerl-0.1-empty-modules/">Xerl: empty modules</a></li>
+
+ <li><a href="https://ninenines.eu/articles/ranch-ftp/">Build an FTP Server with Ranch in 30 Minutes</a></li>
+
+ <li><a href="https://ninenines.eu/articles/tictactoe/">Erlang Tic Tac Toe</a></li>
+
+</ul>
+
+<h3>Feedback</h3>
+<p>Feel free to <a href="mailto:[email protected]">email us</a>
+if you found any mistake or need clarification on any of the
+articles.</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-2016</p>
+ </div>
+ </div>
+ </div>
+ </footer>
+
+
+ <script src="/js/custom.js"></script>
+ </body>
+</html>
+
diff --git a/articles/cowboy2-qs/index.html b/articles/cowboy2-qs/index.html
index 5fcbccf9..a868a51f 100644
--- a/articles/cowboy2-qs/index.html
+++ b/articles/cowboy2-qs/index.html
@@ -231,6 +231,8 @@ thoughts that went into this rather than just the conclusion.</p></div>
<h3>More articles</h3>
<ul id="articles-nav" class="extra_margin">
+ <li><a href="https://ninenines.eu/articles/cowboy-2.0.0-rc.1/">Cowboy 2.0 release candidate 1</a></li>
+
<li><a href="https://ninenines.eu/articles/the-elephant-in-the-room/">The elephant in the room</a></li>
<li><a href="https://ninenines.eu/articles/dont-let-it-crash/">Don&#39;t let it crash</a></li>
diff --git a/articles/dont-let-it-crash/index.html b/articles/dont-let-it-crash/index.html
index 578308ff..10c82774 100644
--- a/articles/dont-let-it-crash/index.html
+++ b/articles/dont-let-it-crash/index.html
@@ -194,6 +194,8 @@ make more.</p></div>
<h3>More articles</h3>
<ul id="articles-nav" class="extra_margin">
+ <li><a href="https://ninenines.eu/articles/cowboy-2.0.0-rc.1/">Cowboy 2.0 release candidate 1</a></li>
+
<li><a href="https://ninenines.eu/articles/the-elephant-in-the-room/">The elephant in the room</a></li>
<li><a href="https://ninenines.eu/articles/dont-let-it-crash/">Don&#39;t let it crash</a></li>
diff --git a/articles/erlang-scalability/index.html b/articles/erlang-scalability/index.html
index 6fac0a58..baf92592 100644
--- a/articles/erlang-scalability/index.html
+++ b/articles/erlang-scalability/index.html
@@ -216,6 +216,8 @@ concurrently.</p></div>
<h3>More articles</h3>
<ul id="articles-nav" class="extra_margin">
+ <li><a href="https://ninenines.eu/articles/cowboy-2.0.0-rc.1/">Cowboy 2.0 release candidate 1</a></li>
+
<li><a href="https://ninenines.eu/articles/the-elephant-in-the-room/">The elephant in the room</a></li>
<li><a href="https://ninenines.eu/articles/dont-let-it-crash/">Don&#39;t let it crash</a></li>
diff --git a/articles/erlang-validate-utf8/index.html b/articles/erlang-validate-utf8/index.html
index 107c9883..07540f6b 100644
--- a/articles/erlang-validate-utf8/index.html
+++ b/articles/erlang-validate-utf8/index.html
@@ -267,6 +267,8 @@ http://www.gnu.org/software/src-highlite -->
<h3>More articles</h3>
<ul id="articles-nav" class="extra_margin">
+ <li><a href="https://ninenines.eu/articles/cowboy-2.0.0-rc.1/">Cowboy 2.0 release candidate 1</a></li>
+
<li><a href="https://ninenines.eu/articles/the-elephant-in-the-room/">The elephant in the room</a></li>
<li><a href="https://ninenines.eu/articles/dont-let-it-crash/">Don&#39;t let it crash</a></li>
diff --git a/articles/erlang.mk-and-relx/index.html b/articles/erlang.mk-and-relx/index.html
index 83910b52..88585f33 100644
--- a/articles/erlang.mk-and-relx/index.html
+++ b/articles/erlang.mk-and-relx/index.html
@@ -170,6 +170,8 @@ containing all the flags to pass to the Erlang VM, for example
<h3>More articles</h3>
<ul id="articles-nav" class="extra_margin">
+ <li><a href="https://ninenines.eu/articles/cowboy-2.0.0-rc.1/">Cowboy 2.0 release candidate 1</a></li>
+
<li><a href="https://ninenines.eu/articles/the-elephant-in-the-room/">The elephant in the room</a></li>
<li><a href="https://ninenines.eu/articles/dont-let-it-crash/">Don&#39;t let it crash</a></li>
diff --git a/articles/erlanger-playbook-september-2015-update/index.html b/articles/erlanger-playbook-september-2015-update/index.html
index b6ed2661..1922e42e 100644
--- a/articles/erlanger-playbook-september-2015-update/index.html
+++ b/articles/erlanger-playbook-september-2015-update/index.html
@@ -95,6 +95,8 @@ will be used to allow me to work on open source full time.</p></div>
<h3>More articles</h3>
<ul id="articles-nav" class="extra_margin">
+ <li><a href="https://ninenines.eu/articles/cowboy-2.0.0-rc.1/">Cowboy 2.0 release candidate 1</a></li>
+
<li><a href="https://ninenines.eu/articles/the-elephant-in-the-room/">The elephant in the room</a></li>
<li><a href="https://ninenines.eu/articles/dont-let-it-crash/">Don&#39;t let it crash</a></li>
diff --git a/articles/erlanger-playbook/index.html b/articles/erlanger-playbook/index.html
index 6d565c8b..7c872d7c 100644
--- a/articles/erlanger-playbook/index.html
+++ b/articles/erlanger-playbook/index.html
@@ -163,6 +163,8 @@ You will receive updates to the book for free as soon as they are available.</p>
<h3>More articles</h3>
<ul id="articles-nav" class="extra_margin">
+ <li><a href="https://ninenines.eu/articles/cowboy-2.0.0-rc.1/">Cowboy 2.0 release candidate 1</a></li>
+
<li><a href="https://ninenines.eu/articles/the-elephant-in-the-room/">The elephant in the room</a></li>
<li><a href="https://ninenines.eu/articles/dont-let-it-crash/">Don&#39;t let it crash</a></li>
diff --git a/articles/farwest-funded/index.html b/articles/farwest-funded/index.html
index 11ef0352..a257edb4 100644
--- a/articles/farwest-funded/index.html
+++ b/articles/farwest-funded/index.html
@@ -103,6 +103,8 @@ can help!</p></div>
<h3>More articles</h3>
<ul id="articles-nav" class="extra_margin">
+ <li><a href="https://ninenines.eu/articles/cowboy-2.0.0-rc.1/">Cowboy 2.0 release candidate 1</a></li>
+
<li><a href="https://ninenines.eu/articles/the-elephant-in-the-room/">The elephant in the room</a></li>
<li><a href="https://ninenines.eu/articles/dont-let-it-crash/">Don&#39;t let it crash</a></li>
diff --git a/articles/index.html b/articles/index.html
index 527f36d9..a8427b2c 100644
--- a/articles/index.html
+++ b/articles/index.html
@@ -72,6 +72,24 @@
<article class="blog_item">
<header>
+ <h2><a href="https://ninenines.eu/articles/cowboy-2.0.0-rc.1/">Cowboy 2.0 release candidate 1</a></h2>
+ <p class="date">
+ <span class="day">24</span>
+ <span class="month">Jul</span>
+ </p>
+ </header>
+
+ <p>Cowboy 2.0.0-rc.1 has been released!
+ This is the new recommended version of Cowboy. Its API should not change before release. While you probably should not use it in production yet, many do successfully. Use at your own risk.
+ The plan is to have a new RC version every couple weeks until the summer ends or later if there are still blocking issues open. Only issues that can&#8217;t be fixed without making breaking changes to the interface may block the release.</p>
+
+ <p style="text-align:right">
+ <a class="read_more" href="https://ninenines.eu/articles/cowboy-2.0.0-rc.1/">Read More</a>
+ </p>
+ </article>
+
+ <article class="blog_item">
+ <header>
<h2><a href="https://ninenines.eu/articles/the-elephant-in-the-room/">The elephant in the room</a></h2>
<p class="date">
<span class="day">26</span>
@@ -409,26 +427,6 @@
</p>
</article>
- <article class="blog_item">
- <header>
- <h2><a href="https://ninenines.eu/articles/xerl-0.2-two-modules/">Xerl: two modules</a></h2>
- <p class="date">
- <span class="day">03</span>
- <span class="month">Feb</span>
- </p>
- </header>
-
- <p>Everything is an expression.
- This sentence carries profound meaning. We will invoke it many times over the course of these articles.
- If everything is an expression, then the language shouldn&#8217;t have any problem with me defining two modules in the same source file.
- mod first_module begin end mod second_module begin end Likewise, it shouldn&#8217;t have any problem with me defining a module inside another module.
- mod out_module begin mod in_module begin end end Of course, in the context of the Erlang VM, these two snippets are equivalent; there is nothing preventing you from calling the in_module module from any other module.</p>
-
- <p style="text-align:right">
- <a class="read_more" href="https://ninenines.eu/articles/xerl-0.2-two-modules/">Read More</a>
- </p>
- </article>
-
<nav class="pagination" role="pagination">
diff --git a/articles/index.xml b/articles/index.xml
index 70389481..4eccd018 100644
--- a/articles/index.xml
+++ b/articles/index.xml
@@ -6,10 +6,75 @@
<description>Recent content in Articles-rsses on Nine Nines</description>
<generator>Hugo -- gohugo.io</generator>
<language>en-us</language>
- <lastBuildDate>Sun, 26 Mar 2017 00:00:00 +0100</lastBuildDate>
+ <lastBuildDate>Mon, 24 Jul 2017 18:00:00 +0100</lastBuildDate>
<atom:link href="https://ninenines.eu/articles/index.xml" rel="self" type="application/rss+xml" />
<item>
+ <title>Cowboy 2.0 release candidate 1</title>
+ <link>https://ninenines.eu/articles/cowboy-2.0.0-rc.1/</link>
+ <pubDate>Mon, 24 Jul 2017 18:00:00 +0100</pubDate>
+
+ <guid>https://ninenines.eu/articles/cowboy-2.0.0-rc.1/</guid>
+ <description>&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;Cowboy &lt;code&gt;2.0.0-rc.1&lt;/code&gt; has been released!&lt;/p&gt;&lt;/div&gt;
+&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;This is the new recommended version of Cowboy.
+Its API should not change before release. While
+you probably should not use it in production yet,
+many do successfully. Use at your own risk.&lt;/p&gt;&lt;/div&gt;
+&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;The plan is to have a new RC version every couple
+weeks until the summer ends or later if there are
+still blocking issues open. Only issues that can&amp;#8217;t
+be fixed without making breaking changes to the
+interface may block the release.&lt;/p&gt;&lt;/div&gt;
+&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;Numerous changes were made since Cowboy 1.0. The
+one most people care about is probably HTTP/2, but
+it&amp;#8217;s most likely not the only one worthwhile. The
+full list of changes (excluding types) can be found
+in the user guide chapter
+&lt;a href=&#34;https://ninenines.eu/docs/en/cowboy/2.0/guide/migrating_from_1.0/&#34;&gt;Migrating from Cowboy 1.0 to 2.0&lt;/a&gt;.&lt;/p&gt;&lt;/div&gt;
+&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;As this is not the full release just yet, please pay
+extra attention to details and report anything
+suspicious you find.&lt;/p&gt;&lt;/div&gt;
+&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;There are still some tests failing. Most of those are
+related to standards that are not being followed perfectly
+just yet. Some of those will probably not be fixed before
+Cowboy 2.0 is released. They are edge cases and should not
+prevent interoperability.&lt;/p&gt;&lt;/div&gt;
+&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;The manual received a lot of love. It now has one page per
+function with a detailed description, arguments list, return
+value, changelog and examples. It also links to the other
+relevant manual pages: &lt;a href=&#34;https://ninenines.eu/docs/en/cowboy/2.0/manual/&#34;&gt;https://ninenines.eu/docs/en/cowboy/2.0/manual/&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;
+&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;Cowboy is now tested and supported with Erlang/OTP 19.0 or above
+on Arch Linux, FreeBSD, OSX, Ubuntu and Windows 7. Contact me
+if you can provide permanent access to another platform for the
+purposes of testing.&lt;/p&gt;&lt;/div&gt;
+&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;Cowboy is now available from four locations:&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://git.ninenines.eu/cowboy.git&#34;&gt;https://git.ninenines.eu/cowboy.git&lt;/a&gt;
+&lt;/p&gt;
+&lt;/li&gt;
+&lt;li&gt;
+&lt;p&gt;
+&lt;a href=&#34;https://github.com/ninenines/cowboy.git&#34;&gt;https://github.com/ninenines/cowboy.git&lt;/a&gt;
+&lt;/p&gt;
+&lt;/li&gt;
+&lt;li&gt;
+&lt;p&gt;
+&lt;a href=&#34;https://bitbucket.org/ninenines/cowboy.git&#34;&gt;https://bitbucket.org/ninenines/cowboy.git&lt;/a&gt;
+&lt;/p&gt;
+&lt;/li&gt;
+&lt;li&gt;
+&lt;p&gt;
+&lt;a href=&#34;https://gitlab.com/ninenines/cowboy.git&#34;&gt;https://gitlab.com/ninenines/cowboy.git&lt;/a&gt;
+&lt;/p&gt;
+&lt;/li&gt;
+&lt;/ul&gt;&lt;/div&gt;
+&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;They are updated at the same time so there is no real difference.&lt;/p&gt;&lt;/div&gt;
+</description>
+ </item>
+
+ <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>
@@ -1569,102 +1634,5 @@ can help!&lt;/p&gt;&lt;/div&gt;
</description>
</item>
- <item>
- <title>Build Erlang releases with Erlang.mk and Relx</title>
- <link>https://ninenines.eu/articles/erlang.mk-and-relx/</link>
- <pubDate>Tue, 28 May 2013 00:00:00 +0100</pubDate>
-
- <guid>https://ninenines.eu/articles/erlang.mk-and-relx/</guid>
- <description>&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;Building OTP releases has always been a difficult task. Tools like
-Reltool or Rebar have made this simpler, but
-it&amp;#8217;s no panacea. This article will show you an alternative and
-hopefully much simpler solution.&lt;/p&gt;&lt;/div&gt;
-&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;There is two steps to building a release. First you need to build
-the various OTP applications you want to include in the release. Once
-done, you need to create the release itself, by including the Erlang
-runtime system alongside the applications, a boot script to start the
-node and all its applications, and some configuration files.&lt;/p&gt;&lt;/div&gt;
-&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;&lt;a href=&#34;https://github.com/extend/erlang.mk&#34;&gt;Erlang.mk&lt;/a&gt; solves
-the first step. It is an include file for GNU Make. Just
-including it in a Makefile is enough to allow building your project,
-fetching and building dependencies, building documentation, performing
-static analysis and more.&lt;/p&gt;&lt;/div&gt;
-&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;&lt;a href=&#34;https://github.com/erlware/relx&#34;&gt;Relx&lt;/a&gt; solves the second
-step. It is a release creation tool, wrapped into a single executable
-file. It doesn&amp;#8217;t require a configuration file. And if you do need one,
-it will be a pretty small one.&lt;/p&gt;&lt;/div&gt;
-&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;Let&amp;#8217;s take a look at the smallest Erlang.mk powered
-Makefile. There is only one thing required: defining the project
-name.&lt;/p&gt;&lt;/div&gt;
-&lt;div class=&#34;listingblock&#34;&gt;
-&lt;div class=&#34;content&#34;&gt;&lt;/div&gt;&lt;/div&gt;
-&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;Simply doing this allows you to build your application by typing
-&lt;code&gt;make&lt;/code&gt;, running tests using &lt;code&gt;make tests&lt;/code&gt;, and
-more. It will even compile your &lt;em&gt;.dtl&lt;/em&gt; files found in the
-&lt;em&gt;templates/&lt;/em&gt; directory if you are using ErlyDTL!&lt;/p&gt;&lt;/div&gt;
-&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;Let&amp;#8217;s now take a look at a simplified version of the Makefile for
-this website. I only removed a few targets that were off-topic.&lt;/p&gt;&lt;/div&gt;
-&lt;div class=&#34;listingblock&#34;&gt;
-&lt;div class=&#34;content&#34;&gt;&lt;/div&gt;&lt;/div&gt;
-&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;You can see here how to define dependencies. First you list all
-the dependency names, then you have one line per dependency, giving
-the repository URL and the commit number, tag or branch you want.&lt;/p&gt;&lt;/div&gt;
-&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;Then you can see two targets defined, with &lt;code&gt;release&lt;/code&gt;
-becoming the default target, because it was defined first. You can
-override the default target &lt;code&gt;all&lt;/code&gt;, which builds the
-application and its dependencies, this way.&lt;/p&gt;&lt;/div&gt;
-&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;And as you can see, the &lt;code&gt;release&lt;/code&gt; target uses
-Relx to build a release into the &lt;em&gt;rel/ninenines/&lt;/em&gt;
-directory. Let&amp;#8217;s take a look at the configuration file for this release.&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;release&lt;/span&gt;, {&lt;span style=&#34;color: #FF6600&#34;&gt;ninenines&lt;/span&gt;, &lt;span style=&#34;color: #FF0000&#34;&gt;&#34;1&#34;&lt;/span&gt;}, [&lt;span style=&#34;color: #FF6600&#34;&gt;ninenines&lt;/span&gt;]}&lt;span style=&#34;color: #990000&#34;&gt;.&lt;/span&gt;
-
-{&lt;span style=&#34;color: #FF6600&#34;&gt;extended_start_script&lt;/span&gt;, &lt;span style=&#34;color: #000080&#34;&gt;true&lt;/span&gt;}&lt;span style=&#34;color: #990000&#34;&gt;.&lt;/span&gt;
-{&lt;span style=&#34;color: #FF6600&#34;&gt;sys_config&lt;/span&gt;, &lt;span style=&#34;color: #FF0000&#34;&gt;&#34;rel/sys.config&#34;&lt;/span&gt;}&lt;span style=&#34;color: #990000&#34;&gt;.&lt;/span&gt;
-
-{&lt;span style=&#34;color: #FF6600&#34;&gt;overlay&lt;/span&gt;, [
- {&lt;span style=&#34;color: #FF6600&#34;&gt;mkdir&lt;/span&gt;, &lt;span style=&#34;color: #FF0000&#34;&gt;&#34;log&#34;&lt;/span&gt;},
- {&lt;span style=&#34;color: #FF6600&#34;&gt;copy&lt;/span&gt;, &lt;span style=&#34;color: #FF0000&#34;&gt;&#34;rel/vm.args&#34;&lt;/span&gt;,
- &lt;span style=&#34;color: #FF0000&#34;&gt;&#34;releases/\{\{release_name\}\}-\{\{release_version\}\}/vm.args&#34;&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 line defines a release named &lt;code&gt;ninenines&lt;/code&gt;, which
-has a version number &lt;code&gt;&#34;1&#34;&lt;/code&gt; and includes one application, also
-named &lt;code&gt;ninenines&lt;/code&gt;, although it doesn&amp;#8217;t have to.&lt;/p&gt;&lt;/div&gt;
-&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;We then use the &lt;code&gt;extended_start_script&lt;/code&gt; option to tell
-Relx that we would like to have a start script that allows
-us to not only start the release, but do so with the node in the
-background, or also to allow us to connect to a running node, and so on.
-This start script has the same features as the one tools like
-Rebar generates.&lt;/p&gt;&lt;/div&gt;
-&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;The rest of the file just makes sure our configuration files are
-where we expect them. Relx will automatically take care
-of your &lt;em&gt;sys.config&lt;/em&gt; file as long as you tell it where to
-find it. The &lt;em&gt;vm.args&lt;/em&gt; file used by the extended start script
-needs to be handled more explicitly by using an overlay however.&lt;/p&gt;&lt;/div&gt;
-&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;How does Relx find what applications to include?
-By looking at the application dependencies in the &lt;em&gt;.app&lt;/em&gt;
-file of each OTP application. Make sure you put all dependencies in
-there, &lt;em&gt;including&lt;/em&gt; library applications, and Relx
-will find everything for you.&lt;/p&gt;&lt;/div&gt;
-&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;For example, this release includes the following applications.
-Only what&amp;#8217;s strictly required.&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;compiler-4.9.1 crypto-2.3 kernel-2.16.1 ranch-0.8.3 syntax_tools-1.6.11
-cowboy-0.8.5 erlydtl-0.7.0 ninenines-0.2.0 stdlib-1.19.1&lt;/code&gt;&lt;/pre&gt;
-&lt;/div&gt;&lt;/div&gt;
-&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;The &lt;em&gt;sys.config&lt;/em&gt; file is standard and
-&lt;a href=&#34;http://www.erlang.org/doc/man/config.html&#34;&gt;well documented&lt;/a&gt;.
-The &lt;em&gt;vm.args&lt;/em&gt; file is just an optionally multiline file
-containing all the flags to pass to the Erlang VM, for example
-&lt;code&gt;-name [email protected] -heart&lt;/code&gt;.&lt;/p&gt;&lt;/div&gt;
-&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;Building OTP releases has always been a difficult task. Until now.&lt;/p&gt;&lt;/div&gt;
-</description>
- </item>
-
</channel>
</rss> \ No newline at end of file
diff --git a/articles/january-2014-status/index.html b/articles/january-2014-status/index.html
index 70427764..2661b80e 100644
--- a/articles/january-2014-status/index.html
+++ b/articles/january-2014-status/index.html
@@ -222,6 +222,8 @@ the sponsoring idea, anything really! Thanks.</p></div>
<h3>More articles</h3>
<ul id="articles-nav" class="extra_margin">
+ <li><a href="https://ninenines.eu/articles/cowboy-2.0.0-rc.1/">Cowboy 2.0 release candidate 1</a></li>
+
<li><a href="https://ninenines.eu/articles/the-elephant-in-the-room/">The elephant in the room</a></li>
<li><a href="https://ninenines.eu/articles/dont-let-it-crash/">Don&#39;t let it crash</a></li>
diff --git a/articles/ml-archives/index.html b/articles/ml-archives/index.html
index b426fb4c..62071a6b 100644
--- a/articles/ml-archives/index.html
+++ b/articles/ml-archives/index.html
@@ -92,6 +92,8 @@ underlying problem in the project or its documentation.</p></div>
<h3>More articles</h3>
<ul id="articles-nav" class="extra_margin">
+ <li><a href="https://ninenines.eu/articles/cowboy-2.0.0-rc.1/">Cowboy 2.0 release candidate 1</a></li>
+
<li><a href="https://ninenines.eu/articles/the-elephant-in-the-room/">The elephant in the room</a></li>
<li><a href="https://ninenines.eu/articles/dont-let-it-crash/">Don&#39;t let it crash</a></li>
diff --git a/articles/on-open-source/index.html b/articles/on-open-source/index.html
index fd222342..b954b3b7 100644
--- a/articles/on-open-source/index.html
+++ b/articles/on-open-source/index.html
@@ -199,6 +199,8 @@ of your company&#8217;s money.</p></div>
<h3>More articles</h3>
<ul id="articles-nav" class="extra_margin">
+ <li><a href="https://ninenines.eu/articles/cowboy-2.0.0-rc.1/">Cowboy 2.0 release candidate 1</a></li>
+
<li><a href="https://ninenines.eu/articles/the-elephant-in-the-room/">The elephant in the room</a></li>
<li><a href="https://ninenines.eu/articles/dont-let-it-crash/">Don&#39;t let it crash</a></li>
diff --git a/articles/page/2/index.html b/articles/page/2/index.html
index 7cc3ae62..7b4cd275 100644
--- a/articles/page/2/index.html
+++ b/articles/page/2/index.html
@@ -72,6 +72,26 @@
<article class="blog_item">
<header>
+ <h2><a href="https://ninenines.eu/articles/xerl-0.2-two-modules/">Xerl: two modules</a></h2>
+ <p class="date">
+ <span class="day">03</span>
+ <span class="month">Feb</span>
+ </p>
+ </header>
+
+ <p>Everything is an expression.
+ This sentence carries profound meaning. We will invoke it many times over the course of these articles.
+ If everything is an expression, then the language shouldn&#8217;t have any problem with me defining two modules in the same source file.
+ mod first_module begin end mod second_module begin end Likewise, it shouldn&#8217;t have any problem with me defining a module inside another module.
+ mod out_module begin mod in_module begin end end Of course, in the context of the Erlang VM, these two snippets are equivalent; there is nothing preventing you from calling the in_module module from any other module.</p>
+
+ <p style="text-align:right">
+ <a class="read_more" href="https://ninenines.eu/articles/xerl-0.2-two-modules/">Read More</a>
+ </p>
+ </article>
+
+ <article class="blog_item">
+ <header>
<h2><a href="https://ninenines.eu/articles/xerl-0.1-empty-modules/">Xerl: empty modules</a></h2>
<p class="date">
<span class="day">30</span>
diff --git a/articles/ranch-1.3/index.html b/articles/ranch-1.3/index.html
index d5ce32f9..544d7bce 100644
--- a/articles/ranch-1.3/index.html
+++ b/articles/ranch-1.3/index.html
@@ -164,6 +164,8 @@ that need fixing sooner rather than later.</p></div>
<h3>More articles</h3>
<ul id="articles-nav" class="extra_margin">
+ <li><a href="https://ninenines.eu/articles/cowboy-2.0.0-rc.1/">Cowboy 2.0 release candidate 1</a></li>
+
<li><a href="https://ninenines.eu/articles/the-elephant-in-the-room/">The elephant in the room</a></li>
<li><a href="https://ninenines.eu/articles/dont-let-it-crash/">Don&#39;t let it crash</a></li>
diff --git a/articles/ranch-ftp/index.html b/articles/ranch-ftp/index.html
index c8f7795c..5d26fd61 100644
--- a/articles/ranch-ftp/index.html
+++ b/articles/ranch-ftp/index.html
@@ -292,6 +292,8 @@ binary protocol implementations in just a few lines of code.</p></div>
<h3>More articles</h3>
<ul id="articles-nav" class="extra_margin">
+ <li><a href="https://ninenines.eu/articles/cowboy-2.0.0-rc.1/">Cowboy 2.0 release candidate 1</a></li>
+
<li><a href="https://ninenines.eu/articles/the-elephant-in-the-room/">The elephant in the room</a></li>
<li><a href="https://ninenines.eu/articles/dont-let-it-crash/">Don&#39;t let it crash</a></li>
diff --git a/articles/the-elephant-in-the-room/index.html b/articles/the-elephant-in-the-room/index.html
index cc899a47..ed38c6b5 100644
--- a/articles/the-elephant-in-the-room/index.html
+++ b/articles/the-elephant-in-the-room/index.html
@@ -215,6 +215,8 @@ the flaws or the weirdness before they see them.</p></div>
<h3>More articles</h3>
<ul id="articles-nav" class="extra_margin">
+ <li><a href="https://ninenines.eu/articles/cowboy-2.0.0-rc.1/">Cowboy 2.0 release candidate 1</a></li>
+
<li><a href="https://ninenines.eu/articles/the-elephant-in-the-room/">The elephant in the room</a></li>
<li><a href="https://ninenines.eu/articles/dont-let-it-crash/">Don&#39;t let it crash</a></li>
diff --git a/articles/the-story-so-far/index.html b/articles/the-story-so-far/index.html
index aea50adc..1809e5ff 100644
--- a/articles/the-story-so-far/index.html
+++ b/articles/the-story-so-far/index.html
@@ -306,6 +306,8 @@ project and make sure it doesn&#8217;t happen again.</p></div>
<h3>More articles</h3>
<ul id="articles-nav" class="extra_margin">
+ <li><a href="https://ninenines.eu/articles/cowboy-2.0.0-rc.1/">Cowboy 2.0 release candidate 1</a></li>
+
<li><a href="https://ninenines.eu/articles/the-elephant-in-the-room/">The elephant in the room</a></li>
<li><a href="https://ninenines.eu/articles/dont-let-it-crash/">Don&#39;t let it crash</a></li>
diff --git a/articles/tictactoe/index.html b/articles/tictactoe/index.html
index 4268bcb4..6f2baae2 100644
--- a/articles/tictactoe/index.html
+++ b/articles/tictactoe/index.html
@@ -165,6 +165,8 @@ of writing algorithms to do things.</p></div>
<h3>More articles</h3>
<ul id="articles-nav" class="extra_margin">
+ <li><a href="https://ninenines.eu/articles/cowboy-2.0.0-rc.1/">Cowboy 2.0 release candidate 1</a></li>
+
<li><a href="https://ninenines.eu/articles/the-elephant-in-the-room/">The elephant in the room</a></li>
<li><a href="https://ninenines.eu/articles/dont-let-it-crash/">Don&#39;t let it crash</a></li>
diff --git a/articles/website-update/index.html b/articles/website-update/index.html
index 5f4e3e83..491f19c0 100644
--- a/articles/website-update/index.html
+++ b/articles/website-update/index.html
@@ -139,6 +139,8 @@ upgrading JS libraries.</p></div>
<h3>More articles</h3>
<ul id="articles-nav" class="extra_margin">
+ <li><a href="https://ninenines.eu/articles/cowboy-2.0.0-rc.1/">Cowboy 2.0 release candidate 1</a></li>
+
<li><a href="https://ninenines.eu/articles/the-elephant-in-the-room/">The elephant in the room</a></li>
<li><a href="https://ninenines.eu/articles/dont-let-it-crash/">Don&#39;t let it crash</a></li>
diff --git a/articles/xerl-0.1-empty-modules/index.html b/articles/xerl-0.1-empty-modules/index.html
index 84061191..bed9785d 100644
--- a/articles/xerl-0.1-empty-modules/index.html
+++ b/articles/xerl-0.1-empty-modules/index.html
@@ -220,6 +220,8 @@ the next few articles.</p></div>
<h3>More articles</h3>
<ul id="articles-nav" class="extra_margin">
+ <li><a href="https://ninenines.eu/articles/cowboy-2.0.0-rc.1/">Cowboy 2.0 release candidate 1</a></li>
+
<li><a href="https://ninenines.eu/articles/the-elephant-in-the-room/">The elephant in the room</a></li>
<li><a href="https://ninenines.eu/articles/dont-let-it-crash/">Don&#39;t let it crash</a></li>
diff --git a/articles/xerl-0.2-two-modules/index.html b/articles/xerl-0.2-two-modules/index.html
index 3c58b61b..05dc90c6 100644
--- a/articles/xerl-0.2-two-modules/index.html
+++ b/articles/xerl-0.2-two-modules/index.html
@@ -225,6 +225,8 @@ though, so let&#8217;s get back to it after we add more.</p></div>
<h3>More articles</h3>
<ul id="articles-nav" class="extra_margin">
+ <li><a href="https://ninenines.eu/articles/cowboy-2.0.0-rc.1/">Cowboy 2.0 release candidate 1</a></li>
+
<li><a href="https://ninenines.eu/articles/the-elephant-in-the-room/">The elephant in the room</a></li>
<li><a href="https://ninenines.eu/articles/dont-let-it-crash/">Don&#39;t let it crash</a></li>
diff --git a/articles/xerl-0.3-atomic-expressions/index.html b/articles/xerl-0.3-atomic-expressions/index.html
index 9ce6a53d..0cedb143 100644
--- a/articles/xerl-0.3-atomic-expressions/index.html
+++ b/articles/xerl-0.3-atomic-expressions/index.html
@@ -229,6 +229,8 @@ do that.</p></div>
<h3>More articles</h3>
<ul id="articles-nav" class="extra_margin">
+ <li><a href="https://ninenines.eu/articles/cowboy-2.0.0-rc.1/">Cowboy 2.0 release candidate 1</a></li>
+
<li><a href="https://ninenines.eu/articles/the-elephant-in-the-room/">The elephant in the room</a></li>
<li><a href="https://ninenines.eu/articles/dont-let-it-crash/">Don&#39;t let it crash</a></li>
diff --git a/articles/xerl-0.4-expression-separator/index.html b/articles/xerl-0.4-expression-separator/index.html
index 02f1dbdc..ed757594 100644
--- a/articles/xerl-0.4-expression-separator/index.html
+++ b/articles/xerl-0.4-expression-separator/index.html
@@ -134,6 +134,8 @@ expressions so I thought it was a good idea to anticipate.</p></div>
<h3>More articles</h3>
<ul id="articles-nav" class="extra_margin">
+ <li><a href="https://ninenines.eu/articles/cowboy-2.0.0-rc.1/">Cowboy 2.0 release candidate 1</a></li>
+
<li><a href="https://ninenines.eu/articles/the-elephant-in-the-room/">The elephant in the room</a></li>
<li><a href="https://ninenines.eu/articles/dont-let-it-crash/">Don&#39;t let it crash</a></li>
diff --git a/articles/xerl-0.5-intermediate-module/index.html b/articles/xerl-0.5-intermediate-module/index.html
index 4330eea5..4cf017d8 100644
--- a/articles/xerl-0.5-intermediate-module/index.html
+++ b/articles/xerl-0.5-intermediate-module/index.html
@@ -212,6 +212,8 @@ http://www.gnu.org/software/src-highlite -->
<h3>More articles</h3>
<ul id="articles-nav" class="extra_margin">
+ <li><a href="https://ninenines.eu/articles/cowboy-2.0.0-rc.1/">Cowboy 2.0 release candidate 1</a></li>
+
<li><a href="https://ninenines.eu/articles/the-elephant-in-the-room/">The elephant in the room</a></li>
<li><a href="https://ninenines.eu/articles/dont-let-it-crash/">Don&#39;t let it crash</a></li>
diff --git a/donate/index.html b/donate/index.html
index 1d3b816a..388fa049 100644
--- a/donate/index.html
+++ b/donate/index.html
@@ -107,6 +107,8 @@ and Erlang.mk is fantastic:</p></div>
+
+
<div class="sect2">
<h3 id="_like_my_work_donate">Like my work? Donate!</h3>
<div class="paragraph"><p>Donate to Loïc Hoguin because his work on Cowboy
diff --git a/index.html b/index.html
index 3833e88d..321476f8 100644
--- a/index.html
+++ b/index.html
@@ -266,6 +266,8 @@
+
+
<div class="paragraph"><p>Feeling generous? Love reading?<br />
<a href="https://salt.bountysource.com/teams/ninenines">Crowdfund my salary</a>
or buy <a href="/articles/erlanger-playbook">The Erlanger Playbook</a></p></div>
diff --git a/index.xml b/index.xml
index 12948726..d40f9451 100644
--- a/index.xml
+++ b/index.xml
@@ -6,10 +6,75 @@
<description>Recent content on Nine Nines</description>
<generator>Hugo -- gohugo.io</generator>
<language>en-us</language>
- <lastBuildDate>Sun, 26 Mar 2017 00:00:00 +0100</lastBuildDate>
+ <lastBuildDate>Mon, 24 Jul 2017 18:00:00 +0100</lastBuildDate>
<atom:link href="https://ninenines.eu/index.xml" rel="self" type="application/rss+xml" />
<item>
+ <title>Cowboy 2.0 release candidate 1</title>
+ <link>https://ninenines.eu/articles/cowboy-2.0.0-rc.1/</link>
+ <pubDate>Mon, 24 Jul 2017 18:00:00 +0100</pubDate>
+
+ <guid>https://ninenines.eu/articles/cowboy-2.0.0-rc.1/</guid>
+ <description>&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;Cowboy &lt;code&gt;2.0.0-rc.1&lt;/code&gt; has been released!&lt;/p&gt;&lt;/div&gt;
+&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;This is the new recommended version of Cowboy.
+Its API should not change before release. While
+you probably should not use it in production yet,
+many do successfully. Use at your own risk.&lt;/p&gt;&lt;/div&gt;
+&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;The plan is to have a new RC version every couple
+weeks until the summer ends or later if there are
+still blocking issues open. Only issues that can&amp;#8217;t
+be fixed without making breaking changes to the
+interface may block the release.&lt;/p&gt;&lt;/div&gt;
+&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;Numerous changes were made since Cowboy 1.0. The
+one most people care about is probably HTTP/2, but
+it&amp;#8217;s most likely not the only one worthwhile. The
+full list of changes (excluding types) can be found
+in the user guide chapter
+&lt;a href=&#34;https://ninenines.eu/docs/en/cowboy/2.0/guide/migrating_from_1.0/&#34;&gt;Migrating from Cowboy 1.0 to 2.0&lt;/a&gt;.&lt;/p&gt;&lt;/div&gt;
+&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;As this is not the full release just yet, please pay
+extra attention to details and report anything
+suspicious you find.&lt;/p&gt;&lt;/div&gt;
+&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;There are still some tests failing. Most of those are
+related to standards that are not being followed perfectly
+just yet. Some of those will probably not be fixed before
+Cowboy 2.0 is released. They are edge cases and should not
+prevent interoperability.&lt;/p&gt;&lt;/div&gt;
+&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;The manual received a lot of love. It now has one page per
+function with a detailed description, arguments list, return
+value, changelog and examples. It also links to the other
+relevant manual pages: &lt;a href=&#34;https://ninenines.eu/docs/en/cowboy/2.0/manual/&#34;&gt;https://ninenines.eu/docs/en/cowboy/2.0/manual/&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;
+&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;Cowboy is now tested and supported with Erlang/OTP 19.0 or above
+on Arch Linux, FreeBSD, OSX, Ubuntu and Windows 7. Contact me
+if you can provide permanent access to another platform for the
+purposes of testing.&lt;/p&gt;&lt;/div&gt;
+&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;Cowboy is now available from four locations:&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://git.ninenines.eu/cowboy.git&#34;&gt;https://git.ninenines.eu/cowboy.git&lt;/a&gt;
+&lt;/p&gt;
+&lt;/li&gt;
+&lt;li&gt;
+&lt;p&gt;
+&lt;a href=&#34;https://github.com/ninenines/cowboy.git&#34;&gt;https://github.com/ninenines/cowboy.git&lt;/a&gt;
+&lt;/p&gt;
+&lt;/li&gt;
+&lt;li&gt;
+&lt;p&gt;
+&lt;a href=&#34;https://bitbucket.org/ninenines/cowboy.git&#34;&gt;https://bitbucket.org/ninenines/cowboy.git&lt;/a&gt;
+&lt;/p&gt;
+&lt;/li&gt;
+&lt;li&gt;
+&lt;p&gt;
+&lt;a href=&#34;https://gitlab.com/ninenines/cowboy.git&#34;&gt;https://gitlab.com/ninenines/cowboy.git&lt;/a&gt;
+&lt;/p&gt;
+&lt;/li&gt;
+&lt;/ul&gt;&lt;/div&gt;
+&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;They are updated at the same time so there is no real difference.&lt;/p&gt;&lt;/div&gt;
+</description>
+ </item>
+
+ <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>
@@ -1052,131 +1117,5 @@ http://www.gnu.org/software/src-highlite --&gt;
</description>
</item>
- <item>
- <title>On open source</title>
- <link>https://ninenines.eu/articles/on-open-source/</link>
- <pubDate>Fri, 05 Sep 2014 00:00:00 +0100</pubDate>
-
- <guid>https://ninenines.eu/articles/on-open-source/</guid>
- <description>&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;Last week I read a great article
-&lt;a href=&#34;http://videlalvaro.github.io/2014/08/on-contributing-to-opensource.html&#34;&gt;on
-contributing to open source&lt;/a&gt; by Alvaro Videla. He makes
-many great points and I am in agreement with most of it.
-This made me want to properly explain my point of view with
-regard to open source and contributions. Unlike most open
-source evangelism articles I will not talk about ideals or
-any of that crap, but rather my personal feelings and
-experience.&lt;/p&gt;&lt;/div&gt;
-&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;I have been doing open source work for quite some time.
-My very first open source project was a graphics driver
-for (the very early version of) the PCSX2 emulator. That
-was more than ten years ago, and there
-&lt;a href=&#34;http://ngemu.com/threads/gstaris-0-6.30469/&#34;&gt;isn&amp;#8217;t
-much left to look at today&lt;/a&gt;. This was followed by a
-&lt;a href=&#34;https://github.com/extend/wee&#34;&gt;PHP framework&lt;/a&gt;
-(started long before Zend Framework was even a thing) and
-a few other small projects. None of them really took off.
-It&amp;#8217;s alright, that&amp;#8217;s pretty much the fate of most open
-source projects. You spend a lot of work and sweat and
-get very little in return from others.&lt;/p&gt;&lt;/div&gt;
-&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;This sounds harsh but this is the reality of all open
-source projects. If you are thinking of building a project
-and releasing it as open source, you should be prepared
-for that. This is how most of your projects will feel like.
-Don&amp;#8217;t release a project as open source thinking everyone
-will pat you on the back and cheer, this won&amp;#8217;t happen. In
-fact if your project is a too small improvement over existing
-software, what many people will do is say you have NIH
-syndrome, regardless of the improvement you bring. So you
-need not to rely on other people in order to get your
-enjoyment out of building open source software.&lt;/p&gt;&lt;/div&gt;
-&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;In my case I get enjoyment from thinking about problems
-that need solving. Often times the problems are already
-solved, but nevermind that, I still think about them and
-sometimes come up with something I feel is better and then
-write code for it. Writing code is also fun, but not as
-fun as using my brain to imagine solutions.&lt;/p&gt;&lt;/div&gt;
-&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;You don&amp;#8217;t need thousands of users to do that. So are
-users worthless to me then? No, of course not. In fact
-they are an important component: they bring me problems
-that need solving. So users are very important to me.
-But that&amp;#8217;s not the only reason.&lt;/p&gt;&lt;/div&gt;
-&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;I got lucky that the Cowboy project became popular.
-And seeing it be this popular, and some of my other projects
-also do quite well, made me believe I could perhaps work
-full time on open source. If I can work full time then
-I can produce better software. What I had one hour to
-work on before I can now spend a day on, and experiment
-until I am satisfied. This is very useful because that
-means I can get it almost right from the beginning, and
-avoid the million API breaking changes that occured
-before Cowboy 1.0 was released.&lt;/p&gt;&lt;/div&gt;
-&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;To be able to work full time on open source however,
-I need money. This is a largely unspoken topic of open
-source work. The work is never free. You can download the
-product for free, but someone has to pay for the work
-itself. Life is unfortunately not free.&lt;/p&gt;&lt;/div&gt;
-&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;Large projects and some lucky people have their work
-sponsored by their employers. Everyone else has to deal
-with it differently. In my case I was sponsored for a
-while by the &lt;a href=&#34;http://leo-project.net/leofs/&#34;&gt;LeoFS&lt;/a&gt;
-project, but that ended. I also had the Farwest fundraiser,
-which was a success, although the project stalled after that.
-(Fear not, as Farwest will make a comeback as a conglomerate
-of Web development projects in the future.) After that I set
-up the &lt;a href=&#34;http://ninenines.eu/support/&#34;&gt;sponsoring scheme&lt;/a&gt;,
-which I can proudly say today brings in enough money to
-cover my food and shelter. Great!&lt;/p&gt;&lt;/div&gt;
-&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;This is a start, but it&amp;#8217;s of course not enough. Life
-is a little more than food and shelter, and so I am still
-looking for sponsors. This is not a very glorious experience,
-as I am essentially looking for scraps that companies can
-throw away. Still, if a handful more companies were doing
-that, not only would I be able to live comfortably, but I
-would also be able to stop worrying about the future as I
-could put money on the side for when it gets rough.&lt;/p&gt;&lt;/div&gt;
-&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;A few companies giving me some scrap money so I could
-live and work independently is by far the most important
-thing anyone can do to help my projects, including Cowboy.
-Yes, they&amp;#8217;re even more important than code contributions,
-bug reports and feedback. Because this money gives me the
-time I need to handle the code contributions, bug reports
-and feedback.&lt;/p&gt;&lt;/div&gt;
-&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;If Cowboy or another project is a large part of your
-product or infrastructure, then the best thing you can do
-is become a sponsor. The second best is opening tickets
-and/or providing feedback. The third best is providing
-good code contributions.&lt;/p&gt;&lt;/div&gt;
-&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;I will not expand on the feedback part. Feedback is
-very important, and even just a high five or a retweet
-is already good feedback. It&amp;#8217;s not very complicated.&lt;/p&gt;&lt;/div&gt;
-&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;I want to expand a little on code contributions
-however. Not long ago I ran across the term &#34;patch bomb&#34;
-which means dropping patches and expecting the project
-maintainers to merge them and maintain them. I receive
-a lot of patches, and often have to refuse them. Causes
-for refusal vary. Some patches only benefit the people
-who submitted them (or a very small number of people).
-Some patches are not refined enough to be included.
-Others are out of scope of the project. These are some
-of the reasons why I refuse patches. Having limited
-time and resources, I have to focus my efforts on the
-code used by the larger number of users. I have to
-prioritize patches from submitters who are reactive
-and address the issues pointed out. And I have to plainly
-refuse other patches.&lt;/p&gt;&lt;/div&gt;
-&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;I believe this wraps up my thoughts on open source.
-Overall I had a great experience, the Erlang community
-being nice and understanding of the issues at hand in
-general. And if the money problem could be solved soon,
-then I would be one of the luckiest and happiest open
-source developer on Earth.&lt;/p&gt;&lt;/div&gt;
-&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;Think about it the next time you see a donation button
-or a request for funds or sponsoring. You can considerably
-improve an open source developer&amp;#8217;s life with very little
-of your company&amp;#8217;s money.&lt;/p&gt;&lt;/div&gt;
-</description>
- </item>
-
</channel>
</rss> \ No newline at end of file
diff --git a/services/index.html b/services/index.html
index d42398ce..73a1bc76 100644
--- a/services/index.html
+++ b/services/index.html
@@ -192,6 +192,8 @@ the same restrictions apply.</p></div>
+
+
<div class="sect2">
<h3 id="_like_my_work_donate">Like my work? Donate!</h3>
<div class="paragraph"><p>Donate to Loïc Hoguin because his work on Cowboy
diff --git a/sitemap.xml b/sitemap.xml
index 58ebeba6..35769605 100644
--- a/sitemap.xml
+++ b/sitemap.xml
@@ -3,7 +3,12 @@
<url>
<loc>https://ninenines.eu/</loc>
- <lastmod>2017-03-26T00:00:00+01:00</lastmod>
+ <lastmod>2017-07-24T18:00:00+01:00</lastmod>
+ </url>
+
+ <url>
+ <loc>https://ninenines.eu/articles/cowboy-2.0.0-rc.1/</loc>
+ <lastmod>2017-07-24T18:00:00+01:00</lastmod>
</url>
<url>