summaryrefslogtreecommitdiffstats
path: root/articles
diff options
context:
space:
mode:
Diffstat (limited to 'articles')
-rw-r--r--articles/asciideck/index.html4
-rw-r--r--articles/cowboy-2.0.0-pre.4/index.html4
-rw-r--r--articles/cowboy-2.0.0-rc.1/index.html4
-rw-r--r--articles/cowboy-2.0.0-rc.2/index.html4
-rw-r--r--articles/cowboy-2.0.0/index.html4
-rw-r--r--articles/cowboy-2.1.0/index.html4
-rw-r--r--articles/cowboy-2.11.0/index.html4
-rw-r--r--articles/cowboy-2.12.0/index.html4
-rw-r--r--articles/cowboy-2.13.0-performance/index.html4
-rw-r--r--articles/cowboy-2.13.0/index.html373
-rw-r--r--articles/cowboy-2.2.0/index.html4
-rw-r--r--articles/cowboy-2.3.0/index.html4
-rw-r--r--articles/cowboy-2.4.0/index.html4
-rw-r--r--articles/cowboy-2.5.0/index.html4
-rw-r--r--articles/cowboy-2.6.0/index.html4
-rw-r--r--articles/cowboy-2.7.0/index.html4
-rw-r--r--articles/cowboy-2.8.0/index.html4
-rw-r--r--articles/cowboy-2.9.0/index.html4
-rw-r--r--articles/cowboy2-qs/index.html4
-rw-r--r--articles/discord-server/index.html4
-rw-r--r--articles/dont-let-it-crash/index.html4
-rw-r--r--articles/erlang-meetup-10-septembre-2019/index.html4
-rw-r--r--articles/erlang-scalability/index.html4
-rw-r--r--articles/erlang-validate-utf8/index.html4
-rw-r--r--articles/erlang.mk-and-relx/index.html4
-rw-r--r--articles/erlanger-playbook-september-2015-update/index.html4
-rw-r--r--articles/erlanger-playbook/index.html4
-rw-r--r--articles/farwest-funded/index.html4
-rw-r--r--articles/github-sponsors/index.html4
-rw-r--r--articles/gun-1.0.0-rc.1/index.html4
-rw-r--r--articles/gun-1.0.0/index.html4
-rw-r--r--articles/gun-1.2.0/index.html4
-rw-r--r--articles/gun-1.3.0/index.html4
-rw-r--r--articles/gun-2.0.0-pre.1/index.html4
-rw-r--r--articles/gun-2.0.0-pre.2/index.html4
-rw-r--r--articles/gun-2.0.0-rc.1/index.html4
-rw-r--r--articles/gun-2.0.0/index.html4
-rw-r--r--articles/index.html38
-rw-r--r--articles/index.xml15
-rw-r--r--articles/january-2014-status/index.html4
-rw-r--r--articles/joe_the_rubber_duck/index.html4
-rw-r--r--articles/merry-christmas-2018/index.html4
-rw-r--r--articles/merry-christmas-2019/index.html4
-rw-r--r--articles/ml-archives/index.html4
-rw-r--r--articles/on-open-source/index.html4
-rw-r--r--articles/otp-26/index.html4
-rw-r--r--articles/page/2/index.html35
-rw-r--r--articles/page/3/index.html34
-rw-r--r--articles/page/4/index.html17
-rw-r--r--articles/ranch-1.3/index.html4
-rw-r--r--articles/ranch-1.6.0/index.html4
-rw-r--r--articles/ranch-1.7.0/index.html4
-rw-r--r--articles/ranch-2.0.0-rc.1/index.html4
-rw-r--r--articles/ranch-2.0.0/index.html4
-rw-r--r--articles/ranch-2.1.0/index.html4
-rw-r--r--articles/ranch-2.2.0/index.html4
-rw-r--r--articles/ranch-ftp/index.html4
-rw-r--r--articles/the-elephant-in-the-room/index.html4
-rw-r--r--articles/the-gateway-trilogy/index.html4
-rw-r--r--articles/the-story-so-far/index.html4
-rw-r--r--articles/tictactoe/index.html4
-rw-r--r--articles/website-update/index.html4
-rw-r--r--articles/xerl-0.1-empty-modules/index.html4
-rw-r--r--articles/xerl-0.2-two-modules/index.html4
-rw-r--r--articles/xerl-0.3-atomic-expressions/index.html4
-rw-r--r--articles/xerl-0.4-expression-separator/index.html4
-rw-r--r--articles/xerl-0.5-intermediate-module/index.html4
67 files changed, 703 insertions, 53 deletions
diff --git a/articles/asciideck/index.html b/articles/asciideck/index.html
index 60c5caa7..ccfc586a 100644
--- a/articles/asciideck/index.html
+++ b/articles/asciideck/index.html
@@ -109,6 +109,10 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="https://ninenines.eu/articles/cowboy-2.13.0/">Cowboy 2.13</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/ranch-2.2.0/">Ranch 2.2</a></li>
diff --git a/articles/cowboy-2.0.0-pre.4/index.html b/articles/cowboy-2.0.0-pre.4/index.html
index bc90fa98..a9851d44 100644
--- a/articles/cowboy-2.0.0-pre.4/index.html
+++ b/articles/cowboy-2.0.0-pre.4/index.html
@@ -128,6 +128,10 @@
+ <li><a href="https://ninenines.eu/articles/cowboy-2.13.0/">Cowboy 2.13</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/ranch-2.2.0/">Ranch 2.2</a></li>
diff --git a/articles/cowboy-2.0.0-rc.1/index.html b/articles/cowboy-2.0.0-rc.1/index.html
index 592a64e2..dd909d01 100644
--- a/articles/cowboy-2.0.0-rc.1/index.html
+++ b/articles/cowboy-2.0.0-rc.1/index.html
@@ -99,6 +99,10 @@
+ <li><a href="https://ninenines.eu/articles/cowboy-2.13.0/">Cowboy 2.13</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/ranch-2.2.0/">Ranch 2.2</a></li>
diff --git a/articles/cowboy-2.0.0-rc.2/index.html b/articles/cowboy-2.0.0-rc.2/index.html
index 50911725..3027b9af 100644
--- a/articles/cowboy-2.0.0-rc.2/index.html
+++ b/articles/cowboy-2.0.0-rc.2/index.html
@@ -92,6 +92,10 @@
+ <li><a href="https://ninenines.eu/articles/cowboy-2.13.0/">Cowboy 2.13</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/ranch-2.2.0/">Ranch 2.2</a></li>
diff --git a/articles/cowboy-2.0.0/index.html b/articles/cowboy-2.0.0/index.html
index 513d86c8..2742e197 100644
--- a/articles/cowboy-2.0.0/index.html
+++ b/articles/cowboy-2.0.0/index.html
@@ -98,6 +98,10 @@
+ <li><a href="https://ninenines.eu/articles/cowboy-2.13.0/">Cowboy 2.13</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/ranch-2.2.0/">Ranch 2.2</a></li>
diff --git a/articles/cowboy-2.1.0/index.html b/articles/cowboy-2.1.0/index.html
index 2d45e0cd..29ac1887 100644
--- a/articles/cowboy-2.1.0/index.html
+++ b/articles/cowboy-2.1.0/index.html
@@ -95,6 +95,10 @@
+ <li><a href="https://ninenines.eu/articles/cowboy-2.13.0/">Cowboy 2.13</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/ranch-2.2.0/">Ranch 2.2</a></li>
diff --git a/articles/cowboy-2.11.0/index.html b/articles/cowboy-2.11.0/index.html
index 561c3622..f78364a5 100644
--- a/articles/cowboy-2.11.0/index.html
+++ b/articles/cowboy-2.11.0/index.html
@@ -88,6 +88,10 @@
+ <li><a href="https://ninenines.eu/articles/cowboy-2.13.0/">Cowboy 2.13</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/ranch-2.2.0/">Ranch 2.2</a></li>
diff --git a/articles/cowboy-2.12.0/index.html b/articles/cowboy-2.12.0/index.html
index b0f22169..118d825f 100644
--- a/articles/cowboy-2.12.0/index.html
+++ b/articles/cowboy-2.12.0/index.html
@@ -89,6 +89,10 @@
+ <li><a href="https://ninenines.eu/articles/cowboy-2.13.0/">Cowboy 2.13</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/ranch-2.2.0/">Ranch 2.2</a></li>
diff --git a/articles/cowboy-2.13.0-performance/index.html b/articles/cowboy-2.13.0-performance/index.html
index e1f3d183..fb1a0c59 100644
--- a/articles/cowboy-2.13.0-performance/index.html
+++ b/articles/cowboy-2.13.0-performance/index.html
@@ -103,6 +103,10 @@
+ <li><a href="https://ninenines.eu/articles/cowboy-2.13.0/">Cowboy 2.13</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/ranch-2.2.0/">Ranch 2.2</a></li>
diff --git a/articles/cowboy-2.13.0/index.html b/articles/cowboy-2.13.0/index.html
new file mode 100644
index 00000000..0aec7b32
--- /dev/null
+++ b/articles/cowboy-2.13.0/index.html
@@ -0,0 +1,373 @@
+<!DOCTYPE html>
+<html lang="en">
+
+<head>
+ <meta charset="utf-8">
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
+ <meta name="description" content="">
+ <meta name="author" content="Loïc Hoguin based on a design from (Soft10) Pol Cámara">
+
+ <title>Nine Nines: Cowboy 2.13</title>
+
+ <link href='https://fonts.googleapis.com/css?family=Open+Sans:400,700,400italic' rel='stylesheet' type='text/css'>
+ <link href="/css/99s.css?r=7" rel="stylesheet">
+
+ <link rel="shortcut icon" href="/img/ico/favicon.ico">
+ <link rel="apple-touch-icon-precomposed" sizes="114x114" href="/img/ico/apple-touch-icon-114.png">
+ <link rel="apple-touch-icon-precomposed" sizes="72x72" href="/img/ico/apple-touch-icon-72.png">
+ <link rel="apple-touch-icon-precomposed" href="/img/ico/apple-touch-icon-57.png">
+
+ </head>
+
+
+<body class="">
+ <header id="page-head">
+ <div id="topbar" class="container">
+ <div class="row">
+ <div class="span2">
+ <h1 id="logo"><a href="/" title="99s">99s</a></h1>
+ </div>
+ <div class="span10">
+
+ <div id="side-header">
+ <nav>
+ <ul>
+ <li 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="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.13</span></h1>
+ <p class="date">
+ <span class="year">2025</span>
+ <span class="day-month">18 Feb</span>
+ </p>
+</header>
+
+<p>Cowboy <code>2.13.0</code> has been released!</p>
+<p>Cowboy 2.13 focuses on improving the performance of Websocket, as well as the HTTP protocols. It also contains a variety of new features and bug fixes.</p>
+<p>The performance improvements were detailed in the <a href="https://ninenines.eu/articles/cowboy-2.13.0-performance/">Performance improvements in Cowboy 2.13</a> article.</p>
+<p>Cowboy 2.13 is the first release to feature experimental support for the HTTP/3 protocol, including Websocket over HTTP/3.</p>
+<p>Cowboy 2.13 requires Erlang/OTP 24.0 or greater. It is tested and supported on Linux, macOS and Windows.</p>
+<p>A complete list of changes can be found in the migration guide: <a href="https://ninenines.eu/docs/en/cowboy/2.13/guide/migrating_from_2.12/">Migrating from Cowboy 2.12 to 2.13</a>.</p>
+<p>You can donate to this project via <a href="https://github.com/sponsors/essen">GitHub Sponsors</a>.</p>
+<p>As usual, feedback is appreciated, and issues or questions should be sent via Github tickets or discussions. We also have a new Discord server. <a href="https://discord.gg/x25nNq2fFE">Join Erlang OSS Discord now!</a></p>
+
+
+</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.13.0/">Cowboy 2.13</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/ranch-2.2.0/">Ranch 2.2</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/cowboy-2.13.0-performance/">Performance improvements in Cowboy 2.13</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/discord-server/">Erlang OSS Discord server</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/cowboy-2.12.0/">Cowboy 2.12</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/cowboy-2.11.0/">Cowboy 2.11</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/otp-26/">Erlang/OTP 26</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/gun-2.0.0/">Gun 2.0</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/ranch-2.1.0/">Ranch 2.1</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/cowboy-2.9.0/">Cowboy 2.9</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/gun-2.0.0-rc.1/">Gun 2.0 release candidate 1</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/ranch-2.0.0/">Ranch 2.0</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/cowboy-2.8.0/">Cowboy 2.8</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/the-gateway-trilogy/">The Gateway Trilogy</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/gun-2.0.0-pre.2/">Gun 2.0 pre-release 2</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/merry-christmas-2019/">Merry Christmas 2019: New Beginnings</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/github-sponsors/">GitHub Sponsors</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/cowboy-2.7.0/">Cowboy 2.7</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/gun-2.0.0-pre.1/">Gun 2.0 pre-release 1</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/erlang-meetup-10-septembre-2019/">Erlang meetup: 10 septembre 2019</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/ranch-2.0.0-rc.1/">Ranch 2.0 release candidate 1</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/joe_the_rubber_duck/">Joe Armstrong the rubber duck</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/merry-christmas-2018/">Merry Christmas 2018: A Recap</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/cowboy-2.6.0/">Cowboy 2.6</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/ranch-1.7.0/">Ranch 1.7</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/cowboy-2.5.0/">Cowboy 2.5</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/gun-1.3.0/">Gun 1.3</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/gun-1.2.0/">Gun 1.2</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/ranch-1.6.0/">Ranch 1.6</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/gun-1.0.0/">Gun 1.0</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/asciideck/">Asciideck: Asciidoc for Erlang</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/gun-1.0.0-rc.1/">Gun 1.0 release candidate 1</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/cowboy-2.4.0/">Cowboy 2.4</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/cowboy-2.3.0/">Cowboy 2.3</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/cowboy-2.2.0/">Cowboy 2.2</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/cowboy-2.1.0/">Cowboy 2.1</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/cowboy-2.0.0/">Cowboy 2.0</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/cowboy-2.0.0-rc.2/">Cowboy 2.0 release candidate 2</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/cowboy-2.0.0-rc.1/">Cowboy 2.0 release candidate 1</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/the-elephant-in-the-room/">The elephant in the room</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/dont-let-it-crash/">Don&#39;t let it crash</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/cowboy-2.0.0-pre.4/">Cowboy 2.0 pre-release 4</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/ranch-1.3/">Ranch 1.3</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/ml-archives/">Mailing list archived</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/website-update/">Website update</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/erlanger-playbook-september-2015-update/">The Erlanger Playbook September 2015 Update</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/erlanger-playbook/">The Erlanger Playbook</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/erlang-validate-utf8/">Validating UTF-8 binaries with Erlang</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/on-open-source/">On open source</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/the-story-so-far/">The story so far</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/cowboy2-qs/">Cowboy 2.0 and query strings</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/january-2014-status/">January 2014 status</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/farwest-funded/">Farwest got funded!</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/erlang.mk-and-relx/">Build Erlang releases with Erlang.mk and Relx</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/xerl-0.5-intermediate-module/">Xerl: intermediate module</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/xerl-0.4-expression-separator/">Xerl: expression separator</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/erlang-scalability/">Erlang Scalability</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/xerl-0.3-atomic-expressions/">Xerl: atomic expressions</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/xerl-0.2-two-modules/">Xerl: two modules</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/xerl-0.1-empty-modules/">Xerl: empty modules</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/ranch-ftp/">Build an FTP Server with Ranch in 30 Minutes</a></li>
+
+
+
+ <li><a href="https://ninenines.eu/articles/tictactoe/">Erlang Tic Tac Toe</a></li>
+
+
+</ul>
+
+<h3>Feedback</h3>
+<p>Feel free to <a href="mailto:[email protected]">email us</a>
+if you found any mistake or need clarification on any of the
+articles.</p>
+
+</div>
+</div>
+</div>
+</div>
+
+ <footer>
+ <div class="container">
+ <div class="row">
+ <div class="span6">
+ <p id="scroll-top"><a href="#">↑ Scroll to top</a></p>
+ <nav>
+ <ul>
+ <li><a href="mailto:[email protected]" title="Contact us">Contact us</a></li><li><a href="https://github.com/ninenines/ninenines.github.io" title="Github repository">Contribute to this site</a></li>
+ </ul>
+ </nav>
+ </div>
+ <div class="span6 credits">
+ <p><img src="/img/footer_logo.png"></p>
+ <p>Copyright &copy; Loïc Hoguin 2012-2018</p>
+ </div>
+ </div>
+ </div>
+ </footer>
+
+
+ <script src="/js/custom.js"></script>
+ </body>
+</html>
+
diff --git a/articles/cowboy-2.2.0/index.html b/articles/cowboy-2.2.0/index.html
index 49684942..871dc33c 100644
--- a/articles/cowboy-2.2.0/index.html
+++ b/articles/cowboy-2.2.0/index.html
@@ -93,6 +93,10 @@
+ <li><a href="https://ninenines.eu/articles/cowboy-2.13.0/">Cowboy 2.13</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/ranch-2.2.0/">Ranch 2.2</a></li>
diff --git a/articles/cowboy-2.3.0/index.html b/articles/cowboy-2.3.0/index.html
index c15697e2..ad41bb42 100644
--- a/articles/cowboy-2.3.0/index.html
+++ b/articles/cowboy-2.3.0/index.html
@@ -85,6 +85,10 @@
+ <li><a href="https://ninenines.eu/articles/cowboy-2.13.0/">Cowboy 2.13</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/ranch-2.2.0/">Ranch 2.2</a></li>
diff --git a/articles/cowboy-2.4.0/index.html b/articles/cowboy-2.4.0/index.html
index c2974367..a71d8046 100644
--- a/articles/cowboy-2.4.0/index.html
+++ b/articles/cowboy-2.4.0/index.html
@@ -87,6 +87,10 @@
+ <li><a href="https://ninenines.eu/articles/cowboy-2.13.0/">Cowboy 2.13</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/ranch-2.2.0/">Ranch 2.2</a></li>
diff --git a/articles/cowboy-2.5.0/index.html b/articles/cowboy-2.5.0/index.html
index 02e99619..e6f6be96 100644
--- a/articles/cowboy-2.5.0/index.html
+++ b/articles/cowboy-2.5.0/index.html
@@ -91,6 +91,10 @@
+ <li><a href="https://ninenines.eu/articles/cowboy-2.13.0/">Cowboy 2.13</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/ranch-2.2.0/">Ranch 2.2</a></li>
diff --git a/articles/cowboy-2.6.0/index.html b/articles/cowboy-2.6.0/index.html
index b662f884..6cf18362 100644
--- a/articles/cowboy-2.6.0/index.html
+++ b/articles/cowboy-2.6.0/index.html
@@ -88,6 +88,10 @@
+ <li><a href="https://ninenines.eu/articles/cowboy-2.13.0/">Cowboy 2.13</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/ranch-2.2.0/">Ranch 2.2</a></li>
diff --git a/articles/cowboy-2.7.0/index.html b/articles/cowboy-2.7.0/index.html
index 719b4506..604508be 100644
--- a/articles/cowboy-2.7.0/index.html
+++ b/articles/cowboy-2.7.0/index.html
@@ -89,6 +89,10 @@
+ <li><a href="https://ninenines.eu/articles/cowboy-2.13.0/">Cowboy 2.13</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/ranch-2.2.0/">Ranch 2.2</a></li>
diff --git a/articles/cowboy-2.8.0/index.html b/articles/cowboy-2.8.0/index.html
index ef5fe655..8df53254 100644
--- a/articles/cowboy-2.8.0/index.html
+++ b/articles/cowboy-2.8.0/index.html
@@ -88,6 +88,10 @@
+ <li><a href="https://ninenines.eu/articles/cowboy-2.13.0/">Cowboy 2.13</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/ranch-2.2.0/">Ranch 2.2</a></li>
diff --git a/articles/cowboy-2.9.0/index.html b/articles/cowboy-2.9.0/index.html
index c54f858a..105fd467 100644
--- a/articles/cowboy-2.9.0/index.html
+++ b/articles/cowboy-2.9.0/index.html
@@ -87,6 +87,10 @@
+ <li><a href="https://ninenines.eu/articles/cowboy-2.13.0/">Cowboy 2.13</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/ranch-2.2.0/">Ranch 2.2</a></li>
diff --git a/articles/cowboy2-qs/index.html b/articles/cowboy2-qs/index.html
index 1d7c38a4..6202e813 100644
--- a/articles/cowboy2-qs/index.html
+++ b/articles/cowboy2-qs/index.html
@@ -129,6 +129,10 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="https://ninenines.eu/articles/cowboy-2.13.0/">Cowboy 2.13</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/ranch-2.2.0/">Ranch 2.2</a></li>
diff --git a/articles/discord-server/index.html b/articles/discord-server/index.html
index fac351ca..8009c348 100644
--- a/articles/discord-server/index.html
+++ b/articles/discord-server/index.html
@@ -85,6 +85,10 @@
+ <li><a href="https://ninenines.eu/articles/cowboy-2.13.0/">Cowboy 2.13</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/ranch-2.2.0/">Ranch 2.2</a></li>
diff --git a/articles/dont-let-it-crash/index.html b/articles/dont-let-it-crash/index.html
index d5e9ed8b..42524da9 100644
--- a/articles/dont-let-it-crash/index.html
+++ b/articles/dont-let-it-crash/index.html
@@ -104,6 +104,10 @@
+ <li><a href="https://ninenines.eu/articles/cowboy-2.13.0/">Cowboy 2.13</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/ranch-2.2.0/">Ranch 2.2</a></li>
diff --git a/articles/erlang-meetup-10-septembre-2019/index.html b/articles/erlang-meetup-10-septembre-2019/index.html
index 6e75b007..409f0b81 100644
--- a/articles/erlang-meetup-10-septembre-2019/index.html
+++ b/articles/erlang-meetup-10-septembre-2019/index.html
@@ -84,6 +84,10 @@
+ <li><a href="https://ninenines.eu/articles/cowboy-2.13.0/">Cowboy 2.13</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/ranch-2.2.0/">Ranch 2.2</a></li>
diff --git a/articles/erlang-scalability/index.html b/articles/erlang-scalability/index.html
index 1de58a9e..9a1aa8d6 100644
--- a/articles/erlang-scalability/index.html
+++ b/articles/erlang-scalability/index.html
@@ -116,6 +116,10 @@
+ <li><a href="https://ninenines.eu/articles/cowboy-2.13.0/">Cowboy 2.13</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/ranch-2.2.0/">Ranch 2.2</a></li>
diff --git a/articles/erlang-validate-utf8/index.html b/articles/erlang-validate-utf8/index.html
index 1122acc5..7e44c1dd 100644
--- a/articles/erlang-validate-utf8/index.html
+++ b/articles/erlang-validate-utf8/index.html
@@ -232,6 +232,10 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="https://ninenines.eu/articles/cowboy-2.13.0/">Cowboy 2.13</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/ranch-2.2.0/">Ranch 2.2</a></li>
diff --git a/articles/erlang.mk-and-relx/index.html b/articles/erlang.mk-and-relx/index.html
index 1faf7d59..d1385ad0 100644
--- a/articles/erlang.mk-and-relx/index.html
+++ b/articles/erlang.mk-and-relx/index.html
@@ -118,6 +118,10 @@ cowboy-0.8.5 erlydtl-0.7.0 ninenines-0.2.0 stdlib-1.19.1</pre></div></div>
+ <li><a href="https://ninenines.eu/articles/cowboy-2.13.0/">Cowboy 2.13</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/ranch-2.2.0/">Ranch 2.2</a></li>
diff --git a/articles/erlanger-playbook-september-2015-update/index.html b/articles/erlanger-playbook-september-2015-update/index.html
index ee0ec3e2..016cd9e3 100644
--- a/articles/erlanger-playbook-september-2015-update/index.html
+++ b/articles/erlanger-playbook-september-2015-update/index.html
@@ -87,6 +87,10 @@
+ <li><a href="https://ninenines.eu/articles/cowboy-2.13.0/">Cowboy 2.13</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/ranch-2.2.0/">Ranch 2.2</a></li>
diff --git a/articles/erlanger-playbook/index.html b/articles/erlanger-playbook/index.html
index 92e8d252..7f917449 100644
--- a/articles/erlanger-playbook/index.html
+++ b/articles/erlanger-playbook/index.html
@@ -128,6 +128,10 @@
+ <li><a href="https://ninenines.eu/articles/cowboy-2.13.0/">Cowboy 2.13</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/ranch-2.2.0/">Ranch 2.2</a></li>
diff --git a/articles/farwest-funded/index.html b/articles/farwest-funded/index.html
index ee501b92..f1f867df 100644
--- a/articles/farwest-funded/index.html
+++ b/articles/farwest-funded/index.html
@@ -88,6 +88,10 @@
+ <li><a href="https://ninenines.eu/articles/cowboy-2.13.0/">Cowboy 2.13</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/ranch-2.2.0/">Ranch 2.2</a></li>
diff --git a/articles/github-sponsors/index.html b/articles/github-sponsors/index.html
index 00a68b0e..e7910dc0 100644
--- a/articles/github-sponsors/index.html
+++ b/articles/github-sponsors/index.html
@@ -85,6 +85,10 @@
+ <li><a href="https://ninenines.eu/articles/cowboy-2.13.0/">Cowboy 2.13</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/ranch-2.2.0/">Ranch 2.2</a></li>
diff --git a/articles/gun-1.0.0-rc.1/index.html b/articles/gun-1.0.0-rc.1/index.html
index 1cbdeb33..b26375f3 100644
--- a/articles/gun-1.0.0-rc.1/index.html
+++ b/articles/gun-1.0.0-rc.1/index.html
@@ -89,6 +89,10 @@
+ <li><a href="https://ninenines.eu/articles/cowboy-2.13.0/">Cowboy 2.13</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/ranch-2.2.0/">Ranch 2.2</a></li>
diff --git a/articles/gun-1.0.0/index.html b/articles/gun-1.0.0/index.html
index 531904fa..7731c63c 100644
--- a/articles/gun-1.0.0/index.html
+++ b/articles/gun-1.0.0/index.html
@@ -88,6 +88,10 @@
+ <li><a href="https://ninenines.eu/articles/cowboy-2.13.0/">Cowboy 2.13</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/ranch-2.2.0/">Ranch 2.2</a></li>
diff --git a/articles/gun-1.2.0/index.html b/articles/gun-1.2.0/index.html
index 998ada9c..2219e622 100644
--- a/articles/gun-1.2.0/index.html
+++ b/articles/gun-1.2.0/index.html
@@ -88,6 +88,10 @@
+ <li><a href="https://ninenines.eu/articles/cowboy-2.13.0/">Cowboy 2.13</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/ranch-2.2.0/">Ranch 2.2</a></li>
diff --git a/articles/gun-1.3.0/index.html b/articles/gun-1.3.0/index.html
index 21261580..15246fe7 100644
--- a/articles/gun-1.3.0/index.html
+++ b/articles/gun-1.3.0/index.html
@@ -86,6 +86,10 @@
+ <li><a href="https://ninenines.eu/articles/cowboy-2.13.0/">Cowboy 2.13</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/ranch-2.2.0/">Ranch 2.2</a></li>
diff --git a/articles/gun-2.0.0-pre.1/index.html b/articles/gun-2.0.0-pre.1/index.html
index 69729fa6..8635550e 100644
--- a/articles/gun-2.0.0-pre.1/index.html
+++ b/articles/gun-2.0.0-pre.1/index.html
@@ -93,6 +93,10 @@
+ <li><a href="https://ninenines.eu/articles/cowboy-2.13.0/">Cowboy 2.13</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/ranch-2.2.0/">Ranch 2.2</a></li>
diff --git a/articles/gun-2.0.0-pre.2/index.html b/articles/gun-2.0.0-pre.2/index.html
index 3caaaad0..9aa8cca4 100644
--- a/articles/gun-2.0.0-pre.2/index.html
+++ b/articles/gun-2.0.0-pre.2/index.html
@@ -91,6 +91,10 @@
+ <li><a href="https://ninenines.eu/articles/cowboy-2.13.0/">Cowboy 2.13</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/ranch-2.2.0/">Ranch 2.2</a></li>
diff --git a/articles/gun-2.0.0-rc.1/index.html b/articles/gun-2.0.0-rc.1/index.html
index a26bb8df..10b3e94c 100644
--- a/articles/gun-2.0.0-rc.1/index.html
+++ b/articles/gun-2.0.0-rc.1/index.html
@@ -96,6 +96,10 @@
+ <li><a href="https://ninenines.eu/articles/cowboy-2.13.0/">Cowboy 2.13</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/ranch-2.2.0/">Ranch 2.2</a></li>
diff --git a/articles/gun-2.0.0/index.html b/articles/gun-2.0.0/index.html
index 21f6095b..3053cf81 100644
--- a/articles/gun-2.0.0/index.html
+++ b/articles/gun-2.0.0/index.html
@@ -98,6 +98,10 @@
+ <li><a href="https://ninenines.eu/articles/cowboy-2.13.0/">Cowboy 2.13</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/ranch-2.2.0/">Ranch 2.2</a></li>
diff --git a/articles/index.html b/articles/index.html
index a6e2b17f..d1cf2a6a 100644
--- a/articles/index.html
+++ b/articles/index.html
@@ -65,6 +65,26 @@
<article class="blog_item">
<header>
+ <h2><a href="https://ninenines.eu/articles/cowboy-2.13.0/">Cowboy 2.13</a></h2>
+ <p class="date">
+ <span class="year">2025</span>
+ <span class="day-month">18 Feb</span>
+ </p>
+ </header>
+
+ <p>Cowboy 2.13.0 has been released!
+Cowboy 2.13 focuses on improving the performance of Websocket, as well as the HTTP protocols. It also contains a variety of new features and bug fixes.
+The performance improvements were detailed in the Performance improvements in Cowboy 2.13 article.
+Cowboy 2.13 is the first release to feature experimental support for the HTTP/3 protocol, including Websocket over HTTP/3.
+Cowboy 2.13 requires Erlang/OTP 24.0 or greater. It is tested and supported on Linux, macOS and Windows.</p>
+
+ <p style="text-align:right">
+ <a class="read_more" href="https://ninenines.eu/articles/cowboy-2.13.0/">Read More</a>
+ </p>
+ </article>
+
+ <article class="blog_item">
+ <header>
<h2><a href="https://ninenines.eu/articles/ranch-2.2.0/">Ranch 2.2</a></h2>
<p class="date">
<span class="year">2025</span>
@@ -407,24 +427,6 @@ Je serai au meetup Erlang le 10 septembre chez Datadog à Paris.</p>
</p>
</article>
- <article class="blog_item">
- <header>
- <h2><a href="https://ninenines.eu/articles/ranch-2.0.0-rc.1/">Ranch 2.0 release candidate 1</a></h2>
- <p class="date">
- <span class="year">2019</span>
- <span class="day-month">18 Jul</span>
- </p>
- </header>
-
- <p>Ranch 2.0.0-rc.1 has been released!
-We are getting very close to releasing Ranch 2.0! As most of the tremendous programming work was done by contributor Jan Uhlig, I will yield the floor and let him describe what went into this great release.
-In Ranch 1.x, there is only one supervisor per Ranch listener to start and manage connection processes. Under high load (many clients rapidly connecting and/or disconnecting), the message queue of this one supervisor could become congested, leading to declining accept rates or a stalled listener.</p>
-
- <p style="text-align:right">
- <a class="read_more" href="https://ninenines.eu/articles/ranch-2.0.0-rc.1/">Read More</a>
- </p>
- </article>
-
<nav class="pagination" role="pagination">
diff --git a/articles/index.xml b/articles/index.xml
index 78a3ab74..72c8b1dd 100644
--- a/articles/index.xml
+++ b/articles/index.xml
@@ -6,12 +6,25 @@
<description>Recent content in Articles on Nine Nines</description>
<generator>Hugo -- gohugo.io</generator>
<language>en-us</language>
- <lastBuildDate>Mon, 17 Feb 2025 07:00:00 +0100</lastBuildDate>
+ <lastBuildDate>Tue, 18 Feb 2025 07:00:00 +0100</lastBuildDate>
<atom:link href="https://ninenines.eu/articles/index.xml" rel="self" type="application/rss+xml" />
<item>
+ <title>Cowboy 2.13</title>
+ <link>https://ninenines.eu/articles/cowboy-2.13.0/</link>
+ <pubDate>Tue, 18 Feb 2025 07:00:00 +0100</pubDate>
+
+ <guid>https://ninenines.eu/articles/cowboy-2.13.0/</guid>
+ <description>Cowboy 2.13.0 has been released!
+Cowboy 2.13 focuses on improving the performance of Websocket, as well as the HTTP protocols. It also contains a variety of new features and bug fixes.
+The performance improvements were detailed in the Performance improvements in Cowboy 2.13 article.
+Cowboy 2.13 is the first release to feature experimental support for the HTTP/3 protocol, including Websocket over HTTP/3.
+Cowboy 2.13 requires Erlang/OTP 24.0 or greater. It is tested and supported on Linux, macOS and Windows.</description>
+ </item>
+
+ <item>
<title>Ranch 2.2</title>
<link>https://ninenines.eu/articles/ranch-2.2.0/</link>
<pubDate>Mon, 17 Feb 2025 07:00:00 +0100</pubDate>
diff --git a/articles/january-2014-status/index.html b/articles/january-2014-status/index.html
index 2527056e..1936d650 100644
--- a/articles/january-2014-status/index.html
+++ b/articles/january-2014-status/index.html
@@ -114,6 +114,10 @@
+ <li><a href="https://ninenines.eu/articles/cowboy-2.13.0/">Cowboy 2.13</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/ranch-2.2.0/">Ranch 2.2</a></li>
diff --git a/articles/joe_the_rubber_duck/index.html b/articles/joe_the_rubber_duck/index.html
index 299fc8ff..88875513 100644
--- a/articles/joe_the_rubber_duck/index.html
+++ b/articles/joe_the_rubber_duck/index.html
@@ -88,6 +88,10 @@
+ <li><a href="https://ninenines.eu/articles/cowboy-2.13.0/">Cowboy 2.13</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/ranch-2.2.0/">Ranch 2.2</a></li>
diff --git a/articles/merry-christmas-2018/index.html b/articles/merry-christmas-2018/index.html
index 1eebacbb..99a88e73 100644
--- a/articles/merry-christmas-2018/index.html
+++ b/articles/merry-christmas-2018/index.html
@@ -95,6 +95,10 @@
+ <li><a href="https://ninenines.eu/articles/cowboy-2.13.0/">Cowboy 2.13</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/ranch-2.2.0/">Ranch 2.2</a></li>
diff --git a/articles/merry-christmas-2019/index.html b/articles/merry-christmas-2019/index.html
index 45f77e14..1f5e891e 100644
--- a/articles/merry-christmas-2019/index.html
+++ b/articles/merry-christmas-2019/index.html
@@ -91,6 +91,10 @@
+ <li><a href="https://ninenines.eu/articles/cowboy-2.13.0/">Cowboy 2.13</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/ranch-2.2.0/">Ranch 2.2</a></li>
diff --git a/articles/ml-archives/index.html b/articles/ml-archives/index.html
index 4d5b72d0..413415c1 100644
--- a/articles/ml-archives/index.html
+++ b/articles/ml-archives/index.html
@@ -85,6 +85,10 @@
+ <li><a href="https://ninenines.eu/articles/cowboy-2.13.0/">Cowboy 2.13</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/ranch-2.2.0/">Ranch 2.2</a></li>
diff --git a/articles/on-open-source/index.html b/articles/on-open-source/index.html
index 26f8f131..567dca2c 100644
--- a/articles/on-open-source/index.html
+++ b/articles/on-open-source/index.html
@@ -97,6 +97,10 @@ much left to look at today</a>. This was followed by a <a href="https://github.c
+ <li><a href="https://ninenines.eu/articles/cowboy-2.13.0/">Cowboy 2.13</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/ranch-2.2.0/">Ranch 2.2</a></li>
diff --git a/articles/otp-26/index.html b/articles/otp-26/index.html
index 1498526c..222761e4 100644
--- a/articles/otp-26/index.html
+++ b/articles/otp-26/index.html
@@ -92,6 +92,10 @@
+ <li><a href="https://ninenines.eu/articles/cowboy-2.13.0/">Cowboy 2.13</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/ranch-2.2.0/">Ranch 2.2</a></li>
diff --git a/articles/page/2/index.html b/articles/page/2/index.html
index 4596a0c1..3855283a 100644
--- a/articles/page/2/index.html
+++ b/articles/page/2/index.html
@@ -65,6 +65,24 @@
<article class="blog_item">
<header>
+ <h2><a href="https://ninenines.eu/articles/ranch-2.0.0-rc.1/">Ranch 2.0 release candidate 1</a></h2>
+ <p class="date">
+ <span class="year">2019</span>
+ <span class="day-month">18 Jul</span>
+ </p>
+ </header>
+
+ <p>Ranch 2.0.0-rc.1 has been released!
+We are getting very close to releasing Ranch 2.0! As most of the tremendous programming work was done by contributor Jan Uhlig, I will yield the floor and let him describe what went into this great release.
+In Ranch 1.x, there is only one supervisor per Ranch listener to start and manage connection processes. Under high load (many clients rapidly connecting and/or disconnecting), the message queue of this one supervisor could become congested, leading to declining accept rates or a stalled listener.</p>
+
+ <p style="text-align:right">
+ <a class="read_more" href="https://ninenines.eu/articles/ranch-2.0.0-rc.1/">Read More</a>
+ </p>
+ </article>
+
+ <article class="blog_item">
+ <header>
<h2><a href="https://ninenines.eu/articles/joe_the_rubber_duck/">Joe Armstrong the rubber duck</a></h2>
<p class="date">
<span class="year">2019</span>
@@ -417,23 +435,6 @@ You lost them. You know you lost them. They comment on the syntax, or perhaps yo
</p>
</article>
- <article class="blog_item">
- <header>
- <h2><a href="https://ninenines.eu/articles/dont-let-it-crash/">Don&#39;t let it crash</a></h2>
- <p class="date">
- <span class="year">2017</span>
- <span class="day-month">22 Jan</span>
- </p>
- </header>
-
- <p>We have a specific mindset when writing Erlang programs. We focus on the normal execution of the program and don&apos;t handle most of the errors that may occur. We sometimes call this normal execution the happy path.
-The general pattern behind writing only for the happy path, letting the VM catch errors (writing them to a log for future consumption) and then having a supervisor restart the processes that failed from a clean state, has a name.</p>
-
- <p style="text-align:right">
- <a class="read_more" href="https://ninenines.eu/articles/dont-let-it-crash/">Read More</a>
- </p>
- </article>
-
<nav class="pagination" role="pagination">
diff --git a/articles/page/3/index.html b/articles/page/3/index.html
index 5fc4d538..492d6b14 100644
--- a/articles/page/3/index.html
+++ b/articles/page/3/index.html
@@ -65,6 +65,23 @@
<article class="blog_item">
<header>
+ <h2><a href="https://ninenines.eu/articles/dont-let-it-crash/">Don&#39;t let it crash</a></h2>
+ <p class="date">
+ <span class="year">2017</span>
+ <span class="day-month">22 Jan</span>
+ </p>
+ </header>
+
+ <p>We have a specific mindset when writing Erlang programs. We focus on the normal execution of the program and don&apos;t handle most of the errors that may occur. We sometimes call this normal execution the happy path.
+The general pattern behind writing only for the happy path, letting the VM catch errors (writing them to a log for future consumption) and then having a supervisor restart the processes that failed from a clean state, has a name.</p>
+
+ <p style="text-align:right">
+ <a class="read_more" href="https://ninenines.eu/articles/dont-let-it-crash/">Read More</a>
+ </p>
+ </article>
+
+ <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="year">2017</span>
@@ -408,23 +425,6 @@ We are just starting, so let&apos;s no go ahead of ourselves here. We&apos;ll be
</p>
</article>
- <article class="blog_item">
- <header>
- <h2><a href="https://ninenines.eu/articles/ranch-ftp/">Build an FTP Server with Ranch in 30 Minutes</a></h2>
- <p class="date">
- <span class="year">2012</span>
- <span class="day-month">14 Nov</span>
- </p>
- </header>
-
- <p>Last week I was speaking at the London Erlang Factory Lite where I presented a live demonstration of building an FTP server using Ranch. As there was no slide, you should use this article as a reference instead.
-The goal of this article is to showcase how to use Ranch for writing a network protocol implementation, how Ranch gets out of the way to let you write the code that matters, and the common techniques used when writing servers.</p>
-
- <p style="text-align:right">
- <a class="read_more" href="https://ninenines.eu/articles/ranch-ftp/">Read More</a>
- </p>
- </article>
-
<nav class="pagination" role="pagination">
diff --git a/articles/page/4/index.html b/articles/page/4/index.html
index 87efc9d0..53e77536 100644
--- a/articles/page/4/index.html
+++ b/articles/page/4/index.html
@@ -65,6 +65,23 @@
<article class="blog_item">
<header>
+ <h2><a href="https://ninenines.eu/articles/ranch-ftp/">Build an FTP Server with Ranch in 30 Minutes</a></h2>
+ <p class="date">
+ <span class="year">2012</span>
+ <span class="day-month">14 Nov</span>
+ </p>
+ </header>
+
+ <p>Last week I was speaking at the London Erlang Factory Lite where I presented a live demonstration of building an FTP server using Ranch. As there was no slide, you should use this article as a reference instead.
+The goal of this article is to showcase how to use Ranch for writing a network protocol implementation, how Ranch gets out of the way to let you write the code that matters, and the common techniques used when writing servers.</p>
+
+ <p style="text-align:right">
+ <a class="read_more" href="https://ninenines.eu/articles/ranch-ftp/">Read More</a>
+ </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="year">2012</span>
diff --git a/articles/ranch-1.3/index.html b/articles/ranch-1.3/index.html
index 225b3489..3c1850df 100644
--- a/articles/ranch-1.3/index.html
+++ b/articles/ranch-1.3/index.html
@@ -126,6 +126,10 @@ Primary key fingerprint<font color="#990000">:</font> F19F 189C ECC7 <font color
+ <li><a href="https://ninenines.eu/articles/cowboy-2.13.0/">Cowboy 2.13</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/ranch-2.2.0/">Ranch 2.2</a></li>
diff --git a/articles/ranch-1.6.0/index.html b/articles/ranch-1.6.0/index.html
index 2ac9b2c7..f4140cc1 100644
--- a/articles/ranch-1.6.0/index.html
+++ b/articles/ranch-1.6.0/index.html
@@ -88,6 +88,10 @@
+ <li><a href="https://ninenines.eu/articles/cowboy-2.13.0/">Cowboy 2.13</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/ranch-2.2.0/">Ranch 2.2</a></li>
diff --git a/articles/ranch-1.7.0/index.html b/articles/ranch-1.7.0/index.html
index 6deffee1..f29a7915 100644
--- a/articles/ranch-1.7.0/index.html
+++ b/articles/ranch-1.7.0/index.html
@@ -87,6 +87,10 @@
+ <li><a href="https://ninenines.eu/articles/cowboy-2.13.0/">Cowboy 2.13</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/ranch-2.2.0/">Ranch 2.2</a></li>
diff --git a/articles/ranch-2.0.0-rc.1/index.html b/articles/ranch-2.0.0-rc.1/index.html
index dd3aec72..513dbaa6 100644
--- a/articles/ranch-2.0.0-rc.1/index.html
+++ b/articles/ranch-2.0.0-rc.1/index.html
@@ -96,6 +96,10 @@
+ <li><a href="https://ninenines.eu/articles/cowboy-2.13.0/">Cowboy 2.13</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/ranch-2.2.0/">Ranch 2.2</a></li>
diff --git a/articles/ranch-2.0.0/index.html b/articles/ranch-2.0.0/index.html
index d56d958b..3f595900 100644
--- a/articles/ranch-2.0.0/index.html
+++ b/articles/ranch-2.0.0/index.html
@@ -95,6 +95,10 @@
+ <li><a href="https://ninenines.eu/articles/cowboy-2.13.0/">Cowboy 2.13</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/ranch-2.2.0/">Ranch 2.2</a></li>
diff --git a/articles/ranch-2.1.0/index.html b/articles/ranch-2.1.0/index.html
index 24d55447..9bb62a80 100644
--- a/articles/ranch-2.1.0/index.html
+++ b/articles/ranch-2.1.0/index.html
@@ -90,6 +90,10 @@
+ <li><a href="https://ninenines.eu/articles/cowboy-2.13.0/">Cowboy 2.13</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/ranch-2.2.0/">Ranch 2.2</a></li>
diff --git a/articles/ranch-2.2.0/index.html b/articles/ranch-2.2.0/index.html
index 6dcc175c..4fea2c69 100644
--- a/articles/ranch-2.2.0/index.html
+++ b/articles/ranch-2.2.0/index.html
@@ -88,6 +88,10 @@
+ <li><a href="https://ninenines.eu/articles/cowboy-2.13.0/">Cowboy 2.13</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/ranch-2.2.0/">Ranch 2.2</a></li>
diff --git a/articles/ranch-ftp/index.html b/articles/ranch-ftp/index.html
index 83ff1a67..bd7c4fc6 100644
--- a/articles/ranch-ftp/index.html
+++ b/articles/ranch-ftp/index.html
@@ -228,6 +228,10 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="https://ninenines.eu/articles/cowboy-2.13.0/">Cowboy 2.13</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/ranch-2.2.0/">Ranch 2.2</a></li>
diff --git a/articles/the-elephant-in-the-room/index.html b/articles/the-elephant-in-the-room/index.html
index c38f9a4b..08a25daf 100644
--- a/articles/the-elephant-in-the-room/index.html
+++ b/articles/the-elephant-in-the-room/index.html
@@ -110,6 +110,10 @@
+ <li><a href="https://ninenines.eu/articles/cowboy-2.13.0/">Cowboy 2.13</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/ranch-2.2.0/">Ranch 2.2</a></li>
diff --git a/articles/the-gateway-trilogy/index.html b/articles/the-gateway-trilogy/index.html
index 874bbb52..6d6bbc33 100644
--- a/articles/the-gateway-trilogy/index.html
+++ b/articles/the-gateway-trilogy/index.html
@@ -85,6 +85,10 @@
+ <li><a href="https://ninenines.eu/articles/cowboy-2.13.0/">Cowboy 2.13</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/ranch-2.2.0/">Ranch 2.2</a></li>
diff --git a/articles/the-story-so-far/index.html b/articles/the-story-so-far/index.html
index 9bf4ee01..49953d32 100644
--- a/articles/the-story-so-far/index.html
+++ b/articles/the-story-so-far/index.html
@@ -101,6 +101,10 @@
+ <li><a href="https://ninenines.eu/articles/cowboy-2.13.0/">Cowboy 2.13</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/ranch-2.2.0/">Ranch 2.2</a></li>
diff --git a/articles/tictactoe/index.html b/articles/tictactoe/index.html
index db4c3b18..a790b193 100644
--- a/articles/tictactoe/index.html
+++ b/articles/tictactoe/index.html
@@ -133,6 +133,10 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="https://ninenines.eu/articles/cowboy-2.13.0/">Cowboy 2.13</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/ranch-2.2.0/">Ranch 2.2</a></li>
diff --git a/articles/website-update/index.html b/articles/website-update/index.html
index bc9b194c..d3ccbcca 100644
--- a/articles/website-update/index.html
+++ b/articles/website-update/index.html
@@ -90,6 +90,10 @@
+ <li><a href="https://ninenines.eu/articles/cowboy-2.13.0/">Cowboy 2.13</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/ranch-2.2.0/">Ranch 2.2</a></li>
diff --git a/articles/xerl-0.1-empty-modules/index.html b/articles/xerl-0.1-empty-modules/index.html
index 9d172841..cc4b2e35 100644
--- a/articles/xerl-0.1-empty-modules/index.html
+++ b/articles/xerl-0.1-empty-modules/index.html
@@ -168,6 +168,10 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="https://ninenines.eu/articles/cowboy-2.13.0/">Cowboy 2.13</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/ranch-2.2.0/">Ranch 2.2</a></li>
diff --git a/articles/xerl-0.2-two-modules/index.html b/articles/xerl-0.2-two-modules/index.html
index 4ec4f6c0..3662f675 100644
--- a/articles/xerl-0.2-two-modules/index.html
+++ b/articles/xerl-0.2-two-modules/index.html
@@ -196,6 +196,10 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="https://ninenines.eu/articles/cowboy-2.13.0/">Cowboy 2.13</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/ranch-2.2.0/">Ranch 2.2</a></li>
diff --git a/articles/xerl-0.3-atomic-expressions/index.html b/articles/xerl-0.3-atomic-expressions/index.html
index ef2adbaf..d6a25886 100644
--- a/articles/xerl-0.3-atomic-expressions/index.html
+++ b/articles/xerl-0.3-atomic-expressions/index.html
@@ -165,6 +165,10 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="https://ninenines.eu/articles/cowboy-2.13.0/">Cowboy 2.13</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/ranch-2.2.0/">Ranch 2.2</a></li>
diff --git a/articles/xerl-0.4-expression-separator/index.html b/articles/xerl-0.4-expression-separator/index.html
index 728b9c8b..74813db8 100644
--- a/articles/xerl-0.4-expression-separator/index.html
+++ b/articles/xerl-0.4-expression-separator/index.html
@@ -117,6 +117,10 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="https://ninenines.eu/articles/cowboy-2.13.0/">Cowboy 2.13</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/ranch-2.2.0/">Ranch 2.2</a></li>
diff --git a/articles/xerl-0.5-intermediate-module/index.html b/articles/xerl-0.5-intermediate-module/index.html
index c2e16342..2ac33af1 100644
--- a/articles/xerl-0.5-intermediate-module/index.html
+++ b/articles/xerl-0.5-intermediate-module/index.html
@@ -161,6 +161,10 @@ http://www.gnu.org/software/src-highlite -->
+ <li><a href="https://ninenines.eu/articles/cowboy-2.13.0/">Cowboy 2.13</a></li>
+
+
+
<li><a href="https://ninenines.eu/articles/ranch-2.2.0/">Ranch 2.2</a></li>