Rework OrbitFour section: ownership story + consolidation win

Torey Heinz committed Feb 22, 2026
commit 9a41968fbd2151af7274ea3839dcf271a6e64e34
Showing 1 changed file with 24 additions and 41 deletions
slides/03-real-world.html +24 -41
@@ @@ -220,12 +220,12 @@ end
</section>
<!-- =============================================
- SECTION 3.2: Domain Registry
+ SECTION 3.2: OrbitFour Domain Registry
============================================= -->
<section class="section-divider" data-transition="zoom">
- <h2>Domain Registry</h2>
- <p>TCP connections to Verisign</p>
+ <h2>OrbitFour Domain Registry</h2>
+ <p>Taking ownership of our core functions</p>
<aside class="notes">
Second system: OrbitFour, our domain registrar. This one communicates directly with Verisign over persistent TCP connections.
@@ @@ -234,15 +234,18 @@ end
<section>
<h2>The Challenge</h2>
- <p>Communicate directly with <strong>Verisign's EPP</strong> (Extensible Provisioning Protocol) to register <code>.com</code> and <code>.net</code> domains.</p>
+ <p>OrbitFour is a <strong>domain registrar</strong> and needs to communicate with registries like Verisign via EPP as our <strong>core function</strong>.</p>
<ul>
- <li class="fragment"><strong>Persistent TCP/TLS connections</strong> to Verisign's servers</li>
- <li class="fragment"><strong>Connection pooling</strong> &mdash; maintain authenticated sessions, reuse efficiently</li>
- <li class="fragment"><strong>Automatic recovery</strong> &mdash; reconnect without manual intervention</li>
+ <li class="fragment">Originally an <strong>open-source PHP EPP library</strong> was used.</li>
+ <li class="fragment">Open-source is great for non-core features.</li>
+ <li class="fragment">We needed to <strong>own</strong> the protocol layer: persistent TCP/TLS, connection pooling, automatic recovery</li>
</ul>
+ <p class="fragment muted small" style="margin-top: 0.8em;">
+ Elixir made this possible &mdash; the BEAM was literally built for managing network connections.
+ </p>
<aside class="notes">
- OrbitFour needs persistent TCP/TLS connections to Verisign. The protocol is XML over binary framing — a 4-byte length header followed by XML. We need connection pooling for authenticated sessions and automatic recovery when connections drop.
+ OrbitFour is a domain registrar. Talking to Verisign over EPP is the single most important thing the app does. Originally we relied on an open-source PHP EPP library — it worked, but we didn't fully understand it, and when things broke we were at the mercy of upstream. Using open-source for non-core features is smart — but when the feature IS your product, you need to own it. Elixir made this realistic. The BEAM was designed for exactly this kind of work: persistent TCP connections, connection pooling, automatic recovery. We could write our own EPP client and actually understand every line.
</aside>
</section>
@@ @@ -322,42 +325,22 @@ end
</section>
<section>
- <h2>Health Checks</h2>
- <p class="muted small">Pattern matching handles every possible socket state</p>
-
- <pre><code class="language-elixir" data-trim>
- # No socket — unhealthy
- defp connection_healthy?(%Connection{socket: nil}), do: false
-
- # Not logged in — unhealthy
- defp connection_healthy?(%Connection{logged_in: false}), do: false
-
- # SSL socket — check with the SSL module
- defp connection_healthy?(%Connection{socket: {:ssl, socket}}) do
- case :ssl.connection_information(socket) do
- {:ok, _info} -> true
- _error -> false
- end
- end
-
- # TCP socket — check with the inet module
- defp connection_healthy?(%Connection{socket: {:tcp, socket}}) do
- case :inet.peername(socket) do
- {:ok, _} -> true
- {:error, _} -> false
- end
- end
-
- # Unknown socket type — unhealthy
- defp connection_healthy?(_conn), do: false
- </code></pre>
-
- <p class="fragment" style="font-size: 0.8em;">
- <strong>Five function clauses, zero if/else.</strong> Each handles exactly one case.
+ <h2>The Real Win</h2>
+ <p class="muted small">OrbitFour replaced <strong>five separate services</strong> with one Elixir app</p>
+ <ul>
+ <li class="fragment"><strong>PHP EPP service</strong> &mdash; domain registration</li>
+ <li class="fragment"><strong>Java RDAP service</strong> &mdash; domain lookups</li>
+ <li class="fragment"><strong>PHP WHOIS service</strong> &mdash; WHOIS queries</li>
+ <li class="fragment"><strong>Craft CMS</strong> &mdash; marketing site</li>
+ <li class="fragment"><strong>Nuxt/Vue.js</strong> &mdash; customer portal</li>
+ </ul>
+ <p class="fragment" style="font-size: 0.8em; margin-top: 0.8em; color: #555;">
+ These services took <strong>years</strong> to build originally.<br/>
+ <span class="fragment">With Elixir + Claude Code, we replaced them all in <strong>under six months</strong>.</span>
</p>
<aside class="notes">
- Look at how pattern matching handles health checks. Five function clauses, zero if/else statements. No socket? Unhealthy. Not logged in? Unhealthy. SSL socket? Check with the SSL module. TCP socket? Check with inet. Unknown type? Unhealthy. Each clause handles exactly one case. The compiler ensures you haven't missed anything.
+ Here's the real story with OrbitFour. The original system was five separate services across three languages and two frameworks. A PHP EPP service for domain registration, a Java RDAP service for lookups, a PHP WHOIS service, a Craft CMS marketing site, and a Nuxt/Vue.js customer portal. These took years to build and maintain. With Elixir and Claude Code, we consolidated everything into a single Phoenix app in under six months. One codebase, one deployment, one supervision tree. That's the power of the platform.
</aside>
</section>