<!DOCTYPE html><html lang="en"><head><meta http-equiv="Content-Type" content="text/html charset=UTF-8"><meta charset="UTF-8"><meta name="viewport" content="width=device-width"><meta name="x-apple-disable-message-reformatting"><title>TLDR Dev</title><meta name="color-scheme" content="light dark"><meta name="supported-color-schemes" content="light dark"><style type="text/css">
:root {
color-scheme: light dark; supported-color-schemes: light dark;
}
*,
*:after,
*:before {
-webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box;
}
* {
-ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%;
}
html,
body,
.document {
width: 100% !important; height: 100% !important; margin: 0; padding: 0;
}
body {
-webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; text-rendering: optimizeLegibility;
}
div[style*="margin: 16px 0"] {
margin: 0 !important;
}
table,
td {
mso-table-lspace: 0pt; mso-table-rspace: 0pt;
}
table {
border-spacing: 0; border-collapse: collapse; table-layout: fixed; margin: 0 auto;
}
img {
-ms-interpolation-mode: bicubic; max-width: 100%; border: 0;
}
*[x-apple-data-detectors] {
color: inherit !important; text-decoration: none !important;
}
.x-gmail-data-detectors,
.x-gmail-data-detectors *,
.aBn {
border-bottom: 0 !important; cursor: default !important;
}
.btn {
-webkit-transition: all 200ms ease; transition: all 200ms ease;
}
.btn:hover {
background-color: #f67575; border-color: #f67575;
}
* {
font-family: Arial, Helvetica, sans-serif; font-size: 18px;
}
@media screen and (max-width: 600px) {
.container {
width: 100%; margin: auto;
}
.stack {
display: block!important; width: 100%!important; max-width: 100%!important;
}
.btn {
display: block; width: 100%; text-align: center;
}
}
body,
p,
td,
tr,
.body,
table,
h1,
h2,
h3,
h4,
h5,
h6,
div,
span {
background-color: #FEFEFE !important; color: #010101 !important;
}
@media (prefers-color-scheme: dark) {
body,
p,
td,
tr,
.body,
table,
h1,
h2,
h3,
h4,
h5,
h6,
div,
span {
background-color: #27292D !important; color: #FEFEFE !important;
}
}
a {
color: inherit !important; text-decoration: underline !important;
}
</style><!--[if mso | ie]>
<style type="text/css">
a {
background-color: #FEFEFE !important; color: #010101 !important;
}
@media (prefers-color-scheme: dark) {
a {
background-color: #27292D !important; color: #FEFEFE !important;
}
}
</style>
<![endif]--></head><body class="">
<div style="display: none; max-height: 0px; overflow: hidden;">Google DeepMind has launched Nano Banana Pro (Gemini 3 Pro Image), a state-of-the-art image generation and editing model built on Gemini 3 Pro β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β </div>
<div style="display: none; max-height: 0px; overflow: hidden;">
<br>
</div>
<table align="center" class="document"><tbody><tr><td valign="top">
<table align="center" border="0" cellpadding="0" cellspacing="0" class="container" width="600"><tbody><tr class="inner-body"><td>
<table align="center" border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr class="header"><td bgcolor="" class="container">
<table width="100%"><tbody><tr><td class="container">
<table align="center" bgcolor="" border="0" cellpadding="0" cellspacing="0" style="margin-top: 0px;" width="100%"><tbody><tr><td style="padding: 0px;">
<table align="center" bgcolor="" border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="container" style="padding: 15px 15px;">
<div style="text-align: center;">
<span style="margin-right: 0px;"><a href="https://tracking.tldrnewsletter.com/CL0/https:%2F%2Ftldr.tech%2Fdev%3Futm_source=tldrdev/1/0100019aa6508f47-8802c268-36a1-4214-92c9-bc9fa518fe0c-000000/tQF8D9r7PAHdf262FlQsAf0KfRJ2qpkMmzifnifJa6I=432" rel="noopener noreferrer" target="_blank"><span>Sign Up</span></a>
|<span style="margin-right: 2px; margin-left: 2px;"><a href="https://tracking.tldrnewsletter.com/CL0/https:%2F%2Fadvertise.tldr.tech%2F%3Futm_source=tldrdev%26utm_medium=newsletter%26utm_campaign=advertisetopnav/1/0100019aa6508f47-8802c268-36a1-4214-92c9-bc9fa518fe0c-000000/C00-Gb8KIJOzSMqh8-4HxMCgWJdEPZAm1aIpTqzFcOo=432" rel="noopener noreferrer" target="_blank"><span>Advertise</span></a></span>|<span style="margin-left: 2px;"><a href="https://tracking.tldrnewsletter.com/CL0/https:%2F%2Fa.tldrnewsletter.com%2Fweb-version%3Fep=1%26lc=156b9020-84b7-11f0-a976-55fc1d40139c%26p=365a8692-c6ac-11f0-946c-9ba2fb75f62f%26pt=campaign%26t=1763726888%26s=22a1dc61645908e617a403f82ff05e853a8525008696707c762a39b9e7eedbd1/1/0100019aa6508f47-8802c268-36a1-4214-92c9-bc9fa518fe0c-000000/-yKVBkqBIedaxvs_9BjZpSVyLaKAwg0yrgBp3GnVrL0=432"><span>View Online</span></a></span>
<br>
</span></div>
</td></tr></tbody></table>
<table align="center" bgcolor="" border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="container" style="text-align: center;"><span data-darkreader-inline-color="" style="--darkreader-inline-color:#3db3ff; color: rgb(51, 175, 255) !important; font-size: 30px;">T</span><span style="font-size: 30px;"><span data-darkreader-inline-color="" style="color: rgb(232, 192, 96) !important; --darkreader-inline-color:#e8c163; font-size:30px;">L</span><span data-darkreader-inline-color="" style="color: rgb(101, 195, 173) !important; --darkreader-inline-color:#6ec7b2; font-size:30px;">D</span></span><span data-darkreader-inline-color="" style="--darkreader-inline-color:#dd6e6e; color: rgb(220, 107, 107) !important; font-size: 30px;">R</span>
<br>
</td></tr></tbody></table>
<br>
<table align="center" bgcolor="" border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr id="together-with"><td align="center" height="20" style="vertical-align:middle !important;" valign="middle" width="100%"><strong style="vertical-align:middle !important; height: 100%;">Together With </strong>
<a href="https://tracking.tldrnewsletter.com/CL0/https:%2F%2Fmomentic.ai%2F%3Futm_source=tldr%26utm_medium=newsletter%26utm_campaign=tldr11212025/1/0100019aa6508f47-8802c268-36a1-4214-92c9-bc9fa518fe0c-000000/ItCIvyJqdG1WI6xPezV9gwfN_2bd9a46aKiOuBb0-uQ=432"><img src="https://images.tldr.tech/momentic.png" valign="middle" style="vertical-align: middle !important; height: 100%;" alt="Momentic"></a></td></tr></tbody></table>
<table style="table-layout: fixed; width:100%;" width="100%"><tbody><tr><td style="padding:0;border-collapse:collapse;border-spacing:0;margin:0;">
<div style="text-align: center;">
<h1><strong> TLDR Dev <span id="date">2025-11-21</span></strong></h1>
</div>
</td></tr></tbody></table>
<table style="table-layout: fixed; width:100%;" width="100%"><tbody><tr id="sponsy-copy"><td class="container" style="padding: 15px 15px;">
<div class="text-block">
<span>
<a href="https://tracking.tldrnewsletter.com/CL0/https:%2F%2Fmomentic.ai%2F%3Futm_source=tldr%26utm_medium=newsletter%26utm_campaign=tldr11212025/2/0100019aa6508f47-8802c268-36a1-4214-92c9-bc9fa518fe0c-000000/Rv2vDwopp2D2iCZgmwj0wfTn2xcyL7SKfIE_598HAms=432">
<span>
<strong>Ship faster without flaky Playwright tests (Sponsor)</strong>
</span>
</a>
<br>
<br>
<span style="font-family: "Helvetica Neue", Helvetica, Arial, Verdana, sans-serif;">
If your team spends more time nursing brittle Playwright tests than shipping features, you should check out Momentic.<p></p><p>Turn plain-English descriptions of your critical flows into <a href="https://tracking.tldrnewsletter.com/CL0/https:%2F%2Fmomentic.ai%2F%3Futm_source=tldr%26utm_medium=newsletter%26utm_campaign=tldr11212025/3/0100019aa6508f47-8802c268-36a1-4214-92c9-bc9fa518fe0c-000000/SCoeR0F68e7xLGu7fgjweAmriJKj-GISHKvgV7pjJL4=432" rel="noopener noreferrer nofollow" target="_blank"><span>AI-native end-to-end tests</span></a> that adapt when the UI changes. No brittle selectors, no custom test code to maintain.</p>
<p>With <a href="https://tracking.tldrnewsletter.com/CL0/https:%2F%2Fmomentic.ai%2F%3Futm_source=tldr%26utm_medium=newsletter%26utm_campaign=tldr11212025/4/0100019aa6508f47-8802c268-36a1-4214-92c9-bc9fa518fe0c-000000/GIcJEuQX3QihSPAFOtVF8b9ZoQ-iHXbKOiBs0vpHWvo=432" rel="noopener noreferrer nofollow" target="_blank"><span>Momentic</span></a> you can:</p>
<ul>
<li>Catch regressions on every PR and deploy</li>
<li>Cut hours of test maintenance each week</li>
<li>Give engineers reliable signal before every release</li>
</ul>
<p>The result? <a href="https://tracking.tldrnewsletter.com/CL0/https:%2F%2Fmomentic.ai%2Fcustomers%2Fquora%3Futm_source=tldr%26utm_medium=newsletter%26utm_campaign=tldr11212025/1/0100019aa6508f47-8802c268-36a1-4214-92c9-bc9fa518fe0c-000000/PWt9nd6D49OcWyv3akoA_TG7JS01K9UpF80FHMviCQw=432" rel="noopener noreferrer nofollow" target="_blank"><span>Quora's product operations team</span></a> took Poe's daily QA cycle from 14 hours down to 30 minutes, <strong>a 14x speedup</strong>.</p>
<p><a href="https://tracking.tldrnewsletter.com/CL0/https:%2F%2Fmomentic.ai%2F%3Futm_source=tldr%26utm_medium=newsletter%26utm_campaign=tldr11212025/5/0100019aa6508f47-8802c268-36a1-4214-92c9-bc9fa518fe0c-000000/3koI_aVhlklM3K_cduPgOMvIBUd9XrsUQJq1v7UhA_U=432" rel="noopener noreferrer nofollow" target="_blank"><span>Schedule a demo to learn more</span></a>
</p>
</span></span></div>
</td></tr></tbody></table>
</td></tr></tbody></table>
</td></tr></tbody></table>
</td></tr>
<tr bgcolor=""><td class="container">
<table align="center" bgcolor="" border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td style="padding: 0px;">
<table align="center" bgcolor="" border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="container" style="padding-top: 0px; padding-bottom: 0px;">
<div class="text-block">
<div style="text-align: center;"><span style="font-size: 36px;">π§βπ»</span></div>
</div>
</td></tr></tbody></table>
<table align="center" bgcolor="" border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="container" style="padding-top: 0px; padding-bottom: 0px;">
<div class="text-block">
<div style="text-align: center;">
<h1><strong>Articles & Tutorials</strong></h1>
</div>
</div>
</td></tr></tbody></table>
<table style="table-layout: fixed; width: 100%;" width="100%"><tbody><tr><td style="padding:0;border-collapse:collapse;border-spacing:0;margin:0;" valign="top">
<table align="center" border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="container" style="padding: 15px 15px;">
<div class="text-block">
<span>
<a href="https://tracking.tldrnewsletter.com/CL0/https:%2F%2Falexschapiro.com%2Fblog%2Fsecurity%2Fvulnerability%2F2025%2F11%2F20%2Favelo-airline-reservation-api-vulnerability%3Futm_source=tldrwebdev/1/0100019aa6508f47-8802c268-36a1-4214-92c9-bc9fa518fe0c-000000/ROW2Lhb4qXZU5kBWZRvd4sTCQlVVZPs1D0JrXdLidXY=432">
<span>
<strong>Brute-Forceable Airline Reservation API Left Millions of Passenger Records Vulnerable (7 minute read)</strong>
</span>
</a>
<br>
<br>
<span style="font-family: "Helvetica Neue", Helvetica, Arial, Verdana, sans-serif;">
A security researcher discovered a vulnerability in Avelo Airline's reservation API that allowed unauthorized access to passenger data through a brute-force attack due to the lack of last name verification and rate limiting. By exploiting this flaw, an attacker could have potentially accessed millions of passenger records, including PII, government ID numbers, and partial payment data, within a few hours. The researcher responsibly disclosed the vulnerability to Avelo on October 15, who quickly responded and patched the issues by November 13.
</span>
</span>
</div>
</td></tr></tbody></table>
<table align="center" border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="container" style="padding: 15px 15px;">
<div class="text-block">
<span>
<a href="https://tracking.tldrnewsletter.com/CL0/https:%2F%2Fwww.datadoghq.com%2Fblog%2Fruby-performance-optimization%3Futm_source=tldrwebdev/1/0100019aa6508f47-8802c268-36a1-4214-92c9-bc9fa518fe0c-000000/MuUPuTGoL9B_nstGtlXA76PVtgWiNC8xiCG3gaMubco=432">
<span>
<strong>Optimizing Ruby performance: Observations from thousands of real-world services (7 minute read)</strong>
</span>
</a>
<br>
<br>
<span style="font-family: "Helvetica Neue", Helvetica, Arial, Verdana, sans-serif;">
Based on analysis of over 3,000 real-world Ruby services, Datadog found that Ruby applications spend 82% of their CPU time in library code, making careful library selection necessary for performance optimization. Upgrading from Ruby 2 to Ruby 3 (with YJIT enabled) reduces CPU usage, while some popular libraries like mysql2 can be replaced with more efficient alternatives like trilogy for performance gains.
</span>
</span>
</div>
</td></tr></tbody></table>
<table align="center" border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="container" style="padding: 15px 15px;">
<div class="text-block">
<span>
<a href="https://tracking.tldrnewsletter.com/CL0/https:%2F%2Fwww.anthropic.com%2Fengineering%2Fcode-execution-with-mcp%3Futm_source=tldrwebdev/1/0100019aa6508f47-8802c268-36a1-4214-92c9-bc9fa518fe0c-000000/YOhViv9OK9ve-JMrySYNKvnullBinlB-mZnl7x96-og=432">
<span>
<strong>Code execution with MCP: building more efficient AI agents (8 minute read)</strong>
</span>
</a>
<br>
<br>
<span style="font-family: "Helvetica Neue", Helvetica, Arial, Verdana, sans-serif;">
MCP allows AI agents to connect to external systems, but as agents scale to use hundreds or thousands of tools, loading all tool definitions upfront and passing intermediate results through the context window creates inefficiencies and increased costs. By using code execution environments where agents write code to interact with MCP servers as APIs rather than making direct tool calls, agents can load only needed tools on-demand, process data locally before returning results to the model, and reduce token usage by up to 98.7%.
</span>
</span>
</div>
</td></tr></tbody></table>
</td></tr></tbody></table>
<table align="center" bgcolor="" border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="container" style="padding-top: 0px; padding-bottom: 0px;">
<div class="text-block">
<div style="text-align: center;"><span style="font-size: 36px;">π§ </span></div>
</div>
</td></tr></tbody></table>
<table align="center" bgcolor="" border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="container" style="padding-top: 0px; padding-bottom: 0px;">
<div class="text-block">
<div style="text-align: center;">
<h1><strong>Opinions & Advice</strong></h1>
</div>
</div>
</td></tr></tbody></table>
<table style="table-layout: fixed; width: 100%;" width="100%"><tbody><tr><td style="padding:0;border-collapse:collapse;border-spacing:0;margin:0;" valign="top">
<table align="center" border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="container" style="padding: 15px 15px;">
<div class="text-block">
<span>
<a href="https://tracking.tldrnewsletter.com/CL0/https:%2F%2Fblog.jsbarretto.com%2Fpost%2Factors%3Futm_source=tldrwebdev/1/0100019aa6508f47-8802c268-36a1-4214-92c9-bc9fa518fe0c-000000/KBsMf-6O43mtqXaPC07otklWkAf5b1PSJpgLesRh8lo=432">
<span>
<strong>We are replacing OOP with something worse (4 minute read)</strong>
</span>
</a>
<br>
<br>
<span style="font-family: "Helvetica Neue", Helvetica, Arial, Verdana, sans-serif;">
OOP is not disappearing but shifting into new domains like microservices and distributed systems. The core principle of OOP, information attenuation and separation of concerns, is now being applied at the process and network level. This shift replaces OOP with a more cumbersome and complex system characterized by microservices, Docker, and Kubernetes.
</span>
</span>
</div>
</td></tr></tbody></table>
<table align="center" border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="container" style="padding: 15px 15px;">
<div class="text-block">
<span>
<a href="https://tracking.tldrnewsletter.com/CL0/https:%2F%2Fwww.rochester.edu%2Fnewscenter%2Femployee-turnover-why-top-firms-churn-good-workers-681832%2F%3Futm_source=tldrwebdev/1/0100019aa6508f47-8802c268-36a1-4214-92c9-bc9fa518fe0c-000000/jogbPfayweNhzROVjnwJM8tgN41ldIiuy6i4Zat587o=432">
<span>
<strong>Why top firms paradoxically fire good workers (6 minute read)</strong>
</span>
</a>
<br>
<br>
<span style="font-family: "Helvetica Neue", Helvetica, Arial, Verdana, sans-serif;">
Elite firms often hire top talent, train them extensively, and then let many go after a few years. This "up-or-out" system isn't a flaw but a strategic way for firms to signal talent and boost profits by creating a reputation for excellence. By periodically churning employees, firms maintain a perceived higher quality, allowing them to underpay those who remain while benefiting from their association with the prestigious firm.
</span>
</span>
</div>
</td></tr></tbody></table>
</td></tr></tbody></table>
<table align="center" bgcolor="" border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="container" style="padding-top: 0px; padding-bottom: 0px;">
<div class="text-block">
<div style="text-align: center;"><span style="font-size: 36px;">π</span></div></div>
</td></tr></tbody></table>
<table align="center" bgcolor="" border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="container" style="padding-top: 0px; padding-bottom: 0px;">
<div class="text-block">
<div style="text-align: center;">
<h1><strong>Launches & Tools</strong></h1>
</div>
</div>
</td></tr></tbody></table>
<table style="table-layout: fixed; width: 100%;" width="100%"><tbody><tr><td style="padding:0;border-collapse:collapse;border-spacing:0;margin:0;" valign="top">
<table align="center" border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="container" style="padding: 15px 15px;">
<div class="text-block">
<span>
<a href="https://tracking.tldrnewsletter.com/CL0/https:%2F%2Fbyo.propelauth.com%2Fpost%2Fadding-enterprise-sso-scim%3Futm_source=tldr%26utm_medium=newsletter%26utm_campaign=nov17/1/0100019aa6508f47-8802c268-36a1-4214-92c9-bc9fa518fe0c-000000/Wg0uXpLKAkHGD7M_rq6gFFjMTpWvHaWmmmHu--zZ7Mw=432">
<span>
<strong>How to choose the right architecture for Enterprise SSO and SCIM (Sponsor)</strong>
</span>
</a>
<br>
<br>
<span style="font-family: "Helvetica Neue", Helvetica, Arial, Verdana, sans-serif;">
Enterprise customers are asking, βCan we use Okta to log in?β or βhow about syncing user groups from Entra?β What they're actually asking for is <a href="https://tracking.tldrnewsletter.com/CL0/https:%2F%2Fbyo.propelauth.com%2Fpost%2Fadding-enterprise-sso-scim%3Futm_source=tldr%26utm_medium=newsletter%26utm_campaign=nov17/2/0100019aa6508f47-8802c268-36a1-4214-92c9-bc9fa518fe0c-000000/3LyZk00SUIQt8bIf-Yw-_0PXiAnZVaVFV-cs_tLaGtc=432" rel="noopener noreferrer nofollow" target="_blank"><span>Enterprise SSO and SCIM</span></a>. But to implement them successfully, you need to make <em>a lot</em> of architectural decisions. Learn how to design your system with this technical blog from PropelAuth. <a href="https://tracking.tldrnewsletter.com/CL0/https:%2F%2Fbyo.propelauth.com%2Fpost%2Fadding-enterprise-sso-scim%3Futm_source=tldr%26utm_medium=newsletter%26utm_campaign=nov17/3/0100019aa6508f47-8802c268-36a1-4214-92c9-bc9fa518fe0c-000000/SfxjEw2VUmE91G7FAkF1AyHjCHWM2hRIaI7utAt-Xe0=432" rel="noopener noreferrer nofollow" target="_blank"><span>Read it now</span></a>
</span>
</span>
</div>
</td></tr></tbody></table>
<table align="center" border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="container" style="padding: 15px 15px;">
<div class="text-block">
<span>
<a href="https://tracking.tldrnewsletter.com/CL0/https:%2F%2Fblog.google%2Ftechnology%2Fai%2Fnano-banana-pro%2F%3Futm_source=tldrwebdev/1/0100019aa6508f47-8802c268-36a1-4214-92c9-bc9fa518fe0c-000000/AmCkTXZPTnA3ZmGajX1RGuRQjtz9X_sLgKJt0bykY9g=432">
<span>
<strong>Introducing Nano Banana Pro (12 minute read)</strong>
</span>
</a>
<br>
<br>
<span style="font-family: "Helvetica Neue", Helvetica, Arial, Verdana, sans-serif;">
Google DeepMind has launched Nano Banana Pro (Gemini 3 Pro Image), a state-of-the-art image generation and editing model built on Gemini 3 Pro. This new model improves image creation through improved reasoning, world knowledge, and real-time information integration. Nano Banana Pro allows users to generate accurate visuals with legible text, maintain consistency across multiple elements in complex compositions, and apply studio-quality creative controls like adjusting lighting and focus.
</span>
</span>
</div>
</td></tr></tbody></table>
<table align="center" border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="container" style="padding: 15px 15px;">
<div class="text-block">
<span>
<a href="https://tracking.tldrnewsletter.com/CL0/https:%2F%2Fgithub.com%2Ffarion1231%2Fcc-switch%3Futm_source=tldrwebdev/1/0100019aa6508f47-8802c268-36a1-4214-92c9-bc9fa518fe0c-000000/j_g5h5A_I-Eg0qxeQy3MuOP6BkCsSI1kHRWLnPGBrD4=432">
<span>
<strong>CC Switch (GitHub Repo)</strong>
</span>
</a>
<br>
<br>
<span style="font-family: "Helvetica Neue", Helvetica, Arial, Verdana, sans-serif;">
CC-Switch is a cross-platform desktop application for managing and switching between Claude Code, Codex, and Gemini API configurations. It supports MCP integration, API speed testing, config import/export, and multiple languages.
</span>
</span>
</div>
</td></tr></tbody></table>
</td></tr></tbody></table>
<table align="center" bgcolor="" border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="container" style="padding-top: 0px; padding-bottom: 0px;">
<div class="text-block">
<div style="text-align: center;"><span style="font-size: 36px;">π</span></div></div>
</td></tr></tbody></table>
<table align="center" bgcolor="" border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="container" style="padding-top: 0px; padding-bottom: 0px;">
<div class="text-block">
<div style="text-align: center;"><strong><h1>Miscellaneous</h1></strong></div>
</div>
</td></tr></tbody></table>
<table bgcolor="" style="table-layout: fixed; width: 100%;" width="100%"><tbody><tr><td style="padding:0;border-collapse:collapse;border-spacing:0;margin:0;" valign="top">
<table align="center" border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="container" style="padding: 15px 15px;">
<div class="text-block">
<span>
<a href="https://tracking.tldrnewsletter.com/CL0/https:%2F%2Fjoshua.hu%2Fai-slop-okta-nextjs-0auth-security-vulnerability%3Futm_source=tldrwebdev/1/0100019aa6508f47-8802c268-36a1-4214-92c9-bc9fa518fe0c-000000/PfS9P92nflxpDmO4WkXtAz50iIlY5u54Z8yxqky7l6M=432">
<span>
<strong>AI slop security engineering: Okta's nextjs-0auth troubles (5 minute read)</strong>
</span>
</a>
<br>
<br>
<span style="font-family: "Helvetica Neue", Helvetica, Arial, Verdana, sans-serif;">
Joshua Rogers reported a security vulnerability in Okta's auth0/nextjs-auth0 project and submitted a patch. However, the maintainer used AI to rebase the commit, resulting in incorrect attribution and the removal of Rogers' contribution history. The maintainer then used AI to apologize for the error and refused to correct the commit, despite Rogers' request.
</span>
</span>
</div>
</td></tr></tbody></table>
<table align="center" border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="container" style="padding: 15px 15px;">
<div class="text-block">
<span>
<a href="https://tracking.tldrnewsletter.com/CL0/https:%2F%2Fmatklad.github.io%2F2025%2F11%2F10%2Freadonly-characters.html%3Futm_source=tldrwebdev/1/0100019aa6508f47-8802c268-36a1-4214-92c9-bc9fa518fe0c-000000/wm78BSw9F2JKO8OPNwLo1rgWf2xmog8vZFJKabu5BhM=432">
<span>
<strong>Readonly Characters Are a Big Deal (3 minute read)</strong>
</span>
</a>
<br>
<br>
<span style="font-family: "Helvetica Neue", Helvetica, Arial, Verdana, sans-serif;">
Read-only characters in text editors help create interactive applications. Emacs allows marking specific substrings as read-only, enabling bidirectional interaction where both the user and the editor can modify different parts of the text. This contrasts with VS Code, where the lack of this feature hurts the creation of similar interactive tools.
</span>
</span>
</div>
</td></tr></tbody></table>
</td></tr></tbody></table>
<table align="center" bgcolor="" border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="container" style="padding-top: 0px; padding-bottom: 0px;">
<div class="text-block">
<div style="text-align: center;"><span style="font-size: 36px;">β‘</span></div></div>
</td></tr></tbody></table>
<table align="center" bgcolor="" border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="container" style="padding-top: 0px; padding-bottom: 0px;">
<div class="text-block">
<div style="text-align: center;">
<h1><strong>Quick Links</strong></h1>
</div>
</div>
</td></tr></tbody></table>
<table bgcolor="" style="table-layout: fixed; width: 100%;" width="100%"><tbody><tr><td style="padding:0;border-collapse:collapse;border-spacing:0;margin:0;" valign="top">
<table align="center" border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="container" style="padding: 15px 15px;">
<div class="text-block">
<span>
<a href="https://tracking.tldrnewsletter.com/CL0/https:%2F%2Fblog.google%2Fproducts%2Fandroid%2Fquick-share-airdrop%2F%3Futm_source=tldrwebdev/1/0100019aa6508f47-8802c268-36a1-4214-92c9-bc9fa518fe0c-000000/OSRTk1meV0ud16nKm7SKOniAXJ8RIjwp_3_UJx6veWU=432">
<span>
<strong>Android and iPhone users can now share files, starting with the Pixel 10 family. (1 minute read)</strong>
</span>
</a>
<br>
<br>
<span style="font-family: "Helvetica Neue", Helvetica, Arial, Verdana, sans-serif;">
Quick Share on Android will now work with AirDrop, making file sharing easier between Android (starting with the Pixel 10 family) and iPhone devices.
</span>
</span>
</div>
</td></tr></tbody></table>
<table align="center" border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="container" style="padding: 15px 15px;">
<div class="text-block">
<span>
<a href="https://tracking.tldrnewsletter.com/CL0/https:%2F%2Fwww.readwriterachel.com%2Fthings-i-learned%2F2025%2F11%2F09%2Fdevtools-1.html%3Futm_source=tldrwebdev/1/0100019aa6508f47-8802c268-36a1-4214-92c9-bc9fa518fe0c-000000/WOlCMheeKF9qItFb3UKTWieg9AvEWq_tHsyRYz_RZX8=432">
<span>
<strong>Six Things I Bet You Didn't Know You Could Do With Chrome's Devtools (4 minute read)</strong>
</span>
</a>
<br>
<br>
<span style="font-family: "Helvetica Neue", Helvetica, Arial, Verdana, sans-serif;">
Some lesser-known Chrome Devtools features include `console.time()` functions, DOM element change monitoring, and being able to attach listeners to any function with `monitor`.
</span>
</span>
</div>
</td></tr></tbody></table>
<table align="center" border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="container" style="padding: 15px 15px;">
<div class="text-block">
<span>
<a href="https://tracking.tldrnewsletter.com/CL0/https:%2F%2Fread.perspectiveship.com%2Fp%2Fpareto%3Futm_source=tldrwebdev/1/0100019aa6508f47-8802c268-36a1-4214-92c9-bc9fa518fe0c-000000/zTMgnGzK_NuBIFzqu9816WTiyCsaoGcOqxleXw3_IO8=432">
<span>
<strong>Pareto Principle: The Significant 20% (4 minute read)</strong>
</span>
</a>
<br>
<br>
<span style="font-family: "Helvetica Neue", Helvetica, Arial, Verdana, sans-serif;">
20% of bugs often result in 80% of the total failures.
</span>
</span>
</div>
</td></tr></tbody></table>
<table align="center" border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="container" style="padding: 15px 15px;">
<div class="text-block">
<span>
<a href="https://tracking.tldrnewsletter.com/CL0/https:%2F%2Fopensource.microsoft.com%2Fblog%2F2025%2F11%2F20%2Fpreserving-code-that-shaped-generations-zork-i-ii-and-iii-go-open-source%3Futm_source=tldrwebdev/1/0100019aa6508f47-8802c268-36a1-4214-92c9-bc9fa518fe0c-000000/GFz3XUpYXtS3COqfd8leJNTvgnEWldeognKgVLxgSU8=432">
<span>
<strong>Preserving code that shaped generations: Zork I, II, and III go Open Source (5 minute read)</strong>
</span>
</a>
<br>
<br>
<span style="font-family: "Helvetica Neue", Helvetica, Arial, Verdana, sans-serif;">
Microsoft, in collaboration with Team Xbox and Activision, is open-sourcing the code for Zork I, II, and III under the MIT License to preserve gaming history and provide a valuable resource for education and exploration.
</span>
</span>
</div>
</td></tr></tbody></table>
</td></tr></tbody></table>
<table align="center" bgcolor="" border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td align="left" style="word-break: break-word; vertical-align: top; padding: 5px 10px;">
<p style="padding: 0; margin: 0; font-size: 22px; color: #000000; line-height: 1.6; font-weight: bold;">
Love TLDR? Tell your friends and get rewards!
</p>
</td></tr>
<tr><td class="container" style="padding: 0px 10px 15px;">
<div class="text-block">
Share your referral link below with friends to get free TLDR swag!
</div>
</td></tr>
<tr><td align="left" style="padding: 10px;">
<div class="text-block">
<a href="https://tracking.tldrnewsletter.com/CL0/https:%2F%2Frefer.tldr.tech%2F8770c80a%2F3/1/0100019aa6508f47-8802c268-36a1-4214-92c9-bc9fa518fe0c-000000/hCQHfSom7BmPrYsPQe-V46ylaEgtsXpfbrHgMdXKU40=432" style="color: #464ba4; text-decoration: underline;">https://refer.tldr.tech/8770c80a/3</a>
</div>
</td></tr>
<tr></tr>
<tr><td align="left" style="padding:5px 10px;">
<a href="https://tracking.tldrnewsletter.com/CL0/https:%2F%2Fhub.sparklp.co%2Fsub_7383e7653c81%2F3/1/0100019aa6508f47-8802c268-36a1-4214-92c9-bc9fa518fe0c-000000/HWxFvLKHztTY1wyh0xPHj-Bos-6CVIXvOs52PsAZ5F8=432" style="font-size: 16px; line-height: 1.6; padding: 10px 0; display: inline-block; text-decoration: underline;"><span style="mso-text-raise:13pt; text-decoration: underline;">Track your referrals here.</span></a>
</td></tr></tbody></table>
<table align="center" bgcolor="" border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td align="left" style="word-break: break-word; vertical-align: top; padding: 5px 10px;">
<p style="padding: 0; margin: 0; font-size: 22px; color: #000000; line-height: 1.6; font-weight: bold;">
Want to advertise in TLDR? π°
</p>
<div class="text-block" style="margin-top: 10px;">
If your company is interested in reaching an audience of web developers and engineering decision makers, you may want to <a href="https://tracking.tldrnewsletter.com/CL0/https:%2F%2Fadvertise.tldr.tech%2F%3Futm_source=tldrdev%26utm_medium=newsletter%26utm_campaign=advertisecta/1/0100019aa6508f47-8802c268-36a1-4214-92c9-bc9fa518fe0c-000000/MzyH0HdRqORqElFU4bfZ9o99j51KBCLvb1AtHkwkSKg=432"><strong><span>advertise with us</span></strong></a>.
</div>
<br>
<!-- New "Want to work at TLDR?" section -->
<p style="padding: 0; margin: 0; font-size: 22px; color: #000000; line-height: 1.6; font-weight: bold;">
Want to work at TLDR? πΌ
</p>
<div class="text-block" style="margin-top: 10px;">
<a href="https://tracking.tldrnewsletter.com/CL0/https:%2F%2Fjobs.ashbyhq.com%2Ftldr.tech/1/0100019aa6508f47-8802c268-36a1-4214-92c9-bc9fa518fe0c-000000/SGUMjzsLR71wtiVevvZ1bFYfsa6Tp4HbrmMbW0aLj0c=432" rel="noopener noreferrer" style="color: #0000EE; text-decoration: underline;" target="_blank"><strong>Apply here</strong></a> or send a friend's resume to <a href="mailto:jobs@tldr.tech" style="color: #0000EE; text-decoration: underline;">jobs@tldr.tech</a> and get $1k if we hire them!
</div>
<br>
<div class="text-block">
If you have any comments or feedback, just respond to this email!
<br>
<br> Thanks for reading,
<br>
<span>Priyam Mohanty</span>, <a href="https://tracking.tldrnewsletter.com/CL0/https:%2F%2Fwww.linkedin.com%2Fin%2Fxu-jenny%2F/1/0100019aa6508f47-8802c268-36a1-4214-92c9-bc9fa518fe0c-000000/8q0pBQkc83jHeCc5--WAPrB6s69cBDE7AWksnY3buD8=432"><span>Jenny Xu</span></a> & <span>Ceora Ford</span>
<br>
<br>
</div>
<br>
</td></tr></tbody></table>
<table align="center" bgcolor="" border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td class="container" style="padding: 15px 15px;">
<div class="text-block" id="testing-id">
<a href="https://tracking.tldrnewsletter.com/CL0/https:%2F%2Ftldr.tech%2Fdev%2Fmanage%3Femail=silk.theater.56%2540fwdnl.com/1/0100019aa6508f47-8802c268-36a1-4214-92c9-bc9fa518fe0c-000000/VD1ClF5z6QLmHU1iQnHD7cP6XhN-NmE5k6936C_6XdA=432">Manage your subscriptions</a> to our other newsletters on tech, startups, and programming. Or if TLDR Dev isn't for you, please <a href="https://tracking.tldrnewsletter.com/CL0/https:%2F%2Fa.tldrnewsletter.com%2Funsubscribe%3Fep=1%26l=e8d201ca-3e93-11ed-9a32-0241b9615763%26lc=156b9020-84b7-11f0-a976-55fc1d40139c%26p=365a8692-c6ac-11f0-946c-9ba2fb75f62f%26pt=campaign%26pv=4%26spa=1763726483%26t=1763726888%26s=280a3f98286e6bf54945fa41fe6b4f14cf2e9fe2de6bb8dbb8b2065b0b7bf050/1/0100019aa6508f47-8802c268-36a1-4214-92c9-bc9fa518fe0c-000000/mojPOgc1OGUzCmeDBenIAz58FIFSMdSg4eIXVHxFc2s=432">unsubscribe</a>.
<br>
</div>
</td></tr></tbody></table>
</td></tr></tbody></table>
</td></tr></tbody></table>
</td></tr></tbody></table>
</td></tr></tbody></table>
<img alt="" src="http://tracking.tldrnewsletter.com/CI0/0100019aa6508f47-8802c268-36a1-4214-92c9-bc9fa518fe0c-000000/nVWjMVrFvpOcRSbTQK_ZY2SJWIq7pyAZuiG0MgshEN8=432" style="display: none; width: 1px; height: 1px;">
</body></html>