diff --git a/Gemfile b/Gemfile
index 72d7fa39a..f24d05f4a 100644
--- a/Gemfile
+++ b/Gemfile
@@ -3,3 +3,6 @@ source 'https://rubygems.org'
 gem 'github-pages'
 gem 'json', '>= 2.0.0'
 gem 'webrick', '>= 1.8'
+gem 'csv', '~> 3.3'
+gem 'base64', '~> 0.2.0'
+gem 'bigdecimal', '~> 3.1'
diff --git a/Gemfile.lock b/Gemfile.lock
index b966d6772..bb36d1087 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -8,6 +8,8 @@ GEM
       tzinfo (~> 2.0)
     addressable (2.8.1)
       public_suffix (>= 2.0.2, < 6.0)
+    base64 (0.2.0)
+    bigdecimal (3.1.9)
     coffee-script (2.4.1)
       coffee-script-source
       execjs
@@ -15,6 +17,7 @@ GEM
     colorator (1.1.0)
     commonmarker (0.23.10)
     concurrent-ruby (1.2.2)
+    csv (3.3.3)
     dnsruby (1.61.9)
       simpleidn (~> 0.1)
     em-websocket (0.5.3)
@@ -256,6 +259,9 @@ PLATFORMS
   ruby
 
 DEPENDENCIES
+  base64 (~> 0.2.0)
+  bigdecimal (~> 3.1)
+  csv (~> 3.3)
   github-pages
   json (>= 2.0.0)
   webrick (>= 1.8)
diff --git a/_data/elixir-versions.yml b/_data/elixir-versions.yml
index e4e344843..4d2593c70 100644
--- a/_data/elixir-versions.yml
+++ b/_data/elixir-versions.yml
@@ -3,9 +3,9 @@ stable: v1_18
 v1_18:
   name: v1.18
   minimum_otp: 26.0
-  recommended_otp: 27.1.2
+  recommended_otp: 27.3.4
   otp_versions: [27, 26, 25]
-  version: 1.18.2
+  version: 1.18.4
 
 v1_17:
   name: v1.17
diff --git a/_includes/events.html b/_includes/events.html
index b7635e412..7aedcfb1f 100644
--- a/_includes/events.html
+++ b/_includes/events.html
@@ -1,3 +1,11 @@
-<!-- <div class="widget events">
+<div class="widget events">
   <h3 class="widget-title">Upcoming events</h3>
-</div> -->
\ No newline at end of file
+  <a href="https://elixirconf.com/">
+    <img src="https://2022.elixirconf.com/images/resources/elixirconf-logo.svg" alt="ElixirConf" />
+    <br />
+    <ul>
+      <li><b>Aug 28-29, 2025</b> - Orlando, FL.</li>
+      <li><b>Aug 27 - Seven Workshops to choose from</b></li>
+    </ul>
+  </a>
+</div>
\ No newline at end of file
diff --git a/_layouts/post.html b/_layouts/post.html
index 8cde0eff9..4cab9e33a 100644
--- a/_layouts/post.html
+++ b/_layouts/post.html
@@ -11,7 +11,7 @@ <h1>{{ page.title }}</h1>
         {% if page.subtitle %}
         <h2>{{ page.subtitle }}</h2>
         {% endif %}
-        <div class="byline">{{ page.date | date: "%B %d, %Y" }}{% if page.author %} &middot; by {{ page.author}}{% endif %} &middot; in {% for category in page.categories %}
+        <div class="byline">{{ page.date | date: "%B %d, %Y" }}{% if page.authors %} &middot; by {{ page.authors | join: ", " }}{% endif %} &middot; in {% for category in page.categories %}
           {% if category == "Elixir in Production" %}
             <a class="category" href="/cases.html">{{ category }}</a>
           {% else %}
diff --git a/_posts/2012-04-24-a-peek-inside-elixir-s-parallel-compiler.markdown b/_posts/2012-04-24-a-peek-inside-elixir-s-parallel-compiler.markdown
index e4f0fe17f..591610198 100644
--- a/_posts/2012-04-24-a-peek-inside-elixir-s-parallel-compiler.markdown
+++ b/_posts/2012-04-24-a-peek-inside-elixir-s-parallel-compiler.markdown
@@ -1,7 +1,8 @@
 ---
 layout: post
 title: A peek inside Elixir's Parallel Compiler
-author: José Valim
+authors:
+-  José Valim
 category: Internals
 excerpt: Today, a parallel compiler just landed in Elixir main. The goal of the parallel compiler is to compile files in parallel, automatically detecting dependencies between files. In this blog post, we are going to take a peek into the parallel compiler internals and learn more about Erlang and Elixir in the process.
 ---
diff --git a/_posts/2012-05-25-elixir-v0-5-0-released.markdown b/_posts/2012-05-25-elixir-v0-5-0-released.markdown
index cc7fa3fa6..a5701a60d 100644
--- a/_posts/2012-05-25-elixir-v0-5-0-released.markdown
+++ b/_posts/2012-05-25-elixir-v0-5-0-released.markdown
@@ -1,7 +1,8 @@
 ---
 layout: post
 title: Elixir v0.5.0 released
-author: José Valim
+authors:
+-  José Valim
 category: Releases
 excerpt: We have finally released Elixir v0.5.0! This marks the first release since the language was rewritten. In this blog post, we will discuss what we achieved during this time and what are the next steps!
 
diff --git a/_posts/2012-08-01-elixir-v0-6-0-released.markdown b/_posts/2012-08-01-elixir-v0-6-0-released.markdown
index 355c4d991..becafdf7c 100644
--- a/_posts/2012-08-01-elixir-v0-6-0-released.markdown
+++ b/_posts/2012-08-01-elixir-v0-6-0-released.markdown
@@ -1,7 +1,8 @@
 ---
 layout: post
 title: Elixir v0.6.0 released
-author: José Valim
+authors:
+-  José Valim
 category: Releases
 excerpt: We have finally released Elixir v0.6.0! This release includes a build tool called Mix, support for Erlang typespecs, many improvements to IEx and improved IO, File and Macro support.
 
diff --git a/_posts/2012-10-20-elixir-v0-7-0-released.markdown b/_posts/2012-10-20-elixir-v0-7-0-released.markdown
index 2d41eb167..d2f181612 100644
--- a/_posts/2012-10-20-elixir-v0-7-0-released.markdown
+++ b/_posts/2012-10-20-elixir-v0-7-0-released.markdown
@@ -1,7 +1,8 @@
 ---
 layout: post
 title: Elixir v0.7.0 released
-author: José Valim
+authors:
+-  José Valim
 category: Releases
 excerpt: Elixir v0.7.0 is released with many improvements! Read on for more information.
 
diff --git a/_posts/2012-11-18-elixir-v0-7-1-released.markdown b/_posts/2012-11-18-elixir-v0-7-1-released.markdown
index 7a1ff19a0..113bcd31f 100644
--- a/_posts/2012-11-18-elixir-v0-7-1-released.markdown
+++ b/_posts/2012-11-18-elixir-v0-7-1-released.markdown
@@ -1,7 +1,8 @@
 ---
 layout: post
 title: Elixir v0.7.1 released
-author: José Valim
+authors:
+-  José Valim
 category: Releases
 excerpt: Elixir v0.7.1 was released to celebrate the end of a two months journey traveling around Europe, United States and Brazil talking about Elixir.
 
diff --git a/_posts/2012-12-04-elixir-v0-7-2-released.markdown b/_posts/2012-12-04-elixir-v0-7-2-released.markdown
index c18b6ccb4..b4ec972c7 100644
--- a/_posts/2012-12-04-elixir-v0-7-2-released.markdown
+++ b/_posts/2012-12-04-elixir-v0-7-2-released.markdown
@@ -1,7 +1,8 @@
 ---
 layout: post
 title: Elixir v0.7.2 released
-author: Yurii Rashkovskii
+authors:
+-  Yurii Rashkovskii
 category: Releases
 excerpt: Elixir v0.7.2 is released, new, improved type specifications syntax and many other improvements.
 
diff --git a/_posts/2013-01-27-elixir-v0-8-0-released.markdown b/_posts/2013-01-27-elixir-v0-8-0-released.markdown
index 2a07d42ec..9f6236b10 100644
--- a/_posts/2013-01-27-elixir-v0-8-0-released.markdown
+++ b/_posts/2013-01-27-elixir-v0-8-0-released.markdown
@@ -1,7 +1,8 @@
 ---
 layout: post
 title: Elixir v0.8.0 released
-author: José Valim
+authors:
+-  José Valim
 category: Releases
 excerpt: On the last 9th January, we celebrated two years since Elixir's first commit and to celebrate this occasion we have prepared a big release. Elixir v0.8 is out, with documentation, optimizations, bug fixes and shiny new features. Let's take a look at them!
 ---
diff --git a/_posts/2013-04-19-google-summer-of-code-2013.markdown b/_posts/2013-04-19-google-summer-of-code-2013.markdown
index b025579f6..d964d7c1b 100644
--- a/_posts/2013-04-19-google-summer-of-code-2013.markdown
+++ b/_posts/2013-04-19-google-summer-of-code-2013.markdown
@@ -1,7 +1,8 @@
 ---
 layout: post
 title: Google Summer of Code 2013
-author: José Valim
+authors:
+-  José Valim
 category: Announcements
 excerpt: Elixir is taking part in Google Summer of Code 2013! Are you a student? Join us!
 ---
diff --git a/_posts/2013-04-29-elixir-v0-8-2-released.markdown b/_posts/2013-04-29-elixir-v0-8-2-released.markdown
index 18f1b2ea9..fea64d566 100644
--- a/_posts/2013-04-29-elixir-v0-8-2-released.markdown
+++ b/_posts/2013-04-29-elixir-v0-8-2-released.markdown
@@ -1,7 +1,8 @@
 ---
 layout: post
 title: Elixir v0.8.2 released
-author: José Valim
+authors:
+-  José Valim
 category: Releases
 excerpt: Elixir v0.8.2 is released with bug fixes, better Erlang R16 support and doctests.
 ---
diff --git a/_posts/2013-05-02-elixir-on-xen.markdown b/_posts/2013-05-02-elixir-on-xen.markdown
index a4dd2de42..9f1de4c2b 100644
--- a/_posts/2013-05-02-elixir-on-xen.markdown
+++ b/_posts/2013-05-02-elixir-on-xen.markdown
@@ -1,7 +1,8 @@
 ---
 layout: post
 title: Elixir on Xen
-author: José Valim
+authors:
+-  José Valim
 category: Announcements
 excerpt: The Erlang on Xen team has added support for Elixir and we will tell you how you can use it!
 ---
diff --git a/_posts/2013-05-23-elixir-v0-9-0-released.markdown b/_posts/2013-05-23-elixir-v0-9-0-released.markdown
index 289dae2dd..edee304e1 100644
--- a/_posts/2013-05-23-elixir-v0-9-0-released.markdown
+++ b/_posts/2013-05-23-elixir-v0-9-0-released.markdown
@@ -1,7 +1,8 @@
 ---
 layout: post
 title: Elixir v0.9.0 released
-author: José Valim
+authors:
+-  José Valim
 category: Releases
 excerpt: Elixir v0.9.0 is released with support for reducers, umbrella projects, faster compilation times and dropped support for R15 and earlier OTP versions.
 ---
diff --git a/_posts/2013-07-13-elixir-v0-10-0-released.markdown b/_posts/2013-07-13-elixir-v0-10-0-released.markdown
index d67b366b8..c00858ea8 100644
--- a/_posts/2013-07-13-elixir-v0-10-0-released.markdown
+++ b/_posts/2013-07-13-elixir-v0-10-0-released.markdown
@@ -1,7 +1,8 @@
 ---
 layout: post
 title: Elixir v0.10.0 released
-author: José Valim
+authors:
+-  José Valim
 category: Releases
 excerpt: Elixir v0.10.0 is out with support for streams, sets, pretty printing and many improvements for Mix and ExUnit.
 ---
diff --git a/_posts/2013-08-08-elixir-design-goals.markdown b/_posts/2013-08-08-elixir-design-goals.markdown
index 7509cc0d3..5959dab92 100644
--- a/_posts/2013-08-08-elixir-design-goals.markdown
+++ b/_posts/2013-08-08-elixir-design-goals.markdown
@@ -1,7 +1,8 @@
 ---
 layout: post
 title: Elixir Design Goals
-author: José Valim
+authors:
+-  José Valim
 category: Internals
 excerpt: Highlight of Elixir design goals.
 ---
diff --git a/_posts/2013-11-05-elixir-v0-11-0-released.markdown b/_posts/2013-11-05-elixir-v0-11-0-released.markdown
index f8dbc43b6..1a668262c 100644
--- a/_posts/2013-11-05-elixir-v0-11-0-released.markdown
+++ b/_posts/2013-11-05-elixir-v0-11-0-released.markdown
@@ -1,7 +1,8 @@
 ---
 layout: post
 title: Elixir v0.11.0 released
-author: José Valim
+authors:
+-  José Valim
 category: Releases
 excerpt: Elixir v0.11.0 is out and it focus on improving and optimizing the patterns often used by the community.
 ---
diff --git a/_posts/2013-12-11-elixir-s-new-continuable-enumerators.markdown b/_posts/2013-12-11-elixir-s-new-continuable-enumerators.markdown
index 9a0670d9f..b29807cb4 100644
--- a/_posts/2013-12-11-elixir-s-new-continuable-enumerators.markdown
+++ b/_posts/2013-12-11-elixir-s-new-continuable-enumerators.markdown
@@ -1,7 +1,8 @@
 ---
 layout: post
 title: Elixir's new continuable enumerators
-author: Peter Minten
+authors:
+-  Peter Minten
 category: Internals
 excerpt: In 0.12.0 Elixir's enumerators have gained the ability to suspend value
          production and to terminate early.
diff --git a/_posts/2013-12-15-elixir-v0-12-0-released.markdown b/_posts/2013-12-15-elixir-v0-12-0-released.markdown
index 562f65467..fe8a349e3 100644
--- a/_posts/2013-12-15-elixir-v0-12-0-released.markdown
+++ b/_posts/2013-12-15-elixir-v0-12-0-released.markdown
@@ -1,7 +1,8 @@
 ---
 layout: post
 title: Elixir v0.12.0 released
-author: José Valim
+authors:
+-  José Valim
 category: Releases
 excerpt: Elixir v0.12.0 is out with improved enumerables, build patterns and welcoming a new member to our team
 ---
diff --git a/_posts/2014-04-21-elixir-v0-13-0-released.markdown b/_posts/2014-04-21-elixir-v0-13-0-released.markdown
index eb1532441..995e4d68c 100644
--- a/_posts/2014-04-21-elixir-v0-13-0-released.markdown
+++ b/_posts/2014-04-21-elixir-v0-13-0-released.markdown
@@ -1,7 +1,8 @@
 ---
 layout: post
 title: Elixir v0.13.0 released, hex.pm and ElixirConf announced
-author: José Valim
+authors:
+-  José Valim
 category: Releases
 excerpt: "Elixir v0.13.0 comes with substantial improvements to the language: maps, structs, comprehensiona and more. It also marks the announcement of the hex.pm package manager and the announcement of ElixirConf!"
 ---
diff --git a/_posts/2014-06-17-elixir-v0-14-0-released.markdown b/_posts/2014-06-17-elixir-v0-14-0-released.markdown
index 0cd089535..cfa23e5ca 100644
--- a/_posts/2014-06-17-elixir-v0-14-0-released.markdown
+++ b/_posts/2014-06-17-elixir-v0-14-0-released.markdown
@@ -1,7 +1,8 @@
 ---
 layout: post
 title: Elixir v0.14.0 released
-author: José Valim
+authors:
+-  José Valim
 category: Releases
 excerpt: "Elixir v0.14.0 is released and expands the work on structs and bringing more of OTP right into Elixir and Mix"
 ---
diff --git a/_posts/2014-08-07-elixir-v0-15-0-released.markdown b/_posts/2014-08-07-elixir-v0-15-0-released.markdown
index e99cebaab..32b579555 100644
--- a/_posts/2014-08-07-elixir-v0-15-0-released.markdown
+++ b/_posts/2014-08-07-elixir-v0-15-0-released.markdown
@@ -1,7 +1,8 @@
 ---
 layout: post
 title: Elixir v0.15.0 released
-author: José Valim
+authors:
+-  José Valim
 category: Releases
 excerpt: "Elixir v0.15.0 introduces Elixir's Logger, Mix aliases and is the last stop before Elixir v1.0. We are also glad to welcome Alexei into our team!"
 ---
diff --git a/_posts/2014-09-18-elixir-v1-0-0-released.markdown b/_posts/2014-09-18-elixir-v1-0-0-released.markdown
index 5e07033dd..72929864c 100644
--- a/_posts/2014-09-18-elixir-v1-0-0-released.markdown
+++ b/_posts/2014-09-18-elixir-v1-0-0-released.markdown
@@ -1,7 +1,8 @@
 ---
 layout: post
 title: Elixir v1.0 released
-author: José Valim
+authors:
+-  José Valim
 category: Releases
 excerpt: Elixir v1.0 is finally out!
 ---
diff --git a/_posts/2015-09-28-elixir-v1-1-0-released.markdown b/_posts/2015-09-28-elixir-v1-1-0-released.markdown
index e5f85c7a5..5adecea87 100644
--- a/_posts/2015-09-28-elixir-v1-1-0-released.markdown
+++ b/_posts/2015-09-28-elixir-v1-1-0-released.markdown
@@ -1,7 +1,8 @@
 ---
 layout: post
 title: Elixir v1.1 released
-author: José Valim
+authors:
+-  José Valim
 category: Releases
 excerpt: Elixir v1.1 brings enhancements, bug fixes, performance improvements and more into Elixir.
 ---
diff --git a/_posts/2016-01-03-elixir-v1-2-0-released.markdown b/_posts/2016-01-03-elixir-v1-2-0-released.markdown
index beb51fe8b..1b8a7efd8 100644
--- a/_posts/2016-01-03-elixir-v1-2-0-released.markdown
+++ b/_posts/2016-01-03-elixir-v1-2-0-released.markdown
@@ -1,7 +1,8 @@
 ---
 layout: post
 title: Elixir v1.2 released
-author: José Valim
+authors:
+-  José Valim
 category: Releases
 excerpt: Elixir v1.2 brings enhancements, bug fixes, performance improvements and more into Elixir.
 ---
diff --git a/_posts/2016-06-21-elixir-v1-3-0-released.markdown b/_posts/2016-06-21-elixir-v1-3-0-released.markdown
index 13ade0b0b..3ee45d0e0 100644
--- a/_posts/2016-06-21-elixir-v1-3-0-released.markdown
+++ b/_posts/2016-06-21-elixir-v1-3-0-released.markdown
@@ -1,7 +1,8 @@
 ---
 layout: post
 title: Elixir v1.3 released
-author: José Valim
+authors:
+-  José Valim
 category: Releases
 excerpt: Elixir v1.3 brings many improvements to the language, the compiler and its tooling, specially Mix (Elixir's build tool) and ExUnit (Elixir's test framework).
 ---
diff --git a/_posts/2016-07-14-announcing-genstage.markdown b/_posts/2016-07-14-announcing-genstage.markdown
index 8b5bd31a5..7a853d043 100644
--- a/_posts/2016-07-14-announcing-genstage.markdown
+++ b/_posts/2016-07-14-announcing-genstage.markdown
@@ -1,7 +1,8 @@
 ---
 layout: post
 title: Announcing GenStage
-author: José Valim
+authors:
+-  José Valim
 category: Announcements
 excerpt: GenStage is a new Elixir behaviour for exchanging events with back-pressure between Elixir processes. In this blog post we will cover the background that led us to GenStage, some example use cases, and what we are exploring for future releases.
 ---
diff --git a/_posts/2017-01-05-elixir-v1-4-0-released.markdown b/_posts/2017-01-05-elixir-v1-4-0-released.markdown
index b333f5446..f110bb07e 100644
--- a/_posts/2017-01-05-elixir-v1-4-0-released.markdown
+++ b/_posts/2017-01-05-elixir-v1-4-0-released.markdown
@@ -1,7 +1,8 @@
 ---
 layout: post
 title: Elixir v1.4 released
-author: José Valim
+authors:
+-  José Valim
 category: Releases
 excerpt: Elixir v1.4 brings many improvements to the language, its standard library and the Mix build tool.
 ---
diff --git a/_posts/2017-07-25-elixir-v1-5-0-released.markdown b/_posts/2017-07-25-elixir-v1-5-0-released.markdown
index 2fe2c2794..c4f38f788 100644
--- a/_posts/2017-07-25-elixir-v1-5-0-released.markdown
+++ b/_posts/2017-07-25-elixir-v1-5-0-released.markdown
@@ -1,7 +1,8 @@
 ---
 layout: post
 title: Elixir v1.5 released
-author: José Valim
+authors:
+-  José Valim
 category: Releases
 excerpt: Elixir v1.5 integrates with Erlang/OTP 20 and bring changes that improves the language reach and the developer experience
 ---
diff --git a/_posts/2017-10-31-stream-data-property-based-testing-and-data-generation-for-elixir.markdown b/_posts/2017-10-31-stream-data-property-based-testing-and-data-generation-for-elixir.markdown
index 6aa52bf6e..242c28635 100644
--- a/_posts/2017-10-31-stream-data-property-based-testing-and-data-generation-for-elixir.markdown
+++ b/_posts/2017-10-31-stream-data-property-based-testing-and-data-generation-for-elixir.markdown
@@ -1,7 +1,8 @@
 ---
 layout: post
 title: "StreamData: Property-based testing and data generation"
-author: Andrea Leopardi
+authors:
+-  Andrea Leopardi
 category: Announcements
 excerpt: We are working on data generation and property-based testing for the next versions of Elixir.
 ---
diff --git a/_posts/2018-01-17-elixir-v1-6-0-released.markdown b/_posts/2018-01-17-elixir-v1-6-0-released.markdown
index c9e15c14b..99bc8c441 100644
--- a/_posts/2018-01-17-elixir-v1-6-0-released.markdown
+++ b/_posts/2018-01-17-elixir-v1-6-0-released.markdown
@@ -1,7 +1,8 @@
 ---
 layout: post
 title: Elixir v1.6 released
-author: José Valim
+authors:
+-  José Valim
 category: Releases
 excerpt: Elixir v1.6 includes a code formatter, defguard, dynamic supervision and new module attributes that improves code quality and the developer experience
 ---
diff --git a/_posts/2018-06-28-gsoc-projects.markdown b/_posts/2018-06-28-gsoc-projects.markdown
index 703275a59..168f6126e 100644
--- a/_posts/2018-06-28-gsoc-projects.markdown
+++ b/_posts/2018-06-28-gsoc-projects.markdown
@@ -1,7 +1,8 @@
 ---
 layout: post
 title: Google Summer of Code 2018 projects
-author: Andrea Leopardi
+authors:
+-  Andrea Leopardi
 category: Announcements
 excerpt: Once again Elixir is participating in Google Summer of Code 2018. In this post, we'll have a look at the active projects.
 ---
diff --git a/_posts/2018-07-25-elixir-v1-7-0-released.markdown b/_posts/2018-07-25-elixir-v1-7-0-released.markdown
index ed95134ac..51e8f7a66 100644
--- a/_posts/2018-07-25-elixir-v1-7-0-released.markdown
+++ b/_posts/2018-07-25-elixir-v1-7-0-released.markdown
@@ -1,7 +1,8 @@
 ---
 layout: post
 title: Elixir v1.7 released
-author: José Valim
+authors:
+-  José Valim
 category: Releases
 excerpt: Elixir v1.7 includes many quality of life improvements, focusing on documentation, Logger and ExUnit, as well as a new Elixir Core team member!
 ---
diff --git a/_posts/2019-01-14-elixir-v1-8-0-released.markdown b/_posts/2019-01-14-elixir-v1-8-0-released.markdown
index 1443d5a10..6da84a7dc 100644
--- a/_posts/2019-01-14-elixir-v1-8-0-released.markdown
+++ b/_posts/2019-01-14-elixir-v1-8-0-released.markdown
@@ -1,7 +1,8 @@
 ---
 layout: post
 title: Elixir v1.8 released
-author: José Valim
+authors:
+-  José Valim
 category: Releases
 excerpt: Elixir v1.8 comes with many improvements at the infrastructure level, improving compilation time, speeding up common patterns, and adding features around introspection of the system.
 ---
diff --git a/_posts/2019-02-25-mint-a-new-http-library-for-elixir.markdown b/_posts/2019-02-25-mint-a-new-http-library-for-elixir.markdown
index 3f3b4bead..3868b94e6 100644
--- a/_posts/2019-02-25-mint-a-new-http-library-for-elixir.markdown
+++ b/_posts/2019-02-25-mint-a-new-http-library-for-elixir.markdown
@@ -1,7 +1,8 @@
 ---
 layout: post
 title: Mint, a new HTTP client for Elixir
-author: Eric Meadows-Jönsson
+authors:
+-  Eric Meadows-Jönsson
 category: Announcements
 excerpt: Mint is a new low-level HTTP client that aims to provide a small and functional core that others can build on top.
 ---
diff --git a/_posts/2019-06-24-elixir-v1-9-0-released.markdown b/_posts/2019-06-24-elixir-v1-9-0-released.markdown
index 09eb688d4..b1b72fd4c 100644
--- a/_posts/2019-06-24-elixir-v1-9-0-released.markdown
+++ b/_posts/2019-06-24-elixir-v1-9-0-released.markdown
@@ -1,7 +1,8 @@
 ---
 layout: post
 title: Elixir v1.9 released
-author: José Valim
+authors:
+-  José Valim
 category: Releases
 excerpt: Elixir v1.9 is out with releases support, improved configuration and more.
 ---
diff --git a/_posts/2020-01-27-elixir-v1-10-0-released.markdown b/_posts/2020-01-27-elixir-v1-10-0-released.markdown
index 9a2c80966..f2eac58ce 100644
--- a/_posts/2020-01-27-elixir-v1-10-0-released.markdown
+++ b/_posts/2020-01-27-elixir-v1-10-0-released.markdown
@@ -1,7 +1,8 @@
 ---
 layout: post
 title: Elixir v1.10 released
-author: José Valim
+authors:
+-  José Valim
 category: Releases
 excerpt: Elixir v1.10 is out with standard library, compiler, and releases improvements.
 ---
diff --git a/_posts/2020-08-20-embedded-elixir-at-farmbot.markdown b/_posts/2020-08-20-embedded-elixir-at-farmbot.markdown
index f2120208e..0471d047f 100644
--- a/_posts/2020-08-20-embedded-elixir-at-farmbot.markdown
+++ b/_posts/2020-08-20-embedded-elixir-at-farmbot.markdown
@@ -1,7 +1,8 @@
 ---
 layout: post
 title: Embedded Elixir at Farmbot
-author: José Valim
+authors:
+-  José Valim
 category: Elixir in Production
 excerpt: A case study of how Elixir is being used at Farmbot.
 logo: /images/cases/logos/farmbot.png
diff --git a/_posts/2020-09-24-paas-with-elixir-at-Heroku.markdown b/_posts/2020-09-24-paas-with-elixir-at-Heroku.markdown
index 357f61cdf..bf97dd5f3 100644
--- a/_posts/2020-09-24-paas-with-elixir-at-Heroku.markdown
+++ b/_posts/2020-09-24-paas-with-elixir-at-Heroku.markdown
@@ -1,7 +1,8 @@
 ---
 layout: post
 title: PaaS with Elixir at Heroku
-author: José Valim
+authors:
+-  José Valim
 category: Elixir in Production
 excerpt: A case study of how Elixir is being used at Heroku.
 logo: /images/cases/logos/heroku.png
diff --git a/_posts/2020-10-06-elixir-v1-11-0-released.markdown b/_posts/2020-10-06-elixir-v1-11-0-released.markdown
index 1ee4274cc..7aaaefefb 100644
--- a/_posts/2020-10-06-elixir-v1-11-0-released.markdown
+++ b/_posts/2020-10-06-elixir-v1-11-0-released.markdown
@@ -1,7 +1,8 @@
 ---
 layout: post
 title: Elixir v1.11 released
-author: José Valim
+authors:
+-  José Valim
 category: Releases
 excerpt: Elixir v1.11 is out with improvements to the compiler and tighter integration with Erlang/OTP
 ---
diff --git a/_posts/2020-10-08-real-time-communication-at-scale-with-elixir-at-discord.markdown b/_posts/2020-10-08-real-time-communication-at-scale-with-elixir-at-discord.markdown
index 669578ae6..ac4f42ef8 100644
--- a/_posts/2020-10-08-real-time-communication-at-scale-with-elixir-at-discord.markdown
+++ b/_posts/2020-10-08-real-time-communication-at-scale-with-elixir-at-discord.markdown
@@ -1,9 +1,11 @@
 ---
 layout: post
 title: Real time communication at scale with Elixir at Discord
-author: José Valim
+authors:
+-  José Valim
 category: Elixir in Production
 excerpt: A case study of how Elixir is being used at Discord.
+flagship: true
 logo: /images/cases/logos/discord.png
 tags: real-time genstage otp
 ---
diff --git a/_posts/2020-10-27-delivering-social-change-with-elixir-at-change.org.markdown b/_posts/2020-10-27-delivering-social-change-with-elixir-at-change.org.markdown
index 3261bc1da..8e58ec64c 100644
--- a/_posts/2020-10-27-delivering-social-change-with-elixir-at-change.org.markdown
+++ b/_posts/2020-10-27-delivering-social-change-with-elixir-at-change.org.markdown
@@ -1,9 +1,11 @@
 ---
 layout: post
 title: Delivering social change with Elixir at Change.org
-author: José Valim
+authors:
+-  José Valim
 category: Elixir in Production
 excerpt: A case study of how Elixir is being used at Change.org.
+flagship: true
 logo: /images/cases/logos/change.png
 tags: social broadway
 ---
diff --git a/_posts/2020-11-17-real-time-collaboration-with-elixir-at-slab.markdown b/_posts/2020-11-17-real-time-collaboration-with-elixir-at-slab.markdown
index 0f797ecd6..e699b459a 100644
--- a/_posts/2020-11-17-real-time-collaboration-with-elixir-at-slab.markdown
+++ b/_posts/2020-11-17-real-time-collaboration-with-elixir-at-slab.markdown
@@ -1,7 +1,8 @@
 ---
 layout: post
 title: Real-time collaboration with Elixir at Slab
-author: José Valim
+authors:
+-  José Valim
 category: Elixir in Production
 excerpt: A case study of how Elixir is being used at Slab.
 logo: /images/cases/logos/slab.png
diff --git a/_posts/2020-12-10-integrating-travel-with-elixir-at-duffel.markdown b/_posts/2020-12-10-integrating-travel-with-elixir-at-duffel.markdown
index 1a2661571..44f8c66cb 100644
--- a/_posts/2020-12-10-integrating-travel-with-elixir-at-duffel.markdown
+++ b/_posts/2020-12-10-integrating-travel-with-elixir-at-duffel.markdown
@@ -1,7 +1,8 @@
 ---
 layout: post
 title: Integrating travel with Elixir at Duffel
-author: José Valim
+authors:
+-  José Valim
 category: Elixir in Production
 excerpt: A case study of how Elixir is being used at Duffel.
 logo: /images/cases/logos/duffel.png
diff --git a/_posts/2021-01-13-orchestrating-computer-vision-with-elixir-at-v7.markdown b/_posts/2021-01-13-orchestrating-computer-vision-with-elixir-at-v7.markdown
index 7dd1fa5f2..8e402cae7 100644
--- a/_posts/2021-01-13-orchestrating-computer-vision-with-elixir-at-v7.markdown
+++ b/_posts/2021-01-13-orchestrating-computer-vision-with-elixir-at-v7.markdown
@@ -1,7 +1,8 @@
 ---
 layout: post
 title: Orchestrating computer vision with Elixir at V7
-author: José Valim
+authors:
+-  José Valim
 category: Elixir in Production
 excerpt: A case study of how Elixir is being used at V7.
 logo: /images/cases/logos/v7.png
diff --git a/_posts/2021-02-03-social-messaging-with-elixir-at-community.markdown b/_posts/2021-02-03-social-messaging-with-elixir-at-community.markdown
index 15afd237d..e105822f1 100644
--- a/_posts/2021-02-03-social-messaging-with-elixir-at-community.markdown
+++ b/_posts/2021-02-03-social-messaging-with-elixir-at-community.markdown
@@ -1,7 +1,8 @@
 ---
 layout: post
 title: Social messaging with Elixir at Community
-author: José Valim
+authors:
+-  José Valim
 category: Elixir in Production
 excerpt: A case study of how Elixir is being used at Community.
 logo: /images/cases/logos/community.png
diff --git a/_posts/2021-04-02-marketing-and-sales-intelligence-with-elixir-at-pepsico.markdown b/_posts/2021-04-02-marketing-and-sales-intelligence-with-elixir-at-pepsico.markdown
index 892a8c6e1..dc81c1aa8 100644
--- a/_posts/2021-04-02-marketing-and-sales-intelligence-with-elixir-at-pepsico.markdown
+++ b/_posts/2021-04-02-marketing-and-sales-intelligence-with-elixir-at-pepsico.markdown
@@ -1,7 +1,8 @@
 ---
 layout: post
 title: Marketing and sales intelligence with Elixir at PepsiCo
-author: José Valim
+authors:
+-  José Valim
 category: Elixir in Production
 excerpt: A case study of how Elixir is being used at PepsiCo.
 logo: /images/cases/logos/pepsico.png
diff --git a/_posts/2021-05-19-elixir-v1-12-0-released.markdown b/_posts/2021-05-19-elixir-v1-12-0-released.markdown
index ef4144845..676f3d2e2 100644
--- a/_posts/2021-05-19-elixir-v1-12-0-released.markdown
+++ b/_posts/2021-05-19-elixir-v1-12-0-released.markdown
@@ -1,7 +1,8 @@
 ---
 layout: post
 title: Elixir v1.12 released
-author: José Valim
+authors:
+-  José Valim
 category: Releases
 excerpt: Elixir v1.12 is out with improvements to scripting, tighter Erlang/OTP 24 integration, stepped ranges, and dozen of new functions across the standard library
 ---
diff --git a/_posts/2021-06-02-social-virtual-spaces-with-elixir-at-mozilla.markdown b/_posts/2021-06-02-social-virtual-spaces-with-elixir-at-mozilla.markdown
index 591401f66..51244a2e2 100644
--- a/_posts/2021-06-02-social-virtual-spaces-with-elixir-at-mozilla.markdown
+++ b/_posts/2021-06-02-social-virtual-spaces-with-elixir-at-mozilla.markdown
@@ -1,7 +1,8 @@
 ---
 layout: post
 title: Social virtual spaces with Elixir at Mozilla
-author: José Valim
+authors:
+-  José Valim
 category: Elixir in Production
 excerpt: A case study of how Elixir is being used at Mozilla.
 logo: /images/cases/logos/mozilla-hubs.png
diff --git a/_posts/2021-07-29-bootstraping-a-multiplayer-server-with-elixir-at-x-plane.markdown b/_posts/2021-07-29-bootstraping-a-multiplayer-server-with-elixir-at-x-plane.markdown
index 03a6a17b8..e0563549c 100644
--- a/_posts/2021-07-29-bootstraping-a-multiplayer-server-with-elixir-at-x-plane.markdown
+++ b/_posts/2021-07-29-bootstraping-a-multiplayer-server-with-elixir-at-x-plane.markdown
@@ -1,7 +1,8 @@
 ---
 layout: post
 title: Bootstrapping a multiplayer server with Elixir at X-Plane
-author: José Valim
+authors:
+-  José Valim
 category: Elixir in Production
 excerpt: A case study of how Elixir is being used at X-Plane.
 logo: /images/cases/logos/x-plane.png
diff --git a/_posts/2021-11-10-embracing-open-data-with-elixir-at-the-ministry-of-ecological-transition-in-france.markdown b/_posts/2021-11-10-embracing-open-data-with-elixir-at-the-ministry-of-ecological-transition-in-france.markdown
index d7d294fab..7326c7d57 100644
--- a/_posts/2021-11-10-embracing-open-data-with-elixir-at-the-ministry-of-ecological-transition-in-france.markdown
+++ b/_posts/2021-11-10-embracing-open-data-with-elixir-at-the-ministry-of-ecological-transition-in-france.markdown
@@ -1,7 +1,8 @@
 ---
 layout: post
 title: Embracing open data with Elixir at the Ministry of Ecological Transition in France
-author: José Valim
+authors:
+-  José Valim
 category: Elixir in Production
 excerpt: A case study of how Elixir is being used at the Ministry of Ecological Transition in France.
 logo: /images/cases/logos/met-france.svg
diff --git a/_posts/2021-12-03-elixir-v1-13-0-released.markdown b/_posts/2021-12-03-elixir-v1-13-0-released.markdown
index a406c0790..486d27699 100644
--- a/_posts/2021-12-03-elixir-v1-13-0-released.markdown
+++ b/_posts/2021-12-03-elixir-v1-13-0-released.markdown
@@ -1,7 +1,8 @@
 ---
 layout: post
 title: Elixir v1.13 released
-author: José Valim
+authors:
+- José Valim
 category: Releases
 excerpt: Elixir v1.13 is out with a focus on developer tooling
 ---
diff --git a/_posts/2022-09-01-elixir-v1-14-0-released.markdown b/_posts/2022-09-01-elixir-v1-14-0-released.markdown
index 35fbb7414..7ae52d259 100644
--- a/_posts/2022-09-01-elixir-v1-14-0-released.markdown
+++ b/_posts/2022-09-01-elixir-v1-14-0-released.markdown
@@ -1,7 +1,8 @@
 ---
 layout: post
 title: Elixir v1.14 released
-author: Andrea Leopardi
+authors:
+- Andrea Leopardi
 category: Releases
 excerpt: Elixir v1.14 is out with a focus on debugging and developer experience
 ---
diff --git a/_posts/2022-10-05-my-future-with-elixir-set-theoretic-types.markdown b/_posts/2022-10-05-my-future-with-elixir-set-theoretic-types.markdown
index 15d873521..11f8d06c6 100644
--- a/_posts/2022-10-05-my-future-with-elixir-set-theoretic-types.markdown
+++ b/_posts/2022-10-05-my-future-with-elixir-set-theoretic-types.markdown
@@ -1,7 +1,8 @@
 ---
 layout: post
 title: "My Future with Elixir: set-theoretic types"
-author: José Valim
+authors:
+- José Valim
 category: Announcements
 excerpt: We announce and explore the possibilities for bringing set-theoretic types into Elixir.
 ---
diff --git a/_posts/2022-12-22-cheatsheets-and-8-other-features-in-exdoc-that-improve-the-developer-experience.markdown b/_posts/2022-12-22-cheatsheets-and-8-other-features-in-exdoc-that-improve-the-developer-experience.markdown
index 0c029806c..505bf15bf 100644
--- a/_posts/2022-12-22-cheatsheets-and-8-other-features-in-exdoc-that-improve-the-developer-experience.markdown
+++ b/_posts/2022-12-22-cheatsheets-and-8-other-features-in-exdoc-that-improve-the-developer-experience.markdown
@@ -1,7 +1,8 @@
 ---
 layout: post
 title: "Cheatsheets and other 8 ExDoc features that improve the developer experience"
-author: Hugo Baraúna
+authors:
+- Hugo Baraúna
 category: Announcements
 excerpt: This post explains the motivation behind the new ExDoc Cheatsheet feature. It also highlights other ExDoc features that show how ExDoc has been evolving to make the documentation experience in Elixir better and better.
 ---
diff --git a/_posts/2023-03-09-embedded-and-cloud-elixir-at-sparkmeter.markdown b/_posts/2023-03-09-embedded-and-cloud-elixir-at-sparkmeter.markdown
index d7723ce84..2a5fa73ce 100644
--- a/_posts/2023-03-09-embedded-and-cloud-elixir-at-sparkmeter.markdown
+++ b/_posts/2023-03-09-embedded-and-cloud-elixir-at-sparkmeter.markdown
@@ -1,7 +1,8 @@
 ---
 layout: post
 title: "Embedded and cloud Elixir for grid-management at Sparkmeter"
-author: Hugo Baraúna
+authors:
+- Hugo Baraúna
 category: Elixir in Production
 excerpt: A case study of how Elixir is being used at SparkMeter.
 logo: /images/cases/logos/sparkmeter.png
diff --git a/_posts/2023-06-19-elixir-v1-15-0-released.markdown b/_posts/2023-06-19-elixir-v1-15-0-released.markdown
index b3fda1747..ffc23b810 100644
--- a/_posts/2023-06-19-elixir-v1-15-0-released.markdown
+++ b/_posts/2023-06-19-elixir-v1-15-0-released.markdown
@@ -1,7 +1,8 @@
 ---
 layout: post
 title: Elixir v1.15 released
-author: José Valim
+authors:
+- José Valim
 category: Releases
 excerpt: Elixir v1.15 with improvements to compilation and boot times.
 ---
diff --git a/_posts/2023-06-22-type-system-updates-research-dev.markdown b/_posts/2023-06-22-type-system-updates-research-dev.markdown
index 98a6ec5e9..1765f7830 100644
--- a/_posts/2023-06-22-type-system-updates-research-dev.markdown
+++ b/_posts/2023-06-22-type-system-updates-research-dev.markdown
@@ -1,7 +1,8 @@
 ---
 layout: post
 title: "Type system updates: moving from research into development"
-author: José Valim
+authors:
+- José Valim
 category: Announcements
 excerpt: A short status update on the effort to bring a type system into Elixir.
 ---
diff --git a/_posts/2023-09-20-strong-arrows-gradual-typing.markdown b/_posts/2023-09-20-strong-arrows-gradual-typing.markdown
index f3b4f4556..cd62f8c33 100644
--- a/_posts/2023-09-20-strong-arrows-gradual-typing.markdown
+++ b/_posts/2023-09-20-strong-arrows-gradual-typing.markdown
@@ -1,7 +1,8 @@
 ---
 layout: post
 title: "Strong arrows: a new approach to gradual typing"
-author: José Valim
+authors:
+- José Valim
 category: Announcements
 excerpt: An introduction to strong arrows and how it leverages the Erlang VM to provide sound gradual typing.
 ---
diff --git a/_posts/2023-12-22-elixir-v1-16-0-released.markdown b/_posts/2023-12-22-elixir-v1-16-0-released.markdown
index 46480837e..6e4a61dca 100644
--- a/_posts/2023-12-22-elixir-v1-16-0-released.markdown
+++ b/_posts/2023-12-22-elixir-v1-16-0-released.markdown
@@ -1,7 +1,8 @@
 ---
 layout: post
 title: Elixir v1.16 released
-author: José Valim
+authors:
+- José Valim
 category: Releases
 excerpt: Elixir v1.16 released with compiler diagnostics and extensive documentation
 ---
diff --git a/_posts/2024-03-05-veeps-elixir-case.markdown b/_posts/2024-03-05-veeps-elixir-case.markdown
index 7566c01ab..f0e60b7d1 100644
--- a/_posts/2024-03-05-veeps-elixir-case.markdown
+++ b/_posts/2024-03-05-veeps-elixir-case.markdown
@@ -1,7 +1,8 @@
 ---
 layout: post
 title: "Scaling a streaming service to hundreds of thousands of concurrent viewers at Veeps"
-author: Hugo Baraúna
+authors:
+- Hugo Baraúna
 category: Elixir in Production
 excerpt: A case study of how Elixir is being used at Veeps.
 logo: /images/cases/logos/veeps.svg
diff --git a/_posts/2024-06-12-elixir-v1-17-0-released.markdown b/_posts/2024-06-12-elixir-v1-17-0-released.markdown
index 959030f55..c857c906e 100644
--- a/_posts/2024-06-12-elixir-v1-17-0-released.markdown
+++ b/_posts/2024-06-12-elixir-v1-17-0-released.markdown
@@ -1,7 +1,8 @@
 ---
 layout: post
 title: "Elixir v1.17 released: set-theoretic data types, calendar durations, and Erlang/OTP 27 support"
-author: Andrea Leopardi
+authors:
+- Andrea Leopardi
 category: Releases
 excerpt: "Elixir v1.17 released: set-theoretic data types, calendar durations, and Erlang/OTP 27 support"
 ---
diff --git a/_posts/2024-08-15-welcome-elixir-language-server-team.markdown b/_posts/2024-08-15-welcome-elixir-language-server-team.markdown
index 8883da8dd..2df6af2d1 100644
--- a/_posts/2024-08-15-welcome-elixir-language-server-team.markdown
+++ b/_posts/2024-08-15-welcome-elixir-language-server-team.markdown
@@ -1,7 +1,8 @@
 ---
 layout: post
 title: "Announcing the official Elixir Language Server team"
-author: José Valim
+authors:
+- José Valim
 category: Announcements
 excerpt: "Announcing the official Elixir Language Server team to work on the code intelligence infrastructure to be used across tools and editors"
 ---
diff --git a/_posts/2024-08-28-typing-lists-and-tuples.markdown b/_posts/2024-08-28-typing-lists-and-tuples.markdown
index ae94de630..d8548371c 100644
--- a/_posts/2024-08-28-typing-lists-and-tuples.markdown
+++ b/_posts/2024-08-28-typing-lists-and-tuples.markdown
@@ -1,7 +1,8 @@
 ---
 layout: post
 title: "Typing lists and tuples in Elixir"
-author: José Valim
+authors:
+- José Valim
 category: Announcements
 excerpt: "This article explores the design decisions of typing lists and tuples in Elixir within a sound gradual type system"
 ---
diff --git a/_posts/2024-12-19-elixir-v1-18-0-released.markdown b/_posts/2024-12-19-elixir-v1-18-0-released.markdown
index e0b812647..22edc0364 100644
--- a/_posts/2024-12-19-elixir-v1-18-0-released.markdown
+++ b/_posts/2024-12-19-elixir-v1-18-0-released.markdown
@@ -1,7 +1,8 @@
 ---
 layout: post
 title: "Elixir v1.18 released: type checking of calls, LSP listeners, built-in JSON, and more"
-author: José Valim
+authors:
+- José Valim
 category: Releases
 excerpt: "Elixir v1.18 released: type checking of function calls, Language Server listeners, built-in JSON, ExUnit improvements, mix format --migrate, and more"
 ---
diff --git a/_posts/2025-01-21-remote-elixir-case.markdown b/_posts/2025-01-21-remote-elixir-case.markdown
index b66a0d118..10d47c32d 100644
--- a/_posts/2025-01-21-remote-elixir-case.markdown
+++ b/_posts/2025-01-21-remote-elixir-case.markdown
@@ -1,9 +1,11 @@
 ---
 layout: post
 title: "Remote: growing from zero to unicorn with Elixir"
-author: Hugo Baraúna
+authors:
+- Hugo Baraúna
 category: Elixir in Production
 excerpt: A case study of how Elixir is being used at Remote.
+flagship: true
 logo: /images/cases/logos/remote.png
 tags: growth team web
 ---
diff --git a/_posts/2025-02-26-elixir-openchain-certification.markdown b/_posts/2025-02-26-elixir-openchain-certification.markdown
new file mode 100644
index 000000000..76285ea70
--- /dev/null
+++ b/_posts/2025-02-26-elixir-openchain-certification.markdown
@@ -0,0 +1,72 @@
+---
+layout: post
+title: "Announcing Elixir OpenChain Certification"
+authors:
+  - Jonatan Männchen
+  - José Valim
+category: Announcements
+excerpt: "The Elixir project now meets OpenChain (ISO/IEC 5230). Each release ships with Source SBoMs in CycloneDX 1.6 and SPDX 2.3, plus attestation."
+tags: openchain compliance
+---
+
+We are pleased to share that the Elixir project now complies with
+[OpenChain][openchain] ([ISO/IEC 5230][iso_5230]), an international
+standard for open source license compliance. This step aligns with broader
+efforts to meet industry standards for supply chain and cybersecurity best
+practices.
+
+“Today’s announcement around Elixir’s conformance represents another significant
+example of community maturity,” says Shane Coughlan, OpenChain General Manager.
+“With projects - the final upstream - using ISO standards for compliance and
+security with increasing frequency, we are seeing a shift to longer-term
+improvements to trust in the supply chain.”
+
+## Why OpenChain Compliance Helps
+
+By following OpenChain (ISO/IEC 5230), we demonstrate clear processes around
+license compliance. This benefits commercial and community users alike, making
+Elixir easier to adopt and integrate with confidence.
+
+## Changes for Elixir Users
+
+Elixir has an automated release process where its artifacts are signed. This
+change strengthens this process by:
+
+- All future Elixir releases will include a Source SBoM in
+  [CycloneDX 1.6 or later][cyclonedx] and [SPDX 2.3 or later][spdx] formats.
+- Each release will be attested along with the Source SBoM.
+
+These additions offer greater transparency into the components and licenses of
+each release, supporting more rigorous supply chain requirements.
+
+## Changes for Contributors
+
+Contributing to Elixir remains largely the same, we have added more clarity and
+guidelines around it:
+
+- Contributions remain under the Apache-2.0 License. Other licenses cannot be
+  accepted.
+- The project now enforces the [Developer Certificate of Origin (DCO)][dco],
+  ensuring clarity around contribution ownership.
+
+Contributors will notice minimal procedural changes, as standard practices
+around licensing remain in place.
+
+For more details, see the [CONTRIBUTING guidelines][contributing].
+
+## Commitment
+
+These updates were made in collaboration with the
+[Erlang Ecosystem Foundation][erlef], reflecting a shared
+commitment to robust compliance and secure development practices. Thank you to
+everyone who supported this milestone. We appreciate the community’s ongoing
+contributions and look forward to continuing the growth of Elixir under these
+established guidelines.
+
+[openchain]: https://openchainproject.org/
+[erlef]: https://erlef.org/
+[spdx]: https://spdx.org/rdf/terms/
+[cyclonedx]: https://cyclonedx.org/specification/overview/
+[iso_5230]: https://www.iso.org/standard/81039.html
+[dco]: https://developercertificate.org/
+[contributing]: https://github.com/elixir-lang/elixir/blob/main/CONTRIBUTING.md
diff --git a/_posts/2025-03-25-cyanview-elixir-case.markdown b/_posts/2025-03-25-cyanview-elixir-case.markdown
new file mode 100644
index 000000000..520c476bb
--- /dev/null
+++ b/_posts/2025-03-25-cyanview-elixir-case.markdown
@@ -0,0 +1,102 @@
+---
+layout: post
+title: "Cyanview: Coordinating Super Bowl's visual fidelity with Elixir"
+authors:
+- Lars Wikman
+- José Valim
+category: Elixir in Production
+excerpt: A case study of how Elixir is being used at Cyanview.
+logo: /images/cases/logos/cyanview.png
+tags: superbowl mqtt
+---
+
+How do you coordinate visual fidelity across two hundred cameras for a live event like the Super Bowl?
+
+The answer is: by using the craft of camera shading, which involves adjusting each camera to ensure they match up in color, exposure and various other visual aspects. The goal is to turn the live event broadcast into a cohesive and consistent experience. For every angle used, you want the same green grass and the same skin tones. Everything needs to be very closely tuned across a diverse set of products and brands. From large broadcast cameras, drone cameras, and PTZ cameras to gimbal-held mirrorless cameras and more. This is what Cyanview does. Cyanview is a small Belgian company that sells products for the live video broadcast industry, and its primary focus is shading.
+
+Broadcast is a business where you only get one chance to prove that your tool is up to the task. Reliability is king. There can be no hard failures.
+
+A small team of three built a product so powerful and effective that it spread across the industry purely on the strength of its functionality. Without any marketing, it earned a reputation among seasoned professionals and became a staple at the world’s top live events. Cyanview's Remote Control Panel (RCP) is now used by specialist video operators on the Olympics, Super Bowl, NFL, NBA, ESPN, Amazon and many more. Even most fashion shows in Paris use Cyanview’s devices.
+
+These devices put Elixir right in the critical path for serious broadcast operations. By choosing Elixir, Cyanview gained best-in-class networking features, state-of-the-art resilience and an ecosystem that allowed fast iteration on product features.
+
+
+![Operating many displays with Cyanview products.](/images/cases/bg/cyanview-4.jpg "Operating many displays with Cyanview products.")
+
+
+## Why Elixir?
+
+The founding team of Cyanview primarily had experience with embedded development, and the devices they produce involve a lot of low-level C code and plenty of FPGA. This is due to the low-level details of color science and the really tight timing requirements.
+
+If you’ve ever worked with camera software, you know it can be a mixed bag. Even after going fully digital, much of it remained tied to analog systems or relied on proprietary connectivity solutions. Cyanview has been targeting IP (as in Internet Protocol) from early on. This means Cyanview's software can operate on commodity networks that work in well-known and well-understood ways. This has aligned well with an increase in remote production, partially due to the pandemic, where production crews operate from a central location with minimal crew on location. Custom radio frequency or serial wire protocols have a hard time scaling to cross-continent distances.
+
+This also paved the way for Elixir, as the Erlang VM was designed to communicate and coordinate millions of devices, reliably, over the network.
+
+Elixir was brought in by the developer Ghislain, who needed to build integrations with cameras and interact with the other bits of required video gear, with many different protocols over the network. The language comes with a lot of practical features for encoding and decoding binary data down to the individual bits. Elixir gave them a strong foundation and the tools to iterate fast.
+
+Ghislain has been building the core intellectual property of Cyanview ever since. While the physical device naturally has to be solid, reliable, and of high quality, a lot of the secret sauce ultimately lies in the massive number of integrations and huge amounts of reverse engineering. Thus, the product is able to work with as many professional camera systems and related equipment as possible. It is designed to be compatible with everything and anything a customer is using. Plus, it offers an API to ensure smooth integration with other devices.
+
+David Bourgeois, the founder of Cyanview, told us a story how these technical decisions alongside Elixir helped them tackle real-world challenges:
+
+"During the Olympics in China, a studio in Beijing relied on a large number of Panasonic PTZ cameras. Most of their team, however, was based in Paris and needed to control the cameras remotely to run various shows throughout the day. The problem? Panasonic’s camera protocols were never designed for internet use — they require precise timing and multiple messages for every adjustment. With network latency, that leads to timeouts, disconnects, and system failures... So they ended up placing our devices next to the cameras in Beijing and controlled them over IP from Paris — just as designed."
+
+
+![Cyanview RIO device mounted on a camera at a sports field.](/images/cases/bg/cyanview-2.jpg "Cyanview RIO device mounted on a camera at a sports field.")
+
+
+The devices in a given location communicate and coordinate on the network over a custom MQTT protocol. Over a hundred cameras without issue on a single Remote Control Panel (RCP), implemented on top of Elixir's network stack.
+
+
+## Technical composition
+
+The system as a whole consists of RCP devices running a Yocto Linux system, with most of the logic built in Elixir and C. While Python is still used for scripting and tooling, its role has gradually diminished. The setup also includes multiple microcontrollers and the on-camera device, all communicating over MQTT. Additionally, cloud relays facilitate connectivity, while dashboards and controller UIs provide oversight and control. The two critical devices are the RCP offering control on the production end and the RIO handling low-latency manipulation of the camera. Both run Elixir.
+
+The configuration UI is currently built in Elm, but - depending on priorities - it might be converted to [Phoenix LiveView](https://phoenixframework.org/) over time to reduce the number of languages in use. The controller web UI is already in LiveView, and it is performing quite well on a very low-spec embedded Linux machine.
+
+The cloud part of the system is very limited today, which is unusual in a world of SaaS. There are cloud relays for distributing and sharing camera control as well as forwarding network ports between locations and some related features, also built in Elixir, but cloud is not at the core of the business. The devices running Elixir on location form a cluster over IP using a custom MQTT-based protocol suited to the task and are talking to hundreds of cameras and other video devices.
+
+It goes without saying that integration with so much proprietary equipment comes with challenges. Some integrations are more reliable than others. Some devices are more common, and their quirks are well-known through hard-won experience. A few even have good documentation that you can reference while others offer mystery and constant surprises. In this context, David emphasizes the importance of Elixir's mechanisms for recovering from failures:
+
+"If one camera connection has a blip, a buggy protocol or the physical connection to a device breaks it is incredibly important that everything else keeps working. And this is where Elixir’s supervision trees provide a critical advantage."
+
+
+## Growth & team composition
+
+The team has grown over the 9 years that the company has been operating, but it did so at a slow and steady pace. On average, the company has added just one person per year. With nine employees at the time of writing, Cyanview supports some of the biggest broadcast events in the world.
+
+There are two Elixir developers on board: Daniil who is focusing on revising some of the UI as well as charting a course into more cloud functionality, and Ghislain, who works on cameras and integration. Both LiveView and Elm are used to power device UIs and dashboards.
+
+What’s interesting is that, overall, the other embedded developers say that they don't know much about Elixir and they don't use it in their day-to-day work. Nonetheless, they are very comfortable implementing protocols and encodings in Elixir. The main reason they haven’t fully learned the language is simply time — they have plenty of other work to focus on, and deep Elixir expertise hasn’t been necessary. After all, there’s much more to their work beyond Elixir: designing PCBs, selecting electronic components, reverse engineering protocols, interfacing with displays, implementing FPGAs, managing production tests, real productions and releasing firmware updates.
+
+
+## Innovation and customer focus
+
+![Operator using Cyanview RCP for a massive crowd in an arena.](/images/cases/bg/cyanview-3.jpg "Operator using Cyanview RCP for a massive crowd in an arena.")
+
+
+Whether it’s providing onboard cameras in 40+ cars during the 24 hours of Le Mans, covering Ninja Warrior, the Australian Open, and the US Open, operating a studio in the Louvre, being installed in NFL pylons, or connecting over 200 cameras simultaneously – the product speaks for itself. Cyanview built a device for a world that runs on top of IP, using Elixir, a language with networking and protocols deep in its bones. This choice enabled them to do both: implement support for all the equipment and provide features no one else had.
+
+By shifting from conventional local-area radio frequency, serial connections, and inflexible proprietary protocols to IP networking, Cyanview’s devices redefined how camera systems operate. Their feature set is unheard of in the industry: Unlimited multicam. Tally lights. Pan & Tilt control. Integration with color correctors. World-spanning remote production.
+
+The ease and safety of shipping new functionality have allowed the company to support new features very quickly. One example is the increasing use of mirrorless cameras on gimbals to capture crowd shots. Cyanview were able to prototype gimbal control, test it with a customer and validate that it worked in a very short amount of time. This quick prototyping and validation of features is made possible by a flexible architecture that ensures that critical fundamentals don't break.
+
+Camera companies that don't produce broadcast shading remotes, such as Canon or RED, recommend Cyanview to their customers. Rather than competing with most broadcast hardware companies, Cyanview considers itself a partner. The power of a small team, a quality product and powerful tools can be surprising. Rather than focusing on marketing, Cyanview works very closely with its customers by supporting the success of their events and providing in-depth customer service.
+
+
+## Looking back and forward
+
+When asked if he would choose Elixir again, David responded:
+
+"Yes. We've seen what the Erlang VM can do, and it has been very well-suited to our needs. You don't appreciate all the things Elixir offers out of the box until you have to try to implement them yourself. It was not pure luck that we picked it, but we were still lucky. Elixir turned out to bring a lot that we did not know would be valuable to us. And we see those parts clearly now."
+
+Cyanview hopes to grow the team more, but plans to do so responsibly over time. Currently there is a lot more to do than the small team can manage.
+
+Development is highly active, with complementary products already in place alongside the main RCP device, and the future holds even more in that regard. Cloud offerings are on the horizon, along with exciting hardware projects that build on the lessons learned so far. As these developments unfold, we’ll see Elixir play an increasingly critical role in some of the world’s largest live broadcasts.
+
+![Cyanview Remote Control Panels in a control room.](/images/cases/bg/cyanview-1.jpg "Cyanview Remote Control Panels in a control room.")
+
+
+## In summary
+
+A high-quality product delivering the right innovation at the right time in an industry that's been underserved in terms of good integration. Elixir provided serious leverage for developing a lot of integrations with high confidence and consistent reliability. In an era where productivity and lean, efficient teams are everything, Cyanview is a prime example of how Elixir empowers small teams to achieve an outsized impact.
+
diff --git a/_posts/2025-06-02-elixir-outreach-stipend-for-speakers.markdown b/_posts/2025-06-02-elixir-outreach-stipend-for-speakers.markdown
new file mode 100644
index 000000000..1bca122fc
--- /dev/null
+++ b/_posts/2025-06-02-elixir-outreach-stipend-for-speakers.markdown
@@ -0,0 +1,42 @@
+---
+layout: post
+title: "Elixir Outreach stipend for speakers and trainers"
+authors:
+- José Valim
+category: Announcements
+excerpt: "We announce the Elixir Outreach stipend in partnership with Dashbit, Oban, and the Erlang Ecosystem Foundation"
+---
+
+[Dashbit](https://dashbit.co), [Oban](https://oban.pro), and the [Erlang Ecosystem Foundation (EEF)](https://erlef.org) are glad to announce a new program, which we will trial over the next 12 months, called "Elixir Outreach". Our goal is to provide funds to community members who want to present Elixir and Erlang to other ecosystems and communities, while respecting our joint values.
+
+In a nutshell:
+
+* We will provide funds to community members to speak **in-person** about anything related to Elixir and the Erlang VM.
+
+* We will cover hotel and transportation costs for up to $700 USD. Please reach out, even if you expect to exceed that limit. This is our first time running the program and we're refining the budget.
+
+* The event must expect at least 150 attendees and happen outside of the Elixir, overall BEAM, and functional programming communities. In other words, we won't cover costs for attending Erlang, Elixir, or other BEAM/FP conferences nor meetups. Consider it as an opportunity to learn and bring external knowledge and experiences to the BEAM community.
+
+* You will be expected to send a report about your experience. The format and duration is up to you. We'd prefer that you write a blog post or an article sharing your overall experience with the involved communities. However, if you would prefer to only send it privately to us, that's fine too!
+
+The event should take place within your area. Our overall goal is to support multiple individuals, rather than drain our budget on a few long-distance flights (such as across coasts or continents). We are flexible on event location, distance, or type. If in doubt, reach out to [elixir_outreach at erlef dot org](mailto:elixir_outreach@erlef.org)
+
+Our initial budget of $7000 was donated by Dashbit ($5000) and Oban ($2000) to the Erlang Ecosystem Foundation (EEF), specifically for this program. The EEF will oversee the distribution of the funds.
+
+## Requesting a stipend
+
+To request a stipend, visit the [Erlang Ecosystem Foundation website and choose "Elixir Outreach" as the stipend type](https://erlef.org/stipends/form?type=elixir-outreach).
+
+Given we have limited funds, we cannot guarantee they will be available when you request them. We recommend reaching out to us before submitting or acceptance your talk. Therefore, by contacting us early, we can validate if the event matches the criteria above, ask questions, and earmark the funds. Once your talk is accepted, send us any itemized travel and accommodation costs so we can transfer the stipend to you, (not in excess of $700 USD).
+
+You can also request a stipend after your talk has already been accepted, but then there are no guarantees a stipend will be available.
+
+Our goal is to make this process simple and as straight-forward as possible. Although, we reserve the right to refuse a request for any reason. If in doubt, reach out to [elixir_outreach at erlef dot org](mailto:elixir_outreach@erlef.org).
+
+## Acknowledgements
+
+This is a new effort for all involved! Please be patient while we figure out the details.
+
+If you are looking for conferences to speak at, [Dave Aronson keeps a list of CFPs closing soon](https://www.codosaur.us/speaking/cfps-ending-soon) and there are likely others available. Note, we don’t necessarily endorse all of the conferences listed nor guarantee they meet the requirements above, but the list may help you get the ball rolling.
+
+Thanks to Parker Selbert, Shannon Selbert, Brian Cardarella, Alistair Woodman, and Lee Barney for feedback and helping make this a reality.
\ No newline at end of file
diff --git a/atom.xml b/atom.xml
index 09471fd0d..052b63a8e 100644
--- a/atom.xml
+++ b/atom.xml
@@ -15,11 +15,11 @@ elixir_url: http://elixir-lang.org
 <entry>
   <title>{{ post.title }}</title>
   <link href="{{ page.elixir_url }}{{ post.url }}"/>
-  {% if post.author %}
-  <author>
-    <name>{{ post.author }}</name>
-  </author>
-  {% endif %}
+  {% for author in post.authors %}
+    <author>
+      <name>{{ author }}</name>
+    </author>
+  {% endfor %}
   <updated>{{ post.date | date_to_xmlschema }}</updated>
   <id>{{ post.id }}</id>
   <content type="html">{{ post.content | xml_escape }}</content>
diff --git a/blog/index.html b/blog/index.html
index 196e39159..75d152e14 100644
--- a/blog/index.html
+++ b/blog/index.html
@@ -9,7 +9,7 @@
     <div class="hentry post">
       <div class="sticky-header">
         <h2 class="entry-title"><a class="spec" href="{{ post.url }}" title="{{ post.title }}" rel="bookmark">{{ post.title }}</a></h2>
-        <div class="byline">{{ post.date | date: "%B %d, %Y" }}{% if post.author %} · by {{ post.author}}{% endif %} . in {% for category in post.categories %}<a href="/blog/categories.html#{{category}}" class="category">{{ category }}</a>{% endfor %}</div>
+        <div class="byline">{{ post.date | date: "%B %d, %Y" }}{% if post.authors %} · by {{ post.authors | join: ", " }}{% endif %} · in {% for category in post.categories %}<a href="/blog/categories.html#{{category}}" class="category">{{ category }}</a>{% endfor %}</div>
       </div><!-- .sticky-header -->
 
       <div class="entry-summary">
diff --git a/cases.html b/cases.html
index 635b8b704..42d49e97a 100644
--- a/cases.html
+++ b/cases.html
@@ -9,8 +9,9 @@ <h1>Cases</h1>
 <p>Click on the cases below to learn more about how companies across different industries are using the power of Elixir and its ecosystem to create and grow their businesses. Cases are listed in the order they have been published.</p>
 
 <div class="cases-boxes">
-  {% assign sorted_posts = site.categories["Elixir in Production"] | sort: 'date' %}
+  {% assign sorted_posts = site.categories["Elixir in Production"] | sort: 'date' | reverse %}
   {% for post in sorted_posts %}
+    {%- if post.flagship %}
     <a class="cases-box" href="{{ post.url }}" title="Case: {{ post.title }}">
       {% if post.logo == nil %}
         <div class="cases-image" style="background-image: url('/images/cases/logos/default-image.png')"></div>
@@ -23,6 +24,23 @@ <h1>Cases</h1>
         {% endfor %}
       </div>
     </a>
+    {%- endif -%}
+  {% endfor %}
+  {% for post in sorted_posts %}
+    {%- unless post.flagship %}
+    <a class="cases-box" href="{{ post.url }}" title="Case: {{ post.title }}">
+      {% if post.logo == nil %}
+        <div class="cases-image" style="background-image: url('/images/cases/logos/default-image.png')"></div>
+      {% else %}
+        <div class="cases-image" style="background-image: url('{{ post.logo }}')"></div>
+      {% endif %}
+      <div class="cases-tag">
+        {% for tag in post.tags %}
+          <span>#{{tag}}</span>
+        {% endfor %}
+      </div>
+    </a>
+    {%- endunless -%}
   {% endfor %}
 </div>
 
diff --git a/images/cases/bg/cyanview-1.jpg b/images/cases/bg/cyanview-1.jpg
new file mode 100644
index 000000000..2e0b9ffcf
Binary files /dev/null and b/images/cases/bg/cyanview-1.jpg differ
diff --git a/images/cases/bg/cyanview-2.jpg b/images/cases/bg/cyanview-2.jpg
new file mode 100644
index 000000000..a6e7796e6
Binary files /dev/null and b/images/cases/bg/cyanview-2.jpg differ
diff --git a/images/cases/bg/cyanview-3.jpg b/images/cases/bg/cyanview-3.jpg
new file mode 100644
index 000000000..fbe3515f3
Binary files /dev/null and b/images/cases/bg/cyanview-3.jpg differ
diff --git a/images/cases/bg/cyanview-4.jpg b/images/cases/bg/cyanview-4.jpg
new file mode 100644
index 000000000..c14baed64
Binary files /dev/null and b/images/cases/bg/cyanview-4.jpg differ
diff --git a/images/cases/logos/cyanview.png b/images/cases/logos/cyanview.png
new file mode 100644
index 000000000..4fac3bf69
Binary files /dev/null and b/images/cases/logos/cyanview.png differ
diff --git a/install.bat b/install.bat
index 386fba2d0..a6e88101c 100755
--- a/install.bat
+++ b/install.bat
@@ -66,7 +66,7 @@ if "%otp_version%" == "" (
 )
 
 if "!otp_version!" == "latest" (
-  set "url=https://github.com/erlef/otp_builds/releases/latest"
+  set "url=https://github.com/erlang/otp/releases/latest"
   for /f "tokens=2 delims= " %%a in ('curl -fsS --head "!url!" ^| findstr /I "^location:"') do set url=%%a
   set "otp_version=!url:*releases/tag/OTP-=!"
 )
@@ -79,12 +79,21 @@ if "!elixir_version!" == "latest" (
 
 for /f "tokens=1 delims=." %%A in ("!otp_version!") do set "elixir_otp_release=%%A"
 for /f "tokens=1,2 delims=." %%A in ("!elixir_version!") do set "elixir_major_minor=%%A.%%B"
-if "%elixir_major_minor%" == "1.15" (
+
+if "%elixir_major_minor%" == "1.14" (
+  if %elixir_otp_release% GEQ 25 set "elixir_otp_release=25"
+) else if "%elixir_major_minor%" == "1.15" (
   if %elixir_otp_release% GEQ 26 set "elixir_otp_release=26"
 ) else if "%elixir_major_minor%" == "1.16" (
   if %elixir_otp_release% GEQ 26 set "elixir_otp_release=26"
-) else if "%elixir_major_minor%" == "1.14" (
-  if %elixir_otp_release% GEQ 25 set "elixir_otp_release=25"
+) else if "%elixir_major_minor%" == "1.17" (
+  if %elixir_otp_release% GEQ 27 set "elixir_otp_release=27"
+) else if "%elixir_major_minor%" == "1.18" (
+  if %elixir_otp_release% GEQ 27 set "elixir_otp_release=27"
+) else if "%elixir_major_minor%" == "1.19" (
+  if %elixir_otp_release% GEQ 28 set "elixir_otp_release=28"
+) else (
+  if %elixir_otp_release% GEQ 28 set "elixir_otp_release=28"
 )
 
 set "root_dir=%USERPROFILE%\.elixir-install"
@@ -139,7 +148,16 @@ if not exist "%otp_dir%\bin" (
   curl.exe -fsSLo %tmp_dir%\%otp_zip% "!otp_url!" || exit /b 1
 
   echo unpacking %tmp_dir%\%otp_zip%
-  powershell -Command "Expand-Archive -LiteralPath %tmp_dir%\%otp_zip% -DestinationPath %otp_dir%"
+  powershell -NoProfile -Command ^
+    "$ErrorActionPreference='Stop';" ^
+    "try {" ^
+    "  if (-not (Get-Command Expand-Archive -ErrorAction SilentlyContinue)) {" ^
+    "    Add-Type -AssemblyName System.IO.Compression.FileSystem;" ^
+    "    [System.IO.Compression.ZipFile]::ExtractToDirectory('%tmp_dir%\%otp_zip%', '%otp_dir%')" ^
+    "  } else {" ^
+    "    Expand-Archive -LiteralPath '%tmp_dir%\%otp_zip%' -DestinationPath '%otp_dir%' -Force" ^
+    "  }" ^
+    "} catch { Write-Error $_; exit 1 }"
   del /f /q "%tmp_dir%\%otp_zip%"
   cd /d "%otp_dir%"
 
@@ -152,7 +170,15 @@ exit /b 0
 goto :eof
 
 :install_elixir
-set "elixir_zip=elixir-!elixir_version!-otp-!elixir_otp_release!.zip"
+set "elixir_zip=elixir-otp-!elixir_otp_release!.zip"
+
+if "%elixir_version%" == "main" (
+  rem Do not remove this comment
+  set "ref=main-latest"
+) else (
+  rem Do not remove this comment
+  set "ref=v%elixir_version%"
+)
 
 if "%force%" == "true" (
   if exist "%elixir_dir%" (
@@ -161,12 +187,21 @@ if "%force%" == "true" (
 )
 
 if not exist "%elixir_dir%\bin" (
-  set "elixir_url=https://github.com/elixir-lang/elixir/releases/download/v!elixir_version!/elixir-otp-%elixir_otp_release%.zip"
+  set "elixir_url=https://github.com/elixir-lang/elixir/releases/download/%ref%/elixir-otp-%elixir_otp_release%.zip"
   echo downloading !elixir_url!...
   curl.exe -fsSLo "%tmp_dir%\%elixir_zip%" "!elixir_url!" || exit /b 1
 
   echo unpacking %tmp_dir%\%elixir_zip%
-  powershell -Command "Expand-Archive -LiteralPath %tmp_dir%\%elixir_zip% -DestinationPath %elixir_dir%"
+  powershell -NoProfile -Command ^
+    "$ErrorActionPreference='Stop';" ^
+    "try {" ^
+    "  if (-not (Get-Command Expand-Archive -ErrorAction SilentlyContinue)) {" ^
+    "    Add-Type -AssemblyName System.IO.Compression.FileSystem;" ^
+    "    [System.IO.Compression.ZipFile]::ExtractToDirectory('%tmp_dir%\%elixir_zip%', '%elixir_dir%')" ^
+    "  } else {" ^
+    "    Expand-Archive -LiteralPath '%tmp_dir%\%elixir_zip%' -DestinationPath '%elixir_dir%' -Force" ^
+    "  }" ^
+    "} catch { Write-Error $_; exit 1 }"
   del /f /q %tmp_dir%\%elixir_zip%
 )
 goto :eof
diff --git a/install.sh b/install.sh
index a662ec521..f1647a15f 100755
--- a/install.sh
+++ b/install.sh
@@ -97,9 +97,15 @@ main() {
     1.15.*|1.16.*)
       [ "${elixir_otp_release}" -ge 26 ] && elixir_otp_release=26
       ;;
-    *)
+    1.17.*|1.18.*)
       [ "${elixir_otp_release}" -ge 27 ] && elixir_otp_release=27
       ;;
+    1.19.*)
+      [ "${elixir_otp_release}" -ge 28 ] && elixir_otp_release=28
+      ;;
+    *)
+      [ "${elixir_otp_release}" -ge 28 ] && elixir_otp_release=28
+      ;;
   esac
 
   otp_dir="$root_dir/installs/otp/$otp_version"
diff --git a/learning.markdown b/learning.markdown
index 0c5df683b..c78d1ba5a 100644
--- a/learning.markdown
+++ b/learning.markdown
@@ -281,11 +281,11 @@ Elixir koans is a fun, easy way to get started with the Elixir programming langu
 
 <div class="clear"></div>
 
-<h4 class="resource">Exercism.io<span class="free">free</span></h4>
+<h4 class="resource">Exercism<span class="free">free</span></h4>
 
-<a class="cover" href="https://exercism.io/tracks/elixir" title="Elixir Track on Exercism.io"> <img src="https://assets.exercism.io/tracks/elixir-bordered-turquoise.png" alt="Exercism.io Elixir track" width="190" /></a>
+<a class="cover" href="https://exercism.org/tracks/elixir" title="Elixir Track on Exercism"> <img src="https://assets.exercism.org/tracks/elixir.svg" alt="Exercism Elixir track" width="190" /></a>
 
-Exercism.io is an open source platform that provides free practice and mentoring in many languages, including Elixir.
+Exercism is an open source platform that provides free practice and mentoring in many languages, including Elixir.
 It features exercises of varying difficulty, from string processing to using OTP, that are mentored by volunteers.
 Once you have completed an exercise you can also view other students' solutions.
 
