<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="preload" as="image" href="https://bytes.dev/images/bytes-banner-rounded.png">
<link rel="preload" as="image" href="https://bytes.dev/images/content/eyes.png">
<link rel="preload" as="image" href="https://bytes.dev/images/content/alfalfa-love-letter.png">
<link rel="preload" as="image" href="https://bytes.dev/images/fb-share-icon.png">
<link rel="preload" as="image" href="https://bytes.dev/images/li-share-icon.png">
<link rel="preload" as="image" href="https://bytes.dev/images/tw-share-icon.png">
<link rel="preload" as="image" href="https://bytes.dev/images/em-share-icon.png">
<link rel="preload" as="image" href="https://bytes.dev/images/content/convex-logo.png">
<link rel="preload" as="image" href="https://bytes.dev/images/content/jean-ralphio-flush.jpg">
<link rel="preload" as="image" href="https://bytes.dev/images/content/spot-the-bug.png">
<link rel="preload" as="image" href="https://bytes.dev/images/content/cool-bits.png">
<link rel="preload" as="image" href="https://bytes.dev/images/bytes-icon.png">
<title>Bytes: A love letter to Durable Objects</title>
<meta name="color-scheme" content="light dark">
<meta name="supported-color-schemes" content="light dark">
<link href="https://fonts.googleapis.com/css2?family=Fira+Mono&family=Outfit:wght@400;500;700;900&family=Paytone+One" rel="stylesheet">
<style>@media (prefers-color-scheme: dark) {
.email-wrapper {
color: #F9F4DA !important;
background-color: #0F0D0E !important;
}
hr {
border-color: #262422 !important;
}
mark {
background-color: #231F20 !important;
color: #F9F4DA !important;
}
pre {
background-color: #231F20 !important;
border: 1px solid #231F20 !important;
color: #F9F4DA !important;
}
.bg-alt {
background-color: #231F20 !important;
}
.unsubscribe-link {
color: #504C48 !important;
}
.token.punctuation {
color: #f9f4da !important;
}
}
@media screen and (min-width: 600px) {
.mobile-break {
display: none;
}
}</style>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<table class="email-wrapper" border="0" cellspacing="0" width="100%" style="background-color: #FFF; border-collapse: collapse; color: #231F20; font-family: Outfit, sans-serif; font-size: 18px; width: 100%;"><tbody><tr>
<td style="border-collapse: collapse !important; word-break: normal;"></td>
<td width="600px" style="border-collapse: collapse !important; width: 600px; word-break: normal;"><div style="max-width:600px;padding-top:80px">
<div style="text-align:center"><img width="600" style="max-width: 100%; padding-bottom: 40px;" src="https://bytes.dev/images/bytes-banner-rounded.png" alt="Bytes"></div>
<p style="font-family: Outfit, sans-serif; font-size: 19px; line-height: 1.5; padding-left: 24px; padding-right: 24px;"><strong style="font-weight: 600;">Today’s issue:</strong> A Nobel prize for words of affirmation, the reason behind my rapidly receding hairline, and finding out what programming language LLMs like the best.</p>
<p style="font-family: Outfit, sans-serif; font-size: 19px; line-height: 1.5; padding-left: 24px; padding-right: 24px;">Welcome to <a href="https://c5e21242.click.convertkit-mail.com/lmu4943dvvtmhnxpnlgc6h8ddnpxkugh2xvw/e0hph0u7837rl5a8h2/aHR0cHM6Ly9ieXRlcy5kZXYvYXJjaGl2ZXMvNTEx" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1877324604">#511</a>.</p>
<hr style="border: 0; border-bottom: 5px solid; border-color: #f5f5f5; margin-bottom: 100px; margin-top: 100px;">
<div style="text-align:center;margin-bottom:36px">
<img width="80" src="https://bytes.dev/images/content/eyes.png" alt="Eyeballs logo" style="max-width: 100%;"><h2 style="font-family: Paytone One, sans-serif; font-size: 28px; margin-top: 10px; text-transform: uppercase;">The Main Thing</h2>
</div>
<div class="bg-alt" style="background-color: #f5f5f5; border-radius: 16px; margin-bottom: 40px; max-width: 100%; padding: 24px; padding-bottom: 12px;">
<img src="https://bytes.dev/images/content/alfalfa-love-letter.png" alt="Alfalfa writing a love letter on a notepad in a wooden clubhouse" width="600" style="border-radius: 5px; max-width: 100%;"><p style="font-family: Outfit, sans-serif; font-size: 17px; font-style: italic; line-height: 1; margin: 0; padding-bottom: 4px; padding-left: 24px; padding-right: 24px; padding-top: 10px; text-align: center;">“Dear Kenton (and Matt), please buy Deno” - Ry<!-- --> </p>
</div>
<h3 style="font-size: 24px; margin-bottom: 0; padding-left: 24px; padding-right: 24px;">A love letter to Durable Objects</h3>
<p style="font-family: Outfit, sans-serif; font-size: 19px; line-height: 1.5; padding-left: 24px; padding-right: 24px;">It’s been 6 years since Cloudflare released Durable Objects, and I still have no idea wtf they are (sorry Sunil <span role="img" aria-label="smiling face with tear">🥲</span>). But then Ryan Dahl released an <a href="https://c5e21242.click.convertkit-mail.com/lmu4943dvvtmhnxpnlgc6h8ddnpxkugh2xvw/7qh7h2u9r29n6dazh6/aHR0cHM6Ly9jZWxsZC5kZXYv" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1877324605">open source, self-hosted version of DO called <code style="font-size: 15px;">celld</code></a> this past week, and as much as I wanted to just pretend to be excited and continue to be blissfully unaware, I have a newsletter to write.</p>
<p style="font-family: Outfit, sans-serif; font-size: 19px; line-height: 1.5; padding-left: 24px; padding-right: 24px;"><em>So… what’s a durable object?</em></p>
<p style="font-family: Outfit, sans-serif; font-size: 19px; line-height: 1.5; padding-left: 24px; padding-right: 24px;">The internet, ok developers on X, like to throw around the term “actor model” (not helpful). At its core, a durable object is a worker process, SQLite, and replicated off-machine storage (like S3 or R2). Writes aren’t confirmed until replicated, so if the process dies for any reason, the off-machine copy restores the state meaning the worker can stop, start, or move without losing data.</p>
<p style="font-family: Outfit, sans-serif; font-size: 19px; line-height: 1.5; padding-left: 24px; padding-right: 24px;">Celld uses the same API as Cloudflare’s durable objects and even works with <code style="font-size: 15px;">wrangler</code>, but the components are designed to work on any cloud platform.</p>
<p style="font-family: Outfit, sans-serif; font-size: 19px; line-height: 1.5; padding-left: 24px; padding-right: 24px;"><em>Here’s how it works:</em></p>
<ul>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 19px; line-height: 1.5;"><strong style="font-weight: 600;">Virtual Machines:</strong> A virtual machine can contain many cells (durable objects) and is the source of the cell’s compute. Because the project is self-hosted, the type of compute you use will depend on how reliable and fault tolerant your project needs to be.</p>
</li>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 19px; line-height: 1.5;"><strong style="font-weight: 600;">Cells:</strong> Each cell living on the virtual machine has its own SQLite database and worker process. This combination provides the stateful compute that this pattern is known for.</p>
</li>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 19px; line-height: 1.5;"><strong style="font-weight: 600;">Replication:</strong> When a cell update’s its state, the write-ahead log (WAL) is sent to object storage on a different machine. For self-hosted projects this could be S3, R2 or some other blob storage. If a worker crashes, the state can be restored from the WAL.</p>
</li>
</ul>
<p style="font-family: Outfit, sans-serif; font-size: 19px; line-height: 1.5; padding-left: 24px; padding-right: 24px;"><strong style="font-weight: 600;">Bottom Line:</strong> Ry said this project is a <a href="https://c5e21242.click.convertkit-mail.com/lmu4943dvvtmhnxpnlgc6h8ddnpxkugh2xvw/owhkhwuw2mwq6pivhr/aHR0cHM6Ly9jZWxsZC5kZXYvIzp-OnRleHQ9Y2VsbGQlMjBpcyUyMGElMjBsb3ZlJTIwbGV0dGVyJTIwdG8lMjB0aGVpciUyMGlkZWE=" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1877324606">“love letter”</a> to Kenton Varda’s idea, but reading between the lines, is “love letter” synonymous with “please acquire my business <span role="img" aria-label="two hearts">💕</span>”?</p>
<table width="100%" cellpadding="0" cellspacing="0" border="0" style="border-collapse: collapse; margin-top: 40px; text-align: center;"><tbody><tr><td style="border-collapse: collapse !important; padding-top: 12px; word-break: normal;">
<a href="https://c5e21242.click.convertkit-mail.com/lmu4943dvvtmhnxpnlgc6h8ddnpxkugh2xvw/z2hgh7ueq2elk6sph0/aHR0cHM6Ly9mYWNlYm9vay5jb20vc2hhcmVyL3NoYXJlci5waHA_dT1odHRwcyUzQSUyRiUyRmJ5dGVzLmRldiUyRmFyY2hpdmVzJTJGNTEx" rel="noopener" style="color: #12b5e5; font-weight: 600; padding-left: 5px; text-decoration: none;" target="_blank" url-id="1877324607"><img alt="" style="display: inline-block; max-width: 100%; width: 32px;" width="25" src="https://bytes.dev/images/fb-share-icon.png"></a><a href="https://c5e21242.click.convertkit-mail.com/lmu4943dvvtmhnxpnlgc6h8ddnpxkugh2xvw/p8hehqu4nw4q2oiqh3/aHR0cHM6Ly93d3cubGlua2VkaW4uY29tL3NoYXJpbmcvc2hhcmUtb2Zmc2l0ZS8_dXJsPWh0dHBzJTNBJTJGJTJGYnl0ZXMuZGV2JTJGYXJjaGl2ZXMlMkY1MTE=" rel="noopener" style="color: #12b5e5; font-weight: 600; padding-left: 5px; text-decoration: none;" target="_blank" url-id="1877324608"><img alt="" style="display: inline-block; max-width: 100%; width: 32px;" width="25" src="https://bytes.dev/images/li-share-icon.png"></a><a href="https://c5e21242.click.convertkit-mail.com/lmu4943dvvtmhnxpnlgc6h8ddnpxkugh2xvw/x0hph3ue5veqp6b5hl/aHR0cHM6Ly90d2l0dGVyLmNvbS9pbnRlbnQvdHdlZXQvP3RleHQ9UnlhbiUyMERhaGwlRTIlODAlOTlzJTIwY2VsbGQlMjBwcm9qZWN0JTIwaXMlMjBhJTIwbG92ZSUyMGxldHRlciUyMHRvJTIwRHVyYWJsZSUyME9iamVjdHMlRTIlODAlOTRhbmQlMjBhJTIwdXNlZnVsJTIwd2F5JTIwdG8lMjB1bmRlcnN0YW5kJTIwaG93JTIwdGhleSUyMHdvcmsuJnVybD1odHRwcyUzQSUyRiUyRmJ5dGVzLmRldiUyRmFyY2hpdmVzJTJGNTEx" rel="noopener" style="color: #12b5e5; font-weight: 600; padding-left: 5px; text-decoration: none;" target="_blank" url-id="1877324609"><img alt="" style="display: inline-block; max-width: 100%; width: 32px;" width="25" src="https://bytes.dev/images/tw-share-icon.png"></a><a href="https://c5e21242.click.convertkit-mail.com/lmu4943dvvtmhnxpnlgc6h8ddnpxkugh2xvw/6qhehoulm8l958hohk/bWFpbHRvOj9zdWJqZWN0PVlvdSUyMGxpa2UlMjBjb3JuYnJlYWQlM0YmYm9keT1UaG91Z2h0JTIweW91JTI3ZCUyMGxvdmUlMjB0aGlzJTIwd2VlayUyN3MlMjBCeXRlcyUwQS0tLSUwQVJ5YW4lMjBEYWhsJUUyJTgwJTk5cyUyMGNlbGxkJTIwcHJvamVjdCUyMGlzJTIwYSUyMGxvdmUlMjBsZXR0ZXIlMjB0byUyMER1cmFibGUlMjBPYmplY3RzJUUyJTgwJTk0YW5kJTIwYSUyMHVzZWZ1bCUyMHdheSUyMHRvJTIwdW5kZXJzdGFuZCUyMGhvdyUyMHRoZXklMjB3b3JrLiUwQWh0dHBzJTNBJTJGJTJGYnl0ZXMuZGV2JTJGYXJjaGl2ZXMlMkY1MTE=" rel="noopener" style="color: #12b5e5; font-weight: 600; padding-left: 5px; text-decoration: none;" target="_blank" url-id="1877324610"><img alt="" style="display: inline-block; max-width: 100%; width: 32px;" width="25" src="https://bytes.dev/images/em-share-icon.png"></a>
</td></tr></tbody></table>
<hr style="border: 0; border-bottom: 5px solid; border-color: #f5f5f5; margin-bottom: 100px; margin-top: 100px;">
<div style="text-align:center;margin-bottom:36px">
<img width="150" src="https://bytes.dev/images/content/convex-logo.png" alt="Convex logo" style="max-width: 100%;"><h2 style="font-family: Paytone One, sans-serif; font-size: 28px; margin-top: 10px; text-transform: uppercase;"><span>Our Friends <br class="mobile-break">(With Benefits)</span></h2>
</div>
<div class="bg-alt" style="background-color: #f5f5f5; border-radius: 16px; margin-bottom: 40px; max-width: 100%; padding: 24px; padding-bottom: 12px;">
<img src="https://bytes.dev/images/content/jean-ralphio-flush.jpg" alt="Jean-Ralphio holding a hand beside his mouth as if calling out" width="600" style="border-radius: 5px; max-width: 100%;"><p style="font-family: Outfit, sans-serif; font-size: 17px; font-style: italic; line-height: 1; margin: 0; padding-bottom: 4px; padding-left: 24px; padding-right: 24px; padding-top: 10px; text-align: center;">When you just closed your $57M Series B<!-- --> </p>
</div>
<h3 style="font-size: 24px; margin-bottom: 0; padding-left: 24px; padding-right: 24px;"><a href="https://c5e21242.click.convertkit-mail.com/lmu4943dvvtmhnxpnlgc6h8ddnpxkugh2xvw/kkhmh2unk0nx5kslh7/VE9ET19DT05WRVhfQ0FNUEFJR05fVVJM" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1877324611">Convex raises its Series B</a></h3>
<p style="font-family: Outfit, sans-serif; font-size: 19px; line-height: 1.5; padding-left: 24px; padding-right: 24px;">Despite the fact that Convex has millions of instances running in production, enterprise plans, and EU data residency, you still might have been waiting to try the product because you’re not sure it’s going to be around in a few years.</p>
<p style="font-family: Outfit, sans-serif; font-size: 19px; line-height: 1.5; padding-left: 24px; padding-right: 24px;">If that’s the case, then Convex’s announcement that it raised a $57M Series B should be great news. Not only is the company in it for the long haul, but it’s also building the foundation for the next era of software.</p>
<p style="font-family: Outfit, sans-serif; font-size: 19px; line-height: 1.5; padding-left: 24px; padding-right: 24px;">If you’re interested in what this looks like, you should check out <a href="https://c5e21242.click.convertkit-mail.com/lmu4943dvvtmhnxpnlgc6h8ddnpxkugh2xvw/58hvh8ugrdg6n6t6h4/VE9ET19BQlNUUkFDVF9FVkVOVF9VUkw=" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1877324612">Abstract</a>, a one-day conference in San Francisco on Sept. 2 for humans who care about the art of software and design.</p>
<p style="font-family: Outfit, sans-serif; font-size: 19px; line-height: 1.5; padding-left: 24px; padding-right: 24px;">In the meantime, <a href="https://c5e21242.click.convertkit-mail.com/lmu4943dvvtmhnxpnlgc6h8ddnpxkugh2xvw/kkhmh2unk0nx5kslh7/VE9ET19DT05WRVhfQ0FNUEFJR05fVVJM" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1877324611">read more about Convex, its raise, and why it’s the best backend for your agent</a>.</p>
<hr style="border: 0; border-bottom: 5px solid; border-color: #f5f5f5; margin-bottom: 100px; margin-top: 100px;">
<div style="text-align:center;margin-bottom:36px">
<img width="110" src="https://bytes.dev/images/content/spot-the-bug.png" alt="Spot the Bug logo" style="max-width: 100%;"><h2 style="font-family: Paytone One, sans-serif; font-size: 28px; margin-top: 10px; text-transform: uppercase;">Spot the Bug</h2>
<div class="section-presenter" style="margin-bottom:50px;margin-top:15px">
<h4 style="font-size: 20px; margin-bottom: 0; padding-left: 24px; padding-right: 24px;">Presented by <a href="https://c5e21242.click.convertkit-mail.com/lmu4943dvvtmhnxpnlgc6h8ddnpxkugh2xvw/25h2h9u3kp3m8qs3h4/aHR0cHM6Ly9vcmtlcy5pby93ZWJpbmFycy9mcm9tLXByb21wdC10by1wcm9kdWN0aW9uLWJ1aWxkaW5nLWJ1c2luZXNzLXdvcmtmbG93cy13aXRoLWFpLWNvZGluZy1hc3Npc3RhbnRzLWFuZC1jb25kdWN0b3Itc2tpbGxzP3V0bV9jYW1wYWlnbj1CeXRlcy5kZXYmdXRtX3NvdXJjZT1OZXdzbGV0dGVyJnV0bV9tZWRpdW09cmVmZXJyYWw=" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1877324613">Orkes</a>
</h4>
<p style="font-family: Outfit, sans-serif; font-size: 18px; line-height: 1.5; margin-top: 5px; padding-left: 24px; padding-right: 24px;"><em>They’re hosting a live workshop on <a href="https://c5e21242.click.convertkit-mail.com/lmu4943dvvtmhnxpnlgc6h8ddnpxkugh2xvw/25h2h9u3kp3m8qs3h4/aHR0cHM6Ly9vcmtlcy5pby93ZWJpbmFycy9mcm9tLXByb21wdC10by1wcm9kdWN0aW9uLWJ1aWxkaW5nLWJ1c2luZXNzLXdvcmtmbG93cy13aXRoLWFpLWNvZGluZy1hc3Npc3RhbnRzLWFuZC1jb25kdWN0b3Itc2tpbGxzP3V0bV9jYW1wYWlnbj1CeXRlcy5kZXYmdXRtX3NvdXJjZT1OZXdzbGV0dGVyJnV0bV9tZWRpdW09cmVmZXJyYWw=" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1877324613">How to build reliable workflows and agents</a> using AI coding assistants and an open-source orchestration platform.</em></p>
</div>
</div>
<pre class="language-js" style="-moz-hyphens: none; -moz-tab-size: 2; -ms-hyphens: none; -o-tab-size: 2; -webkit-hyphens: none; background-color: #f9f9f9; border: 1px solid #f9f9f9; border-radius: 8px; color: #c0c5ce; direction: ltr; font-family: 'Fira Mono', 'SFMono-Regular', Consolas, 'Liberation Mono', Menlo, Courier, monospace; font-size: 15px; hyphens: none; line-height: 1.5; overflow: auto; padding: 24px; tab-size: 2; text-align: left; white-space: pre; word-break: normal; word-spacing: normal;"><code class="language-js" style="-moz-hyphens: none; -moz-tab-size: 2; -ms-hyphens: none; -o-tab-size: 2; -webkit-hyphens: none; color: #c0c5ce; direction: ltr; font-family: 'Fira Mono', 'SFMono-Regular', Consolas, 'Liberation Mono', Menlo, Courier, monospace; font-size: 15px; hyphens: none; line-height: 1.5; tab-size: 2; text-align: left; white-space: pre; word-break: normal; word-spacing: normal;"><span class="token keyword" style="color: #f38ba3; font-size: 15px;">function</span> <span class="token function" style="color: #9d7dce; font-size: 15px;">once</span><span class="token punctuation" style="color: #231F20; font-size: 15px;">(</span><span class="token parameter" style="color: #f38ba3; font-size: 15px;">fn</span><span class="token punctuation" style="color: #231F20; font-size: 15px;">)</span> <span class="token punctuation" style="color: #231F20; font-size: 15px;">{</span>
<span class="token keyword" style="color: #f38ba3; font-size: 15px;">let</span> called <span class="token operator" style="color: #12b5e5; font-size: 15px;">=</span> <span class="token boolean" style="color: #9d7dce; font-size: 15px;">false</span><span class="token punctuation" style="color: #231F20; font-size: 15px;">;</span>
<span class="token keyword" style="color: #f38ba3; font-size: 15px;">let</span> result<span class="token punctuation" style="color: #231F20; font-size: 15px;">;</span>
<span class="token keyword" style="color: #f38ba3; font-size: 15px;">return</span> <span class="token punctuation" style="color: #231F20; font-size: 15px;">(</span><span class="token parameter" style="color: #f38ba3; font-size: 15px;"><span class="token operator" style="color: #12b5e5; font-size: 15px;">...</span>args</span><span class="token punctuation" style="color: #231F20; font-size: 15px;">)</span> <span class="token operator" style="color: #12b5e5; font-size: 15px;">=></span> <span class="token punctuation" style="color: #231F20; font-size: 15px;">{</span>
<span class="token keyword" style="color: #f38ba3; font-size: 15px;">if</span> <span class="token punctuation" style="color: #231F20; font-size: 15px;">(</span><span class="token operator" style="color: #12b5e5; font-size: 15px;">!</span>called<span class="token punctuation" style="color: #231F20; font-size: 15px;">)</span> <span class="token punctuation" style="color: #231F20; font-size: 15px;">{</span>
called <span class="token operator" style="color: #12b5e5; font-size: 15px;">=</span> <span class="token boolean" style="color: #9d7dce; font-size: 15px;">true</span><span class="token punctuation" style="color: #231F20; font-size: 15px;">;</span>
result <span class="token operator" style="color: #12b5e5; font-size: 15px;">=</span> <span class="token function" style="color: #9d7dce; font-size: 15px;">fn</span><span class="token punctuation" style="color: #231F20; font-size: 15px;">(</span><span class="token operator" style="color: #12b5e5; font-size: 15px;">...</span>args<span class="token punctuation" style="color: #231F20; font-size: 15px;">)</span><span class="token punctuation" style="color: #231F20; font-size: 15px;">;</span>
<span class="token punctuation" style="color: #231F20; font-size: 15px;">}</span>
<span class="token keyword" style="color: #f38ba3; font-size: 15px;">return</span> result<span class="token punctuation" style="color: #231F20; font-size: 15px;">;</span>
<span class="token punctuation" style="color: #231F20; font-size: 15px;">}</span><span class="token punctuation" style="color: #231F20; font-size: 15px;">;</span>
<span class="token punctuation" style="color: #231F20; font-size: 15px;">}</span>
<span class="token keyword" style="color: #f38ba3; font-size: 15px;">let</span> attempts <span class="token operator" style="color: #12b5e5; font-size: 15px;">=</span> <span class="token number" style="color: #fcba28; font-size: 15px;">0</span><span class="token punctuation" style="color: #231F20; font-size: 15px;">;</span>
<span class="token keyword" style="color: #f38ba3; font-size: 15px;">const</span> connect <span class="token operator" style="color: #12b5e5; font-size: 15px;">=</span> <span class="token function" style="color: #9d7dce; font-size: 15px;">once</span><span class="token punctuation" style="color: #231F20; font-size: 15px;">(</span><span class="token punctuation" style="color: #231F20; font-size: 15px;">(</span><span class="token punctuation" style="color: #231F20; font-size: 15px;">)</span> <span class="token operator" style="color: #12b5e5; font-size: 15px;">=></span> <span class="token punctuation" style="color: #231F20; font-size: 15px;">{</span>
attempts <span class="token operator" style="color: #12b5e5; font-size: 15px;">+=</span> <span class="token number" style="color: #fcba28; font-size: 15px;">1</span><span class="token punctuation" style="color: #231F20; font-size: 15px;">;</span>
<span class="token keyword" style="color: #f38ba3; font-size: 15px;">if</span> <span class="token punctuation" style="color: #231F20; font-size: 15px;">(</span>attempts <span class="token operator" style="color: #12b5e5; font-size: 15px;">===</span> <span class="token number" style="color: #fcba28; font-size: 15px;">1</span><span class="token punctuation" style="color: #231F20; font-size: 15px;">)</span> <span class="token punctuation" style="color: #231F20; font-size: 15px;">{</span>
<span class="token keyword" style="color: #f38ba3; font-size: 15px;">throw</span> <span class="token keyword" style="color: #f38ba3; font-size: 15px;">new</span> <span class="token class-name" style="color: #12b5e5; font-size: 15px;">Error</span><span class="token punctuation" style="color: #231F20; font-size: 15px;">(</span><span class="token string" style="color: #f99157; font-size: 15px;">"Connection failed"</span><span class="token punctuation" style="color: #231F20; font-size: 15px;">)</span><span class="token punctuation" style="color: #231F20; font-size: 15px;">;</span>
<span class="token punctuation" style="color: #231F20; font-size: 15px;">}</span>
<span class="token keyword" style="color: #f38ba3; font-size: 15px;">return</span> <span class="token string" style="color: #f99157; font-size: 15px;">"Connected"</span><span class="token punctuation" style="color: #231F20; font-size: 15px;">;</span>
<span class="token punctuation" style="color: #231F20; font-size: 15px;">}</span><span class="token punctuation" style="color: #231F20; font-size: 15px;">)</span><span class="token punctuation" style="color: #231F20; font-size: 15px;">;</span>
<span class="token keyword" style="color: #f38ba3; font-size: 15px;">try</span> <span class="token punctuation" style="color: #231F20; font-size: 15px;">{</span>
<span class="token function" style="color: #9d7dce; font-size: 15px;">connect</span><span class="token punctuation" style="color: #231F20; font-size: 15px;">(</span><span class="token punctuation" style="color: #231F20; font-size: 15px;">)</span><span class="token punctuation" style="color: #231F20; font-size: 15px;">;</span>
<span class="token punctuation" style="color: #231F20; font-size: 15px;">}</span> <span class="token keyword" style="color: #f38ba3; font-size: 15px;">catch</span> <span class="token punctuation" style="color: #231F20; font-size: 15px;">(</span>error<span class="token punctuation" style="color: #231F20; font-size: 15px;">)</span> <span class="token punctuation" style="color: #231F20; font-size: 15px;">{</span>
console<span class="token punctuation" style="color: #231F20; font-size: 15px;">.</span><span class="token function" style="color: #9d7dce; font-size: 15px;">log</span><span class="token punctuation" style="color: #231F20; font-size: 15px;">(</span>error<span class="token punctuation" style="color: #231F20; font-size: 15px;">.</span>message<span class="token punctuation" style="color: #231F20; font-size: 15px;">)</span><span class="token punctuation" style="color: #231F20; font-size: 15px;">;</span>
<span class="token punctuation" style="color: #231F20; font-size: 15px;">}</span>
console<span class="token punctuation" style="color: #231F20; font-size: 15px;">.</span><span class="token function" style="color: #9d7dce; font-size: 15px;">log</span><span class="token punctuation" style="color: #231F20; font-size: 15px;">(</span><span class="token function" style="color: #9d7dce; font-size: 15px;">connect</span><span class="token punctuation" style="color: #231F20; font-size: 15px;">(</span><span class="token punctuation" style="color: #231F20; font-size: 15px;">)</span><span class="token punctuation" style="color: #231F20; font-size: 15px;">)</span><span class="token punctuation" style="color: #231F20; font-size: 15px;">;</span>
</code></pre>
<hr style="border: 0; border-bottom: 5px solid; border-color: #f5f5f5; margin-bottom: 100px; margin-top: 100px;">
<div style="text-align:center;margin-bottom:36px">
<img width="110" src="https://bytes.dev/images/content/cool-bits.png" alt="Cool Bits logo" style="max-width: 100%;"><h2 style="font-family: Paytone One, sans-serif; font-size: 28px; margin-top: 10px; text-transform: uppercase;">Cool Bits</h2>
</div>
<ol>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 19px; line-height: 1.5;">Juri wrote about <a href="https://c5e21242.click.convertkit-mail.com/lmu4943dvvtmhnxpnlgc6h8ddnpxkugh2xvw/qvh8h8ud9mdk43tlhk/aHR0cHM6Ly9ueC5kZXYvYmxvZy9hcmNoaXRlY3RpbmctYW5ndWxhci1hcHBsaWNhdGlvbnM=" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1877324614">building maintainable Angular apps at scale</a>. We’ll never understand the pain that went into gaining this knowledge.</p>
</li>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 19px; line-height: 1.5;">Philip Zeyliger officially <a href="https://c5e21242.click.convertkit-mail.com/lmu4943dvvtmhnxpnlgc6h8ddnpxkugh2xvw/g3hnhwum48mqlvtrh9/aHR0cHM6Ly9ibG9nLmV4ZS5kZXYvdGhlLWVuZC1vZi1uby1jb2Rl" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1877324615">declared the end of the “no-code” era of software</a>. Pouring one out for the Airtable / Zapier stack I ran my business on for the last decade.</p>
</li>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 19px; line-height: 1.5;">Your app is slower on a mid-range Android in a parking garage than it is on your desk, and <a href="https://c5e21242.click.convertkit-mail.com/lmu4943dvvtmhnxpnlgc6h8ddnpxkugh2xvw/9qhzhdudovd5xks9h3/aHR0cHM6Ly9kMmJuMmswNC5uYTEuaHMtc2FsZXMtZW5nYWdlLmNvbS9DdGMvTDArMjMyODQvZDJCTjJrMDQvSmtNMi02cWNXNk4xdkhZNmxaM2tNVzhnQ2d6NzJaZE43WFczUnNnbi0zbkNXNHBXMzRuVnBLNk1TWXlDVzFjRjk2aDVReWpSd1c3Y3RsOWQ3SG41Q3RXMVNzVmJDNGdSOGhYVzZuX1E3MTFtdnZoTVcyRHlZd2M3X3RNMUZWcU1CZFM1cDFtZnlOMTF5ZlBqZlIwTmxWN3h4MGg2N0dxWUxXMTFNSGMzNXJKcWZaVzhGZjNWNTlqUjlfN1Z2RDZZbDh4WEdaclcyejVYTFg4d1h5ODhXMnR2OUx4MVYyQ3pDVzFSTHpzOTZIRndMN1ZsdkhwRDd6UDZ2UFc4R0hseWg5ZkMwLXZXMld2RjFTN1RYejFSVzJoUHhyNTdLeDFXSlc1czVILVExSDhXUl9mMnlxSnJsMDQ=" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1877324616">Observe</a> is Expo’s way of showing you exactly how much, and which release caused the problems. [sponsored]</p>
</li>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 19px; line-height: 1.5;">Tyler Sticka wrote about <a href="https://c5e21242.click.convertkit-mail.com/lmu4943dvvtmhnxpnlgc6h8ddnpxkugh2xvw/3ohphdu3e53prourhn/aHR0cHM6Ly90eWxlcnN0aWNrYS5jb20vam91cm5hbC9pbXByb3ZlZC1jc3MtdGV4dC1zdHJva2Uv" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1877324617">the new and improved <code style="font-size: 15px;">text-stroke</code> CSS property</a>. I am equal parts excited and scared for what Lynn Fisher is going to do with this.</p>
</li>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 19px; line-height: 1.5;">Emil Kowalski argues that <a href="https://c5e21242.click.convertkit-mail.com/lmu4943dvvtmhnxpnlgc6h8ddnpxkugh2xvw/n2hohquvz9v7gxc6hg/aHR0cHM6Ly9lbWlsa293YWwuc2tpL3VpL2ZyaWN0aW9uLWFzLWEtZmVhdHVyZQ==" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1877324618">the design process needs more friction</a>. Feels a little too similar to Trojan’s ribbed condom campaign, but I’ll take his word for it.</p>
</li>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 19px; line-height: 1.5;">Senko Rašić <a href="https://c5e21242.click.convertkit-mail.com/lmu4943dvvtmhnxpnlgc6h8ddnpxkugh2xvw/48hvh7um4dmx99bxh7/aHR0cHM6Ly9ibG9nLnNlbmtvLm5ldC9jb2RlLXdhcy1uZXZlci10aGUtaGFyZC1wYXJ0LWlzLWFuLWluc3VsdC10by1hbGwtcHJvZ3JhbW1lcnM=" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1877324619">took offense to people saying “code was never the hard part”</a>. I too, am offended because of coding was never the hard part, why did a trailing space in wp-config.php accelerate my hair loss?</p>
</li>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 19px; line-height: 1.5;">Only idiots write manual tests – modern engineering teams like Notion, Dropbox and LaunchDarkly use Meticulous to maintain e2e UI tests that <a href="https://c5e21242.click.convertkit-mail.com/lmu4943dvvtmhnxpnlgc6h8ddnpxkugh2xvw/wnh2h6uqe2q04vh7hx/aHR0cHM6Ly93d3cubWV0aWN1bG91cy5haS8_dXRtX3NvdXJjZT1ieXRlcyZ1dG1fbWVkaXVtPW5ld3NsZXR0ZXImdXRtX2NhbXBhaWduPTI2cTMmdXRtX2NvbnRlbnQ9c2Vjb25kYXJ5" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1877324620">cover every edge case</a> of your web app. [sponsored]</p>
</li>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 19px; line-height: 1.5;">Dan Luu did some research to figure out <a href="https://c5e21242.click.convertkit-mail.com/lmu4943dvvtmhnxpnlgc6h8ddnpxkugh2xvw/reh8h9umglm67eu2h6/aHR0cHM6Ly9kYW5sdXUuY29tL3BsLXRva2Vucy8=" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1877324621">the best programming language for LLMs</a>.</p>
</li>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 19px; line-height: 1.5;">Fresh off getting acquired by Qualcomm, Chris Lattner and co <a href="https://c5e21242.click.convertkit-mail.com/lmu4943dvvtmhnxpnlgc6h8ddnpxkugh2xvw/08hwhgu2362lx7slh5/aHR0cHM6Ly93d3cubW9kdWxhci5jb20vYmxvZy9tb2R1bGFyLTI2LTUtbW9qby0xLTAtaXMtaGVyZQ==" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1877324622">released version 1.0 of Mojo</a>, the python-like programming language for AI hardware.</p>
</li>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 19px; line-height: 1.5;">Jared Sumner <a href="https://c5e21242.click.convertkit-mail.com/lmu4943dvvtmhnxpnlgc6h8ddnpxkugh2xvw/8ghqh3uom6or3gakh9/aHR0cHM6Ly93d3cuYW50aHJvcGljLmNvbS9yZXNlYXJjaC9yaWVtYW5uLXpldGE=" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1877324623">got Claude to make real progress on one of Math’s hardest problems</a> by telling it “keep going” and “believe in yourself”. Will he win the first Nobel prize for words of affirmation?</p>
</li>
</ol>
<hr style="border: 0; border-bottom: 5px solid; border-color: #f5f5f5; margin-bottom: 100px; margin-top: 100px;">
<div style="text-align:center;margin-bottom:36px">
<img width="110" src="https://bytes.dev/images/content/spot-the-bug.png" alt="Spot the Bug logo" style="max-width: 100%;"><h2 style="font-family: Paytone One, sans-serif; font-size: 28px; margin-top: 10px; text-transform: uppercase;">Spot the Bug: Solution</h2>
<div class="section-presenter" style="margin-bottom:50px;margin-top:15px"><h4 style="font-size: 20px; margin-bottom: 0; padding-left: 24px; padding-right: 24px;">Presented by <a href="https://c5e21242.click.convertkit-mail.com/lmu4943dvvtmhnxpnlgc6h8ddnpxkugh2xvw/25h2h9u3kp3m8qs3h4/aHR0cHM6Ly9vcmtlcy5pby93ZWJpbmFycy9mcm9tLXByb21wdC10by1wcm9kdWN0aW9uLWJ1aWxkaW5nLWJ1c2luZXNzLXdvcmtmbG93cy13aXRoLWFpLWNvZGluZy1hc3Npc3RhbnRzLWFuZC1jb25kdWN0b3Itc2tpbGxzP3V0bV9jYW1wYWlnbj1CeXRlcy5kZXYmdXRtX3NvdXJjZT1OZXdzbGV0dGVyJnV0bV9tZWRpdW09cmVmZXJyYWw=" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1877324613">Orkes</a>
</h4></div>
</div>
<p style="font-family: Outfit, sans-serif; font-size: 19px; line-height: 1.5; padding-left: 24px; padding-right: 24px;">The bug is that <code style="font-size: 15px;">called</code> is set to <code style="font-size: 15px;">true</code> before <code style="font-size: 15px;">fn</code> finishes. If <code style="font-size: 15px;">fn</code> throws, the wrapper still considers it successfully called, so every later call returns <code style="font-size: 15px;">undefined</code> instead of trying again.</p>
<p style="font-family: Outfit, sans-serif; font-size: 19px; line-height: 1.5; padding-left: 24px; padding-right: 24px;">Set <code style="font-size: 15px;">called</code> to <code style="font-size: 15px;">true</code> only after <code style="font-size: 15px;">fn</code> completes successfully:</p>
<pre class="language-js" style="-moz-hyphens: none; -moz-tab-size: 2; -ms-hyphens: none; -o-tab-size: 2; -webkit-hyphens: none; background-color: #f9f9f9; border: 1px solid #f9f9f9; border-radius: 8px; color: #c0c5ce; direction: ltr; font-family: 'Fira Mono', 'SFMono-Regular', Consolas, 'Liberation Mono', Menlo, Courier, monospace; font-size: 15px; hyphens: none; line-height: 1.5; overflow: auto; padding: 24px; tab-size: 2; text-align: left; white-space: pre; word-break: normal; word-spacing: normal;"><code class="language-js" style="-moz-hyphens: none; -moz-tab-size: 2; -ms-hyphens: none; -o-tab-size: 2; -webkit-hyphens: none; color: #c0c5ce; direction: ltr; font-family: 'Fira Mono', 'SFMono-Regular', Consolas, 'Liberation Mono', Menlo, Courier, monospace; font-size: 15px; hyphens: none; line-height: 1.5; tab-size: 2; text-align: left; white-space: pre; word-break: normal; word-spacing: normal;"><span class="token keyword" style="color: #f38ba3; font-size: 15px;">function</span> <span class="token function" style="color: #9d7dce; font-size: 15px;">once</span><span class="token punctuation" style="color: #231F20; font-size: 15px;">(</span><span class="token parameter" style="color: #f38ba3; font-size: 15px;">fn</span><span class="token punctuation" style="color: #231F20; font-size: 15px;">)</span> <span class="token punctuation" style="color: #231F20; font-size: 15px;">{</span>
<span class="token keyword" style="color: #f38ba3; font-size: 15px;">let</span> called <span class="token operator" style="color: #12b5e5; font-size: 15px;">=</span> <span class="token boolean" style="color: #9d7dce; font-size: 15px;">false</span><span class="token punctuation" style="color: #231F20; font-size: 15px;">;</span>
<span class="token keyword" style="color: #f38ba3; font-size: 15px;">let</span> result<span class="token punctuation" style="color: #231F20; font-size: 15px;">;</span>
<span class="token keyword" style="color: #f38ba3; font-size: 15px;">return</span> <span class="token punctuation" style="color: #231F20; font-size: 15px;">(</span><span class="token parameter" style="color: #f38ba3; font-size: 15px;"><span class="token operator" style="color: #12b5e5; font-size: 15px;">...</span>args</span><span class="token punctuation" style="color: #231F20; font-size: 15px;">)</span> <span class="token operator" style="color: #12b5e5; font-size: 15px;">=></span> <span class="token punctuation" style="color: #231F20; font-size: 15px;">{</span>
<span class="token keyword" style="color: #f38ba3; font-size: 15px;">if</span> <span class="token punctuation" style="color: #231F20; font-size: 15px;">(</span><span class="token operator" style="color: #12b5e5; font-size: 15px;">!</span>called<span class="token punctuation" style="color: #231F20; font-size: 15px;">)</span> <span class="token punctuation" style="color: #231F20; font-size: 15px;">{</span>
result <span class="token operator" style="color: #12b5e5; font-size: 15px;">=</span> <span class="token function" style="color: #9d7dce; font-size: 15px;">fn</span><span class="token punctuation" style="color: #231F20; font-size: 15px;">(</span><span class="token operator" style="color: #12b5e5; font-size: 15px;">...</span>args<span class="token punctuation" style="color: #231F20; font-size: 15px;">)</span><span class="token punctuation" style="color: #231F20; font-size: 15px;">;</span>
called <span class="token operator" style="color: #12b5e5; font-size: 15px;">=</span> <span class="token boolean" style="color: #9d7dce; font-size: 15px;">true</span><span class="token punctuation" style="color: #231F20; font-size: 15px;">;</span>
<span class="token punctuation" style="color: #231F20; font-size: 15px;">}</span>
<span class="token keyword" style="color: #f38ba3; font-size: 15px;">return</span> result<span class="token punctuation" style="color: #231F20; font-size: 15px;">;</span>
<span class="token punctuation" style="color: #231F20; font-size: 15px;">}</span><span class="token punctuation" style="color: #231F20; font-size: 15px;">;</span>
<span class="token punctuation" style="color: #231F20; font-size: 15px;">}</span>
<span class="token keyword" style="color: #f38ba3; font-size: 15px;">let</span> attempts <span class="token operator" style="color: #12b5e5; font-size: 15px;">=</span> <span class="token number" style="color: #fcba28; font-size: 15px;">0</span><span class="token punctuation" style="color: #231F20; font-size: 15px;">;</span>
<span class="token keyword" style="color: #f38ba3; font-size: 15px;">const</span> connect <span class="token operator" style="color: #12b5e5; font-size: 15px;">=</span> <span class="token function" style="color: #9d7dce; font-size: 15px;">once</span><span class="token punctuation" style="color: #231F20; font-size: 15px;">(</span><span class="token punctuation" style="color: #231F20; font-size: 15px;">(</span><span class="token punctuation" style="color: #231F20; font-size: 15px;">)</span> <span class="token operator" style="color: #12b5e5; font-size: 15px;">=></span> <span class="token punctuation" style="color: #231F20; font-size: 15px;">{</span>
attempts <span class="token operator" style="color: #12b5e5; font-size: 15px;">+=</span> <span class="token number" style="color: #fcba28; font-size: 15px;">1</span><span class="token punctuation" style="color: #231F20; font-size: 15px;">;</span>
<span class="token keyword" style="color: #f38ba3; font-size: 15px;">if</span> <span class="token punctuation" style="color: #231F20; font-size: 15px;">(</span>attempts <span class="token operator" style="color: #12b5e5; font-size: 15px;">===</span> <span class="token number" style="color: #fcba28; font-size: 15px;">1</span><span class="token punctuation" style="color: #231F20; font-size: 15px;">)</span> <span class="token punctuation" style="color: #231F20; font-size: 15px;">{</span>
<span class="token keyword" style="color: #f38ba3; font-size: 15px;">throw</span> <span class="token keyword" style="color: #f38ba3; font-size: 15px;">new</span> <span class="token class-name" style="color: #12b5e5; font-size: 15px;">Error</span><span class="token punctuation" style="color: #231F20; font-size: 15px;">(</span><span class="token string" style="color: #f99157; font-size: 15px;">"Connection failed"</span><span class="token punctuation" style="color: #231F20; font-size: 15px;">)</span><span class="token punctuation" style="color: #231F20; font-size: 15px;">;</span>
<span class="token punctuation" style="color: #231F20; font-size: 15px;">}</span>
<span class="token keyword" style="color: #f38ba3; font-size: 15px;">return</span> <span class="token string" style="color: #f99157; font-size: 15px;">"Connected"</span><span class="token punctuation" style="color: #231F20; font-size: 15px;">;</span>
<span class="token punctuation" style="color: #231F20; font-size: 15px;">}</span><span class="token punctuation" style="color: #231F20; font-size: 15px;">)</span><span class="token punctuation" style="color: #231F20; font-size: 15px;">;</span>
<span class="token keyword" style="color: #f38ba3; font-size: 15px;">try</span> <span class="token punctuation" style="color: #231F20; font-size: 15px;">{</span>
<span class="token function" style="color: #9d7dce; font-size: 15px;">connect</span><span class="token punctuation" style="color: #231F20; font-size: 15px;">(</span><span class="token punctuation" style="color: #231F20; font-size: 15px;">)</span><span class="token punctuation" style="color: #231F20; font-size: 15px;">;</span>
<span class="token punctuation" style="color: #231F20; font-size: 15px;">}</span> <span class="token keyword" style="color: #f38ba3; font-size: 15px;">catch</span> <span class="token punctuation" style="color: #231F20; font-size: 15px;">(</span>error<span class="token punctuation" style="color: #231F20; font-size: 15px;">)</span> <span class="token punctuation" style="color: #231F20; font-size: 15px;">{</span>
console<span class="token punctuation" style="color: #231F20; font-size: 15px;">.</span><span class="token function" style="color: #9d7dce; font-size: 15px;">log</span><span class="token punctuation" style="color: #231F20; font-size: 15px;">(</span>error<span class="token punctuation" style="color: #231F20; font-size: 15px;">.</span>message<span class="token punctuation" style="color: #231F20; font-size: 15px;">)</span><span class="token punctuation" style="color: #231F20; font-size: 15px;">;</span>
<span class="token punctuation" style="color: #231F20; font-size: 15px;">}</span>
console<span class="token punctuation" style="color: #231F20; font-size: 15px;">.</span><span class="token function" style="color: #9d7dce; font-size: 15px;">log</span><span class="token punctuation" style="color: #231F20; font-size: 15px;">(</span><span class="token function" style="color: #9d7dce; font-size: 15px;">connect</span><span class="token punctuation" style="color: #231F20; font-size: 15px;">(</span><span class="token punctuation" style="color: #231F20; font-size: 15px;">)</span><span class="token punctuation" style="color: #231F20; font-size: 15px;">)</span><span class="token punctuation" style="color: #231F20; font-size: 15px;">;</span>
</code></pre>
<div style="text-align:center;padding-bottom:80px;padding-top:80px">
<div class="bg-alt" style="background-color: #f5f5f5; border-radius: 16px; margin-bottom: 40px; padding: 24px;"><div style="margin-top:-40px">
<img src="https://bytes.dev/images/bytes-icon.png" alt="Bytes" width="55px" style="max-width: 100%; width: 55px;"><h5 style="font-size:18px;font-weight:400;margin-bottom:24px">Want us to say nice things <br> about your company?</h5>
<div style="margin-bottom:16px"><a style="background-color: #FCBA28; border: 1px solid #231F20; border-radius: 100px; color: #231F20; font-size: 14px; font-weight: 600; padding: 8px 14px; text-decoration: none;" href="https://c5e21242.click.convertkit-mail.com/lmu4943dvvtmhnxpnlgc6h8ddnpxkugh2xvw/vqh3hmuoz9ow4pbghl/aHR0cHM6Ly9ieXRlcy5kZXYvYWR2ZXJ0aXNl" url-id="1877324624">Sponsor Bytes</a></div>
<div style="margin-bottom:20px"><a style="color: #FCBA28; font-size: 14px; font-weight: 600; text-decoration: underline;" href="https://c5e21242.click.convertkit-mail.com/lmu4943dvvtmhnxpnlgc6h8ddnpxkugh2xvw/l2heh6ul8mlx4ls6h0/aHR0cHM6Ly9ieXRlcy5kZXYvc2hhcmU=" url-id="1877324625">or share it</a></div>
<p style="font-family: Outfit, sans-serif; font-size: 14px; line-height: 1.5; padding-left: 24px; padding-right: 24px;">Built with ❤️ by<!-- --> <a style="color: #ed203d; font-weight: 600; text-decoration: underline;" href="https://c5e21242.click.convertkit-mail.com/lmu4943dvvtmhnxpnlgc6h8ddnpxkugh2xvw/m2h7h6u3d6349mumhq/aHR0cHM6Ly9maXJlc2hpcC5kZXY=" url-id="1877324626">Fireship</a></p>
</div></div>
<p style="font-family: Outfit, sans-serif; font-size: 14px; line-height: 1.5; opacity: 0.5; padding-left: 24px; padding-right: 24px;">50 W Broadway Ste 333 PMB 51647 Salt Lake City, Utah 84101</p>
<div style="font-family:Papyrus, cursive"><a class="unsubscribe-link" href="https://c5e21242.click.convertkit-mail.com/lmu4943dvvtmhnxpnlgc6h8ddnpxkugh2xvw/dphehmuel9epk5bmh4/aHR0cHM6Ly9ieXRlcy5kZXYvdW5zdWJzY3JpYmU=" style="color: #9B9890;" url-id="1877324627">Unsubscribe from Bytes</a></div>
</div>
</div></td>
<td style="border-collapse: collapse !important; word-break: normal;"></td>
</tr></tbody></table>
<span style="display: none"><a href="https://c5e21242.unsubscribe.convertkit-mail.com/lmu4943dvvtmhnxpnlgc6h8ddnpxkugh2xvw">Unsubscribe</a></span>
<!-- -->
<img src="https://c5e21242.open.convertkit-mail.com/lmu4943dvvtmhnxpnlgc6h8ddnpxkugh2xvw" alt="">
</body>
</html>