Subj : Discord’s websocket boost 🚀, nobody builds in public 📣, devs are unhappy ☹️
To   : [email protected]
From : TLDR Web Dev
Date : Mon Sep 23 2024 11:21 am

--DTGXbcf3
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable

Discord reduced its websocket traffic by 40% through two key
optimization=
s. It first replaced its existing compression algorithm,
zlib, with zstan=
dard=C2=A0=20

Sign Up [1] |Advertise [2]|View Online [3]=20

=09=09TL=
DR=20

=09=09TOGETHER WITH [Clerk] [4]

=C2=A0TLDR WEB DEV 2024-09-23=


BUILDING SESSION MANAGEMENT IN NEXT.JS FROM SCRATCH: HOW TO KEEP YOU=
R
USERS LOGGED IN (SPONSOR) [4]=20

Session management is a concept th=
at flies under the radar in most
applications, but it has a crucial role =
to play: keeping users
securely logged in when they use different tabs or=
devices (imagine
life without that!).

Because session management is=
often abstracted away by auth libraries,
many developers are fuzzy about=
the details. How do you actually know
where a session starts, and when i=
t ends?

In this blog post, the Clerk team details the step-by-step pro=
cess of
building session management in Next.js [4], without using any
a=
uthentication library. Read [5] the blog [4] to understand what's
happeni=
ng under the hood!

=F0=9F=A7=91=E2=80=8D=F0=9F=92=BB=20

ARTICLES & =
TUTORIALS

HOW DISCORD REDUCED WEBSOCKET TRAFFIC BY 40% (17 MINUTE REA=
D) [6]=20

Discord reduced its websocket traffic by 40% through two key=

optimizations. Firstly, it replaced its existing compression
algorithm=
, zlib, with zstandard, achieving higher compression ratios
and shorter c=
ompression times. It further improved performance by
implementing streami=
ng compression for zstandard, allowing it to
utilize historical data for =
better compression of small payloads.
Secondly, it introduced Passive Ses=
sions v2, which only sends updates
about changes in server information in=
stead of sending complete
snapshots.=20

ONE YEAR OF RUST IN PRODUCTIO=
N (10 MINUTE READ) [7]=20

This developer found that Rust's type-safety =
and compile-time checks
led to a smooth transition to production without =
major issues. After a
year, they reflect back on how it's going. They fin=
d that Rust's long
compile times, particularly with macro-heavy libraries=
, necessitate a
different development workflow. At the same time, Rust is=
still
satisfying to use and will continue to be used in production.=20
=

GAINING ACCESS TO ANYONE'S BROWSER WITHOUT THEM EVEN VISITING A
WEBSI=
TE (7 MINUTE READ) [8]=20

A vulnerability in Arc Browser's use of Fireb=
ase allowed unauthorized
access to any user's browser without them visiti=
ng a website. This was
possible because Arc's cloud features, like Boosts=
, stored data in
Firestore with insecure security rules. An attacker coul=
d exploit this
by obtaining a user's ID, creating a malicious Boost, and =
changing the
Boost's creator ID to the victim's. This has since been addr=
essed by
Arc, who patched the vulnerability, added a feature to disable B=
oosts,
and started a bug bounty program.=20

=F0=9F=A7=A0=20

OPINION=
S & ADVICE

NO ONE BUILDS IN PUBLIC (5 MINUTE READ) [9]=20

The "bu=
ild in public" trend within the indie hacker community has an
over-relian=
ce on sharing revenue figures. While initially
attention-grabbing, the co=
nstant stream of success stories may be
losing its impact and overshadowi=
ng the discussion of actual product
development. Also, the "build in publ=
ic" approach may not be necessary
for success, as some prominent indie ha=
ckers have achieved great
results without actively sharing their progress=
publicly.=20

A NEW ERA OF WRITING CODE (5 MINUTE READ) [10]=20

LLM=
s can significantly speed up development by taking care of
repetitive tas=
ks, but they still have limitations, especially when
dealing with complex=
or open-ended features. While LLMs can't replace
engineers entirely, the=
y can help them to focus on higher-level tasks.


80% OF DEVELOPERS =
ARE UNHAPPY. THE PROBLEM IS NOT AI, NOR IS CODING
(5 MINUTE READ) [11] =


A recent Stack Overflow survey revealed that 80% of developers are=

unhappy with their jobs, with many reporting feeling burnt out and
dem=
oralized. The primary culprit appears to be a combination of
factors, inc=
luding unrealistic expectations, technical debt,
bureaucratic obstacles, =
and a lack of work-life balance.=20

=F0=9F=9A=80=20

LAUNCHES & TOOLS=


IMPROVE WEB PERFORMANCE BY OPTIMIZING JAVASCRIPT BUNDLE SIZES
(SPO=
NSOR) [12]=20

Nobody likes slow front end response =E2=80=93 not you, y=
our users, or
search engines. Learn how to get ahead of bloated JavaScrip=
t bundles
and improve your web performance in this blog. Read more on the=
Sentry
blog [12]=20

KAMAL PROXY (GITHUB REPO) [13]=20

Kamal Prox=
y is an HTTP proxy that makes it easy to coordinate
zero-downtime deploym=
ents. It can deploy changes to web applications
without interrupting any =
of the traffic in progress.=20

SCALAR (GITHUB REPO) [14]=20

Scalar =
is an offline-first API client and interactive reference
generator. It us=
es OpenAPI/Swagger documents to create user-friendly
documentation and AP=
I clients for various languages and frameworks.=20

CSS PEEPER (CHROME E=
XTENSION) [15]=20

CSS Peeper is a Chrome extension that allows designer=
s to easily view
and inspect CSS styles on any website. It allows for bro=
wsing
components and colors in a visual way.=20

=F0=9F=8E=81=20

MIS=
CELLANEOUS

FORGET CHATGPT: WHY RESEARCHERS NOW RUN SMALL AIS ON THEIR=
LAPTOPS (9
MINUTE READ) [16]=20

Researchers are increasingly choosin=
g to run smaller AI models on
their laptops instead of relying on online =
services like ChatGPT. This
shift is driven by the availability of open-s=
ource AI models and the
development of smaller models that can run effici=
ently on consumer
hardware.=20

THE SORRY STATE OF JAVA DESERIALIZATIO=
N (12 MINUTE READ) [17]=20

Java deserialization is surprisingly slow. T=
his developer benchmarks
various techniques for reading 1 billion rows of=
data from disk,
including using `DataInputStream`, JDBC, Protobuf, Parqu=
et, and custom
solutions. The results show that even with optimized custo=
m
implementations, Java's performance lags significantly behind the
the=
oretical maximum for disk I/O.=20

ANALYZING THE OPENAPI TOOLING ECOSYST=
EM (14 MINUTE READ) [18]=20

This is an exploration of the OpenAPI Speci=
fication (OAS) tooling
ecosystem that visually diagrams the various tasks=
tools perform and
how they relate to each other. The tools are separated=
into three
areas: Parsing libraries, OAD tools, and API tools.=20

=
=E2=9A=A1=20

QUICK LINKS

SANDING UI (4 MINUTE READ) [19]=20

=
=E2=80=9CSanding UI=E2=80=9D involves repeatedly clicking and interacting w=
ith a
user interface to identify and fix subtle usability issues.=20

=
WRITE CHANGE-RESILIENT CODE WITH DOMAIN OBJECTS (3 MINUTE READ) [20]=20

=
By using domain objects that represent the fundamental ideas of a
produc=
t, rather than specific requirements, code becomes more
resilient to chan=
ges in those requirements.=20

HOW I HIRE PROGRAMMERS (6 MINUTE READ) [2=
1]=20

A better programmer hiring process focuses on evaluating candidat=
es'
past work, conversational intelligence, and compatibility with the
=
team rather than traditional interviews like Leetcode questions.=20

I L=
IKE MAKEFILES (5 MINUTE READ) [22]=20

This developer prefers using Make=
files for project automation due to
their simplicity, consistency across =
projects, and compatibility with
various build tools.=20

Love TLDR? Te=
ll your friends and get rewards!

Share your referral link below with =
friends to get free TLDR swag!=20

https://refer.tldr.tech/363c65bf/3 [2=
3]=20

=09=09 Track your referrals here. [24]=20

Want to advertise in =
TLDR? =F0=9F=93=B0

If your company is interested in reaching an audie=
nce of web
developers and engineering decision makers, you may want to AD=
VERTISE
WITH US [25].=20

If you have any comments or feedback, just r=
espond to this email!=20

Thanks for reading,=20
Priyam Mohanty, Jenny Xu=
& Ceora Ford=20

If you don't want to receive future editions of TLDR We=
b Dev, please
unsubscribe from TLDR Web Dev [26] or manage all of your TL=
DR
newsletter subscriptions [27].=20

=20

Links:
------
[1] http=
s://tldr.tech/webdev?utm_source=3Dtldrwebdev
[2] https://advertise.tldr.t=
ech/?utm_source=3Dtldrwebdev&utm_medium=3Dnewsletter&utm_campaign=3Dadverti=
setopnav
[3] https://a.tldrnewsletter.com/web-version?ep=3D1&lc=3Ddf5a9a8=
4-734c-11ef-ae5c-1145880928d7&p=3D69b24446-7985-11ef-a20b-85db7d9d6075&pt=
=3Dcampaign&t=3D1727090478&s=3D780e650ba0d5e0cdb7d278b3834dbd7aa83bde214f2f=
550c1d788a1db89b7186
[4] https://go.clerk.com/dykM8q7
[5] https://clerk=
.com/blog/complete-guide-session-management-nextjs
[6] https://discord.co=
m/blog/how-discord-reduced-websocket-traffic-by-40-percent?utm_source=3Dtld=
rwebdev
[7] https://yieldcode.blog/post/one-year-of-rust-in-production/?u=
tm_source=3Dtldrwebdev
[8] https://kibty.town/blog/arc/?utm_source=3Dtldr=
webdev
[9] https://laike9m.com/blog/no-one-builds-in-public,160/?utm_sour=
ce=3Dtldrwebdev
[10] https://www.developing.dev/p/a-new-era-of-writing-co=
de?utm_source=3Dtldrwebdev
[11] https://shiftmag.dev/unhappy-developers-s=
tack-overflow-survey-3896/?utm_source=3Dtldrwebdev
[12] https://about.cod=
ecov.io/blog/improve-web-performance-by-optimizing-javascript-bundle-sizes/=
?utm_source=3Dtldr&utm_medium=3Dpaid-community&utm_campaign=3Dcodecov-fy25q=
2-bundleanalysis&utm_content=3Dnewsletter-bundleblog-read
[13] https://gi=
thub.com/basecamp/kamal-proxy?utm_source=3Dtldrwebdev
[14] https://github=
.com/scalar/scalar?utm_source=3Dtldrwebdev
[15] https://chromewebstore.go=
ogle.com/detail/css-peeper/mbnbehikldjhnfehhnaidhjhoofhpehk?utm_source=3Dtl=
drwebdev
[16] https://www.nature.com/articles/d41586-024-02998-y?utm_sour=
ce=3Dtldrwebdev
[17] https://www.marginalia.nu/log/a_110_java_io/?utm_sou=
rce=3Dtldrwebdev
[18] https://modern-json-schema.com/analyzing-the-openap=
i-tooling-ecosystem?utm_source=3Dtldrwebdev
[19] https://blog.jim-nielsen=
.com/2024/sanding-ui/?utm_source=3Dtldrwebdev
[20] https://testing.google=
blog.com/2024/09/write-change-resilient-code-with-domain.html?utm_source=3D=
tldrwebdev
[21] http://www.aaronsw.com/weblog/hiring.en?utm_source=3Dtldr=
webdev
[22] https://switowski.com/blog/i-like-makefiles/?utm_source=3Dtld=
rwebdev
[23] https://refer.tldr.tech/363c65bf/3
[24] https://hub.sparkl=
p.co/sub_c9fe76197514/3
[25] https://advertise.tldr.tech/?utm_source=3Dtl=
drwebdev&utm_medium=3Dnewsletter&utm_campaign=3Dadvertisecta
[26] https:/=
/a.tldrnewsletter.com/unsubscribe?ep=3D1&l=3De8d201ca-3e93-11ed-9a32-0241b9=
615763&lc=3Ddf5a9a84-734c-11ef-ae5c-1145880928d7&p=3D69b24446-7985-11ef-a20=
b-85db7d9d6075&pt=3Dcampaign&pv=3D4&spa=3D1727089238&t=3D1727090478&s=3D55b=
09d5ba91bca2ea23c734fc86e3f4fcb102e5a50b2cc86e8972e3bdc767e4c
[27] https:=
//tldr.tech/webdev/manage?email=3Dtldr%40synchro.net
--DTGXbcf3
Content-Type: text/html; charset=utf-8
Content-Transfer-Encoding: quoted-printable

<!DOCTYPE html><html lang=3D"en"><head><meta http-equiv=3D"Content-Type" co=
ntent=3D"text/html charset=3DUTF-8"><meta charset=3D"UTF-8"><meta name=3D"v=
iewport" content=3D"width=3Ddevice-width"><meta name=3D"x-apple-disable-mes=
sage-reformatting"><title>TLDR WebDev</title><meta name=3D"color-scheme" co=
ntent=3D"light dark"><meta name=3D"supported-color-schemes" content=3D"ligh=
t dark"><style type=3D"text/css">
=09=09=09:root {
=09=09=09=09color-scheme: light dark; supported-color-schemes: light dark;
=09=09=09}
=09=09=09
=09=09=09*,
=09=09=09*:after,
=09=09=09*:before {
=09=09=09=09-webkit-box-sizing: border-box; -moz-box-sizing: border-box; bo=
x-sizing: border-box;
=09=09=09}
=09=09=09
=09=09=09* {
=09=09=09=09-ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%;
=09=09=09}
=09=09=09
=09=09=09html,
=09=09=09body,
=09=09=09.document {
=09=09=09=09width: 100% !important; height: 100% !important; margin: 0; pad=
ding: 0;
=09=09=09}
=09=09=09
=09=09=09body {
=09=09=09=09-webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: g=
rayscale; text-rendering: optimizeLegibility;
=09=09=09}
=09=09=09
=09=09=09div[style*=3D"margin: 16px 0"] {
=09=09=09=09margin: 0 !important;
=09=09=09}
=09=09=09
=09=09=09table,
=09=09=09td {
=09=09=09=09mso-table-lspace: 0pt; mso-table-rspace: 0pt;
=09=09=09}
=09=09=09
=09=09=09table {
=09=09=09=09border-spacing: 0; border-collapse: collapse; table-layout: fix=
ed; margin: 0 auto;
=09=09=09}
=09=09=09
=09=09=09img {
=09=09=09=09-ms-interpolation-mode: bicubic; max-width: 100%; border: 0;
=09=09=09}
=09=09=09
=09=09=09*[x-apple-data-detectors] {
=09=09=09=09color: inherit !important; text-decoration: none !important;
=09=09=09}
=09=09=09
=09=09=09.x-gmail-data-detectors,
=09=09=09.x-gmail-data-detectors *,
=09=09=09.aBn {
=09=09=09=09border-bottom: 0 !important; cursor: default !important;
=09=09=09}
=09=09=09
=09=09=09.btn {
=09=09=09=09-webkit-transition: all 200ms ease; transition: all 200ms ease;
=09=09=09}
=09=09=09
=09=09=09.btn:hover {
=09=09=09=09background-color: #f67575; border-color: #f67575;
=09=09=09}
=09=09=09
=09=09=09* {
=09=09=09=09font-family: Arial, Helvetica, sans-serif; font-size: 18px;
=09=09=09}
=09=09=09
=09=09=09@media screen and (max-width: 600px) {
=09=09=09=09.container {
=09=09=09=09=09width: 100%; margin: auto;
=09=09=09=09}
=09=09=09=09.stack {
=09=09=09=09=09display: block!important; width: 100%!important; max-width: =
100%!important;
=09=09=09=09}
=09=09=09=09.btn {
=09=09=09=09=09display: block; width: 100%; text-align: center;
=09=09=09=09}
=09=09=09}
=09=09=09
=09=09=09body,
=09=09=09p,
=09=09=09td,
=09=09=09tr,
=09=09=09.body,
=09=09=09table,
=09=09=09h1,
=09=09=09h2,
=09=09=09h3,
=09=09=09h4,
=09=09=09h5,
=09=09=09h6,
=09=09=09div,
=09=09=09span {
=09=09=09=09background-color: #FEFEFE !important; color: #010101 !important=
;
=09=09=09}
=09=09=09
=09=09=09@media (prefers-color-scheme: dark) {
=09=09=09=09body,
=09=09=09=09p,
=09=09=09=09td,
=09=09=09=09tr,
=09=09=09=09.body,
=09=09=09=09table,
=09=09=09=09h1,
=09=09=09=09h2,
=09=09=09=09h3,
=09=09=09=09h4,
=09=09=09=09h5,
=09=09=09=09h6,
=09=09=09=09div,
=09=09=09=09span {
=09=09=09=09=09background-color: #27292D !important; color: #FEFEFE !import=
ant;
=09=09=09=09}
=09=09=09}
=09=09=09
=09=09=09a {
=09=09=09=09color: inherit !important; text-decoration: underline !importan=
t;
=09=09=09}

=09=09</style><!--[if mso | ie]>
=09=09<style type=3D"text/css">
=09=09=09a {
=09=09=09=09background-color: #FEFEFE !important; color: #010101 !important=
;
=09=09=09}
=09=09=09@media (prefers-color-scheme: dark) {
=09=09=09=09a {
=09=09=09=09=09background-color: #27292D !important; color: #FEFEFE !import=
ant;
=09=09=09=09}
=09=09=09}
=09 </style>
=09=09=09<![endif]--></head><body class=3D"">



<div style=3D"display:none; font-size:0px; line-height:0px; max-height:0px;=
max-width:0px; opacity:0; overflow:hidden; visibility:hidden; mso-hide:all=
;">Discord reduced its websocket traffic by 40% through two key optimizatio=
ns. It first replaced its existing compression algorithm, zlib, with zstand=
ard&nbsp;</div>

<div style=3D"display: none; max-height: 0px; overflow: hidden;">
<br>
</div>

<table align=3D"center" class=3D"document"><tbody><tr><td valign=3D"top">

<table align=3D"center" border=3D"0" cellpadding=3D"0" cellspacing=3D"0" cl=
ass=3D"container" width=3D"600"><tbody><tr class=3D"inner-body"><td>

<table align=3D"center" border=3D"0" cellpadding=3D"0" cellspacing=3D"0" wi=
dth=3D"100%"><tbody><tr class=3D"header"><td bgcolor=3D"" class=3D"containe=
r">

<table width=3D"100%"><tbody><tr><td class=3D"container">



<table align=3D"center" bgcolor=3D"" border=3D"0" cellpadding=3D"0" cellspa=
cing=3D"0" style=3D"margin-top: 0px;" width=3D"100%"><tbody><tr><td style=
=3D"padding: 0px;">

<table align=3D"center" bgcolor=3D"" border=3D"0" cellpadding=3D"0" cellspa=
cing=3D"0" width=3D"100%"><tbody><tr><td class=3D"container" style=3D"paddi=
ng: 15px 15px;">
<div style=3D"text-align: center;">
<span style=3D"margin-right: 0px;"><a href=3D"https://tracking.tldrnewslett=
er.com/CL0/https:%2F%2Ftldr.tech%2Fwebdev%3Futm_source=3Dtldrwebdev/1/01000=
1921e9d4c4a-47b4bf80-9e45-4619-a284-ccaca08c5510-000000/-2M4A7bqWjk5SnqiQcm=
VTEmTzc7d9anp-SxtFCT4ejg=3D371" rel=3D"noopener noreferrer" target=3D"_blan=
k"><span>Sign Up</span></a>
|<span style=3D"margin-right: 2px; margin-left: 2px;"><a href=3D"https://tr=
acking.tldrnewsletter.com/CL0/https:%2F%2Fadvertise.tldr.tech%2F%3Futm_sour=
ce=3Dtldrwebdev%26utm_medium=3Dnewsletter%26utm_campaign=3Dadvertisetopnav/=
1/010001921e9d4c4a-47b4bf80-9e45-4619-a284-ccaca08c5510-000000/3pD3iPdzeFIn=
wbVyEJQyDSBieAaO3p0UtX-XEkcPBJ4=3D371" rel=3D"noopener noreferrer" target=
=3D"_blank"><span>Advertise</span></a></span>|<span style=3D"margin-left: 2=
px;"><a href=3D"https://tracking.tldrnewsletter.com/CL0/https:%2F%2Fa.tldrn=
ewsletter.com%2Fweb-version%3Fep=3D1%26lc=3Ddf5a9a84-734c-11ef-ae5c-1145880=
928d7%26p=3D69b24446-7985-11ef-a20b-85db7d9d6075%26pt=3Dcampaign%26t=3D1727=
090478%26s=3D780e650ba0d5e0cdb7d278b3834dbd7aa83bde214f2f550c1d788a1db89b71=
86/1/010001921e9d4c4a-47b4bf80-9e45-4619-a284-ccaca08c5510-000000/kAwkMcPoR=
fX301SIGScy32mDeDXZ_sCSprXL_ILd_I0=3D371"><span>View Online</span></a></spa=
n>
<br>
</span></div>
</td></tr></tbody></table>

<table align=3D"center" bgcolor=3D"" border=3D"0" cellpadding=3D"0" cellspa=
cing=3D"0" width=3D"100%"><tbody><tr><td class=3D"container" style=3D"text-=
align: center;"><span data-darkreader-inline-color=3D"" style=3D"--darkread=
er-inline-color:#3db3ff; color: rgb(51, 175, 255) !important; font-size: 30=
px;">T</span><span style=3D"font-size: 30px;"><span data-darkreader-inline-=
color=3D"" style=3D"color: rgb(232, 192, 96) !important; --darkreader-inlin=
e-color:#e8c163; font-size:30px;">L</span><span data-darkreader-inline-colo=
r=3D"" style=3D"color: rgb(101, 195, 173) !important; --darkreader-inline-c=
olor:#6ec7b2; font-size:30px;">D</span></span><span data-darkreader-inline-=
color=3D"" style=3D"--darkreader-inline-color:#dd6e6e; color: rgb(220, 107,=
107) !important; font-size: 30px;">R</span>
<br>
</td></tr></tbody></table>

<br>

<table align=3D"center" bgcolor=3D"" border=3D"0" cellpadding=3D"0" cellspa=
cing=3D"0" width=3D"100%"><tbody><tr id=3D"together-with"><td align=3D"cent=
er" height=3D"20" style=3D"vertical-align:middle !important;" valign=3D"mid=
dle" width=3D"100%"><strong style=3D"vertical-align:middle !important; heig=
ht: 100%;">Together With </strong>
<a href=3D"https://tracking.tldrnewsletter.com/CL0/https:%2F%2Fgo.clerk.com=
%2FdykM8q7/1/010001921e9d4c4a-47b4bf80-9e45-4619-a284-ccaca08c5510-000000/W=
dgjqSaYZn5_eXgdHTSvKpfVbfFVZhSLdNfp50M0QUc=3D371"><img src=3D"https://image=
s.tldr.tech/clerk50.png" valign=3D"middle" style=3D"vertical-align: middle =
!important; height: 100%;" alt=3D"Clerk"></a></td></tr></tbody></table>


<table style=3D"table-layout: fixed; width:100%;" width=3D"100%"><tbody><tr=
><td style=3D"padding:0;border-collapse:collapse;border-spacing:0;margin:0;=
">
<div style=3D"text-align: center;">

<h1><strong>&nbsp;TLDR Web Dev <span id=3D"date">2024-09-23</span></strong>=
</h1>
</div>
</td></tr>
<tr id=3D"sponsy-copy"><td class=3D"container" style=3D"padding: 15px 15px;=
">
<div class=3D"text-block">
<span>
                               <a href=3D"https://tracking.tldrnewsletter.=
com/CL0/https:%2F%2Fgo.clerk.com%2FdykM8q7/2/010001921e9d4c4a-47b4bf80-9e45=
-4619-a284-ccaca08c5510-000000/Jv_yzIJCvchm1DLuUIuxUQtYJXaNZvW5jFGrEZwZYQ8=
=3D371">
                                   <span>
                                       <strong>Building session management=
in Next.js from scratch: how to keep your users logged in (Sponsor)</stron=
g>
                                   </span>
</a>
<br>
<br>
<span style=3D"font-family: &quot;Helvetica Neue&quot;, Helvetica, Arial, V=
erdana, sans-serif;">
                                   Session management is a concept that fl=
ies under the radar in most applications, but it has a crucial role to play=
: keeping users securely logged in when they use different tabs or devices =
(imagine life without that!).<p></p><p>Because session management is often =
abstracted away by auth libraries, many developers are fuzzy about the deta=
ils. How do you actually know where a session starts, and when it ends?</p>=
<p>In this blog post, the Clerk team details the <a href=3D"https://trackin=
g.tldrnewsletter.com/CL0/https:%2F%2Fgo.clerk.com%2FdykM8q7/3/010001921e9d4=
c4a-47b4bf80-9e45-4619-a284-ccaca08c5510-000000/-eGiYZmCNIZq8QD49ERGtBMV2bK=
06WtliT67fMNSkPw=3D371" rel=3D"noopener noreferrer nofollow" target=3D"_bla=
nk"><span>step-by-step process of building session management in Next.js</s=
pan></a>, without using any authentication library. <a href=3D"https://trac=
king.tldrnewsletter.com/CL0/https:%2F%2Fclerk.com%2Fblog%2Fcomplete-guide-s=
ession-management-nextjs/1/010001921e9d4c4a-47b4bf80-9e45-4619-a284-ccaca08=
c5510-000000/uMdUT3rZRQYYVUHCYBDY6q0NPAb4DFvKVuyOi8TFgz8=3D371" rel=3D"noop=
ener noreferrer nofollow" target=3D"_blank"><span>Read</span></a> <a href=
=3D"https://tracking.tldrnewsletter.com/CL0/https:%2F%2Fgo.clerk.com%2FdykM=
8q7/4/010001921e9d4c4a-47b4bf80-9e45-4619-a284-ccaca08c5510-000000/kcBd2X7j=
bpGLnajz7gA5E53Dft7lFGC0SYRBbX_j2DA=3D371" rel=3D"noopener noreferrer nofol=
low" target=3D"_blank"><span>the blog</span></a> to understand what's happe=
ning under the hood!


</p>
</span></span></div>
</td></tr></tbody></table>
</td></tr></tbody></table>
</td></tr></tbody></table>
</td></tr>
<tr bgcolor=3D""><td class=3D"container">

<table align=3D"center" bgcolor=3D"" border=3D"0" cellpadding=3D"0" cellspa=
cing=3D"0" width=3D"100%"><tbody><tr><td style=3D"padding: 0px;">



<table align=3D"center" bgcolor=3D"" border=3D"0" cellpadding=3D"0" cellspa=
cing=3D"0" width=3D"100%"><tbody><tr><td class=3D"container" style=3D"paddi=
ng-top: 0px; padding-bottom: 0px;">
<div class=3D"text-block">
<div style=3D"text-align: center;"><span style=3D"font-size: 36px;">=F0=9F=
=A7=91=E2=80=8D=F0=9F=92=BB</span></div>
</div>
</td></tr></tbody></table>

<table align=3D"center" bgcolor=3D"" border=3D"0" cellpadding=3D"0" cellspa=
cing=3D"0" width=3D"100%"><tbody><tr><td class=3D"container" style=3D"paddi=
ng-top: 0px; padding-bottom: 0px;">
<div class=3D"text-block">
<div style=3D"text-align: center;">

<h1><strong>Articles &amp; Tutorials</strong></h1>
</div>
</div>
</td></tr></tbody></table>

<table style=3D"table-layout: fixed; width: 100%;" width=3D"100%"><tbody><t=
r><td style=3D"padding:0;border-collapse:collapse;border-spacing:0;margin:0=
;" valign=3D"top">

<table align=3D"center" border=3D"0" cellpadding=3D"0" cellspacing=3D"0" wi=
dth=3D"100%"><tbody><tr><td class=3D"container" style=3D"padding: 15px 15px=
;">
<div class=3D"text-block">
<span>
                               <a href=3D"https://tracking.tldrnewsletter.=
com/CL0/https:%2F%2Fdiscord.com%2Fblog%2Fhow-discord-reduced-websocket-traf=
fic-by-40-percent%3Futm_source=3Dtldrwebdev/1/010001921e9d4c4a-47b4bf80-9e4=
5-4619-a284-ccaca08c5510-000000/LOTasZMy7qYARvRZRL6cf7PRFHnPMByIo3Sv6qx7fhw=
=3D371">
                                   <span>
                                       <strong>How Discord Reduced Websock=
et Traffic by 40% (17 minute read)</strong>
                                   </span>
</a>
<br>
<br>
<span style=3D"font-family: &quot;Helvetica Neue&quot;, Helvetica, Arial, V=
erdana, sans-serif;">
                                   Discord reduced its websocket traffic b=
y 40% through two key optimizations. Firstly, it replaced its existing comp=
ression algorithm, zlib, with zstandard, achieving higher compression ratio=
s and shorter compression times. It further improved performance by impleme=
nting streaming compression for zstandard, allowing it to utilize historica=
l data for better compression of small payloads. Secondly, it introduced Pa=
ssive Sessions v2, which only sends updates about changes in server informa=
tion instead of sending complete snapshots.
                               </span>
</span>
</div>
</td></tr></tbody></table>

<table align=3D"center" border=3D"0" cellpadding=3D"0" cellspacing=3D"0" wi=
dth=3D"100%"><tbody><tr><td class=3D"container" style=3D"padding: 15px 15px=
;">
<div class=3D"text-block">
<span>
                               <a href=3D"https://tracking.tldrnewsletter.=
com/CL0/https:%2F%2Fyieldcode.blog%2Fpost%2Fone-year-of-rust-in-production%=
2F%3Futm_source=3Dtldrwebdev/1/010001921e9d4c4a-47b4bf80-9e45-4619-a284-cca=
ca08c5510-000000/-q8z2laalu7I3kt5z-Mn14G9xmiqbushTxCGmde3r_k=3D371">
                                   <span>
                                       <strong>One year of Rust in product=
ion (10 minute read)</strong>
                                   </span>
</a>
<br>
<br>
<span style=3D"font-family: &quot;Helvetica Neue&quot;, Helvetica, Arial, V=
erdana, sans-serif;">
                                   This developer found that Rust's type-s=
afety and compile-time checks led to a smooth transition to production with=
out major issues. After a year, they reflect back on how it's going. They f=
ind that Rust's long compile times, particularly with macro-heavy libraries=
, necessitate a different development workflow. At the same time, Rust is s=
till satisfying to use and will continue to be used in production.
                               </span>
</span>
</div>
</td></tr></tbody></table>

<table align=3D"center" border=3D"0" cellpadding=3D"0" cellspacing=3D"0" wi=
dth=3D"100%"><tbody><tr><td class=3D"container" style=3D"padding: 15px 15px=
;">
<div class=3D"text-block">
<span>
                               <a href=3D"https://tracking.tldrnewsletter.=
com/CL0/https:%2F%2Fkibty.town%2Fblog%2Farc%2F%3Futm_source=3Dtldrwebdev/1/=
010001921e9d4c4a-47b4bf80-9e45-4619-a284-ccaca08c5510-000000/wErkBONURiuAUK=
bEBCXDpKHjTluA1h0ZxoaFZwCUdk0=3D371">
                                   <span>
                                       <strong>Gaining access to anyone's =
browser without them even visiting a website (7 minute read)</strong>
                                   </span>
</a>
<br>
<br>
<span style=3D"font-family: &quot;Helvetica Neue&quot;, Helvetica, Arial, V=
erdana, sans-serif;">
                                   A vulnerability in Arc Browser's use of=
Firebase allowed unauthorized access to any user's browser without them vi=
siting a website. This was possible because Arc's cloud features, like Boos=
ts, stored data in Firestore with insecure security rules. An attacker coul=
d exploit this by obtaining a user's ID, creating a malicious Boost, and ch=
anging the Boost's creator ID to the victim's. This has since been addresse=
d by Arc, who patched the vulnerability, added a feature to disable Boosts,=
and started a bug bounty program.
                               </span>
</span>
</div>
</td></tr></tbody></table>

</td></tr></tbody></table>


<table align=3D"center" bgcolor=3D"" border=3D"0" cellpadding=3D"0" cellspa=
cing=3D"0" width=3D"100%"><tbody><tr><td class=3D"container" style=3D"paddi=
ng-top: 0px; padding-bottom: 0px;">
<div class=3D"text-block">
<div style=3D"text-align: center;"><span style=3D"font-size: 36px;">=F0=9F=
=A7=A0</span></div>
</div>
</td></tr></tbody></table>

<table align=3D"center" bgcolor=3D"" border=3D"0" cellpadding=3D"0" cellspa=
cing=3D"0" width=3D"100%"><tbody><tr><td class=3D"container" style=3D"paddi=
ng-top: 0px; padding-bottom: 0px;">
<div class=3D"text-block">
<div style=3D"text-align: center;">

<h1><strong>Opinions &amp; Advice</strong></h1>
</div>
</div>
</td></tr></tbody></table>


<table style=3D"table-layout: fixed; width: 100%;" width=3D"100%"><tbody><t=
r><td style=3D"padding:0;border-collapse:collapse;border-spacing:0;margin:0=
;" valign=3D"top">

<table align=3D"center" border=3D"0" cellpadding=3D"0" cellspacing=3D"0" wi=
dth=3D"100%"><tbody><tr><td class=3D"container" style=3D"padding: 15px 15px=
;">
<div class=3D"text-block">
<span>
                               <a href=3D"https://tracking.tldrnewsletter.=
com/CL0/https:%2F%2Flaike9m.com%2Fblog%2Fno-one-builds-in-public,160%2F%3Fu=
tm_source=3Dtldrwebdev/1/010001921e9d4c4a-47b4bf80-9e45-4619-a284-ccaca08c5=
510-000000/dD6uZooBxAscrqEFK1HDFtSGhrmqlSHL5eXtyh-Ti3s=3D371">
                                   <span>
                                       <strong>No One Builds in Public (5 =
minute read)</strong>
                                   </span>
</a>
<br>
<br>
<span style=3D"font-family: &quot;Helvetica Neue&quot;, Helvetica, Arial, V=
erdana, sans-serif;">
                                   The "build in public" trend within the =
indie hacker community has an over-reliance on sharing revenue figures. Whi=
le initially attention-grabbing, the constant stream of success stories may=
be losing its impact and overshadowing the discussion of actual product de=
velopment. Also, the "build in public" approach may not be necessary for su=
ccess, as some prominent indie hackers have achieved great results without =
actively sharing their progress publicly.
                               </span>
</span>
</div>
</td></tr></tbody></table>

<table align=3D"center" border=3D"0" cellpadding=3D"0" cellspacing=3D"0" wi=
dth=3D"100%"><tbody><tr><td class=3D"container" style=3D"padding: 15px 15px=
;">
<div class=3D"text-block">
<span>
                               <a href=3D"https://tracking.tldrnewsletter.=
com/CL0/https:%2F%2Fwww.developing.dev%2Fp%2Fa-new-era-of-writing-code%3Fut=
m_source=3Dtldrwebdev/1/010001921e9d4c4a-47b4bf80-9e45-4619-a284-ccaca08c55=
10-000000/9qad53MtChZNA6TuPf3uqsLQU0MJjOjc0KeBIbu6K8w=3D371">
                                   <span>
                                       <strong>A New Era of Writing Code (=
5 minute read)</strong>
                                   </span>
</a>
<br>
<br>
<span style=3D"font-family: &quot;Helvetica Neue&quot;, Helvetica, Arial, V=
erdana, sans-serif;">
                                   LLMs can significantly speed up develop=
ment by taking care of repetitive tasks, but they still have limitations, e=
specially when dealing with complex or open-ended features. While LLMs can'=
t replace engineers entirely, they can help them to focus on higher-level t=
asks.
                               </span>
</span>
</div>
</td></tr></tbody></table>

<table align=3D"center" border=3D"0" cellpadding=3D"0" cellspacing=3D"0" wi=
dth=3D"100%"><tbody><tr><td class=3D"container" style=3D"padding: 15px 15px=
;">
<div class=3D"text-block">
<span>
                               <a href=3D"https://tracking.tldrnewsletter.=
com/CL0/https:%2F%2Fshiftmag.dev%2Funhappy-developers-stack-overflow-survey=
-3896%2F%3Futm_source=3Dtldrwebdev/1/010001921e9d4c4a-47b4bf80-9e45-4619-a2=
84-ccaca08c5510-000000/AcdnkgJZRMaCQrJSBdaP5VPBpkY0YASE8xIkHhYNKFs=3D371">
                                   <span>
                                       <strong>80% of developers are unhap=
py. The problem is not AI, nor is coding (5 minute read)</strong>
                                   </span>
</a>
<br>
<br>
<span style=3D"font-family: &quot;Helvetica Neue&quot;, Helvetica, Arial, V=
erdana, sans-serif;">
                                   A recent Stack Overflow survey revealed=
that 80% of developers are unhappy with their jobs, with many reporting fe=
eling burnt out and demoralized. The primary culprit appears to be a combin=
ation of factors, including unrealistic expectations, technical debt, burea=
ucratic obstacles, and a lack of work-life balance.
                               </span>
</span>
</div>
</td></tr></tbody></table>

</td></tr></tbody></table>

<table align=3D"center" bgcolor=3D"" border=3D"0" cellpadding=3D"0" cellspa=
cing=3D"0" width=3D"100%"><tbody><tr><td class=3D"container" style=3D"paddi=
ng-top: 0px; padding-bottom: 0px;">
<div class=3D"text-block">
<div style=3D"text-align: center;"><span style=3D"font-size: 36px;">=F0=9F=
=9A=80</span></div></div>
</td></tr></tbody></table>

<table align=3D"center" bgcolor=3D"" border=3D"0" cellpadding=3D"0" cellspa=
cing=3D"0" width=3D"100%"><tbody><tr><td class=3D"container" style=3D"paddi=
ng-top: 0px; padding-bottom: 0px;">
<div class=3D"text-block">
<div style=3D"text-align: center;">

<h1><strong>Launches &amp; Tools</strong></h1>
</div>
</div>
</td></tr></tbody></table>

<table style=3D"table-layout: fixed; width: 100%;" width=3D"100%"><tbody><t=
r><td style=3D"padding:0;border-collapse:collapse;border-spacing:0;margin:0=
;" valign=3D"top">

<table align=3D"center" border=3D"0" cellpadding=3D"0" cellspacing=3D"0" wi=
dth=3D"100%"><tbody><tr><td class=3D"container" style=3D"padding: 15px 15px=
;">
<div class=3D"text-block">
<span>
                               <a href=3D"https://tracking.tldrnewsletter.=
com/CL0/https:%2F%2Fabout.codecov.io%2Fblog%2Fimprove-web-performance-by-op=
timizing-javascript-bundle-sizes%2F%3Futm_source=3Dtldr%26utm_medium=3Dpaid=
-community%26utm_campaign=3Dcodecov-fy25q2-bundleanalysis%26utm_content=3Dn=
ewsletter-bundleblog-read/1/010001921e9d4c4a-47b4bf80-9e45-4619-a284-ccaca0=
8c5510-000000/xTMmIt8aOwPotsxgtfJ4zbAZfnwNwBZiEZ5qhTBgPZw=3D371">
                                   <span>
                                       <strong>Improve Web Performance by =
Optimizing JavaScript Bundle Sizes (Sponsor)</strong>
                                   </span>
</a>
<br>
<br>
<span style=3D"font-family: &quot;Helvetica Neue&quot;, Helvetica, Arial, V=
erdana, sans-serif;">
                                   Nobody likes slow front end response =
=E2=80=93 not you, your users, or search engines. Learn how to get ahead of=
bloated JavaScript bundles and improve your web performance in this blog. =
<a class=3D"c-link" href=3D"https://tracking.tldrnewsletter.com/CL0/https:%=
2F%2Fabout.codecov.io%2Fblog%2Fimprove-web-performance-by-optimizing-javasc=
ript-bundle-sizes%2F%3Futm_source=3Dtldr%26utm_medium=3Dpaid-community%26ut=
m_campaign=3Dcodecov-fy25q2-bundleanalysis%26utm_content=3Dnewsletter-bundl=
eblog-read/2/010001921e9d4c4a-47b4bf80-9e45-4619-a284-ccaca08c5510-000000/x=
N1jWEHCK0-pCGU2t0hT_2XtaB4GihEupmvW5qpjx2E=3D371" rel=3D"noopener noreferre=
r" target=3D"_blank"><span>Read more on the Sentry blog</span></a>
</span>
</span>
</div>
</td></tr></tbody></table>

<table align=3D"center" border=3D"0" cellpadding=3D"0" cellspacing=3D"0" wi=
dth=3D"100%"><tbody><tr><td class=3D"container" style=3D"padding: 15px 15px=
;">
<div class=3D"text-block">
<span>
                               <a href=3D"https://tracking.tldrnewsletter.=
com/CL0/https:%2F%2Fgithub.com%2Fbasecamp%2Fkamal-proxy%3Futm_source=3Dtldr=
webdev/1/010001921e9d4c4a-47b4bf80-9e45-4619-a284-ccaca08c5510-000000/0Z52x=
dqof_zAovbmbEdyzrH3TSLX4UD04J1WzVAtL-o=3D371">
                                   <span>
                                       <strong>Kamal Proxy (GitHub Repo)</=
strong>
                                   </span>
</a>
<br>
<br>
<span style=3D"font-family: &quot;Helvetica Neue&quot;, Helvetica, Arial, V=
erdana, sans-serif;">
                                   Kamal Proxy is an HTTP proxy that makes=
it easy to coordinate zero-downtime deployments. It can deploy changes to =
web applications without interrupting any of the traffic in progress.
                               </span>
</span>
</div>
</td></tr></tbody></table>

<table align=3D"center" border=3D"0" cellpadding=3D"0" cellspacing=3D"0" wi=
dth=3D"100%"><tbody><tr><td class=3D"container" style=3D"padding: 15px 15px=
;">
<div class=3D"text-block">
<span>
                               <a href=3D"https://tracking.tldrnewsletter.=
com/CL0/https:%2F%2Fgithub.com%2Fscalar%2Fscalar%3Futm_source=3Dtldrwebdev/=
1/010001921e9d4c4a-47b4bf80-9e45-4619-a284-ccaca08c5510-000000/RLhFEgdn_5uB=
YMr7e8Lklsch0fJjQf9kQ6u6g-7Iats=3D371">
                                   <span>
                                       <strong>Scalar (GitHub Repo)</stron=
g>
                                   </span>
</a>
<br>
<br>
<span style=3D"font-family: &quot;Helvetica Neue&quot;, Helvetica, Arial, V=
erdana, sans-serif;">
                                   Scalar is an offline-first API client a=
nd interactive reference generator. It uses OpenAPI/Swagger documents to cr=
eate user-friendly documentation and API clients for various languages and =
frameworks.
                               </span>
</span>
</div>
</td></tr></tbody></table>

<table align=3D"center" border=3D"0" cellpadding=3D"0" cellspacing=3D"0" wi=
dth=3D"100%"><tbody><tr><td class=3D"container" style=3D"padding: 15px 15px=
;">
<div class=3D"text-block">
<span>
                               <a href=3D"https://tracking.tldrnewsletter.=
com/CL0/https:%2F%2Fchromewebstore.google.com%2Fdetail%2Fcss-peeper%2Fmbnbe=
hikldjhnfehhnaidhjhoofhpehk%3Futm_source=3Dtldrwebdev/1/010001921e9d4c4a-47=
b4bf80-9e45-4619-a284-ccaca08c5510-000000/MArOBBm-A6k8AM6Flc9LhoccBY9e24Eeh=
dwcddywcuI=3D371">
                                   <span>
                                       <strong>CSS Peeper (Chrome Extensio=
n)</strong>
                                   </span>
</a>
<br>
<br>
<span style=3D"font-family: &quot;Helvetica Neue&quot;, Helvetica, Arial, V=
erdana, sans-serif;">
                                   CSS Peeper is a Chrome extension that a=
llows designers to easily view and inspect CSS styles on any website. It al=
lows for browsing components and colors in a visual way.
                               </span>
</span>
</div>
</td></tr></tbody></table>

</td></tr></tbody></table>


<table align=3D"center" bgcolor=3D"" border=3D"0" cellpadding=3D"0" cellspa=
cing=3D"0" width=3D"100%"><tbody><tr><td class=3D"container" style=3D"paddi=
ng-top: 0px; padding-bottom: 0px;">
<div class=3D"text-block">
<div style=3D"text-align: center;"><span style=3D"font-size: 36px;">=F0=9F=
=8E=81</span></div></div>
</td></tr></tbody></table>

<table align=3D"center" bgcolor=3D"" border=3D"0" cellpadding=3D"0" cellspa=
cing=3D"0" width=3D"100%"><tbody><tr><td class=3D"container" style=3D"paddi=
ng-top: 0px; padding-bottom: 0px;">
<div class=3D"text-block">
<div style=3D"text-align: center;"><strong><h1>Miscellaneous</h1></strong><=
/div>
</div>
</td></tr></tbody></table>

<table bgcolor=3D"" style=3D"table-layout: fixed; width: 100%;" width=3D"10=
0%"><tbody><tr><td style=3D"padding:0;border-collapse:collapse;border-spaci=
ng:0;margin:0;" valign=3D"top">

<table align=3D"center" border=3D"0" cellpadding=3D"0" cellspacing=3D"0" wi=
dth=3D"100%"><tbody><tr><td class=3D"container" style=3D"padding: 15px 15px=
;">
<div class=3D"text-block">
<span>
                               <a href=3D"https://tracking.tldrnewsletter.=
com/CL0/https:%2F%2Fwww.nature.com%2Farticles%2Fd41586-024-02998-y%3Futm_so=
urce=3Dtldrwebdev/1/010001921e9d4c4a-47b4bf80-9e45-4619-a284-ccaca08c5510-0=
00000/O6T3JPXVJMVznUOo4ePlvHQ2ZYPvjf7ncpSCapaVJco=3D371">
                                   <span>
                                       <strong>Forget ChatGPT: why researc=
hers now run small AIs on their laptops (9 minute read)</strong>
                                   </span>
</a>
<br>
<br>
<span style=3D"font-family: &quot;Helvetica Neue&quot;, Helvetica, Arial, V=
erdana, sans-serif;">
                                   Researchers are increasingly choosing t=
o run smaller AI models on their laptops instead of relying on online servi=
ces like ChatGPT. This shift is driven by the availability of open-source A=
I models and the development of smaller models that can run efficiently on =
consumer hardware.
                               </span>
</span>
</div>
</td></tr></tbody></table>

<table align=3D"center" border=3D"0" cellpadding=3D"0" cellspacing=3D"0" wi=
dth=3D"100%"><tbody><tr><td class=3D"container" style=3D"padding: 15px 15px=
;">
<div class=3D"text-block">
<span>
                               <a href=3D"https://tracking.tldrnewsletter.=
com/CL0/https:%2F%2Fwww.marginalia.nu%2Flog%2Fa_110_java_io%2F%3Futm_source=
=3Dtldrwebdev/1/010001921e9d4c4a-47b4bf80-9e45-4619-a284-ccaca08c5510-00000=
0/CPwZZY2ilFgHDDSAG3QxdaJ6lKaJoFkaWh-17I-GqWQ=3D371">
                                   <span>
                                       <strong>The sorry state of Java des=
erialization (12 minute read)</strong>
                                   </span>
</a>
<br>
<br>
<span style=3D"font-family: &quot;Helvetica Neue&quot;, Helvetica, Arial, V=
erdana, sans-serif;">
                                   Java deserialization is surprisingly sl=
ow. This developer benchmarks various techniques for reading 1 billion rows=
of data from disk, including using `DataInputStream`, JDBC, Protobuf, Parq=
uet, and custom solutions. The results show that even with optimized custom=
implementations, Java's performance lags significantly behind the theoreti=
cal maximum for disk I/O.
                               </span>
</span>
</div>
</td></tr></tbody></table>

<table align=3D"center" border=3D"0" cellpadding=3D"0" cellspacing=3D"0" wi=
dth=3D"100%"><tbody><tr><td class=3D"container" style=3D"padding: 15px 15px=
;">
<div class=3D"text-block">
<span>
                               <a href=3D"https://tracking.tldrnewsletter.=
com/CL0/https:%2F%2Fmodern-json-schema.com%2Fanalyzing-the-openapi-tooling-=
ecosystem%3Futm_source=3Dtldrwebdev/1/010001921e9d4c4a-47b4bf80-9e45-4619-a=
284-ccaca08c5510-000000/2SEm_ofFlJFbAqqMCZgfa4uR3bNtc-1uInuqDKA_gDs=3D371">
                                   <span>
                                       <strong>Analyzing the OpenAPI Tooli=
ng Ecosystem (14 minute read)</strong>
                                   </span>
</a>
<br>
<br>
<span style=3D"font-family: &quot;Helvetica Neue&quot;, Helvetica, Arial, V=
erdana, sans-serif;">
                                   This is an exploration of the OpenAPI S=
pecification (OAS) tooling ecosystem that visually diagrams the various tas=
ks tools perform and how they relate to each other. The tools are separated=
into three areas: Parsing libraries, OAD tools, and API tools.
                               </span>
</span>
</div>
</td></tr></tbody></table>

</td></tr></tbody></table>



<table align=3D"center" bgcolor=3D"" border=3D"0" cellpadding=3D"0" cellspa=
cing=3D"0" width=3D"100%"><tbody><tr><td class=3D"container" style=3D"paddi=
ng-top: 0px; padding-bottom: 0px;">
<div class=3D"text-block">
<div style=3D"text-align: center;"><span style=3D"font-size: 36px;">=E2=9A=
=A1</span></div></div>
</td></tr></tbody></table>

<table align=3D"center" bgcolor=3D"" border=3D"0" cellpadding=3D"0" cellspa=
cing=3D"0" width=3D"100%"><tbody><tr><td class=3D"container" style=3D"paddi=
ng-top: 0px; padding-bottom: 0px;">
<div class=3D"text-block">
<div style=3D"text-align: center;">

<h1><strong>Quick Links</strong></h1>
</div>
</div>
</td></tr></tbody></table>

<table bgcolor=3D"" style=3D"table-layout: fixed; width: 100%;" width=3D"10=
0%"><tbody><tr><td style=3D"padding:0;border-collapse:collapse;border-spaci=
ng:0;margin:0;" valign=3D"top">

<table align=3D"center" border=3D"0" cellpadding=3D"0" cellspacing=3D"0" wi=
dth=3D"100%"><tbody><tr><td class=3D"container" style=3D"padding: 15px 15px=
;">
<div class=3D"text-block">
<span>
                               <a href=3D"https://tracking.tldrnewsletter.=
com/CL0/https:%2F%2Fblog.jim-nielsen.com%2F2024%2Fsanding-ui%2F%3Futm_sourc=
e=3Dtldrwebdev/1/010001921e9d4c4a-47b4bf80-9e45-4619-a284-ccaca08c5510-0000=
00/nwn-PYwiM35K9twQtYEOoePfV5ONdHiWCFs9eXAvDcg=3D371">
                                   <span>
                                       <strong>Sanding UI (4 minute read)<=
/strong>
                                   </span>
</a>
<br>
<br>
<span style=3D"font-family: &quot;Helvetica Neue&quot;, Helvetica, Arial, V=
erdana, sans-serif;">
                                   =E2=80=9CSanding UI=E2=80=9D involves r=
epeatedly clicking and interacting with a user interface to identify and fi=
x subtle usability issues.
                               </span>
</span>
</div>
</td></tr></tbody></table>

<table align=3D"center" border=3D"0" cellpadding=3D"0" cellspacing=3D"0" wi=
dth=3D"100%"><tbody><tr><td class=3D"container" style=3D"padding: 15px 15px=
;">
<div class=3D"text-block">
<span>
                               <a href=3D"https://tracking.tldrnewsletter.=
com/CL0/https:%2F%2Ftesting.googleblog.com%2F2024%2F09%2Fwrite-change-resil=
ient-code-with-domain.html%3Futm_source=3Dtldrwebdev/1/010001921e9d4c4a-47b=
4bf80-9e45-4619-a284-ccaca08c5510-000000/Yybgy8KcDU_lNpiPhZ1UNEXsFY3bQLGMDS=
RO-5TIirM=3D371">
                                   <span>
                                       <strong>Write Change-Resilient Code=
With Domain Objects (3 minute read)</strong>
                                   </span>
</a>
<br>
<br>
<span style=3D"font-family: &quot;Helvetica Neue&quot;, Helvetica, Arial, V=
erdana, sans-serif;">
                                   By using domain objects that represent =
the fundamental ideas of a product, rather than specific requirements, code=
becomes more resilient to changes in those requirements.
                               </span>
</span>
</div>
</td></tr></tbody></table>

<table align=3D"center" border=3D"0" cellpadding=3D"0" cellspacing=3D"0" wi=
dth=3D"100%"><tbody><tr><td class=3D"container" style=3D"padding: 15px 15px=
;">
<div class=3D"text-block">
<span>
                               <a href=3D"http://tracking.tldrnewsletter.c=
om/CL0/http:%2F%2Fwww.aaronsw.com%2Fweblog%2Fhiring.en%3Futm_source=3Dtldrw=
ebdev/1/010001921e9d4c4a-47b4bf80-9e45-4619-a284-ccaca08c5510-000000/-xHknQ=
et5F7bKxbKrfe1uaD_X-GMmrm-EamkTlfIBcs=3D371">
                                   <span>
                                       <strong>How I Hire Programmers (6 m=
inute read)</strong>
                                   </span>
</a>
<br>
<br>
<span style=3D"font-family: &quot;Helvetica Neue&quot;, Helvetica, Arial, V=
erdana, sans-serif;">
                                   A better programmer hiring process focu=
ses on evaluating candidates' past work, conversational intelligence, and c=
ompatibility with the team rather than traditional interviews like Leetcode=
questions.
                               </span>
</span>
</div>
</td></tr></tbody></table>

<table align=3D"center" border=3D"0" cellpadding=3D"0" cellspacing=3D"0" wi=
dth=3D"100%"><tbody><tr><td class=3D"container" style=3D"padding: 15px 15px=
;">
<div class=3D"text-block">
<span>
                               <a href=3D"https://tracking.tldrnewsletter.=
com/CL0/https:%2F%2Fswitowski.com%2Fblog%2Fi-like-makefiles%2F%3Futm_source=
=3Dtldrwebdev/1/010001921e9d4c4a-47b4bf80-9e45-4619-a284-ccaca08c5510-00000=
0/K3TZR90-3SsuuJ3VLiYYl6tEe7a58c-DOV41_2Cn_G8=3D371">
                                   <span>
                                       <strong>I Like Makefiles (5 minute =
read)</strong>
                                   </span>
</a>
<br>
<br>
<span style=3D"font-family: &quot;Helvetica Neue&quot;, Helvetica, Arial, V=
erdana, sans-serif;">
                                   This developer prefers using Makefiles =
for project automation due to their simplicity, consistency across projects=
, and compatibility with various build tools.
                               </span>
</span>
</div>
</td></tr></tbody></table>

</td></tr></tbody></table>


<table align=3D"center" bgcolor=3D"" border=3D"0" cellpadding=3D"0" cellspa=
cing=3D"0" width=3D"100%"><tbody><tr><td align=3D"left" style=3D"word-break=
: break-word; vertical-align: top; padding: 5px 10px;">

<p style=3D"padding: 0; margin: 0; font-size: 22px; color: #000000; line-he=
ight: 1.6; font-weight: bold;">
Love TLDR? Tell your friends and get rewards!
</p>
</td></tr>
<tr><td class=3D"container" style=3D"padding: 0px 10px 15px;">
<div class=3D"text-block">
Share your referral link below with friends to get free TLDR swag!
</div>
</td></tr>
<tr><td align=3D"left" style=3D"padding: 10px;">
<div class=3D"text-block">
<a href=3D"https://tracking.tldrnewsletter.com/CL0/https:%2F%2Frefer.tldr.t=
ech%2F363c65bf%2F3/1/010001921e9d4c4a-47b4bf80-9e45-4619-a284-ccaca08c5510-=
000000/U-DAdEJmzQD_6XiHrwRtUI9MIULgmYzZ3UkUG4OKrF4=3D371" style=3D"color: #=
464ba4; text-decoration: underline;">https://refer.tldr.tech/363c65bf/3</a>
</div>
</td></tr>
<tr></tr>
<tr><td align=3D"left" style=3D"padding:5px 10px;">
<a href=3D"https://tracking.tldrnewsletter.com/CL0/https:%2F%2Fhub.sparklp.=
co%2Fsub_c9fe76197514%2F3/1/010001921e9d4c4a-47b4bf80-9e45-4619-a284-ccaca0=
8c5510-000000/txjqu3blzVI5mx4x8cbusAVCunBwITwHquG4AMniW20=3D371" style=3D"f=
ont-size: 16px; line-height: 1.6;  padding: 10px 0; display: inline-block; =
text-decoration: underline;"><span style=3D"mso-text-raise:13pt; text-deco=
ration: underline;">Track your referrals here.</span></a>
</td></tr></tbody></table>




<table align=3D"center" bgcolor=3D"" border=3D"0" cellpadding=3D"0" cellspa=
cing=3D"0" width=3D"100%"><tbody><tr><td align=3D"left" style=3D"word-break=
: break-word; vertical-align: top; padding: 5px 10px;">

<p style=3D"padding: 0; margin: 0; font-size: 22px; color: #000000; line-he=
ight: 1.6; font-weight: bold;">
Want to advertise in TLDR? =F0=9F=93=B0
</p>
</td></tr>
<tr><td class=3D"container" style=3D"padding: 0px 10px 15px;">
<div class=3D"text-block">
If your company is interested in reaching an audience of web developers and=
engineering decision makers, you may want to <a href=3D"https://tracking.t=
ldrnewsletter.com/CL0/https:%2F%2Fadvertise.tldr.tech%2F%3Futm_source=3Dtld=
rwebdev%26utm_medium=3Dnewsletter%26utm_campaign=3Dadvertisecta/1/010001921=
e9d4c4a-47b4bf80-9e45-4619-a284-ccaca08c5510-000000/V3Ofb1R9DOpTQJjmlAqajNp=
CI8kW5ucSpzlvn75zmds=3D371"><strong><span>advertise with us</span></strong>=
</a>.
</div>
<br>
<div class=3D"text-block">
If you have any comments or feedback, just respond to this email!
<br>
<br> Thanks for reading,
<br>
<span>Priyam Mohanty</span>, <span>Jenny Xu</span> &amp; <span>Ceora Ford</=
span>
<br>
<br>
</div>
<br>
</td></tr></tbody></table>

<table align=3D"center" bgcolor=3D"" border=3D"0" cellpadding=3D"0" cellspa=
cing=3D"0" width=3D"100%"><tbody><tr><td class=3D"container" style=3D"paddi=
ng: 15px 15px;">
<div class=3D"text-block" id=3D"testing-id">If you don't want to receive fu=
ture editions of TLDR Web Dev, please <a href=3D"https://tracking.tldrnewsl=
etter.com/CL0/https:%2F%2Fa.tldrnewsletter.com%2Funsubscribe%3Fep=3D1%26l=
=3De8d201ca-3e93-11ed-9a32-0241b9615763%26lc=3Ddf5a9a84-734c-11ef-ae5c-1145=
880928d7%26p=3D69b24446-7985-11ef-a20b-85db7d9d6075%26pt=3Dcampaign%26pv=3D=
4%26spa=3D1727089238%26t=3D1727090478%26s=3D55b09d5ba91bca2ea23c734fc86e3f4=
fcb102e5a50b2cc86e8972e3bdc767e4c/1/010001921e9d4c4a-47b4bf80-9e45-4619-a28=
4-ccaca08c5510-000000/lZBTScf1yVRqIDIn1jb0VJsr710rJBMxt1XL6BfCO_o=3D371">un=
subscribe from TLDR Web Dev</a> or <a href=3D"https://tracking.tldrnewslett=
er.com/CL0/https:%2F%2Ftldr.tech%2Fwebdev%2Fmanage%3Femail=3Dtldr%2540synch=
ro.net/1/010001921e9d4c4a-47b4bf80-9e45-4619-a284-ccaca08c5510-000000/GPx9Q=
ZbT9f-UBw0S1DQHqDH2dw6EH84roFwj9jcG1c8=3D371">manage all of your TLDR newsl=
etter subscriptions</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=3D"" src=3D"http://tracking.tldrnewsletter.com/CI0/010001921e9d4c4=
a-47b4bf80-9e45-4619-a284-ccaca08c5510-000000/AqPjl2DGznNb-D-HCiGQKyYa_Vw1d=
2G4cadduENZSt8=3D371" style=3D"display: none; width: 1px; height: 1px;">
</body></html>
--DTGXbcf3--