Fighting complexity in software development
The title said it all. Software development is hard: unclear requirements, miscommunication, poor development process, legacy code, scaling is hard, technical debt.
What can we do?
Find the Four Month Bug: A debugging story
Debugging is tricky. Sometimes your application never do A so when debug for issue you will not look at anything related to A. In this particular case, the application doesn’t do any IO but turn out the performance issue cause by a slow magnetic disk. The lesson: quit thinking and just look, Make it fail, and understand the system.
Degraded performance on GitLab.com
A Redis issue. The actual incident isn’t interesting. But it’s great to see how Gitlab, as a compnay, debug, diagnosed and resolved the incident these production issue in public so we can learn from them. A great read I must say.
Building A "Simple" Distributed System - The What
A blog series where author shared their approach and experience of building a distributed resource allocation library. As far as distributed systems go, it is a simple one and ideal as a tool for learning about distributed systems design, programming and testing.
A better zip bomb
How to construct a non-recursive zip bomb that achieves a high compression ratio by overlapping files inside the zip container. “Non-recursive” means that it does not rely on a decompressor’s recursively unpacking zip files nested within zip files: it expands fully after a single round of decompression
Automatically detect memory leaks with Puppeteer
Normally before fixing a bugs, we write a failing test to prove the fix works. How can we do that for memory leaks bug which require access
to devtools. Puppeteer to the rescue to automate that inspecting process and run as a failed tests.
Code to read
A web component for drawing patterns with CSS
The repository contains Google’s robots.txt parser and matcher as a C++ library
a calculator REPL, similar to bc(1). Short and simple and you learn some simple lexer parser
Python package for wrapping applications inside a tailored interactive shell
an engine that can compile and evaluate expressions - a one-liner that returns a value. The purpose of the package is to allow users to use expressions inside configuration for more complex logic.
A Rails Engine for integrating with Stripe
GitHub-inspired simple and modern SVG charts for the web with zero dependencies
Powerful SVG-Editor for your browser
Emulate AWS λ and API Gateway locally when developing your Serverless project
Allows you to connect applications and third-party services in a cloud-native environment. Basically a bundle to create an environment for
service mesh, monitoring, log ingestion, serverless.
a hardened, certified OAuth2 and OpenID Connect server optimized for low-latency, high throughput, and low resource consumption. We linked to it before but 1.0 is released this week
A High-Performance, Logs, Metrics, & Events Router. Similar to FluentD. Have nice support for Lua
That's it for this round, have a great day! If you like this newsletter, please tell the world, or
tweet about this