summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--_build/content/articles/cowboy-2.0.0-pre.4.asciidoc90
-rw-r--r--_build/content/donate.asciidoc4
-rw-r--r--_build/data/projects/cowboy.toml4
-rw-r--r--articles/cowboy-2.0.0-pre.4/index.html277
-rw-r--r--articles/cowboy2-qs/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.html44
-rw-r--r--articles/index.xml264
-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.html137
-rw-r--r--articles/ranch-1.3/index.html2
-rw-r--r--articles/ranch-ftp/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--docs/en/cowboy/2.0/guide/architecture/index.html4
-rw-r--r--docs/en/cowboy/2.0/guide/broken_clients/index.html4
-rw-r--r--docs/en/cowboy/2.0/guide/constraints/index.html4
-rw-r--r--docs/en/cowboy/2.0/guide/cookies/index.html4
-rw-r--r--docs/en/cowboy/2.0/guide/erlang_web/index.html4
-rw-r--r--docs/en/cowboy/2.0/guide/flow_diagram/index.html4
-rw-r--r--docs/en/cowboy/2.0/guide/getting_started/index.html4
-rw-r--r--docs/en/cowboy/2.0/guide/handlers/index.html4
-rw-r--r--docs/en/cowboy/2.0/guide/hooks/index.html4
-rw-r--r--docs/en/cowboy/2.0/guide/index.html4
-rw-r--r--docs/en/cowboy/2.0/guide/introduction/index.html4
-rw-r--r--docs/en/cowboy/2.0/guide/listeners/index.html4
-rw-r--r--docs/en/cowboy/2.0/guide/loop_handlers/index.html4
-rw-r--r--docs/en/cowboy/2.0/guide/middlewares/index.html4
-rw-r--r--docs/en/cowboy/2.0/guide/modern_web/index.html4
-rw-r--r--docs/en/cowboy/2.0/guide/multipart/index.html4
-rw-r--r--docs/en/cowboy/2.0/guide/overview/index.html4
-rw-r--r--docs/en/cowboy/2.0/guide/req/index.html4
-rw-r--r--docs/en/cowboy/2.0/guide/req_body/index.html4
-rw-r--r--docs/en/cowboy/2.0/guide/resource_design/index.html4
-rw-r--r--docs/en/cowboy/2.0/guide/resp/index.html4
-rw-r--r--docs/en/cowboy/2.0/guide/rest_flowcharts/index.html4
-rw-r--r--docs/en/cowboy/2.0/guide/rest_handlers/index.html4
-rw-r--r--docs/en/cowboy/2.0/guide/rest_principles/index.html4
-rw-r--r--docs/en/cowboy/2.0/guide/routing/index.html4
-rw-r--r--docs/en/cowboy/2.0/guide/static_files/index.html4
-rw-r--r--docs/en/cowboy/2.0/guide/streams/index.html4
-rw-r--r--docs/en/cowboy/2.0/guide/sub_protocols/index.html4
-rw-r--r--docs/en/cowboy/2.0/guide/ws_handlers/index.html4
-rw-r--r--docs/en/cowboy/2.0/guide/ws_protocol/index.html4
-rw-r--r--docs/en/cowboy/2.0/manual/cowboy.set_env/index.html4
-rw-r--r--docs/en/cowboy/2.0/manual/cowboy.start_clear/index.html4
-rw-r--r--docs/en/cowboy/2.0/manual/cowboy.start_tls/index.html4
-rw-r--r--docs/en/cowboy/2.0/manual/cowboy.stop_listener/index.html4
-rw-r--r--docs/en/cowboy/2.0/manual/cowboy/index.html4
-rw-r--r--docs/en/cowboy/2.0/manual/cowboy_app/index.html4
-rw-r--r--docs/en/cowboy/2.0/manual/cowboy_handler.terminate/index.html4
-rw-r--r--docs/en/cowboy/2.0/manual/cowboy_handler/index.html4
-rw-r--r--docs/en/cowboy/2.0/manual/cowboy_http/index.html4
-rw-r--r--docs/en/cowboy/2.0/manual/cowboy_http2/index.html4
-rw-r--r--docs/en/cowboy/2.0/manual/cowboy_loop/index.html4
-rw-r--r--docs/en/cowboy/2.0/manual/cowboy_middleware/index.html4
-rw-r--r--docs/en/cowboy/2.0/manual/cowboy_req.binding/index.html4
-rw-r--r--docs/en/cowboy/2.0/manual/cowboy_req.bindings/index.html4
-rw-r--r--docs/en/cowboy/2.0/manual/cowboy_req.body_length/index.html4
-rw-r--r--docs/en/cowboy/2.0/manual/cowboy_req.delete_resp_header/index.html4
-rw-r--r--docs/en/cowboy/2.0/manual/cowboy_req.has_body/index.html4
-rw-r--r--docs/en/cowboy/2.0/manual/cowboy_req.has_resp_body/index.html4
-rw-r--r--docs/en/cowboy/2.0/manual/cowboy_req.has_resp_header/index.html4
-rw-r--r--docs/en/cowboy/2.0/manual/cowboy_req.header/index.html4
-rw-r--r--docs/en/cowboy/2.0/manual/cowboy_req.headers/index.html4
-rw-r--r--docs/en/cowboy/2.0/manual/cowboy_req.host/index.html4
-rw-r--r--docs/en/cowboy/2.0/manual/cowboy_req.host_info/index.html4
-rw-r--r--docs/en/cowboy/2.0/manual/cowboy_req.match_cookies/index.html4
-rw-r--r--docs/en/cowboy/2.0/manual/cowboy_req.match_qs/index.html4
-rw-r--r--docs/en/cowboy/2.0/manual/cowboy_req.method/index.html4
-rw-r--r--docs/en/cowboy/2.0/manual/cowboy_req.parse_cookies/index.html4
-rw-r--r--docs/en/cowboy/2.0/manual/cowboy_req.parse_header/index.html4
-rw-r--r--docs/en/cowboy/2.0/manual/cowboy_req.parse_qs/index.html4
-rw-r--r--docs/en/cowboy/2.0/manual/cowboy_req.path/index.html4
-rw-r--r--docs/en/cowboy/2.0/manual/cowboy_req.path_info/index.html4
-rw-r--r--docs/en/cowboy/2.0/manual/cowboy_req.peer/index.html4
-rw-r--r--docs/en/cowboy/2.0/manual/cowboy_req.port/index.html4
-rw-r--r--docs/en/cowboy/2.0/manual/cowboy_req.push/index.html4
-rw-r--r--docs/en/cowboy/2.0/manual/cowboy_req.qs/index.html4
-rw-r--r--docs/en/cowboy/2.0/manual/cowboy_req.read_body/index.html4
-rw-r--r--docs/en/cowboy/2.0/manual/cowboy_req.read_part/index.html4
-rw-r--r--docs/en/cowboy/2.0/manual/cowboy_req.read_part_body/index.html4
-rw-r--r--docs/en/cowboy/2.0/manual/cowboy_req.read_urlencoded_body/index.html4
-rw-r--r--docs/en/cowboy/2.0/manual/cowboy_req.reply/index.html4
-rw-r--r--docs/en/cowboy/2.0/manual/cowboy_req.scheme/index.html4
-rw-r--r--docs/en/cowboy/2.0/manual/cowboy_req.set_resp_body/index.html4
-rw-r--r--docs/en/cowboy/2.0/manual/cowboy_req.set_resp_cookie/index.html4
-rw-r--r--docs/en/cowboy/2.0/manual/cowboy_req.set_resp_header/index.html4
-rw-r--r--docs/en/cowboy/2.0/manual/cowboy_req.stream_body/index.html4
-rw-r--r--docs/en/cowboy/2.0/manual/cowboy_req.stream_reply/index.html4
-rw-r--r--docs/en/cowboy/2.0/manual/cowboy_req.uri/index.html4
-rw-r--r--docs/en/cowboy/2.0/manual/cowboy_req.version/index.html4
-rw-r--r--docs/en/cowboy/2.0/manual/cowboy_req/index.html4
-rw-r--r--docs/en/cowboy/2.0/manual/cowboy_rest/index.html4
-rw-r--r--docs/en/cowboy/2.0/manual/cowboy_router.compile/index.html4
-rw-r--r--docs/en/cowboy/2.0/manual/cowboy_router/index.html4
-rw-r--r--docs/en/cowboy/2.0/manual/cowboy_static/index.html4
-rw-r--r--docs/en/cowboy/2.0/manual/cowboy_sub_protocol/index.html4
-rw-r--r--docs/en/cowboy/2.0/manual/cowboy_websocket/index.html4
-rw-r--r--docs/en/cowboy/2.0/manual/http_status_codes/index.html4
-rw-r--r--docs/en/cowboy/2.0/manual/index.html4
-rw-r--r--docs/index.html8
-rw-r--r--donate/index.html10
-rw-r--r--index.html6
-rw-r--r--index.xml274
-rw-r--r--services/index.html6
-rw-r--r--sitemap.xml7
120 files changed, 1014 insertions, 505 deletions
diff --git a/_build/content/articles/cowboy-2.0.0-pre.4.asciidoc b/_build/content/articles/cowboy-2.0.0-pre.4.asciidoc
new file mode 100644
index 00000000..d3584926
--- /dev/null
+++ b/_build/content/articles/cowboy-2.0.0-pre.4.asciidoc
@@ -0,0 +1,90 @@
++++
+date = "2017-01-03T00:00:00+01:00"
+title = "Cowboy 2.0 pre-release 4"
+
++++
+
+Cowboy `2.0.0-pre.4` has been released!
+
+This is the new recommended version of Cowboy.
+While I would not recommend putting it in production
+just yet, I do recommend you start writing new
+applications with this Cowboy version.
+
+The most significant changes in the pre-release are:
+
+* A new architecture: there now is one process per
+ connection and one process per request. This was
+ done because HTTP/2 allows running requests concurrently.
+
+* Stream handlers. Every request, response and data goes
+ through stream handlers. They are meant to replace hooks
+ and more. They will be documented in a future pre-release.
+ Check `cowboy_stream` and `cowboy_stream_h` if interested.
+
+* Numerous changes to the `cowboy_req` interface. This
+ is very close to final. Check the manual for what changed.
+
+* The Req object is no longer passed in Websocket callbacks.
+
+* It is now possible to send frames directly from `websocket_init/1`.
+
+* SPDY support was removed, now that we have HTTP/2.
+
+* Update Ranch to 1.3. We still depend on Cowlib master
+ for the time being.
+
+* A much improved manual.
+
+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/
+
+I am quite proud of the manual right now. While more
+improvements can be made, what we have now is way better
+than before. Feedback for further improvements is welcome!
+
+This is a significant step toward Cowboy 2.0. Almost all
+the breaking changes are in. A few more pre-releases are
+planned and will be released on a weekly basis (with exceptions).
+
+Cowboy is now tested and supported with Erlang/OTP 18.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.
+
+Cowboy 2.0 will be released once all the breaking changes
+are completed and the temporarily removed features are
+added back.
+
+Thanks for your patience. I know it took a long time.
+
+++++
+<hr/>
+++++
+
+Half-price on all donations because I need a new hat:
+
+++++
+<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>
+++++
diff --git a/_build/content/donate.asciidoc b/_build/content/donate.asciidoc
index 4ac8d4b8..7d62bc8f 100644
--- a/_build/content/donate.asciidoc
+++ b/_build/content/donate.asciidoc
@@ -6,8 +6,8 @@ type = "services"
=== Like my work? Donate!
-You can donate via Paypal to reward me, Loïc Hoguin, for my
-work on open source software including Cowboy and Erlang.mk.
+Donate to Loïc Hoguin because his work on Cowboy
+and Erlang.mk is fantastic:
++++
<form action="https://www.paypal.com/cgi-bin/webscr" method="post" style="display:inline">
diff --git a/_build/data/projects/cowboy.toml b/_build/data/projects/cowboy.toml
index 0c991c52..6d3b29c7 100644
--- a/_build/data/projects/cowboy.toml
+++ b/_build/data/projects/cowboy.toml
@@ -3,8 +3,8 @@ catchphrase = "Small, fast, modern HTTP server."
description = "Cowboy is the ultimate server for the modern Web with support for Websocket, HTTP/2 and REST."
name = "cowboy"
repository = "https://github.com/ninenines/cowboy"
-versions = ["1.0", "2.0"]
-branches = ["1.0.x", "master"]
+versions = ["2.0", "1.0"]
+branches = ["master", "1.0.x"]
has_source = true
has_guide = true
has_manual = true
diff --git a/articles/cowboy-2.0.0-pre.4/index.html b/articles/cowboy-2.0.0-pre.4/index.html
new file mode 100644
index 00000000..092ea08e
--- /dev/null
+++ b/articles/cowboy-2.0.0-pre.4/index.html
@@ -0,0 +1,277 @@
+<!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 pre-release 4</title>
+
+ <link href='https://fonts.googleapis.com/css?family=Open+Sans:400,700,400italic' rel='stylesheet' type='text/css'>
+
+ <link href="/css/bootstrap.min.css" rel="stylesheet">
+ <link href="/css/99s.css" 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 pre-release 4</span></h1>
+ <p class="date">
+ <span class="day">03</span>
+ <span class="month">Jan</span>
+ </p>
+</header>
+
+<div class="paragraph"><p>Cowboy <code>2.0.0-pre.4</code> has been released!</p></div>
+<div class="paragraph"><p>This is the new recommended version of Cowboy.
+While I would not recommend putting it in production
+just yet, I do recommend you start writing new
+applications with this Cowboy version.</p></div>
+<div class="paragraph"><p>The most significant changes in the pre-release are:</p></div>
+<div class="ulist"><ul>
+<li>
+<p>
+A new architecture: there now is one process per
+ connection and one process per request. This was
+ done because HTTP/2 allows running requests concurrently.
+</p>
+</li>
+<li>
+<p>
+Stream handlers. Every request, response and data goes
+ through stream handlers. They are meant to replace hooks
+ and more. They will be documented in a future pre-release.
+ Check <code>cowboy_stream</code> and <code>cowboy_stream_h</code> if interested.
+</p>
+</li>
+<li>
+<p>
+Numerous changes to the <code>cowboy_req</code> interface. This
+ is very close to final. Check the manual for what changed.
+</p>
+</li>
+<li>
+<p>
+The Req object is no longer passed in Websocket callbacks.
+</p>
+</li>
+<li>
+<p>
+It is now possible to send frames directly from <code>websocket_init/1</code>.
+</p>
+</li>
+<li>
+<p>
+SPDY support was removed, now that we have HTTP/2.
+</p>
+</li>
+<li>
+<p>
+Update Ranch to 1.3. We still depend on Cowlib master
+ for the time being.
+</p>
+</li>
+<li>
+<p>
+A much improved manual.
+</p>
+</li>
+</ul></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>I am quite proud of the manual right now. While more
+improvements can be made, what we have now is way better
+than before. Feedback for further improvements is welcome!</p></div>
+<div class="paragraph"><p>This is a significant step toward Cowboy 2.0. Almost all
+the breaking changes are in. A few more pre-releases are
+planned and will be released on a weekly basis (with exceptions).</p></div>
+<div class="paragraph"><p>Cowboy is now tested and supported with Erlang/OTP 18.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>
+<div class="paragraph"><p>Cowboy 2.0 will be released once all the breaking changes
+are completed and the temporarily removed features are
+added back.</p></div>
+<div class="paragraph"><p>Thanks for your patience. I know it took a long time.</p></div>
+<hr/>
+<div class="paragraph"><p>Half-price on all donations because I need a new hat:</p></div>
+<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>
+
+</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-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="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
+ <script src="/js/bootstrap-carousel.js"></script>
+ <script src="/js/bootstrap-dropdown.js"></script>
+ <script src="/js/custom.js"></script>
+ </body>
+</html>
+
diff --git a/articles/cowboy2-qs/index.html b/articles/cowboy2-qs/index.html
index 21a34b55..da450bf8 100644
--- a/articles/cowboy2-qs/index.html
+++ b/articles/cowboy2-qs/index.html
@@ -233,6 +233,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-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>
diff --git a/articles/erlang-scalability/index.html b/articles/erlang-scalability/index.html
index 2dcf76a7..46871c4d 100644
--- a/articles/erlang-scalability/index.html
+++ b/articles/erlang-scalability/index.html
@@ -218,6 +218,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-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>
diff --git a/articles/erlang-validate-utf8/index.html b/articles/erlang-validate-utf8/index.html
index d9564e01..6940ae6b 100644
--- a/articles/erlang-validate-utf8/index.html
+++ b/articles/erlang-validate-utf8/index.html
@@ -269,6 +269,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-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>
diff --git a/articles/erlang.mk-and-relx/index.html b/articles/erlang.mk-and-relx/index.html
index 13a95ceb..0173f34a 100644
--- a/articles/erlang.mk-and-relx/index.html
+++ b/articles/erlang.mk-and-relx/index.html
@@ -172,6 +172,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-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>
diff --git a/articles/erlanger-playbook-september-2015-update/index.html b/articles/erlanger-playbook-september-2015-update/index.html
index 17eaf142..cb472372 100644
--- a/articles/erlanger-playbook-september-2015-update/index.html
+++ b/articles/erlanger-playbook-september-2015-update/index.html
@@ -97,6 +97,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-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>
diff --git a/articles/erlanger-playbook/index.html b/articles/erlanger-playbook/index.html
index ea83bcad..b8345523 100644
--- a/articles/erlanger-playbook/index.html
+++ b/articles/erlanger-playbook/index.html
@@ -150,6 +150,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-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>
diff --git a/articles/farwest-funded/index.html b/articles/farwest-funded/index.html
index 2e7d2079..def68b84 100644
--- a/articles/farwest-funded/index.html
+++ b/articles/farwest-funded/index.html
@@ -105,6 +105,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-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>
diff --git a/articles/index.html b/articles/index.html
index 10f7ba30..b1edcd8a 100644
--- a/articles/index.html
+++ b/articles/index.html
@@ -74,6 +74,25 @@
<article class="blog_item">
<header>
+ <h2><a href="https://ninenines.eu/articles/cowboy-2.0.0-pre.4/">Cowboy 2.0 pre-release 4</a></h2>
+ <p class="date">
+ <span class="day">03</span>
+ <span class="month">Jan</span>
+ </p>
+ </header>
+
+ <p>Cowboy 2.0.0-pre.4 has been released!
+ This is the new recommended version of Cowboy. While I would not recommend putting it in production just yet, I do recommend you start writing new applications with this Cowboy version.
+ The most significant changes in the pre-release are:
+ A new architecture: there now is one process per connection and one process per request. This was done because HTTP/2 allows running requests concurrently.</p>
+
+ <p style="text-align:right">
+ <a class="read_more" href="https://ninenines.eu/articles/cowboy-2.0.0-pre.4/">Read More</a>
+ </p>
+ </article>
+
+ <article class="blog_item">
+ <header>
<h2><a href="https://ninenines.eu/articles/ranch-1.3/">Ranch 1.3</a></h2>
<p class="date">
<span class="day">28</span>
@@ -413,26 +432,15 @@
</p>
</article>
- <article class="blog_item">
- <header>
- <h2><a href="https://ninenines.eu/articles/tictactoe/">Erlang Tic Tac Toe</a></h2>
- <p class="date">
- <span class="day">17</span>
- <span class="month">Oct</span>
- </p>
- </header>
-
- <p>Everyone knows Tic Tac Toe, right?
- Players choose either to be the Xs or the Os, then place their symbol on a 3x3 board one after another, trying to create a line of 3 of them.
- Writing an algorithm to check for victory sounds easy, right? It&#8217;s easily tested, considering there&#8217;s only 8 possible winning rows (3 horizontal, 3 vertical and 2 diagonal).
- In Erlang though, you probably wouldn&#8217;t want an algorithm.</p>
-
- <p style="text-align:right">
- <a class="read_more" href="https://ninenines.eu/articles/tictactoe/">Read More</a>
- </p>
- </article>
+<nav class="pagination" role="pagination">
+
+ <span>1 / 2</span>
+
+ <a href="/articles/page/2/"><i class="fa fa-angle-double-right"></i></a>
+
+</nav>
diff --git a/articles/index.xml b/articles/index.xml
index 0e8c3dea..40507060 100644
--- a/articles/index.xml
+++ b/articles/index.xml
@@ -6,10 +6,129 @@
<description>Recent content in Articles-rsses on Nine Nines</description>
<generator>Hugo -- gohugo.io</generator>
<language>en-us</language>
- <lastBuildDate>Mon, 28 Nov 2016 00:00:00 +0100</lastBuildDate>
+ <lastBuildDate>Tue, 03 Jan 2017 00:00:00 +0100</lastBuildDate>
<atom:link href="https://ninenines.eu/articles/index.xml" rel="self" type="application/rss+xml" />
<item>
+ <title>Cowboy 2.0 pre-release 4</title>
+ <link>https://ninenines.eu/articles/cowboy-2.0.0-pre.4/</link>
+ <pubDate>Tue, 03 Jan 2017 00:00:00 +0100</pubDate>
+
+ <guid>https://ninenines.eu/articles/cowboy-2.0.0-pre.4/</guid>
+ <description>&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;Cowboy &lt;code&gt;2.0.0-pre.4&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.
+While I would not recommend putting it in production
+just yet, I do recommend you start writing new
+applications with this Cowboy version.&lt;/p&gt;&lt;/div&gt;
+&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;The most significant changes in the pre-release are:&lt;/p&gt;&lt;/div&gt;
+&lt;div class=&#34;ulist&#34;&gt;&lt;ul&gt;
+&lt;li&gt;
+&lt;p&gt;
+A new architecture: there now is one process per
+ connection and one process per request. This was
+ done because HTTP/2 allows running requests concurrently.
+&lt;/p&gt;
+&lt;/li&gt;
+&lt;li&gt;
+&lt;p&gt;
+Stream handlers. Every request, response and data goes
+ through stream handlers. They are meant to replace hooks
+ and more. They will be documented in a future pre-release.
+ Check &lt;code&gt;cowboy_stream&lt;/code&gt; and &lt;code&gt;cowboy_stream_h&lt;/code&gt; if interested.
+&lt;/p&gt;
+&lt;/li&gt;
+&lt;li&gt;
+&lt;p&gt;
+Numerous changes to the &lt;code&gt;cowboy_req&lt;/code&gt; interface. This
+ is very close to final. Check the manual for what changed.
+&lt;/p&gt;
+&lt;/li&gt;
+&lt;li&gt;
+&lt;p&gt;
+The Req object is no longer passed in Websocket callbacks.
+&lt;/p&gt;
+&lt;/li&gt;
+&lt;li&gt;
+&lt;p&gt;
+It is now possible to send frames directly from &lt;code&gt;websocket_init/1&lt;/code&gt;.
+&lt;/p&gt;
+&lt;/li&gt;
+&lt;li&gt;
+&lt;p&gt;
+SPDY support was removed, now that we have HTTP/2.
+&lt;/p&gt;
+&lt;/li&gt;
+&lt;li&gt;
+&lt;p&gt;
+Update Ranch to 1.3. We still depend on Cowlib master
+ for the time being.
+&lt;/p&gt;
+&lt;/li&gt;
+&lt;li&gt;
+&lt;p&gt;
+A much improved manual.
+&lt;/p&gt;
+&lt;/li&gt;
+&lt;/ul&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;I am quite proud of the manual right now. While more
+improvements can be made, what we have now is way better
+than before. Feedback for further improvements is welcome!&lt;/p&gt;&lt;/div&gt;
+&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;This is a significant step toward Cowboy 2.0. Almost all
+the breaking changes are in. A few more pre-releases are
+planned and will be released on a weekly basis (with exceptions).&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 18.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;
+&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;Cowboy 2.0 will be released once all the breaking changes
+are completed and the temporarily removed features are
+added back.&lt;/p&gt;&lt;/div&gt;
+&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;Thanks for your patience. I know it took a long time.&lt;/p&gt;&lt;/div&gt;
+&lt;hr/&gt;
+&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;Half-price on all donations because I need a new hat:&lt;/p&gt;&lt;/div&gt;
+&lt;form action=&#34;https://www.paypal.com/cgi-bin/webscr&#34; method=&#34;post&#34; style=&#34;display:inline&#34;&gt;
+&lt;input type=&#34;hidden&#34; name=&#34;cmd&#34; value=&#34;_donations&#34;&gt;
+&lt;input type=&#34;hidden&#34; name=&#34;business&#34; value=&#34;[email protected]&#34;&gt;
+&lt;input type=&#34;hidden&#34; name=&#34;lc&#34; value=&#34;FR&#34;&gt;
+&lt;input type=&#34;hidden&#34; name=&#34;item_name&#34; value=&#34;Loic Hoguin&#34;&gt;
+&lt;input type=&#34;hidden&#34; name=&#34;item_number&#34; value=&#34;99s&#34;&gt;
+&lt;input type=&#34;hidden&#34; name=&#34;currency_code&#34; value=&#34;EUR&#34;&gt;
+&lt;input type=&#34;hidden&#34; name=&#34;bn&#34; value=&#34;PP-DonationsBF:btn_donate_LG.gif:NonHosted&#34;&gt;
+&lt;input type=&#34;image&#34; src=&#34;https://www.paypalobjects.com/en_US/i/btn/btn_donate_LG.gif&#34; border=&#34;0&#34; name=&#34;submit&#34; alt=&#34;PayPal - The safer, easier way to pay online!&#34;&gt;
+&lt;img alt=&#34;&#34; border=&#34;0&#34; src=&#34;https://www.paypalobjects.com/fr_FR/i/scr/pixel.gif&#34; width=&#34;1&#34; height=&#34;1&#34;&gt;
+&lt;/form&gt;
+</description>
+ </item>
+
+ <item>
<title>Ranch 1.3</title>
<link>https://ninenines.eu/articles/ranch-1.3/</link>
<pubDate>Mon, 28 Nov 2016 00:00:00 +0100</pubDate>
@@ -1469,148 +1588,5 @@ expressions so I thought it was a good idea to anticipate.&lt;/p&gt;&lt;/div&gt;
</description>
</item>
- <item>
- <title>Erlang Scalability</title>
- <link>https://ninenines.eu/articles/erlang-scalability/</link>
- <pubDate>Mon, 18 Feb 2013 00:00:00 +0100</pubDate>
-
- <guid>https://ninenines.eu/articles/erlang-scalability/</guid>
- <description>&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;I would like to share some experience and theories on
-Erlang scalability.&lt;/p&gt;&lt;/div&gt;
-&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;This will be in the form of a series of hints, which
-may or may not be accompanied with explanations as to why
-things are this way, or how they improve or reduce the scalability
-of a system. I will try to do my best to avoid giving falsehoods,
-even if that means a few things won&amp;#8217;t be explained.&lt;/p&gt;&lt;/div&gt;
-&lt;div class=&#34;sect1&#34;&gt;
-&lt;h2 id=&#34;_nifs&#34;&gt;NIFs&lt;/h2&gt;
-&lt;div class=&#34;sectionbody&#34;&gt;
-&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;NIFs are considered harmful. I don&amp;#8217;t know any single NIF-based
-library that I would recommend. That doesn&amp;#8217;t mean they should
-all be avoided, just that if you&amp;#8217;re going to want your system to
-scale, you probably shouldn&amp;#8217;t use a NIF.&lt;/p&gt;&lt;/div&gt;
-&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;A common case for using NIFs is JSON processing. The problem
-is that JSON is a highly inefficient data structure (similar
-in inefficiency to XML, although perhaps not as bad). If you can
-avoid using JSON, you probably should. MessagePack can replace
-it in many situations.&lt;/p&gt;&lt;/div&gt;
-&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;Long-running NIFs will take over a scheduler and prevent Erlang
-from efficiently handling many processes.&lt;/p&gt;&lt;/div&gt;
-&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;Short-running NIFs will still confuse the scheduler if they
-take more than a few microseconds to run.&lt;/p&gt;&lt;/div&gt;
-&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;Threaded NIFs, or the use of the &lt;code&gt;enif_consume_timeslice&lt;/code&gt;
-might help allievate this problem, but they&amp;#8217;re not a silver bullet.&lt;/p&gt;&lt;/div&gt;
-&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;And as you already know, a crashing NIF will take down your VM,
-destroying any claims you may have at being scalable.&lt;/p&gt;&lt;/div&gt;
-&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;Never use a NIF because &#34;C is fast&#34;. This is only true in
-single-threaded programs.&lt;/p&gt;&lt;/div&gt;
-&lt;/div&gt;
-&lt;/div&gt;
-&lt;div class=&#34;sect1&#34;&gt;
-&lt;h2 id=&#34;_bifs&#34;&gt;BIFs&lt;/h2&gt;
-&lt;div class=&#34;sectionbody&#34;&gt;
-&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;BIFs can also be harmful. While they are generally better than
-NIFs, they are not perfect and some of them might have harmful
-effects on the scheduler.&lt;/p&gt;&lt;/div&gt;
-&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;A great example of this is the &lt;code&gt;erlang:decode_packet/3&lt;/code&gt;
-BIF, when used for HTTP request or response decoding. Avoiding
-its use in &lt;em&gt;Cowboy&lt;/em&gt; allowed us to see a big increase in
-the number of requests production systems were able to handle,
-up to two times the original amount. Incidentally this is something
-that is impossible to detect using synthetic benchmarks.&lt;/p&gt;&lt;/div&gt;
-&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;BIFs that return immediately are perfectly fine though.&lt;/p&gt;&lt;/div&gt;
-&lt;/div&gt;
-&lt;/div&gt;
-&lt;div class=&#34;sect1&#34;&gt;
-&lt;h2 id=&#34;_binary_strings&#34;&gt;Binary strings&lt;/h2&gt;
-&lt;div class=&#34;sectionbody&#34;&gt;
-&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;Binary strings use less memory, which means you spend less time
-allocating memory compared to list-based strings. They are also
-more natural for strings manipulation because they are optimized
-for appending (as opposed to prepending for lists).&lt;/p&gt;&lt;/div&gt;
-&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;If you can process a binary string using a single match context,
-then the code will run incredibly fast. The effects will be much
-increased if the code was compiled using HiPE, even if your Erlang
-system isn&amp;#8217;t compiled natively.&lt;/p&gt;&lt;/div&gt;
-&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;Avoid using &lt;code&gt;binary:split&lt;/code&gt; or &lt;code&gt;binary:replace&lt;/code&gt;
-if you can avoid it. They have a certain overhead due to supporting
-many options that you probably don&amp;#8217;t need for most operations.&lt;/p&gt;&lt;/div&gt;
-&lt;/div&gt;
-&lt;/div&gt;
-&lt;div class=&#34;sect1&#34;&gt;
-&lt;h2 id=&#34;_buffering_and_streaming&#34;&gt;Buffering and streaming&lt;/h2&gt;
-&lt;div class=&#34;sectionbody&#34;&gt;
-&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;Use binaries. They are great for appending, and it&amp;#8217;s a direct copy
-from what you receive from a stream (usually a socket or a file).&lt;/p&gt;&lt;/div&gt;
-&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;Be careful to not indefinitely receive data, as you might end up
-having a single binary taking up huge amounts of memory.&lt;/p&gt;&lt;/div&gt;
-&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;If you stream from a socket and know how much data you expect,
-then fetch that data in a single &lt;code&gt;recv&lt;/code&gt; call.&lt;/p&gt;&lt;/div&gt;
-&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;Similarly, if you can use a single &lt;code&gt;send&lt;/code&gt; call, then
-you should do so, to avoid going back and forth unnecessarily between
-your Erlang process and the Erlang port for your socket.&lt;/p&gt;&lt;/div&gt;
-&lt;/div&gt;
-&lt;/div&gt;
-&lt;div class=&#34;sect1&#34;&gt;
-&lt;h2 id=&#34;_list_and_binary_comprehensions&#34;&gt;List and binary comprehensions&lt;/h2&gt;
-&lt;div class=&#34;sectionbody&#34;&gt;
-&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;Prefer list comprehensions over &lt;code&gt;lists:map/2&lt;/code&gt;. The
-compiler will be able to optimize your code greatly, for example
-not creating the result if you don&amp;#8217;t need it. As time goes on,
-more optimizations will be added to the compiler and you will
-automatically benefit from them.&lt;/p&gt;&lt;/div&gt;
-&lt;/div&gt;
-&lt;/div&gt;
-&lt;div class=&#34;sect1&#34;&gt;
-&lt;h2 id=&#34;_gen_server_is_no_silver_bullet&#34;&gt;gen_server is no silver bullet&lt;/h2&gt;
-&lt;div class=&#34;sectionbody&#34;&gt;
-&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;It&amp;#8217;s a bad idea to use &lt;code&gt;gen_server&lt;/code&gt; for everything.
-For two reasons.&lt;/p&gt;&lt;/div&gt;
-&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;There is an overhead everytime the &lt;code&gt;gen_server&lt;/code&gt; receives
-a call, a cast or a simple message. It can be a problem if your
-&lt;code&gt;gen_server&lt;/code&gt; is in a critical code path where speed
-is all that matters. Do not hesitate to create other kinds of
-processes where it makes sense. And depending on the kind of process,
-you might want to consider making them special processes, which
-would essentially behave the same as a &lt;code&gt;gen_server&lt;/code&gt;.&lt;/p&gt;&lt;/div&gt;
-&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;A common mistake is to have a unique &lt;code&gt;gen_server&lt;/code&gt; to
-handle queries from many processes. This generally becomes the
-biggest bottleneck you&amp;#8217;ll want to fix. You should try to avoid
-relying on a single process, using a pool if you can.&lt;/p&gt;&lt;/div&gt;
-&lt;/div&gt;
-&lt;/div&gt;
-&lt;div class=&#34;sect1&#34;&gt;
-&lt;h2 id=&#34;_supervisor_and_monitoring&#34;&gt;Supervisor and monitoring&lt;/h2&gt;
-&lt;div class=&#34;sectionbody&#34;&gt;
-&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;A &lt;code&gt;supervisor&lt;/code&gt; is also a &lt;code&gt;gen_server&lt;/code&gt;,
-so the previous points also apply to them.&lt;/p&gt;&lt;/div&gt;
-&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;Sometimes you&amp;#8217;re in a situation where you have supervised
-processes but also want to monitor them in one or more other
-processes, effectively duplicating the work. The supervisor
-already knows when processes die, why not use this to our
-advantage?&lt;/p&gt;&lt;/div&gt;
-&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;You can create a custom supervisor process that will perform
-both the supervision and handle exit and other events, allowing
-to avoid the combination of supervising and monitoring which
-can prove harmful when many processes die at once, or when you
-have many short lived processes.&lt;/p&gt;&lt;/div&gt;
-&lt;/div&gt;
-&lt;/div&gt;
-&lt;div class=&#34;sect1&#34;&gt;
-&lt;h2 id=&#34;_ets_for_lolspeed_tm&#34;&gt;ets for LOLSPEED(tm)&lt;/h2&gt;
-&lt;div class=&#34;sectionbody&#34;&gt;
-&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;If you have data queried or modified by many processes, then
-&lt;code&gt;ets&lt;/code&gt; public or protected tables will give you the
-performance boost you require. Do not forget to set the
-&lt;code&gt;read_concurrency&lt;/code&gt; or &lt;code&gt;write_concurrency&lt;/code&gt;
-options though.&lt;/p&gt;&lt;/div&gt;
-&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;You might also be thrilled to know that Erlang R16B will feature
-a big performance improvement for accessing &lt;code&gt;ets&lt;/code&gt; tables
-concurrently.&lt;/p&gt;&lt;/div&gt;
-&lt;/div&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 4e7500fa..24fc69a2 100644
--- a/articles/january-2014-status/index.html
+++ b/articles/january-2014-status/index.html
@@ -224,6 +224,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-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>
diff --git a/articles/ml-archives/index.html b/articles/ml-archives/index.html
index 0ccad3dc..41a87cb2 100644
--- a/articles/ml-archives/index.html
+++ b/articles/ml-archives/index.html
@@ -94,6 +94,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-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>
diff --git a/articles/on-open-source/index.html b/articles/on-open-source/index.html
index ee693024..66387794 100644
--- a/articles/on-open-source/index.html
+++ b/articles/on-open-source/index.html
@@ -201,6 +201,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-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>
diff --git a/articles/page/2/index.html b/articles/page/2/index.html
new file mode 100644
index 00000000..694bed10
--- /dev/null
+++ b/articles/page/2/index.html
@@ -0,0 +1,137 @@
+<!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: Articles</title>
+
+ <link href='https://fonts.googleapis.com/css?family=Open+Sans:400,700,400italic' rel='stylesheet' type='text/css'>
+
+ <link href="/css/bootstrap.min.css" rel="stylesheet">
+ <link href="/css/99s.css" 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">
+
+
+ <link rel="alternate" href="https://ninenines.eu/articles/index.xml" type="application/rss+xml" title="Nine Nines" />
+
+</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" class="two_col">
+<div class="container">
+<div class="row">
+<div class="span9 maincol">
+
+<h1 class="lined-header"><span>Articles</span></h1>
+
+
+ <article class="blog_item">
+ <header>
+ <h2><a href="https://ninenines.eu/articles/tictactoe/">Erlang Tic Tac Toe</a></h2>
+ <p class="date">
+ <span class="day">17</span>
+ <span class="month">Oct</span>
+ </p>
+ </header>
+
+ <p>Everyone knows Tic Tac Toe, right?
+ Players choose either to be the Xs or the Os, then place their symbol on a 3x3 board one after another, trying to create a line of 3 of them.
+ Writing an algorithm to check for victory sounds easy, right? It&#8217;s easily tested, considering there&#8217;s only 8 possible winning rows (3 horizontal, 3 vertical and 2 diagonal).
+ In Erlang though, you probably wouldn&#8217;t want an algorithm.</p>
+
+ <p style="text-align:right">
+ <a class="read_more" href="https://ninenines.eu/articles/tictactoe/">Read More</a>
+ </p>
+ </article>
+
+
+
+<nav class="pagination" role="pagination">
+
+ <a href="/articles/"><i class="fa fa-angle-double-left"></i></a>
+
+ <span>2 / 2</span>
+
+</nav>
+
+
+
+</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="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
+ <script src="/js/bootstrap-carousel.js"></script>
+ <script src="/js/bootstrap-dropdown.js"></script>
+ <script src="/js/custom.js"></script>
+ </body>
+</html>
+
diff --git a/articles/ranch-1.3/index.html b/articles/ranch-1.3/index.html
index bd0abba1..6286a77d 100644
--- a/articles/ranch-1.3/index.html
+++ b/articles/ranch-1.3/index.html
@@ -166,6 +166,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-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>
diff --git a/articles/ranch-ftp/index.html b/articles/ranch-ftp/index.html
index cbb9fa83..307deea8 100644
--- a/articles/ranch-ftp/index.html
+++ b/articles/ranch-ftp/index.html
@@ -294,6 +294,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-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>
diff --git a/articles/the-story-so-far/index.html b/articles/the-story-so-far/index.html
index fc562291..9d01ab67 100644
--- a/articles/the-story-so-far/index.html
+++ b/articles/the-story-so-far/index.html
@@ -308,6 +308,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-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>
diff --git a/articles/tictactoe/index.html b/articles/tictactoe/index.html
index 62edce65..a96fda88 100644
--- a/articles/tictactoe/index.html
+++ b/articles/tictactoe/index.html
@@ -167,6 +167,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-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>
diff --git a/articles/website-update/index.html b/articles/website-update/index.html
index 70305e8e..9f20a0ba 100644
--- a/articles/website-update/index.html
+++ b/articles/website-update/index.html
@@ -141,6 +141,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-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>
diff --git a/articles/xerl-0.1-empty-modules/index.html b/articles/xerl-0.1-empty-modules/index.html
index c3ea83a4..d8c103d3 100644
--- a/articles/xerl-0.1-empty-modules/index.html
+++ b/articles/xerl-0.1-empty-modules/index.html
@@ -222,6 +222,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-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>
diff --git a/articles/xerl-0.2-two-modules/index.html b/articles/xerl-0.2-two-modules/index.html
index 7f357026..b5979ee5 100644
--- a/articles/xerl-0.2-two-modules/index.html
+++ b/articles/xerl-0.2-two-modules/index.html
@@ -227,6 +227,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-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>
diff --git a/articles/xerl-0.3-atomic-expressions/index.html b/articles/xerl-0.3-atomic-expressions/index.html
index 383cdeba..d34c591e 100644
--- a/articles/xerl-0.3-atomic-expressions/index.html
+++ b/articles/xerl-0.3-atomic-expressions/index.html
@@ -231,6 +231,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-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>
diff --git a/articles/xerl-0.4-expression-separator/index.html b/articles/xerl-0.4-expression-separator/index.html
index bad74b62..55c68ce1 100644
--- a/articles/xerl-0.4-expression-separator/index.html
+++ b/articles/xerl-0.4-expression-separator/index.html
@@ -136,6 +136,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-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>
diff --git a/articles/xerl-0.5-intermediate-module/index.html b/articles/xerl-0.5-intermediate-module/index.html
index 8f00fa4a..c12c6ce7 100644
--- a/articles/xerl-0.5-intermediate-module/index.html
+++ b/articles/xerl-0.5-intermediate-module/index.html
@@ -214,6 +214,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-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>
diff --git a/docs/en/cowboy/2.0/guide/architecture/index.html b/docs/en/cowboy/2.0/guide/architecture/index.html
index 552fa92c..a82159d2 100644
--- a/docs/en/cowboy/2.0/guide/architecture/index.html
+++ b/docs/en/cowboy/2.0/guide/architecture/index.html
@@ -171,10 +171,10 @@ only processing short-lived requests.</p></div>
- <li><a href="/docs/en/cowboy/1.0/guide">1.0</a></li>
-
<li><a href="/docs/en/cowboy/2.0/guide">2.0</a></li>
+ <li><a href="/docs/en/cowboy/1.0/guide">1.0</a></li>
+
</ul>
</div>
diff --git a/docs/en/cowboy/2.0/guide/broken_clients/index.html b/docs/en/cowboy/2.0/guide/broken_clients/index.html
index c23fba28..5878c1ec 100644
--- a/docs/en/cowboy/2.0/guide/broken_clients/index.html
+++ b/docs/en/cowboy/2.0/guide/broken_clients/index.html
@@ -185,10 +185,10 @@ http://www.gnu.org/software/src-highlite -->
- <li><a href="/docs/en/cowboy/1.0/guide">1.0</a></li>
-
<li><a href="/docs/en/cowboy/2.0/guide">2.0</a></li>
+ <li><a href="/docs/en/cowboy/1.0/guide">1.0</a></li>
+
</ul>
</div>
diff --git a/docs/en/cowboy/2.0/guide/constraints/index.html b/docs/en/cowboy/2.0/guide/constraints/index.html
index edfc51c9..60204c00 100644
--- a/docs/en/cowboy/2.0/guide/constraints/index.html
+++ b/docs/en/cowboy/2.0/guide/constraints/index.html
@@ -227,10 +227,10 @@ to ensure that we do not crash when the input is invalid.</p></div>
- <li><a href="/docs/en/cowboy/1.0/guide">1.0</a></li>
-
<li><a href="/docs/en/cowboy/2.0/guide">2.0</a></li>
+ <li><a href="/docs/en/cowboy/1.0/guide">1.0</a></li>
+
</ul>
</div>
diff --git a/docs/en/cowboy/2.0/guide/cookies/index.html b/docs/en/cowboy/2.0/guide/cookies/index.html
index bac2c244..2f9ddb08 100644
--- a/docs/en/cowboy/2.0/guide/cookies/index.html
+++ b/docs/en/cowboy/2.0/guide/cookies/index.html
@@ -260,10 +260,10 @@ exception is thrown.</p></div>
- <li><a href="/docs/en/cowboy/1.0/guide">1.0</a></li>
-
<li><a href="/docs/en/cowboy/2.0/guide">2.0</a></li>
+ <li><a href="/docs/en/cowboy/1.0/guide">1.0</a></li>
+
</ul>
</div>
diff --git a/docs/en/cowboy/2.0/guide/erlang_web/index.html b/docs/en/cowboy/2.0/guide/erlang_web/index.html
index b7f926c1..1a351181 100644
--- a/docs/en/cowboy/2.0/guide/erlang_web/index.html
+++ b/docs/en/cowboy/2.0/guide/erlang_web/index.html
@@ -310,10 +310,10 @@ ebook version.</p></div>
- <li><a href="/docs/en/cowboy/1.0/guide">1.0</a></li>
-
<li><a href="/docs/en/cowboy/2.0/guide">2.0</a></li>
+ <li><a href="/docs/en/cowboy/1.0/guide">1.0</a></li>
+
</ul>
</div>
diff --git a/docs/en/cowboy/2.0/guide/flow_diagram/index.html b/docs/en/cowboy/2.0/guide/flow_diagram/index.html
index 191aa3bd..867456b4 100644
--- a/docs/en/cowboy/2.0/guide/flow_diagram/index.html
+++ b/docs/en/cowboy/2.0/guide/flow_diagram/index.html
@@ -138,10 +138,10 @@ You can read about the Cowboy 1.0 architecture and flow here:</p></div>
- <li><a href="/docs/en/cowboy/1.0/guide">1.0</a></li>
-
<li><a href="/docs/en/cowboy/2.0/guide">2.0</a></li>
+ <li><a href="/docs/en/cowboy/1.0/guide">1.0</a></li>
+
</ul>
</div>
diff --git a/docs/en/cowboy/2.0/guide/getting_started/index.html b/docs/en/cowboy/2.0/guide/getting_started/index.html
index 3cac27bb..e8a2ab5d 100644
--- a/docs/en/cowboy/2.0/guide/getting_started/index.html
+++ b/docs/en/cowboy/2.0/guide/getting_started/index.html
@@ -277,10 +277,10 @@ in your browser, you should get a nice <code>Hello Erlang!</code> displayed!</p>
- <li><a href="/docs/en/cowboy/1.0/guide">1.0</a></li>
-
<li><a href="/docs/en/cowboy/2.0/guide">2.0</a></li>
+ <li><a href="/docs/en/cowboy/1.0/guide">1.0</a></li>
+
</ul>
</div>
diff --git a/docs/en/cowboy/2.0/guide/handlers/index.html b/docs/en/cowboy/2.0/guide/handlers/index.html
index f1b3649d..d510ec6a 100644
--- a/docs/en/cowboy/2.0/guide/handlers/index.html
+++ b/docs/en/cowboy/2.0/guide/handlers/index.html
@@ -217,10 +217,10 @@ process will terminate soon after this call returns.</p></div>
- <li><a href="/docs/en/cowboy/1.0/guide">1.0</a></li>
-
<li><a href="/docs/en/cowboy/2.0/guide">2.0</a></li>
+ <li><a href="/docs/en/cowboy/1.0/guide">1.0</a></li>
+
</ul>
</div>
diff --git a/docs/en/cowboy/2.0/guide/hooks/index.html b/docs/en/cowboy/2.0/guide/hooks/index.html
index 5b1e63b2..d4e1c943 100644
--- a/docs/en/cowboy/2.0/guide/hooks/index.html
+++ b/docs/en/cowboy/2.0/guide/hooks/index.html
@@ -165,10 +165,10 @@ http://www.gnu.org/software/src-highlite -->
- <li><a href="/docs/en/cowboy/1.0/guide">1.0</a></li>
-
<li><a href="/docs/en/cowboy/2.0/guide">2.0</a></li>
+ <li><a href="/docs/en/cowboy/1.0/guide">1.0</a></li>
+
</ul>
</div>
diff --git a/docs/en/cowboy/2.0/guide/index.html b/docs/en/cowboy/2.0/guide/index.html
index 7f0eb137..d79f8e50 100644
--- a/docs/en/cowboy/2.0/guide/index.html
+++ b/docs/en/cowboy/2.0/guide/index.html
@@ -321,10 +321,10 @@ chapters may or may not be useful.</p></div>
- <li><a href="/docs/en/cowboy/1.0/guide">1.0</a></li>
-
<li><a href="/docs/en/cowboy/2.0/guide">2.0</a></li>
+ <li><a href="/docs/en/cowboy/1.0/guide">1.0</a></li>
+
</ul>
</div>
diff --git a/docs/en/cowboy/2.0/guide/introduction/index.html b/docs/en/cowboy/2.0/guide/introduction/index.html
index 8e63cf1c..aac55bfc 100644
--- a/docs/en/cowboy/2.0/guide/introduction/index.html
+++ b/docs/en/cowboy/2.0/guide/introduction/index.html
@@ -195,10 +195,10 @@ when sending responses.</p></div>
- <li><a href="/docs/en/cowboy/1.0/guide">1.0</a></li>
-
<li><a href="/docs/en/cowboy/2.0/guide">2.0</a></li>
+ <li><a href="/docs/en/cowboy/1.0/guide">1.0</a></li>
+
</ul>
</div>
diff --git a/docs/en/cowboy/2.0/guide/listeners/index.html b/docs/en/cowboy/2.0/guide/listeners/index.html
index d4209d48..2fa8cea9 100644
--- a/docs/en/cowboy/2.0/guide/listeners/index.html
+++ b/docs/en/cowboy/2.0/guide/listeners/index.html
@@ -225,10 +225,10 @@ shared.</p></div>
- <li><a href="/docs/en/cowboy/1.0/guide">1.0</a></li>
-
<li><a href="/docs/en/cowboy/2.0/guide">2.0</a></li>
+ <li><a href="/docs/en/cowboy/1.0/guide">1.0</a></li>
+
</ul>
</div>
diff --git a/docs/en/cowboy/2.0/guide/loop_handlers/index.html b/docs/en/cowboy/2.0/guide/loop_handlers/index.html
index aec5721e..7f3be1d7 100644
--- a/docs/en/cowboy/2.0/guide/loop_handlers/index.html
+++ b/docs/en/cowboy/2.0/guide/loop_handlers/index.html
@@ -266,10 +266,10 @@ accordingly.</p></div>
- <li><a href="/docs/en/cowboy/1.0/guide">1.0</a></li>
-
<li><a href="/docs/en/cowboy/2.0/guide">2.0</a></li>
+ <li><a href="/docs/en/cowboy/1.0/guide">1.0</a></li>
+
</ul>
</div>
diff --git a/docs/en/cowboy/2.0/guide/middlewares/index.html b/docs/en/cowboy/2.0/guide/middlewares/index.html
index 8b74b9a5..b8ebbf66 100644
--- a/docs/en/cowboy/2.0/guide/middlewares/index.html
+++ b/docs/en/cowboy/2.0/guide/middlewares/index.html
@@ -208,10 +208,10 @@ values. It puts the result of the request handling into <code>result</code>.</p>
- <li><a href="/docs/en/cowboy/1.0/guide">1.0</a></li>
-
<li><a href="/docs/en/cowboy/2.0/guide">2.0</a></li>
+ <li><a href="/docs/en/cowboy/1.0/guide">1.0</a></li>
+
</ul>
</div>
diff --git a/docs/en/cowboy/2.0/guide/modern_web/index.html b/docs/en/cowboy/2.0/guide/modern_web/index.html
index 8fd8163a..b094582c 100644
--- a/docs/en/cowboy/2.0/guide/modern_web/index.html
+++ b/docs/en/cowboy/2.0/guide/modern_web/index.html
@@ -225,10 +225,10 @@ the HTTP protocol.</p></div>
- <li><a href="/docs/en/cowboy/1.0/guide">1.0</a></li>
-
<li><a href="/docs/en/cowboy/2.0/guide">2.0</a></li>
+ <li><a href="/docs/en/cowboy/1.0/guide">1.0</a></li>
+
</ul>
</div>
diff --git a/docs/en/cowboy/2.0/guide/multipart/index.html b/docs/en/cowboy/2.0/guide/multipart/index.html
index dc3ea289..1a797553 100644
--- a/docs/en/cowboy/2.0/guide/multipart/index.html
+++ b/docs/en/cowboy/2.0/guide/multipart/index.html
@@ -285,10 +285,10 @@ reading as soon as you find the data you need.</p></div>
- <li><a href="/docs/en/cowboy/1.0/guide">1.0</a></li>
-
<li><a href="/docs/en/cowboy/2.0/guide">2.0</a></li>
+ <li><a href="/docs/en/cowboy/1.0/guide">1.0</a></li>
+
</ul>
</div>
diff --git a/docs/en/cowboy/2.0/guide/overview/index.html b/docs/en/cowboy/2.0/guide/overview/index.html
index 6a62cea8..c6e6153c 100644
--- a/docs/en/cowboy/2.0/guide/overview/index.html
+++ b/docs/en/cowboy/2.0/guide/overview/index.html
@@ -261,10 +261,10 @@ at this point, however.</p></div>
- <li><a href="/docs/en/cowboy/1.0/guide">1.0</a></li>
-
<li><a href="/docs/en/cowboy/2.0/guide">2.0</a></li>
+ <li><a href="/docs/en/cowboy/1.0/guide">1.0</a></li>
+
</ul>
</div>
diff --git a/docs/en/cowboy/2.0/guide/req/index.html b/docs/en/cowboy/2.0/guide/req/index.html
index 80960092..08b5f18f 100644
--- a/docs/en/cowboy/2.0/guide/req/index.html
+++ b/docs/en/cowboy/2.0/guide/req/index.html
@@ -524,10 +524,10 @@ client itself. It may also be a proxy or a gateway.</p></div>
- <li><a href="/docs/en/cowboy/1.0/guide">1.0</a></li>
-
<li><a href="/docs/en/cowboy/2.0/guide">2.0</a></li>
+ <li><a href="/docs/en/cowboy/1.0/guide">1.0</a></li>
+
</ul>
</div>
diff --git a/docs/en/cowboy/2.0/guide/req_body/index.html b/docs/en/cowboy/2.0/guide/req_body/index.html
index 33502cae..44f352c9 100644
--- a/docs/en/cowboy/2.0/guide/req_body/index.html
+++ b/docs/en/cowboy/2.0/guide/req_body/index.html
@@ -260,10 +260,10 @@ http://www.gnu.org/software/src-highlite -->
- <li><a href="/docs/en/cowboy/1.0/guide">1.0</a></li>
-
<li><a href="/docs/en/cowboy/2.0/guide">2.0</a></li>
+ <li><a href="/docs/en/cowboy/1.0/guide">1.0</a></li>
+
</ul>
</div>
diff --git a/docs/en/cowboy/2.0/guide/resource_design/index.html b/docs/en/cowboy/2.0/guide/resource_design/index.html
index 0b4fbb52..55e10362 100644
--- a/docs/en/cowboy/2.0/guide/resource_design/index.html
+++ b/docs/en/cowboy/2.0/guide/resource_design/index.html
@@ -329,10 +329,10 @@ no way of knowing it has been completed yet, implement the
- <li><a href="/docs/en/cowboy/1.0/guide">1.0</a></li>
-
<li><a href="/docs/en/cowboy/2.0/guide">2.0</a></li>
+ <li><a href="/docs/en/cowboy/1.0/guide">1.0</a></li>
+
</ul>
</div>
diff --git a/docs/en/cowboy/2.0/guide/resp/index.html b/docs/en/cowboy/2.0/guide/resp/index.html
index b2dbb622..0676e762 100644
--- a/docs/en/cowboy/2.0/guide/resp/index.html
+++ b/docs/en/cowboy/2.0/guide/resp/index.html
@@ -438,10 +438,10 @@ ultimately send a response to the client.</p></div>
- <li><a href="/docs/en/cowboy/1.0/guide">1.0</a></li>
-
<li><a href="/docs/en/cowboy/2.0/guide">2.0</a></li>
+ <li><a href="/docs/en/cowboy/1.0/guide">1.0</a></li>
+
</ul>
</div>
diff --git a/docs/en/cowboy/2.0/guide/rest_flowcharts/index.html b/docs/en/cowboy/2.0/guide/rest_flowcharts/index.html
index 8e737143..47b917e9 100644
--- a/docs/en/cowboy/2.0/guide/rest_flowcharts/index.html
+++ b/docs/en/cowboy/2.0/guide/rest_flowcharts/index.html
@@ -360,10 +360,10 @@ the results for subsequent use.</p></div>
- <li><a href="/docs/en/cowboy/1.0/guide">1.0</a></li>
-
<li><a href="/docs/en/cowboy/2.0/guide">2.0</a></li>
+ <li><a href="/docs/en/cowboy/1.0/guide">1.0</a></li>
+
</ul>
</div>
diff --git a/docs/en/cowboy/2.0/guide/rest_handlers/index.html b/docs/en/cowboy/2.0/guide/rest_handlers/index.html
index 5e7f84aa..df2fb63a 100644
--- a/docs/en/cowboy/2.0/guide/rest_handlers/index.html
+++ b/docs/en/cowboy/2.0/guide/rest_handlers/index.html
@@ -399,10 +399,10 @@ cellspacing="0" cellpadding="4">
- <li><a href="/docs/en/cowboy/1.0/guide">1.0</a></li>
-
<li><a href="/docs/en/cowboy/2.0/guide">2.0</a></li>
+ <li><a href="/docs/en/cowboy/1.0/guide">1.0</a></li>
+
</ul>
</div>
diff --git a/docs/en/cowboy/2.0/guide/rest_principles/index.html b/docs/en/cowboy/2.0/guide/rest_principles/index.html
index 070ee688..caefb135 100644
--- a/docs/en/cowboy/2.0/guide/rest_principles/index.html
+++ b/docs/en/cowboy/2.0/guide/rest_principles/index.html
@@ -269,10 +269,10 @@ anything specific to the service to operate on it.</p></div>
- <li><a href="/docs/en/cowboy/1.0/guide">1.0</a></li>
-
<li><a href="/docs/en/cowboy/2.0/guide">2.0</a></li>
+ <li><a href="/docs/en/cowboy/1.0/guide">1.0</a></li>
+
</ul>
</div>
diff --git a/docs/en/cowboy/2.0/guide/routing/index.html b/docs/en/cowboy/2.0/guide/routing/index.html
index 87bb766f..f6cc9138 100644
--- a/docs/en/cowboy/2.0/guide/routing/index.html
+++ b/docs/en/cowboy/2.0/guide/routing/index.html
@@ -376,10 +376,10 @@ http://www.gnu.org/software/src-highlite -->
- <li><a href="/docs/en/cowboy/1.0/guide">1.0</a></li>
-
<li><a href="/docs/en/cowboy/2.0/guide">2.0</a></li>
+ <li><a href="/docs/en/cowboy/1.0/guide">1.0</a></li>
+
</ul>
</div>
diff --git a/docs/en/cowboy/2.0/guide/static_files/index.html b/docs/en/cowboy/2.0/guide/static_files/index.html
index 5b924da7..3e39a445 100644
--- a/docs/en/cowboy/2.0/guide/static_files/index.html
+++ b/docs/en/cowboy/2.0/guide/static_files/index.html
@@ -289,10 +289,10 @@ http://www.gnu.org/software/src-highlite -->
- <li><a href="/docs/en/cowboy/1.0/guide">1.0</a></li>
-
<li><a href="/docs/en/cowboy/2.0/guide">2.0</a></li>
+ <li><a href="/docs/en/cowboy/1.0/guide">1.0</a></li>
+
</ul>
</div>
diff --git a/docs/en/cowboy/2.0/guide/streams/index.html b/docs/en/cowboy/2.0/guide/streams/index.html
index ddaad48e..b158bab9 100644
--- a/docs/en/cowboy/2.0/guide/streams/index.html
+++ b/docs/en/cowboy/2.0/guide/streams/index.html
@@ -141,10 +141,10 @@ for Cowboy 1.0 were:</p></div>
- <li><a href="/docs/en/cowboy/1.0/guide">1.0</a></li>
-
<li><a href="/docs/en/cowboy/2.0/guide">2.0</a></li>
+ <li><a href="/docs/en/cowboy/1.0/guide">1.0</a></li>
+
</ul>
</div>
diff --git a/docs/en/cowboy/2.0/guide/sub_protocols/index.html b/docs/en/cowboy/2.0/guide/sub_protocols/index.html
index 29d8f3ea..96ff7661 100644
--- a/docs/en/cowboy/2.0/guide/sub_protocols/index.html
+++ b/docs/en/cowboy/2.0/guide/sub_protocols/index.html
@@ -186,10 +186,10 @@ the optional <code>terminate/3</code> callback is called, if present.</p></div>
- <li><a href="/docs/en/cowboy/1.0/guide">1.0</a></li>
-
<li><a href="/docs/en/cowboy/2.0/guide">2.0</a></li>
+ <li><a href="/docs/en/cowboy/1.0/guide">1.0</a></li>
+
</ul>
</div>
diff --git a/docs/en/cowboy/2.0/guide/ws_handlers/index.html b/docs/en/cowboy/2.0/guide/ws_handlers/index.html
index c3141194..61352974 100644
--- a/docs/en/cowboy/2.0/guide/ws_handlers/index.html
+++ b/docs/en/cowboy/2.0/guide/ws_handlers/index.html
@@ -385,10 +385,10 @@ close frame will not be sent.</p></div>
- <li><a href="/docs/en/cowboy/1.0/guide">1.0</a></li>
-
<li><a href="/docs/en/cowboy/2.0/guide">2.0</a></li>
+ <li><a href="/docs/en/cowboy/1.0/guide">1.0</a></li>
+
</ul>
</div>
diff --git a/docs/en/cowboy/2.0/guide/ws_protocol/index.html b/docs/en/cowboy/2.0/guide/ws_protocol/index.html
index 3525de69..fe390c12 100644
--- a/docs/en/cowboy/2.0/guide/ws_protocol/index.html
+++ b/docs/en/cowboy/2.0/guide/ws_protocol/index.html
@@ -187,10 +187,10 @@ the listener.</p></div>
- <li><a href="/docs/en/cowboy/1.0/guide">1.0</a></li>
-
<li><a href="/docs/en/cowboy/2.0/guide">2.0</a></li>
+ <li><a href="/docs/en/cowboy/1.0/guide">1.0</a></li>
+
</ul>
</div>
diff --git a/docs/en/cowboy/2.0/manual/cowboy.set_env/index.html b/docs/en/cowboy/2.0/manual/cowboy.set_env/index.html
index d1302c35..e4f26a29 100644
--- a/docs/en/cowboy/2.0/manual/cowboy.set_env/index.html
+++ b/docs/en/cowboy/2.0/manual/cowboy.set_env/index.html
@@ -214,10 +214,10 @@ http://www.gnu.org/software/src-highlite -->
- <li><a href="/docs/en/cowboy/1.0/manual">1.0</a></li>
-
<li><a href="/docs/en/cowboy/2.0/manual">2.0</a></li>
+ <li><a href="/docs/en/cowboy/1.0/manual">1.0</a></li>
+
</ul>
</div>
diff --git a/docs/en/cowboy/2.0/manual/cowboy.start_clear/index.html b/docs/en/cowboy/2.0/manual/cowboy.start_clear/index.html
index 5c37200d..b1a5703e 100644
--- a/docs/en/cowboy/2.0/manual/cowboy.start_clear/index.html
+++ b/docs/en/cowboy/2.0/manual/cowboy.start_clear/index.html
@@ -267,10 +267,10 @@ http://www.gnu.org/software/src-highlite -->
- <li><a href="/docs/en/cowboy/1.0/manual">1.0</a></li>
-
<li><a href="/docs/en/cowboy/2.0/manual">2.0</a></li>
+ <li><a href="/docs/en/cowboy/1.0/manual">1.0</a></li>
+
</ul>
</div>
diff --git a/docs/en/cowboy/2.0/manual/cowboy.start_tls/index.html b/docs/en/cowboy/2.0/manual/cowboy.start_tls/index.html
index 24cf5f7a..52f23eb4 100644
--- a/docs/en/cowboy/2.0/manual/cowboy.start_tls/index.html
+++ b/docs/en/cowboy/2.0/manual/cowboy.start_tls/index.html
@@ -272,10 +272,10 @@ http://www.gnu.org/software/src-highlite -->
- <li><a href="/docs/en/cowboy/1.0/manual">1.0</a></li>
-
<li><a href="/docs/en/cowboy/2.0/manual">2.0</a></li>
+ <li><a href="/docs/en/cowboy/1.0/manual">1.0</a></li>
+
</ul>
</div>
diff --git a/docs/en/cowboy/2.0/manual/cowboy.stop_listener/index.html b/docs/en/cowboy/2.0/manual/cowboy.stop_listener/index.html
index 5da3b2be..5bbdecb5 100644
--- a/docs/en/cowboy/2.0/manual/cowboy.stop_listener/index.html
+++ b/docs/en/cowboy/2.0/manual/cowboy.stop_listener/index.html
@@ -184,10 +184,10 @@ http://www.gnu.org/software/src-highlite -->
- <li><a href="/docs/en/cowboy/1.0/manual">1.0</a></li>
-
<li><a href="/docs/en/cowboy/2.0/manual">2.0</a></li>
+ <li><a href="/docs/en/cowboy/1.0/manual">1.0</a></li>
+
</ul>
</div>
diff --git a/docs/en/cowboy/2.0/manual/cowboy/index.html b/docs/en/cowboy/2.0/manual/cowboy/index.html
index fb306ef9..8480a41d 100644
--- a/docs/en/cowboy/2.0/manual/cowboy/index.html
+++ b/docs/en/cowboy/2.0/manual/cowboy/index.html
@@ -229,10 +229,10 @@ and the Websocket options in
- <li><a href="/docs/en/cowboy/1.0/manual">1.0</a></li>
-
<li><a href="/docs/en/cowboy/2.0/manual">2.0</a></li>
+ <li><a href="/docs/en/cowboy/1.0/manual">1.0</a></li>
+
</ul>
</div>
diff --git a/docs/en/cowboy/2.0/manual/cowboy_app/index.html b/docs/en/cowboy/2.0/manual/cowboy_app/index.html
index 6eb67fce..fda9b297 100644
--- a/docs/en/cowboy/2.0/manual/cowboy_app/index.html
+++ b/docs/en/cowboy/2.0/manual/cowboy_app/index.html
@@ -259,10 +259,10 @@ environment configuration parameters.</p></div>
- <li><a href="/docs/en/cowboy/1.0/manual">1.0</a></li>
-
<li><a href="/docs/en/cowboy/2.0/manual">2.0</a></li>
+ <li><a href="/docs/en/cowboy/1.0/manual">1.0</a></li>
+
</ul>
</div>
diff --git a/docs/en/cowboy/2.0/manual/cowboy_handler.terminate/index.html b/docs/en/cowboy/2.0/manual/cowboy_handler.terminate/index.html
index c8f371a4..f30dfe05 100644
--- a/docs/en/cowboy/2.0/manual/cowboy_handler.terminate/index.html
+++ b/docs/en/cowboy/2.0/manual/cowboy_handler.terminate/index.html
@@ -206,10 +206,10 @@ http://www.gnu.org/software/src-highlite -->
- <li><a href="/docs/en/cowboy/1.0/manual">1.0</a></li>
-
<li><a href="/docs/en/cowboy/2.0/manual">2.0</a></li>
+ <li><a href="/docs/en/cowboy/1.0/manual">1.0</a></li>
+
</ul>
</div>
diff --git a/docs/en/cowboy/2.0/manual/cowboy_handler/index.html b/docs/en/cowboy/2.0/manual/cowboy_handler/index.html
index a6df1dd7..b75839f7 100644
--- a/docs/en/cowboy/2.0/manual/cowboy_handler/index.html
+++ b/docs/en/cowboy/2.0/manual/cowboy_handler/index.html
@@ -193,10 +193,10 @@ custom handlers to execute the optional terminate callback:</p></div>
- <li><a href="/docs/en/cowboy/1.0/manual">1.0</a></li>
-
<li><a href="/docs/en/cowboy/2.0/manual">2.0</a></li>
+ <li><a href="/docs/en/cowboy/1.0/manual">1.0</a></li>
+
</ul>
</div>
diff --git a/docs/en/cowboy/2.0/manual/cowboy_http/index.html b/docs/en/cowboy/2.0/manual/cowboy_http/index.html
index d6cc0e87..2ba1f412 100644
--- a/docs/en/cowboy/2.0/manual/cowboy_http/index.html
+++ b/docs/en/cowboy/2.0/manual/cowboy_http/index.html
@@ -272,10 +272,10 @@ request_timeout (5000)
- <li><a href="/docs/en/cowboy/1.0/manual">1.0</a></li>
-
<li><a href="/docs/en/cowboy/2.0/manual">2.0</a></li>
+ <li><a href="/docs/en/cowboy/1.0/manual">1.0</a></li>
+
</ul>
</div>
diff --git a/docs/en/cowboy/2.0/manual/cowboy_http2/index.html b/docs/en/cowboy/2.0/manual/cowboy_http2/index.html
index a273df01..5f29d00b 100644
--- a/docs/en/cowboy/2.0/manual/cowboy_http2/index.html
+++ b/docs/en/cowboy/2.0/manual/cowboy_http2/index.html
@@ -184,10 +184,10 @@ preface_timeout (5000)
- <li><a href="/docs/en/cowboy/1.0/manual">1.0</a></li>
-
<li><a href="/docs/en/cowboy/2.0/manual">2.0</a></li>
+ <li><a href="/docs/en/cowboy/1.0/manual">1.0</a></li>
+
</ul>
</div>
diff --git a/docs/en/cowboy/2.0/manual/cowboy_loop/index.html b/docs/en/cowboy/2.0/manual/cowboy_loop/index.html
index 0011d461..51b1dbf2 100644
--- a/docs/en/cowboy/2.0/manual/cowboy_loop/index.html
+++ b/docs/en/cowboy/2.0/manual/cowboy_loop/index.html
@@ -229,10 +229,10 @@ timeout
- <li><a href="/docs/en/cowboy/1.0/manual">1.0</a></li>
-
<li><a href="/docs/en/cowboy/2.0/manual">2.0</a></li>
+ <li><a href="/docs/en/cowboy/1.0/manual">1.0</a></li>
+
</ul>
</div>
diff --git a/docs/en/cowboy/2.0/manual/cowboy_middleware/index.html b/docs/en/cowboy/2.0/manual/cowboy_middleware/index.html
index 1c6311d1..d44af480 100644
--- a/docs/en/cowboy/2.0/manual/cowboy_middleware/index.html
+++ b/docs/en/cowboy/2.0/manual/cowboy_middleware/index.html
@@ -212,10 +212,10 @@ contains the name of the listener for this connection.</p></div>
- <li><a href="/docs/en/cowboy/1.0/manual">1.0</a></li>
-
<li><a href="/docs/en/cowboy/2.0/manual">2.0</a></li>
+ <li><a href="/docs/en/cowboy/1.0/manual">1.0</a></li>
+
</ul>
</div>
diff --git a/docs/en/cowboy/2.0/manual/cowboy_req.binding/index.html b/docs/en/cowboy/2.0/manual/cowboy_req.binding/index.html
index e16db302..8e001d82 100644
--- a/docs/en/cowboy/2.0/manual/cowboy_req.binding/index.html
+++ b/docs/en/cowboy/2.0/manual/cowboy_req.binding/index.html
@@ -213,10 +213,10 @@ http://www.gnu.org/software/src-highlite -->
- <li><a href="/docs/en/cowboy/1.0/manual">1.0</a></li>
-
<li><a href="/docs/en/cowboy/2.0/manual">2.0</a></li>
+ <li><a href="/docs/en/cowboy/1.0/manual">1.0</a></li>
+
</ul>
</div>
diff --git a/docs/en/cowboy/2.0/manual/cowboy_req.bindings/index.html b/docs/en/cowboy/2.0/manual/cowboy_req.bindings/index.html
index e563c4b3..bcc63705 100644
--- a/docs/en/cowboy/2.0/manual/cowboy_req.bindings/index.html
+++ b/docs/en/cowboy/2.0/manual/cowboy_req.bindings/index.html
@@ -183,10 +183,10 @@ http://www.gnu.org/software/src-highlite -->
- <li><a href="/docs/en/cowboy/1.0/manual">1.0</a></li>
-
<li><a href="/docs/en/cowboy/2.0/manual">2.0</a></li>
+ <li><a href="/docs/en/cowboy/1.0/manual">1.0</a></li>
+
</ul>
</div>
diff --git a/docs/en/cowboy/2.0/manual/cowboy_req.body_length/index.html b/docs/en/cowboy/2.0/manual/cowboy_req.body_length/index.html
index 0b200a7c..e63be8a1 100644
--- a/docs/en/cowboy/2.0/manual/cowboy_req.body_length/index.html
+++ b/docs/en/cowboy/2.0/manual/cowboy_req.body_length/index.html
@@ -186,10 +186,10 @@ http://www.gnu.org/software/src-highlite -->
- <li><a href="/docs/en/cowboy/1.0/manual">1.0</a></li>
-
<li><a href="/docs/en/cowboy/2.0/manual">2.0</a></li>
+ <li><a href="/docs/en/cowboy/1.0/manual">1.0</a></li>
+
</ul>
</div>
diff --git a/docs/en/cowboy/2.0/manual/cowboy_req.delete_resp_header/index.html b/docs/en/cowboy/2.0/manual/cowboy_req.delete_resp_header/index.html
index 98fd4fa7..7af16c16 100644
--- a/docs/en/cowboy/2.0/manual/cowboy_req.delete_resp_header/index.html
+++ b/docs/en/cowboy/2.0/manual/cowboy_req.delete_resp_header/index.html
@@ -189,10 +189,10 @@ http://www.gnu.org/software/src-highlite -->
- <li><a href="/docs/en/cowboy/1.0/manual">1.0</a></li>
-
<li><a href="/docs/en/cowboy/2.0/manual">2.0</a></li>
+ <li><a href="/docs/en/cowboy/1.0/manual">1.0</a></li>
+
</ul>
</div>
diff --git a/docs/en/cowboy/2.0/manual/cowboy_req.has_body/index.html b/docs/en/cowboy/2.0/manual/cowboy_req.has_body/index.html
index f07226ed..584b46b0 100644
--- a/docs/en/cowboy/2.0/manual/cowboy_req.has_body/index.html
+++ b/docs/en/cowboy/2.0/manual/cowboy_req.has_body/index.html
@@ -177,10 +177,10 @@ http://www.gnu.org/software/src-highlite -->
- <li><a href="/docs/en/cowboy/1.0/manual">1.0</a></li>
-
<li><a href="/docs/en/cowboy/2.0/manual">2.0</a></li>
+ <li><a href="/docs/en/cowboy/1.0/manual">1.0</a></li>
+
</ul>
</div>
diff --git a/docs/en/cowboy/2.0/manual/cowboy_req.has_resp_body/index.html b/docs/en/cowboy/2.0/manual/cowboy_req.has_resp_body/index.html
index e533e7c7..729a3c84 100644
--- a/docs/en/cowboy/2.0/manual/cowboy_req.has_resp_body/index.html
+++ b/docs/en/cowboy/2.0/manual/cowboy_req.has_resp_body/index.html
@@ -179,10 +179,10 @@ http://www.gnu.org/software/src-highlite -->
- <li><a href="/docs/en/cowboy/1.0/manual">1.0</a></li>
-
<li><a href="/docs/en/cowboy/2.0/manual">2.0</a></li>
+ <li><a href="/docs/en/cowboy/1.0/manual">1.0</a></li>
+
</ul>
</div>
diff --git a/docs/en/cowboy/2.0/manual/cowboy_req.has_resp_header/index.html b/docs/en/cowboy/2.0/manual/cowboy_req.has_resp_header/index.html
index 18800aab..d125516d 100644
--- a/docs/en/cowboy/2.0/manual/cowboy_req.has_resp_header/index.html
+++ b/docs/en/cowboy/2.0/manual/cowboy_req.has_resp_header/index.html
@@ -189,10 +189,10 @@ http://www.gnu.org/software/src-highlite -->
- <li><a href="/docs/en/cowboy/1.0/manual">1.0</a></li>
-
<li><a href="/docs/en/cowboy/2.0/manual">2.0</a></li>
+ <li><a href="/docs/en/cowboy/1.0/manual">1.0</a></li>
+
</ul>
</div>
diff --git a/docs/en/cowboy/2.0/manual/cowboy_req.header/index.html b/docs/en/cowboy/2.0/manual/cowboy_req.header/index.html
index 1817d199..3019d2f2 100644
--- a/docs/en/cowboy/2.0/manual/cowboy_req.header/index.html
+++ b/docs/en/cowboy/2.0/manual/cowboy_req.header/index.html
@@ -219,10 +219,10 @@ http://www.gnu.org/software/src-highlite -->
- <li><a href="/docs/en/cowboy/1.0/manual">1.0</a></li>
-
<li><a href="/docs/en/cowboy/2.0/manual">2.0</a></li>
+ <li><a href="/docs/en/cowboy/1.0/manual">1.0</a></li>
+
</ul>
</div>
diff --git a/docs/en/cowboy/2.0/manual/cowboy_req.headers/index.html b/docs/en/cowboy/2.0/manual/cowboy_req.headers/index.html
index 72edc169..a1e3bb7d 100644
--- a/docs/en/cowboy/2.0/manual/cowboy_req.headers/index.html
+++ b/docs/en/cowboy/2.0/manual/cowboy_req.headers/index.html
@@ -187,10 +187,10 @@ http://www.gnu.org/software/src-highlite -->
- <li><a href="/docs/en/cowboy/1.0/manual">1.0</a></li>
-
<li><a href="/docs/en/cowboy/2.0/manual">2.0</a></li>
+ <li><a href="/docs/en/cowboy/1.0/manual">1.0</a></li>
+
</ul>
</div>
diff --git a/docs/en/cowboy/2.0/manual/cowboy_req.host/index.html b/docs/en/cowboy/2.0/manual/cowboy_req.host/index.html
index f9536bab..60fa43ca 100644
--- a/docs/en/cowboy/2.0/manual/cowboy_req.host/index.html
+++ b/docs/en/cowboy/2.0/manual/cowboy_req.host/index.html
@@ -188,10 +188,10 @@ http://www.gnu.org/software/src-highlite -->
- <li><a href="/docs/en/cowboy/1.0/manual">1.0</a></li>
-
<li><a href="/docs/en/cowboy/2.0/manual">2.0</a></li>
+ <li><a href="/docs/en/cowboy/1.0/manual">1.0</a></li>
+
</ul>
</div>
diff --git a/docs/en/cowboy/2.0/manual/cowboy_req.host_info/index.html b/docs/en/cowboy/2.0/manual/cowboy_req.host_info/index.html
index c19270e5..2a24b9d1 100644
--- a/docs/en/cowboy/2.0/manual/cowboy_req.host_info/index.html
+++ b/docs/en/cowboy/2.0/manual/cowboy_req.host_info/index.html
@@ -184,10 +184,10 @@ http://www.gnu.org/software/src-highlite -->
- <li><a href="/docs/en/cowboy/1.0/manual">1.0</a></li>
-
<li><a href="/docs/en/cowboy/2.0/manual">2.0</a></li>
+ <li><a href="/docs/en/cowboy/1.0/manual">1.0</a></li>
+
</ul>
</div>
diff --git a/docs/en/cowboy/2.0/manual/cowboy_req.match_cookies/index.html b/docs/en/cowboy/2.0/manual/cowboy_req.match_cookies/index.html
index 5c6f5ce8..e2f46f52 100644
--- a/docs/en/cowboy/2.0/manual/cowboy_req.match_cookies/index.html
+++ b/docs/en/cowboy/2.0/manual/cowboy_req.match_cookies/index.html
@@ -220,10 +220,10 @@ http://www.gnu.org/software/src-highlite -->
- <li><a href="/docs/en/cowboy/1.0/manual">1.0</a></li>
-
<li><a href="/docs/en/cowboy/2.0/manual">2.0</a></li>
+ <li><a href="/docs/en/cowboy/1.0/manual">1.0</a></li>
+
</ul>
</div>
diff --git a/docs/en/cowboy/2.0/manual/cowboy_req.match_qs/index.html b/docs/en/cowboy/2.0/manual/cowboy_req.match_qs/index.html
index 885859b7..b9883bdb 100644
--- a/docs/en/cowboy/2.0/manual/cowboy_req.match_qs/index.html
+++ b/docs/en/cowboy/2.0/manual/cowboy_req.match_qs/index.html
@@ -220,10 +220,10 @@ http://www.gnu.org/software/src-highlite -->
- <li><a href="/docs/en/cowboy/1.0/manual">1.0</a></li>
-
<li><a href="/docs/en/cowboy/2.0/manual">2.0</a></li>
+ <li><a href="/docs/en/cowboy/1.0/manual">1.0</a></li>
+
</ul>
</div>
diff --git a/docs/en/cowboy/2.0/manual/cowboy_req.method/index.html b/docs/en/cowboy/2.0/manual/cowboy_req.method/index.html
index e95aa546..929543fc 100644
--- a/docs/en/cowboy/2.0/manual/cowboy_req.method/index.html
+++ b/docs/en/cowboy/2.0/manual/cowboy_req.method/index.html
@@ -197,10 +197,10 @@ http://www.gnu.org/software/src-highlite -->
- <li><a href="/docs/en/cowboy/1.0/manual">1.0</a></li>
-
<li><a href="/docs/en/cowboy/2.0/manual">2.0</a></li>
+ <li><a href="/docs/en/cowboy/1.0/manual">1.0</a></li>
+
</ul>
</div>
diff --git a/docs/en/cowboy/2.0/manual/cowboy_req.parse_cookies/index.html b/docs/en/cowboy/2.0/manual/cowboy_req.parse_cookies/index.html
index 10154a52..8c7515d9 100644
--- a/docs/en/cowboy/2.0/manual/cowboy_req.parse_cookies/index.html
+++ b/docs/en/cowboy/2.0/manual/cowboy_req.parse_cookies/index.html
@@ -188,10 +188,10 @@ http://www.gnu.org/software/src-highlite -->
- <li><a href="/docs/en/cowboy/1.0/manual">1.0</a></li>
-
<li><a href="/docs/en/cowboy/2.0/manual">2.0</a></li>
+ <li><a href="/docs/en/cowboy/1.0/manual">1.0</a></li>
+
</ul>
</div>
diff --git a/docs/en/cowboy/2.0/manual/cowboy_req.parse_header/index.html b/docs/en/cowboy/2.0/manual/cowboy_req.parse_header/index.html
index a49eda43..c8fe1fda 100644
--- a/docs/en/cowboy/2.0/manual/cowboy_req.parse_header/index.html
+++ b/docs/en/cowboy/2.0/manual/cowboy_req.parse_header/index.html
@@ -380,10 +380,10 @@ http://www.gnu.org/software/src-highlite -->
- <li><a href="/docs/en/cowboy/1.0/manual">1.0</a></li>
-
<li><a href="/docs/en/cowboy/2.0/manual">2.0</a></li>
+ <li><a href="/docs/en/cowboy/1.0/manual">1.0</a></li>
+
</ul>
</div>
diff --git a/docs/en/cowboy/2.0/manual/cowboy_req.parse_qs/index.html b/docs/en/cowboy/2.0/manual/cowboy_req.parse_qs/index.html
index 6608047c..2f088da0 100644
--- a/docs/en/cowboy/2.0/manual/cowboy_req.parse_qs/index.html
+++ b/docs/en/cowboy/2.0/manual/cowboy_req.parse_qs/index.html
@@ -214,10 +214,10 @@ http://www.gnu.org/software/src-highlite -->
- <li><a href="/docs/en/cowboy/1.0/manual">1.0</a></li>
-
<li><a href="/docs/en/cowboy/2.0/manual">2.0</a></li>
+ <li><a href="/docs/en/cowboy/1.0/manual">1.0</a></li>
+
</ul>
</div>
diff --git a/docs/en/cowboy/2.0/manual/cowboy_req.path/index.html b/docs/en/cowboy/2.0/manual/cowboy_req.path/index.html
index b5969bdf..3e73d158 100644
--- a/docs/en/cowboy/2.0/manual/cowboy_req.path/index.html
+++ b/docs/en/cowboy/2.0/manual/cowboy_req.path/index.html
@@ -187,10 +187,10 @@ http://www.gnu.org/software/src-highlite -->
- <li><a href="/docs/en/cowboy/1.0/manual">1.0</a></li>
-
<li><a href="/docs/en/cowboy/2.0/manual">2.0</a></li>
+ <li><a href="/docs/en/cowboy/1.0/manual">1.0</a></li>
+
</ul>
</div>
diff --git a/docs/en/cowboy/2.0/manual/cowboy_req.path_info/index.html b/docs/en/cowboy/2.0/manual/cowboy_req.path_info/index.html
index 2836bff4..4abef226 100644
--- a/docs/en/cowboy/2.0/manual/cowboy_req.path_info/index.html
+++ b/docs/en/cowboy/2.0/manual/cowboy_req.path_info/index.html
@@ -184,10 +184,10 @@ http://www.gnu.org/software/src-highlite -->
- <li><a href="/docs/en/cowboy/1.0/manual">1.0</a></li>
-
<li><a href="/docs/en/cowboy/2.0/manual">2.0</a></li>
+ <li><a href="/docs/en/cowboy/1.0/manual">1.0</a></li>
+
</ul>
</div>
diff --git a/docs/en/cowboy/2.0/manual/cowboy_req.peer/index.html b/docs/en/cowboy/2.0/manual/cowboy_req.peer/index.html
index a225ea10..e254fdac 100644
--- a/docs/en/cowboy/2.0/manual/cowboy_req.peer/index.html
+++ b/docs/en/cowboy/2.0/manual/cowboy_req.peer/index.html
@@ -193,10 +193,10 @@ http://www.gnu.org/software/src-highlite -->
- <li><a href="/docs/en/cowboy/1.0/manual">1.0</a></li>
-
<li><a href="/docs/en/cowboy/2.0/manual">2.0</a></li>
+ <li><a href="/docs/en/cowboy/1.0/manual">1.0</a></li>
+
</ul>
</div>
diff --git a/docs/en/cowboy/2.0/manual/cowboy_req.port/index.html b/docs/en/cowboy/2.0/manual/cowboy_req.port/index.html
index 75d4d52a..79571a89 100644
--- a/docs/en/cowboy/2.0/manual/cowboy_req.port/index.html
+++ b/docs/en/cowboy/2.0/manual/cowboy_req.port/index.html
@@ -187,10 +187,10 @@ http://www.gnu.org/software/src-highlite -->
- <li><a href="/docs/en/cowboy/1.0/manual">1.0</a></li>
-
<li><a href="/docs/en/cowboy/2.0/manual">2.0</a></li>
+ <li><a href="/docs/en/cowboy/1.0/manual">1.0</a></li>
+
</ul>
</div>
diff --git a/docs/en/cowboy/2.0/manual/cowboy_req.push/index.html b/docs/en/cowboy/2.0/manual/cowboy_req.push/index.html
index 9ec1d39b..c29b2abc 100644
--- a/docs/en/cowboy/2.0/manual/cowboy_req.push/index.html
+++ b/docs/en/cowboy/2.0/manual/cowboy_req.push/index.html
@@ -238,10 +238,10 @@ http://www.gnu.org/software/src-highlite -->
- <li><a href="/docs/en/cowboy/1.0/manual">1.0</a></li>
-
<li><a href="/docs/en/cowboy/2.0/manual">2.0</a></li>
+ <li><a href="/docs/en/cowboy/1.0/manual">1.0</a></li>
+
</ul>
</div>
diff --git a/docs/en/cowboy/2.0/manual/cowboy_req.qs/index.html b/docs/en/cowboy/2.0/manual/cowboy_req.qs/index.html
index ab58d986..7c9992fc 100644
--- a/docs/en/cowboy/2.0/manual/cowboy_req.qs/index.html
+++ b/docs/en/cowboy/2.0/manual/cowboy_req.qs/index.html
@@ -186,10 +186,10 @@ http://www.gnu.org/software/src-highlite -->
- <li><a href="/docs/en/cowboy/1.0/manual">1.0</a></li>
-
<li><a href="/docs/en/cowboy/2.0/manual">2.0</a></li>
+ <li><a href="/docs/en/cowboy/1.0/manual">1.0</a></li>
+
</ul>
</div>
diff --git a/docs/en/cowboy/2.0/manual/cowboy_req.read_body/index.html b/docs/en/cowboy/2.0/manual/cowboy_req.read_body/index.html
index 598e2af6..1e529f07 100644
--- a/docs/en/cowboy/2.0/manual/cowboy_req.read_body/index.html
+++ b/docs/en/cowboy/2.0/manual/cowboy_req.read_body/index.html
@@ -240,10 +240,10 @@ http://www.gnu.org/software/src-highlite -->
- <li><a href="/docs/en/cowboy/1.0/manual">1.0</a></li>
-
<li><a href="/docs/en/cowboy/2.0/manual">2.0</a></li>
+ <li><a href="/docs/en/cowboy/1.0/manual">1.0</a></li>
+
</ul>
</div>
diff --git a/docs/en/cowboy/2.0/manual/cowboy_req.read_part/index.html b/docs/en/cowboy/2.0/manual/cowboy_req.read_part/index.html
index c57ff5a1..ef837159 100644
--- a/docs/en/cowboy/2.0/manual/cowboy_req.read_part/index.html
+++ b/docs/en/cowboy/2.0/manual/cowboy_req.read_part/index.html
@@ -259,10 +259,10 @@ http://www.gnu.org/software/src-highlite -->
- <li><a href="/docs/en/cowboy/1.0/manual">1.0</a></li>
-
<li><a href="/docs/en/cowboy/2.0/manual">2.0</a></li>
+ <li><a href="/docs/en/cowboy/1.0/manual">1.0</a></li>
+
</ul>
</div>
diff --git a/docs/en/cowboy/2.0/manual/cowboy_req.read_part_body/index.html b/docs/en/cowboy/2.0/manual/cowboy_req.read_part_body/index.html
index c3973c8a..316290a6 100644
--- a/docs/en/cowboy/2.0/manual/cowboy_req.read_part_body/index.html
+++ b/docs/en/cowboy/2.0/manual/cowboy_req.read_part_body/index.html
@@ -227,10 +227,10 @@ http://www.gnu.org/software/src-highlite -->
- <li><a href="/docs/en/cowboy/1.0/manual">1.0</a></li>
-
<li><a href="/docs/en/cowboy/2.0/manual">2.0</a></li>
+ <li><a href="/docs/en/cowboy/1.0/manual">1.0</a></li>
+
</ul>
</div>
diff --git a/docs/en/cowboy/2.0/manual/cowboy_req.read_urlencoded_body/index.html b/docs/en/cowboy/2.0/manual/cowboy_req.read_urlencoded_body/index.html
index 9e2339a0..9fc10632 100644
--- a/docs/en/cowboy/2.0/manual/cowboy_req.read_urlencoded_body/index.html
+++ b/docs/en/cowboy/2.0/manual/cowboy_req.read_urlencoded_body/index.html
@@ -223,10 +223,10 @@ http://www.gnu.org/software/src-highlite -->
- <li><a href="/docs/en/cowboy/1.0/manual">1.0</a></li>
-
<li><a href="/docs/en/cowboy/2.0/manual">2.0</a></li>
+ <li><a href="/docs/en/cowboy/1.0/manual">1.0</a></li>
+
</ul>
</div>
diff --git a/docs/en/cowboy/2.0/manual/cowboy_req.reply/index.html b/docs/en/cowboy/2.0/manual/cowboy_req.reply/index.html
index 0e93998e..8f0fb062 100644
--- a/docs/en/cowboy/2.0/manual/cowboy_req.reply/index.html
+++ b/docs/en/cowboy/2.0/manual/cowboy_req.reply/index.html
@@ -259,10 +259,10 @@ http://www.gnu.org/software/src-highlite -->
- <li><a href="/docs/en/cowboy/1.0/manual">1.0</a></li>
-
<li><a href="/docs/en/cowboy/2.0/manual">2.0</a></li>
+ <li><a href="/docs/en/cowboy/1.0/manual">1.0</a></li>
+
</ul>
</div>
diff --git a/docs/en/cowboy/2.0/manual/cowboy_req.scheme/index.html b/docs/en/cowboy/2.0/manual/cowboy_req.scheme/index.html
index 3d84e0b7..b6130715 100644
--- a/docs/en/cowboy/2.0/manual/cowboy_req.scheme/index.html
+++ b/docs/en/cowboy/2.0/manual/cowboy_req.scheme/index.html
@@ -186,10 +186,10 @@ http://www.gnu.org/software/src-highlite -->
- <li><a href="/docs/en/cowboy/1.0/manual">1.0</a></li>
-
<li><a href="/docs/en/cowboy/2.0/manual">2.0</a></li>
+ <li><a href="/docs/en/cowboy/1.0/manual">1.0</a></li>
+
</ul>
</div>
diff --git a/docs/en/cowboy/2.0/manual/cowboy_req.set_resp_body/index.html b/docs/en/cowboy/2.0/manual/cowboy_req.set_resp_body/index.html
index 86fdad1d..4ce59e7e 100644
--- a/docs/en/cowboy/2.0/manual/cowboy_req.set_resp_body/index.html
+++ b/docs/en/cowboy/2.0/manual/cowboy_req.set_resp_body/index.html
@@ -234,10 +234,10 @@ http://www.gnu.org/software/src-highlite -->
- <li><a href="/docs/en/cowboy/1.0/manual">1.0</a></li>
-
<li><a href="/docs/en/cowboy/2.0/manual">2.0</a></li>
+ <li><a href="/docs/en/cowboy/1.0/manual">1.0</a></li>
+
</ul>
</div>
diff --git a/docs/en/cowboy/2.0/manual/cowboy_req.set_resp_cookie/index.html b/docs/en/cowboy/2.0/manual/cowboy_req.set_resp_cookie/index.html
index 29ad83a1..896bc941 100644
--- a/docs/en/cowboy/2.0/manual/cowboy_req.set_resp_cookie/index.html
+++ b/docs/en/cowboy/2.0/manual/cowboy_req.set_resp_cookie/index.html
@@ -264,10 +264,10 @@ http://www.gnu.org/software/src-highlite -->
- <li><a href="/docs/en/cowboy/1.0/manual">1.0</a></li>
-
<li><a href="/docs/en/cowboy/2.0/manual">2.0</a></li>
+ <li><a href="/docs/en/cowboy/1.0/manual">1.0</a></li>
+
</ul>
</div>
diff --git a/docs/en/cowboy/2.0/manual/cowboy_req.set_resp_header/index.html b/docs/en/cowboy/2.0/manual/cowboy_req.set_resp_header/index.html
index 0aded893..6d156092 100644
--- a/docs/en/cowboy/2.0/manual/cowboy_req.set_resp_header/index.html
+++ b/docs/en/cowboy/2.0/manual/cowboy_req.set_resp_header/index.html
@@ -215,10 +215,10 @@ http://www.gnu.org/software/src-highlite -->
- <li><a href="/docs/en/cowboy/1.0/manual">1.0</a></li>
-
<li><a href="/docs/en/cowboy/2.0/manual">2.0</a></li>
+ <li><a href="/docs/en/cowboy/1.0/manual">1.0</a></li>
+
</ul>
</div>
diff --git a/docs/en/cowboy/2.0/manual/cowboy_req.stream_body/index.html b/docs/en/cowboy/2.0/manual/cowboy_req.stream_body/index.html
index 86f93a6e..cec1929c 100644
--- a/docs/en/cowboy/2.0/manual/cowboy_req.stream_body/index.html
+++ b/docs/en/cowboy/2.0/manual/cowboy_req.stream_body/index.html
@@ -213,10 +213,10 @@ http://www.gnu.org/software/src-highlite -->
- <li><a href="/docs/en/cowboy/1.0/manual">1.0</a></li>
-
<li><a href="/docs/en/cowboy/2.0/manual">2.0</a></li>
+ <li><a href="/docs/en/cowboy/1.0/manual">1.0</a></li>
+
</ul>
</div>
diff --git a/docs/en/cowboy/2.0/manual/cowboy_req.stream_reply/index.html b/docs/en/cowboy/2.0/manual/cowboy_req.stream_reply/index.html
index 936c0952..997d0b88 100644
--- a/docs/en/cowboy/2.0/manual/cowboy_req.stream_reply/index.html
+++ b/docs/en/cowboy/2.0/manual/cowboy_req.stream_reply/index.html
@@ -244,10 +244,10 @@ http://www.gnu.org/software/src-highlite -->
- <li><a href="/docs/en/cowboy/1.0/manual">1.0</a></li>
-
<li><a href="/docs/en/cowboy/2.0/manual">2.0</a></li>
+ <li><a href="/docs/en/cowboy/1.0/manual">1.0</a></li>
+
</ul>
</div>
diff --git a/docs/en/cowboy/2.0/manual/cowboy_req.uri/index.html b/docs/en/cowboy/2.0/manual/cowboy_req.uri/index.html
index 02eb12ec..b74795e6 100644
--- a/docs/en/cowboy/2.0/manual/cowboy_req.uri/index.html
+++ b/docs/en/cowboy/2.0/manual/cowboy_req.uri/index.html
@@ -274,10 +274,10 @@ http://www.gnu.org/software/src-highlite -->
- <li><a href="/docs/en/cowboy/1.0/manual">1.0</a></li>
-
<li><a href="/docs/en/cowboy/2.0/manual">2.0</a></li>
+ <li><a href="/docs/en/cowboy/1.0/manual">1.0</a></li>
+
</ul>
</div>
diff --git a/docs/en/cowboy/2.0/manual/cowboy_req.version/index.html b/docs/en/cowboy/2.0/manual/cowboy_req.version/index.html
index 2a1705bf..85b71ae8 100644
--- a/docs/en/cowboy/2.0/manual/cowboy_req.version/index.html
+++ b/docs/en/cowboy/2.0/manual/cowboy_req.version/index.html
@@ -185,10 +185,10 @@ http://www.gnu.org/software/src-highlite -->
- <li><a href="/docs/en/cowboy/1.0/manual">1.0</a></li>
-
<li><a href="/docs/en/cowboy/2.0/manual">2.0</a></li>
+ <li><a href="/docs/en/cowboy/1.0/manual">1.0</a></li>
+
</ul>
</div>
diff --git a/docs/en/cowboy/2.0/manual/cowboy_req/index.html b/docs/en/cowboy/2.0/manual/cowboy_req/index.html
index 5215a154..8e4bd733 100644
--- a/docs/en/cowboy/2.0/manual/cowboy_req/index.html
+++ b/docs/en/cowboy/2.0/manual/cowboy_req/index.html
@@ -471,10 +471,10 @@ content-length header.</p></div>
- <li><a href="/docs/en/cowboy/1.0/manual">1.0</a></li>
-
<li><a href="/docs/en/cowboy/2.0/manual">2.0</a></li>
+ <li><a href="/docs/en/cowboy/1.0/manual">1.0</a></li>
+
</ul>
</div>
diff --git a/docs/en/cowboy/2.0/manual/cowboy_rest/index.html b/docs/en/cowboy/2.0/manual/cowboy_rest/index.html
index ec5a2761..5f3f05c5 100644
--- a/docs/en/cowboy/2.0/manual/cowboy_rest/index.html
+++ b/docs/en/cowboy/2.0/manual/cowboy_rest/index.html
@@ -741,10 +741,10 @@ accept-language headers when necessary.</p></div>
- <li><a href="/docs/en/cowboy/1.0/manual">1.0</a></li>
-
<li><a href="/docs/en/cowboy/2.0/manual">2.0</a></li>
+ <li><a href="/docs/en/cowboy/1.0/manual">1.0</a></li>
+
</ul>
</div>
diff --git a/docs/en/cowboy/2.0/manual/cowboy_router.compile/index.html b/docs/en/cowboy/2.0/manual/cowboy_router.compile/index.html
index 57f2c171..4127076c 100644
--- a/docs/en/cowboy/2.0/manual/cowboy_router.compile/index.html
+++ b/docs/en/cowboy/2.0/manual/cowboy_router.compile/index.html
@@ -184,10 +184,10 @@ http://www.gnu.org/software/src-highlite -->
- <li><a href="/docs/en/cowboy/1.0/manual">1.0</a></li>
-
<li><a href="/docs/en/cowboy/2.0/manual">2.0</a></li>
+ <li><a href="/docs/en/cowboy/1.0/manual">1.0</a></li>
+
</ul>
</div>
diff --git a/docs/en/cowboy/2.0/manual/cowboy_router/index.html b/docs/en/cowboy/2.0/manual/cowboy_router/index.html
index 47996cad..87ff24d1 100644
--- a/docs/en/cowboy/2.0/manual/cowboy_router/index.html
+++ b/docs/en/cowboy/2.0/manual/cowboy_router/index.html
@@ -207,10 +207,10 @@ using the <code>...</code> syntax.</p></div>
- <li><a href="/docs/en/cowboy/1.0/manual">1.0</a></li>
-
<li><a href="/docs/en/cowboy/2.0/manual">2.0</a></li>
+ <li><a href="/docs/en/cowboy/1.0/manual">1.0</a></li>
+
</ul>
</div>
diff --git a/docs/en/cowboy/2.0/manual/cowboy_static/index.html b/docs/en/cowboy/2.0/manual/cowboy_static/index.html
index 2410bd9f..b99be9de 100644
--- a/docs/en/cowboy/2.0/manual/cowboy_static/index.html
+++ b/docs/en/cowboy/2.0/manual/cowboy_static/index.html
@@ -272,10 +272,10 @@ http://www.gnu.org/software/src-highlite -->
- <li><a href="/docs/en/cowboy/1.0/manual">1.0</a></li>
-
<li><a href="/docs/en/cowboy/2.0/manual">2.0</a></li>
+ <li><a href="/docs/en/cowboy/1.0/manual">1.0</a></li>
+
</ul>
</div>
diff --git a/docs/en/cowboy/2.0/manual/cowboy_sub_protocol/index.html b/docs/en/cowboy/2.0/manual/cowboy_sub_protocol/index.html
index 8a76b50d..da1831ce 100644
--- a/docs/en/cowboy/2.0/manual/cowboy_sub_protocol/index.html
+++ b/docs/en/cowboy/2.0/manual/cowboy_sub_protocol/index.html
@@ -185,10 +185,10 @@ description of the return values.</p></div>
- <li><a href="/docs/en/cowboy/1.0/manual">1.0</a></li>
-
<li><a href="/docs/en/cowboy/2.0/manual">2.0</a></li>
+ <li><a href="/docs/en/cowboy/1.0/manual">1.0</a></li>
+
</ul>
</div>
diff --git a/docs/en/cowboy/2.0/manual/cowboy_websocket/index.html b/docs/en/cowboy/2.0/manual/cowboy_websocket/index.html
index 7c87a896..8a772db5 100644
--- a/docs/en/cowboy/2.0/manual/cowboy_websocket/index.html
+++ b/docs/en/cowboy/2.0/manual/cowboy_websocket/index.html
@@ -343,10 +343,10 @@ timeout
- <li><a href="/docs/en/cowboy/1.0/manual">1.0</a></li>
-
<li><a href="/docs/en/cowboy/2.0/manual">2.0</a></li>
+ <li><a href="/docs/en/cowboy/1.0/manual">1.0</a></li>
+
</ul>
</div>
diff --git a/docs/en/cowboy/2.0/manual/http_status_codes/index.html b/docs/en/cowboy/2.0/manual/http_status_codes/index.html
index c07963e8..f46825b9 100644
--- a/docs/en/cowboy/2.0/manual/http_status_codes/index.html
+++ b/docs/en/cowboy/2.0/manual/http_status_codes/index.html
@@ -368,10 +368,10 @@ client and the connection is closed.</p></div>
- <li><a href="/docs/en/cowboy/1.0/manual">1.0</a></li>
-
<li><a href="/docs/en/cowboy/2.0/manual">2.0</a></li>
+ <li><a href="/docs/en/cowboy/1.0/manual">1.0</a></li>
+
</ul>
</div>
diff --git a/docs/en/cowboy/2.0/manual/index.html b/docs/en/cowboy/2.0/manual/index.html
index 0bb0704d..ec47432c 100644
--- a/docs/en/cowboy/2.0/manual/index.html
+++ b/docs/en/cowboy/2.0/manual/index.html
@@ -259,10 +259,10 @@ environment configuration parameters.</p></div>
- <li><a href="/docs/en/cowboy/1.0/manual">1.0</a></li>
-
<li><a href="/docs/en/cowboy/2.0/manual">2.0</a></li>
+ <li><a href="/docs/en/cowboy/1.0/manual">1.0</a></li>
+
</ul>
</div>
diff --git a/docs/index.html b/docs/index.html
index 849efa1c..62f09e67 100644
--- a/docs/index.html
+++ b/docs/index.html
@@ -79,17 +79,17 @@
<ul>
- <li><a href="/docs/en/cowboy/1.0/guide">Cowboy 1.0 User Guide</a></li>
+ <li><a href="/docs/en/cowboy/2.0/guide">Cowboy 2.0 User Guide</a></li>
- <li><a href="/docs/en/cowboy/1.0/manual">Cowboy 1.0 Function Reference</a></li>
+ <li><a href="/docs/en/cowboy/2.0/manual">Cowboy 2.0 Function Reference</a></li>
- <li><a href="/docs/en/cowboy/2.0/guide">Cowboy 2.0 User Guide</a></li>
+ <li><a href="/docs/en/cowboy/1.0/guide">Cowboy 1.0 User Guide</a></li>
- <li><a href="/docs/en/cowboy/2.0/manual">Cowboy 2.0 Function Reference</a></li>
+ <li><a href="/docs/en/cowboy/1.0/manual">Cowboy 1.0 Function Reference</a></li>
</ul>
diff --git a/donate/index.html b/donate/index.html
index 2c603e21..47bbdcd4 100644
--- a/donate/index.html
+++ b/donate/index.html
@@ -71,8 +71,8 @@
<div class="sect2">
<h3 id="_like_my_work_donate">Like my work? Donate!</h3>
-<div class="paragraph"><p>You can donate via Paypal to reward me, Loïc Hoguin, for my
-work on open source software including Cowboy and Erlang.mk.</p></div>
+<div class="paragraph"><p>Donate to Loïc Hoguin because his work on Cowboy
+and Erlang.mk is fantastic:</p></div>
<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]">
@@ -103,10 +103,12 @@ work on open source software including Cowboy and Erlang.mk.</p></div>
+
+
<div class="sect2">
<h3 id="_like_my_work_donate">Like my work? Donate!</h3>
-<div class="paragraph"><p>You can donate via Paypal to reward me, Loïc Hoguin, for my
-work on open source software including Cowboy and Erlang.mk.</p></div>
+<div class="paragraph"><p>Donate to Loïc Hoguin because his work on Cowboy
+and Erlang.mk is fantastic:</p></div>
<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]">
diff --git a/index.html b/index.html
index cef205d7..a895e7da 100644
--- a/index.html
+++ b/index.html
@@ -142,10 +142,10 @@
<a class="btn btn-large" href="https://github.com/ninenines/cowboy">Source Code</a>
- <a class="btn btn-large" href="/docs/en/cowboy/1.0/guide/">User Guide</a>
+ <a class="btn btn-large" href="/docs/en/cowboy/2.0/guide/">User Guide</a>
- <a class="btn btn-large" href="/docs/en/cowboy/1.0/manual/">Manual</a>
+ <a class="btn btn-large" href="/docs/en/cowboy/2.0/manual/">Manual</a>
</p>
@@ -261,6 +261,8 @@
+
+
<div class="paragraph"><p>The Erlanger Playbook is now available!<br />
<a href="/articles/erlanger-playbook">Buy now</a> — <a href="/services">Become a Cowboy project sponsor</a></p></div>
diff --git a/index.xml b/index.xml
index 3b75c017..6d4b70a1 100644
--- a/index.xml
+++ b/index.xml
@@ -6,10 +6,129 @@
<description>Recent content on Nine Nines</description>
<generator>Hugo -- gohugo.io</generator>
<language>en-us</language>
- <lastBuildDate>Mon, 28 Nov 2016 00:00:00 +0100</lastBuildDate>
+ <lastBuildDate>Tue, 03 Jan 2017 00:00:00 +0100</lastBuildDate>
<atom:link href="https://ninenines.eu/index.xml" rel="self" type="application/rss+xml" />
<item>
+ <title>Cowboy 2.0 pre-release 4</title>
+ <link>https://ninenines.eu/articles/cowboy-2.0.0-pre.4/</link>
+ <pubDate>Tue, 03 Jan 2017 00:00:00 +0100</pubDate>
+
+ <guid>https://ninenines.eu/articles/cowboy-2.0.0-pre.4/</guid>
+ <description>&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;Cowboy &lt;code&gt;2.0.0-pre.4&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.
+While I would not recommend putting it in production
+just yet, I do recommend you start writing new
+applications with this Cowboy version.&lt;/p&gt;&lt;/div&gt;
+&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;The most significant changes in the pre-release are:&lt;/p&gt;&lt;/div&gt;
+&lt;div class=&#34;ulist&#34;&gt;&lt;ul&gt;
+&lt;li&gt;
+&lt;p&gt;
+A new architecture: there now is one process per
+ connection and one process per request. This was
+ done because HTTP/2 allows running requests concurrently.
+&lt;/p&gt;
+&lt;/li&gt;
+&lt;li&gt;
+&lt;p&gt;
+Stream handlers. Every request, response and data goes
+ through stream handlers. They are meant to replace hooks
+ and more. They will be documented in a future pre-release.
+ Check &lt;code&gt;cowboy_stream&lt;/code&gt; and &lt;code&gt;cowboy_stream_h&lt;/code&gt; if interested.
+&lt;/p&gt;
+&lt;/li&gt;
+&lt;li&gt;
+&lt;p&gt;
+Numerous changes to the &lt;code&gt;cowboy_req&lt;/code&gt; interface. This
+ is very close to final. Check the manual for what changed.
+&lt;/p&gt;
+&lt;/li&gt;
+&lt;li&gt;
+&lt;p&gt;
+The Req object is no longer passed in Websocket callbacks.
+&lt;/p&gt;
+&lt;/li&gt;
+&lt;li&gt;
+&lt;p&gt;
+It is now possible to send frames directly from &lt;code&gt;websocket_init/1&lt;/code&gt;.
+&lt;/p&gt;
+&lt;/li&gt;
+&lt;li&gt;
+&lt;p&gt;
+SPDY support was removed, now that we have HTTP/2.
+&lt;/p&gt;
+&lt;/li&gt;
+&lt;li&gt;
+&lt;p&gt;
+Update Ranch to 1.3. We still depend on Cowlib master
+ for the time being.
+&lt;/p&gt;
+&lt;/li&gt;
+&lt;li&gt;
+&lt;p&gt;
+A much improved manual.
+&lt;/p&gt;
+&lt;/li&gt;
+&lt;/ul&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;I am quite proud of the manual right now. While more
+improvements can be made, what we have now is way better
+than before. Feedback for further improvements is welcome!&lt;/p&gt;&lt;/div&gt;
+&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;This is a significant step toward Cowboy 2.0. Almost all
+the breaking changes are in. A few more pre-releases are
+planned and will be released on a weekly basis (with exceptions).&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 18.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;
+&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;Cowboy 2.0 will be released once all the breaking changes
+are completed and the temporarily removed features are
+added back.&lt;/p&gt;&lt;/div&gt;
+&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;Thanks for your patience. I know it took a long time.&lt;/p&gt;&lt;/div&gt;
+&lt;hr/&gt;
+&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;Half-price on all donations because I need a new hat:&lt;/p&gt;&lt;/div&gt;
+&lt;form action=&#34;https://www.paypal.com/cgi-bin/webscr&#34; method=&#34;post&#34; style=&#34;display:inline&#34;&gt;
+&lt;input type=&#34;hidden&#34; name=&#34;cmd&#34; value=&#34;_donations&#34;&gt;
+&lt;input type=&#34;hidden&#34; name=&#34;business&#34; value=&#34;[email protected]&#34;&gt;
+&lt;input type=&#34;hidden&#34; name=&#34;lc&#34; value=&#34;FR&#34;&gt;
+&lt;input type=&#34;hidden&#34; name=&#34;item_name&#34; value=&#34;Loic Hoguin&#34;&gt;
+&lt;input type=&#34;hidden&#34; name=&#34;item_number&#34; value=&#34;99s&#34;&gt;
+&lt;input type=&#34;hidden&#34; name=&#34;currency_code&#34; value=&#34;EUR&#34;&gt;
+&lt;input type=&#34;hidden&#34; name=&#34;bn&#34; value=&#34;PP-DonationsBF:btn_donate_LG.gif:NonHosted&#34;&gt;
+&lt;input type=&#34;image&#34; src=&#34;https://www.paypalobjects.com/en_US/i/btn/btn_donate_LG.gif&#34; border=&#34;0&#34; name=&#34;submit&#34; alt=&#34;PayPal - The safer, easier way to pay online!&#34;&gt;
+&lt;img alt=&#34;&#34; border=&#34;0&#34; src=&#34;https://www.paypalobjects.com/fr_FR/i/scr/pixel.gif&#34; width=&#34;1&#34; height=&#34;1&#34;&gt;
+&lt;/form&gt;
+</description>
+ </item>
+
+ <item>
<title>Ranch 1.3</title>
<link>https://ninenines.eu/articles/ranch-1.3/</link>
<pubDate>Mon, 28 Nov 2016 00:00:00 +0100</pubDate>
@@ -340,8 +459,8 @@ of my projects? I would happily include them on this page.&lt;/p&gt;&lt;/div&gt;
<guid>https://ninenines.eu/donate/</guid>
<description>&lt;div class=&#34;sect2&#34;&gt;
&lt;h3 id=&#34;_like_my_work_donate&#34;&gt;Like my work? Donate!&lt;/h3&gt;
-&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;You can donate via Paypal to reward me, Loïc Hoguin, for my
-work on open source software including Cowboy and Erlang.mk.&lt;/p&gt;&lt;/div&gt;
+&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;Donate to Loïc Hoguin because his work on Cowboy
+and Erlang.mk is fantastic:&lt;/p&gt;&lt;/div&gt;
&lt;form action=&#34;https://www.paypal.com/cgi-bin/webscr&#34; method=&#34;post&#34; style=&#34;display:inline&#34;&gt;
&lt;input type=&#34;hidden&#34; name=&#34;cmd&#34; value=&#34;_donations&#34;&gt;
&lt;input type=&#34;hidden&#34; name=&#34;business&#34; value=&#34;[email protected]&#34;&gt;
@@ -1171,154 +1290,5 @@ thoughts that went into this rather than just the conclusion.&lt;/p&gt;&lt;/div&
</description>
</item>
- <item>
- <title>January 2014 status</title>
- <link>https://ninenines.eu/articles/january-2014-status/</link>
- <pubDate>Tue, 07 Jan 2014 00:00:00 +0100</pubDate>
-
- <guid>https://ninenines.eu/articles/january-2014-status/</guid>
- <description>&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;I will now be regularly writing posts about project status, plans
-and hopes for the future.&lt;/p&gt;&lt;/div&gt;
-&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;Before that though, there&amp;#8217;s one important news to share.&lt;/p&gt;&lt;/div&gt;
-&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;Until a year ago all development was financed through consulting
-and development services. This worked alright but too much time was
-spent doing things that didn&amp;#8217;t benefit the open source projects.
-And that didn&amp;#8217;t make me happy at all. Because I like being happy
-I stopped that for the most part and spent the year figuring things
-out, experimenting and discussing with people about it.&lt;/p&gt;&lt;/div&gt;
-&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;What makes me happy is answering these &#34;what if&#34; questions.
-Ranch and Cowboy are a direct product of that, as they originate
-from the &#34;what if we could have a server running different protocols
-on different ports but all part of the same application?&#34;; Erlang.mk
-is a bit different: &#34;this works great for me, what if it could
-become the standard solution for building Erlang applications?&#34;.&lt;/p&gt;&lt;/div&gt;
-&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;When I successfully answer the question, this becomes a project
-that may end up largely benefiting the Erlang community. I love
-Erlang and I love enabling people to build awesome products based
-on my projects. It&amp;#8217;s a lot more rewarding than activities like
-consulting where you only help one company at a time. And it&amp;#8217;s
-also a much better use of my time as this has a bigger impact on
-the community.&lt;/p&gt;&lt;/div&gt;
-&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;The hard part is to figure out how to be able to spend 100%
-of the time on projects that you basically give away for free,
-and still be able to afford living.&lt;/p&gt;&lt;/div&gt;
-&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;The immediate solution was getting work sponsored by the
-&lt;a href=&#34;http://www.leofs.org/&#34;&gt;LeoFS project&lt;/a&gt;. LeoFS is a great
-distributed file storage that I can only recommend to anyone who
-needs to store files or large pieces of data. The sponsorship
-works pretty great, and spurred development of the SPDY code in
-Cowboy amongst other things, plus a couple upcoming projects
-done more recently and getting a final touch before release.&lt;/p&gt;&lt;/div&gt;
-&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;It turns out sponsoring works great. So I&amp;#8217;m thinking of
-expanding on it and hopefully get enough sponsoring for fulltime
-open source development. So I figured out a few things that
-can give incentive to companies willing to sponsor.&lt;/p&gt;&lt;/div&gt;
-&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;Sponsors can &lt;em&gt;request that a particular version of Cowboy
-be maintained indefinitely&lt;/em&gt; (as long as they&amp;#8217;re sponsoring).
-This means fixes will be backported. This doesn&amp;#8217;t include
-features although I can take requests depending on feasability.&lt;/p&gt;&lt;/div&gt;
-&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;Sponsors can &lt;em&gt;have a direct, private line of communication&lt;/em&gt;,
-useful when they need help debugging or optimizing their product.&lt;/p&gt;&lt;/div&gt;
-&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;Sponsors can &lt;em&gt;get their name associated with one of the
-project&lt;/em&gt; and get a good standing in the community thanks
-to this. They would be featured in the README of the project
-which is viewed by hundreds of developers daily.&lt;/p&gt;&lt;/div&gt;
-&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;Sponsors can &lt;em&gt;be listed on this website&lt;/em&gt;. I will modify
-the front page when we get a few more sponsors, they will be
-featured below the carousel of projects.&lt;/p&gt;&lt;/div&gt;
-&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;Please &lt;a href=&#34;mailto:[email protected]&#34;&gt;contact us&lt;/a&gt; if
-you are interested in sponsoring, and say how much you are willing
-to sponsor. The goal here is only to have enough money to make a
-living and attend a few conferences. There&amp;#8217;s an upper limit in the
-amount needed per year, so the more sponsors there are the cheaper
-it becomes to everyone.&lt;/p&gt;&lt;/div&gt;
-&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;The upper limit stems from the new legal entity that will replace
-the current Nine Nines. This is mostly to lower the legal costs and
-simplify the administrative stuff and allow me to dedicate all my
-time on what&amp;#8217;s important. From your point of view it&amp;#8217;s business as
-usual.&lt;/p&gt;&lt;/div&gt;
-&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;Now on to project statuses and future works.&lt;/p&gt;&lt;/div&gt;
-&lt;div class=&#34;sect1&#34;&gt;
-&lt;h2 id=&#34;_cowboy&#34;&gt;Cowboy&lt;/h2&gt;
-&lt;div class=&#34;sectionbody&#34;&gt;
-&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;Cowboy is getting ready for a 1.0 release. Once multipart support
-is in, all that&amp;#8217;s left is finishing the guide, improving tests and
-finishing moving code to the cowlib project. I hope everything will
-be ready around the time R17B is released.&lt;/p&gt;&lt;/div&gt;
-&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;I already dream of some API breaking changes after 1.0, which
-would essentially become 2.0 when they&amp;#8217;re done. An extensive survey
-will be setup after the 1.0 release to get more information on what
-people like and don&amp;#8217;t like about the API.&lt;/p&gt;&lt;/div&gt;
-&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;And of course, when clients start implementing HTTP/2.0 then we
-will too.&lt;/p&gt;&lt;/div&gt;
-&lt;/div&gt;
-&lt;/div&gt;
-&lt;div class=&#34;sect1&#34;&gt;
-&lt;h2 id=&#34;_ranch&#34;&gt;Ranch&lt;/h2&gt;
-&lt;div class=&#34;sectionbody&#34;&gt;
-&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;Ranch is also getting close to 1.0. I am currently writing a
-test suite for upgrades. After that I also would like to write
-a chaos_monkey test suite and add a getting started chapter to the
-guide.&lt;/p&gt;&lt;/div&gt;
-&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;Ranch is pretty solid otherwise, it&amp;#8217;s hard to foresee new
-features at this point.&lt;/p&gt;&lt;/div&gt;
-&lt;/div&gt;
-&lt;/div&gt;
-&lt;div class=&#34;sect1&#34;&gt;
-&lt;h2 id=&#34;_erlang_mk&#34;&gt;Erlang.mk&lt;/h2&gt;
-&lt;div class=&#34;sectionbody&#34;&gt;
-&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;I didn&amp;#8217;t expect this project to become popular. Glad it did though.&lt;/p&gt;&lt;/div&gt;
-&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;Windows support is planned, but will require GNU Make 4.
-Thankfully, it&amp;#8217;s available at least through cygwin. Make,
-Git and Erlang will be the only required dependencies
-because the rest of the external calls will be converted to
-using Guile, a Scheme included since GNU Make 4. So it is
-Guile that will download the needed files, magically fill
-the list of modules in the &lt;em&gt;.app&lt;/em&gt; file and so on, allowing
-us to provide a truly cross-platform solution without
-losing on the performance we benefit from using Make.&lt;/p&gt;&lt;/div&gt;
-&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;Also note that it is possible to check whether Guile
-is available so we will be able to fallback to the current
-code for older systems.&lt;/p&gt;&lt;/div&gt;
-&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;I am also thinking about adding an extra column to the package
-index, indicating the preferred tag or commit number to be used.
-This would allow us to skip the individual &lt;code&gt;dep&lt;/code&gt; lines
-entirely if the information in the package index is good enough.
-And committing that file to your project would be the only thing
-needed to lock the dependencies. Of course if a &lt;code&gt;dep&lt;/code&gt;
-line is specified this would instead override the file.&lt;/p&gt;&lt;/div&gt;
-&lt;/div&gt;
-&lt;/div&gt;
-&lt;div class=&#34;sect1&#34;&gt;
-&lt;h2 id=&#34;_alien_shaman&#34;&gt;Alien Shaman&lt;/h2&gt;
-&lt;div class=&#34;sectionbody&#34;&gt;
-&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;This is the two-parts project requested by the LeoFS team.
-This is essentially a &#34;distributed bigwig&#34;. I am hoping to
-have a prototype up in a few days.&lt;/p&gt;&lt;/div&gt;
-&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;Alien is the part that allows writing and enabling probes
-in your nodes. Probes send events which may get filtered before
-being forwarded to their destination. The events may be sent
-to a local process, a remote process, over UDP, TCP or SSL.
-Events may also be received by a process called a relay, which
-may be used to group or aggregate data before it is being sent
-over the network, reducing the footprint overall.&lt;/p&gt;&lt;/div&gt;
-&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;Shaman is the UI for it. It will ultimately be able to display
-any event as long as it&amp;#8217;s configured to do so. Events may be logs,
-numeric values displayed on graphs updated in real time, lists of
-items like processes and so on.&lt;/p&gt;&lt;/div&gt;
-&lt;/div&gt;
-&lt;/div&gt;
-&lt;div class=&#34;sect1&#34;&gt;
-&lt;h2 id=&#34;_feedback&#34;&gt;Feedback&lt;/h2&gt;
-&lt;div class=&#34;sectionbody&#34;&gt;
-&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;That&amp;#8217;s it for today! There will be another status update once
-Shaman is out. But for now I have to focus on it.&lt;/p&gt;&lt;/div&gt;
-&lt;div class=&#34;paragraph&#34;&gt;&lt;p&gt;As always, please send feedback on the projects, this post,
-the sponsoring idea, anything really! Thanks.&lt;/p&gt;&lt;/div&gt;
-&lt;/div&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 605c17e1..13765ad2 100644
--- a/services/index.html
+++ b/services/index.html
@@ -188,10 +188,12 @@ the same restrictions apply.</p></div>
+
+
<div class="sect2">
<h3 id="_like_my_work_donate">Like my work? Donate!</h3>
-<div class="paragraph"><p>You can donate via Paypal to reward me, Loïc Hoguin, for my
-work on open source software including Cowboy and Erlang.mk.</p></div>
+<div class="paragraph"><p>Donate to Loïc Hoguin because his work on Cowboy
+and Erlang.mk is fantastic:</p></div>
<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]">
diff --git a/sitemap.xml b/sitemap.xml
index 3231177f..07cc9230 100644
--- a/sitemap.xml
+++ b/sitemap.xml
@@ -3,7 +3,12 @@
<url>
<loc>https://ninenines.eu/</loc>
- <lastmod>2016-11-28T00:00:00+01:00</lastmod>
+ <lastmod>2017-01-03T00:00:00+01:00</lastmod>
+ </url>
+
+ <url>
+ <loc>https://ninenines.eu/articles/cowboy-2.0.0-pre.4/</loc>
+ <lastmod>2017-01-03T00:00:00+01:00</lastmod>
</url>
<url>