<!DOCTYPE html>
<html>
<head>
<title>Bytes: TypeScript gets lean</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> Doing free work for legacy media, OpenAI research interview questions, and Paulo Coelho’s favorite infrastructure library.</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/o8uqeqor33bqh6rl5pxtvhq4wowrrioh4g6l/3ohphdu3dwnqwetr/aHR0cHM6Ly9ieXRlcy5kZXYvYXJjaGl2ZXMvNDE2" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1775407099">#416</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/kim-carly.jpg" alt="Kim Jong Un showing the iCarly crew something on the computer" 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;">Look at these new tooltips. Immaculate.<!-- --> </p>
</div>
<h3 style="font-size: 24px; margin-bottom: 0; padding-left: 24px; padding-right: 24px;">TypeScript gets lean</h3>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5; padding-left: 24px; padding-right: 24px;">And thankfully, it didn’t require injecting any of that off-brand Wegovy my brother-in-law has been importing from his “doctor” in China.</p>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5; padding-left: 24px; padding-right: 24px;">All it took was a new <a href="https://click.convertkit-mail4.com/o8uqeqor33bqh6rl5pxtvhq4wowrrioh4g6l/48hvh7um2on0o7tx/aHR0cHM6Ly9kZXZibG9ncy5taWNyb3NvZnQuY29tL3R5cGVzY3JpcHQvYW5ub3VuY2luZy10eXBlc2NyaXB0LTUtOS8=" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1775407101">5.9 release</a> that comes with a few slick improvements that should make your projects noticeably lighter and smarter.</p>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5; padding-left: 24px; padding-right: 24px;">Let’s take a closer look at four of the biggest upgrades:</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;">1. A cleaner <code style="font-size: 14px;">tsc --init</code></strong> – Running <code style="font-size: 14px;">tsc --init</code> no longer floods your <code style="font-size: 14px;">tsconfig.json</code> with 200 lines of commented-out settings that you’ll immediately delete. The new default is leaner and more opinionated out of the box, with sensible stuff like <code style="font-size: 14px;">moduleDetection: "force"</code> and <code style="font-size: 14px;">target: "esnext"</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;">2. Import now, execute later</strong> – The new <code style="font-size: 14px;">import defer</code> syntax lets you import a module upfront, but doesn’t run it until you actually touch one of its exports. Great for conditionally loading modules with expensive or platform-specific init only when needed.</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;">3. Friendlier editor + DOM tooltips</strong> – VS Code hover pop-ups can now be expanded inline with <code style="font-size: 14px;">+</code>/<code style="font-size: 14px;">-</code> buttons to peek deeper into your types. Many DOM APIs now also show short, MDN-sourced summaries right in the tooltip, so you can get a quick explanation without leaving your editor.</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;">4. Under-the-hood perf gains</strong> – TypeScript now caches more intermediate type work (a big win for Zod/tRPC-heavy codebases), and it trims file existence checks for another small speed boost.</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> I’m <em>still</em> getting cold sweats and night terrors from that one bootleg Wegovy shot I took, so it’s nice to see TypeScript slimming down without needing to resort to off-brand pharmaceuticals.</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/o8uqeqor33bqh6rl5pxtvhq4wowrrioh4g6l/wnh2h6uqoz3rzdi7/aHR0cHM6Ly9mYWNlYm9vay5jb20vc2hhcmVyL3NoYXJlci5waHA_dT1odHRwcyUzQSUyRiUyRmJ5dGVzLmRldiUyRmFyY2hpdmVzJTJGNDE2" rel="noopener" style="color: #12b5e5; font-weight: 600; padding-left: 5px; text-decoration: none;" target="_blank" url-id="1775407102"><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/o8uqeqor33bqh6rl5pxtvhq4wowrrioh4g6l/reh8h9um58eq88s2/aHR0cHM6Ly93d3cubGlua2VkaW4uY29tL3NoYXJpbmcvc2hhcmUtb2Zmc2l0ZS8_dXJsPWh0dHBzJTNBJTJGJTJGYnl0ZXMuZGV2JTJGYXJjaGl2ZXMlMkY0MTY=" rel="noopener" style="color: #12b5e5; font-weight: 600; padding-left: 5px; text-decoration: none;" target="_blank" url-id="1775407103"><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/o8uqeqor33bqh6rl5pxtvhq4wowrrioh4g6l/08hwhgu278kd00tl/aHR0cHM6Ly90d2l0dGVyLmNvbS9pbnRlbnQvdHdlZXQvP3RleHQ9SG93JTIwVHlwZVNjcmlwdCUyMHNsaW1tZWQlMjBkb3duJTIwd2l0aG91dCUyMG5lZWRpbmclMjBhbnklMjBHTFAtMSUyMGRydWdzJnVybD1odHRwcyUzQSUyRiUyRmJ5dGVzLmRldiUyRmFyY2hpdmVzJTJGNDE2" rel="noopener" style="color: #12b5e5; font-weight: 600; padding-left: 5px; text-decoration: none;" target="_blank" url-id="1775407104"><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/o8uqeqor33bqh6rl5pxtvhq4wowrrioh4g6l/8ghqh3uo54xle0ak/bWFpbHRvOj9ib2R5PVRob3VnaHQlMjB5b3UlMjdkJTIwbG92ZSUyMHRoaXMlMjB3ZWVrJTI3cyUyMEJ5dGVzJTBBLS0tJTBBSG93JTIwVHlwZVNjcmlwdCUyMHNsaW1tZWQlMjBkb3duJTIwd2l0aG91dCUyMG5lZWRpbmclMjBhbnklMjBHTFAtMSUyMGRydWdzJTBBaHR0cHMlM0ElMkYlMkZieXRlcy5kZXYlMkZhcmNoaXZlcyUyRjQxNiZzdWJqZWN0PVlvdSUyMGxpa2UlMjBjb3JuYnJlYWQlM0Y=" rel="noopener" style="color: #12b5e5; font-weight: 600; padding-left: 5px; text-decoration: none;" target="_blank" url-id="1775407105"><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/tyler-crying.jpg" alt="Tyler the Creator crying" width="600" style="border-radius: 5px; max-width: 100%;"><p style="font-family: Outfit, sans-serif; font-size: 15px; font-style: italic; line-height: 1; margin: 0; padding-bottom: 4px; padding-left: 24px; padding-right: 24px; padding-top: 10px; text-align: center;">When your iPhone simulator betrays you... again<!-- --> </p>
</div>
<h3 style="font-size: 24px; margin-bottom: 0; padding-left: 24px; padding-right: 24px;"><a href="https://click.convertkit-mail4.com/o8uqeqor33bqh6rl5pxtvhq4wowrrioh4g6l/vqh3hmuok5dp2vbg/aHR0cHM6Ly9hdHRlbmQucWF3b2xmLmNvbS9ob3ctd2UtYnVpbHQtYS1yZWFsLWlwaG9uZS1kZXZpY2UtZmFybS1mb3ItaW9zLW1vYmlsZS10ZXN0aW5nL3JlZ2lzdGVyP3V0bV9jYW1wYWlnbj1BQ1FfQWxsX0V2ZW50JTIwUmVnaXN0cmF0aW9uc19fTmV3c2xldHRlckF1ZGllbmNlXy1fTmV3c2xldHRlcl9pT1NEZXZpY2VGYXJtV2ViaW5hcl8yMDI1MDgxNC1Ob25lX0V4cGVyaW1lbnQtRkFMU0UmdXRtX2NvbnRlbnQ9aU9TRGV2aWNlRmFybVdlYmluYXJfUmVnaXN0ZXJIZXJlX05vbmVfSGVhZGxpbmUlM0FJbnNpZGVMb29rSG93UUFXb2xmQnVpbHRBbmlQaG9uZUFybXlGb3JpT1NUZXN0aW5nX19fX05ld3NsZXR0ZXItUHJpbWFyeVBsYWNlbWVudF8yMDI1MDgxNF92MV8mdXRtX21lZGl1bT1uZXdzbGV0dGVyJnV0bV9zb3VyY2U9Ynl0ZXMmdXRtX3Rlcm09aGVhZGxpbmUtSW5zaWRlTG9va0hvd1FBV29sZkJ1aWx0QW5pUGhvbmVBcm15Rm9yaU9TVGVzdGluZw==" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1775407106">Inside look: How QA Wolf built an iPhone army for iOS testing</a></h3>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5; padding-left: 24px; padding-right: 24px;">Most iOS simulators are <del>hot garbage</del> <em>frustratingly error-prone.</em></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/o8uqeqor33bqh6rl5pxtvhq4wowrrioh4g6l/l2heh6ulkgz354s6/aHR0cHM6Ly93d3cucWF3b2xmLmNvbS8_dXRtX2NhbXBhaWduPUFDUV9BbGxfRXZlbnQlMjBSZWdpc3RyYXRpb25zX19OZXdzbGV0dGVyQXVkaWVuY2VfLV9OZXdzbGV0dGVyX2lPU0RldmljZUZhcm1XZWJpbmFyXzIwMjUwODE0LU5vbmVfRXhwZXJpbWVudC1GQUxTRSZ1dG1fY29udGVudD1pT1NEZXZpY2VGYXJtV2ViaW5hcl9SZWdpc3RlckhlcmVfTm9uZV9IZWFkbGluZSUzQUluc2lkZUxvb2tIb3dRQVdvbGZCdWlsdEFuaVBob25lQXJteUZvcmlPU1Rlc3RpbmdfX19fTmV3c2xldHRlci1QcmltYXJ5UGxhY2VtZW50XzIwMjUwODE0X3YxXyZ1dG1fbWVkaXVtPW5ld3NsZXR0ZXImdXRtX3NvdXJjZT1ieXRlcyZ1dG1fdGVybT1ib2R5LVFBV29sZg==" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1775407107">QA Wolf</a> built a real iPhone device farm – and on August 28th, they’re hosting a <a href="https://click.convertkit-mail4.com/o8uqeqor33bqh6rl5pxtvhq4wowrrioh4g6l/m2h7h6u3nr78k0tm/aHR0cHM6Ly9hdHRlbmQucWF3b2xmLmNvbS9ob3ctd2UtYnVpbHQtYS1yZWFsLWlwaG9uZS1kZXZpY2UtZmFybS1mb3ItaW9zLW1vYmlsZS10ZXN0aW5nL3JlZ2lzdGVyP3V0bV9jYW1wYWlnbj1BQ1FfQWxsX0V2ZW50JTIwUmVnaXN0cmF0aW9uc19fTmV3c2xldHRlckF1ZGllbmNlXy1fTmV3c2xldHRlcl9pT1NEZXZpY2VGYXJtV2ViaW5hcl8yMDI1MDgxNC1Ob25lX0V4cGVyaW1lbnQtRkFMU0UmdXRtX2NvbnRlbnQ9aU9TRGV2aWNlRmFybVdlYmluYXJfUmVnaXN0ZXJIZXJlX05vbmVfSGVhZGxpbmUlM0FJbnNpZGVMb29rSG93UUFXb2xmQnVpbHRBbmlQaG9uZUFybXlGb3JpT1NUZXN0aW5nX19fX05ld3NsZXR0ZXItUHJpbWFyeVBsYWNlbWVudF8yMDI1MDgxNF92MV8mdXRtX21lZGl1bT1uZXdzbGV0dGVyJnV0bV9zb3VyY2U9Ynl0ZXMmdXRtX3Rlcm09Ym9keS1GcmVlV29ya3Nob3A=" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1775407108">free workshop</a> to show you exactly how they did it.</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;">You’ll learn:</strong></p>
<ul>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5;"><strong style="font-weight: 600;">Why simulators fail</strong> at e2e mobile testing – and why third-party device clouds slow you down</p>
</li>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5;"><strong style="font-weight: 600;">What it took</strong> to adapt their automated testing solution to get <a href="https://click.convertkit-mail4.com/o8uqeqor33bqh6rl5pxtvhq4wowrrioh4g6l/dphehmue73m0zmfm/aHR0cHM6Ly93d3cucWF3b2xmLmNvbS9ob3ctaXQtd29ya3M_dXRtX2NhbXBhaWduPUFDUV9BbGxfRXZlbnQlMjBSZWdpc3RyYXRpb25zX19OZXdzbGV0dGVyQXVkaWVuY2VfLV9OZXdzbGV0dGVyX2lPU0RldmljZUZhcm1XZWJpbmFyXzIwMjUwODE0LU5vbmVfRXhwZXJpbWVudC1GQUxTRSZ1dG1fY29udGVudD1pT1NEZXZpY2VGYXJtV2ViaW5hcl9SZWdpc3RlckhlcmVfTm9uZV9IZWFkbGluZSUzQUluc2lkZUxvb2tIb3dRQVdvbGZCdWlsdEFuaVBob25lQXJteUZvcmlPU1Rlc3RpbmdfX19fTmV3c2xldHRlci1QcmltYXJ5UGxhY2VtZW50XzIwMjUwODE0X3YxXyZ1dG1fbWVkaXVtPW5ld3NsZXR0ZXImdXRtX3NvdXJjZT1ieXRlcyZ1dG1fdGVybT1jdGEtUmVnaXN0ZXJIZXJl" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1775407109">80% test coverage</a> for iOS apps</p>
</li>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5;"><strong style="font-weight: 600;">How they built for speed</strong> by running parallelized tests on physical iPhones</p>
</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/o8uqeqor33bqh6rl5pxtvhq4wowrrioh4g6l/e0hph0u7nx209ns8/aHR0cHM6Ly9hdHRlbmQucWF3b2xmLmNvbS9ob3ctd2UtYnVpbHQtYS1yZWFsLWlwaG9uZS1kZXZpY2UtZmFybS1mb3ItaW9zLW1vYmlsZS10ZXN0aW5nL3JlZ2lzdGVyP3V0bV9jYW1wYWlnbj1BQ1FfQWxsX0V2ZW50JTIwUmVnaXN0cmF0aW9uc19fTmV3c2xldHRlckF1ZGllbmNlXy1fTmV3c2xldHRlcl9pT1NEZXZpY2VGYXJtV2ViaW5hcl8yMDI1MDgxNC1Ob25lX0V4cGVyaW1lbnQtRkFMU0UmdXRtX2NvbnRlbnQ9aU9TRGV2aWNlRmFybVdlYmluYXJfUmVnaXN0ZXJIZXJlX05vbmVfSGVhZGxpbmUlM0FJbnNpZGVMb29rSG93UUFXb2xmQnVpbHRBbmlQaG9uZUFybXlGb3JpT1NUZXN0aW5nX19fX05ld3NsZXR0ZXItUHJpbWFyeVBsYWNlbWVudF8yMDI1MDgxNF92MV8mdXRtX21lZGl1bT1uZXdzbGV0dGVyJnV0bV9zb3VyY2U9Ynl0ZXMmdXRtX3Rlcm09Y3RhLVJlZ2lzdGVySGVyZQ==" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1775407110">Register here</a> – to get a behind-the-scenes look at how they get full iOS test coverage with no emulator guesswork and no flake retries.</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://click.convertkit-mail4.com/o8uqeqor33bqh6rl5pxtvhq4wowrrioh4g6l/7qh7h2u94gmov0tz/aHR0cHM6Ly93d3cuYXVnbWVudGNvZGUuY29tL2Jsb2cvYmV5b25kLXRoZS1pZGU=" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1775407111">Augment Code</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>Their article on <a href="https://click.convertkit-mail4.com/o8uqeqor33bqh6rl5pxtvhq4wowrrioh4g6l/7qh7h2u94gmov0tz/aHR0cHM6Ly93d3cuYXVnbWVudGNvZGUuY29tL2Jsb2cvYmV5b25kLXRoZS1pZGU=" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1775407111">Why the future of software engineering is beyond the IDE</a> shares how AI agents are changing not just <strong style="font-weight: 600;">how</strong> we code, but <strong style="font-weight: 600;">where</strong> we code.</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;">class</span> <span class="token class-name" style="color: #12b5e5; font-size: 14px;">Singleton</span> <span class="token punctuation" style="color: #231F20; font-size: 14px;">{</span>
<span class="token function" style="color: #9d7dce; font-size: 14px;">constructor</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;">if</span> <span class="token punctuation" style="color: #231F20; font-size: 14px;">(</span><span class="token keyword" style="color: #f38ba3; font-size: 14px;">this</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">.</span>instance<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 keyword" style="color: #f38ba3; font-size: 14px;">this</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">.</span>instance<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;">this</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">.</span>value <span class="token operator" style="color: #12b5e5; font-size: 14px;">=</span> Math<span class="token punctuation" style="color: #231F20; font-size: 14px;">.</span><span class="token function" style="color: #9d7dce; font-size: 14px;">random</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;">this</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">.</span>instance <span class="token operator" style="color: #12b5e5; font-size: 14px;">=</span> <span class="token keyword" style="color: #f38ba3; font-size: 14px;">this</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 keyword" style="color: #f38ba3; font-size: 14px;">this</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;">getValue</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;">return</span> <span class="token keyword" style="color: #f38ba3; font-size: 14px;">this</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">.</span>value<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;">Ahmad Shadeed (<span role="img" aria-label="goat">🐐</span>) is back with another interactive article where he <a href="https://click.convertkit-mail4.com/o8uqeqor33bqh6rl5pxtvhq4wowrrioh4g6l/owhkhwuw8z7r3riv/aHR0cHM6Ly9pc2hhZGVlZC5jb20vYXJ0aWNsZS90aW1lLWxheW91dC8=" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1775407112">rebuilds the <code style="font-size: 14px;">Time.com</code> Hero section in better CSS</a>. Hopefully they pay his invoice in the mail.</p>
</li>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5;"><a href="https://click.convertkit-mail4.com/o8uqeqor33bqh6rl5pxtvhq4wowrrioh4g6l/z2hgh7uedg839eap/aHR0cHM6Ly93d3cud2FycC5kZXYvY29kZT91dG1fY2FtcGFpZ249OF8xNV8yMDI1X2Nvb2xfYml0cyZ1dG1fY29udGVudD1ieXRlcyZ1dG1fbWVkaXVtPW5ld3NsZXR0ZXImdXRtX3NvdXJjZT1wdWJsaWNhdGlvbnM=" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1775407113">Warp Codes</a> is like a model buffet: GPT-5, Opus 4.1, Gemini 2.5 and more, all under one subscription, with new models available the moment they drop. Most generous limits around, and if you somehow hit them, you just pay as you go. No rate-limit lockouts. Get 20% off Warp Pro with code <code style="font-size: 14px;">BYTES-PRO</code>. [sponsored]</p>
</li>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5;">Sam Goodwin created <a href="https://click.convertkit-mail4.com/o8uqeqor33bqh6rl5pxtvhq4wowrrioh4g6l/x0hph3ue7glw83h5/aHR0cHM6Ly9hbGNoZW15LnJ1bi8=" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1775407115">Alchemy</a> – an embeddable Infrastructure-as-Code library that’s implemented in pure, ESM-native TypeScript code. I guess that means TypeScript is the lead and Cloudflare is the gold in this analogy?</p>
</li>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5;">Conrad Irwin wrote about <a href="https://click.convertkit-mail4.com/o8uqeqor33bqh6rl5pxtvhq4wowrrioh4g6l/6qhehoul2qd7v0so/aHR0cHM6Ly96ZWQuZGV2L2Jsb2cvd2h5LWxsbXMtY2FudC1idWlsZC1zb2Z0d2FyZQ==" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1775407116">why LLMs can’t really build software</a>, even though they <em>can</em> write code. So they really are just like most of us after all.</p>
</li>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5;">The Codecov (Sentry) team wrote this guide on <a href="https://click.convertkit-mail4.com/o8uqeqor33bqh6rl5pxtvhq4wowrrioh4g6l/kkhmh2un973lgzul/aHR0cHM6Ly9hYm91dC5jb2RlY292LmlvL3Jlc291cmNlL3Rlc3RpbmctbWlsZXN0b25lcy1hLWNoZWNrbGlzdC1mb3ItZXZlcnktc3RhZ2UvP3V0bV9jYW1wYWlnbj1jb2RlY292LWZ5MjZxMy10ZXN0YW5hbHl0aWNzJnV0bV9jb250ZW50PW5ld3NsZXR0ZXItdGVzdG1pbGVzdG9uZXNjaGVja2xpc3QtZG93bmxvYWQmdXRtX21lZGl1bT1wYWlkLWNvbW11bml0eSZ1dG1fc291cmNlPWJ5dGVz" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1775407117">Testing Milestones</a> – which comes with a checklist for every stage of the process, so you’ll always know what to do next when building out test coverage for your codebase. [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/o8uqeqor33bqh6rl5pxtvhq4wowrrioh4g6l/58hvh8ug9ezmpqb6/aHR0cHM6Ly9yZWFjdG5hdGl2ZS5kZXYvYmxvZy8yMDI1LzA4LzEyL3JlYWN0LW5hdGl2ZS0wLjgx" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1775407118">React Native 0.81</a> comes with Android 16 support, faster iOS builds, and a bunch of stability improvements.</p>
</li>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5;">Shajid Hasan wrote about <a href="https://click.convertkit-mail4.com/o8uqeqor33bqh6rl5pxtvhq4wowrrioh4g6l/25h2h9u3o5e2r9s3/aHR0cHM6Ly93d3cuc2g0amlkLm1lL2Jsb2cvc3ZlbHRlLW1hcmtkb3duLWFuZC10aGUtbWFnaWMtb2Ytd2ViLWNvbXBvbmVudHM=" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1775407119">Svelte, Markdown, and the magic of Web Components</a>. Hey did you know that YouTube actually uses Web Components? Have any WC truthers ever mentioned that before?</p>
</li>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5;">Alem Tuzlak made this video about his work <a href="https://click.convertkit-mail4.com/o8uqeqor33bqh6rl5pxtvhq4wowrrioh4g6l/qvh8h8ud6x0rgpal/aHR0cHM6Ly93d3cueW91dHViZS5jb20vd2F0Y2g_YWJfY2hhbm5lbD1BbGVtVHV6bGFrJnY9RW0yTWVFLUdUSzA=" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1775407120">building the new TanStack devtools</a>.</p>
</li>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5;"><a href="https://click.convertkit-mail4.com/o8uqeqor33bqh6rl5pxtvhq4wowrrioh4g6l/g3hnhwumzvk375sr/aHR0cHM6Ly9naXRodWIuY29tL2dldC1jb252ZXgvYWdlbnQ=" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1775407121"><code style="font-size: 14px;">@convex-dev/agent</code></a> is a component for building agentic AI applications on Convex with persistent chat history. [sponsored]</p>
</li>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5;">Bas van Opheusden wrote about <a href="https://click.convertkit-mail4.com/o8uqeqor33bqh6rl5pxtvhq4wowrrioh4g6l/9qhzhdud27lpkvh9/aHR0cHM6Ly9kb2NzLmdvb2dsZS5jb20vZG9jdW1lbnQvZC8xWlY3M0QydmdhajJ5dV90ak4zVFZPUDZRVkxXVlBYSkIycnJxU1pReFl0SS9lZGl0P3RhYj10LjA=" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1775407122">the AI research interview process at OpenAI</a>, which is a helpful first step to getting a 9-figure offer at Meta.</p>
</li>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5;">Cloudflare created <a href="https://click.convertkit-mail4.com/o8uqeqor33bqh6rl5pxtvhq4wowrrioh4g6l/3ohphdu3dwn76eur/aHR0cHM6Ly9sZWFybm1jcC5leGFtcGxlcy53b3JrZXJzLmRldi8=" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1775407123">Learn MCP</a>, a free course that shows you how to build an MCP server with Cloudflare Workers.</p>
</li>
<li>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5;">Una Kravets wrote about <a href="https://click.convertkit-mail4.com/o8uqeqor33bqh6rl5pxtvhq4wowrrioh4g6l/n2hohquvodk3w7h6/aHR0cHM6Ly91bmEuaW0vNS1jc3MtZnVuY3Rpb25zLw==" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1775407124">5 useful CSS functions using the new <code style="font-size: 14px;">@function</code> rule</a>. My wife also has “5 function rules” for me to follow, but they mainly involve me making eye contact with people at birthday parties and <em>not</em> repeatedly asking the host if they’re gonna have Bagel Bites later.</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://click.convertkit-mail4.com/o8uqeqor33bqh6rl5pxtvhq4wowrrioh4g6l/7qh7h2u94gmov0tz/aHR0cHM6Ly93d3cuYXVnbWVudGNvZGUuY29tL2Jsb2cvYmV5b25kLXRoZS1pZGU=" style="color: #12b5e5; font-weight: 600; text-decoration: underline;" url-id="1775407111">Augment Code</a>
</h4></div>
</div>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5; padding-left: 24px; padding-right: 24px;"><code style="font-size: 14px;">this.instance</code> is an instance property instead of a static property, causing it to be undefined every time a new instance is created, failing to enforce the singleton pattern.</p>
<p style="font-family: Outfit, sans-serif; font-size: 17px; line-height: 1.5; padding-left: 24px; padding-right: 24px;">To fix this, we should use a static property instead:</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;">class</span> <span class="token class-name" style="color: #12b5e5; font-size: 14px;">Singleton</span> <span class="token punctuation" style="color: #231F20; font-size: 14px;">{</span>
<span class="token function" style="color: #9d7dce; font-size: 14px;">constructor</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;">if</span> <span class="token punctuation" style="color: #231F20; font-size: 14px;">(</span>Singleton<span class="token punctuation" style="color: #231F20; font-size: 14px;">.</span>instance<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> Singleton<span class="token punctuation" style="color: #231F20; font-size: 14px;">.</span>instance<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;">this</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">.</span>value <span class="token operator" style="color: #12b5e5; font-size: 14px;">=</span> Math<span class="token punctuation" style="color: #231F20; font-size: 14px;">.</span><span class="token function" style="color: #9d7dce; font-size: 14px;">random</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>
Singleton<span class="token punctuation" style="color: #231F20; font-size: 14px;">.</span>instance <span class="token operator" style="color: #12b5e5; font-size: 14px;">=</span> <span class="token keyword" style="color: #f38ba3; font-size: 14px;">this</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 keyword" style="color: #f38ba3; font-size: 14px;">this</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;">getValue</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;">return</span> <span class="token keyword" style="color: #f38ba3; font-size: 14px;">this</span><span class="token punctuation" style="color: #231F20; font-size: 14px;">.</span>value<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/o8uqeqor33bqh6rl5pxtvhq4wowrrioh4g6l/48hvh7um2onrz7ux/aHR0cHM6Ly9ieXRlcy5kZXYvYWR2ZXJ0aXNl" url-id="1775407125">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/o8uqeqor33bqh6rl5pxtvhq4wowrrioh4g6l/wnh2h6uqoz3w9db7/aHR0cHM6Ly9ieXRlcy5kZXYvc2hhcmU=" url-id="1775407126">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/o8uqeqor33bqh6rl5pxtvhq4wowrrioh4g6l/reh8h9um58e098f2/aHR0cHM6Ly91aS5kZXY=" url-id="1775407127">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/o8uqeqor33bqh6rl5pxtvhq4wowrrioh4g6l/08hwhgu278kdo0ul/aHR0cHM6Ly9ieXRlcy5kZXYvdW5zdWJzY3JpYmU=" style="color: #9B9890;" url-id="1775407128">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/o8uqeqor33bqh6rl5pxtvhq4wowrrioh4g6l">Unsubscribe</a></span>
<!-- -->
<img src="https://open.convertkit-mail4.com/o8uqeqor33bqh6rl5pxtvhq4wowrrioh4g6l" alt="">
</body>
</html>