An async function, upon awaiting a Promise, cannot proceed until that Promise resolves 

TLDR

 TLDR Web Dev 2023-12-18

🧑‍💻

Articles & Tutorials

Database Fundamentals (27 minute read)

This article teaches database fundamentals by guiding the reader in building a simple database. It starts with the ACID properties (Atomicity, Consistency, Isolation, and Durability) that most databases aim to guarantee and discusses the challenges in achieving these properties. It then delves into the concept of storage engines in databases, comparing mutable B-Trees and immutable Log Structured Merge (LSM) Trees. It explains how LSM Trees are designed to minimize disk I/O and seeks, making them suitable for write-heavy workloads. The article touches on topics like bloom filters and Write-Ahead Logs (WALs) as part of database design to achieve ACID properties and isolation.
The await event horizon in JavaScript (8 minute read)

An async function, upon awaiting a Promise, cannot proceed until that Promise resolves, which could potentially lead to resource leaks if the Promise never settles. There are many remediations to the problem, like Explicit Resource Management and AbortSignal. However, in practice, they are limited and don't solve the fundamental problem. Instead, generator functions in JavaScript can offer more structured concurrency as they are not constrained by the await event horizon.
🧠

Opinions & Advice

The best WebAssembly runtime may be no runtime at all (6 minute read)

An alternative approach to WebAssembly (WASM) runtimes is no runtime at all. Traditional WASM runtimes like V8, Wasmer, WasmEdge, and Wasmtime are complex and platform-dependent. Instead, transpile Wasm code to C source code using tools like wasm2c or w2c2, which results in human-readable C code that can be compiled and run without the need for a dedicated runtime.
How to prepare the technical interview (11 minute read)

This post shares an experience of preparing for internal interviews to switch teams at Amazon. It emphasizes the importance of making a positive impression on interviewers, both emotionally and rationally, by engaging in meaningful conversations and explaining thought processes clearly. It goes on to outline a strategic approach to interview preparation involving mindset, learning modes, a structured plan, struggle time, and the interview week, highlighting the importance of consistent effort and focus.
🚀

Launches & Tools

Svgl (Website)

A library of free-to-use SVG logos.
Announcing React Hydration Overlay - Easily Squash Hydration Errors (GitHub Repo)

Overlay for debugging hydration mismatches, providing an explicit diff between the server-side and client-side renders.
🎁

Miscellaneous

How Many Lines of C it Takes to Execute a + b in Python? (10 minute read)

This article delves into the implementation details of how Python handles operations like "a + b" at the CPython runtime level. It discusses the use of the PyObject structure and PyTypeObject structure to enable polymorphism and inheritance in Python objects. The article explores how dynamic dispatch works in Python, including the compilation of Python code to bytecode and its execution by the CPython virtual machine.
Why multi-cloud: the 5 best reasons, according to experts (6 minute read)

A multi-cloud architecture is an approach that involves using multiple cloud providers for an application or company. There are several reasons to adopt a multi-cloud approach, including regulatory compliance, avoiding vendor lock-in, meeting customer requirements, gaining leverage in price negotiations with cloud providers, and empowering engineering teams. However, the primary motivation for adopting multi-cloud should be to address business problems rather than technical ones.

Quick Links

Programs Are Games, Programming is a Game (3 minute read)

Programming can be considered a unique and fun game where individuals can create programs to map inputs to outputs, making it more enjoyable than many other activities.
Measuring the size of the cache line empirically (3 minute read)

The cache line is the block of memory accessed by computers when reading or writing data. Cache line size varies among systems. This blog explores a benchmarking method using "strided access" to determine the cache line size.
Oxlint General Availability (2 minute read)

Oxlint is a JavaScript linter designed to catch erroneous or useless code without requiring any configurations by default. It’s 50-100 times faster than ESlint and defaults to identifying erroneous, redundant, or confusing code over unnecessary nitpicking rules.

Want the best of TLDR? 🏆

Refer a friend to TLDR Web Dev using the referral link below, and we will send you the TLDR Hall of Fame, our 50 best stories of all time!

Your Referral Link - https://tldr.tech/webdev?ref=5215144

We help cutting edge companies hire world class technical talent through our job listings. If you're hiring software engineers, click here to learn more.
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 click here to unsubscribe.