Art’s Substack
Subscribe
Sign in
Home
Notes
Archive
About
How to write DRY code in Rust
Rust Best Practices: Avoiding Repetition with Advanced Code Structuring
Jan 24, 2025
•
Art
3
Latest
Top
Discussions
43 Bytes per Series: How I Compressed OTLP labels with Packed KeySets
From native strings to packed keysets, this data-driven OTLP LabelSetStore shows how to cut memory to 43 bytes/series at scale
Jan 18
•
Art
3
Stop Allocating Per Label: A Data‑Driven Rust SymbolTable for OTLP/TSDB
I measured it instead of arguing: Arc<str> vs arena vs SmolStr vs GermanStr on OTLP-like data. Allocation counts and fragmentation tell the real story.
Jan 14
•
Art
6
1
The GIL Was Your Lock
Free-threaded Python is the biggest change to the ecosystem in a decade. While it unlocks massive performance potential, it also removes the "accidental…
Dec 29, 2025
•
Art
3
2
Free-Threading Python vs Multiprocessing: Overhead, Memory, and the Shared-Set Meltdown
Free-threading makes CPU threads real - but should you ditch multiprocessing? Benchmarks across Linux/Windows/macOS exposes spawn tax, RAM tax, and a…
Dec 26, 2025
•
Art
3
Python Threads: GIL vs Free-Threading
For years, Python threads don’t speed up CPU-bound work has been one of those truths that felt less like a technical statement and more like a life…
Dec 15, 2025
•
Art
2
5
When Profiler Deadlocks. Debugging a Rust Service Stuck in futex with GDB
Production Rust service deadlocked. 😱 We dove deep with gdb into a futex wait, traced it to jemalloc, and found a nasty bug in profiler's signal…
Dec 1, 2025
•
Art
Building a Custom Android System with eBPF Support
Customize Linux Kernel for Android to run eBPF
Apr 20, 2025
•
Art
2
See all
Art’s Substack
My personal Substack
Subscribe
Recommendations
The AI Positive Substack
Paul Datta
Art’s Substack
Subscribe
About
Archive
Recommendations
Sitemap
This site requires JavaScript to run correctly. Please
turn on JavaScript
or unblock scripts