Building a custom Bitset - A study in access-pattern-driven data structure choice

Shows that data-structure choice must be driven by access pattern, not category: a custom bitset with SBO and virtual-mutation hashing is strongly justified for a hot-path DFS that repeatedly clones, hashes, and probes without committing, while the standard-library DynamicBitSet is the right tool for a simple one-shot debug assertion

· 21 minutes reading time

Zig Allocation Patterns

A practical reference on Zig allocation patterns - breaking down the aware (unmanaged) vs. owning (managed) ownership models, arenas, index arenas, and other key idioms used in porcupine-zig, with real code examples and tradeoffs

· 14 minutes reading time

Why Zig’s Io Feels Like an Effect System (Without Being One)

Explains how Zig’s Io gives you most of the engineering wins of effect systems (no function colouring, swappable interpreters) without any type-level tracking — here’s how it stacks up against Scala 3 Caprese and Kyo across the full design spectrum of effects

· 16 minutes reading time

Evaluating PBT Frameworks: How Proptest and Hegel Differ in Algebraic Expressivity

Explains why it’s useful to visualize how these two libraries actually think about the data they generate. Proptest views the world as a static graph of possibilities, while Hegel views it as a live conversation

· 14 minutes reading time

The RAII Drop-Guard Pattern in Rust

Explains RAII in Rust as the primary, statically-enforced mechanism for resource management.

· 15 minutes reading time

Dyn-Compatible Async Traits in Rust: Why the Manual Boxed Future Idiom is Required

Explains why async fn in traits breaks object safety for dynamic dispatch and how the explicit pinned boxed future return type, combined with 'static + Send bounds and pre-move cloning, restores dyn compatibility for service-oriented trait objects

· 16 minutes reading time