This article provides a guide for implementing distributed tracing in Rust using actix, rabbitmq (lapin), tracing, and OpenTelemetry. The steps include adding necessary dependencies, initializing a tracing subscriber, adding tracing macros to desired functions, propagating context, and testing with Zipkin. The article provides code examples for adding a TracingLogger middleware, implementing an AMQP Injector and Extractor for context propagation, and setting up Zipkin tracing. The source code for a complete example is available in a GitHub repository. So, a very good and practical article in Rust library.
One of most valuable articles for me by Paul Graham. This article explores the idea that life is short and how this realization can impact one's perspective and actions. The author reflects on his personal experiences with having children and the way it has made him more aware of the finite nature of time. He argue that recognizing the shortness of life can give more weight to the phrase ‘life is too short for x’ and encourage individuals to eliminate things that they find to be a waste of time, such as ‘bullshit’ tasks and activities. The article also suggests that it is important to actively seek out things that matter to the individual and to not be taken by surprise by the shortness of life. He encourages readers to be conscious of their priorities and to not wait to pursue their goals and cherish their relationships.
This article provides an in-depth explanation of the history and functionality of terminals in UNIX systems. It explains the different modes of terminal input, including canonical and noncanonical, and how they are represented by files in the /dev/ directory. The use of the tty command to determine the current terminal file in use is also covered. Additionally, the author dives into the concept of pseudoterminals, or /dev/pts, which are a feature in the Linux kernel that allows remote terminal access and the creation of terminal emulators. The article explains the two parts of a pseudoterminal, a ptmx and a pts, and how they are used to emulate user input and read program output. Overall, this article is an educational resource that provides a thoughtful approach to understanding terminals and pseudoterminals and their role in modern systems.
Can not recommend this article more! The article provides practical tips on how to manage the issue of spending more time maintaining a product than developing it. The main suggestion is to allocate time to develop administrative tools from the start, and to include supportability in the acceptance criteria or design documents. Additionally, it suggests providing non-engineering team members with useful tools such as system visibility, data modification and support actions. Furthermore, the author advises to capture an audit trail when exposing administrative tools. I think this advice can be “reused“ in a way to create an API for your application management platform. So you can provide (as a platform engineer) a consistent way of consuming application logs/deployment status/ etc. Instead of providing a bunch of different APIs like Kubernetes/Prometheus/GitLab CI.
The article suggests that the inability to prioritize effectively can be caused by a lack of clear priorities and an overabundance of work in progress (WIP). The author suggests that to escape this trap, you should lower expectations and make hard decisions about cutting WIP. He suggests focusing on two meta-priorities: keeping the lights on and making it cheaper and cutting the entire roadmap of new features down to one thing at a time. He also suggests designating a lead to actively seek out and reduce the highest on-call and support burdens on the team and measuring and reducing the highest maintenance costs. The idea is to focus on the most important tasks and minimize distractions to increase efficiency and productivity.