<!DOCTYPE html>
<html>
<head>
<title>Bytes: Hot Spec Summer: ES2025</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> Deno’s Duchess of Sussex, the Linux of all Linuxes, and the dangers of creating your own holidays.</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/38u909o4rrakh2dlrvgirh47dzonnh7h4oml/kkhmh2un3d7x05il/aHR0cHM6Ly9ieXRlcy5kZXYvYXJjaGl2ZXMvNDA1" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1760401586">#405</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/aubrey-plaza-pool.jpg" alt="Aubrey Plaza wearing goggles in a pool" 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;">Still no Temporal API.<!-- --> </p>
</div>
<h3 style="font-size: 24px; margin-bottom: 0; padding-left: 24px; padding-right: 24px;">Hot Spec Summer: ES2025</h3>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5; padding-left: 24px; padding-right: 24px;">ECMAScript 2025 was officially approved last week, which means we got some new JavaScript features <em>and</em> celebrated the only religious holiday on the Gregorian Bytes calendar – <strong style="font-weight: 600;">Hot Spec Summer<span role="img" aria-label="trade mark">™️</span>.</strong></p>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5; padding-left: 24px; padding-right: 24px;">The festivities involve a mostly harmless ritual where we drink copious amounts of Robitussin mixed with White Monster, eat our weight in Pizza Rolls, and spend 48 straight hours in my above-ground swimming pool trying to <del>touch the face of God</del> predict the future of JavaScript.</p>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5; padding-left: 24px; padding-right: 24px;">And now that we’ve completed our vision quest, we’re ready to rate the five most exciting ES2025 features on a hotness scale of 1-5 <span role="img" aria-label="fire">🔥</span>. Let’s dive in.</p>
<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;">Iterator helper methods</strong> – Iterators finally get their own helpers like <code style="font-size: 14px;">.map()</code>, <code style="font-size: 14px;">.filter()</code>, <code style="font-size: 14px;">.take()</code> and <code style="font-size: 14px;">.drop()</code>. Unlike array methods, these helpers process data <em>incrementally</em>, so they don’t create intermediate arrays or load everything into memory at once.</p>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5; padding-left: 24px; padding-right: 24px;"><span role="img" aria-label="fire">🔥</span> Rating: 5/5. <em>This makes iterators first-class citizens in JavaScript and should massively improve the experience of working with streams, iterables, and large data sets.</em></p>
<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;">Import Attributes and JSON Modules</strong> – Import attributes now let you import JSON and other non-JavaScript assets natively, without bundler magic. You can now do this in plain JavaScript:</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;">import</span> config <span class="token keyword" style="color: #f38ba3; font-size: 14px;">from</span> <span class="token string" style="color: #f99157; font-size: 14px;">'./config.json'</span> <span class="token keyword" style="color: #f38ba3; font-size: 14px;">with</span> <span class="token punctuation" style="color: #231F20; font-size: 14px;">{</span> <span class="token literal-property property" style="color: #12b5e5; font-size: 14px;">type</span><span class="token operator" style="color: #12b5e5; font-size: 14px;">:</span> <span class="token string" style="color: #f99157; font-size: 14px;">'json'</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;"><span role="img" aria-label="fire">🔥</span> Rating: 3/5. <em>A big ergonomics win for working with configuration and other structured data, but lots of bundlers and frameworks already have JSON imports built in, so you might not always notice it.</em></p>
<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;"><code style="font-size: 14px;">Promise.try()</code></strong> – Helps you start promise chains that include synchronous code which might throw. Instead of wrapping things in a manual <code style="font-size: 14px;">try/catch</code>, you can write this:</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;">Promise<span class="token punctuation" style="color: #231F20; font-size: 14px;">.</span><span class="token function" style="color: #9d7dce; font-size: 14px;">try</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 function" style="color: #9d7dce; font-size: 14px;">mightThrow</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 function" style="color: #9d7dce; font-size: 14px;">then</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">(</span><span class="token parameter" style="color: #f38ba3; font-size: 14px;">result</span> <span class="token operator" style="color: #12b5e5; font-size: 14px;">=></span> <span class="token function" style="color: #9d7dce; font-size: 14px;">doSomething</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">(</span>result<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>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5; padding-left: 24px; padding-right: 24px;"><span role="img" aria-label="fire">🔥</span> Rating: 2.5/5. A tidy little helper that simplifies error handling for promise chains that start with synchronous code, but we know most of you will just keep using <code style="font-size: 14px;">async/await</code>.</p>
<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;">New Set methods</strong> – Sets got some long-overdue love with new methods to combine and compare them, like <code style="font-size: 14px;">union()</code>, <code style="font-size: 14px;">intersection()</code>, <code style="font-size: 14px;">difference()</code>, and checks like <code style="font-size: 14px;">isSubsetOf()</code>. Here’s a quick example:</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;">const</span> s1 <span class="token operator" style="color: #12b5e5; font-size: 14px;">=</span> <span class="token keyword" style="color: #f38ba3; font-size: 14px;">new</span> <span class="token class-name" style="color: #12b5e5; font-size: 14px;">Set</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 string" style="color: #f99157; font-size: 14px;">'a'</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">,</span><span class="token string" style="color: #f99157; font-size: 14px;">'b'</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;">const</span> s2 <span class="token operator" style="color: #12b5e5; font-size: 14px;">=</span> <span class="token keyword" style="color: #f38ba3; font-size: 14px;">new</span> <span class="token class-name" style="color: #12b5e5; font-size: 14px;">Set</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 string" style="color: #f99157; font-size: 14px;">'b'</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">,</span><span class="token string" style="color: #f99157; font-size: 14px;">'c'</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>
s1<span class="token punctuation" style="color: #231F20; font-size: 14px;">.</span><span class="token function" style="color: #9d7dce; font-size: 14px;">union</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">(</span>s2<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;">// Set {'a','b','c'}</span>
</code></pre>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5; padding-left: 24px; padding-right: 24px;"><span role="img" aria-label="fire">🔥</span> Rating: 4.5/5. <em>This means you finally don’t need to convert sets to arrays just to do basic operations. Huge win.</em></p>
<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;"><code style="font-size: 14px;">RegExp.escape()</code></strong> – This makes it easy to safely insert arbitrary strings into regex patterns without worrying about special characters causing chaos like so:</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;">const</span> safe <span class="token operator" style="color: #12b5e5; font-size: 14px;">=</span> RegExp<span class="token punctuation" style="color: #231F20; font-size: 14px;">.</span><span class="token function" style="color: #9d7dce; font-size: 14px;">escape</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">(</span><span class="token string" style="color: #f99157; font-size: 14px;">'hello.*+?'</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>safe<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;">// 'hello\.\*\?'</span>
</code></pre>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5; padding-left: 24px; padding-right: 24px;"><span role="img" aria-label="fire">🔥</span> Rating: 3.5/5. Not super flashy, but it should help prevent subtle regex bugs from user input for features like search boxes and dynamic features. We’ll take all the help we can get.</p>
<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> Did you know that cooking Pizza Rolls on a Traeger really brings out the smoky flavor of the mini pepperonis? Another important lesson learned from Hot Spec Summer.</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/38u909o4rrakh2dlrvgirh47dzonnh7h4oml/58hvh8ugzve6d0s6/aHR0cHM6Ly9mYWNlYm9vay5jb20vc2hhcmVyL3NoYXJlci5waHA_dT1odHRwcyUzQSUyRiUyRmJ5dGVzLmRldiUyRmFyY2hpdmVzJTJGNDA1" rel="noopener" style="color: #12b5e5; font-weight: 600; padding-left: 5px; text-decoration: none;" target="_blank" url-id="1760401587"><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/38u909o4rrakh2dlrvgirh47dzonnh7h4oml/25h2h9u3ev5mp0t3/aHR0cHM6Ly93d3cubGlua2VkaW4uY29tL3NoYXJpbmcvc2hhcmUtb2Zmc2l0ZS8_dXJsPWh0dHBzJTNBJTJGJTJGYnl0ZXMuZGV2JTJGYXJjaGl2ZXMlMkY0MDU=" rel="noopener" style="color: #12b5e5; font-weight: 600; padding-left: 5px; text-decoration: none;" target="_blank" url-id="1760401588"><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/38u909o4rrakh2dlrvgirh47dzonnh7h4oml/qvh8h8ud07xkm0tl/aHR0cHM6Ly90d2l0dGVyLmNvbS9pbnRlbnQvdHdlZXQvP3RleHQ9RXhwbG9yaW5nJTIwdGhlJTIwNSUyMG1vc3QlMjBpbnRlcmVzdGluZyUyMG5ldyUyMEphdmFTY3JpcHQlMjBmZWF0dXJlcyUyMHRvJTIwaGl0JTIwdGhlJTIwRVMyMDI1JTIwc3BlYyZ1cmw9aHR0cHMlM0ElMkYlMkZieXRlcy5kZXYlMkZhcmNoaXZlcyUyRjQwNQ==" rel="noopener" style="color: #12b5e5; font-weight: 600; padding-left: 5px; text-decoration: none;" target="_blank" url-id="1760401589"><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/38u909o4rrakh2dlrvgirh47dzonnh7h4oml/9qhzhdudlq75vgs9/bWFpbHRvOj9ib2R5PVRob3VnaHQlMjB5b3UlMjdkJTIwbG92ZSUyMHRoaXMlMjB3ZWVrJTI3cyUyMEJ5dGVzJTBBLS0tJTBBRXhwbG9yaW5nJTIwdGhlJTIwNSUyMG1vc3QlMjBpbnRlcmVzdGluZyUyMG5ldyUyMEphdmFTY3JpcHQlMjBmZWF0dXJlcyUyMHRvJTIwaGl0JTIwdGhlJTIwRVMyMDI1JTIwc3BlYyUwQWh0dHBzJTNBJTJGJTJGYnl0ZXMuZGV2JTJGYXJjaGl2ZXMlMkY0MDUmc3ViamVjdD1Zb3UlMjBsaWtlJTIwY29ybmJyZWFkJTNG" rel="noopener" style="color: #12b5e5; font-weight: 600; padding-left: 5px; text-decoration: none;" target="_blank" url-id="1760401591"><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/dog-eyes.jpg" alt="Chihuahua with big eyes and glasses looking nervous" 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 burn $12K in Claude tokens running a bunch of flaky tests<!-- --> </p>
</div>
<h3 style="font-size: 24px; margin-bottom: 0; padding-left: 24px; padding-right: 24px;"><a href="https://click.convertkit-mail4.com/38u909o4rrakh2dlrvgirh47dzonnh7h4oml/3ohphdu3nowp57br/aHR0cHM6Ly93d3cucWF3b2xmLmNvbS9zb2x1dGlvbnMvZ2VuLWFpLXRlc3Rpbmc_dXRtX2NhbXBhaWduPUFDUV9BbGxfRGVtb19Db252ZXJzaW9uc19fTmV3c2xldHRlckF1ZGllbmNlXy1fTmV3c2xldHRlcl9BSVRlc3RpbmdfMjAyNTA2MzAtTm9uZV9FeHBlcmltZW50LUZBTFNFJnV0bV9jb250ZW50PUFJdGVzdGluZ19TY2hlZHVsZUFQZXJzb25hbGl6ZWREZW1vX05vbmVfSGVhZGxpbmUlM0FUZXN0WW91ckFwcHNHZW5lcmF0aW5nQUlGZWF0dXJlc1dpdGhvdXRCdXJuaW5nVGhyb3VnaFRva2Vuc19fX19OZXdzbGV0dGVyLVByaW1hcnlQbGFjZW1lbnRfMjAyNTA2MzBfdjFfJnV0bV9tZWRpdW09bmV3c2xldHRlciZ1dG1fc291cmNlPWJ5dGVzJnV0bV90ZXJtPWhlYWRsaW5lLVRlc3RZb3VyQXBwc0dlbmVyYXRpdmVBSUZlYXR1cmVzV2l0aG91dEJ1cm5pbmdUaHJvdWdoVG9rZW5z" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1760401592">Test your app’s generative AI features – without burning through tokens</a></h3>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5; padding-left: 24px; padding-right: 24px;">3 reasons why testing genAI apps is harder than testing a regular app:</p>
<ol>
<li>Outputs are non-deterministic</li>
<li>The models are constantly evolving</li>
<li>Edge cases are basically infinite</li>
</ol>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5; padding-left: 24px; padding-right: 24px;">Thankfully, <a href="https://click.convertkit-mail4.com/38u909o4rrakh2dlrvgirh47dzonnh7h4oml/n2hohquvk8d79vs6/aHR0cHM6Ly93d3cucWF3b2xmLmNvbT91dG1fY2FtcGFpZ249QUNRX0FsbF9EZW1vX0NvbnZlcnNpb25zX19OZXdzbGV0dGVyQXVkaWVuY2VfLV9OZXdzbGV0dGVyX0FJVGVzdGluZ18yMDI1MDYzMC1Ob25lX0V4cGVyaW1lbnQtRkFMU0UmdXRtX2NvbnRlbnQ9QUl0ZXN0aW5nX1NjaGVkdWxlQVBlcnNvbmFsaXplZERlbW9fTm9uZV9IZWFkbGluZSUzQVRlc3RZb3VyQXBwc0dlbmVyYXRpbmdBSUZlYXR1cmVzV2l0aG91dEJ1cm5pbmdUaHJvdWdoVG9rZW5zX19fX05ld3NsZXR0ZXItUHJpbWFyeVBsYWNlbWVudF8yMDI1MDYzMF92MV8mdXRtX21lZGl1bT1uZXdzbGV0dGVyJnV0bV9zb3VyY2U9Ynl0ZXMmdXRtX3Rlcm09Ym9keS1RQVdvbGY=" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1760401593">QA Wolf</a> builds and maintains all your genAI test cases for you. And they developed novel AI testing techniques like deductive assertions and temp control – so you can trust your AI outputs every time (<a href="https://click.convertkit-mail4.com/38u909o4rrakh2dlrvgirh47dzonnh7h4oml/48hvh7umn5oxd6sx/aHR0cHM6Ly93d3cucWF3b2xmLmNvbS9zb2x1dGlvbnMvZ2VuLWFpLXRlc3Rpbmc_dXRtX2NhbXBhaWduPUFDUV9BbGxfRGVtb19Db252ZXJzaW9uc19fTmV3c2xldHRlckF1ZGllbmNlXy1fTmV3c2xldHRlcl9BSVRlc3RpbmdfMjAyNTA2MzAtTm9uZV9FeHBlcmltZW50LUZBTFNFJnV0bV9jb250ZW50PUFJdGVzdGluZ19TY2hlZHVsZUFQZXJzb25hbGl6ZWREZW1vX05vbmVfSGVhZGxpbmUlM0FUZXN0WW91ckFwcHNHZW5lcmF0aW5nQUlGZWF0dXJlc1dpdGhvdXRCdXJuaW5nVGhyb3VnaFRva2Vuc19fX19OZXdzbGV0dGVyLVByaW1hcnlQbGFjZW1lbnRfMjAyNTA2MzBfdjFfJnV0bV9tZWRpdW09bmV3c2xldHRlciZ1dG1fc291cmNlPWJ5dGVzJnV0bV90ZXJtPWJvZHktU2VlSG93SXRXb3Jrc0luRGV0YWls" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1760401594">see how it works in detail</a>).</p>
<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/38u909o4rrakh2dlrvgirh47dzonnh7h4oml/wnh2h6uq35z02gc7/aHR0cHM6Ly93d3cucWF3b2xmLmNvbT91dG1fY2FtcGFpZ249QUNRX0FsbF9EZW1vX0NvbnZlcnNpb25zX19OZXdzbGV0dGVyQXVkaWVuY2VfLV9OZXdzbGV0dGVyX0FJVGVzdGluZ18yMDI1MDYzMC1Ob25lX0V4cGVyaW1lbnQtRkFMU0UmdXRtX2NvbnRlbnQ9QUl0ZXN0aW5nX1NjaGVkdWxlQVBlcnNvbmFsaXplZERlbW9fTm9uZV9IZWFkbGluZSUzQVRlc3RZb3VyQXBwc0dlbmVyYXRpbmdBSUZlYXR1cmVzV2l0aG91dEJ1cm5pbmdUaHJvdWdoVG9rZW5zX19fX05ld3NsZXR0ZXItUHJpbWFyeVBsYWNlbWVudF8yMDI1MDYzMF92MV8mdXRtX21lZGl1bT1uZXdzbGV0dGVyJnV0bV9zb3VyY2U9Ynl0ZXMmdXRtX3Rlcm09Y3RhLVNjaGVkdWxlQVBlcnNvbmFsaXplZERlbW8=" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1760401595">Get a personalized demo</a> to see how they can maximize your genAI testing coverage without torching your budget – or your team’s sanity.</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/38u909o4rrakh2dlrvgirh47dzonnh7h4oml/08hwhgu2ko8l6nal/aHR0cHM6Ly9nby5jbGVyay5jb20vQWUzYTJDTg==" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1760401597">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 announced <a href="https://click.convertkit-mail4.com/38u909o4rrakh2dlrvgirh47dzonnh7h4oml/08hwhgu2ko8l6nal/aHR0cHM6Ly9nby5jbGVyay5jb20vQWUzYTJDTg==" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1760401597">MCP Server Support for Next.js</a>, which enables your users to securely grant AI apps like Claude and Cursor to access their data within your app <span role="img" aria-label="fire">🔥</span></em></p>
</div>
</div>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5; padding-left: 24px; padding-right: 24px;">In the code snippet below, what do <code style="font-size: 14px;">a</code> and <code style="font-size: 14px;">b</code> evaluate to?</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> a <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>
<span class="token keyword" style="color: #f38ba3; font-size: 14px;">const</span> b <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 number" style="color: #fcba28; font-size: 14px;">1</span><span class="token punctuation" style="color: #231F20; 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 number" style="color: #fcba28; font-size: 14px;">3</span><span class="token punctuation" style="color: #231F20; 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> <span class="token number" style="color: #fcba28; font-size: 14px;">5</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;">map</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 parameter" style="color: #f38ba3; font-size: 14px;">x</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 punctuation" style="color: #231F20; font-size: 14px;">(</span>a <span class="token operator" style="color: #12b5e5; font-size: 14px;">+=</span> x<span class="token punctuation" style="color: #231F20; font-size: 14px;">)</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">,</span> x <span class="token operator" style="color: #12b5e5; font-size: 14px;">*</span> x
<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>
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>a<span class="token punctuation" style="color: #231F20; font-size: 14px;">)</span> <span class="token comment" style="color: rgb(167, 167, 167); 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>b<span class="token punctuation" style="color: #231F20; font-size: 14px;">)</span> <span class="token comment" style="color: rgb(167, 167, 167); 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;">If you want a preview of other JavaScript features in the TC39 pipeline, Luca Casonato and Andy Jiang from the Deno team wrote about <a href="https://click.convertkit-mail4.com/38u909o4rrakh2dlrvgirh47dzonnh7h4oml/8ghqh3uox04r6zck/aHR0cHM6Ly9kZW5vLmNvbS9ibG9nL3VwZGF0ZXMtZnJvbS10YzM5" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1760401598">what’s coming soon to a JS spec near you</a>.</p>
</li>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5;">CodeRabbit just launched a <a href="https://click.convertkit-mail4.com/38u909o4rrakh2dlrvgirh47dzonnh7h4oml/vqh3hmuodx5w90sg/aHR0cHM6Ly9jb2RlcmFiYml0LmxpbmsvYnl0ZXM=" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1760401599">free VS Code extension</a> that provides AI code reviews right in your IDE. It gives senior developer-level attention to every line of your code and one-click fix suggestions to clean up mistakes fast. [sponsored]</p>
</li>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5;">Craig Brunner wrote on the Shopify blog about <a href="https://click.convertkit-mail4.com/38u909o4rrakh2dlrvgirh47dzonnh7h4oml/l2heh6ulz0gxm7a6/aHR0cHM6Ly9zaG9waWZ5LmVuZ2luZWVyaW5nL3JlbWl4aW5nLWFkbWlu" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1760401600">how they used Remix to make Shopify admin 30% faster at massive scale</a> – 620K total files and 3 million lines of TypeScript supporting 67 million daily page views.</p>
</li>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5;">DHH & friends created <a href="https://click.convertkit-mail4.com/38u909o4rrakh2dlrvgirh47dzonnh7h4oml/dphehmuem43p99cm/aHR0cHM6Ly9vbWFyY2h5Lm9yZy8=" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1760401602">Omarchy</a>, an Arch/Hyprland setup that provides “an opinionated take on what Linux can be at its best” – which sounds refreshing, since most of us are far more familiar with Linux at its worst.</p>
</li>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5;">Turso just released the first alpha version of their <a href="https://click.convertkit-mail4.com/38u909o4rrakh2dlrvgirh47dzonnh7h4oml/e0hph0u72pxr38h8/aHR0cHM6Ly90dXJzby50ZWNoL2Jsb2cvdHVyc28tdGhlLW5leHQtZXZvbHV0aW9uLW9mLXNxbGl0ZQ==" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1760401603">full rewrite of SQLite in Rust</a>. Yes, that sounds like a meme, but it’s real and it’s spectacular.</p>
</li>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5;">Deno shared a new update on their <a href="https://click.convertkit-mail4.com/38u909o4rrakh2dlrvgirh47dzonnh7h4oml/7qh7h2u9mkgn2nbz/aHR0cHM6Ly9kZW5vLmNvbS9ibG9nL2Rlbm8tdi1vcmFjbGU0" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1760401604">JavaScript trademark battle with Oracle</a> – which has felt like watching a full season of <em>Suits.</em> I guess that means Louis Litt is Oracle’s general counsel and Ryan Dahl is the Duchess of Sussex.</p>
</li>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5;"><a href="https://click.convertkit-mail4.com/38u909o4rrakh2dlrvgirh47dzonnh7h4oml/owhkhwuw7kzqm0av/aHR0cHM6Ly9iYXNlLXVpLmNvbS9yZWFjdC9vdmVydmlldy9yZWxlYXNlcw==" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1760401605">Base UI just released the v1.0 beta</a> of its unstyled UI component library built by the creators of Radix, Floating UI, and Material UI.</p>
</li>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5;">Cloudflare just declared that today is <a href="https://click.convertkit-mail4.com/38u909o4rrakh2dlrvgirh47dzonnh7h4oml/z2hgh7ue84gl2zhp/aHR0cHM6Ly9ibG9nLmNsb3VkZmxhcmUuY29tL2NvbnRlbnQtaW5kZXBlbmRlbmNlLWRheS1uby1haS1jcmF3bC13aXRob3V0LWNvbXBlbnNhdGlvbi8_dXRtX2NhbXBhaWduPWNmX2Jsb2cmdXRtX2NvbnRlbnQ9MjAyNTA3MDEmdXRtX21lZGl1bT1vcmdhbmljX3NvY2lhbCZ1dG1fc291cmNlPXR3aXR0ZXIlMkY=" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1760401606">Content Independence Day</a>, and that they’re changing the default to block AI crawlers unless they pay creators for their content. It’s a noble cause, but I, for one, don’t want to live in a world where anyone can just <em>make up their own holiday</em> whenever they feel like it. Doesn’t anyone respect traditional family values anymore?</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/38u909o4rrakh2dlrvgirh47dzonnh7h4oml/08hwhgu2ko8l6nal/aHR0cHM6Ly9nby5jbGVyay5jb20vQWUzYTJDTg==" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1760401597">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;">Here’s the code with more descriptive variable names.</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> sum <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>
<span class="token keyword" style="color: #f38ba3; font-size: 14px;">const</span> squares <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 number" style="color: #fcba28; font-size: 14px;">1</span><span class="token punctuation" style="color: #231F20; 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 number" style="color: #fcba28; font-size: 14px;">3</span><span class="token punctuation" style="color: #231F20; 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> <span class="token number" style="color: #fcba28; font-size: 14px;">5</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;">map</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 parameter" style="color: #f38ba3; font-size: 14px;">x</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 punctuation" style="color: #231F20; font-size: 14px;">(</span>sum <span class="token operator" style="color: #12b5e5; font-size: 14px;">+=</span> x<span class="token punctuation" style="color: #231F20; font-size: 14px;">)</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">,</span> x <span class="token operator" style="color: #12b5e5; font-size: 14px;">*</span> x
<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>
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>sum<span class="token punctuation" style="color: #231F20; font-size: 14px;">)</span> <span class="token comment" style="color: rgb(167, 167, 167); font-size: 14px;">// 15</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>squares<span class="token punctuation" style="color: #231F20; font-size: 14px;">)</span> <span class="token comment" style="color: rgb(167, 167, 167); font-size: 14px;">// [1, 4, 9, 16, 25]</span>
</code></pre>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5; padding-left: 24px; padding-right: 24px;">This is a fun one. The weirdest part is probably the comma <code style="font-size: 14px;">,</code> operator.</p>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5; padding-left: 24px; padding-right: 24px;">If you’re not familiar, <code style="font-size: 14px;">,</code> evaluates each of its operands (from left to right) and returns the value of the last operand. This allows us to, in a single line, increase <code style="font-size: 14px;">sum</code> by <code style="font-size: 14px;">x</code> <strong style="font-weight: 600;">and</strong> return the square of <code style="font-size: 14px;">x</code>. When finished, we get the <code style="font-size: 14px;">sum</code> of the array as well as a new array of <code style="font-size: 14px;">squares</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/38u909o4rrakh2dlrvgirh47dzonnh7h4oml/p8hehqu4l3vqwvaq/aHR0cHM6Ly9ieXRlcy5kZXYvYWR2ZXJ0aXNl" url-id="1760401607">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/38u909o4rrakh2dlrvgirh47dzonnh7h4oml/x0hph3uelrgq58i5/aHR0cHM6Ly9ieXRlcy5kZXYvc2hhcmU=" url-id="1760401608">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/38u909o4rrakh2dlrvgirh47dzonnh7h4oml/6qhehouldkq9mkao/aHR0cHM6Ly91aS5kZXY=" url-id="1760401609">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/38u909o4rrakh2dlrvgirh47dzonnh7h4oml/kkhmh2un3d7xk5bl/aHR0cHM6Ly9ieXRlcy5kZXYvdW5zdWJzY3JpYmU=" style="color: #9B9890;" url-id="1760401610">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/38u909o4rrakh2dlrvgirh47dzonnh7h4oml">Unsubscribe</a></span>
<!-- -->
<img src="https://open.convertkit-mail4.com/38u909o4rrakh2dlrvgirh47dzonnh7h4oml" alt="">
</body>
</html>