Email Details

Discord’s websocket boost🚀, nobody builds in public📣, devs are unhappy ☹️

Discord reduced its websocket traffic by 40% through two key optimizations. It first replaced its existing compression algorithm, zlib, with zstandard 

TLDR

Together With

 TLDR Web Dev 2024-09-23

Building session management in Next.js from scratch: how to keep your users logged in (Sponsor)

Session management is a concept that 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 it ends?

In this blog post, the Clerk team details the step-by-step process of building session management in Next.js, without using any authentication library. Read the blog to understand what's happening under the hood!

🧑‍💻

Articles & Tutorials

How Discord Reduced Websocket Traffic by 40% (17 minute read)

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 compression times. It further improved performance by implementing streaming compression for zstandard, allowing it to utilize historical data for better compression of small payloads. Secondly, it introduced Passive Sessions v2, which only sends updates about changes in server information instead of sending complete snapshots.
One year of Rust in production (10 minute read)

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 find 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.
Gaining access to anyone's browser without them even visiting a website (7 minute read)

A vulnerability in Arc Browser's use of Firebase allowed unauthorized access to any user's browser without them visiting a website. This was possible because Arc's cloud features, like Boosts, stored data in Firestore with insecure security rules. An attacker could 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 addressed by Arc, who patched the vulnerability, added a feature to disable Boosts, and started a bug bounty program.
🧠

Opinions & Advice

No One Builds in Public (5 minute read)

The "build in public" trend within the indie hacker community has an over-reliance on sharing revenue figures. While initially attention-grabbing, the constant stream of success stories may be losing its impact and overshadowing the discussion of actual product development. Also, the "build in public" approach may not be necessary for success, as some prominent indie hackers have achieved great results without actively sharing their progress publicly.
A New Era of Writing Code (5 minute read)

LLMs can significantly speed up development by taking care of repetitive tasks, but they still have limitations, especially when dealing with complex or open-ended features. While LLMs can't replace engineers entirely, they 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)

A recent Stack Overflow survey revealed that 80% of developers are unhappy with their jobs, with many reporting feeling burnt out and demoralized. The primary culprit appears to be a combination of factors, including unrealistic expectations, technical debt, bureaucratic obstacles, and a lack of work-life balance.
🚀

Launches & Tools

Improve Web Performance by Optimizing JavaScript Bundle Sizes (Sponsor)

Nobody likes slow front end response – not you, your users, or search engines. Learn how to get ahead of bloated JavaScript bundles and improve your web performance in this blog. Read more on the Sentry blog
Kamal Proxy (GitHub Repo)

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.
Scalar (GitHub Repo)

Scalar is an offline-first API client and interactive reference generator. It uses OpenAPI/Swagger documents to create user-friendly documentation and API clients for various languages and frameworks.
CSS Peeper (Chrome Extension)

CSS Peeper is a Chrome extension that allows designers to easily view and inspect CSS styles on any website. It allows for browsing components and colors in a visual way.
🎁

Miscellaneous

Forget ChatGPT: why researchers now run small AIs on their laptops (9 minute read)

Researchers are increasingly choosing 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-source AI models and the development of smaller models that can run efficiently on consumer hardware.
The sorry state of Java deserialization (12 minute read)

Java deserialization is surprisingly slow. This developer benchmarks various techniques for reading 1 billion rows of data from disk, including using `DataInputStream`, JDBC, Protobuf, Parquet, and custom solutions. The results show that even with optimized custom implementations, Java's performance lags significantly behind the theoretical maximum for disk I/O.
Analyzing the OpenAPI Tooling Ecosystem (14 minute read)

This is an exploration of the OpenAPI Specification (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.

Quick Links

Sanding UI (4 minute read)

“Sanding UI” involves repeatedly clicking and interacting with a user interface to identify and fix subtle usability issues.
Write Change-Resilient Code With Domain Objects (3 minute read)

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.
How I Hire Programmers (6 minute read)

A better programmer hiring process focuses on evaluating candidates' past work, conversational intelligence, and compatibility with the team rather than traditional interviews like Leetcode questions.
I Like Makefiles (5 minute read)

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

Love TLDR? Tell your friends and get rewards!

Share your referral link below with friends to get free TLDR swag!
Track your referrals here.

Want to advertise in TLDR? 📰

If your company is interested in reaching an audience of web developers and engineering decision makers, you may want to advertise with us.

If you have any comments or feedback, just respond to this email!

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


If you don't want to receive future editions of TLDR Web Dev, please unsubscribe from TLDR Web Dev or manage all of your TLDR newsletter subscriptions.

© 2024 Email Dashboard. All rights reserved.