Scaling Linux Services: Before accepting connections
When writing services that accept TCP connections, we tend to think of our work as starting from the point where our service accepts a new client connection and finishing when we complete the request and close the socket. For services at scale, operations can happen at such a high rate that some of the default resource limits of the Linux kernel can break this abstraction and start causing impact to incoming connections outside of that connection lifecycle. This post focuses on some standard resource limitations that exist before the client socket is handed to the application.
Containers from first principles
Dig into container. Docker image are just tar file with some meta data. A container needs at least: network stack, file system, processes. So how can we re-create that, using simple bash commands?
Beginner’s Guide To Abstraction
In The Pragmatic Programmer, Andrew Hunt and David Thomas introduced the DRY (Don’t Repeat Yourself) principle But then Sandi Metz came along and said: Duplication is far cheaper than the wrong abstraction. So what should we do
Types of Indexes in PostgreSQL
B-Tree index is the default index. But you know we have no one size fit all data structure for fast look up. What if we just want an exact match? Well, a hash index might faster there.
SCALING THE HOTTEST APP IN TECH ON AWS AND KUBERNETES
SSH Emergency Access with certificates
A guide to setup SSH authentication with certificates instead of pub key. Why? Certificate allow you to set expiration date, centralization control and revoke easily. With normal public key, once got in,
users can added their own key and do whatever they want.
Reshaping JSON with jq
teaches how to use the command-line utility jq to filter and parse complex JSON files into flat CSV files.
If you need a play ground for jq, check out jqplay.
The author wants it to be the best book in this field. It’s free to read online right now on Manning so check it out(You have to register for a free account to read though). It has 11 chapters so far. Learning about cryptography definetely help you along the way to understand thing like TLS, PGP etc
Code to read
As its name suggest, a Distributed SQL database, written for learning purpose: ACID, Raft-based, Pluggable storage engine with B+tree and log-structured backends and more
a Bash testing framework, can be used to test scripts that contain dangerous commands like rm -rf /. No surprises, no pain.
a powerful and efficient open-source access control library for Golang projects. It provides support for enforcing authorization based on various access control models
SVG patterns for Data Visualization
a Python library for rich text and beautiful formatting in the terminal.
RFC 4180 compliant CSV parsing and encoding. parses 2x times as fast as an unparallelized stream implementation 🚀
side-by-side, character-level git unified diffs in the terminal.
Basically an improve version of diff with color. Make it easier to notice the diff in terminal
a Kafka CLI tool built in Go which gives you everything you need to manage, query Kafka, consume and publish message right from CLI without messaging with Java, bash script of Kafka cli tools.
Give a pid, plot memory usage of process, constantly get sample data to generate plot images.
a tool for running SQL queries on git repositories. It implements SQLite virtual tables and uses go-git. It’s meant for ad-hoc querying of git repositories on disk through a common interface (SQL), as an alternative to patching together various shell commands.
a server side, no-cookie, drop-in and privacy focused tracking solution for Go. Read the accompanied doc
A site to help you quickly see various cache header effect. Super useful when you setting these response header to pass to upstream server like Cloudflare, Fastly etc.
a web-based platform for website owners to log, visualize and analyze user behaviors like mouse trace data.
That's it for this round, have a great day! If you like this newsletter, please tell the world, or
tweet about this