<!DOCTYPE html>
<html>
<head>
<title>Bytes: Warp wants it all</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<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: 16px; 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/content/bytes-header-warp.png" alt="Bytes"></div>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5; padding-left: 24px; padding-right: 24px;"><strong style="font-weight: 600;">Today’s issue:</strong> Squinting to see React Native 1.0, Vercel’s pledge of allegiance, and finding love without JavaScript.</p>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5; padding-left: 24px; padding-right: 24px;">Welcome to <a href="https://click.convertkit-mail4.com/xmu0w0kg44b6hpwqg5zb5h2pxnlllbnhlemx/7qh7h2u90rdrgnbz/aHR0cHM6Ly9ieXRlcy5kZXYvYXJjaGl2ZXMvNDIx" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1782160124">#421</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/kermit-cowboy.jpg" alt="Kermit the frog staring down a bunch of cowboys" width="600" style="border-radius: 5px; max-width: 100%;"><p style="font-family: Outfit, sans-serif; font-size: 15px; font-style: italic; line-height: 1; margin: 0; padding-bottom: 4px; padding-left: 24px; padding-right: 24px; padding-top: 10px; text-align: center;">Me looking at all the AI tools that I don’t remember installing on my machine<!-- --> </p>
</div>
<h3 style="font-size: 24px; margin-bottom: 0; padding-left: 24px; padding-right: 24px;">Warp wants it all</h3>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5; padding-left: 24px; padding-right: 24px;">As a two-time sheep-riding <del>champion</del> <em>participant</em> in the Oakley, Utah Kids’ Rodeo back in the ’90s, I feel qualified to say that building software in 2025 feels a lot like wrangling cattle – we’ve got endless tools, but figuring out how and when to use them all together is the real challenge.</p>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5; padding-left: 24px; padding-right: 24px;">Warp wants to tame that chaos, which is why they just launched <a href="https://click.convertkit-mail4.com/xmu0w0kg44b6hpwqg5zb5h2pxnlllbnhlemx/owhkhwuw42x2z0bv/aHR0cHM6Ly93d3cud2FycC5kZXYvYmxvZy9pbnRyb2R1Y2luZy13YXJwLWNvZGUtcHJvbXB0LXRvLXByb2Q=" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1782160125">Warp Code</a> yesterday. It’s a new suite of features that merges their terminal and IDE into one environment designed to help you take AI-generated code “all the way from prompt to production.”</p>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5; padding-left: 24px; padding-right: 24px;">The clever part is that they don’t pretend agents can magically one-shot your spaghetti prompt into production-ready code. Instead, they built Warp Code around tight feedback loops – so you can plan, prompt, review, edit, test, and repeat <em>without</em> bouncing between five different platforms.</p>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5; padding-left: 24px; padding-right: 24px;">Here’s what that looks like:</p>
<ul>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5;"><strong style="font-weight: 600;">Leaderboard champ</strong> – Warp agents rank #1 on <code style="font-size: 14px;">Terminal-bench</code> and #3 on <code style="font-size: 14px;">SWE-bench Verified</code>, and the entire Warp Code UI is built from the ground up for <a href="https://click.convertkit-mail4.com/xmu0w0kg44b6hpwqg5zb5h2pxnlllbnhlemx/z2hgh7ueoq5qgzsp/aHR0cHM6Ly93d3cud2FycC5kZXYvY29kZQ==" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1782160126">agentic coding</a>.</p>
</li>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5;"><strong style="font-weight: 600;">Code reviews</strong> – A dedicated panel where you can diff, line-edit, and ask your agent to tweak things without hopping back and forth to GitHub every 5 minutes.</p>
</li>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5;"><strong style="font-weight: 600;">Lightweight editor</strong> – A <a href="https://click.convertkit-mail4.com/xmu0w0kg44b6hpwqg5zb5h2pxnlllbnhlemx/p8hehqu49nrnvvtq/aHR0cHM6Ly9kb2NzLndhcnAuZGV2L2NvZGUvY29kZS1lZGl0b3I=" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1782160127">native code editor</a> comes with tabs, a file tree, syntax highlighting, and vim bindings, so you can jump in to make quick edits to your agent-generated code that’s 90% of the way there.</p>
</li>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5;"><strong style="font-weight: 600;">Project rules and commands</strong> – Each repo can define its own rules and agent profiles via a <code style="font-size: 14px;">WARP.md</code> file (plays nice with Claude.MD, Agents.MD, Cursor rules, etc.). It’s basically a dotfile for steering your agents on a per-project basis.</p>
</li>
</ul>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5; padding-left: 24px; padding-right: 24px;"><strong style="font-weight: 600;">Bottom Line:</strong> The AI coding agent space is more crowded than the first-aid tent at a children’s rodeo (which I can confirm is also full of tears).</p>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5; padding-left: 24px; padding-right: 24px;">But if Warp can really become a true one-stop shop for shipping production-ready code with agents, they’ll have unlocked the Holy Grail. And with 700k developers already using it, they might just rope it in.</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://click.convertkit-mail4.com/xmu0w0kg44b6hpwqg5zb5h2pxnlllbnhlemx/6qhehoulpmx9vkuo/aHR0cHM6Ly9mYWNlYm9vay5jb20vc2hhcmVyL3NoYXJlci5waHA_dT1odHRwcyUzQSUyRiUyRmJ5dGVzLmRldiUyRmFyY2hpdmVzJTJGNDIx" rel="noopener" style="color: #12b5e5; font-weight: 600; padding-left: 5px; text-decoration: none;" target="_blank" url-id="1782160129"><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://click.convertkit-mail4.com/xmu0w0kg44b6hpwqg5zb5h2pxnlllbnhlemx/kkhmh2un8kzxg5fl/aHR0cHM6Ly93d3cubGlua2VkaW4uY29tL3NoYXJpbmcvc2hhcmUtb2Zmc2l0ZS8_dXJsPWh0dHBzJTNBJTJGJTJGYnl0ZXMuZGV2JTJGYXJjaGl2ZXMlMkY0MjE=" rel="noopener" style="color: #12b5e5; font-weight: 600; padding-left: 5px; text-decoration: none;" target="_blank" url-id="1782160130"><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://click.convertkit-mail4.com/xmu0w0kg44b6hpwqg5zb5h2pxnlllbnhlemx/58hvh8ug5r36p0h6/aHR0cHM6Ly90d2l0dGVyLmNvbS9pbnRlbnQvdHdlZXQvP3RleHQ9QnJlYWtpbmclMjBkb3duJTIwV2FycCUyMENvZGUlMjdzJTIwbGF1bmNoJTIwZnJvbSUyMCU0MHdhcnBkb3RkZXYlMjdzJTIwYW5kJTIwdGhlJTIwcXVlc3QlMjB0byUyMHVuaXRlJTIwYWxsJTIwb3VyJTIwQUklMjBjb2RpbmclMjB0b29scyZ1cmw9aHR0cHMlM0ElMkYlMkZieXRlcy5kZXYlMkZhcmNoaXZlcyUyRjQyMQ==" rel="noopener" style="color: #12b5e5; font-weight: 600; padding-left: 5px; text-decoration: none;" target="_blank" url-id="1782160131"><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://click.convertkit-mail4.com/xmu0w0kg44b6hpwqg5zb5h2pxnlllbnhlemx/25h2h9u37klmr0t3/bWFpbHRvOj9ib2R5PVRob3VnaHQlMjB5b3UlMjdkJTIwbG92ZSUyMHRoaXMlMjB3ZWVrJTI3cyUyMEJ5dGVzJTBBLS0tJTBBQnJlYWtpbmclMjBkb3duJTIwV2FycCUyMENvZGUlMjdzJTIwbGF1bmNoJTIwZnJvbSUyMCU0MHdhcnBkb3RkZXYlMjdzJTIwYW5kJTIwdGhlJTIwcXVlc3QlMjB0byUyMHVuaXRlJTIwYWxsJTIwb3VyJTIwQUklMjBjb2RpbmclMjB0b29scyUwQWh0dHBzJTNBJTJGJTJGYnl0ZXMuZGV2JTJGYXJjaGl2ZXMlMkY0MjEmc3ViamVjdD1Zb3UlMjBsaWtlJTIwY29ybmJyZWFkJTNG" rel="noopener" style="color: #12b5e5; font-weight: 600; padding-left: 5px; text-decoration: none;" target="_blank" url-id="1782160132"><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/qa-wolf-logo.png" alt="QA Wolf 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/nasa-employees.jpg" alt="People at NASA celebrating" width="600" style="border-radius: 5px; max-width: 100%;"><p style="font-family: Outfit, sans-serif; font-size: 15px; font-style: italic; line-height: 1; margin: 0; padding-bottom: 4px; padding-left: 24px; padding-right: 24px; padding-top: 10px; text-align: center;">When your team doesn't have to wait 90 minutes to deploy anymore<!-- --> </p>
</div>
<h3 style="font-size: 24px; margin-bottom: 0; padding-left: 24px; padding-right: 24px;"><a href="https://click.convertkit-mail4.com/xmu0w0kg44b6hpwqg5zb5h2pxnlllbnhlemx/qvh8h8ud89ekg0tl/aHR0cHM6Ly9hdHRlbmQucWF3b2xmLmNvbS9jaG9vc2luZy10aGUtcmlnaHQtYWktZm9yLXFhLWEtcHJhY3RpY2FsLWZyYW1ld29yay1mb3ItdGVjaG5pY2FsLWxlYWRlcnMvcmVnaXN0cmF0aW9uP3V0bV9jYW1wYWlnbj1BQ1FfQWxsX0RlbW9fQ29udmVyc2lvbnNfX05ld3NsZXR0ZXJBdWRpZW5jZV8tX05ld3NsZXR0ZXJfU3BlZWRVcFJlbGVhc2VDeWNsZXNXaXRoQUlfMjAyNTA5MDQtTm9uZV9FeHBlcmltZW50LUZBTFNFJnV0bV9jb250ZW50PVNwZWVkVXBSZWxlYXNlQ3ljbGVzV2l0aEFJX1NpZ25VcEZvclRoZVdvcmtTaG9wX05vbmVfSGVhZGxpbmUlM0FTcGVlZFVwWW91clRlYW1zUmVsZWFzZUN5Y2xlc1dpdGhUaGVQb3dlck9mQUlfX19fTmV3c2xldHRlci1QcmltYXJ5UGxhY2VtZW50XzIwMjUwOTA0X3YxXyZ1dG1fbWVkaXVtPW5ld3NsZXR0ZXImdXRtX3NvdXJjZT1ieXRlcyZ1dG1fdGVybT1oZWFkbGluZS1TcGVlZFVwWW91clRlYW1zUmVsZWFzZUN5Y2xlc1dpdGhUaGVQb3dlck9mQUk=" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1782160133">Speed up your team’s release cycles – with the power of AI</a></h3>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5; padding-left: 24px; padding-right: 24px;">That’s exactly what <a href="https://click.convertkit-mail4.com/xmu0w0kg44b6hpwqg5zb5h2pxnlllbnhlemx/9qhzhdudgo45kgs9/aHR0cHM6Ly9xYXdvbGYuY29tP3V0bV9jYW1wYWlnbj1BQ1FfQWxsX0RlbW9fQ29udmVyc2lvbnNfX05ld3NsZXR0ZXJBdWRpZW5jZV8tX05ld3NsZXR0ZXJfU3BlZWRVcFJlbGVhc2VDeWNsZXNXaXRoQUlfMjAyNTA5MDQtTm9uZV9FeHBlcmltZW50LUZBTFNFJnV0bV9jb250ZW50PVNwZWVkVXBSZWxlYXNlQ3ljbGVzV2l0aEFJX1NpZ25VcEZvclRoZVdvcmtTaG9wX05vbmVfSGVhZGxpbmUlM0FTcGVlZFVwWW91clRlYW1zUmVsZWFzZUN5Y2xlc1dpdGhUaGVQb3dlck9mQUlfX19fTmV3c2xldHRlci1QcmltYXJ5UGxhY2VtZW50XzIwMjUwOTA0X3YxXyZ1dG1fbWVkaXVtPW5ld3NsZXR0ZXImdXRtX3NvdXJjZT1ieXRlcyZ1dG1fdGVybT1ib2R5LVFBV29sZg==" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1782160135">QA Wolf</a> has done for hundreds of companies, helping teams increase their releases by 5x and save 9 hours/week per engineer (on average).</p>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5; padding-left: 24px; padding-right: 24px;">And later this month, they’re leading a free workshop on <a href="https://click.convertkit-mail4.com/xmu0w0kg44b6hpwqg5zb5h2pxnlllbnhlemx/3ohphdu3qexp67br/aHR0cHM6Ly9hdHRlbmQucWF3b2xmLmNvbS9jaG9vc2luZy10aGUtcmlnaHQtYWktZm9yLXFhLWEtcHJhY3RpY2FsLWZyYW1ld29yay1mb3ItdGVjaG5pY2FsLWxlYWRlcnMvcmVnaXN0cmF0aW9uP3V0bV9jYW1wYWlnbj1BQ1FfQWxsX0RlbW9fQ29udmVyc2lvbnNfX05ld3NsZXR0ZXJBdWRpZW5jZV8tX05ld3NsZXR0ZXJfU3BlZWRVcFJlbGVhc2VDeWNsZXNXaXRoQUlfMjAyNTA5MDQtTm9uZV9FeHBlcmltZW50LUZBTFNFJnV0bV9jb250ZW50PVNwZWVkVXBSZWxlYXNlQ3ljbGVzV2l0aEFJX1NpZ25VcEZvclRoZVdvcmtTaG9wX05vbmVfSGVhZGxpbmUlM0FTcGVlZFVwWW91clRlYW1zUmVsZWFzZUN5Y2xlc1dpdGhUaGVQb3dlck9mQUlfX19fTmV3c2xldHRlci1QcmltYXJ5UGxhY2VtZW50XzIwMjUwOTA0X3YxXyZ1dG1fbWVkaXVtPW5ld3NsZXR0ZXImdXRtX3NvdXJjZT1ieXRlcyZ1dG1fdGVybT1ib2R5LUhvd1RvQ2hvb3NlVGhlUmlnaHRBSVRvb2xzRm9yUUE=" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1782160136">How to choose the right AI tools for QA</a>, based on the specific size and needs of your team.</p>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5; padding-left: 24px; padding-right: 24px;">Their Staff Engineering Lead, Yurij Mikhalevich will teach you:</p>
<ul>
<li>The three main paradigms for AI-powered QA testing</li>
<li>The benefits and tradeoffs of each method</li>
<li>A practical framework to evaluate these tools and find the best fit for your team</li>
</ul>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5; padding-left: 24px; padding-right: 24px;"><a href="https://click.convertkit-mail4.com/xmu0w0kg44b6hpwqg5zb5h2pxnlllbnhlemx/n2hohquvnz27wvf6/aHR0cHM6Ly9hdHRlbmQucWF3b2xmLmNvbS9jaG9vc2luZy10aGUtcmlnaHQtYWktZm9yLXFhLWEtcHJhY3RpY2FsLWZyYW1ld29yay1mb3ItdGVjaG5pY2FsLWxlYWRlcnMvcmVnaXN0cmF0aW9uP3V0bV9jYW1wYWlnbj1BQ1FfQWxsX0RlbW9fQ29udmVyc2lvbnNfX05ld3NsZXR0ZXJBdWRpZW5jZV8tX05ld3NsZXR0ZXJfU3BlZWRVcFJlbGVhc2VDeWNsZXNXaXRoQUlfMjAyNTA5MDQtTm9uZV9FeHBlcmltZW50LUZBTFNFJnV0bV9jb250ZW50PVNwZWVkVXBSZWxlYXNlQ3ljbGVzV2l0aEFJX1NpZ25VcEZvclRoZVdvcmtTaG9wX05vbmVfSGVhZGxpbmUlM0FTcGVlZFVwWW91clRlYW1zUmVsZWFzZUN5Y2xlc1dpdGhUaGVQb3dlck9mQUlfX19fTmV3c2xldHRlci1QcmltYXJ5UGxhY2VtZW50XzIwMjUwOTA0X3YxXyZ1dG1fbWVkaXVtPW5ld3NsZXR0ZXImdXRtX3NvdXJjZT1ieXRlcyZ1dG1fdGVybT1jdGEtU2lnblVwRm9yVGhlV29ya3Nob3BIZXJl" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1782160137">RSVP for the workshop here</a> – or get your own <a href="https://click.convertkit-mail4.com/xmu0w0kg44b6hpwqg5zb5h2pxnlllbnhlemx/wnh2h6uqrem09gu7/aHR0cHM6Ly9xYXdvbGYuY29tP3V0bV9jYW1wYWlnbj1BQ1FfQWxsX0RlbW9fQ29udmVyc2lvbnNfX05ld3NsZXR0ZXJBdWRpZW5jZV8tX05ld3NsZXR0ZXJfU3BlZWRVcFJlbGVhc2VDeWNsZXNXaXRoQUlfMjAyNTA5MDQtTm9uZV9FeHBlcmltZW50LUZBTFNFJnV0bV9jb250ZW50PVNwZWVkVXBSZWxlYXNlQ3ljbGVzV2l0aEFJX1NpZ25VcEZvclRoZVdvcmtTaG9wX05vbmVfSGVhZGxpbmUlM0FTcGVlZFVwWW91clRlYW1zUmVsZWFzZUN5Y2xlc1dpdGhUaGVQb3dlck9mQUlfX19fTmV3c2xldHRlci1QcmltYXJ5UGxhY2VtZW50XzIwMjUwOTA0X3YxXyZ1dG1fbWVkaXVtPW5ld3NsZXR0ZXImdXRtX3NvdXJjZT1ieXRlcyZ1dG1fdGVybT1jdGEtUGVyc29uYWxpemVkRGVtbw==" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1782160139">personalized demo</a> for your team to see it in action.</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="140" src="https://bytes.dev/images/content/pop-quiz.png" alt="Pop Quiz logo" style="max-width: 100%;"><h2 style="font-family: Paytone One, sans-serif; font-size: 28px; margin-top: 10px; text-transform: uppercase;">Pop Quiz</h2>
<div class="section-presenter" style="margin-bottom:50px;margin-top:15px">
<h4 style="font-size: 19px; margin-bottom: 0; padding-left: 24px; padding-right: 24px;">Sponsored by <a href="https://click.convertkit-mail4.com/xmu0w0kg44b6hpwqg5zb5h2pxnlllbnhlemx/reh8h9umqgk69nf2/aHR0cHM6Ly9nby5jbGVyay5jb20vZ0E4SVVQTg==" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1782160140">Clerk</a>
</h4>
<p style="font-family: Outfit, sans-serif; font-size: 16px; line-height: 1.5; margin-top: 5px; padding-left: 24px; padding-right: 24px;"><em>They just launched <a href="https://click.convertkit-mail4.com/xmu0w0kg44b6hpwqg5zb5h2pxnlllbnhlemx/reh8h9umqgk69nf2/aHR0cHM6Ly9nby5jbGVyay5jb20vZ0E4SVVQTg==" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1782160140">free trials in Clerk Billing</a>, so you can easily give your users a risk-free preview of premium features.</em></p>
</div>
</div>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5; padding-left: 24px; padding-right: 24px;">What gets logged?</p>
<pre class="language-js" style="background-color: #f9f9f9; border: 1px solid #f9f9f9; border-radius: 8px; color: #231F20; overflow: auto; padding: 24px;"><code class="language-js" style="font-size: 14px;"><span class="token keyword" style="color: #f38ba3; font-size: 14px;">let</span> sharedVariable <span class="token operator" style="color: #12b5e5; font-size: 14px;">=</span> <span class="token string" style="color: #f99157; font-size: 14px;">"initial"</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">;</span>
<span class="token function" style="color: #9d7dce; font-size: 14px;">setTimeout</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">(</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">(</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">)</span> <span class="token operator" style="color: #12b5e5; font-size: 14px;">=></span> <span class="token punctuation" style="color: #231F20; font-size: 14px;">{</span>
sharedVariable <span class="token operator" style="color: #12b5e5; font-size: 14px;">=</span> <span class="token string" style="color: #f99157; font-size: 14px;">"updated by first timeout"</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">;</span>
<span class="token punctuation" style="color: #231F20; font-size: 14px;">}</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">,</span> <span class="token number" style="color: #fcba28; font-size: 14px;">500</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">)</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">;</span>
<span class="token function" style="color: #9d7dce; font-size: 14px;">setTimeout</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">(</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">(</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">)</span> <span class="token operator" style="color: #12b5e5; font-size: 14px;">=></span> <span class="token punctuation" style="color: #231F20; font-size: 14px;">{</span>
<span class="token keyword" style="color: #f38ba3; font-size: 14px;">if</span> <span class="token punctuation" style="color: #231F20; font-size: 14px;">(</span>sharedVariable <span class="token operator" style="color: #12b5e5; font-size: 14px;">===</span> <span class="token string" style="color: #f99157; font-size: 14px;">"initial"</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">)</span> <span class="token punctuation" style="color: #231F20; font-size: 14px;">{</span>
console<span class="token punctuation" style="color: #231F20; font-size: 14px;">.</span><span class="token function" style="color: #9d7dce; font-size: 14px;">log</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">(</span><span class="token string" style="color: #f99157; font-size: 14px;">"Shared variable not yet updated"</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">)</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">;</span>
<span class="token punctuation" style="color: #231F20; font-size: 14px;">}</span> <span class="token keyword" style="color: #f38ba3; font-size: 14px;">else</span> <span class="token punctuation" style="color: #231F20; font-size: 14px;">{</span>
console<span class="token punctuation" style="color: #231F20; font-size: 14px;">.</span><span class="token function" style="color: #9d7dce; font-size: 14px;">log</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">(</span><span class="token string" style="color: #f99157; font-size: 14px;">"Shared variable was already updated"</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">)</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">;</span>
<span class="token punctuation" style="color: #231F20; font-size: 14px;">}</span>
<span class="token punctuation" style="color: #231F20; font-size: 14px;">}</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">,</span> <span class="token number" style="color: #fcba28; font-size: 14px;">500</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">)</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">;</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: 17px; line-height: 1.5;">Check out the <a href="https://click.convertkit-mail4.com/xmu0w0kg44b6hpwqg5zb5h2pxnlllbnhlemx/owhkhwuw42x2z0bv/aHR0cHM6Ly93d3cud2FycC5kZXYvYmxvZy9pbnRyb2R1Y2luZy13YXJwLWNvZGUtcHJvbXB0LXRvLXByb2Q=" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1782160125">Warp Code announcement post</a> if you want a deeper dive on everything they just launched, <em>without</em> me trauma dumping about my youth rodeo career. You can also use code <code style="font-size: 14px;">BYTES</code> if you want to try a month of Warp Pro for just $1.</p>
</li>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5;">React Native 1.0 is officially <a href="https://click.convertkit-mail4.com/xmu0w0kg44b6hpwqg5zb5h2pxnlllbnhlemx/8ghqh3uogmwrezbk/aHR0cHM6Ly94LmNvbS9zZWJhc3RpZW5sb3JiZXIvc3RhdHVzLzE5NjMyMjM4NzQ4NjgyNjExODg=" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1782160142">“on the horizon”</a> – which sounds great, until you realize that the Earth is round <span role="img" aria-label="upside-down face">🙃</span>.</p>
</li>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5;">Nick Khami wrote about <a href="https://click.convertkit-mail4.com/xmu0w0kg44b6hpwqg5zb5h2pxnlllbnhlemx/vqh3hmuonzmw20hg/aHR0cHM6Ly93d3cucGF0cm9uLmNvbS9ibG9nL3Bvc3Qvdml0ZS1zc3ItZ2V0c3RhdGljcHJvcHMtcmVwbGFjZW1lbnQv" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1782160143">building SSR with Vite</a> to create a custom replacement for <code style="font-size: 14px;">getStaticProps</code>.</p>
</li>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5;"><a href="https://click.convertkit-mail4.com/xmu0w0kg44b6hpwqg5zb5h2pxnlllbnhlemx/l2heh6ulo8qx57a6/aHR0cHM6Ly93d3cuY29udmV4LmRldi9jb21wb25lbnRzL2FnZW50" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1782160144">@convex-dev/agent</a> is Convex’s new open source component for building AI agents with just TypeScript. [sponsored]</p>
</li>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5;">Deno’s Fresh framework just released a <a href="https://click.convertkit-mail4.com/xmu0w0kg44b6hpwqg5zb5h2pxnlllbnhlemx/m2h7h6u3od24kpbm/aHR0cHM6Ly9kZW5vLmNvbS9ibG9nL2ZyZXNoLWFuZC12aXRl" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1782160145">v2.0 beta</a> with Vite support, so you can now run Fresh as a Vite plugin with all that sweet Vitey goodness baked right in.</p>
</li>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5;">Dimitri Mitropoulos wrote about <a href="https://click.convertkit-mail4.com/xmu0w0kg44b6hpwqg5zb5h2pxnlllbnhlemx/dphehmueqldpz9bm/aHR0cHM6Ly92ZXJjZWwuY29tL2Jsb2cvc3RyZXNzLXRlc3RpbmctYmlvbWVzLW5vZmxvYXRpbmdwcm9taXNlcy1saW50LXJ1bGU=" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1782160146">stress testing Biome’s <code style="font-size: 14px;">noFloatingPromises</code> lint rule</a> – which is like that one time I stress tested my heart by speed running a haunted house while on MDMA.</p>
</li>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5;">Google just released <a href="https://click.convertkit-mail4.com/xmu0w0kg44b6hpwqg5zb5h2pxnlllbnhlemx/e0hph0u7k8mr98c8/aHR0cHM6Ly9kZXZlbG9wZXJzLmdvb2dsZWJsb2cuY29tL2VuL2ludHJvZHVjaW5nLWVtYmVkZGluZ2dlbW1hLw==" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1782160147">EmbeddingGemma</a>, an open embedding model designed to deliver high performance for on-device AI.</p>
</li>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5;">Vercel just shared their <a href="https://click.convertkit-mail4.com/xmu0w0kg44b6hpwqg5zb5h2pxnlllbnhlemx/7qh7h2u90rdnvnbz/aHR0cHM6Ly92ZXJjZWwuY29tL2Jsb2cvb3Blbi1zZGstc3RyYXRlZ3k=" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1782160148">Open SDK strategy</a> to “articulate their commitment” to open source, community, portability, freedom of choice, democracy, America, world peace, Taylor Swift, and those weird little stamp tattoos that come in the Cracker Jacks box 🫡.</p>
</li>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5;">Datadog created a free ebook called <a href="https://click.convertkit-mail4.com/xmu0w0kg44b6hpwqg5zb5h2pxnlllbnhlemx/owhkhwuw42xq30hv/aHR0cHM6Ly93d3cuZGF0YWRvZ2hxLmNvbS9yZXNvdXJjZXMvNS13YXlzLXJlZHVjZS1jb250YWluZXItY29zdHMvP3V0bV9jYW1wYWlnbj1kZy1pbmZyYS13dy1rOHMtZWNzLWVib29rLWJ5dGVzJnV0bV9tZWRpdW09bmV3c2xldHRlciZ1dG1fc291cmNlPWJ5dGVzZGV2" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1782160149">5 ways to reduce container costs</a>, and I’m 90% sure this isn’t a Pyrex vs. Tupperware debate. [sponsored]</p>
</li>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5;">TkDodo wrote about <a href="https://click.convertkit-mail4.com/xmu0w0kg44b6hpwqg5zb5h2pxnlllbnhlemx/z2hgh7ueoq5l9zfp/aHR0cHM6Ly90a2RvZG8uZXUvYmxvZy9kZXJpdmluZy1jbGllbnQtc3RhdGUtZnJvbS1zZXJ2ZXItc3RhdGU=" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1782160150">deriving client state from server state</a>.</p>
</li>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5;">Lyra wrote an article called <a href="https://click.convertkit-mail4.com/xmu0w0kg44b6hpwqg5zb5h2pxnlllbnhlemx/p8hehqu49nrqkvuq/aHR0cHM6Ly9seXJhLmhvcnNlL2Jsb2cvMjAyNS8wOC95b3UtZG9udC1uZWVkLWpzLw==" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1782160151">You no longer need JavaScript</a> – unless you want to find romantic love and feel accepted by your peers at some point in your life.</p>
</li>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5;">Jake Archibald wrote about <a href="https://click.convertkit-mail4.com/xmu0w0kg44b6hpwqg5zb5h2pxnlllbnhlemx/x0hph3uen5kqr8c5/aHR0cHM6Ly9qYWtlYXJjaGliYWxkLmNvbS8yMDI1L21ha2luZy14bWwtaHVtYW4tcmVhZGFibGUtd2l0aG91dC14c2x0Lw==" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1782160152">making XML human-readable without XSLT</a>, which he calls an “esoteric corner of the web.” But if you could see my Chrome history, you would know that I was born in the <del>dark</del> esoteric, <a href="https://click.convertkit-mail4.com/xmu0w0kg44b6hpwqg5zb5h2pxnlllbnhlemx/6qhehoulpmx9kkao/aHR0cHM6Ly95b3V0dS5iZS9icG1OZ1B6a2xtUT90PTcw" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1782160153">molded by it</a>.</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="140" src="https://bytes.dev/images/content/pop-quiz.png" alt="Pop Quiz logo" style="max-width: 100%;"><h2 style="font-family: Paytone One, sans-serif; font-size: 28px; margin-top: 10px; text-transform: uppercase;">Pop Quiz: Answer</h2>
<div class="section-presenter" style="margin-bottom:50px;margin-top:15px"><h4 style="font-size: 19px; margin-bottom: 0; padding-left: 24px; padding-right: 24px;">Sponsored by <a href="https://click.convertkit-mail4.com/xmu0w0kg44b6hpwqg5zb5h2pxnlllbnhlemx/reh8h9umqgk69nf2/aHR0cHM6Ly9nby5jbGVyay5jb20vZ0E4SVVQTg==" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1782160140">Clerk</a>
</h4></div>
</div>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5; padding-left: 24px; padding-right: 24px;">What gets logged?</p>
<pre class="language-js" style="background-color: #f9f9f9; border: 1px solid #f9f9f9; border-radius: 8px; color: #231F20; overflow: auto; padding: 24px;"><code class="language-js" style="font-size: 14px;"><span class="token keyword" style="color: #f38ba3; font-size: 14px;">let</span> sharedVariable <span class="token operator" style="color: #12b5e5; font-size: 14px;">=</span> <span class="token string" style="color: #f99157; font-size: 14px;">"initial"</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">;</span>
<span class="token function" style="color: #9d7dce; font-size: 14px;">setTimeout</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">(</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">(</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">)</span> <span class="token operator" style="color: #12b5e5; font-size: 14px;">=></span> <span class="token punctuation" style="color: #231F20; font-size: 14px;">{</span>
sharedVariable <span class="token operator" style="color: #12b5e5; font-size: 14px;">=</span> <span class="token string" style="color: #f99157; font-size: 14px;">"updated by first timeout"</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">;</span>
<span class="token punctuation" style="color: #231F20; font-size: 14px;">}</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">,</span> <span class="token number" style="color: #fcba28; font-size: 14px;">500</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">)</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">;</span>
<span class="token function" style="color: #9d7dce; font-size: 14px;">setTimeout</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">(</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">(</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">)</span> <span class="token operator" style="color: #12b5e5; font-size: 14px;">=></span> <span class="token punctuation" style="color: #231F20; font-size: 14px;">{</span>
<span class="token keyword" style="color: #f38ba3; font-size: 14px;">if</span> <span class="token punctuation" style="color: #231F20; font-size: 14px;">(</span>sharedVariable <span class="token operator" style="color: #12b5e5; font-size: 14px;">===</span> <span class="token string" style="color: #f99157; font-size: 14px;">"initial"</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">)</span> <span class="token punctuation" style="color: #231F20; font-size: 14px;">{</span>
console<span class="token punctuation" style="color: #231F20; font-size: 14px;">.</span><span class="token function" style="color: #9d7dce; font-size: 14px;">log</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">(</span><span class="token string" style="color: #f99157; font-size: 14px;">"Shared variable not yet updated"</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">)</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">;</span>
<span class="token punctuation" style="color: #231F20; font-size: 14px;">}</span> <span class="token keyword" style="color: #f38ba3; font-size: 14px;">else</span> <span class="token punctuation" style="color: #231F20; font-size: 14px;">{</span>
console<span class="token punctuation" style="color: #231F20; font-size: 14px;">.</span><span class="token function" style="color: #9d7dce; font-size: 14px;">log</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">(</span><span class="token string" style="color: #f99157; font-size: 14px;">"Shared variable was already updated"</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">)</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">;</span>
<span class="token punctuation" style="color: #231F20; font-size: 14px;">}</span>
<span class="token punctuation" style="color: #231F20; font-size: 14px;">}</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">,</span> <span class="token number" style="color: #fcba28; font-size: 14px;">500</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">)</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">;</span>
</code></pre>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5; padding-left: 24px; padding-right: 24px;">In JavaScript, the execution order for <code style="font-size: 14px;">setTimeout</code> callbacks with identical delays aren’t deterministic. This means we aren’t guaranteed that the first timeout callback will execute first (which can be the cause of some nasty and difficult to reproduce bugs). In reality it’s almost always what you’d expect (“Shared variable was already updated”), but it’s best not to rely on that behavior.</p>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5; padding-left: 24px; padding-right: 24px;">Here’s a <a href="https://click.convertkit-mail4.com/xmu0w0kg44b6hpwqg5zb5h2pxnlllbnhlemx/kkhmh2un8kzxd5hl/aHR0cHM6Ly93d3cueW91dHViZS5jb20vd2F0Y2g_dj04YUdoWlFrb0ZiUQ==" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1782160154">famous talk</a> by Philip Roberts to learn more about the event loop and how JavaScript handles asynchronous code.</p>
<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://click.convertkit-mail4.com/xmu0w0kg44b6hpwqg5zb5h2pxnlllbnhlemx/58hvh8ug5r36v0s6/aHR0cHM6Ly9ieXRlcy5kZXYvYWR2ZXJ0aXNl" url-id="1782160155">Sponsor Bytes</a></div>
<div style="margin-bottom:20px"><a style="color: #FCBA28; font-size: 14px; font-weight: 600; text-decoration: underline;" href="https://click.convertkit-mail4.com/xmu0w0kg44b6hpwqg5zb5h2pxnlllbnhlemx/25h2h9u37klmv0u3/aHR0cHM6Ly9ieXRlcy5kZXYvc2hhcmU=" url-id="1782160156">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://click.convertkit-mail4.com/xmu0w0kg44b6hpwqg5zb5h2pxnlllbnhlemx/qvh8h8ud89ek70ul/aHR0cHM6Ly91aS5kZXY=" url-id="1782160157">ui.dev</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://click.convertkit-mail4.com/xmu0w0kg44b6hpwqg5zb5h2pxnlllbnhlemx/g3hnhwume4gqdzfr/aHR0cHM6Ly9ieXRlcy5kZXYvdW5zdWJzY3JpYmU=" style="color: #9B9890;" url-id="1782160158">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://unsubscribe.convertkit-mail4.com/xmu0w0kg44b6hpwqg5zb5h2pxnlllbnhlemx">Unsubscribe</a></span>
<!-- -->
<img src="https://open.convertkit-mail4.com/xmu0w0kg44b6hpwqg5zb5h2pxnlllbnhlemx" alt="">
</body>
</html>