A retrospective on id Software's 1996 Quake shareware CD-ROM, which bundled encrypted full versions of id games that buyers could unlock via a phone order system built by TestDrive Corp. The scheme relied on security by obscurity: the on-disc unlock program generated serial codes locally, so GNOMON cracked it in 39 days, aided by plaintext files and bugs. The experiment failed commercially, leaving id with ~150,000 unsold CDs.
This part of a series on concurrent servers shows how Go handles the problem: launch one cheap, M:N-scheduled goroutine per client, avoiding async/await since the runtime already uses epoll for I/O. It then covers cases where you should still bound concurrency—compute-heavy tasks, limited downstream resources, and malicious clients—via a channel-as-semaphore pattern or a worker pool. Tradeoff noted: goroutines are cheap, but unbounded concurrency can still exhaust CPUs or file descriptors.
Cloudflare details five Rust memory-layout changes to its 1.1.1.1 DNS cache — dropping Vec/String capacity fields, merging record lists with u16 offsets, omitting owner names when they match the query key, boxing large enum variants, and storing record data as wire-format bytes — cutting per-entry memory 56% and freeing roughly 100 TB fleet-wide. Performance also improved (inserts +43%, lookups −19%), though each change carries tradeoffs: allocator overhead and poor locality from boxing, sequential-only access for wire-format buffers, and records no longer self-contained.
Uber replaced mobile app polling—which reached 80% of gateway traffic—with RAMEN, a server-push platform built on Server-Sent Events plus a custom sequence-number/acknowledgment protocol for at-least-once delivery. Scaling forced a rewrite from Node.js with Ringpop gossip sharding to Netty with ZooKeeper/Helix, reaching 1.5M concurrent connections and 250K messages/sec. A newer gRPC bidirectional streaming version addresses delayed acks, unidirectional transport, and text-only payload limits.
Discord replaced a Python image-resizing proxy with a Go service after the original showed uneven workload distribution and high latency variance. Because no Go resizing package could beat pillow-simd, they built Lilliput, a Go package wrapping OpenCV and C image libraries via Cgo—accepting forked dependencies, manual memory management, and hard-to-debug leaks and race conditions. The rewrite cut server instances by 60% and reduced latency variance, but required extensive profiling, fuzzing, and custom GIF and video handling.
Argues that Postgres deadlocks (SQLSTATE 40P01) usually reflect inconsistent lock ordering in transaction design, best fixed by restructuring operations into a consistent order. Case study: two seemingly identical bulk upserts deadlocked because rows were randomly ordered (a Go map converted to a slice) and Postgres acquires locks row-by-row during inserts; sorting rows solved it. Alternatives like explicit locks (FOR UPDATE, advisory locks) or jittered retries trade off parallelism and raise lock timeout risk.
Uber recounts migrating from a monolithic codebase to a microservices SOA (500+ services) to handle rapid growth, which solved coupling and deployment problems but introduced issues of obviousness, safety, and resilience. They adopted Apache Thrift for strict cross-language service contracts and built client-publishing tooling, drawing on Netflix Hystrix and Twitter Finagle for fault tolerance. Tradeoffs include immature Thrift tooling for Python and Node, and no header support complicating authentication and tracing.
Dropbox argues that as AI-driven demand grows, getting more from existing infrastructure matters as much as building new data centers. The post describes a system-level approach spanning power management (Deep Sleep), workload rebalancing, higher storage density via SMR drives, and failure-rate-driven hardware lifecycle decisions, reporting watts per petabyte improved over 50% since 2020. Tradeoffs include density versus power/cooling needs, energy savings versus latency, and longer hardware life versus reliability risk.