RSS Amplifier

Blog

xvw.articles

English articles

RSS feed ↗6 posts

Latest posts

Emacs, how it all started (for me)

I have been using (_badly_) [Emacs](https://www.gnu.org/software/emacs/) since around 2008. In this short article, I will try to present the **chaotic path** that led me to choose Emacs as my main text and code editor. This is **absolutely not a tutorial**, but rather a small piece of my personal lore, because it is quite amusing to describe clumsy choices that, in hindsight, turned out to be, in…

Indexing coffee with Notion

This article is a reinterpretation of an [article](https://github.com/xvw/planet/blob/master/content/posts/notion-cafe.org) I wrote in 2021 on my [former site](https://github.com/xvw/planet). I tried to focus on the essentials, and it outlines the set of [Notion](https://www.notion.so/about) pages I created to index my coffee consumption and attempt to build an intuition about understanding my…

Why I chose OCaml as my primary language

I started using the [OCaml](https://ocaml.org) language regularly around 2012, and since then, my interest and enthusiasm for this language have only grown. It has become my preferred choice for almost all my personal projects, and it has also influenced my professional choices. Since 2014, I have been actively participating in public conferences dedicated to programming and software development,…

The Hell of Tetra Master

_Tetra Master_ is the optional card game in **Final Fantasy IX**. At first glance, it seems similar to _Triple Triad_ — the card game from Final Fantasy VIII. And while you can develop a general intuition for how to win, especially if you have strong cards, after playing over a hundred matches, I had to admit something: just playing the game and reading all the _in-game_ tutorials wasn’t enough to…

OCaml, modules, and import schemes

The [OCaml](https://ocaml.org) module system can be intimidating, and it typically involves the use of many keywords—for example, `open` and `include`, which allow importing definitions into a module. Since version OCaml `4.08`, the `open` primitive has been *generalized* to allow the opening of **arbitrary module expressions**. In this article, we’ll explore how to use this generalization to…

Guarded methods in OCaml

**Guarded methods** allow attaching **constraints** to the receiver (`self`) **only for certain methods**, thus allowing these methods to be called only if the receiver satisfies these constraints (these _guards_). [OCaml](https://ocaml.org) does not syntactically allow defining this kind of method _directly_. In this note, we will see how to encode them using a **type equality witness**.