Weekend Reading #103

This week: bool.dev explains how to choose SQL indexes without overlooking their maintenance costs. Uber moves beyond consistent hashing with load-aware shard placement. Meta extends LLDB to debug applications across CPUs and GPUs, while LinkedIn separates iOS analytics from the native view hierarchy.

Weekend Reading: A weekly roundup of interesting Software Architecture and Programming articles from tech companies. Find fresh ideas and insights every weekend.

SQL Database Index Guide: Index Types and When to Avoid Them

👉 For backend engineers investigating slow queries and database performance

SQL Database Index Guide: Index Types and When to Avoid Them

https://bool.dev/blog/detail/database-indexing

An index can make a query faster while making the overall workload more expensive. This guide covers index families across SQL Server, PostgreSQL, and MySQL, connecting execution plans with composite keys, covering indexes, partial indexes, and specialized structures.

The useful starting point is the query’s access pattern: which rows it filters, how it orders them, and which columns it returns. Column order and coverage matter, but their implementation differs between database engines.

Treat each additional index as an ongoing commitment. Evaluate the read improvement alongside write overhead, storage, and maintenance. A practical review should include representative query plans and write-heavy periods; a faster isolated SELECT does not establish that the index benefits production.

Introducing Shard Manager

👉 For platform engineers and SREs operating sharded services

Introducing Shard Manager

https://bool.dev/l/1899

Consistent hashing can distribute shard counts evenly while leaving some servers overloaded. Uber’s Shard Manager makes placement explicit and uses reported load to rebalance work. Clients cache ownership information and route directly to executors, keeping the manager outside the application request path.

In the first production cluster, Uber reports a 38% reduction in the hottest host’s CPU usage and roughly 40% fewer hosts for the same traffic. Movement budgets and cooldowns limit disruptive rebalancing.

The design makes a useful distinction between deciding ownership and serving requests. Before adopting something similar, measure whether imbalance actually drives capacity costs. Then account for migration overhead and routing convergence: a better placement is only useful if moving toward it does not destabilize the service.

Extending LLDB to Debug Applications That Span CPUs and GPUs

👉 For developer tooling engineers and teams debugging heterogeneous applications

Extending LLDB to Debug Applications That Span CPUs and GPUs

https://bool.dev/l/1900

CPU and GPU execution differ in instruction sets, registers, memory, and threading. Meta describes an accelerator framework for LLDB that represents devices through separate targets and processes while coordinating them within one debugging session. Vendor-specific behavior lives behind accelerator plugins.

A mock accelerator also lets developers test shared infrastructure without requiring physical GPU hardware. Much of the common framework has reached upstream LLVM; remaining components and integrations are still progressing.

The architectural lesson is to unify the workflow while preserving the distinctions needed for diagnosis. Forcing different devices into an identical execution model would hide useful information. The testing approach is equally reusable: make common coordination logic testable independently, then validate device-specific behavior against real hardware.

Building View-Agnostic Analytics for Modern iOS UI Systems

👉 For mobile platform engineers and teams maintaining product analytics

https://bool.dev/l/1901

A screen can remain visually identical while its analytics quietly break. LinkedIn’s flattened iOS layouts contain logical cards and sections without corresponding UIViews, so walking the native view hierarchy loses meaningful product context.

LinkedIn introduces a measurable-node contract covering identity, geometry, logical parent, and attachment state. Both native views and virtual nodes participate. Stable telemetry objects survive layout updates, preventing a refresh from splitting one continuing impression into several events.

This makes analytics continuity an explicit requirement of UI refactoring. Screenshot comparisons cannot establish that impressions and action attribution still work. Test real scrolling and tapping scenarios, assert event identity and hierarchy, and give telemetry objects a lifecycle that follows the logical content rather than temporary rendering objects.

Comments (0)