Skip to main content

Posts

Welcome to my Blog Posts!
Here you’ll find everything I’m excited to share, from deep dives into systems software and compiler design to personal reflections and project highlights.
Whether you’re here for technical guides or stories from my journey as a CS student at KU Leuven, I hope you’ll learn something new (and maybe have a little fun along the way).

Feel free to browse by tag or date, and don’t hesitate to reach out if something sparks your interest.

Stay curious and happy reading! 📚✨

2026


Combination before Identity

·1599 words·8 mins
This post introduces the fundamental algebraic structures of Semigroups and Monoids, demonstrating how the simple power of associative combination enables complex patterns like Applicative error accumulation and foldMap while emphasizing the importance of only ’earning’ an identity element when it truly exists in the domain.

2025


Stop fearing the Monad

·4112 words·20 mins
This post demystifies Haskell monads by reframing them as a familiar design pattern for managing context, transitioning from practical code examples in multiple languages to the underlying category theory of monoids over endofunctors.

Coverage checkers

·2406 words·12 mins
This post introduces pattern‐match coverage checking in Vig, showing how Luc Maranget’s constructor‑matrix algorithm can be implemented in Rust to detect unreachable arms and guarantee exhaustiveness at compile time without any runtime cost.

Vig

·2977 words·14 mins
Vig is a new functional programming language that blends subset polymorphism, refinement types, and rich set-based constructs to catch errors at compile time without runtime overhead.

The Shunting Yard algorithm

·3681 words·18 mins
Exploring the Shunting Yard algorithm, how does it parse infix expressions into postfix or AST form, with insights into handling precedence, associativity, and extensions for unary operators and functions.

Coding before AI

·479 words·3 mins
AI’s arrival has shifted coding from forum deep-dives and trial-and-error to “vibe coding,” where LLMs handle boilerplate and prototyping but lack true understanding.