<!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/sniffing-glue.jpg">
<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/meticulous-logo.png">
<link rel="preload" as="image" href="https://bytes.dev/images/content/spiderman-meticulous.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: The new CEO of agent harness frameworks</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> Tanner Linsley’s final boss, coding on your Xbox, and an all-leather agent harness.</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/5quqzqpw00b7hn8gvp9a6h9xxn8mrcnhxdov/l2heh6ul786grxb6/aHR0cHM6Ly9ieXRlcy5kZXYvYXJjaGl2ZXMvNDg1" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1853784284">#485</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/sniffing-glue.jpg" alt="Lloyd Bridges sniffing glue" 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;">Getting high on your own custom agent supply<!-- --> </p>
</div>
<h3 style="font-size: 24px; margin-bottom: 0; padding-left: 24px; padding-right: 24px;">The new CEO of agent harness frameworks</h3>
<p style="font-family: Outfit, sans-serif; font-size: 19px; line-height: 1.5; padding-left: 24px; padding-right: 24px;">New AI projects these days are a dime a dozen, but when the CEO of HTML, Fred K. Schott, announced an agent harness framework called <a href="https://c5e21242.click.convertkit-mail.com/5quqzqpw00b7hn8gvp9a6h9xxn8mrcnhxdov/m2h7h6u3zdmrelsm/aHR0cHM6Ly9mbHVlZnJhbWV3b3JrLmNvbS8=" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1853784285">Flue</a> last week… well, he got our attention.</p>
<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;">Wtf is an agent harness?</strong> Thankfully, it’s not as kinky as it sounds. And at their core, agents are actually pretty simple. They read files from a filesystem, send context to an LLM, and execute commands based on how the model responds. The harness is the glue that manages this workflow from end to end.</p>
<p style="font-family: Outfit, sans-serif; font-size: 19px; line-height: 1.5; padding-left: 24px; padding-right: 24px;">On your computer, an agent like Claude Code does all of this on your local system shell (bash). But if you want to create a custom agent that you can deploy anywhere, things get a lot more complicated. There is no shell, so you have to abstract every filesystem and execution primitive to run on whatever runtime you’re targeting.</p>
<p style="font-family: Outfit, sans-serif; font-size: 19px; line-height: 1.5; padding-left: 24px; padding-right: 24px;">That’s where Flue comes in. It makes it easy to build and deploy custom agents using TypeScript and a few other helpful features:</p>
<ul>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 19px; line-height: 1.5;"><strong style="font-weight: 600;">Runtime Agnostic</strong> — Built on top of Malte Ubl’s <a href="https://c5e21242.click.convertkit-mail.com/5quqzqpw00b7hn8gvp9a6h9xxn8mrcnhxdov/dphehmuenl835xtm/aHR0cHM6Ly9naXRodWIuY29tL3ZlcmNlbC1sYWJzL2p1c3QtYmFzaA==" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1853784286"><code style="font-size: 15px;">just-bash</code></a>, Flue translates native shell commands like <code style="font-size: 15px;">grep</code>, <code style="font-size: 15px;">glob</code>, <code style="font-size: 15px;">read</code>, and <code style="font-size: 15px;">write</code> to any runtime, including Linux, Node, and Cloudflare Workers.</p>
</li>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 19px; line-height: 1.5;"><strong style="font-weight: 600;">Sandbox Flexibility</strong> — For simple use cases, you can use services like R2 as your filesystem. Or if you’re building something like a coding agent, you can connect to a Linux container to execute code. It also has a built-in sandbox that can be embedded in environments like GitHub Actions.</p>
</li>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 19px; line-height: 1.5;"><strong style="font-weight: 600;">Skill-Centric Design</strong> — Flue uses <code style="font-size: 15px;">/skills</code> and <code style="font-size: 15px;">AGENTS.md</code> to define the logic for the agent and create reusable workflows with structured outputs.</p>
</li>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 19px; line-height: 1.5;"><strong style="font-weight: 600;">Framework Glue</strong> — The framework handles sessions, context, and MCP connections, then bundles the agent into a deployable package that can be triggered from an HTTP endpoint, a CLI command, or directly from TypeScript.</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> There are a few other agent frameworks out there, but Flue is the only one that gives developers full ownership of the agent, the harness, and the sandbox itself. The only downside is that I’ll now be forced to read hundreds of tweets from developers who think they’re awesome for naming their agents something like JARVIS or ARLO.</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/5quqzqpw00b7hn8gvp9a6h9xxn8mrcnhxdov/e0hph0u7o8qx4xf8/aHR0cHM6Ly9mYWNlYm9vay5jb20vc2hhcmVyL3NoYXJlci5waHA_dT1odHRwcyUzQSUyRiUyRmJ5dGVzLmRldiUyRmFyY2hpdmVzJTJGNDg1" rel="noopener" style="color: #12b5e5; font-weight: 600; padding-left: 5px; text-decoration: none;" target="_blank" url-id="1853784287"><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/5quqzqpw00b7hn8gvp9a6h9xxn8mrcnhxdov/7qh7h2u95rwg3vfz/aHR0cHM6Ly93d3cubGlua2VkaW4uY29tL3NoYXJpbmcvc2hhcmUtb2Zmc2l0ZS8_dXJsPWh0dHBzJTNBJTJGJTJGYnl0ZXMuZGV2JTJGYXJjaGl2ZXMlMkY0ODU=" rel="noopener" style="color: #12b5e5; font-weight: 600; padding-left: 5px; text-decoration: none;" target="_blank" url-id="1853784288"><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/5quqzqpw00b7hn8gvp9a6h9xxn8mrcnhxdov/owhkhwuwd2gz5kcv/aHR0cHM6Ly90d2l0dGVyLmNvbS9pbnRlbnQvdHdlZXQvP3RleHQ9QnJlYWtpbmclMjBkb3duJTIwRmx1ZSUyQyUyMGElMjBuZXclMjBhZ2VudCUyMGhhcm5lc3MlMjBmcmFtZXdvcmslMjBmcm9tJTIwJTQwRnJlZEtTY2hvdHQmdXJsPWh0dHBzJTNBJTJGJTJGYnl0ZXMuZGV2JTJGYXJjaGl2ZXMlMkY0ODU=" rel="noopener" style="color: #12b5e5; font-weight: 600; padding-left: 5px; text-decoration: none;" target="_blank" url-id="1853784289"><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/5quqzqpw00b7hn8gvp9a6h9xxn8mrcnhxdov/z2hgh7uexqpg0kbp/bWFpbHRvOj9zdWJqZWN0PVlvdSUyMGxpa2UlMjBjb3JuYnJlYWQlM0YmYm9keT1UaG91Z2h0JTIweW91JTI3ZCUyMGxvdmUlMjB0aGlzJTIwd2VlayUyN3MlMjBCeXRlcyUwQS0tLSUwQUJyZWFraW5nJTIwZG93biUyMEZsdWUlMkMlMjBhJTIwbmV3JTIwYWdlbnQlMjBoYXJuZXNzJTIwZnJhbWV3b3JrJTIwZnJvbSUyMCU0MEZyZWRLU2Nob3R0JTBBaHR0cHMlM0ElMkYlMkZieXRlcy5kZXYlMkZhcmNoaXZlcyUyRjQ4NQ==" rel="noopener" style="color: #12b5e5; font-weight: 600; padding-left: 5px; text-decoration: none;" target="_blank" url-id="1853784290"><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/meticulous-logo.png" alt="Meticulous 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/spiderman-meticulous.jpg" alt="Spiderman guys pointing to each other about AI writing, reviewing, and fixing my code" 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;">Me reviewing the code written by Claude before pushing to production<!-- --> </p>
</div>
<h3 style="font-size: 24px; margin-bottom: 0; padding-left: 24px; padding-right: 24px;"><a href="https://c5e21242.click.convertkit-mail.com/5quqzqpw00b7hn8gvp9a6h9xxn8mrcnhxdov/p8hehqu4ongv8dsq/aHR0cHM6Ly93d3cubWV0aWN1bG91cy5haS8_dXRtX3NvdXJjZT1ieXRlcyZ1dG1fbWVkaXVtPW5ld3NsZXR0ZXImdXRtX2NhbXBhaWduPTI2cTImdXRtX2NvbnRlbnQ9cHJpbWFyeQ==" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1853784291">Ship AI generated code safely with Meticulous.</a></h3>
<p style="font-family: Outfit, sans-serif; font-size: 19px; line-height: 1.5; padding-left: 24px; padding-right: 24px;">Claude writes your code. Claude reviews your code. Claude fixes the review comments. And somehow, you’re the one getting paged at 2am when it breaks in prod.</p>
<p style="font-family: Outfit, sans-serif; font-size: 19px; line-height: 1.5; padding-left: 24px; padding-right: 24px;">Fortunately, top AI-driven teams like Dropbox, Notion, LaunchDarkly and Wiz rely on Meticulous to run 1000s of e2e UI tests autonomously, covering every user flow, edge case, role and permutation. Built by ex-Palantir engineers, Meticulous gives you near-exhaustive coverage in weeks, without any developer effort.</p>
<p style="font-family: Outfit, sans-serif; font-size: 19px; line-height: 1.5; padding-left: 24px; padding-right: 24px;">It works like magic in the background:</p>
<ul>
<li>Near-exhaustive coverage on every test run</li>
<li>No test creation</li>
<li>No maintenance (seriously)</li>
<li>Zero flakes (built on a deterministic browser)</li>
</ul>
<p style="font-family: Outfit, sans-serif; font-size: 19px; line-height: 1.5; padding-left: 24px; padding-right: 24px;"><a href="https://c5e21242.click.convertkit-mail.com/5quqzqpw00b7hn8gvp9a6h9xxn8mrcnhxdov/p8hehqu4ongv8dsq/aHR0cHM6Ly93d3cubWV0aWN1bG91cy5haS8_dXRtX3NvdXJjZT1ieXRlcyZ1dG1fbWVkaXVtPW5ld3NsZXR0ZXImdXRtX2NhbXBhaWduPTI2cTImdXRtX2NvbnRlbnQ9cHJpbWFyeQ==" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1853784291">Check it out</a>, and see why one engineering leader at Dropbox said that “once we started using Meticulous, we couldn’t imagine working without it.”</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">
<h3 style="font-size: 24px; margin-bottom: 0; padding-left: 24px; padding-right: 24px;">Spot the Bug — Sponsored by <a href="https://c5e21242.click.convertkit-mail.com/5quqzqpw00b7hn8gvp9a6h9xxn8mrcnhxdov/x0hph3ue059gxdu5/aHR0cHM6Ly9mYW5kZi5jby80ZGRrbWs0" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1853784292">Oracle</a>
</h3>
<p style="font-family: Outfit, sans-serif; font-size: 18px; line-height: 1.5; margin-top: 5px; padding-left: 24px; padding-right: 24px;"><em>Small language models often fail at multi-step reasoning, but Nacho Martinez wrote on the Oracle developers blog about <a href="https://c5e21242.click.convertkit-mail.com/5quqzqpw00b7hn8gvp9a6h9xxn8mrcnhxdov/x0hph3ue059gxdu5/aHR0cHM6Ly9mYW5kZi5jby80ZGRrbWs0" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1853784292">16 ways to make a small language models think bigger</a> that are research-backed and actually make a difference.</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;">eventuallyFail</span><span class="token punctuation" style="color: #231F20; font-size: 15px;">(</span><span class="token parameter" style="color: #f38ba3; font-size: 15px;">time</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 function" style="color: #9d7dce; font-size: 15px;">setTimeout</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>
<span class="token keyword" style="color: #f38ba3; font-size: 15px;">throw</span> <span class="token function" style="color: #9d7dce; 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;">"Oops!"</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> time<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;">eventuallyFail</span><span class="token punctuation" style="color: #231F20; font-size: 15px;">(</span><span class="token number" style="color: #fcba28; font-size: 15px;">1000</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;">error</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>
</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;">Microsoft released a <a href="https://c5e21242.click.convertkit-mail.com/5quqzqpw00b7hn8gvp9a6h9xxn8mrcnhxdov/6qhehoulemnq0dbo/aHR0cHM6Ly9jb2RlLnZpc3VhbHN0dWRpby5jb20vdXBkYXRlcy92MV8xMTk=" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1853784293">new version of VS Code</a>. This version doesn’t include an Xbox integration yet, but I hear Jared Palmer is already working on a <em>Gears of War</em> IDE skin.</p>
</li>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 19px; line-height: 1.5;">Tanner Linsley has written more React libraries than almost anyone, and now he’s <a href="https://c5e21242.click.convertkit-mail.com/5quqzqpw00b7hn8gvp9a6h9xxn8mrcnhxdov/kkhmh2unvk6749fl/aHR0cHM6Ly90YW5uZXJsaW5zbGV5LmNvbS9wb3N0cy9wcm9qZWN0aW5nLXJlYWN0" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1853784294">rewriting React</a> for the final boss fight.</p>
</li>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 19px; line-height: 1.5;"><a href="https://c5e21242.click.convertkit-mail.com/5quqzqpw00b7hn8gvp9a6h9xxn8mrcnhxdov/58hvh8ug2rkel5h6/aHR0cHM6Ly9uZXdzLmNvbnZleC5kZXYvYWJzdHJhY3Qv" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1853784295">Convex is hosting Abstract Conf this September</a>, a conference about principled design. And it’s not just about SaaS, it’s about physical products, games, education, and more. They’re also not taking any paid sponsors so they can highlight the best builders regardless of where they come from. [sponsored]</p>
</li>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 19px; line-height: 1.5;">Rolldown, Evan You & co’s Rust-based JavaScript bundler, just released <a href="https://c5e21242.click.convertkit-mail.com/5quqzqpw00b7hn8gvp9a6h9xxn8mrcnhxdov/25h2h9u3wk45n2b3/aHR0cHM6Ly92b2lkemVyby5kZXYvcG9zdHMvYW5ub3VuY2luZy1yb2xsZG93bi0xLTA=" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1853784296">v1.0</a>.</p>
</li>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 19px; line-height: 1.5;">Matt and Jason shared <a href="https://c5e21242.click.convertkit-mail.com/5quqzqpw00b7hn8gvp9a6h9xxn8mrcnhxdov/qvh8h8udp9oxqdul/aHR0cHM6Ly93b3Jrb3MuY29tL2Jsb2cvcHJvamVjdC1ob3Jpem9u" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1853784297">how they built a self-driving codebase</a>. And it’s only run over three neighborhood dogs so far.</p>
</li>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 19px; line-height: 1.5;"><a href="https://c5e21242.click.convertkit-mail.com/5quqzqpw00b7hn8gvp9a6h9xxn8mrcnhxdov/g3hnhwumw46vx6tr/aHR0cHM6Ly90c3ouZGV2Lw==" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1853784298">tsz</a> is a WIP Rust-based TypeScript compiler that claims to be faster than tsgo. So I guess we know what’ll be in TypeScript 8.0.</p>
</li>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 19px; line-height: 1.5;"><a href="https://c5e21242.click.convertkit-mail.com/5quqzqpw00b7hn8gvp9a6h9xxn8mrcnhxdov/9qhzhdudroz7n9f9/aHR0cHM6Ly9naXRodWIuY29tL21pbGxpb25jby9yZWFjdC1kb2N0b3I=" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1853784299"><code style="font-size: 15px;">react-doctor</code> just released v2.0</a> of their tool that fixes all the bad React code your agents write (because you would never).</p>
</li>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 19px; line-height: 1.5;">Frank Tisellano created a <a href="https://c5e21242.click.convertkit-mail.com/5quqzqpw00b7hn8gvp9a6h9xxn8mrcnhxdov/3ohphdu3ge4wvvfr/aHR0cHM6Ly9mcmFua3Rpc2VsbGFuby5naXRodWIuaW8vZGF0YXR5cGUv" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1853784300">variable font</a> that turns text into charts. I wonder what kind of chart it would make from the <em>To Kill a Mockingbird</em> paper I wrote in Comic Sans back in ninth grade.</p>
</li>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 19px; line-height: 1.5;">Hugo Venturini wrote a thought-provoking article about <a href="https://c5e21242.click.convertkit-mail.com/5quqzqpw00b7hn8gvp9a6h9xxn8mrcnhxdov/n2hohquv0z6de2c6/aHR0cHM6Ly9za2lwbGFicy5pby9ibG9nL2NvZGVnZW5fYXNfY29tcGlsZXI=" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1853784301">treating agent-generated code like a compiler output</a>.</p>
</li>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 19px; line-height: 1.5;">Vivek wrote about <a href="https://c5e21242.click.convertkit-mail.com/5quqzqpw00b7hn8gvp9a6h9xxn8mrcnhxdov/48hvh7um846okvbx/aHR0cHM6Ly93d3cubGFuZ2NoYWluLmNvbS9ibG9nL3RoZS1hbmF0b215LW9mLWFuLWFnZW50LWhhcm5lc3M=" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1853784302">the anatomy of an agent harness</a>. Ok I admit it, this one does sound kinkier.</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;">Sponsored by <a href="https://c5e21242.click.convertkit-mail.com/5quqzqpw00b7hn8gvp9a6h9xxn8mrcnhxdov/x0hph3ue059gxdu5/aHR0cHM6Ly9mYW5kZi5jby80ZGRrbWs0" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1853784292">Oracle</a>
</h4></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;">eventuallyFail</span><span class="token punctuation" style="color: #231F20; font-size: 15px;">(</span><span class="token parameter" style="color: #f38ba3; font-size: 15px;">time</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 function" style="color: #9d7dce; font-size: 15px;">setTimeout</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>
<span class="token keyword" style="color: #f38ba3; font-size: 15px;">throw</span> <span class="token function" style="color: #9d7dce; 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;">"Oops!"</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> time<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;">eventuallyFail</span><span class="token punctuation" style="color: #231F20; font-size: 15px;">(</span><span class="token number" style="color: #fcba28; font-size: 15px;">1000</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;">error</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>
</code></pre>
<p style="font-family: Outfit, sans-serif; font-size: 19px; line-height: 1.5; padding-left: 24px; padding-right: 24px;"><code style="font-size: 15px;">try/catch</code> is synchronous. By the time our error is thrown, the <code style="font-size: 15px;">try/catch</code> block is long gone, leaving us with <code style="font-size: 15px;">Uncaught Error: Oops!</code>.</p>
<p style="font-family: Outfit, sans-serif; font-size: 19px; line-height: 1.5; padding-left: 24px; padding-right: 24px;">To fix this, we can use promises, which give us more control over async error handling.</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;">eventuallyFail</span><span class="token punctuation" style="color: #231F20; font-size: 15px;">(</span><span class="token parameter" style="color: #f38ba3; font-size: 15px;">time</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 keyword" style="color: #f38ba3; font-size: 15px;">new</span> <span class="token class-name" style="color: #12b5e5; font-size: 15px;">Promise</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 parameter" style="color: #f38ba3; font-size: 15px;">res<span class="token punctuation" style="color: #231F20; font-size: 15px;">,</span> rej</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 function" style="color: #9d7dce; font-size: 15px;">setTimeout</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>
<span class="token function" style="color: #9d7dce; font-size: 15px;">rej</span><span class="token punctuation" style="color: #231F20; font-size: 15px;">(</span><span class="token function" style="color: #9d7dce; 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;">"Oops!"</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> time<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 function" style="color: #9d7dce; font-size: 15px;">eventuallyFail</span><span class="token punctuation" style="color: #231F20; font-size: 15px;">(</span><span class="token number" style="color: #fcba28; font-size: 15px;">1000</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 function" style="color: #9d7dce; font-size: 15px;">catch</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 parameter" style="color: #f38ba3; font-size: 15px;">reason</span><span class="token punctuation" style="color: #231F20; font-size: 15px;">)</span> <span class="token operator" style="color: #12b5e5; 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;">error</span><span class="token punctuation" style="color: #231F20; font-size: 15px;">(</span>reason<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>
</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/5quqzqpw00b7hn8gvp9a6h9xxn8mrcnhxdov/wnh2h6uq6exz87u7/aHR0cHM6Ly9ieXRlcy5kZXYvYWR2ZXJ0aXNl" url-id="1853784303">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/5quqzqpw00b7hn8gvp9a6h9xxn8mrcnhxdov/reh8h9umzgw8nzu2/aHR0cHM6Ly9ieXRlcy5kZXYvc2hhcmU=" url-id="1853784304">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/5quqzqpw00b7hn8gvp9a6h9xxn8mrcnhxdov/08hwhgu2r3g8q5ul/aHR0cHM6Ly9maXJlc2hpcC5kZXY=" url-id="1853784305">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/5quqzqpw00b7hn8gvp9a6h9xxn8mrcnhxdov/8ghqh3uonmq4k6sk/aHR0cHM6Ly9ieXRlcy5kZXYvdW5zdWJzY3JpYmU=" style="color: #9B9890;" url-id="1853784306">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/5quqzqpw00b7hn8gvp9a6h9xxn8mrcnhxdov">Unsubscribe</a></span>
<!-- -->
<img src="https://c5e21242.open.convertkit-mail.com/5quqzqpw00b7hn8gvp9a6h9xxn8mrcnhxdov" alt="">
</body>
</html>