Programmer Weekly (Issue 220 August 29 2024)

Programmer Weekly - Issue 220

Programmer Weekly

Welcome to issue 220 of Programmer Weekly. Let's get straight to the links this week.

Quote of the Week

 

“It is far easier to design a class to be thread-safe than to retrofit it for thread safety later.” ― Brian Goetz

Reading List

In the previous post, we discovered the SQLite file format and implemented a toy version of the .tables command, allowing us to display the list of tables in a database. But our implementation has a jarring limitation: it assumes that all the data fits into the first page of the file. In this post, we'll discover how SQLite represents tables that are too large to fit into a single page, this will make our .tables command more useful, but also lay the groundwork for our query engine.

Monzo describes their approach to running centrally-driven migrations across their 2,800 microservices, focusing on maintaining up-to-date and consistent libraries with low-effort upgrades. Their strategy involves careful planning, wrapping old and new libraries, automated updates, mass deployments, and controlled rollouts using configuration, all supported by foundational technological choices like a monorepo and consistent technologies.

The article details the author's efforts to optimize string parsing in serde_json, a popular Rust JSON library. Through techniques like using SIMD-within-a-register (SWAR) and careful algorithm design, they achieved significant performance improvements, particularly for longer strings and certain JSON structures.

In this article, we'll explore how pgvector works under the hood, focusing on how the HNSW index is stored in Postgres.

Julia Evans describes her process of migrating Mess With DNS, a DNS learning playground, to use PowerDNS instead of a custom DNS implementation. She details various challenges faced during the migration, including intercepting DNS queries, designing a new API, managing frontend state, and improving error messages, while also upgrading the frontend framework and switching to SQLite for the database.

Townie has been completed redesigned in the past couple weeks. It’s seriously good at writing fullstack apps. This is the post about how I prototyped this new version of Townie a couple weeks ago.

This article explores creating an internal command-line interface (CLI) for a company using the Just tool. It emphasizes the importance of the CLI being user-friendly, easy to contribute to, and discoverable by users.

This post details the author's process of implementing React from scratch, covering core concepts like rendering, state management, and reconciliation. It explains the implementation of key features such as useState, conditional rendering, efficient DOM updates, and various hooks, providing insights into React's internal workings and design decisions.

The article details the evolution of AWS's Elastic Block Store (EBS) over more than a decade, chronicling its transformation from a simple block storage service using shared hard drives to a massive network storage system capable of delivering over 140 trillion daily operations. It highlights key challenges faced, including performance optimization, noisy neighbor problems, and the shift to SSDs, while emphasizing the importance of continuous improvement, comprehensive instrumentation, and organizational adaptability in driving EBS's development.

In this post, we describe how we built a system that gates every code and configuration change to our core backend systems (1,000+ services). We have several thousand E2E tests that have an average pass rate of 90%+ per attempt. Imagine each of these tests going through a real E2E user flow, like going through an Uber Eats group order. We do all this fast enough to run on every diff before it gets landed.

Watch and Listen

John O'Hara discusses how recent hardware & software advances can help founders and CTOs succeed.

The video demonstrates how to create an internal developer platform using Crossplane, GitHub, and Argo CD to automate repository creation, CI pipelines, and infrastructure provisioning. It shows how to set up a system where developers can create new projects with a single manifest, automating everything from repository setup to database provisioning, all managed through GitOps.

Interesting Projects, Tools and Libraries

A client-side database that makes it easy to build real-time and collaborative apps like Notion or Figma.

Free and Open-source database diagrams editor, visualize and design your DB with a single query. 

Simplify writing TypeScript AWS lambda APIs and functions with inferred strong typing and declarative best practices out of the box.

MiniJinja is a powerful but minimal dependency template engine for Rust compatible with Jinja/Jinja2.

ruroco is a tool that lets you execute commands on a server by sending UDP packets.

Embedded storage built for multiplexing. Smart machines don't need to read JSON, they only need protocol buffers. The world's first MODMS (Machine-Oriented Database Management System), built to support RocksDB, SQLite, and DuckDB as backends. 

Sketch and take handwritten notes. 

Our Other Newsletters

- A free weekly newsletter featuring the best hand curated news, articles, tools and libraries, new releases, jobs etc related to Python.

- A free weekly newsletter for entrepreneurs featuring best curated content, must read articles, how to guides, tips and tricks, resources, events and more.