<!DOCTYPE html>
<html>
<head>
<title>Bytes: Deno gets boring</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/bytes-banner-rounded.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> The Universal Studios tour on <code style="font-size: 14px;">bun install</code>, deterministic dating apps, and 1,600 calories of TanStack.</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/68uxdxk733b8h5lwqv3cohpl5rkkkh9hlqvo/n2hohquv35l7pks6/aHR0cHM6Ly9ieXRlcy5kZXYvYXJjaGl2ZXMvNDIz" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1785257117">#423</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/floating-dog.jpg" alt="Little dog floating while tied to balloons" 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 you finally free yourself from node_modules<!-- --> </p>
</div>
<h3 style="font-size: 24px; margin-bottom: 0; padding-left: 24px; padding-right: 24px;">Deno gets boring</h3>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5; padding-left: 24px; padding-right: 24px;">On Wednesday, Deno stans got some good news and some bad news.</p>
<ul>
<li>Good news: <a href="https://click.convertkit-mail4.com/68uxdxk733b8h5lwqv3cohpl5rkkkh9hlqvo/48hvh7umrq7xe2sx/aHR0cHM6Ly9kZW5vLmNvbS9ibG9nL3YyLjU=" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1785257118">Deno 2.5</a> launched <span role="img" aria-label="party popper">🎉</span>
</li>
<li>Bad news: Larry Ellison made $108 billion <span role="img" aria-label="upside-down face">🙃</span>
</li>
</ul>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5; padding-left: 24px; padding-right: 24px;">You can’t win ‘em all – but hey, at least we’ve got permissions in our <code style="font-size: 14px;">deno.json</code> config files now. This lets you define named permission sets once and reuse them everywhere, instead of repeatedly typing out <code style="font-size: 14px;">--allow-read --allow-env --allow-run</code> flags like a caveman. Here’s what it looks like:</p>
<pre style="background-color: #f9f9f9; border: 1px solid #f9f9f9; border-radius: 8px; color: #231F20; padding: 24px;"><code class="language-json" style="font-size: 14px;">{
"permissions": {
"process-data": {
"read": ["./data"],
"write": ["./data"]
}
},
"tasks": {
"dev": "deno run -P=process-data main.ts"
}
}
</code></pre>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5; padding-left: 24px; padding-right: 24px;">That’s definitely the biggest feature in this release, but they also shipped a few more cool updates:</p>
<ul>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5;"><strong style="font-weight: 600;">HTML entrypoints in <code style="font-size: 14px;">deno bundle</code></strong> – You can now point at an <code style="font-size: 14px;">index.html</code> and Deno will scoop up all your scripts and styles then spit out a new build that’s ready to ship.</p>
</li>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5;"><strong style="font-weight: 600;">Testing hooks</strong> – Deno finally added <code style="font-size: 14px;">beforeAll</code>, <code style="font-size: 14px;">afterEach</code>, and friends to <code style="font-size: 14px;">Deno.test</code>, so you don’t have to copy-paste the same setup/teardown code across every test file.</p>
</li>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5;"><strong style="font-weight: 600;">Permissions audit log</strong> – They added a new <code style="font-size: 14px;">DENO_AUDIT_PERMISSIONS</code> env var that can generate a JSON trail for every file, env var, or socket your app touches. Helpful for debugging and/or shaming your coworkers.</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> Deno’s early idealism around being “ESM only/secure by default/TS-first” is shifting towards a more pragmatic focus on things like smoother DX and stronger Node compatibility. Yes that’s a little more boring, but it’s an important part of growing up.</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/68uxdxk733b8h5lwqv3cohpl5rkkkh9hlqvo/wnh2h6uqwvl0prt7/aHR0cHM6Ly9mYWNlYm9vay5jb20vc2hhcmVyL3NoYXJlci5waHA_dT1odHRwcyUzQSUyRiUyRmJ5dGVzLmRldiUyRmFyY2hpdmVzJTJGNDIz" rel="noopener" style="color: #12b5e5; font-weight: 600; padding-left: 5px; text-decoration: none;" target="_blank" url-id="1785257119"><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/68uxdxk733b8h5lwqv3cohpl5rkkkh9hlqvo/reh8h9um0vo6r0b2/aHR0cHM6Ly93d3cubGlua2VkaW4uY29tL3NoYXJpbmcvc2hhcmUtb2Zmc2l0ZS8_dXJsPWh0dHBzJTNBJTJGJTJGYnl0ZXMuZGV2JTJGYXJjaGl2ZXMlMkY0MjM=" rel="noopener" style="color: #12b5e5; font-weight: 600; padding-left: 5px; text-decoration: none;" target="_blank" url-id="1785257120"><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/68uxdxk733b8h5lwqv3cohpl5rkkkh9hlqvo/08hwhgu2dwpl52sl/aHR0cHM6Ly90d2l0dGVyLmNvbS9pbnRlbnQvdHdlZXQvP3RleHQ9QnJlYWtpbmclMjBkb3duJTIwJTQwZGVub19sYW5kJTIwMi41JTIwYW5kJTIwaG93JTIwdG8lMjB1c2UlMjBib3JlZG9tJTIwYXMlMjBhJTIwc3RyYXRlZ3kmdXJsPWh0dHBzJTNBJTJGJTJGYnl0ZXMuZGV2JTJGYXJjaGl2ZXMlMkY0MjM=" rel="noopener" style="color: #12b5e5; font-weight: 600; padding-left: 5px; text-decoration: none;" target="_blank" url-id="1785257121"><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/68uxdxk733b8h5lwqv3cohpl5rkkkh9hlqvo/8ghqh3uolp7rvqtk/bWFpbHRvOj9ib2R5PVRob3VnaHQlMjB5b3UlMjdkJTIwbG92ZSUyMHRoaXMlMjB3ZWVrJTI3cyUyMEJ5dGVzJTBBLS0tJTBBQnJlYWtpbmclMjBkb3duJTIwJTQwZGVub19sYW5kJTIwMi41JTIwYW5kJTIwaG93JTIwdG8lMjB1c2UlMjBib3JlZG9tJTIwYXMlMjBhJTIwc3RyYXRlZ3klMEFodHRwcyUzQSUyRiUyRmJ5dGVzLmRldiUyRmFyY2hpdmVzJTJGNDIzJnN1YmplY3Q9WW91JTIwbGlrZSUyMGNvcm5icmVhZCUzRg==" rel="noopener" style="color: #12b5e5; font-weight: 600; padding-left: 5px; text-decoration: none;" target="_blank" url-id="1785257122"><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/eric-binoculars.jpg" alt="Eric Andre holding old-fashioned binoculars" 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;">Watching your team wait around for two hours before they can deploy<!-- --> </p>
</div>
<h3 style="font-size: 24px; margin-bottom: 0; padding-left: 24px; padding-right: 24px;"><a href="https://click.convertkit-mail4.com/68uxdxk733b8h5lwqv3cohpl5rkkkh9hlqvo/vqh3hmuop3qw7gcg/aHR0cHM6Ly9hdHRlbmQucWF3b2xmLmNvbS9jaG9vc2luZy10aGUtcmlnaHQtYWktZm9yLXFhLWEtcHJhY3RpY2FsLWZyYW1ld29yay1mb3ItdGVjaG5pY2FsLWxlYWRlcnMvcmVnaXN0cmF0aW9uP3V0bV9jYW1wYWlnbj1BQ1FfQWxsX0RlbW9fQ29udmVyc2lvbnNfX05ld3NsZXR0ZXJBdWRpZW5jZV8tX05ld3NsZXR0ZXJfU3BlZWRVcFJlbGVhc2VDeWNsZXNXaXRoQUlfMjAyNTA5MTItTm9uZV9FeHBlcmltZW50LUZBTFNFJnV0bV9jb250ZW50PVNwZWVkVXBSZWxlYXNlQ3ljbGVzV2l0aEFJX1NpZ25VcEZvclRoZVdvcmtTaG9wX05vbmVfSGVhZGxpbmUlM0FTcGVlZFVwWW91clRlYW1zUmVsZWFzZUN5Y2xlc1dpdGhUaGVQb3dlck9mQUlfX19fTmV3c2xldHRlci1QcmltYXJ5UGxhY2VtZW50XzIwMjUwOTEyX3YxXyZ1dG1fbWVkaXVtPW5ld3NsZXR0ZXImdXRtX3NvdXJjZT1ieXRlcyZ1dG1fdGVybT1oZWFkbGluZS1TcGVlZFVwWW91clRlYW1zUmVsZWFzZUN5Y2xlc1dpdGhUaGVQb3dlck9mQUk=" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1785257123">Free Workshop: How Engineering Leaders are using AI to speed up release cycles</a></h3>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5; padding-left: 24px; padding-right: 24px;">AI-powered QA tools are popping up everywhere, but how do you choose the right one for your team?</p>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5; padding-left: 24px; padding-right: 24px;">That’s why <a href="https://click.convertkit-mail4.com/68uxdxk733b8h5lwqv3cohpl5rkkkh9hlqvo/l2heh6ul3vdx9wf6/aHR0cHM6Ly93d3cucWF3b2xmLmNvbS8_dXRtX2NhbXBhaWduPUFDUV9BbGxfRGVtb19Db252ZXJzaW9uc19fTmV3c2xldHRlckF1ZGllbmNlXy1fTmV3c2xldHRlcl9TcGVlZFVwUmVsZWFzZUN5Y2xlc1dpdGhBSV8yMDI1MDkxMi1Ob25lX0V4cGVyaW1lbnQtRkFMU0UmdXRtX2NvbnRlbnQ9U3BlZWRVcFJlbGVhc2VDeWNsZXNXaXRoQUlfU2lnblVwRm9yVGhlV29ya1Nob3BfTm9uZV9IZWFkbGluZSUzQVNwZWVkVXBZb3VyVGVhbXNSZWxlYXNlQ3ljbGVzV2l0aFRoZVBvd2VyT2ZBSV9fX19OZXdzbGV0dGVyLVByaW1hcnlQbGFjZW1lbnRfMjAyNTA5MTJfdjFfJnV0bV9tZWRpdW09bmV3c2xldHRlciZ1dG1fc291cmNlPWJ5dGVzJnV0bV90ZXJtPWJvZHktUUFXb2xm" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1785257124">QA Wolf</a> is hosting a workshop specifically for engineering leaders on <a href="https://click.convertkit-mail4.com/68uxdxk733b8h5lwqv3cohpl5rkkkh9hlqvo/m2h7h6u380l4p2am/aHR0cHM6Ly9hdHRlbmQucWF3b2xmLmNvbS9jaG9vc2luZy10aGUtcmlnaHQtYWktZm9yLXFhLWEtcHJhY3RpY2FsLWZyYW1ld29yay1mb3ItdGVjaG5pY2FsLWxlYWRlcnMvcmVnaXN0cmF0aW9uP3V0bV9jYW1wYWlnbj1BQ1FfQWxsX0RlbW9fQ29udmVyc2lvbnNfX05ld3NsZXR0ZXJBdWRpZW5jZV8tX05ld3NsZXR0ZXJfU3BlZWRVcFJlbGVhc2VDeWNsZXNXaXRoQUlfMjAyNTA5MTItTm9uZV9FeHBlcmltZW50LUZBTFNFJnV0bV9jb250ZW50PVNwZWVkVXBSZWxlYXNlQ3ljbGVzV2l0aEFJX1NpZ25VcEZvclRoZVdvcmtTaG9wX05vbmVfSGVhZGxpbmUlM0FTcGVlZFVwWW91clRlYW1zUmVsZWFzZUN5Y2xlc1dpdGhUaGVQb3dlck9mQUlfX19fTmV3c2xldHRlci1QcmltYXJ5UGxhY2VtZW50XzIwMjUwOTEyX3YxXyZ1dG1fbWVkaXVtPW5ld3NsZXR0ZXImdXRtX3NvdXJjZT1ieXRlcyZ1dG1fdGVybT1ib2R5LUhvd1RvQ2hvb3NlVGhlUmlnaHRBSVRvb2xzRm9yUUE=" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1785257125">How to choose the best AI tools for your dev team</a>.</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 share:</p>
<ul>
<li>The three main paradigms for AI-powered QA testing</li>
<li>The benefits and tradeoffs of each method</li>
<li>His framework for evaluating these tools to 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/68uxdxk733b8h5lwqv3cohpl5rkkkh9hlqvo/dphehmue0w2pgvtm/aHR0cHM6Ly9hdHRlbmQucWF3b2xmLmNvbS9jaG9vc2luZy10aGUtcmlnaHQtYWktZm9yLXFhLWEtcHJhY3RpY2FsLWZyYW1ld29yay1mb3ItdGVjaG5pY2FsLWxlYWRlcnMvcmVnaXN0cmF0aW9uP3V0bV9jYW1wYWlnbj1BQ1FfQWxsX0RlbW9fQ29udmVyc2lvbnNfX05ld3NsZXR0ZXJBdWRpZW5jZV8tX05ld3NsZXR0ZXJfU3BlZWRVcFJlbGVhc2VDeWNsZXNXaXRoQUlfMjAyNTA5MTItTm9uZV9FeHBlcmltZW50LUZBTFNFJnV0bV9jb250ZW50PVNwZWVkVXBSZWxlYXNlQ3ljbGVzV2l0aEFJX1NpZ25VcEZvclRoZVdvcmtTaG9wX05vbmVfSGVhZGxpbmUlM0FTcGVlZFVwWW91clRlYW1zUmVsZWFzZUN5Y2xlc1dpdGhUaGVQb3dlck9mQUlfX19fTmV3c2xldHRlci1QcmltYXJ5UGxhY2VtZW50XzIwMjUwOTEyX3YxXyZ1dG1fbWVkaXVtPW5ld3NsZXR0ZXImdXRtX3NvdXJjZT1ieXRlcyZ1dG1fdGVybT1jdGEtU2lnblVwRm9yVGhlV29ya3Nob3BIZXJl" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1785257126">Sign up for the workshop here</a> – or get your own <a href="https://click.convertkit-mail4.com/68uxdxk733b8h5lwqv3cohpl5rkkkh9hlqvo/e0hph0u70wdrgvb8/aHR0cHM6Ly93d3cucWF3b2xmLmNvbS8_dXRtX2NhbXBhaWduPUFDUV9BbGxfRGVtb19Db252ZXJzaW9uc19fTmV3c2xldHRlckF1ZGllbmNlXy1fTmV3c2xldHRlcl9TcGVlZFVwUmVsZWFzZUN5Y2xlc1dpdGhBSV8yMDI1MDkxMi1Ob25lX0V4cGVyaW1lbnQtRkFMU0UmdXRtX2NvbnRlbnQ9U3BlZWRVcFJlbGVhc2VDeWNsZXNXaXRoQUlfU2lnblVwRm9yVGhlV29ya1Nob3BfTm9uZV9IZWFkbGluZSUzQVNwZWVkVXBZb3VyVGVhbXNSZWxlYXNlQ3ljbGVzV2l0aFRoZVBvd2VyT2ZBSV9fX19OZXdzbGV0dGVyLVByaW1hcnlQbGFjZW1lbnRfMjAyNTA5MTJfdjFfJnV0bV9tZWRpdW09bmV3c2xldHRlciZ1dG1fc291cmNlPWJ5dGVzJnV0bV90ZXJtPWN0YS1QZXJzb25hbGl6ZWREZW1v" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1785257127">personalized QA Wolf demo</a> to see how they’ve helped hundreds of teams increase their release cadence by 5x.</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/68uxdxk733b8h5lwqv3cohpl5rkkkh9hlqvo/7qh7h2u9opxn75uz/aHR0cHM6Ly9zZW50cnkuaW8vcHJvZHVjdC9sb2dzLz91dG1fY2FtcGFpZ249bG9ncy1meTI2cTMtbG9nc2xhdW5jaCZ1dG1fY29udGVudD1uZXdzbGV0dGVyLWxvZ3MtZ2EtbGF1bmNoLXRyeXNlbnRyeSZ1dG1fbWVkaXVtPXBhaWQtY29tbXVuaXR5JnV0bV9zb3VyY2U9Ynl0ZXM=" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1785257128">Sentry</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>It now lets you <a href="https://click.convertkit-mail4.com/68uxdxk733b8h5lwqv3cohpl5rkkkh9hlqvo/7qh7h2u9opxn75uz/aHR0cHM6Ly9zZW50cnkuaW8vcHJvZHVjdC9sb2dzLz91dG1fY2FtcGFpZ249bG9ncy1meTI2cTMtbG9nc2xhdW5jaCZ1dG1fY29udGVudD1uZXdzbGV0dGVyLWxvZ3MtZ2EtbGF1bmNoLXRyeXNlbnRyeSZ1dG1fbWVkaXVtPXBhaWQtY29tbXVuaXR5JnV0bV9zb3VyY2U9Ynl0ZXM=" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1785257128">view logs in context</a>, so you can see them in the same view as errors and performance to easily figure out what happened and why, without having to switch tools.</em></p>
</div>
</div>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5; padding-left: 24px; padding-right: 24px;">Nested loops aren’t ideal, but sometimes they’re unavoidable. Given the nested loop below, how can we break out of the nested loop when <code style="font-size: 14px;">j === 2</code>?</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;">function</span> <span class="token function" style="color: #9d7dce; font-size: 14px;">loop</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;">for</span> <span class="token punctuation" style="color: #231F20; font-size: 14px;">(</span><span class="token keyword" style="color: #f38ba3; font-size: 14px;">let</span> i <span class="token operator" style="color: #12b5e5; font-size: 14px;">=</span> <span class="token number" style="color: #fcba28; font-size: 14px;">0</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">;</span> i <span class="token operator" style="color: #12b5e5; font-size: 14px;"><</span> <span class="token number" style="color: #fcba28; font-size: 14px;">4</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">;</span> i<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 punctuation" style="color: #231F20; font-size: 14px;">{</span>
<span class="token keyword" style="color: #f38ba3; font-size: 14px;">for</span> <span class="token punctuation" style="color: #231F20; font-size: 14px;">(</span><span class="token keyword" style="color: #f38ba3; font-size: 14px;">let</span> j <span class="token operator" style="color: #12b5e5; font-size: 14px;">=</span> <span class="token number" style="color: #fcba28; font-size: 14px;">0</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">;</span> j <span class="token operator" style="color: #12b5e5; font-size: 14px;"><</span> <span class="token number" style="color: #fcba28; font-size: 14px;">4</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">;</span> j<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 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>j <span class="token operator" style="color: #12b5e5; font-size: 14px;">===</span> <span class="token number" style="color: #fcba28; font-size: 14px;">2</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 comment" style="color: rgb(167, 167, 167); font-size: 14px;">// Break out here</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>
</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;">Right on cue, a new, Rust-based JavaScript runtime named <a href="https://click.convertkit-mail4.com/68uxdxk733b8h5lwqv3cohpl5rkkkh9hlqvo/owhkhwuwrl0qvvuv/aHR0cHM6Ly90cnlhbmRyb21lZGEuZGV2Lw==" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1785257129">Andromeda</a> just launched. We can’t prove that Old Larry and the Big O funded this project, but we also can’t <em>not</em> prove it.</p>
</li>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5;">Adam Argyle compiled a list of <a href="https://click.convertkit-mail4.com/68uxdxk733b8h5lwqv3cohpl5rkkkh9hlqvo/z2hgh7ue3rmlv2bp/aHR0cHM6Ly9uZXJkeS5kZXYvY2FzY2FkaW5nLXNlY3JldC1zYXVjZQ==" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1785257130">100+ new CSS features</a> that have come out in the past five years. And no, you can’t use any notes on the final, so get studying.</p>
</li>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5;">CodeRabbit created a <a href="https://click.convertkit-mail4.com/68uxdxk733b8h5lwqv3cohpl5rkkkh9hlqvo/p8hehqu4z5pq0ntq/aHR0cHM6Ly9jb2RlcmFiYml0LmxpbmsvYnl0ZXM=" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1785257131">free VS Code extension</a> that gives you advanced-level AI code reviews right in your editor. It understands the context of your whole codebase and gives you line-by-line feedback with one-click fix suggestions you can implement instantly. [sponsored]</p>
</li>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5;"><a href="https://click.convertkit-mail4.com/68uxdxk733b8h5lwqv3cohpl5rkkkh9hlqvo/x0hph3uewd4q6qu5/aHR0cHM6Ly9tZWRpYWJ1bm55LmRldi8=" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1785257132">Mediabunny</a> is a JavaScript library for reading, writing, and converting video and audio files directly in the browser.</p>
</li>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5;">Lydia Hallie wrote this in-depth article that takes you <a href="https://click.convertkit-mail4.com/68uxdxk733b8h5lwqv3cohpl5rkkkh9hlqvo/6qhehoul7639g3fo/aHR0cHM6Ly9idW4uY29tL2Jsb2cvYmVoaW5kLXRoZS1zY2VuZXMtb2YtYnVuLWluc3RhbGw=" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1785257133">behind the scenes of <code style="font-size: 14px;">bun install</code></a>. Not quite as cool as Universal Studios’ behind-the-scenes tour of <em>Backdraft,</em> but it probably won’t inspire thousands of 10-year-old boys to become pyromaniacs. So, tradeoffs.</p>
</li>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5;">Matt Perry wrote a new <a href="https://click.convertkit-mail4.com/68uxdxk733b8h5lwqv3cohpl5rkkkh9hlqvo/kkhmh2unl2oxqpal/aHR0cHM6Ly9tb3Rpb24uZGV2L2RvY3MvcmVhY3QtdGFpbHdpbmQ=" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1785257134">Motion x Tailwind CSS guide</a> on how to use two of the best frontend libraries of all time together.</p>
</li>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5;"><a href="https://click.convertkit-mail4.com/68uxdxk733b8h5lwqv3cohpl5rkkkh9hlqvo/58hvh8ugmo468ei6/aHR0cHM6Ly93d3cuZzJpLmNvL3doeS1nMmk_dXRtX2NhbXBhaWduPUZpcmVzaGlwJTIwTmV3c2xldHRlciZ1dG1fbWVkaXVtPUFEJnV0bV9zb3VyY2U9TmV3c2xldHRlcg==" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1785257135">G2i connects you with pre-vetted contract and full-time developers</a> – so you can get top talent with 5+ years of experience across any major tech stack, without having to go through endless piles of AI-slop resumes. They’ve helped teams at Meta, Microsoft, 1Password, and more to hire developers faster and with full transparency through recorded technical interviews. And they’ve got 8,000 devs ready to go. [sponsored]</p>
</li>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5;">Maxi Ferreira created this <a href="https://click.convertkit-mail4.com/68uxdxk733b8h5lwqv3cohpl5rkkkh9hlqvo/25h2h9u320qmprh3/aHR0cHM6Ly9mcm9udGVuZGF0c2NhbGUuY29tL2Jsb2cvdGFuc3RhY2stZGIv" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1785257136">interactive guide to TanStack DB</a> – which still sounds like the name of a 1,600-calorie breakfast combo at IHOP.</p>
</li>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5;">Tom MacWright (Val Town CTO/co-founder) wrote about <a href="https://click.convertkit-mail4.com/68uxdxk733b8h5lwqv3cohpl5rkkkh9hlqvo/qvh8h8udr2lkm7tl/aHR0cHM6Ly9ibG9nLnZhbC50b3duL2dhcmRlbmluZy1kZXBlbmRlbmNpZXM=" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1785257137">how to keep <code style="font-size: 14px;">package.json</code> under control</a>.</p>
</li>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5;">Clerk just introduced <a href="https://click.convertkit-mail4.com/68uxdxk733b8h5lwqv3cohpl5rkkkh9hlqvo/9qhzhdudp3e5vxs9/aHR0cHM6Ly9nby5jbGVyay5jb20vekJ4czVreQ==" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1785257139">free trials for subscriptions</a>, which lets you use Clerk Billing to easily enable free trials for any type of subscription tier on your application – with best practices built in. [sponsored]</p>
</li>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5;">Nico Albanese gave a great talk on <a href="https://click.convertkit-mail4.com/68uxdxk733b8h5lwqv3cohpl5rkkkh9hlqvo/3ohphdu379kp59tr/aHR0cHM6Ly93d3cueW91dHViZS5jb20vd2F0Y2g_dj1UakFidHNQQy1Tdw==" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1785257140">building an AI agent in 10 mins with AI SDK 5</a>.</p>
</li>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5;">Horace He wrote this in-depth article on <a href="https://click.convertkit-mail4.com/68uxdxk733b8h5lwqv3cohpl5rkkkh9hlqvo/48hvh7umrq7xd2fx/aHR0cHM6Ly90aGlua2luZ21hY2hpbmVzLmFpL2Jsb2cvZGVmZWF0aW5nLW5vbmRldGVybWluaXNtLWluLWxsbS1pbmZlcmVuY2Uv" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1785257142">defeating nondeterminism in LLM inference</a>. After that, he plans to move on to defeating nondeterminism in romantic relationships so we can all just save each other a lot of time.</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/68uxdxk733b8h5lwqv3cohpl5rkkkh9hlqvo/7qh7h2u9opxn75uz/aHR0cHM6Ly9zZW50cnkuaW8vcHJvZHVjdC9sb2dzLz91dG1fY2FtcGFpZ249bG9ncy1meTI2cTMtbG9nc2xhdW5jaCZ1dG1fY29udGVudD1uZXdzbGV0dGVyLWxvZ3MtZ2EtbGF1bmNoLXRyeXNlbnRyeSZ1dG1fbWVkaXVtPXBhaWQtY29tbXVuaXR5JnV0bV9zb3VyY2U9Ynl0ZXM=" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1785257128">Sentry</a>
</h4></div>
</div>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5; padding-left: 24px; padding-right: 24px;">It’s rarely used, but in JavaScript you can use a <a href="https://click.convertkit-mail4.com/68uxdxk733b8h5lwqv3cohpl5rkkkh9hlqvo/reh8h9um0vo6l0c2/aHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSmF2YVNjcmlwdC9SZWZlcmVuY2UvU3RhdGVtZW50cy9sYWJlbA==" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1785257144">labeled statement</a> to add a label to a for loop. This then allows you to <code style="font-size: 14px;">break</code> and interrupt the loop when needed – even from inside another loop.</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;">function</span> <span class="token function" style="color: #9d7dce; font-size: 14px;">loop</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 literal-property property" style="color: #12b5e5; font-size: 14px;">dance</span><span class="token operator" style="color: #12b5e5; font-size: 14px;">:</span>
<span class="token keyword" style="color: #f38ba3; font-size: 14px;">for</span> <span class="token punctuation" style="color: #231F20; font-size: 14px;">(</span><span class="token keyword" style="color: #f38ba3; font-size: 14px;">let</span> i <span class="token operator" style="color: #12b5e5; font-size: 14px;">=</span> <span class="token number" style="color: #fcba28; font-size: 14px;">0</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">;</span> i <span class="token operator" style="color: #12b5e5; font-size: 14px;"><</span> <span class="token number" style="color: #fcba28; font-size: 14px;">4</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">;</span> i<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 punctuation" style="color: #231F20; font-size: 14px;">{</span>
<span class="token keyword" style="color: #f38ba3; font-size: 14px;">for</span> <span class="token punctuation" style="color: #231F20; font-size: 14px;">(</span><span class="token keyword" style="color: #f38ba3; font-size: 14px;">let</span> j <span class="token operator" style="color: #12b5e5; font-size: 14px;">=</span> <span class="token number" style="color: #fcba28; font-size: 14px;">0</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">;</span> j <span class="token operator" style="color: #12b5e5; font-size: 14px;"><</span> <span class="token number" style="color: #fcba28; font-size: 14px;">4</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">;</span> j<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 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>j <span class="token operator" style="color: #12b5e5; font-size: 14px;">===</span> <span class="token number" style="color: #fcba28; font-size: 14px;">2</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;">break</span> dance<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>
</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://click.convertkit-mail4.com/68uxdxk733b8h5lwqv3cohpl5rkkkh9hlqvo/08hwhgu2dwpl62tl/aHR0cHM6Ly9ieXRlcy5kZXYvYWR2ZXJ0aXNl" url-id="1785257145">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/68uxdxk733b8h5lwqv3cohpl5rkkkh9hlqvo/vqh3hmuop3qw9gig/aHR0cHM6Ly9ieXRlcy5kZXYvc2hhcmU=" url-id="1785257147">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/68uxdxk733b8h5lwqv3cohpl5rkkkh9hlqvo/m2h7h6u380l462tm/aHR0cHM6Ly91aS5kZXY=" url-id="1785257149">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/68uxdxk733b8h5lwqv3cohpl5rkkkh9hlqvo/dphehmue0w2p9vcm/aHR0cHM6Ly9ieXRlcy5kZXYvdW5zdWJzY3JpYmU=" style="color: #9B9890;" url-id="1785257150">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/68uxdxk733b8h5lwqv3cohpl5rkkkh9hlqvo">Unsubscribe</a></span>
<!-- -->
<img src="https://open.convertkit-mail4.com/68uxdxk733b8h5lwqv3cohpl5rkkkh9hlqvo" alt="">
</body>
</html>