--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 </div>
<div style=3D"display: none; max-height: 0px; overflow: hidden;">
</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=
<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=
</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>
</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 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> 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=
</span>
<span style=3D"font-family: "Helvetica Neue", 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!
</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 & 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>
<span style=3D"font-family: "Helvetica Neue", 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>
<span style=3D"font-family: "Helvetica Neue", 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>
<span style=3D"font-family: "Helvetica Neue", 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 & 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>
<span style=3D"font-family: "Helvetica Neue", 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>
<span style=3D"font-family: "Helvetica Neue", 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>
<span style=3D"font-family: "Helvetica Neue", 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 & 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>
<span style=3D"font-family: "Helvetica Neue", 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>
<span style=3D"font-family: "Helvetica Neue", 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=
</span>
<span style=3D"font-family: "Helvetica Neue", 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>
<span style=3D"font-family: "Helvetica Neue", 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>
<span style=3D"font-family: "Helvetica Neue", 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>
<span style=3D"font-family: "Helvetica Neue", 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>
<span style=3D"font-family: "Helvetica Neue", 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>
<span style=3D"font-family: "Helvetica Neue", 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>
<span style=3D"font-family: "Helvetica Neue", 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>
<span style=3D"font-family: "Helvetica Neue", 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>
<span style=3D"font-family: "Helvetica Neue", 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!
</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
</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>
<div class=3D"text-block">
If you have any comments or feedback, just respond to this email!
<br> Thanks for reading,
<span>Priyam Mohanty</span>, <span>Jenny Xu</span> & <span>Ceora Ford</= 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"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>.
</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--
---
■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net