diff options
Diffstat (limited to 'articles')
69 files changed, 2133 insertions, 161 deletions
diff --git a/articles/asciideck/index.html b/articles/asciideck/index.html index 60c5caa7..cd64c41a 100644 --- a/articles/asciideck/index.html +++ b/articles/asciideck/index.html @@ -109,6 +109,18 @@ http://www.gnu.org/software/src-highlite --> + <li><a href="https://ninenines.eu/articles/cowboy-2.14.0/">Cowboy 2.14</a></li> + + + + <li><a href="https://ninenines.eu/articles/gun-2.2.0/">Gun 2.2</a></li> + + + + <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..d004dcad 100644 --- a/articles/cowboy-2.0.0-pre.4/index.html +++ b/articles/cowboy-2.0.0-pre.4/index.html @@ -128,6 +128,18 @@ + <li><a href="https://ninenines.eu/articles/cowboy-2.14.0/">Cowboy 2.14</a></li> + + + + <li><a href="https://ninenines.eu/articles/gun-2.2.0/">Gun 2.2</a></li> + + + + <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..3ebdf2c3 100644 --- a/articles/cowboy-2.0.0-rc.1/index.html +++ b/articles/cowboy-2.0.0-rc.1/index.html @@ -99,6 +99,18 @@ + <li><a href="https://ninenines.eu/articles/cowboy-2.14.0/">Cowboy 2.14</a></li> + + + + <li><a href="https://ninenines.eu/articles/gun-2.2.0/">Gun 2.2</a></li> + + + + <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..24dc8dc5 100644 --- a/articles/cowboy-2.0.0-rc.2/index.html +++ b/articles/cowboy-2.0.0-rc.2/index.html @@ -92,6 +92,18 @@ + <li><a href="https://ninenines.eu/articles/cowboy-2.14.0/">Cowboy 2.14</a></li> + + + + <li><a href="https://ninenines.eu/articles/gun-2.2.0/">Gun 2.2</a></li> + + + + <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..b9570b28 100644 --- a/articles/cowboy-2.0.0/index.html +++ b/articles/cowboy-2.0.0/index.html @@ -98,6 +98,18 @@ + <li><a href="https://ninenines.eu/articles/cowboy-2.14.0/">Cowboy 2.14</a></li> + + + + <li><a href="https://ninenines.eu/articles/gun-2.2.0/">Gun 2.2</a></li> + + + + <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..bfe913f2 100644 --- a/articles/cowboy-2.1.0/index.html +++ b/articles/cowboy-2.1.0/index.html @@ -95,6 +95,18 @@ + <li><a href="https://ninenines.eu/articles/cowboy-2.14.0/">Cowboy 2.14</a></li> + + + + <li><a href="https://ninenines.eu/articles/gun-2.2.0/">Gun 2.2</a></li> + + + + <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..1d52aac4 100644 --- a/articles/cowboy-2.11.0/index.html +++ b/articles/cowboy-2.11.0/index.html @@ -88,6 +88,18 @@ + <li><a href="https://ninenines.eu/articles/cowboy-2.14.0/">Cowboy 2.14</a></li> + + + + <li><a href="https://ninenines.eu/articles/gun-2.2.0/">Gun 2.2</a></li> + + + + <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..a7773661 100644 --- a/articles/cowboy-2.12.0/index.html +++ b/articles/cowboy-2.12.0/index.html @@ -89,6 +89,18 @@ + <li><a href="https://ninenines.eu/articles/cowboy-2.14.0/">Cowboy 2.14</a></li> + + + + <li><a href="https://ninenines.eu/articles/gun-2.2.0/">Gun 2.2</a></li> + + + + <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..a8f4b9b5 100644 --- a/articles/cowboy-2.13.0-performance/index.html +++ b/articles/cowboy-2.13.0-performance/index.html @@ -103,6 +103,18 @@ + <li><a href="https://ninenines.eu/articles/cowboy-2.14.0/">Cowboy 2.14</a></li> + + + + <li><a href="https://ninenines.eu/articles/gun-2.2.0/">Gun 2.2</a></li> + + + + <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..9c3fbeac --- /dev/null +++ b/articles/cowboy-2.13.0/index.html @@ -0,0 +1,381 @@ +<!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.14.0/">Cowboy 2.14</a></li> + + + + <li><a href="https://ninenines.eu/articles/gun-2.2.0/">Gun 2.2</a></li> + + + + <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'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 © Loïc Hoguin 2012-2018</p> + </div> + </div> + </div> + </footer> + + + <script src="/js/custom.js"></script> + </body> +</html> + diff --git a/articles/cowboy-2.14.0/index.html b/articles/cowboy-2.14.0/index.html new file mode 100644 index 00000000..bbc7e298 --- /dev/null +++ b/articles/cowboy-2.14.0/index.html @@ -0,0 +1,379 @@ +<!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.14</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.14</span></h1> + <p class="date"> + <span class="year">2025</span> + <span class="day-month">18 Sep</span> + </p> +</header> + +<p>Cowboy <code>2.14.0</code> has been released!</p> +<p>Cowboy 2.14 adds experimental support for HTTP/3 WebTransport based on the most recent draft. It also has a new data delivery mechanism for HTTP/2 and HTTP/3 Websocket, providing better performance.</p> +<p>Cowboy 2.14 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.14/guide/migrating_from_2.13/">Migrating from Cowboy 2.13 to 2.14</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 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.14.0/">Cowboy 2.14</a></li> + + + + <li><a href="https://ninenines.eu/articles/gun-2.2.0/">Gun 2.2</a></li> + + + + <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'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 © 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..92fe36f3 100644 --- a/articles/cowboy-2.2.0/index.html +++ b/articles/cowboy-2.2.0/index.html @@ -93,6 +93,18 @@ + <li><a href="https://ninenines.eu/articles/cowboy-2.14.0/">Cowboy 2.14</a></li> + + + + <li><a href="https://ninenines.eu/articles/gun-2.2.0/">Gun 2.2</a></li> + + + + <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..b87d64a0 100644 --- a/articles/cowboy-2.3.0/index.html +++ b/articles/cowboy-2.3.0/index.html @@ -85,6 +85,18 @@ + <li><a href="https://ninenines.eu/articles/cowboy-2.14.0/">Cowboy 2.14</a></li> + + + + <li><a href="https://ninenines.eu/articles/gun-2.2.0/">Gun 2.2</a></li> + + + + <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..3df22472 100644 --- a/articles/cowboy-2.4.0/index.html +++ b/articles/cowboy-2.4.0/index.html @@ -87,6 +87,18 @@ + <li><a href="https://ninenines.eu/articles/cowboy-2.14.0/">Cowboy 2.14</a></li> + + + + <li><a href="https://ninenines.eu/articles/gun-2.2.0/">Gun 2.2</a></li> + + + + <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..587829d1 100644 --- a/articles/cowboy-2.5.0/index.html +++ b/articles/cowboy-2.5.0/index.html @@ -91,6 +91,18 @@ + <li><a href="https://ninenines.eu/articles/cowboy-2.14.0/">Cowboy 2.14</a></li> + + + + <li><a href="https://ninenines.eu/articles/gun-2.2.0/">Gun 2.2</a></li> + + + + <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..31301ed9 100644 --- a/articles/cowboy-2.6.0/index.html +++ b/articles/cowboy-2.6.0/index.html @@ -88,6 +88,18 @@ + <li><a href="https://ninenines.eu/articles/cowboy-2.14.0/">Cowboy 2.14</a></li> + + + + <li><a href="https://ninenines.eu/articles/gun-2.2.0/">Gun 2.2</a></li> + + + + <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..6d5f74cf 100644 --- a/articles/cowboy-2.7.0/index.html +++ b/articles/cowboy-2.7.0/index.html @@ -89,6 +89,18 @@ + <li><a href="https://ninenines.eu/articles/cowboy-2.14.0/">Cowboy 2.14</a></li> + + + + <li><a href="https://ninenines.eu/articles/gun-2.2.0/">Gun 2.2</a></li> + + + + <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..1e720769 100644 --- a/articles/cowboy-2.8.0/index.html +++ b/articles/cowboy-2.8.0/index.html @@ -88,6 +88,18 @@ + <li><a href="https://ninenines.eu/articles/cowboy-2.14.0/">Cowboy 2.14</a></li> + + + + <li><a href="https://ninenines.eu/articles/gun-2.2.0/">Gun 2.2</a></li> + + + + <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..8266aa58 100644 --- a/articles/cowboy-2.9.0/index.html +++ b/articles/cowboy-2.9.0/index.html @@ -87,6 +87,18 @@ + <li><a href="https://ninenines.eu/articles/cowboy-2.14.0/">Cowboy 2.14</a></li> + + + + <li><a href="https://ninenines.eu/articles/gun-2.2.0/">Gun 2.2</a></li> + + + + <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..a26a471b 100644 --- a/articles/cowboy2-qs/index.html +++ b/articles/cowboy2-qs/index.html @@ -129,6 +129,18 @@ http://www.gnu.org/software/src-highlite --> + <li><a href="https://ninenines.eu/articles/cowboy-2.14.0/">Cowboy 2.14</a></li> + + + + <li><a href="https://ninenines.eu/articles/gun-2.2.0/">Gun 2.2</a></li> + + + + <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..9a3f32db 100644 --- a/articles/discord-server/index.html +++ b/articles/discord-server/index.html @@ -85,6 +85,18 @@ + <li><a href="https://ninenines.eu/articles/cowboy-2.14.0/">Cowboy 2.14</a></li> + + + + <li><a href="https://ninenines.eu/articles/gun-2.2.0/">Gun 2.2</a></li> + + + + <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..792c9c88 100644 --- a/articles/dont-let-it-crash/index.html +++ b/articles/dont-let-it-crash/index.html @@ -104,6 +104,18 @@ + <li><a href="https://ninenines.eu/articles/cowboy-2.14.0/">Cowboy 2.14</a></li> + + + + <li><a href="https://ninenines.eu/articles/gun-2.2.0/">Gun 2.2</a></li> + + + + <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..55270218 100644 --- a/articles/erlang-meetup-10-septembre-2019/index.html +++ b/articles/erlang-meetup-10-septembre-2019/index.html @@ -84,6 +84,18 @@ + <li><a href="https://ninenines.eu/articles/cowboy-2.14.0/">Cowboy 2.14</a></li> + + + + <li><a href="https://ninenines.eu/articles/gun-2.2.0/">Gun 2.2</a></li> + + + + <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..92478f9e 100644 --- a/articles/erlang-scalability/index.html +++ b/articles/erlang-scalability/index.html @@ -116,6 +116,18 @@ + <li><a href="https://ninenines.eu/articles/cowboy-2.14.0/">Cowboy 2.14</a></li> + + + + <li><a href="https://ninenines.eu/articles/gun-2.2.0/">Gun 2.2</a></li> + + + + <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..77a6de93 100644 --- a/articles/erlang-validate-utf8/index.html +++ b/articles/erlang-validate-utf8/index.html @@ -232,6 +232,18 @@ http://www.gnu.org/software/src-highlite --> + <li><a href="https://ninenines.eu/articles/cowboy-2.14.0/">Cowboy 2.14</a></li> + + + + <li><a href="https://ninenines.eu/articles/gun-2.2.0/">Gun 2.2</a></li> + + + + <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..56a0fa70 100644 --- a/articles/erlang.mk-and-relx/index.html +++ b/articles/erlang.mk-and-relx/index.html @@ -118,6 +118,18 @@ 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.14.0/">Cowboy 2.14</a></li> + + + + <li><a href="https://ninenines.eu/articles/gun-2.2.0/">Gun 2.2</a></li> + + + + <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..e39cd0a0 100644 --- a/articles/erlanger-playbook-september-2015-update/index.html +++ b/articles/erlanger-playbook-september-2015-update/index.html @@ -87,6 +87,18 @@ + <li><a href="https://ninenines.eu/articles/cowboy-2.14.0/">Cowboy 2.14</a></li> + + + + <li><a href="https://ninenines.eu/articles/gun-2.2.0/">Gun 2.2</a></li> + + + + <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..307fedaa 100644 --- a/articles/erlanger-playbook/index.html +++ b/articles/erlanger-playbook/index.html @@ -128,6 +128,18 @@ + <li><a href="https://ninenines.eu/articles/cowboy-2.14.0/">Cowboy 2.14</a></li> + + + + <li><a href="https://ninenines.eu/articles/gun-2.2.0/">Gun 2.2</a></li> + + + + <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..5e39de37 100644 --- a/articles/farwest-funded/index.html +++ b/articles/farwest-funded/index.html @@ -88,6 +88,18 @@ + <li><a href="https://ninenines.eu/articles/cowboy-2.14.0/">Cowboy 2.14</a></li> + + + + <li><a href="https://ninenines.eu/articles/gun-2.2.0/">Gun 2.2</a></li> + + + + <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..e3d926fb 100644 --- a/articles/github-sponsors/index.html +++ b/articles/github-sponsors/index.html @@ -85,6 +85,18 @@ + <li><a href="https://ninenines.eu/articles/cowboy-2.14.0/">Cowboy 2.14</a></li> + + + + <li><a href="https://ninenines.eu/articles/gun-2.2.0/">Gun 2.2</a></li> + + + + <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..b6f104ce 100644 --- a/articles/gun-1.0.0-rc.1/index.html +++ b/articles/gun-1.0.0-rc.1/index.html @@ -89,6 +89,18 @@ + <li><a href="https://ninenines.eu/articles/cowboy-2.14.0/">Cowboy 2.14</a></li> + + + + <li><a href="https://ninenines.eu/articles/gun-2.2.0/">Gun 2.2</a></li> + + + + <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..6f0064ee 100644 --- a/articles/gun-1.0.0/index.html +++ b/articles/gun-1.0.0/index.html @@ -88,6 +88,18 @@ + <li><a href="https://ninenines.eu/articles/cowboy-2.14.0/">Cowboy 2.14</a></li> + + + + <li><a href="https://ninenines.eu/articles/gun-2.2.0/">Gun 2.2</a></li> + + + + <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..9ec9c086 100644 --- a/articles/gun-1.2.0/index.html +++ b/articles/gun-1.2.0/index.html @@ -88,6 +88,18 @@ + <li><a href="https://ninenines.eu/articles/cowboy-2.14.0/">Cowboy 2.14</a></li> + + + + <li><a href="https://ninenines.eu/articles/gun-2.2.0/">Gun 2.2</a></li> + + + + <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..b3ef0b15 100644 --- a/articles/gun-1.3.0/index.html +++ b/articles/gun-1.3.0/index.html @@ -86,6 +86,18 @@ + <li><a href="https://ninenines.eu/articles/cowboy-2.14.0/">Cowboy 2.14</a></li> + + + + <li><a href="https://ninenines.eu/articles/gun-2.2.0/">Gun 2.2</a></li> + + + + <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..6631f589 100644 --- a/articles/gun-2.0.0-pre.1/index.html +++ b/articles/gun-2.0.0-pre.1/index.html @@ -93,6 +93,18 @@ + <li><a href="https://ninenines.eu/articles/cowboy-2.14.0/">Cowboy 2.14</a></li> + + + + <li><a href="https://ninenines.eu/articles/gun-2.2.0/">Gun 2.2</a></li> + + + + <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..c3411cfe 100644 --- a/articles/gun-2.0.0-pre.2/index.html +++ b/articles/gun-2.0.0-pre.2/index.html @@ -91,6 +91,18 @@ + <li><a href="https://ninenines.eu/articles/cowboy-2.14.0/">Cowboy 2.14</a></li> + + + + <li><a href="https://ninenines.eu/articles/gun-2.2.0/">Gun 2.2</a></li> + + + + <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..b3629de1 100644 --- a/articles/gun-2.0.0-rc.1/index.html +++ b/articles/gun-2.0.0-rc.1/index.html @@ -96,6 +96,18 @@ + <li><a href="https://ninenines.eu/articles/cowboy-2.14.0/">Cowboy 2.14</a></li> + + + + <li><a href="https://ninenines.eu/articles/gun-2.2.0/">Gun 2.2</a></li> + + + + <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..af2888d9 100644 --- a/articles/gun-2.0.0/index.html +++ b/articles/gun-2.0.0/index.html @@ -98,6 +98,18 @@ + <li><a href="https://ninenines.eu/articles/cowboy-2.14.0/">Cowboy 2.14</a></li> + + + + <li><a href="https://ninenines.eu/articles/gun-2.2.0/">Gun 2.2</a></li> + + + + <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.2.0/index.html b/articles/gun-2.2.0/index.html new file mode 100644 index 00000000..a0eb5d90 --- /dev/null +++ b/articles/gun-2.2.0/index.html @@ -0,0 +1,385 @@ +<!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: Gun 2.2</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>Gun 2.2</span></h1> + <p class="date"> + <span class="year">2025</span> + <span class="day-month">11 Apr</span> + </p> +</header> + +<p>Gun <code>2.2.0</code> has been released!</p> +<p>Gun 2.2 contains many features and fixes, including an experimental HTTP/3 implementation.</p> +<p>Gun 2.2 is the first release that includes an experimental support for the HTTP/3 protocol. Note that unlike Cowboy, Gun 2.2 does not yet support Websocket over HTTP/3.</p> +<p>Gun 2.2 now sets the appropriate ssl options to perform wildcard certificate matching, which is a requirement for HTTP and previously had to be configured by users.</p> +<p>Gun 2.2 also enables users to send HTTP/2 pings directly, including over tunnels, enabling use cases such as measuring the latency with the server. These pings are separate from the keepalive functionality.</p> +<p>Gun 2.2 also contains various fixes, the most significant of which is a better handling of TLS 1.3 alerts in mTLS scenarios. TLS 1.3 may perform certificate validation after the handshake has completed, leading to the alerts often arriving asynchronously. When an ssl function call returns <code>{error, closed}</code> or equivalent, Gun will now check whether the closure was a result of a TLS alert, and in that case propagate the alert as the error reason to the user. This has also been made to work over tunnels.</p> +<p>HTTP/2 tunneling has also seen a number of improvements.</p> +<p>Gun 2.0 requires Erlang/OTP 24.0 or greater and 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/gun/2.2/guide/migrating_from_2.1/">Migrating from Gun 2.1 to 2.2</a>.</p> +<p>I will now focus on implementing HTTP/3 WebTransport in Cowboy and Gun.</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. Thanks!</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.14.0/">Cowboy 2.14</a></li> + + + + <li><a href="https://ninenines.eu/articles/gun-2.2.0/">Gun 2.2</a></li> + + + + <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'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 © Loïc Hoguin 2012-2018</p> + </div> + </div> + </div> + </footer> + + + <script src="/js/custom.js"></script> + </body> +</html> + diff --git a/articles/index.html b/articles/index.html index a6e2b17f..c99c2eaf 100644 --- a/articles/index.html +++ b/articles/index.html @@ -65,6 +65,64 @@ <article class="blog_item"> <header> + <h2><a href="https://ninenines.eu/articles/cowboy-2.14.0/">Cowboy 2.14</a></h2> + <p class="date"> + <span class="year">2025</span> + <span class="day-month">18 Sep</span> + </p> + </header> + + <p>Cowboy 2.14.0 has been released! +Cowboy 2.14 adds experimental support for HTTP/3 WebTransport based on the most recent draft. It also has a new data delivery mechanism for HTTP/2 and HTTP/3 Websocket, providing better performance. +Cowboy 2.14 requires Erlang/OTP 24.0 or greater. It is tested and supported on Linux, macOS and Windows. +A complete list of changes can be found in the migration guide: Migrating from Cowboy 2.13 to 2.14.</p> + + <p style="text-align:right"> + <a class="read_more" href="https://ninenines.eu/articles/cowboy-2.14.0/">Read More</a> + </p> + </article> + + <article class="blog_item"> + <header> + <h2><a href="https://ninenines.eu/articles/gun-2.2.0/">Gun 2.2</a></h2> + <p class="date"> + <span class="year">2025</span> + <span class="day-month">11 Apr</span> + </p> + </header> + + <p>Gun 2.2.0 has been released! +Gun 2.2 contains many features and fixes, including an experimental HTTP/3 implementation. +Gun 2.2 is the first release that includes an experimental support for the HTTP/3 protocol. Note that unlike Cowboy, Gun 2.2 does not yet support Websocket over HTTP/3. +Gun 2.2 now sets the appropriate ssl options to perform wildcard certificate matching, which is a requirement for HTTP and previously had to be configured by users.</p> + + <p style="text-align:right"> + <a class="read_more" href="https://ninenines.eu/articles/gun-2.2.0/">Read More</a> + </p> + </article> + + <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> @@ -372,59 +430,6 @@ Cowboy 2.7 improves the HTTP/2 code with optimizations around the sending of DAT </p> </article> - <article class="blog_item"> - <header> - <h2><a href="https://ninenines.eu/articles/gun-2.0.0-pre.1/">Gun 2.0 pre-release 1</a></h2> - <p class="date"> - <span class="year">2019</span> - <span class="day-month">27 Sep</span> - </p> - </header> - - <p>Gun 2.0.0-pre.1 has been released! -The first pre-release version of Gun 2.0 has been released! Gun 2.0 adds a ton of features along with a small number of breaking changes. -Before listing the features please note that this pre-release includes a fix for a potential security vulnerability! This only applies when Gun is used inside a proxy under specific circumstances. Please see the migration guide for details. Since the issue also exists in the previous version I have released Gun 1.</p> - - <p style="text-align:right"> - <a class="read_more" href="https://ninenines.eu/articles/gun-2.0.0-pre.1/">Read More</a> - </p> - </article> - - <article class="blog_item"> - <header> - <h2><a href="https://ninenines.eu/articles/erlang-meetup-10-septembre-2019/">Erlang meetup: 10 septembre 2019</a></h2> - <p class="date"> - <span class="year">2019</span> - <span class="day-month">22 Aug</span> - </p> - </header> - - <p>Erlang meetups are resuming and I will be present at the next one in Paris on the 10th of September. As the meetup and my talk about Gun will be in French the rest of this post will be in French as well. If you are around Paris that night, you are welcome to join and chat, even if you don't speak the language! -Je serai au meetup Erlang le 10 septembre chez Datadog à Paris.</p> - - <p style="text-align:right"> - <a class="read_more" href="https://ninenines.eu/articles/erlang-meetup-10-septembre-2019/">Read More</a> - </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..26f2f807 100644 --- a/articles/index.xml +++ b/articles/index.xml @@ -6,12 +6,49 @@ <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>Thu, 18 Sep 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.14</title> + <link>https://ninenines.eu/articles/cowboy-2.14.0/</link> + <pubDate>Thu, 18 Sep 2025 07:00:00 +0100</pubDate> + + <guid>https://ninenines.eu/articles/cowboy-2.14.0/</guid> + <description>Cowboy 2.14.0 has been released! +Cowboy 2.14 adds experimental support for HTTP/3 WebTransport based on the most recent draft. It also has a new data delivery mechanism for HTTP/2 and HTTP/3 Websocket, providing better performance. +Cowboy 2.14 requires Erlang/OTP 24.0 or greater. It is tested and supported on Linux, macOS and Windows. +A complete list of changes can be found in the migration guide: Migrating from Cowboy 2.13 to 2.14.</description> + </item> + + <item> + <title>Gun 2.2</title> + <link>https://ninenines.eu/articles/gun-2.2.0/</link> + <pubDate>Fri, 11 Apr 2025 07:00:00 +0100</pubDate> + + <guid>https://ninenines.eu/articles/gun-2.2.0/</guid> + <description>Gun 2.2.0 has been released! +Gun 2.2 contains many features and fixes, including an experimental HTTP/3 implementation. +Gun 2.2 is the first release that includes an experimental support for the HTTP/3 protocol. Note that unlike Cowboy, Gun 2.2 does not yet support Websocket over HTTP/3. +Gun 2.2 now sets the appropriate ssl options to perform wildcard certificate matching, which is a requirement for HTTP and previously had to be configured by users.</description> + </item> + + <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..fde12856 100644 --- a/articles/january-2014-status/index.html +++ b/articles/january-2014-status/index.html @@ -114,6 +114,18 @@ + <li><a href="https://ninenines.eu/articles/cowboy-2.14.0/">Cowboy 2.14</a></li> + + + + <li><a href="https://ninenines.eu/articles/gun-2.2.0/">Gun 2.2</a></li> + + + + <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..9e05123e 100644 --- a/articles/joe_the_rubber_duck/index.html +++ b/articles/joe_the_rubber_duck/index.html @@ -88,6 +88,18 @@ + <li><a href="https://ninenines.eu/articles/cowboy-2.14.0/">Cowboy 2.14</a></li> + + + + <li><a href="https://ninenines.eu/articles/gun-2.2.0/">Gun 2.2</a></li> + + + + <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..79d0a8ae 100644 --- a/articles/merry-christmas-2018/index.html +++ b/articles/merry-christmas-2018/index.html @@ -95,6 +95,18 @@ + <li><a href="https://ninenines.eu/articles/cowboy-2.14.0/">Cowboy 2.14</a></li> + + + + <li><a href="https://ninenines.eu/articles/gun-2.2.0/">Gun 2.2</a></li> + + + + <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..f6270b34 100644 --- a/articles/merry-christmas-2019/index.html +++ b/articles/merry-christmas-2019/index.html @@ -91,6 +91,18 @@ + <li><a href="https://ninenines.eu/articles/cowboy-2.14.0/">Cowboy 2.14</a></li> + + + + <li><a href="https://ninenines.eu/articles/gun-2.2.0/">Gun 2.2</a></li> + + + + <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..cae19be1 100644 --- a/articles/ml-archives/index.html +++ b/articles/ml-archives/index.html @@ -85,6 +85,18 @@ + <li><a href="https://ninenines.eu/articles/cowboy-2.14.0/">Cowboy 2.14</a></li> + + + + <li><a href="https://ninenines.eu/articles/gun-2.2.0/">Gun 2.2</a></li> + + + + <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..3ca79b69 100644 --- a/articles/on-open-source/index.html +++ b/articles/on-open-source/index.html @@ -97,6 +97,18 @@ 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.14.0/">Cowboy 2.14</a></li> + + + + <li><a href="https://ninenines.eu/articles/gun-2.2.0/">Gun 2.2</a></li> + + + + <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..42799384 100644 --- a/articles/otp-26/index.html +++ b/articles/otp-26/index.html @@ -92,6 +92,18 @@ + <li><a href="https://ninenines.eu/articles/cowboy-2.14.0/">Cowboy 2.14</a></li> + + + + <li><a href="https://ninenines.eu/articles/gun-2.2.0/">Gun 2.2</a></li> + + + + <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..0c7063bd 100644 --- a/articles/page/2/index.html +++ b/articles/page/2/index.html @@ -65,6 +65,59 @@ <article class="blog_item"> <header> + <h2><a href="https://ninenines.eu/articles/gun-2.0.0-pre.1/">Gun 2.0 pre-release 1</a></h2> + <p class="date"> + <span class="year">2019</span> + <span class="day-month">27 Sep</span> + </p> + </header> + + <p>Gun 2.0.0-pre.1 has been released! +The first pre-release version of Gun 2.0 has been released! Gun 2.0 adds a ton of features along with a small number of breaking changes. +Before listing the features please note that this pre-release includes a fix for a potential security vulnerability! This only applies when Gun is used inside a proxy under specific circumstances. Please see the migration guide for details. Since the issue also exists in the previous version I have released Gun 1.</p> + + <p style="text-align:right"> + <a class="read_more" href="https://ninenines.eu/articles/gun-2.0.0-pre.1/">Read More</a> + </p> + </article> + + <article class="blog_item"> + <header> + <h2><a href="https://ninenines.eu/articles/erlang-meetup-10-septembre-2019/">Erlang meetup: 10 septembre 2019</a></h2> + <p class="date"> + <span class="year">2019</span> + <span class="day-month">22 Aug</span> + </p> + </header> + + <p>Erlang meetups are resuming and I will be present at the next one in Paris on the 10th of September. As the meetup and my talk about Gun will be in French the rest of this post will be in French as well. If you are around Paris that night, you are welcome to join and chat, even if you don't speak the language! +Je serai au meetup Erlang le 10 septembre chez Datadog à Paris.</p> + + <p style="text-align:right"> + <a class="read_more" href="https://ninenines.eu/articles/erlang-meetup-10-septembre-2019/">Read More</a> + </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> + + <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> @@ -382,58 +435,6 @@ HTTP/2 server push was using the wrong header compression context. HTTP/2 flow </p> </article> - <article class="blog_item"> - <header> - <h2><a href="https://ninenines.eu/articles/cowboy-2.0.0-rc.1/">Cowboy 2.0 release candidate 1</a></h2> - <p class="date"> - <span class="year">2017</span> - <span class="day-month">24 Jul</span> - </p> - </header> - - <p>Cowboy 2.0.0-rc.1 has been released! -This is the new recommended version of Cowboy. Its API should not change before release. While you probably should not use it in production yet, many do successfully. Use at your own risk. -The plan is to have a new RC version every couple weeks until the summer ends or later if there are still blocking issues open. Only issues that can't be fixed without making breaking changes to the interface may block the release.</p> - - <p style="text-align:right"> - <a class="read_more" href="https://ninenines.eu/articles/cowboy-2.0.0-rc.1/">Read More</a> - </p> - </article> - - <article class="blog_item"> - <header> - <h2><a href="https://ninenines.eu/articles/the-elephant-in-the-room/">The elephant in the room</a></h2> - <p class="date"> - <span class="year">2017</span> - <span class="day-month">26 Mar</span> - </p> - </header> - - <p>Have you ever tried telling someone why they should use Erlang? You boast the smaller code size, the auto healing mechanisms, the distribution and they seem really excited. They wonder why they never heard about Erlang before. And then you show them what the code looks like. All excitement goes away. The smiles disappear. Their face starts becoming really serious. -You lost them. You know you lost them. They comment on the syntax, or perhaps you do, already admitting defeat.</p> - - <p style="text-align:right"> - <a class="read_more" href="https://ninenines.eu/articles/the-elephant-in-the-room/">Read More</a> - </p> - </article> - - <article class="blog_item"> - <header> - <h2><a href="https://ninenines.eu/articles/dont-let-it-crash/">Don'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'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..9ddc5f22 100644 --- a/articles/page/3/index.html +++ b/articles/page/3/index.html @@ -65,6 +65,58 @@ <article class="blog_item"> <header> + <h2><a href="https://ninenines.eu/articles/cowboy-2.0.0-rc.1/">Cowboy 2.0 release candidate 1</a></h2> + <p class="date"> + <span class="year">2017</span> + <span class="day-month">24 Jul</span> + </p> + </header> + + <p>Cowboy 2.0.0-rc.1 has been released! +This is the new recommended version of Cowboy. Its API should not change before release. While you probably should not use it in production yet, many do successfully. Use at your own risk. +The plan is to have a new RC version every couple weeks until the summer ends or later if there are still blocking issues open. Only issues that can't be fixed without making breaking changes to the interface may block the release.</p> + + <p style="text-align:right"> + <a class="read_more" href="https://ninenines.eu/articles/cowboy-2.0.0-rc.1/">Read More</a> + </p> + </article> + + <article class="blog_item"> + <header> + <h2><a href="https://ninenines.eu/articles/the-elephant-in-the-room/">The elephant in the room</a></h2> + <p class="date"> + <span class="year">2017</span> + <span class="day-month">26 Mar</span> + </p> + </header> + + <p>Have you ever tried telling someone why they should use Erlang? You boast the smaller code size, the auto healing mechanisms, the distribution and they seem really excited. They wonder why they never heard about Erlang before. And then you show them what the code looks like. All excitement goes away. The smiles disappear. Their face starts becoming really serious. +You lost them. You know you lost them. They comment on the syntax, or perhaps you do, already admitting defeat.</p> + + <p style="text-align:right"> + <a class="read_more" href="https://ninenines.eu/articles/the-elephant-in-the-room/">Read More</a> + </p> + </article> + + <article class="blog_item"> + <header> + <h2><a href="https://ninenines.eu/articles/dont-let-it-crash/">Don'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'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> @@ -370,61 +422,6 @@ We will be running this expression at compile time, since we don't have the </p> </article> - <article class="blog_item"> - <header> - <h2><a href="https://ninenines.eu/articles/xerl-0.2-two-modules/">Xerl: two modules</a></h2> - <p class="date"> - <span class="year">2013</span> - <span class="day-month">03 Feb</span> - </p> - </header> - - <p>Everything is an expression. -This sentence carries profound meaning. We will invoke it many times over the course of these articles. -If everything is an expression, then the language shouldn't have any problem with me defining two modules in the same source file. -mod first_module begin end mod second_module begin end Likewise, it shouldn't have any problem with me defining a module inside another module. -mod out_module begin mod in_module begin end end Of course, in the context of the Erlang VM, these two snippets are equivalent; there is nothing preventing you from calling the in_module module from any other module.</p> - - <p style="text-align:right"> - <a class="read_more" href="https://ninenines.eu/articles/xerl-0.2-two-modules/">Read More</a> - </p> - </article> - - <article class="blog_item"> - <header> - <h2><a href="https://ninenines.eu/articles/xerl-0.1-empty-modules/">Xerl: empty modules</a></h2> - <p class="date"> - <span class="year">2013</span> - <span class="day-month">30 Jan</span> - </p> - </header> - - <p>Let's build a programming language. I call it Xerl: eXtended ERLang. It'll be an occasion for us to learn a few things, especially me. -Unlike in Erlang, in this language, everything is an expression. This means that modules and functions are expression, and indeed that you can have more than one module per file. -We are just starting, so let's no go ahead of ourselves here. We'll begin with writing the code allowing us to compile an empty module.</p> - - <p style="text-align:right"> - <a class="read_more" href="https://ninenines.eu/articles/xerl-0.1-empty-modules/">Read More</a> - </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..5b0847ce 100644 --- a/articles/page/4/index.html +++ b/articles/page/4/index.html @@ -65,6 +65,61 @@ <article class="blog_item"> <header> + <h2><a href="https://ninenines.eu/articles/xerl-0.2-two-modules/">Xerl: two modules</a></h2> + <p class="date"> + <span class="year">2013</span> + <span class="day-month">03 Feb</span> + </p> + </header> + + <p>Everything is an expression. +This sentence carries profound meaning. We will invoke it many times over the course of these articles. +If everything is an expression, then the language shouldn't have any problem with me defining two modules in the same source file. +mod first_module begin end mod second_module begin end Likewise, it shouldn't have any problem with me defining a module inside another module. +mod out_module begin mod in_module begin end end Of course, in the context of the Erlang VM, these two snippets are equivalent; there is nothing preventing you from calling the in_module module from any other module.</p> + + <p style="text-align:right"> + <a class="read_more" href="https://ninenines.eu/articles/xerl-0.2-two-modules/">Read More</a> + </p> + </article> + + <article class="blog_item"> + <header> + <h2><a href="https://ninenines.eu/articles/xerl-0.1-empty-modules/">Xerl: empty modules</a></h2> + <p class="date"> + <span class="year">2013</span> + <span class="day-month">30 Jan</span> + </p> + </header> + + <p>Let's build a programming language. I call it Xerl: eXtended ERLang. It'll be an occasion for us to learn a few things, especially me. +Unlike in Erlang, in this language, everything is an expression. This means that modules and functions are expression, and indeed that you can have more than one module per file. +We are just starting, so let's no go ahead of ourselves here. We'll begin with writing the code allowing us to compile an empty module.</p> + + <p style="text-align:right"> + <a class="read_more" href="https://ninenines.eu/articles/xerl-0.1-empty-modules/">Read More</a> + </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> + + <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..f2610396 100644 --- a/articles/ranch-1.3/index.html +++ b/articles/ranch-1.3/index.html @@ -126,6 +126,18 @@ Primary key fingerprint<font color="#990000">:</font> F19F 189C ECC7 <font color + <li><a href="https://ninenines.eu/articles/cowboy-2.14.0/">Cowboy 2.14</a></li> + + + + <li><a href="https://ninenines.eu/articles/gun-2.2.0/">Gun 2.2</a></li> + + + + <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..4184bb54 100644 --- a/articles/ranch-1.6.0/index.html +++ b/articles/ranch-1.6.0/index.html @@ -88,6 +88,18 @@ + <li><a href="https://ninenines.eu/articles/cowboy-2.14.0/">Cowboy 2.14</a></li> + + + + <li><a href="https://ninenines.eu/articles/gun-2.2.0/">Gun 2.2</a></li> + + + + <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..8bee41bb 100644 --- a/articles/ranch-1.7.0/index.html +++ b/articles/ranch-1.7.0/index.html @@ -87,6 +87,18 @@ + <li><a href="https://ninenines.eu/articles/cowboy-2.14.0/">Cowboy 2.14</a></li> + + + + <li><a href="https://ninenines.eu/articles/gun-2.2.0/">Gun 2.2</a></li> + + + + <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..5ae3c7d6 100644 --- a/articles/ranch-2.0.0-rc.1/index.html +++ b/articles/ranch-2.0.0-rc.1/index.html @@ -96,6 +96,18 @@ + <li><a href="https://ninenines.eu/articles/cowboy-2.14.0/">Cowboy 2.14</a></li> + + + + <li><a href="https://ninenines.eu/articles/gun-2.2.0/">Gun 2.2</a></li> + + + + <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..4bc957bd 100644 --- a/articles/ranch-2.0.0/index.html +++ b/articles/ranch-2.0.0/index.html @@ -95,6 +95,18 @@ + <li><a href="https://ninenines.eu/articles/cowboy-2.14.0/">Cowboy 2.14</a></li> + + + + <li><a href="https://ninenines.eu/articles/gun-2.2.0/">Gun 2.2</a></li> + + + + <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..8474057a 100644 --- a/articles/ranch-2.1.0/index.html +++ b/articles/ranch-2.1.0/index.html @@ -90,6 +90,18 @@ + <li><a href="https://ninenines.eu/articles/cowboy-2.14.0/">Cowboy 2.14</a></li> + + + + <li><a href="https://ninenines.eu/articles/gun-2.2.0/">Gun 2.2</a></li> + + + + <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..efb88033 100644 --- a/articles/ranch-2.2.0/index.html +++ b/articles/ranch-2.2.0/index.html @@ -88,6 +88,18 @@ + <li><a href="https://ninenines.eu/articles/cowboy-2.14.0/">Cowboy 2.14</a></li> + + + + <li><a href="https://ninenines.eu/articles/gun-2.2.0/">Gun 2.2</a></li> + + + + <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..eb0d0453 100644 --- a/articles/ranch-ftp/index.html +++ b/articles/ranch-ftp/index.html @@ -228,6 +228,18 @@ http://www.gnu.org/software/src-highlite --> + <li><a href="https://ninenines.eu/articles/cowboy-2.14.0/">Cowboy 2.14</a></li> + + + + <li><a href="https://ninenines.eu/articles/gun-2.2.0/">Gun 2.2</a></li> + + + + <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..7c72dffb 100644 --- a/articles/the-elephant-in-the-room/index.html +++ b/articles/the-elephant-in-the-room/index.html @@ -110,6 +110,18 @@ + <li><a href="https://ninenines.eu/articles/cowboy-2.14.0/">Cowboy 2.14</a></li> + + + + <li><a href="https://ninenines.eu/articles/gun-2.2.0/">Gun 2.2</a></li> + + + + <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..b28fe602 100644 --- a/articles/the-gateway-trilogy/index.html +++ b/articles/the-gateway-trilogy/index.html @@ -85,6 +85,18 @@ + <li><a href="https://ninenines.eu/articles/cowboy-2.14.0/">Cowboy 2.14</a></li> + + + + <li><a href="https://ninenines.eu/articles/gun-2.2.0/">Gun 2.2</a></li> + + + + <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..6de610da 100644 --- a/articles/the-story-so-far/index.html +++ b/articles/the-story-so-far/index.html @@ -101,6 +101,18 @@ + <li><a href="https://ninenines.eu/articles/cowboy-2.14.0/">Cowboy 2.14</a></li> + + + + <li><a href="https://ninenines.eu/articles/gun-2.2.0/">Gun 2.2</a></li> + + + + <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..bc66bc13 100644 --- a/articles/tictactoe/index.html +++ b/articles/tictactoe/index.html @@ -133,6 +133,18 @@ http://www.gnu.org/software/src-highlite --> + <li><a href="https://ninenines.eu/articles/cowboy-2.14.0/">Cowboy 2.14</a></li> + + + + <li><a href="https://ninenines.eu/articles/gun-2.2.0/">Gun 2.2</a></li> + + + + <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..983d0b42 100644 --- a/articles/website-update/index.html +++ b/articles/website-update/index.html @@ -90,6 +90,18 @@ + <li><a href="https://ninenines.eu/articles/cowboy-2.14.0/">Cowboy 2.14</a></li> + + + + <li><a href="https://ninenines.eu/articles/gun-2.2.0/">Gun 2.2</a></li> + + + + <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..d43c777d 100644 --- a/articles/xerl-0.1-empty-modules/index.html +++ b/articles/xerl-0.1-empty-modules/index.html @@ -168,6 +168,18 @@ http://www.gnu.org/software/src-highlite --> + <li><a href="https://ninenines.eu/articles/cowboy-2.14.0/">Cowboy 2.14</a></li> + + + + <li><a href="https://ninenines.eu/articles/gun-2.2.0/">Gun 2.2</a></li> + + + + <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..2bb876d4 100644 --- a/articles/xerl-0.2-two-modules/index.html +++ b/articles/xerl-0.2-two-modules/index.html @@ -196,6 +196,18 @@ http://www.gnu.org/software/src-highlite --> + <li><a href="https://ninenines.eu/articles/cowboy-2.14.0/">Cowboy 2.14</a></li> + + + + <li><a href="https://ninenines.eu/articles/gun-2.2.0/">Gun 2.2</a></li> + + + + <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..2c367396 100644 --- a/articles/xerl-0.3-atomic-expressions/index.html +++ b/articles/xerl-0.3-atomic-expressions/index.html @@ -165,6 +165,18 @@ http://www.gnu.org/software/src-highlite --> + <li><a href="https://ninenines.eu/articles/cowboy-2.14.0/">Cowboy 2.14</a></li> + + + + <li><a href="https://ninenines.eu/articles/gun-2.2.0/">Gun 2.2</a></li> + + + + <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..2a1bc1ca 100644 --- a/articles/xerl-0.4-expression-separator/index.html +++ b/articles/xerl-0.4-expression-separator/index.html @@ -117,6 +117,18 @@ http://www.gnu.org/software/src-highlite --> + <li><a href="https://ninenines.eu/articles/cowboy-2.14.0/">Cowboy 2.14</a></li> + + + + <li><a href="https://ninenines.eu/articles/gun-2.2.0/">Gun 2.2</a></li> + + + + <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..a0f7db81 100644 --- a/articles/xerl-0.5-intermediate-module/index.html +++ b/articles/xerl-0.5-intermediate-module/index.html @@ -161,6 +161,18 @@ http://www.gnu.org/software/src-highlite --> + <li><a href="https://ninenines.eu/articles/cowboy-2.14.0/">Cowboy 2.14</a></li> + + + + <li><a href="https://ninenines.eu/articles/gun-2.2.0/">Gun 2.2</a></li> + + + + <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> |
