Happy monday everyone.
I hope this week’s issue bring you some joy. We got stories of Rakuten, Clubhouse, Target deploy and debug their system. Infrastructure is hard and take for granted, when it works, no one notices, when it doesn’t everyone panic :-).
Let’s learn from team that has build platform to handle massive scale.
Conditionally setting your gitconfig
When you use the same laptop for different github accounts, thing can easily get messy such as accidently commit to work project as your personal account and vice versa. The way around is to use git config but we have to set them every time we start a new repo? can we magically execute some git config based on the directory we are in? Turn out git support that so we can say for a repo inside a certain directory, then use this git config.
Zero-Downtime Rolling Deployments in Kubernetes
Rakuten is the maker of app like Kobo, Viber, Viki so needless to say their traffic is massive. In this article, they share how they design their deployment system and a few gotcha of K8S.
Distributed Troubleshooting at Target
Target’s open source big data platform contains a vast array of clustered technologies or ecosystems working together. Troubleshooting an issue within a single ecosystem is a difficult task let alone an issue that spans several ecosystems.
Rate Limiting Algorithm
Any app will need some kind of rate limiting eventually. One of the methods is call Leaky bucket. It is an algorithm that provides a simple, intuitive approach to rate limiting via a queue which you can think of as a bucket holding the requests. Users can burst and fill in the bucket but once it’s filled up then subsequent requests are dropped(fall out of bucket)
Third-party scripts provide a wide range of useful functionality, making the web more dynamic, interactive, and interconnected. These scripts may be crucial to your website’s functionality or revenue stream. But third-party scripts also come with many risks that should be taken into consideration to minimize their impact while still providing value.
Let's write a compiler, part 7: Arrays
So you want to write a simpler compiler that can generate machine code? Check this series out. It has 7 parts up till now. Note that it doesn’t generate machine code directly but generate C code. Still, its scope is small enough to quickly try it out.
Don’t attach tooltips to document.body
When attaching tooltips element to the root of body, it takes 80ms to add it to the DOM and the app is blocked in this 80ms. By moving it to an intermediate div element, it only takes 8ms to render and show the tooltip.
The root cause is because browser has to draw the whole render tree when we add it to the root. When adding to an intermediate element, only that element need to be calculated and redraw.
Code to read
Navigable waveform built on Web Audio and Canvas
Distributed disk storage database based on Raft and Redis protocol.
a C11 compiler using QBE as a backend.
A JIT for Ruby, implemented in pure Ruby
Fast and multi-platform Spotify client with native GUI
How would you extract Text from a HTML document to present a text-only version of the article? This is one proven approach that is being used in the wild.
Code smell detector for Ruby
A Pluggable Authentication Module (PAM) which allows the establishment of alternate passwords that can be used to perform actions to clear sensitive data, notify IT/Security staff, close off sensitive network connections, etc if a user is coerced into giving a threat actor a password.
That's it for this round, have a great day! If you like this newsletter, please tell the world, or
tweet about this