Grafana Tempo, a scalable distributed tracing system
Tempo is designed to be a robust trace id lookup store whose only dependency is object storage (GCS/S3).
Tempo is designed to be a robust trace id lookup store whose only dependency is object storage (GCS/S3).
Copying data wastes memory, and modifying/mutating data can lead to bugs. Learn how to implement a compromise between the two in Python: hidden mutability.
I was inspired by the release of Apple’s M1 ARM processor to tweet about the perils of lock-free programming which led to some robust discussion. The discussion went pretty well given the inanity o…
Work faster with this experimental Partial Clone feature for huge Git repositories, saving you time, bandwidth, and storage, one large file at a time.
Background: Joystick Preventing Display Sleep A few months ago, I thought I ought to try Microsoft Flight Simulator 2020. The facsimile of o...
Ruby's native I/O methods traditionally blocked the calling fiber, leaving event-loop libraries to provide replacement wrappers. This Ruby Concurrency Progress Report presents a lightweight per-thread Fiber Scheduler which lets those native operations cooperate with an event loop. It explains the implementation and…
Last month finally I had an opportunity to use Bloom filters. I became fascinated with the promise of this data structure, but I quickly realized it had some drawbacks. This blog post is the tale of my brief love affair with Bloom filters.
In the field of computer science, the Paxos algorithm is notorious for how difficult it is to understand. I had to learn the Paxos algorithm in my distributed systems class. I even have "implemented" it by translating Leslie Lamport's TLA+ to Python. But I didn't understand it until much much later.
Let’s talk about that thing nobody’s talking about. Let’s talk about a vulnerability that’s exposing 2018-2020 Macs while most are declining to act nor report about the matter. Oh, and did I mention it’s unpatchable?
Google Fonts is fast. Now it’s faster. Much faster.
Why buy an expensive desktop computer when your iPhone is a faster SMT solver?
The software ecosystem has a lot of useful but unsafe code, and the easier it is to sandbox that code, the moreoften that’ll happen. If it were as simple as ...
My program received a SIGSEGV signal and crashed with "Segmentation Fault" message. Where does the "V" come from? Did I read it wrong? Was there a "Segmentation *V*ault?"? Or did Linux authors make a mistake? Shouldn't the signal be named SIGSEGF?
macOS 11.0 will identify itself differently according to the SDK used, and an environment variable does the same for scripts.
Patterns and structures of current operating systems and some thoughts about how that could be improved, with lessons learnt from Self, Smalltalk and other "structured" systems.
FreeNAS and TrueNAS have been separate-but-related members of the #1 Open Source storage software family since 2012.
In the past few weeks, I reviewed USB drive performance on the Raspberry Pi 4, and the importance of UASP support for USB drive performance. Both posts generated great discussion, and there were three things I wanted to cover in this follow-up, namely: Which drives support UASP Real-world performance benchmarks TRIM…
The etcd key-value store is a distributed system intended for use as a coordination primitive. Like Zookeeper and Consul , etcd stores a small volume of infrequently-updated state ( by default, up to 8 GB ) in a key-value map, and offers strict-serializable reads, writes and micro-transactions across the entire…
The latest trend in AI is that larger natural language models provide better accuracy; however, larger models are difficult to train because of cost, time, and ease of code integration. Microsoft is releasing an open-source library called DeepSpeed, which vastly advances large model training by improving scale, speed…
See how ClickHouse delivers faster query performance on 500 billion rows of data compared to ScyllaDB, leveraging an Intel NUC mini PC, advanced compression, and materialized views.
AWK As A Major Systems Programming Language — Revisited
In case you are not yet familiar with why an initramfs (or initrd, or initial ramdisk) is typically used when starting Linux, let me quote the wikipedia definition: “[…] initrd is a scheme for loading a temporary root file system into memory, which may be used as part of the Linux startup process […] to make…
A blog about computing and other fun.
Take manual control of your Linux system’s DNS resolution and keep programs from interfering with and overwriting your resolv.conf file.
Learn the shape of the logs of probability distributions, and you’ll be able to guess how they behave.
It's been one year since we moved GitLab.com to Kubernetes. We unpack the challenges and learnings from this major migration.
This post is the first post in linux kernel series. Writing code to run in the kernel is different from user application. While developing in the kernel, you don’t write code from scratch, you need to implement one or more interfaces and register your implementation within the a kernel subsystem.
I built a 28-core gigabit cluster, Kraken, consisting of 7 Raspberry Pi 3 Model Bs.