Issue #78
Curated list of blogs, videos, papers, podcasts on programming and distributed systems.
Yesterday I was clever, so I wanted to change the world. Today I am wise, so I am changing myself.
-Rumi
Posts
Ensuring rollback safety during deployments
A deployment takes a software environment from one state (version) to another. The software may function perfectly well in either of those states. However, the software may not function well during or after the forward transition (upgrade or roll-forward) or backward transition (downgrade or rollback). When the software doesn’t function well, it leads to a service disruption that makes it unreliable for customers. In this article, I assume that both versions of the software function as expected. My focus is on how to ensure that rolling forward or backward during deployment doesn’t lead to errors. - #aws #amazon
State of Valhalla
The goal of Project Valhalla is to bring more flexible flattened data types to JVM-based languages, to bring the programming model back in line with the performance characteristics of modern hardware. - #cr #openjdk #java
Caching challenges and strategies
After a while, no one can remember life before the cache. Dependencies reduce their fleet sizes accordingly, and the database is scaled down. Just when everything appears to be going well, the service could be poised for disaster. There could be changes in traffic patterns, failure of the cache fleet, or other unexpected circumstances that could lead to a cold or otherwise unavailable cache. This in turn could cause a surge of traffic to downstream services that can lead to outages both in our dependencies and in our service. - #aws #amazon
The Principles of Versioning in Go
This blog post is about how we added package versioning to Go, in the form of Go modules, and the reasons we made the choices we did. - #research #swtch
PostgreSQL at low level: stay curious!
Ironically this holistic approach would mean an investigation of what’s going on a low level, since everything would be presented there relatively unified and without that much of borders between different layers. For example, let’s remember what happens when a database specialist is after a slow query? Well, most of the time there is a long stare at the query plan in attempt to understand how the database will execute it, and then change of the query, or dataset, or rarely the database parameters. But no matter how long we will stare at it, in this way it’s impossible to figure out that the query became slower e.g. due to the database, that runs on a K8S node, got few noisy neighbours scheduled on the same node.
But so far it sounds too fuzzy. What if you want to apply this approach, how would you do this? Just randomly and without any plan using utilities you’ve found on the internet - #erthalion
Reflecting On 8 Months Of Full-Time Self-Study
After having worked as software developer in the industry for the last six years, I resigned 8 months ago to take a sabbatical. My main motivation for this is to take time off for doing self-study in computer science, and furthermore to explore different work models for me. At the time of this writing, both are still ongoing topics. In this blog post I want to share the story with you how this all came to be and where in this adventure I am at the moment. - #jotaen
Building a search engine from scratch
The entry barriers in this field are so massive that the biggest, most successful companies in the world with the resources to tackle the problem shy away from it. This post attempts to detail the bootstrapping problem and explain the Cliqz approach to overcoming it. But let us first start by defining the search problem. - #0x65
Conducting Better Business with Uber’s Open Source Orchestration Tool, Cadence
To help our microservices work in harmony, we built Cadence, our orchestration engine. This tool routes requests, directs data, and mediates communications between various microservices so they can all cooperate seamlessly. Built to support Uber’s global business and deliver our standard of service, it’s scalable and fault-tolerant. Like a computerized conductor, it coordinates a variety of tasks without missing a beat. - #eng #uber
A visual guide on troubleshooting Kubernetes deployments
A diagram to help you debug your deployments in Kubernetes - #learnk8s
Sinkholed
The domain name susam.in used to host this website was transferred to another registrant without any authorization by me or without any notification sent to me. Since the DNS results for this domain name was cached on my system, I was unaware of this issue at that time. It would take me three days to realize that I had lost control of the domain name I had been using for my website for the last 12 years. This blog post documents when this happened, how this happened, and what it took to regain control of this domain name. - #susam
A guide to distributed teams
How thoughtful systems (and lots of emoji) make for happy, efficient teams—whether your desks are distributed across floors, cities, or continents. - #increment
Unicode is Awesome
A curated list of delightful Unicode tidbits, packages and resources.
#eng #getwisdom
Video
BPF: A New Type of Software
BPF originally stood for Berkeley Packet Filter, but has been extended in Linux to become a generic kernel execution engine, capable of running a new type of user-defined and kernel-mode applications. This is what BPF is really about, and I described this for the first time in my Ubuntu Masters keynote. - #youtube