matklad
matklad's Arts&Crafts
RustZigDev tools / editors / IDEsSoftware / engineering practiceCompilers
- Posts
- 207 from 12 Mar 2017 to 29 Oct 2026
- Posting
- weekly (43 in the last year)
- Kind
- personal blog
- Feed
- https://matklad.github.io/feed.xml
2026 30
- Avoid Public Functions Calling Other Public Functions
- On Git Refs
- Benchmark In Milliseconds
- Finding Bugs
- Static Allocation, Constant Work
- Cancelation Terminology
- Rust Glancer
- Better Batteries
- Printing Lists
- Zig's Io.Threaded is Neat
- Memory Safety's Hardest Problem
- CSS: Unavoidable Bad Parts
- TIL: Symlinking NixOS Dotfiles
- Always Be Blaming
- Catch Flakes On Main
- Learning Software Architecture
- Steering Zig Fmt
- Minimal Viable Zig Error Contexts
- 256 Lines or Less: Test Case Minimization
- Consensus Board Game
- JJ LSP Follow Up
- Against Query Based Compilers
- Wrapping Code Comments
- Diagnostics Factory
- Justifying text-wrap: pretty
- Programming Aphorisms
- CI In a Box
- make.ts
- Considering Strictly Monotonic Time
- Vibecoding #2
2025 39
- Memory Safety Is ...
- The Second Great Error Model Convergence
- Parsing Advances
- Static Allocation For Compilers
- Newtype Index Pattern In Zig
- Do Not Optimize Away
- Mechanical Habits
- Size Matters
- TigerBeetle Blog
- Readonly Characters Are a Big Deal
- Error ABI
- Error Codes for Control Flow
- On Async Mutexes
- Look Out For Bugs
- Vibe Coding Terminal Editor
- Ads Are a Positional Good
- Links
- Retry Loop Retry
- Reserve First
- Zig's Lovely Syntax
- Partially Matching Zig Enums
- font-size-adjust Is Useful
- Inverse Triangle Inequality
- RSS Server Side Reader
- Open Source Can't Coordinate
- Profiling Challenge Results
- Scalar Select Anti-Pattern
- Performance Profile Visualization Challenge
- Against Horizontal Scroll
- A Fun Zig Program
- Things Zig comptime Won't Do
- Underusing Snapshot Testing
- Random Numbers Included
- Deno Simple Server Side Rendering
- Tariffs
- A Debugger is a REPL is a Debugger
- Use Long Options in Scripts
- Comptime Zig ORM
- MacOS for KDE Users
2024 22
- What Is a dependency?
- Minimal Version Selection Revisited
- Majjit LSP
- SemVer Is Not About You
- A Missing IDE Feature
- Two Workflow Tips
- On Ousterhout's Dichotomy
- The Watermelon Operator
- What is io_uring?
- Try to Fix It One Level Deeper
- The Fundamental Law Of Software Dependencies
- STD Doesn't Have to Abstract OS IO
- Primitive Recursive Functions For A Working Programmer
- How I Use Git Worktrees
- Properly Testing Concurrent Data Structures
- Regular, Recursive, Restricted
- Basic Things
- Zig defer Patterns
- Kafka versus Nabokov
- Window: Live, Constant Time Grep
- Write Less
- Of Rats and Ratchets
2023 39
- O(1) Build File
- Git Things
- CI Dream
- Retry Loop
- Non-Send Futures When?
- IronBeetle
- Push Ifs Up And Fors Down
- Data Oriented Blogging
- Unified Versus Split Diff
- Unless Explicitly Specified Otherwise, Open Source Software With Users Carries Moral Obligations
- LSP could have been better
- UNIX Structured Concurrency
- What is an Invariant?
- Comparative Analysis
- TypeScript is Surprisingly OK for Compilers
- Role Of Algorithms
- Types and the Zig Programming Language
- Fantastic Learning Resources
- On Modularity of Lexical Analysis
- Three Different Cuts
- GitHub Merge Queue
- The Worst Zig Version Manager
- Resilient LL Parsing Tutorial
- Zig Language Server And Cancellation
- Value Oriented Programming Needs Implicits?
- Data Oriented Parallel Value Interner
- Reasonable Bootstrap
- Can You Trust a Compiler to Optimize Your Code?
- UB Might Be a Wrong Term for Newer Languages
- Rust Is a Scalable Language
- Zig And Rust
- An Engine for an Editor
- Why SAT Is Hard
- Three-State Stability
- <3 Deno
- How a Zig IDE Could Work
- Rust's Ugly Syntax
- Next Rust Compiler
- On Random Numbers
2022 17
- Ray Tracer Construction Kit
- If a Tree Falls in a Forest, Does It Overflow the Stack?
- Accessibility: px or rem?
- Elements Of a Great Markup Language
- GitHub Actions Permissions
- Why Linux Troubleshooting Advice Sucks
- Hard Mode Rust
- From Paxos to BFT
- Almost Rules
- Unit and Integration Tests
- Notes on GATs
- Caches In Rust
- Binary Privacy
- Builder Lite
- Why LSP?
- Self Modifying Code
- RPATH, or why lld doesn't work on NixOS
2021 20
- Notes On Module System
- Generate All the Things
- One Hundred Thousand Lines of Rust
- Fast Rust Builds
- Large Rust Workspaces
- ; echo Shell Injection
- It's Not Always ICache
- Inline In Rust
- How to Test
- Design Pattern: Kitchen Sink
- Concurrent Expression Problem
- Async Benchmarks Index
- Goroutines Are Not Significantly Smaller Than Threads
- Delete Cargo Integration Tests
- Another Generic Dilemma
- matklad @ NEAR
- For the Love of Macros
- A Better Rust Profiler
- ARCHITECTURE.md
- Two Kinds of Code Review
2020 19
- Call Site Dependency Injection
- Notes On Lock Poisoning
- Why an IDE?
- Notes on Paxos
- Study of std::io::Error
- Fast Thread Locals In Rust
- Why Not Rust?
- Your Language Sucks, It Doesn't Matter
- Rust in 2021
- Code Smell: Concrete Abstraction
- Who Builds the Builder?
- Things I Have Learned About Life
- Two Beautiful Rust Programs
- From Pratt to Dijkstra
- Simple but Powerful Pratt Parsing
- Fast and Simple Rust Interner
- Why is Rust the Most Loved Programming Language?
- Mutexes Are Faster Than Spinlocks
- Spinlocks Considered Harmful