Software development is hard: both in code and human. But we got you cover this week: learn how to deal with complexity and do tech due diligence to build your teach and your team. If you like the issue, help us spread the words out by forwarding to your friends, or tweeting about it.
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?
a list of questions by topic that help us understand how are you building your tech and engineering team
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.
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.
Not separating persisting the event history and persisting a view of the current state.event-driven vs event-sourced. seduced by eventual consistency
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.
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
Uber is famous for their microservices architectures and distributed system. This is a write up of an Uber engineer building Uber payment system.
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.
Lazy loading reduces initial page weight, and help us hit our performance budgets by requesting images when they’re needed. This post is a follow up to The Complete Guide to Lazy Loading Images to explain a technique which is briefly covered in that article so you can implement it.
The repository contains Google’s robots.txt parser and matcher as a C++ libraryC++
a calculator REPL, similar to bc(1). Short and simple and you learn some simple lexer parserRust
Python package for wrapping applications inside a tailored interactive shellPython
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.Go
A Rails Engine for integrating with StripeRuby
EXPLAIN to write better SQL query.
A self hosted music streaming server
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
Better Dev Link