TLDR Web Dev

TLDR WEB DEV 2024-06-04

5 sections17 entrieslinks blockcomplete parse

Parse notes

  • Subscription/account footer truncated before parsefooter_truncated

01ARTICLES & TUTORIALS

PROMISES FROM THE GROUND UP

Promises in JavaScript aren't always intuitive to use, but they're required to be productive with JavaScript. Promises are needed because JavaScript is single-threaded, which can cause issues when blocking operations like window.prompt() are used. This post dives into the mechanics of Promises, their states (pending, fulfilled, rejected), and how to work with them using the .then() and .catch() methods. It also covers creating custom Promises, chaining them together, passing data between them, and the modern async/await syntax for a more synchronous-like experience.

joshwcomeau.com19 min read

THE ARCHITECTURE OF GRAB'S DATA LAKE

Grab manages its data using a data lake, using different storage formats for high and low throughput data. For high-throughput data, which is frequently updated, it uses Apache Avro with a Merge on Read (MOR) strategy, appending new data to log files for efficient writes and periodically compacting them for manageable reads. For low-throughput data with infrequent updates, it uses Parquet with Copy on Write (CoW), creating new file versions for each write.

blog.quastor.org6 min read

PARSING JSON IS A MINEFIELD

Parsing JSON, despite its seemingly simple format, is actually quite challenging because there are so many specifications that can be interpreted in different ways. This has led to inconsistencies in how different JSON parsers handle edge cases, extreme values, and maliciously crafted payloads, resulting in potential bugs, crashes, and denial-of-service vulnerabilities. This article goes into detail about this issue with examples of different types of objects (arrays, objects, numbers, and strings) combined with different types of parsers (C Parsers, Regex, and more).

seriot.ch33 min read

02OPINIONS & ADVICE

WHY I RETIRED FROM THE TECH CRUSADES

The creator of Ruby on Rails, David Heinemeier Hansson, realized that the success of the framework was not due to his attempts to convince others, but rather by showcasing its capabilities and letting others decide for themselves. He now believes in respecting the various preferences of programmers and encouraging them to find the language that best suits their individual style and needs.

world.hey.com3 min read

03LAUNCHES & TOOLS

Sponsored

😘 KISS BUGS GOODBYE

QA Wolf [10] gets web apps to 80% automated end-to-end test coverage in just 4 months — and it requires zero effort (your team will thank you).

qawolf.comSponsor

NEW TO THE WEB PLATFORM IN MAY

Several new features were added to web browsers in May 2024, including CSS anchor positioning and stepped value functions in Chrome 125, the Screen Wake Lock API in Firefox 126, and the Compute Pressure API in Chrome 125.

web.dev4 min read

ANNOUNCING BRIOCHE!

Brioche is a new package manager and build tool inspired by Nix, Homebrew, and Cargo. It is a flexible and easy-to-use tool for managing software projects across different platforms and languages.

brioche.dev7 min read

QSTUDIO 3.0

QStudio 3.0 is an SQL editor that supports DuckDB as a local database. It has a Parquet file viewer and can convert a query result from any database to store it locally.

timestored.comTool

04MISCELLANEOUS

RADIAL MENUS IN VIDEO GAMES

Radial menus, also known as pie menus, are circular context menus used in video games to provide a smooth way for players to select options through directional input. They originated in console RPGs like "Secret of Mana" to streamline actions during battles, but have since evolved to be used in various ways, such as for quick actions in games or for selecting dialogue options in conversations.

champicky.com8 min read

PYTHON'S MANY COMMAND-LINE UTILITIES

Python modules can be run as command-line tools using the "-m" argument, providing functionality like starting web servers, opening URLs, formatting JSON data, and managing Python environments. This article goes through a bunch of examples, such as using libraries to read email, unzip files, and more.

pythonmorsels.com15 min read