<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
  <atom:link href="https://elixir.sydney/feed.xml" rel="self" type="application/rss+xml" />
  <title>Elixir Sydney</title>
  <link>https://elixir.sydney</link>
  <description>Meetups, news and BEAM jobs from the Elixir Sydney community.</description>
  <language>en-au</language>
  <item>
    <title>News: elixir-lang.org has a new look</title>
    <link>https://elixir.sydney/news/elixir-lang-org-redesign</link>
    <pubDate>Wed, 29 Jul 2026 00:00:00 +1000</pubDate>
    <guid>https://elixir.sydney/news/elixir-lang-org-redesign</guid>
    <category>news</category>
    <description><![CDATA[ <p><a href="https://elixir-lang.org/">elixir-lang.org</a> has had its first major redesign in
years: a cleaner, more modern homepage that leads with what people build on the
BEAM, real companies and use cases up front, plus refreshed branding and
easier paths into the docs.</p>
<p>There's no blog post announcing it (the site itself is the announcement), but
José Valim filled in the story in the
<a href="https://news.ycombinator.com/item?id=48959042">Hacker News thread</a>, which
racked up 250+ points: the design is by the
<a href="https://swmansion.com/">Software Mansion</a> folks, iterated on together in
Figma, and José rewrote all of the copy himself with feedback from the core
maintainers. The thread's reception says a lot about where Elixir sits in 2026:
less &quot;what is this language?&quot; and more appreciation for a mature ecosystem
that keeps investing in its front door.</p>
<p>If you want the community hot takes, the first episode of the new
<a href="https://elixir.sydney/news/macro-mayhem-podcast">Macro Mayhem podcast</a> spends a chunk of its
news segment on the redesign.</p> ]]></description>
  </item>

  <item>
    <title>News: Macro Mayhem picks up where Thinking Elixir left off</title>
    <link>https://elixir.sydney/news/macro-mayhem-podcast</link>
    <pubDate>Wed, 29 Jul 2026 00:00:00 +1000</pubDate>
    <guid>https://elixir.sydney/news/macro-mayhem-podcast</guid>
    <category>news</category>
    <description><![CDATA[ <p>When the <a href="https://podcast.thinkingelixir.com/">Thinking Elixir podcast</a> wrapped
up in June after six years of weekly episodes, it left a real hole: it was
<em>the</em> way a lot of us kept up with Elixir news on the commute.</p>
<p>Enter <a href="https://macromayhem.fm/">Macro Mayhem</a>, a new podcast from Peter Ullrich
and Gus Workman covering the latest Elixir news and broader software industry
topics. Episode 001, &quot;Redesigns, Conferences, and Rogue Agents&quot;, landed on
27 July and sets the template: Hex 2.5.0's new
<a href="https://elixir.sydney/news/hex-2-5">vulnerability warnings</a>, the
<a href="https://elixir.sydney/news/elixir-lang-org-redesign">elixir-lang.org redesign</a>, the conference
season ahead (Goatmire with AshConf, ElixirConf US, Code BEAM EU), and a
discussion segment on AI news of the week.</p>
<p>Subscribe on <a href="https://podcasts.apple.com/podcast/macro-mayhem/id6795165234">Apple Podcasts</a>
or <a href="https://open.spotify.com/show/033WMuMkwo9bblXhIwiiJZ">Spotify</a>, or grab the
feed from <a href="https://macromayhem.fm/subscribe">macromayhem.fm</a>. And thanks to the
Thinking Elixir crew for six great years.</p> ]]></description>
  </item>

  <item>
    <title>News: New OTP CVE batch: patch to 29.0.4, 28.5.0.4 or 27.3.4.15</title>
    <link>https://elixir.sydney/news/otp-cve-batch-july-2026</link>
    <pubDate>Wed, 29 Jul 2026 00:00:00 +1000</pubDate>
    <guid>https://elixir.sydney/news/otp-cve-batch-july-2026</guid>
    <category>news</category>
    <description><![CDATA[ <p>Two weeks after <a href="https://elixir.sydney/news/beam-security-advisories-july-2026">July's big round-up</a>,
the <a href="https://cna.erlef.org/cves/">Erlang Ecosystem Foundation CNA</a> has published
another batch: eight Erlang/OTP CVEs on 27 July and two for Cowboy/Cowlib on the
28th. The headline is a <strong>critical TLS client authentication bypass in <code>ssl</code></strong>.
If your app makes TLS connections (and it does), update OTP.</p>
<p><strong>Erlang/OTP</strong></p>
<ul>
<li>
<p><a href="https://cna.erlef.org/cves/CVE-2026-55953.html">CVE-2026-55953</a> <span class="sev sev-critical">CRITICAL 9.1</span>: the TLS 1.2 (and earlier) and DTLS client accepts a cipher suite the server selected even if the client never offered it, enabling an algorithm downgrade and adversary-in-the-middle against <code>ssl</code> clients.</p>
</li>
<li>
<p><a href="https://cna.erlef.org/cves/CVE-2026-58227.html">CVE-2026-58227</a> <span class="sev sev-high">HIGH 8.7</span>: TLS/DTLS denial of service via unbounded recursion on a cross-signed peer certificate chain.</p>
</li>
<li>
<p><a href="https://cna.erlef.org/cves/CVE-2026-59251.html">CVE-2026-59251</a> <span class="sev sev-high">HIGH 8.7</span>: <code>public_key</code> DoS via exponential certificate-policy-tree growth during path validation.</p>
</li>
<li>
<p><a href="https://cna.erlef.org/cves/CVE-2026-59250.html">CVE-2026-59250</a> <span class="sev sev-high">HIGH 8.3</span>: Megaco flex scanner buffer overflow via an oversized property parm name.</p>
</li>
<li>
<p><a href="https://cna.erlef.org/cves/CVE-2026-54890.html">CVE-2026-54890</a> <span class="sev sev-high">HIGH 8.2</span>: BEAM VM crash via an integer underflow in <code>binary_to_term</code> <code>BIT_BINARY_EXT</code> decoding, a DoS anywhere you decode untrusted external term format.</p>
</li>
<li>
<p><a href="https://cna.erlef.org/cves/CVE-2026-42792.html">CVE-2026-42792</a> <span class="sev sev-medium">MEDIUM 6.3</span>: <code>epmd</code> permanent DoS via file-descriptor exhaustion (<code>EMFILE</code>) on <code>accept(2)</code>.</p>
</li>
<li>
<p><a href="https://cna.erlef.org/cves/CVE-2026-55737.html">CVE-2026-55737</a> <span class="sev sev-medium">MEDIUM 5.1</span>: heap pointer corruption via a signed/unsigned mismatch in <code>LARGE_TUPLE_EXT</code> decoding.</p>
</li>
<li>
<p><a href="https://cna.erlef.org/cves/CVE-2026-47078.html">CVE-2026-47078</a> <span class="sev sev-medium">MEDIUM 4.8</span>: relative path traversal in <code>zip:unzip/1</code> and <code>zip:extract/1</code> via a depth-counter bypass in <code>check_dir_level</code>.</p>
<p><span class="fix-tag">Fix</span> Upgrade <a href="https://www.erlang.org/downloads">Erlang/OTP</a> to <strong>29.0.4</strong>, <strong>28.5.0.4</strong>, or <strong>27.3.4.15</strong>. Same drill as two weeks ago: an OTP upgrade, not a Hex bump.</p>
</li>
</ul>
<p><strong>cowlib</strong></p>
<ul>
<li>
<p><a href="https://cna.erlef.org/cves/CVE-2026-59248.html">CVE-2026-59248</a> <span class="sev sev-high">HIGH 8.7</span>: unbounded HPACK/QPACK prefixed-integer decoding, a memory-exhaustion DoS reachable through HTTP/2 and HTTP/3.</p>
<p><span class="fix-tag">Fix</span> Upgrade <a href="https://hex.pm/packages/cowlib"><code>cowlib</code></a> to <strong>2.19.0</strong>.</p>
</li>
</ul>
<p><strong>cowboy</strong></p>
<ul>
<li>
<p><a href="https://cna.erlef.org/cves/CVE-2026-65624.html">CVE-2026-65624</a> <span class="sev sev-medium">MEDIUM 6.9</span>: duplicate header names bypass the HTTP/1.1 <code>max_headers</code> limit, enabling memory exhaustion.</p>
<p><span class="fix-tag">Fix</span> Upgrade <a href="https://hex.pm/packages/cowboy"><code>cowboy</code></a> to <strong>2.18.0</strong>. Newer Phoenix apps default to Bandit, but plenty of deployed apps still serve on Cowboy, so check your lockfile.</p>
</li>
</ul>
<h2><a href="https://elixir.sydney/news/otp-cve-batch-july-2026#what-to-do" aria-hidden="true" class="anchor" id="what-to-do"></a>What to do</h2>
<ol>
<li>Update OTP first: the critical <code>ssl</code> cipher-suite bypass undermines TLS
server authentication for every outbound connection your node makes.</li>
<li>Run <code>mix hex.audit</code> for the Cowboy/Cowlib pair, and remember Hex 2.5 flags
advisories during <code>mix deps.get</code> (see the <a href="https://elixir.sydney/news/hex-2-5">Hex 2.5 write-up</a>).</li>
<li>Watch the <a href="https://cna.erlef.org/cves/">EEF CNA advisory list</a>. At this
cadence it's worth a bookmark.</li>
</ol>
<p>The pattern from the last batch holds: mostly DoS via unbounded resource use,
but the one that isn't (the TLS downgrade) is the one to lose sleep over.
Patch that today.</p> ]]></description>
  </item>

  <item>
    <title>Event: Kip Cole on Localize</title>
    <link>https://elixir.sydney/events/august-2026</link>
    <pubDate>Wed, 15 Jul 2026 07:37:34 +0000</pubDate>
    <guid>https://elixir.sydney/events/august-2026</guid>
    <category>event</category>
    <description><![CDATA[ <p>We're back at Decidr in the Sydney CBD on 19th August, and we've got one of our favourite
speakers and most prolific open source contributors: Kip Cole, talking about his shiniest
new library, <a href="https://github.com/elixir-localize/localize">Localize</a>.
<a href="https://luma.com/ujcqkbju?utm_source=elixir.sydney-event">RSVP on Luma</a>.</p>
<p>Got a talk in you? We're after speakers, full-length or lightning, and first-timers are
very welcome. <a href="https://elixir.sydney/speak">Pitch us a talk</a>.</p> ]]></description>
  </item>

  <item>
    <title>Event: Plugging CVEs and Temporal Postgres</title>
    <link>https://elixir.sydney/events/july-2026</link>
    <pubDate>Wed, 15 Jul 2026 00:00:00 +1000</pubDate>
    <guid>https://elixir.sydney/events/july-2026</guid>
    <category>event</category>
    <description><![CDATA[ <p>We're back at Decidr in the Sydney CBD on 15th July, with two talks locked in: Mike Buhot on
PostgreSQL 19's new temporal data features, and Braidon Whatley and Julian Doherty on the
quadratic-time Plug CVE they found and what it means. <a href="https://luma.com/8nrbdf9o?utm_source=elixir.sydney-event">RSVP on Luma</a>.</p>
<p>Got a talk in you? We're after speakers, full-length or lightning, and first-timers are
very welcome. <a href="https://elixir.sydney/speak">Pitch us a talk</a>.</p> ]]></description>
  </item>

  <item>
    <title>News: A busy month for BEAM security advisories</title>
    <link>https://elixir.sydney/news/beam-security-advisories-july-2026</link>
    <pubDate>Wed, 15 Jul 2026 00:00:00 +1000</pubDate>
    <guid>https://elixir.sydney/news/beam-security-advisories-july-2026</guid>
    <category>news</category>
    <description><![CDATA[ <p>Since our <a href="https://elixir.sydney/news/securing-the-beam-cna-and-cves">last CNA write-up</a> the
<a href="https://cna.erlef.org/cves/">Erlang Ecosystem Foundation CNA</a> has been busy:
roughly two dozen CVEs in the last month, several in packages almost every
Elixir web app depends on. Below they're grouped by package and ordered by
severity (CVSS), worst first, with the version to upgrade to. If you do one
thing, run <code>mix hex.audit</code>.</p>
<p><strong>ueberauth_apple</strong></p>
<ul>
<li>
<p><a href="https://cna.erlef.org/cves/CVE-2026-55954.html">CVE-2026-55954</a> <span class="sev sev-critical">CRITICAL 9.1</span>: the JWT signature is checked but ID-token claims aren't, so any Apple-signed token bearing a victim's identifier can be replayed for account takeover.</p>
<p><span class="fix-tag">Fix</span> Upgrade <a href="https://hex.pm/packages/ueberauth_apple"><code>ueberauth_apple</code></a> to <strong>0.6.2</strong>. Patch this today if you offer Sign in with Apple.</p>
</li>
</ul>
<p><strong>phoenix</strong></p>
<ul>
<li>
<p><a href="https://cna.erlef.org/cves/CVE-2026-56811.html">CVE-2026-56811</a> <span class="sev sev-high">HIGH 8.7</span>: no per-connection channel-join limit, process-exhaustion DoS from a single unauthenticated connection.</p>
</li>
<li>
<p><a href="https://cna.erlef.org/cves/CVE-2026-56812.html">CVE-2026-56812</a> <span class="sev sev-medium">MEDIUM 6.3</span>: Presence client crashes on prototype-key collisions in <code>syncState</code>/<code>syncDiff</code>.</p>
<p><span class="fix-tag">Fix</span> Upgrade <a href="https://hex.pm/packages/phoenix"><code>phoenix</code></a> to <strong>1.8.9</strong> (or 1.7.24 / 1.6.17 / 1.5.15 on older branches).</p>
</li>
</ul>
<p><strong>mint</strong></p>
<ul>
<li>
<p><a href="https://cna.erlef.org/cves/CVE-2026-56810.html">CVE-2026-56810</a> <span class="sev sev-high">HIGH 8.7</span>: buffers an entire chunked response chunk in memory.</p>
</li>
<li>
<p><a href="https://cna.erlef.org/cves/CVE-2026-58229.html">CVE-2026-58229</a> <span class="sev sev-high">HIGH 8.2</span>: unbounded HTTP/1 response-header accumulation, memory-exhaustion DoS.</p>
</li>
<li>
<p><a href="https://cna.erlef.org/cves/CVE-2026-59246.html">CVE-2026-59246</a> <span class="sev sev-medium">MEDIUM 6.3</span>: zero-length HTTP/2 CONTINUATION frames slip past the header byte-size cap.</p>
<p><span class="fix-tag">Fix</span> Upgrade <a href="https://hex.pm/packages/mint"><code>mint</code></a> to <strong>1.9.2</strong>. Mint sits under Finch, Req and friends, so you may pull it in transitively.</p>
</li>
</ul>
<p><strong>hpax</strong></p>
<ul>
<li>
<p><a href="https://cna.erlef.org/cves/CVE-2026-58226.html">CVE-2026-58226</a> <span class="sev sev-high">HIGH 8.7</span>: unbounded HPACK integer decoding, unauthenticated DoS.</p>
<p><span class="fix-tag">Fix</span> Upgrade <a href="https://hex.pm/packages/hpax"><code>hpax</code></a> to <strong>1.0.4</strong>. Transitive via Bandit and Mint.</p>
</li>
</ul>
<p><strong>ssl (Erlang/OTP)</strong></p>
<ul>
<li>
<p><a href="https://cna.erlef.org/cves/CVE-2026-55950.html">CVE-2026-55950</a> <span class="sev sev-high">HIGH 8.7</span>: DTLS listener crash via a race in <code>dtls_packet_demux</code>.</p>
</li>
<li>
<p><a href="https://cna.erlef.org/cves/CVE-2026-55952.html">CVE-2026-55952</a> <span class="sev sev-high">HIGH 8.2</span>: TLS 1.3 server DoS via a malformed ClientHello pre-shared-key extension.</p>
</li>
<li>
<p><a href="https://cna.erlef.org/cves/CVE-2026-54891.html">CVE-2026-54891</a> <span class="sev sev-medium">MEDIUM 6.3</span>: plaintext <code>APPLICATION_DATA</code> injected during the TLS handshake, delivered post-handshake.</p>
</li>
<li>
<p><a href="https://cna.erlef.org/cves/CVE-2026-54887.html">CVE-2026-54887</a> <span class="sev sev-medium">MEDIUM 6.3</span>: DTLS cookie bypass during the startup window.</p>
<p><span class="fix-tag">Fix</span> Upgrade <a href="https://www.erlang.org/downloads">Erlang/OTP</a> to <strong>29.0.3</strong>, <strong>28.5.0.3</strong>, or <strong>27.3.4.14</strong> (whichever matches your branch). An OTP upgrade, not a Hex bump.</p>
</li>
</ul>
<p><strong>mdex</strong></p>
<ul>
<li>
<p><a href="https://cna.erlef.org/cves/CVE-2026-53426.html">CVE-2026-53426</a> <span class="sev sev-high">HIGH</span>: atom-table exhaustion DoS via JSON <code>parse_document</code>.</p>
</li>
<li>
<p><a href="https://cna.erlef.org/cves/CVE-2026-54889.html">CVE-2026-54889</a> <span class="sev sev-medium">MEDIUM</span>: <code>javascript:</code> injection (XSS) in Quill Delta output.</p>
</li>
<li>
<p><a href="https://cna.erlef.org/cves/CVE-2026-54888.html">CVE-2026-54888</a> <span class="sev sev-medium">MEDIUM</span>: uncontrolled recursion over deeply nested Markdown crashes the BEAM.</p>
</li>
<li>
<p><a href="https://cna.erlef.org/cves/CVE-2026-53429.html">CVE-2026-53429</a> <span class="sev sev-medium">MEDIUM</span>: native memory leak in escaped-tag rendering.</p>
</li>
<li>
<p><a href="https://cna.erlef.org/cves/CVE-2026-53428.html">CVE-2026-53428</a> <span class="sev sev-medium">MEDIUM</span>: unbounded allocation in <code>highlight_lines</code> range expansion.</p>
</li>
<li>
<p><a href="https://cna.erlef.org/cves/CVE-2026-53427.html">CVE-2026-53427</a> <span class="sev sev-low">LOW</span>: XSS via an unescaped <code>highlight_lines_class</code> code-fence attribute.</p>
<p><span class="fix-tag">Fix</span> Upgrade <a href="https://hex.pm/packages/mdex"><code>mdex</code></a> to <strong>0.13.x</strong> (we run 0.13.3). We hit these on this very site, see the <a href="https://elixir.sydney/news/hex-2-5">Hex 2.5 write-up</a>.</p>
</li>
</ul>
<p><strong>plug</strong></p>
<ul>
<li>
<p><a href="https://cna.erlef.org/cves/CVE-2026-56814.html">CVE-2026-56814</a> <span class="sev sev-medium">MEDIUM 6.9</span>: multipart part headers aren't charged to the <code>:length</code> limit, so uploads can create unbounded temp files.</p>
</li>
<li>
<p><a href="https://cna.erlef.org/cves/CVE-2026-56813.html">CVE-2026-56813</a> <span class="sev sev-low">LOW 2.1</span>: cookie attribute injection in <code>Plug.Conn.Cookies.encode/2</code>.</p>
<p><span class="fix-tag">Fix</span> Upgrade <a href="https://hex.pm/packages/plug"><code>plug</code></a> to <strong>1.20.3</strong> (or 1.19.5 / 1.18.5 / 1.17.4 / 1.16.6 on older branches).</p>
</li>
</ul>
<p><strong>ssh (Erlang/OTP)</strong></p>
<ul>
<li>
<p><a href="https://cna.erlef.org/cves/CVE-2026-54886.html">CVE-2026-54886</a> <span class="sev sev-medium">MEDIUM 5.3</span>: SFTP server DoS via an extended channel-data infinite loop.</p>
</li>
<li>
<p><a href="https://cna.erlef.org/cves/CVE-2026-53422.html">CVE-2026-53422</a> <span class="sev sev-low">LOW 2.3</span>: SFTP <code>REALPATH</code> path-existence oracle allows enumeration outside the configured root.</p>
<p><span class="fix-tag">Fix</span> The same OTP releases as above: <strong>29.0.3</strong> / <strong>28.5.0.3</strong> / <strong>27.3.4.14</strong>.</p>
</li>
</ul>
<p><strong>phoenix_live_view</strong></p>
<ul>
<li>
<p><a href="https://cna.erlef.org/cves/CVE-2026-58228.html">CVE-2026-58228</a> <span class="sev sev-medium">MEDIUM 5.1</span>: scheme-validation bypass in <code>Phoenix.LiveView.Utils</code>, XSS via <code>&lt;.link&gt;</code>.</p>
<p><span class="fix-tag">Fix</span> Upgrade <a href="https://hex.pm/packages/phoenix_live_view"><code>phoenix_live_view</code></a> to <strong>1.2.7</strong>.</p>
</li>
</ul>
<p><strong>postgrex</strong></p>
<ul>
<li>
<p><a href="https://cna.erlef.org/cves/CVE-2026-58225.html">CVE-2026-58225</a> <span class="sev sev-low">LOW 2.1</span>: SQL injection via an unescaped dollar-quote in notification reconnect replay, causing DoS.</p>
<p><span class="fix-tag">Fix</span> Upgrade <a href="https://hex.pm/packages/postgrex"><code>postgrex</code></a> to <strong>0.22.3</strong>.</p>
</li>
</ul>
<p><strong>swoosh</strong></p>
<ul>
<li>
<p><a href="https://cna.erlef.org/cves/CVE-2026-54893.html">CVE-2026-54893</a> <span class="sev sev-low">LOW 2.1</span>: email-derived URL path injection in the Microsoft Graph adapter, only if you derive the sender address from untrusted input.</p>
<p><span class="fix-tag">Fix</span> Upgrade <a href="https://hex.pm/packages/swoosh"><code>swoosh</code></a> to <strong>1.26.3</strong>.</p>
</li>
</ul>
<h2><a href="https://elixir.sydney/news/beam-security-advisories-july-2026#what-to-do" aria-hidden="true" class="anchor" id="what-to-do"></a>What to do</h2>
<ol>
<li>Run <code>mix hex.audit</code>. On Hex 2.5 it also flags advisories inline during <code>mix deps.get</code> and fails CI on a vulnerable lockfile (see the <a href="https://elixir.sydney/news/hex-2-5">Hex 2.5 write-up</a>).</li>
<li>Patch worst first: the CRITICAL <code>ueberauth_apple</code> account-takeover, then the HIGH memory-exhaustion DoS in Phoenix, Mint, hpax and OTP <code>ssl</code>. Update <strong>Erlang/OTP</strong> for the <code>ssl</code> and <code>ssh</code> ones.</li>
<li>Watch the <a href="https://cna.erlef.org/cves/">EEF CNA advisory list</a>.</li>
</ol>
<p>Most of these are denial-of-service via unbounded memory, but the Apple auth
bypass is a real account takeover and the LiveView issue is an XSS, so don't sit
on those. The reassuring part: the ecosystem catalogues this properly now and
the tooling surfaces it, so staying current is mostly a matter of running the
audit and not ignoring it.</p> ]]></description>
  </item>

  <item>
    <title>News: Optimising every image with Kip Cole&#39;s Image library</title>
    <link>https://elixir.sydney/news/optimising-images-with-image</link>
    <pubDate>Wed, 15 Jul 2026 00:00:00 +1000</pubDate>
    <guid>https://elixir.sydney/news/optimising-images-with-image</guid>
    <category>news</category>
    <description><![CDATA[ <p>Small confession: this site was shipping about 5 MB of avatars and event photos,
mostly full-size JPEGs shown at thumbnail size. Now every image is a right-sized
WebP, generated at build time by <a href="https://hex.pm/packages/image">Image</a>, the
libvips-backed library from <a href="https://elixir.sydney/speakers/kip-cole">Kip Cole</a>.</p>
<p>There's a nice symmetry to it: Kip gave a talk at Elixir Sydney in May 2024,
<a href="https://youtu.be/H-Psxgqoa-M">Fast and efficient image processing in Elixir</a>,
on exactly this topic, using libvips, Vix and Image to scale, transform and
compose images fast. We're now running his library to build the very page you're
reading.</p>
<h2><a href="https://elixir.sydney/news/optimising-images-with-image#what-it-does-for-us" aria-hidden="true" class="anchor" id="what-it-does-for-us"></a>What it does for us</h2>
<ul>
<li>A <code>mix images</code> build step walks the image folder and writes a right-sized
<code>.webp</code> next to each source (avatars capped at 160px, event photos at 800px).
On-page images dropped from roughly 5 MB to about 900 KB.</li>
<li>The OpenGraph share cards are re-encoded to lossless WebP through the same
library (libvips' <code>webpsave</code>), taking the card set from around 26 MB to 9 MB
with no loss of crispness on the text.</li>
<li>It's self-contained: Vix ships a precompiled libvips, so there's nothing to
install in CI.</li>
</ul>
<p>Image is a lovely piece of the ecosystem: a clean Elixir API over a very fast C
library, precompiled so it just works. If you push images around in an Elixir
app, watch <a href="https://youtu.be/H-Psxgqoa-M">Kip's talk</a> and reach for
<a href="https://hex.pm/packages/image">Image</a>.</p> ]]></description>
  </item>

  <item>
    <title>News: Who&#39;s building on Elixir in Australia?</title>
    <link>https://elixir.sydney/news/elixir-companies-in-australia</link>
    <pubDate>Tue, 14 Jul 2026 00:00:00 +1000</pubDate>
    <guid>https://elixir.sydney/news/elixir-companies-in-australia</guid>
    <category>news</category>
    <description><![CDATA[ <p>We've added a list of Australian companies building on Elixir and the BEAM to
the <a href="https://elixir.sydney/">home page</a>. It's a small thing, but a visible one: proof that there are
real jobs and real production systems on the BEAM here, not just a hobby.</p>
<p>If your company runs Elixir, Erlang, Gleam or anything else on the BEAM, we'd
love to include you. There are two other places worth getting listed, both a
quick way to show your support for the ecosystem:</p>
<ul>
<li>
<p>The <a href="https://registry.erlef.org">EEF company registry</a>, where companies
formally register their use of the ecosystem so the Erlang Ecosystem
Foundation can point to who depends on it.</p>
</li>
<li>
<p><a href="https://elixir-companies.com">elixir-companies.com</a>, the community directory.
Adding yourself is a pull request on
<a href="https://github.com/elixir-companies/elixir-companies">the repo</a>.</p>
</li>
</ul>
<p>Getting on these lists helps people find BEAM work locally and makes the
community a little more visible. Tell us at a meetup or drop us a line and we'll
add you to the Sydney list too.</p> ]]></description>
  </item>

  <item>
    <title>News: Hex 2.5 hardens the supply chain</title>
    <link>https://elixir.sydney/news/hex-2-5</link>
    <pubDate>Mon, 29 Jun 2026 00:00:00 +1000</pubDate>
    <guid>https://elixir.sydney/news/hex-2-5</guid>
    <category>news</category>
    <description><![CDATA[ <p><a href="https://hex.pm/blog/hex-v25-released">Hex 2.5</a> landed on 29 June 2026 with one
theme: making it harder for a compromised release to reach your build. Supply
chain attacks on package registries have become routine. The usual pattern is
that someone compromises a maintainer account or a build pipeline, publishes a
tampered release, and automated tooling pulls it into thousands of projects
within hours, long before anyone notices. Hex 2.5 ships three layers of defence,
most of which need no configuration.</p>
<h2><a href="https://elixir.sydney/news/hex-2-5#advisories-in-the-terminal" aria-hidden="true" class="anchor" id="advisories-in-the-terminal"></a>Advisories in the terminal</h2>
<p><code>mix deps.get</code> and <code>mix deps.update</code> now flag known-vulnerable packages inline,
tagging them &quot;VULNERABLE&quot; with a short summary and deduplicating advisories
across databases. It is exactly how we recently caught and cleared a handful of
advisories on this very site. Resolving deps looks like this now:</p>
<pre class="lumis" style="color: #e0def4; background-color: #232136;"><code class="language-bash" translate="no" tabindex="0"><div class="l-line" data-line="1"><span style="color: #ea9a97;">Resolving</span> <span style="color: #c4a7e7;">Hex</span> <span style="color: #c4a7e7;">dependencies...</span>
</div><div class="l-line" data-line="2"><span style="color: #ea9a97;">Resolution</span> <span style="color: #c4a7e7;">completed</span> <span style="color: #c4a7e7;">in</span> <span style="color: #c4a7e7;">0.42s</span>
</div><div class="l-line" data-line="3">  <span style="color: #ea9a97;">mdex</span> <span style="color: #c4a7e7;">0.11.7</span> <span style="color: #c4a7e7;">VULNERABLE!</span>
</div><div class="l-line" data-line="4">    <span style="color: #ea9a97;">EEF-CVE-2026-54889</span> <span style="color: #908caa;">(</span><span style="color: #ea9a97;">MEDIUM</span><span style="color: #908caa;">)</span>
</div><div class="l-line" data-line="5">    <span style="color: #ea9a97;">aka:</span> <span style="color: #c4a7e7;">CVE-2026-54889,</span> <span style="color: #c4a7e7;">GHSA-4383-7xfp-gpph</span>
</div><div class="l-line" data-line="6">    <span style="color: #ea9a97;">Unsanitized</span> <span style="color: #c4a7e7;">URL</span> <span style="color: #c4a7e7;">schemes</span> <span style="color: #c4a7e7;">in</span> <span style="color: #c4a7e7;">MDEx</span> <span style="color: #c4a7e7;">Quill</span> <span style="color: #c4a7e7;">Delta</span> <span style="color: #c4a7e7;">output</span> <span style="color: #c4a7e7;">allow</span> <span style="color: #c4a7e7;">javascript:</span> <span style="color: #c4a7e7;">injection</span> <span style="color: #908caa;">(</span><span style="color: #ea9a97;">XSS</span><span style="color: #908caa;">)</span>
</div><div class="l-line" data-line="7">    <span style="color: #ea9a97;">https://osv.dev/vulnerability/EEF-CVE-2026-54889</span>
</div><div class="l-line" data-line="8">    <span style="color: #ea9a97;">EEF-CVE-2026-53426</span> <span style="color: #908caa;">(</span><span style="color: #ea9a97;">HIGH</span><span style="color: #908caa;">)</span>
</div><div class="l-line" data-line="9">    <span style="color: #ea9a97;">aka:</span> <span style="color: #c4a7e7;">CVE-2026-53426,</span> <span style="color: #c4a7e7;">GHSA-923r-7vf4-5vw8</span>
</div><div class="l-line" data-line="10">    <span style="color: #ea9a97;">Atom-table</span> <span style="color: #c4a7e7;">exhaustion</span> <span style="color: #c4a7e7;">denial-of-service</span> <span style="color: #c4a7e7;">via</span> <span style="color: #c4a7e7;">JSON</span> <span style="color: #c4a7e7;">parse_document</span> <span style="color: #c4a7e7;">in</span> <span style="color: #c4a7e7;">MDEx</span>
</div><div class="l-line" data-line="11">    <span style="color: #ea9a97;">https://osv.dev/vulnerability/EEF-CVE-2026-53426</span>
</div><div class="l-line" data-line="12"><span style="color: #ea9a97;">Found</span> <span style="color: #c4a7e7;">packages</span> <span style="color: #c4a7e7;">with</span> <span style="color: #c4a7e7;">security</span> <span style="color: #c4a7e7;">advisories</span>
</div></code></pre>
<p>For CI, <code>mix hex.audit</code> inspects your lockfile and exits non-zero if any
dependency carries an advisory or has been retired, so a vulnerable release
fails the build instead of slipping through:</p>
<pre class="lumis" style="color: #e0def4; background-color: #232136;"><code class="language-bash" translate="no" tabindex="0"><div class="l-line" data-line="1"><span style="color: #908caa;">$</span> <span style="color: #e0def4;">mix</span> <span style="color: #c4a7e7;">hex.audit</span>
</div><div class="l-line" data-line="2"><span style="color: #ea9a97;">Advisories:</span>
</div><div class="l-line" data-line="3">  <span style="color: #ea9a97;">phoenix_live_view</span> <span style="color: #c4a7e7;">1.2.6</span> <span style="color: #c4a7e7;">-</span> <span style="color: #c4a7e7;">EEF-CVE-2026-58228</span> <span style="color: #908caa;">(</span><span style="color: #ea9a97;">MEDIUM</span><span style="color: #908caa;">)</span>
</div><div class="l-line" data-line="4">    <span style="color: #ea9a97;">aka:</span> <span style="color: #c4a7e7;">CVE-2026-58228,</span> <span style="color: #c4a7e7;">GHSA-5cgh-g58j-m9cq</span>
</div><div class="l-line" data-line="5">    <span style="color: #ea9a97;">Scheme</span> <span style="color: #c4a7e7;">validation</span> <span style="color: #c4a7e7;">bypass</span> <span style="color: #c4a7e7;">in</span> <span style="color: #c4a7e7;">Phoenix.LiveView.Utils</span> <span style="color: #c4a7e7;">leads</span> <span style="color: #c4a7e7;">to</span> <span style="color: #c4a7e7;">XSS</span> <span style="color: #c4a7e7;">via</span> <span style="color: #908caa;">&lt;</span><span style="color: #f6c177;">.link</span><span style="color: #908caa;">&gt;</span>
</div><div class="l-line" data-line="6">    <span style="color: #f6c177;">https://osv.dev/vulnerability/EEF-CVE-2026-58228</span>
</div><div class="l-line" data-line="7">
</div><div class="l-line" data-line="8"><span style="color: #ea9a97;">Found</span> <span style="color: #c4a7e7;">packages</span> <span style="color: #c4a7e7;">with</span> <span style="color: #c4a7e7;">security</span> <span style="color: #c4a7e7;">advisories</span>
</div></code></pre>
<p>Bumping <code>phoenix_live_view</code> to a patched release and re-running it prints
&quot;No retired or security advisory packages found&quot;, and the build is green again.
This is all on for every project with nothing to configure.</p>
<h2><a href="https://elixir.sydney/news/hex-2-5#release-age-cooldown" aria-hidden="true" class="anchor" id="release-age-cooldown"></a>Release-age cooldown</h2>
<p>The cooldown withholds very recently published versions from resolution, giving
the community time to catch a bad release before it lands in your deps:</p>
<pre class="lumis" style="color: #e0def4; background-color: #232136;"><code class="language-elixir" translate="no" tabindex="0"><div class="l-line" data-line="1"><span style="color: #908caa;"># mix.exs</span>
</div><div class="l-line" data-line="2"><span style="color: #e0def4;">hex</span>: <span style="color: #908caa;">[</span><span style="color: #ea9a97;">cooldown</span>: <span style="color: #f6c177;">&quot;7d&quot;</span><span style="color: #908caa;">]</span>
</div></code></pre>
<p>Durations look like <code>7d</code>, <code>2w</code> or <code>1mo</code>. It never touches already-locked
dependencies, and there is an escape hatch when a current version turns out to
be unsafe. <code>mix hex.outdated</code> shows which updates are being held and when they
become eligible.</p>
<h2><a href="https://elixir.sydney/news/hex-2-5#dependency-policies" aria-hidden="true" class="anchor" id="dependency-policies"></a>Dependency policies</h2>
<p>Organisations can publish a signed policy and enforce it across every project
that opts in, restricting releases by advisory severity, retirement reason, or
release age. <code>mix hex.policy show</code> summarises the active policy, and
<code>mix hex.policy why &lt;package&gt;</code> explains, version by version, why something is
blocked.</p>
<p>Package authors need do nothing for any of this. Consumers get the advisories
and the cooldown for free, which is a rare thing in security: a genuine
improvement you pick up just by upgrading.</p>
<p>The advisories Hex surfaces are published by the
<a href="https://cna.erlef.org/cves/">Erlang Ecosystem Foundation CNA</a>, which has been
busy lately. Watch it, run <code>mix hex.audit</code>, and keep your dependencies current:
most of these fixes are one <code>mix deps.update</code> away. We rounded up the last
month's advisories <a href="https://elixir.sydney/news/beam-security-advisories-july-2026">here</a>.</p> ]]></description>
  </item>

  <item>
    <title>Event: Elixir Sydney: The Mythos/Fable Edition</title>
    <link>https://elixir.sydney/events/mythos-fable-edition</link>
    <pubDate>Wed, 17 Jun 2026 00:00:00 +1000</pubDate>
    <guid>https://elixir.sydney/events/mythos-fable-edition</guid>
    <category>event</category>
    <description><![CDATA[ <p>It's been a hot minute and we've not done an Elixir Sydney meetup in a while.</p>
<p>We'll kick off with an ecosystem update covering the Mythos class Fable 5 launch and what's been happening in the community in 2026, including security updates and new releases, followed by two Ash framework talks.</p>
<p>Thanks to Decidr for hosting us in the CBD. <a href="https://luma.com/6k7hotj8">RSVP on Luma</a> to see the venue address.</p>
<p>Got an idea for a talk? <a href="https://github.com/elixirsydney/elixirsydney/issues">Submit a talk proposal</a> or come along and say hi, everyone is welcome, no matter your skill level.</p> ]]></description>
  </item>

  <item>
    <title>Job: Software Engineer (Backend / Elixir) at Yojee (Sydney CBD (4 days in office))</title>
    <link>https://yojee.bamboohr.com/careers/185</link>
    <pubDate>Tue, 16 Jun 2026 09:00:00 +1000</pubDate>
    <guid>https://yojee.bamboohr.com/careers/185</guid>
    <category>job</category>
    <description><![CDATA[ <p>Build enterprise-grade logistics software with Elixir/Phoenix: distributed, event-driven systems powering real-time freight operations across air, ocean, and road. We&#39;re looking for engineers with 4–6 years of backend experience across PostgreSQL, AWS, Docker, CI/CD, and modern AI-assisted development workflows.</p> ]]></description>
  </item>

  <item>
    <title>Job: Engineering Manager at Yojee (Sydney CBD (4 days in office))</title>
    <link>https://yojee.bamboohr.com/careers/183</link>
    <pubDate>Tue, 16 Jun 2026 09:00:00 +1000</pubDate>
    <guid>https://yojee.bamboohr.com/careers/183</guid>
    <category>job</category>
    <description><![CDATA[ <p>Lead high-performing engineering teams building enterprise-grade logistics software with Elixir/Phoenix and React. Own delivery, grow engineers, and stay hands-on while shaping distributed, event-driven systems powering real-time freight operations across air, ocean, and road. Experience leading teams, building production systems at scale, and leveraging modern AI-assisted development workflows across the SDLC required.</p> ]]></description>
  </item>

  <item>
    <title>News: A new home for Elixir Sydney</title>
    <link>https://elixir.sydney/news/a-new-home-for-elixir-sydney</link>
    <pubDate>Mon, 15 Jun 2026 00:00:00 +1000</pubDate>
    <guid>https://elixir.sydney/news/a-new-home-for-elixir-sydney</guid>
    <category>news</category>
    <description><![CDATA[ <p>We've given <a href="https://elixir.sydney/">elixir.sydney</a> a complete rebuild, and along the way we dug up our
entire history.</p>
<p>The new site is a small, fast static site built, fittingly, in Elixir with
<a href="https://github.com/elixir-tools/tableau">Tableau</a>, the elixir-tools static site
generator. The whole thing compiles to plain HTML and is pushed to <strong>S3</strong> and served
through <strong>CloudFront</strong>, so it's cheap, fast and has nothing to keep running. Content
lives as Markdown and YAML in the <a href="https://github.com/elixirsydney">repo</a>, and every
push to <code>main</code> deploys automatically.</p>
<p>More importantly, it now documents <strong>every Elixir Sydney meetup since 2015</strong>: more than
eighty events and the talks, speakers and recordings that went with them. A lot of that
had been scattered across an old site, our Meetup group, GitHub and the Internet
Archive, and we've pulled it back together for good.</p>
<p>We've also <strong>finally shut down our Meetup.com group</strong> (yay!). It served us well for a
decade, but it's done, everything now lives here, with RSVPs on Luma.</p>
<p>A few things to explore:</p>
<ul>
<li><strong><a href="https://elixir.sydney/events">Events</a></strong>, the full archive, newest first, with talk videos and slides
where we have them.</li>
<li><strong><a href="https://elixir.sydney/speakers">Speakers</a></strong>, everyone who has ever given a talk, with links to their
work. If you spot something wrong, let us know.</li>
<li><strong><a href="https://elixir.sydney/speak">Give a talk</a></strong>, first-time speakers are very welcome, and we're happy to
help you shape an idea.</li>
</ul>
<p>RSVPs now run through <a href="https://luma.com/elixir-sydney">Luma</a>, and we hang out in the
Elixir community channels linked in the footer.</p>
<p>See you at the next one.</p> ]]></description>
  </item>

  <item>
    <title>News: Fable 5 launched, then vanished three days later</title>
    <link>https://elixir.sydney/news/fable-5-released-then-pulled</link>
    <pubDate>Sat, 13 Jun 2026 00:00:00 +1000</pubDate>
    <guid>https://elixir.sydney/news/fable-5-released-then-pulled</guid>
    <category>news</category>
    <description><![CDATA[ <p>We named tonight's meetup &quot;The Mythos/Fable Edition&quot; after Anthropic's big launch. By the
time we actually meet, the models are already gone. The whole thing lasted three days.</p>
<p>On 9 June, Anthropic
<a href="https://www.anthropic.com/news/claude-fable-5-mythos-5">released Claude Fable 5 and Mythos 5</a>,
pitching Fable 5 as its most capable widely-released model and aiming it squarely at
long-horizon agentic work. It went out the same day across the Claude API, AWS Bedrock,
Microsoft Foundry and the rest.</p>
<p>Then on Friday 12 June, the US Commerce Department
<a href="https://www.infoq.com/news/2026/06/claude-5-release/">directed Anthropic</a> to block foreign
nationals from using both models. Rather than carve the world in two, Anthropic
<a href="https://techcrunch.com/2026/06/09/anthropic-released-claude-fable-5-its-most-powerful-model-publicly-days-after-warning-ai-is-getting-too-dangerous/">disabled Fable 5 and Mythos 5 globally for everyone</a>
the same day. As best anyone can tell, the government believes a way to jailbreak Fable 5
surfaced, and the standoff traces back to Anthropic refusing to hand over full access to
Claude.</p>
<p>Worth noting from down here: &quot;foreign nationals&quot; includes us. So even setting the jailbreak
drama aside, a Sydney developer poking at Fable 5 over the weekend would have watched it
blink out regardless.</p>
<p>It's a strange one to sit with. The most capable model anyone had shipped, public on a
Tuesday and pulled by Friday, on government order. If you're building agentic tooling on the
BEAM, it's a sharp reminder that the model under your abstraction can disappear out from
under you. Plan for the provider, and the politics, not just the API.</p> ]]></description>
  </item>

  <item>
    <title>News: Phoenix LiveView 1.2 is out</title>
    <link>https://elixir.sydney/news/phoenix-liveview-1-2</link>
    <pubDate>Wed, 10 Jun 2026 00:00:00 +1000</pubDate>
    <guid>https://elixir.sydney/news/phoenix-liveview-1-2</guid>
    <category>news</category>
    <description><![CDATA[ <p><a href="https://phoenixframework.org/blog/phoenix-liveview-1-2-released">Phoenix LiveView 1.2</a>
shipped on 10 June 2026, and it rounds out the colocation work that started in 1.1.</p>
<p>The headline is <strong>colocated CSS</strong>. Where 1.1 let you keep a component's hooks and JS
next to its markup, 1.2 lets you do the same with styles, using the CSS <code>@scope</code> rule to
stop them leaking into the rest of the page. To make that work the team had to
<strong>split HEEx compilation into separate tokenization and parsing steps</strong>, which is the
kind of unglamorous internal change that quietly makes a lot of other things possible.</p>
<p>A few other things worth knowing:</p>
<ul>
<li><code>Phoenix.LiveView.JS</code> commands are now <strong>automatically encoded</strong> when you send them with
<code>push_event</code>, whether you're on <code>Jason</code> or the built-in <code>JSON</code> module.</li>
<li><strong>Test warnings can be configured by category</strong>, so you can tune the checks that run
in <code>LiveViewTest</code>.</li>
<li>Custom formatting for <code>&lt;script&gt;</code> and <code>&lt;style&gt;</code> tags, and module-level HEEx debug
annotations.</li>
</ul>
<p>Worth a look if you're building anything with LiveView. We'll likely touch on it at an
upcoming meetup, <a href="https://luma.com/elixir-sydney">RSVP on Luma</a>.</p> ]]></description>
  </item>

  <item>
    <title>News: Securing the BEAM: the EEF is now a CNA</title>
    <link>https://elixir.sydney/news/securing-the-beam-cna-and-cves</link>
    <pubDate>Fri, 05 Jun 2026 00:00:00 +1000</pubDate>
    <guid>https://elixir.sydney/news/securing-the-beam-cna-and-cves</guid>
    <category>news</category>
    <description><![CDATA[ <p>Security has been front of mind in the BEAM world this year, and there's good news on
how the ecosystem is responding.</p>
<h2><a href="https://elixir.sydney/news/securing-the-beam-cna-and-cves#the-wake-up-call-cve-2025-32433" aria-hidden="true" class="anchor" id="the-wake-up-call-cve-2025-32433"></a>The wake-up call: CVE-2025-32433</h2>
<p>In April 2025, <a href="https://github.com/erlang/otp/security/advisories/GHSA-37cp-fgq5-7wc2">CVE-2025-32433</a>
landed, an <strong>unauthenticated, pre-auth remote code execution</strong> flaw in Erlang/OTP's
SSH server, scored a maximum <strong>CVSS 10.0</strong>. A remote attacker could run code before
authenticating. It was fixed in <strong>OTP-27.3.3, 26.2.5.11 and 25.3.2.20</strong>, and it was a
clear reminder to keep the runtime patched.</p>
<h2><a href="https://elixir.sydney/news/securing-the-beam-cna-and-cves#otp-29-responds" aria-hidden="true" class="anchor" id="otp-29-responds"></a>OTP 29 responds</h2>
<p>That focus shows up directly in <a href="https://www.erlang.org/blog/highlights-otp-29/">OTP 29</a>:
SSH is now <strong>secure-by-default</strong> (shell and exec disabled unless you enable them),
TLS defaults to a post-quantum key exchange, and the compiler warns about unsafe
functions, alongside a new set of secure coding guidelines.</p>
<h2><a href="https://elixir.sydney/news/securing-the-beam-cna-and-cves#the-eef-is-now-a-cve-numbering-authority" aria-hidden="true" class="anchor" id="the-eef-is-now-a-cve-numbering-authority"></a>The EEF is now a CVE Numbering Authority</h2>
<p>The bigger structural change: the
<a href="https://erlef.org/blog/security/eef-cna-announcement">Erlang Ecosystem Foundation is now a CNA</a>
(a CVE Numbering Authority). It assigns CVE IDs and publishes advisories for active
<a href="https://hex.pm">Hex.pm</a> packages and the <code>elixir-lang</code>, <code>erlang</code>, <code>erlef</code> and
<code>gleam-lang</code> GitHub orgs, with records published at
<a href="https://cna.erlef.org/">cna.erlef.org</a>. It's already coordinating real disclosures,recent 2026 advisories cover <code>Tesla</code> middleware, <code>public_key</code> certificate validation,
and the <code>Mint</code> HTTP/2 client, which means coordinated, properly-tracked vulnerability
handling for the whole ecosystem.</p>
<h2><a href="https://elixir.sydney/news/securing-the-beam-cna-and-cves#what-to-do" aria-hidden="true" class="anchor" id="what-to-do"></a>What to do</h2>
<ul>
<li>Keep Elixir and OTP patched, most BEAM CVEs are fixed quickly across supported
release lines.</li>
<li>Watch <a href="https://cna.erlef.org/">cna.erlef.org</a> and the EEF security advisories.</li>
<li>Run <code>mix hex.audit</code> for retired packages, and consider
<a href="https://hex.pm/packages/mix_audit"><code>mix_audit</code></a> (<code>mix deps.audit</code>) to scan deps
against known advisories in CI.</li>
</ul> ]]></description>
  </item>

  <item>
    <title>News: Elixir 1.20 and OTP 29 have landed</title>
    <link>https://elixir.sydney/news/elixir-1-20-and-otp-29</link>
    <pubDate>Thu, 04 Jun 2026 00:00:00 +1000</pubDate>
    <guid>https://elixir.sydney/news/elixir-1-20-and-otp-29</guid>
    <category>news</category>
    <description><![CDATA[ <p>It's been a big few weeks for the BEAM. Both <strong>Erlang/OTP 29</strong> and <strong>Elixir 1.20</strong>
have shipped.</p>
<h2><a href="https://elixir.sydney/news/elixir-1-20-and-otp-29#elixir-120" aria-hidden="true" class="anchor" id="elixir-120"></a>Elixir 1.20</h2>
<p>Released on 3 June 2026, <a href="https://elixir-lang.org/blog/2026/06/03/elixir-v1-20-0-released/">Elixir 1.20</a>
is a landmark for the type system. The compiler now performs <strong>type inference and
gradual type checking of every Elixir program, with no type annotations required</strong>.
In practice that means Elixir increasingly flags dead code and guaranteed-to-fail
typing violations, with a very low false-positive rate.</p>
<p>Highlights:</p>
<ul>
<li>Type <strong>narrowing</strong> across guards, <code>case</code>/<code>cond</code>/<code>with</code> clauses, and conditionals
(occurrence typing), so types are more precise inside each branch.</li>
<li>Much of the standard library is now typed, including most of the <code>Map</code> module and
tuples.</li>
<li>Faster compilation, especially on many-core machines, the benchmarks now put
Mix among the fastest build tools on the BEAM.</li>
</ul>
<h2><a href="https://elixir.sydney/news/elixir-1-20-and-otp-29#erlangotp-29" aria-hidden="true" class="anchor" id="erlangotp-29"></a>Erlang/OTP 29</h2>
<p><a href="https://www.erlang.org/blog/highlights-otp-29/">OTP 29</a> (13 May 2026) leans hard into
security and developer ergonomics:</p>
<ul>
<li><strong>Secure-by-default SSH</strong> (shell/exec disabled unless you opt in) and a
post-quantum <code>x25519mlkem768</code> default key exchange for TLS.</li>
<li>New warnings for unsafe and potentially-unsafe functions, plus secure coding
guidelines.</li>
<li>Experimental <strong>native records</strong> (EEP-79), multi-valued comprehensions, an
<code>is_integer/3</code> guard, and JIT improvements for binary matching.</li>
</ul>
<p>If you want to play with both, point your version manager at <strong>Elixir 1.20.1</strong> on
<strong>OTP 29.0.2</strong>, that's what runs this very site's build pipeline.</p>
<p>We'll cover the ecosystem updates at the next meetup, <a href="https://luma.com/elixir-sydney">RSVP on Luma</a>.</p> ]]></description>
  </item>

  <item>
    <title>News: HexDocs moves to per-package subdomains</title>
    <link>https://elixir.sydney/news/hexdocs-per-package-subdomains</link>
    <pubDate>Mon, 01 Jun 2026 00:00:00 +1000</pubDate>
    <guid>https://elixir.sydney/news/hexdocs-per-package-subdomains</guid>
    <category>news</category>
    <description><![CDATA[ <p><a href="https://hexdocs.pm">HexDocs</a> has changed how it serves documentation: every package now
lives on its own subdomain.</p>
<p>So <code>hexdocs.pm/ecto</code> becomes <code>ecto.hexdocs.pm</code>, and <code>hexdocs.pm/ecto_sql</code> becomes
<code>ecto-sql.hexdocs.pm</code> (underscores turn into hyphens). Organisation docs move from
<code>org.hexdocs.pm/package</code> to <code>org.hexorgs.pm/package</code>.</p>
<p>The reason is security. Until now every public package was served from the same origin, so
a malicious or compromised package could, in principle, reach into another package's docs
in the browser. Giving each package its own subdomain hands that isolation to the browser's
same-origin policy for free. It's a small, sensible piece of the same
<a href="https://elixir.sydney/news/securing-the-beam-cna-and-cves">security push we wrote about</a> across the ecosystem.</p>
<p>Nothing breaks today, old URLs redirect to the new ones. But if you've got HexDocs links in
a README, a blog post, or your socials, it's worth updating them to the subdomain form
while you're thinking about it.</p>
<p>Read the <a href="https://hex.pm/blog/hexdocs-per-package-subdomains">announcement on hex.pm</a>.</p> ]]></description>
  </item>

  <item>
    <title>News: Put your company on the EEF registry</title>
    <link>https://elixir.sydney/news/erlef-company-registry</link>
    <pubDate>Fri, 29 May 2026 00:00:00 +1000</pubDate>
    <guid>https://elixir.sydney/news/erlef-company-registry</guid>
    <category>news</category>
    <description><![CDATA[ <p>The Erlang Ecosystem Foundation has launched
<a href="https://registry.erlef.org">registry.erlef.org</a>, a free, central registry of companies
that use Erlang, Elixir and the wider BEAM. It exists to answer the question every one of
us has been asked: <strong>&quot;who actually uses this?&quot;</strong></p>
<p>The pitch is simple. The registry shows the real scope of the ecosystem across more than
sixteen languages, helps people find companies working with the tech they know, and gives
the Foundation something concrete to point funders at. Signing up is quick: one person
nominates themselves as the contact, verifies by email, and the company is listed. There's
no further commitment, and registered contacts get a quarterly update on what's happening
across the ecosystem.</p>
<p>If your company works with Elixir or the BEAM, <strong><a href="https://registry.erlef.org">add it to the registry</a></strong>.
It takes a few minutes and it makes the community look as big as it actually is. We'd
especially love to see more Sydney and Australian names on the list.</p>
<p>And if you can do more than a free listing: the EEF runs on membership and sponsorship.
The security work we <a href="https://elixir.sydney/news/securing-the-beam-cna-and-cves">wrote about recently</a>, the
working groups, the infrastructure, all of it is funded by companies that rely on the
BEAM. If that's you, <a href="https://erlef.org/sponsorship">supporting the EEF</a> is a direct way
to give back to the runtime your business is built on.</p> ]]></description>
  </item>

  <item>
    <title>Event: GEM: Elixir Sydney</title>
    <link>https://elixir.sydney/events/gem-elixir-sydney</link>
    <pubDate>Tue, 23 Sep 2025 00:00:00 +1000</pubDate>
    <guid>https://elixir.sydney/events/gem-elixir-sydney</guid>
    <category>event</category>
    <description><![CDATA[ <p>As part of the Global Elixir Meetup week we ran a long awaited in person and online Elixir Sydney meetup in Leichhardt.</p>
<p><strong>Agenda</strong></p>
<ul>
<li>5:30pm, Welcome, housekeeping &amp; introduction</li>
<li>6:00pm, Talks (with a break in between)</li>
</ul> ]]></description>
  </item>

  <item>
    <title>Event: SPA-like UX with MVC-like DX, and Writing the book on Ash</title>
    <link>https://elixir.sydney/events/ashframeworkbook</link>
    <pubDate>Tue, 18 Mar 2025 00:00:00 +1100</pubDate>
    <guid>https://elixir.sydney/events/ashframeworkbook</guid>
    <category>event</category>
    <description><![CDATA[ <p>Hey Elixir community! Welcome to the first Elixir Sydney meetup for 2025 - this is online, so come and join us from wherever you are.</p>
<p>Got an idea for an Elixir talk? We’d love to hear it! Whether you’re an experienced developer with deep insights or just starting out and excited to share what you’ve learned, our meetups are a great place to connect, learn, and grow.</p>
<p>Not ready to give a talk? No worries! Come along to meet fellow Elixir enthusiasts, ask questions, and get guidance from more experienced developers. Everyone is welcome, no matter your skill level!</p>
<p>If you’d like to submit a talk idea, just drop us a message, we’re happy to help you shape it into a great presentation!</p>
<p>Josh and Mike</p> ]]></description>
  </item>

  <item>
    <title>Event: Xmas Bash: GenAI UI with Golden Orb</title>
    <link>https://elixir.sydney/events/xmas-bash-golden-orb</link>
    <pubDate>Wed, 11 Dec 2024 00:00:00 +1100</pubDate>
    <guid>https://elixir.sydney/events/xmas-bash-golden-orb</guid>
    <category>event</category>
    <description><![CDATA[ <p>Our end-of-year Xmas bash! An evening of Elixir, WebAssembly and generative AI to close out 2024.</p> ]]></description>
  </item>

  <item>
    <title>Event: Elixir Sydney October Edition</title>
    <link>https://elixir.sydney/events/october-2024</link>
    <pubDate>Wed, 16 Oct 2024 00:00:00 +1100</pubDate>
    <guid>https://elixir.sydney/events/october-2024</guid>
    <category>event</category>
    <description><![CDATA[ <p>Get ready to dive into Elixir Sydney Meetup! Connect with Elixir enthusiasts and share your passion for this incredible programming language.</p>
<p>Whether you're a seasoned developer or just curious about Elixir, come along for an evening filled with engaging discussions, insightful talks, and maybe even a few surprises.</p> ]]></description>
  </item>

  <item>
    <title>Event: BulmaComponents and The new Set-Theoretic Type System for Elixir</title>
    <link>https://elixir.sydney/events/bulmacomponents</link>
    <pubDate>Wed, 24 Jul 2024 00:00:00 +1000</pubDate>
    <guid>https://elixir.sydney/events/bulmacomponents</guid>
    <category>event</category>
    <description><![CDATA[  ]]></description>
  </item>

  <item>
    <title>Event: Practical AI In Elixir</title>
    <link>https://elixir.sydney/events/practical-ai-in-elixir</link>
    <pubDate>Mon, 24 Jun 2024 00:00:00 +1000</pubDate>
    <guid>https://elixir.sydney/events/practical-ai-in-elixir</guid>
    <category>event</category>
    <description><![CDATA[ <p>Elixir Sydney is back for the June 2024 meetup with an AI themed event! We're in-person and online, so come and join us from wherever you are.</p>
<p>Josh and Mike</p> ]]></description>
  </item>

  <item>
    <title>Event: Elixir Sydney May</title>
    <link>https://elixir.sydney/events/efficient-image-processing-runtime-type-validation-elixieconf-eu-highlights</link>
    <pubDate>Wed, 22 May 2024 00:00:00 +1000</pubDate>
    <guid>https://elixir.sydney/events/efficient-image-processing-runtime-type-validation-elixieconf-eu-highlights</guid>
    <category>event</category>
    <description><![CDATA[ <p>Elixir Sydney is back for the May 2024 meetup! We're in-person and online, so come and join us from wherever you are.</p>
<p>Josh and Mike</p> ]]></description>
  </item>

  <item>
    <title>Event: Elixir Sydney March</title>
    <link>https://elixir.sydney/events/whats-in-a-name-and-easy-peg-parsers</link>
    <pubDate>Wed, 20 Mar 2024 00:00:00 +1100</pubDate>
    <guid>https://elixir.sydney/events/whats-in-a-name-and-easy-peg-parsers</guid>
    <category>event</category>
    <description><![CDATA[ <p>Elixir Sydney is back for the March 2024 meetup! We're in-person and online, so come and join us from wherever you are.</p>
<p>Josh and Mike</p> ]]></description>
  </item>

  <item>
    <title>Event: Elixir Sydney February</title>
    <link>https://elixir.sydney/events/erlang-tracing-and-ash-spark-dsls</link>
    <pubDate>Wed, 21 Feb 2024 00:00:00 +1100</pubDate>
    <guid>https://elixir.sydney/events/erlang-tracing-and-ash-spark-dsls</guid>
    <category>event</category>
    <description><![CDATA[ <p>Welcome to the first Elixir Sydney meetup for 2024! We're in-person and online, so come and join us from wherever you are.</p>
<p>Josh and Mike</p> ]]></description>
  </item>

  <item>
    <title>Event: Special Event - José Valim live and in person!</title>
    <link>https://elixir.sydney/events/live-with-jose-2023</link>
    <pubDate>Wed, 06 Dec 2023 00:00:00 +1100</pubDate>
    <guid>https://elixir.sydney/events/live-with-jose-2023</guid>
    <category>event</category>
    <description><![CDATA[ <p>We're delighted to announce that José Valim will be joining us at the December meetup in person.</p>
<p>Places are limited, so please respond ASAP if you're up for mingling with some fellow Alchemists and José on Wednesday 6th December.</p>
<p>See you there,</p>
<p>Josh and Mike</p> ]]></description>
  </item>

  <item>
    <title>Event: Elixir Sydney, March 2023 (Ash &amp; Nerves)</title>
    <link>https://elixir.sydney/events/march-2023</link>
    <pubDate>Wed, 15 Mar 2023 00:00:00 +1100</pubDate>
    <guid>https://elixir.sydney/events/march-2023</guid>
    <category>event</category>
    <description><![CDATA[ <p>Hybrid meetup at Microsoft Reactor Sydney and online.</p> ]]></description>
  </item>

</channel>
</rss>
