<!DOCTYPE html>
<html>
<head>
<title>Bytes: Nothing can kill jQuery</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> AI is basically just COBOL, Daddy Sundar takes things to the next level, and I’m porting my library to Rust, btw.</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://c5e21242.click.kit-mail6.com/27uepe0gddioh8lwe7kf3hgz5m744hghm2v3/8ghqh3uowo2e2mak/aHR0cHM6Ly9ieXRlcy5kZXYvYXJjaGl2ZXMvNDU2" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1826454595">#456</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/conehead-w.jpg" alt="A conehead making the Wu-Tang sign" 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;">Write less, do more<!-- --> </p>
</div>
<h3 style="font-size: 24px; margin-bottom: 0; padding-left: 24px; padding-right: 24px;">Nothing can kill jQuery</h3>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5; padding-left: 24px; padding-right: 24px;">It doesn’t matter how many fancy coding agents or next-gen frameworks you throw at it – the <code style="font-size: 14px;">$</code> God remains eternal. And it just celebrated its 20th birthday in style last week by dropping <a href="https://c5e21242.click.kit-mail6.com/27uepe0gddioh8lwe7kf3hgz5m744hghm2v3/l2heh6ulqln5ndf6/aHR0cHM6Ly9ibG9nLmpxdWVyeS5jb20vMjAyNi8wMS8xNy9qcXVlcnktNC0wLTAv" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1826454597">jQuery 4.0</a> out of nowhere.</p>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5; padding-left: 24px; padding-right: 24px;">This is jQuery’s first major release in almost a decade, but thankfully the team didn’t slap on some MCP support and try to pitch us all on the next 20 years of AI-powered jQuery.</p>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5; padding-left: 24px; padding-right: 24px;">Instead, they shipped some helpful quality of life improvements for the <a href="https://c5e21242.click.kit-mail6.com/27uepe0gddioh8lwe7kf3hgz5m744hghm2v3/m2h7h6u323qkqxam/aHR0cHM6Ly93M3RlY2hzLmNvbS90ZWNobm9sb2dpZXMvb3ZlcnZpZXcvamF2YXNjcmlwdF9saWJyYXJ5P3V0bV9zb3VyY2U9Y2hhdGdwdC5jb20=" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1826454598">many</a> websites that still rely on it in The Year Of Our Spec 2026. Let’s take a closer look:</p>
<ul>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5;"><strong style="font-weight: 600;">RIP legacy browsers</strong> – jQuery 4 drops support for IE 10 and older, along with Edge Legacy, and some ancient mobile browsers that only the trees remember the names of. This let the team delete a lot of compatibility hacks and deprecated APIs that shrink its overall size by ~3KB.</p>
</li>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5;"><strong style="font-weight: 600;">Trusted Types + CSP support</strong> – jQuery now cooperates nicely with strict Content Security Policies instead of fighting against them, thanks to support for Trusted Types and safer script loading.</p>
</li>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5;"><strong style="font-weight: 600;">Modern upgrades</strong> – They migrated the jQuery source to ES modules, switched to Rollup for more modern bundling, and made the library compatible with modern build tools and browsers through the use of <code style="font-size: 14px;"><script type="module"></code>.</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> It’s nice to see jQuery aging so gracefully, unlike all the millennials who got a broccoli haircut and started wearing JNCO jeans in 2025.</p>
<table width="100%" cellpadding="0" cellspacing="0" border="0" style="border-collapse: collapse; margin-top: 40px; text-align: center;"><tbody><tr><td style="border-collapse: collapse !important; padding-top: 12px; word-break: normal;">
<a href="https://c5e21242.click.kit-mail6.com/27uepe0gddioh8lwe7kf3hgz5m744hghm2v3/dphehmuedeozo3im/aHR0cHM6Ly9mYWNlYm9vay5jb20vc2hhcmVyL3NoYXJlci5waHA_dT1odHRwcyUzQSUyRiUyRmJ5dGVzLmRldiUyRmFyY2hpdmVzJTJGNDU2" rel="noopener" style="color: #12b5e5; font-weight: 600; padding-left: 5px; text-decoration: none;" target="_blank" url-id="1826454599"><img alt="" style="display: inline-block; max-width: 100%; width: 32px;" width="25" src="https://bytes.dev/images/fb-share-icon.png"></a><a href="https://c5e21242.click.kit-mail6.com/27uepe0gddioh8lwe7kf3hgz5m744hghm2v3/e0hph0u7m7l9e9c8/aHR0cHM6Ly93d3cubGlua2VkaW4uY29tL3NoYXJpbmcvc2hhcmUtb2Zmc2l0ZS8_dXJsPWh0dHBzJTNBJTJGJTJGYnl0ZXMuZGV2JTJGYXJjaGl2ZXMlMkY0NTY=" rel="noopener" style="color: #12b5e5; font-weight: 600; padding-left: 5px; text-decoration: none;" target="_blank" url-id="1826454600"><img alt="" style="display: inline-block; max-width: 100%; width: 32px;" width="25" src="https://bytes.dev/images/li-share-icon.png"></a><a href="https://c5e21242.click.kit-mail6.com/27uepe0gddioh8lwe7kf3hgz5m744hghm2v3/7qh7h2u9d96v8kuz/aHR0cHM6Ly90d2l0dGVyLmNvbS9pbnRlbnQvdHdlZXQvP3RleHQ9alF1ZXJ5JTIwanVzdCUyMHR1cm5lZCUyMDIwJTIweWVhcnMlMjBvbGQlMjBhbmQlMjByZWxlYXNlZCUyMHRoZWlyJTIwZmlyc3QlMjBtYWpvciUyMHVwZGF0ZSUyMGluJTIwYSUyMGRlY2FkZSZ1cmw9aHR0cHMlM0ElMkYlMkZieXRlcy5kZXYlMkZhcmNoaXZlcyUyRjQ1Ng==" rel="noopener" style="color: #12b5e5; font-weight: 600; padding-left: 5px; text-decoration: none;" target="_blank" url-id="1826454601"><img alt="" style="display: inline-block; max-width: 100%; width: 32px;" width="25" src="https://bytes.dev/images/tw-share-icon.png"></a><a href="https://c5e21242.click.kit-mail6.com/27uepe0gddioh8lwe7kf3hgz5m744hghm2v3/owhkhwuwxw63n6bv/bWFpbHRvOj9ib2R5PVRob3VnaHQlMjB5b3UlMjdkJTIwbG92ZSUyMHRoaXMlMjB3ZWVrJTI3cyUyMEJ5dGVzJTBBLS0tJTBBalF1ZXJ5JTIwanVzdCUyMHR1cm5lZCUyMDIwJTIweWVhcnMlMjBvbGQlMjBhbmQlMjByZWxlYXNlZCUyMHRoZWlyJTIwZmlyc3QlMjBtYWpvciUyMHVwZGF0ZSUyMGluJTIwYSUyMGRlY2FkZSUwQWh0dHBzJTNBJTJGJTJGYnl0ZXMuZGV2JTJGYXJjaGl2ZXMlMkY0NTYmc3ViamVjdD1Zb3UlMjBsaWtlJTIwY29ybmJyZWFkJTNG" rel="noopener" style="color: #12b5e5; font-weight: 600; padding-left: 5px; text-decoration: none;" target="_blank" url-id="1826454602"><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/desert-vacuum.jpg" alt="A lady vacuuming outside in the desert" 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;">Engineering leads choosing AI tools in 2026<!-- --> </p>
</div>
<h3 style="font-size: 24px; margin-bottom: 0; padding-left: 24px; padding-right: 24px;"><a href="https://c5e21242.click.kit-mail6.com/27uepe0gddioh8lwe7kf3hgz5m744hghm2v3/z2hgh7ue5ek977sp/aHR0cHM6Ly9hdHRlbmQucWF3b2xmLmNvbS9haS10b29scy1mb3ItdGVzdGluZy1ob3ctdG8tY2hvb3NlLXRoZS1yaWdodC1hcHByb2FjaC1mb3ItcWEvcmVnaXN0cmF0aW9uP3V0bV9jYW1wYWlnbj1BQ1FfQWxsX0V2ZW50JTIwUmVnaXN0cmF0aW9uc19fTmV3c2xldHRlckF1ZGllbmNlXy1fTmV3c2xldHRlcl9BSVRvb2xzRm9yVGVzdGluZ18yMDI2MDEyMC1Ob25lX0V4cGVyaW1lbnQtRkFMU0UmdXRtX2NvbnRlbnQ9QUlUb29sc0ZvclRlc3RpbmdfUlNWUEZvclRoZVNlc3Npb25IZXJlX05vbmVfSGVhZGxpbmUlM0FIb3dUb0Nob29zZUFJVGVzdGluZ1RPb2xzRm9yTGFyZ2VUZWFtc0ZyZWVXZWJpbmFyX19fX05ld3NsZXR0ZXItUHJpbWFyeVBsYWNlbWVudF8yMDI2MDEyMF92MV8mdXRtX21lZGl1bT1uZXdzbGV0dGVyJnV0bV9zb3VyY2U9Ynl0ZXMmdXRtX3Rlcm09aGVhZGxpbmUtSG93VG9DaG9vc2VBSVRlc3RpbmdUb29sc0ZvckxhcmdlVGVhbXNGcmVlV2ViaW5hcg==" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1826454603">How to choose AI testing tools for large teams - free webinar</a></h3>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5; padding-left: 24px; padding-right: 24px;">If you’re a technical leader, you’re probably trying to figure out which AI tools are actually helpful and which ones are just bloated vaporware.</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://c5e21242.click.kit-mail6.com/27uepe0gddioh8lwe7kf3hgz5m744hghm2v3/p8hehqu4r42kd5iq/aHR0cHM6Ly93d3cucWF3b2xmLmNvbS8=" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1826454604">QA Wolf</a>’s Staff Engineering Lead, Yurij Mikhalevich is hosting a <a href="https://c5e21242.click.kit-mail6.com/27uepe0gddioh8lwe7kf3hgz5m744hghm2v3/x0hph3uekep8zlb5/aHR0cHM6Ly9hdHRlbmQucWF3b2xmLmNvbS9haS10b29scy1mb3ItdGVzdGluZy1ob3ctdG8tY2hvb3NlLXRoZS1yaWdodC1hcHByb2FjaC1mb3ItcWEvcmVnaXN0cmF0aW9uP3V0bV9jYW1wYWlnbj1BQ1FfQWxsX0V2ZW50JTIwUmVnaXN0cmF0aW9uc19fTmV3c2xldHRlckF1ZGllbmNlXy1fTmV3c2xldHRlcl9BSVRvb2xzRm9yVGVzdGluZ18yMDI2MDEyMC1Ob25lX0V4cGVyaW1lbnQtRkFMU0UmdXRtX2NvbnRlbnQ9QUlUb29sc0ZvclRlc3RpbmdfUlNWUEZvclRoZVNlc3Npb25IZXJlX05vbmVfSGVhZGxpbmUlM0FIb3dUb0Nob29zZUFJVGVzdGluZ1RPb2xzRm9yTGFyZ2VUZWFtc0ZyZWVXZWJpbmFyX19fX05ld3NsZXR0ZXItUHJpbWFyeVBsYWNlbWVudF8yMDI2MDEyMF92MV8mdXRtX21lZGl1bT1uZXdzbGV0dGVyJnV0bV9zb3VyY2U9Ynl0ZXMmdXRtX3Rlcm09Ym9keS1MaXZlQ2hhdA==" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1826454605">live chat</a> breaking down the full landscape of AI testing tools.</p>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5; padding-left: 24px; padding-right: 24px;">You’ll learn:</p>
<ul>
<li>The 4 main categories of AI testing tools</li>
<li>The real tradeoffs around coverage, reliability, and maintenance</li>
<li>A practical framework for evaluating AI tools for your specific 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://c5e21242.click.kit-mail6.com/27uepe0gddioh8lwe7kf3hgz5m744hghm2v3/6qhehoulxl5vw2ho/aHR0cHM6Ly9hdHRlbmQucWF3b2xmLmNvbS9haS10b29scy1mb3ItdGVzdGluZy1ob3ctdG8tY2hvb3NlLXRoZS1yaWdodC1hcHByb2FjaC1mb3ItcWEvcmVnaXN0cmF0aW9uP3V0bV9jYW1wYWlnbj1BQ1FfQWxsX0V2ZW50JTIwUmVnaXN0cmF0aW9uc19fTmV3c2xldHRlckF1ZGllbmNlXy1fTmV3c2xldHRlcl9BSVRvb2xzRm9yVGVzdGluZ18yMDI2MDEyMC1Ob25lX0V4cGVyaW1lbnQtRkFMU0UmdXRtX2NvbnRlbnQ9QUlUb29sc0ZvclRlc3RpbmdfUlNWUEZvclRoZVNlc3Npb25IZXJlX05vbmVfSGVhZGxpbmUlM0FIb3dUb0Nob29zZUFJVGVzdGluZ1RPb2xzRm9yTGFyZ2VUZWFtc0ZyZWVXZWJpbmFyX19fX05ld3NsZXR0ZXItUHJpbWFyeVBsYWNlbWVudF8yMDI2MDEyMF92MV8mdXRtX21lZGl1bT1uZXdzbGV0dGVyJnV0bV9zb3VyY2U9Ynl0ZXMmdXRtX3Rlcm09Y3RhLVJTVlBGb3JUaGVTZXNzaW9uc0hlcmU=" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1826454606">RSVP for the session here</a>.</p>
<hr style="border: 0; border-bottom: 5px solid; border-color: #f5f5f5; margin-bottom: 100px; margin-top: 100px;">
<div style="text-align:center;margin-bottom:36px">
<img width="110" src="https://bytes.dev/images/content/spot-the-bug.png" alt="Spot the Bug logo" style="max-width: 100%;"><h2 style="font-family: Paytone One, sans-serif; font-size: 28px; margin-top: 10px; text-transform: uppercase;">Spot the Bug</h2>
<div class="section-presenter" style="margin-bottom:50px;margin-top:15px">
<h4 style="font-size: 19px; margin-bottom: 0; padding-left: 24px; padding-right: 24px;">Sponsored by <a href="https://c5e21242.click.kit-mail6.com/27uepe0gddioh8lwe7kf3hgz5m744hghm2v3/e0hph0u7m7l9ekf8/aHR0cHM6Ly9zcnYuYnV5c2VsbGFkcy5jb20vYWRzL2xvbmcveC9UQ0hONDdJUVRUVFRUVDQ0U1FVTkxUVFRUVFRRSlNEMjI2VFRUVFRUUDQ3Q0tCVlRUVFRUVDdaV1A3Tk1LWUk0NTJMV1dTSVZQM05VVFJQN0tSM040SUlMQ0ozRQ==" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1826454607">Auth0</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 provides a simple and secure way to <a href="https://c5e21242.click.kit-mail6.com/27uepe0gddioh8lwe7kf3hgz5m744hghm2v3/e0hph0u7m7l9ekf8/aHR0cHM6Ly9zcnYuYnV5c2VsbGFkcy5jb20vYWRzL2xvbmcveC9UQ0hONDdJUVRUVFRUVDQ0U1FVTkxUVFRUVFRRSlNEMjI2VFRUVFRUUDQ3Q0tCVlRUVFRUVDdaV1A3Tk1LWUk0NTJMV1dTSVZQM05VVFJQN0tSM040SUlMQ0ozRQ==" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1826454607">connect AI agents to external apps</a> and require human approval for sensitive actions. Free for up to 25k free monthly active users.</em></p>
</div>
</div>
<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;">reverseString</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">(</span><span class="token parameter" style="color: #f38ba3; font-size: 14px;">str</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;">return</span> str<span class="token punctuation" style="color: #231F20; font-size: 14px;">.</span><span class="token function" style="color: #9d7dce; font-size: 14px;">split</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">(</span><span class="token string" style="color: #f99157; 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;">reverse</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;">join</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">(</span><span class="token string" style="color: #f99157; 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 keyword" style="color: #f38ba3; font-size: 14px;">let</span> reversedString <span class="token operator" style="color: #12b5e5; font-size: 14px;">=</span> <span class="token function" style="color: #9d7dce; font-size: 14px;">reverseString</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>reversedString<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;">Devon Govett wrote about <a href="https://c5e21242.click.kit-mail6.com/27uepe0gddioh8lwe7kf3hgz5m744hghm2v3/7qh7h2u9d96v8obz/aHR0cHM6Ly9kZXZvbmdvdmV0dC5tZS9ibG9nL3N0YXRpYy1oZXJtZXMuaHRtbA==" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1826454608">how to compile JavaScript to C with Static Hermes</a>, based on his work on porting Parcel to Rust. “I’m porting my OSS library to Rust, btw.”</p>
</li>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5;"><a href="https://c5e21242.click.kit-mail6.com/27uepe0gddioh8lwe7kf3hgz5m744hghm2v3/owhkhwuwxw63nwsv/aHR0cHM6Ly9mYW5kZi5jby80OTRKOTdE" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1826454609">Trigger.dev</a> is an open-source platform for building AI agents and workflows in TypeScript (13.3k GitHub stars). It handles long-running tasks with automatic retries, tool calling, queues, observability, and elastic scaling so you don’t need to build (and rebuild) it all yourself. [sponsored]</p>
</li>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5;">Alex Harri shared everything he learned from <a href="https://c5e21242.click.kit-mail6.com/27uepe0gddioh8lwe7kf3hgz5m744hghm2v3/z2hgh7ue5ek97ptp/aHR0cHM6Ly9hbGV4aGFycmkuY29tL2Jsb2cvYXNjaWktcmVuZGVyaW5n" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1826454610">building an image-to-ASCII renderer</a>. It’s a lot, turns out.</p>
</li>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5;">The HTTP Archive published their <a href="https://c5e21242.click.kit-mail6.com/27uepe0gddioh8lwe7kf3hgz5m744hghm2v3/p8hehqu4r42kdxhq/aHR0cHM6Ly9hbG1hbmFjLmh0dHBhcmNoaXZlLm9yZy9lbi8yMDI1Lw==" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1826454611">2025 Web Almanac</a>. It’s like getting the new <em>Guinness Book of World Records</em> at the book fair, but instead of immediately staring in awe at the fattest man in the world, you get to see real data about the state of the web.</p>
</li>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5;">Expo just launched <a href="https://c5e21242.click.kit-mail6.com/27uepe0gddioh8lwe7kf3hgz5m744hghm2v3/x0hph3uekep8zxs5/aHR0cHM6Ly9leHBvLmRldi9zb2x1dGlvbnMvZXhwby1mb3ItcmVhY3Qtd2ViLWRldnM_dXRtX2NhbXBhaWduPTMzMDg3ODA0LVJlYWN0JTIwdG8lMjBOYXRpdmUmdXRtX2NvbnRlbnQ9cmVhY3RfdG9fbmF0aXZlX2xwJnV0bV9tZWRpdW09bmV3c2xldHRlciZ1dG1fc291cmNlPWJ5dGVz" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1826454612">Claude Code Skills</a>, a collection of AI agents for building and deploying Expo apps. It’s perfect if you already know React and want to ship your first mobile app. [sponsored]</p>
</li>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5;">Dan Abramov shared his vision for a <a href="https://c5e21242.click.kit-mail6.com/27uepe0gddioh8lwe7kf3hgz5m744hghm2v3/kkhmh2unzn5gerul/aHR0cHM6Ly9vdmVycmVhY3RlZC5pby9hLXNvY2lhbC1maWxlc3lzdGVtLw==" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1826454614">a social filesystem</a>, which sounds a lot more “big brother-y” than it actually is, I think.</p>
</li>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5;">Svelte released <a href="https://c5e21242.click.kit-mail6.com/27uepe0gddioh8lwe7kf3hgz5m744hghm2v3/58hvh8ug3gnp0xa6/aHR0cHM6Ly9zdmVsdGUuZGV2L2Jsb2cvY3Zlcy1hZmZlY3RpbmctdGhlLXN2ZWx0ZS1lY29zeXN0ZW0=" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1826454615">5 patches for CVEs</a> affecting the Svelte ecosystem.</p>
</li>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5;"><a href="https://c5e21242.click.kit-mail6.com/27uepe0gddioh8lwe7kf3hgz5m744hghm2v3/25h2h9u3l38rgwa3/aHR0cHM6Ly9tYWNyb3Njb3BlLmNvbS9haS1jb2RlLXJldmlldz91dG1fY29udGVudD1wcmltYXJ5c3BvbnNvcnNoaXAmdXRtX21lZGl1bT1uZXdzbGV0dGVyJnV0bV9zb3VyY2U9Ynl0ZXM=" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1826454616">Macroscope catches more bugs than any other AI code reviewer</a>, according to a code review benchmark of production bugs in OSS repos. Try it out for free to see the difference. [sponsored]</p>
</li>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5;">Chrome 144 shipped with a new <a href="https://c5e21242.click.kit-mail6.com/27uepe0gddioh8lwe7kf3hgz5m744hghm2v3/qvh8h8uded4gv5ul/aHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9ibG9nL2dlb2xvY2F0aW9uLWh0bWwtZWxlbWVudA==" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1826454617"><code style="font-size: 14px;"><geolocation></code> HTML element</a> that changes how sites request user location data. Anything that makes it easier for Daddy Sundar to know exactly where I am at all times.</p>
</li>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5;">Bradley Walters wrote about <a href="https://c5e21242.click.kit-mail6.com/27uepe0gddioh8lwe7kf3hgz5m744hghm2v3/g3hnhwumgml7n8tr/aHR0cHM6Ly93YWx0ZXJzLmFwcC9ibG9nL2Jvb3RzdHJhcHBpbmctYnVu" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1826454618">bootstrapping Bun</a>, which can mean something very different depending on who you’re talking to.</p>
</li>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5;"><a href="https://c5e21242.click.kit-mail6.com/27uepe0gddioh8lwe7kf3hgz5m744hghm2v3/9qhzhdud4d6kxof9/aHR0cHM6Ly9zcnYuYnV5c2VsbGFkcy5jb20vYWRzL2xvbmcveC9URk0yTFVEUVRUVFRUVEZaUDNQTkxUVFRUVFRRTE1CVTI2VFRUVFRUQ1RISFlCVlRUVFRUVFlJNDVRUkZWV1NGVlc3NjRMNEs1UUxVNFdMUFFKRVVFUklVRzNRVA==" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1826454619">GitLab Transcend</a> is a free virtual event happening on Feb 10th, where engineering leaders will share real-life stories of how their teams are using agentic AI to improve DevOps, security, and software delivery. [sponsored]</p>
</li>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5;"><a href="https://c5e21242.click.kit-mail6.com/27uepe0gddioh8lwe7kf3hgz5m744hghm2v3/3ohphdu3x326rpir/aHR0cHM6Ly90ZW1wb3JhbC1wbGF5Z3JvdW5kLnZlcmNlbC5hcHAv" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1826454620">Temporal Playground</a> is a fun place to bring your kids and the dog and let them experiment with the Temporal API until they’re all tuckered out for the day.</p>
</li>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5;"><a href="https://c5e21242.click.kit-mail6.com/27uepe0gddioh8lwe7kf3hgz5m744hghm2v3/n2hohquv2vxwglb6/aHR0cHM6Ly9naXRodWIuY29tL1BhbmthanRhbndhcmJhbm5hL3N0ZnU=" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1826454621">stfu</a> is a tiny app that plays back the audio it hears, delayed by 2 seconds. A revolutionary new way to shame people watching videos at full volume in public without headphones.</p>
</li>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5;">Antoine Boulanger identified some <a href="https://c5e21242.click.kit-mail6.com/27uepe0gddioh8lwe7kf3hgz5m744hghm2v3/48hvh7umwmpz93bx/aHR0cHM6Ly93d3cuYWJsZy5pby9ibG9nL25vLW1hbmFnZW1lbnQtbmVlZGVk" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1826454622">anti-patterns in early-stage engineering teams</a>.</p>
</li>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5;">Stephan Schwab wrote about <a href="https://c5e21242.click.kit-mail6.com/27uepe0gddioh8lwe7kf3hgz5m744hghm2v3/reh8h9umkm39v9u2/aHR0cHM6Ly93d3cuY2FpbWl0by5uZXQvZW4vYmxvZy8yMDI1LzEyLzA3L3RoZS1yZWN1cnJpbmctZHJlYW0tb2YtcmVwbGFjaW5nLWRldmVsb3BlcnMuaHRtbA==" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1826454624">why we’ve tried to replace developers every decade since 1969</a>. I personally think the market feels a <em>little</em> different now than it did during COBOL’s heyday, but I’m willing to defer to my elders on this one.</p>
</li>
</ol>
<hr style="border: 0; border-bottom: 5px solid; border-color: #f5f5f5; margin-bottom: 100px; margin-top: 100px;">
<div style="text-align:center;margin-bottom:36px">
<img width="110" src="https://bytes.dev/images/content/spot-the-bug.png" alt="Spot the Bug logo" style="max-width: 100%;"><h2 style="font-family: Paytone One, sans-serif; font-size: 28px; margin-top: 10px; text-transform: uppercase;">Spot the Bug: Solution</h2>
<div class="section-presenter" style="margin-bottom:50px;margin-top:15px"><h4 style="font-size: 19px; margin-bottom: 0; padding-left: 24px; padding-right: 24px;">Sponsored by <a href="https://c5e21242.click.kit-mail6.com/27uepe0gddioh8lwe7kf3hgz5m744hghm2v3/e0hph0u7m7l9ekf8/aHR0cHM6Ly9zcnYuYnV5c2VsbGFkcy5jb20vYWRzL2xvbmcveC9UQ0hONDdJUVRUVFRUVDQ0U1FVTkxUVFRUVFRRSlNEMjI2VFRUVFRUUDQ3Q0tCVlRUVFRUVDdaV1A3Tk1LWUk0NTJMV1dTSVZQM05VVFJQN0tSM040SUlMQ0ozRQ==" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1826454607">Auth0</a>
</h4></div>
</div>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5; padding-left: 24px; padding-right: 24px;">This bug occurs because the <code style="font-size: 14px;">split</code> method treats the string as an array of 16-bit units, not as an array of characters, resulting in the unexpected output: <code style="font-size: 14px;">!�� ,olleH</code>. By using <code style="font-size: 14px;">Array.from(str)</code> or <code style="font-size: 14px;">[...str]</code> the string is split into an array of actual characters, respecting the surrogate pairs.</p>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5; padding-left: 24px; padding-right: 24px;">Using <code style="font-size: 14px;">Array.from</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;">reverseString</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">(</span><span class="token parameter" style="color: #f38ba3; font-size: 14px;">str</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;">return</span> Array<span class="token punctuation" style="color: #231F20; font-size: 14px;">.</span><span class="token function" style="color: #9d7dce; font-size: 14px;">from</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">(</span>str<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;">reverse</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;">join</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">(</span><span class="token string" style="color: #f99157; 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 keyword" style="color: #f38ba3; font-size: 14px;">let</span> reversedString <span class="token operator" style="color: #12b5e5; font-size: 14px;">=</span> <span class="token function" style="color: #9d7dce; font-size: 14px;">reverseString</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>reversedString<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;">Using the spread operator:</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;">reverseString</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">(</span><span class="token parameter" style="color: #f38ba3; font-size: 14px;">str</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;">return</span> <span class="token punctuation" style="color: #231F20; font-size: 14px;">[</span><span class="token operator" style="color: #12b5e5; font-size: 14px;">...</span>str<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;">reverse</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;">join</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">(</span><span class="token string" style="color: #f99157; 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 keyword" style="color: #f38ba3; font-size: 14px;">let</span> reversedString <span class="token operator" style="color: #12b5e5; font-size: 14px;">=</span> <span class="token function" style="color: #9d7dce; font-size: 14px;">reverseString</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>reversedString<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://c5e21242.click.kit-mail6.com/27uepe0gddioh8lwe7kf3hgz5m744hghm2v3/08hwhgu2n290woul/aHR0cHM6Ly9ieXRlcy5kZXYvYWR2ZXJ0aXNl" url-id="1826454625">Sponsor Bytes</a></div>
<div style="margin-bottom:20px"><a style="color: #FCBA28; font-size: 14px; font-weight: 600; text-decoration: underline;" href="https://c5e21242.click.kit-mail6.com/27uepe0gddioh8lwe7kf3hgz5m744hghm2v3/8ghqh3uowo2ep2ik/aHR0cHM6Ly9ieXRlcy5kZXYvc2hhcmU=" url-id="1826454626">or share it</a></div>
<p style="font-family: Outfit, sans-serif; font-size: 14px; line-height: 1.5; padding-left: 24px; padding-right: 24px;">Built with ❤️ by<!-- --> <a style="color: #ed203d; font-weight: 600; text-decoration: underline;" href="https://c5e21242.click.kit-mail6.com/27uepe0gddioh8lwe7kf3hgz5m744hghm2v3/vqh3hmuomov234fg/aHR0cHM6Ly9maXJlc2hpcC5kZXY=" url-id="1826454627">Fireship</a></p>
</div></div>
<p style="font-family: Outfit, sans-serif; font-size: 14px; line-height: 1.5; opacity: 0.5; padding-left: 24px; padding-right: 24px;">50 W Broadway Ste 333 PMB 51647 Salt Lake City, Utah 84101</p>
<div style="font-family:Papyrus, cursive"><a class="unsubscribe-link" href="https://c5e21242.click.kit-mail6.com/27uepe0gddioh8lwe7kf3hgz5m744hghm2v3/l2heh6ulqln5vvt6/aHR0cHM6Ly9ieXRlcy5kZXYvdW5zdWJzY3JpYmU=" style="color: #9B9890;" url-id="1826454628">Unsubscribe from Bytes</a></div>
</div>
</div></td>
<td style="border-collapse: collapse !important; word-break: normal;"></td>
</tr></tbody></table>
<span style="display: none"><a href="https://c5e21242.unsubscribe.kit-mail6.com/27uepe0gddioh8lwe7kf3hgz5m744hghm2v3">Unsubscribe</a></span>
<!-- -->
<img src="https://c5e21242.open.kit-mail6.com/27uepe0gddioh8lwe7kf3hgz5m744hghm2v3" alt="">
</body>
</html>