<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <id>https://ring.muhokama.fun/atom.xml</id>
  <title type="text">ring.muhokama.fun</title>
  <subtitle type="text">federated blog of Muhokama webring</subtitle>
  <generator uri="https://github.com/xhtmlboi/yocaml" version="2">YOCaml</generator>
  <updated>2025-08-18T00:00:00Z</updated>
  <author>
    <name>Xavier Van de Woestyne</name>
    <uri>xvw.lol</uri>
  </author>
  <author>
    <name>The XHTMLBoy</name>
    <uri>xhtmlboi.github.io</uri>
  </author>
  <author>
    <name>Maiste</name>
    <uri>maiste.fr</uri>
  </author>
  <author>
    <name>Romain Calascibetta</name>
    <uri>blog.osau.re/</uri>
  </author>
  <author>
    <name>Grim</name>
    <uri>gr-im.github.io</uri>
  </author>
  <author>
    <name>gholad</name>
    <uri>hakimba.github.io/oxywa/</uri>
  </author>
  <author>
    <name>Jayesh Bhoot</name>
    <uri>bhoot.dev/about-website/</uri>
  </author>
  <author>
    <name>Condor</name>
    <uri>site.condor-du-plateau.fr/meta.html</uri>
  </author>
  <author>
    <name>Nicolas Rinaudo</name>
    <uri>nrinaudo.com</uri>
  </author>
  <author>
    <name>Clément Delafargue</name>
    <uri>blog.clement.delafargue.name</uri>
  </author>
  <author>
    <name>Reynir Björnsson</name>
    <uri>reyn.ir/</uri>
  </author>
  <author>
    <name>Paul-Elliot</name>
    <uri>choum.net/panglesd/</uri>
  </author>
  <author>
    <name>Zachary Kai</name>
    <uri>zacharykai.net/webrings</uri>
  </author>
  <author>
    <name>Daryl Sun</name>
    <uri>blog.darylsun.page/</uri>
  </author>
  <author>
    <name>Chukwuma Akunyili</name>
    <uri>fearful-odds.rocks</uri>
  </author>
  <link href="https://ring.muhokama.fun/atom.xml" rel="self"/>
  <link href="https://ring.muhokama.fun"/>
  <entry>
    <id>https://gr-im.github.io/a/dependency-injection.html</id>
    <title type="text">Basic dependency injection with objects</title>
    <updated>2025-08-18T00:00:00Z</updated>
    <summary type="text">
      A simple way to encode dependency injection using the Reader monad and objects in OCaml (to work well with type inference).
    </summary>
    <author>
      <name>Grim</name>
      <uri>gr-im.github.io</uri>
    </author>
    <link href="https://gr-im.github.io/a/dependency-injection.html" rel="alternate" title="Basic dependency injection with objects"/>
    <category term="ocaml"/>
    <category term="solid"/>
    <category term="oop"/>
  </entry>
  <entry>
    <id>https://xvw.lol/en/articles/why-ocaml.html</id>
    <title type="text">Why I chose OCaml as my primary language</title>
    <updated>2025-08-13T00:00:00Z</updated>
    <summary type="text">
      This article is an attempt to present the reasons why I chose OCaml and why I am satisfied with it, for both personal and professional projects (in English).
    </summary>
    <author>
      <name>Xavier Van de Woestyne</name>
      <uri>xvw.lol</uri>
    </author>
    <link href="https://xvw.lol/en/articles/why-ocaml.html" rel="alternate" title="Why I chose OCaml as my primary language"/>
    <category term="ocaml"/>
    <category term="opinion"/>
    <category term="insight"/>
  </entry>
  <entry>
    <id>https://xvw.lol/en/articles/tetra-master.html</id>
    <title type="text">Tetra-Master hell</title>
    <updated>2025-07-02T00:00:00Z</updated>
    <summary type="text">
      An exhaustive presentation of the Final Fantasy 9 card game, an incomprehensible game with crazy rules.
    </summary>
    <author>
      <name>Xavier Van de Woestyne</name>
      <uri>xvw.lol</uri>
    </author>
    <link href="https://xvw.lol/en/articles/tetra-master.html" rel="alternate" title="Tetra-Master hell"/>
    <category term="game"/>
    <category term="final-fantasy"/>
    <category term="ocaml"/>
  </entry>
  <entry>
    <id>https://xvw.lol/en/articles/modules-import.html</id>
    <title type="text">OCaml, modules and import schemes</title>
    <updated>2025-06-30T00:00:00Z</updated>
    <summary type="text">
      In this article, we&apos;re going to look at how generalised openings can be used to reproduce a common practice in other languages, which I call, somewhat pompously, import strategies,
    </summary>
    <author>
      <name>Xavier Van de Woestyne</name>
      <uri>xvw.lol</uri>
    </author>
    <link href="https://xvw.lol/en/articles/modules-import.html" rel="alternate" title="OCaml, modules and import schemes"/>
    <category term="ocaml"/>
    <category term="module"/>
  </entry>
  <entry>
    <id>https://xvw.lol/en/articles/oop-refl.html</id>
    <title type="text">Guarded methods using equality witnesses</title>
    <updated>2025-06-29T00:00:00Z</updated>
    <summary type="text">
      Guarded methods allow constraints to be attached to the receiver (self) only for certain methods, so that these methods can only be called if the receiver satisfies these constraints (these guards). OCaml does not syntactically allow this type of method to be defined directly. In this note, we&apos;ll look at how to encode them using a type equality witness.
    </summary>
    <author>
      <name>Xavier Van de Woestyne</name>
      <uri>xvw.lol</uri>
    </author>
    <link href="https://xvw.lol/en/articles/oop-refl.html" rel="alternate" title="Guarded methods using equality witnesses"/>
    <category term="ocaml"/>
    <category term="oop"/>
    <category term="refl"/>
    <category term="gadt"/>
  </entry>
  <entry>
    <id>https://bhoot.dev/2025/form-method-dialog/</id>
    <title type="text">Use cases for &lt;form method=&quot;dialog&quot;&gt;</title>
    <updated>2025-01-15T00:00:00Z</updated>
    <summary type="text">
      Scenarios where one can use a relatively less known value of the &lt;form&gt; element&apos;s method attribute, called dialog.
    </summary>
    <author>
      <name>Jayesh Bhoot</name>
      <uri>bhoot.dev/about-website/</uri>
    </author>
    <link href="https://bhoot.dev/2025/form-method-dialog/" rel="alternate" title="Use cases for &lt;form method=&quot;dialog&quot;&gt;"/>
    <category term="html"/>
  </entry>
  <entry>
    <id>https://xvw.lol/pages/emacs-yasnippet.html</id>
    <title type="text">Emacs, expanding abbreviations with YASnippet</title>
    <updated>2024-09-25T00:00:00Z</updated>
    <summary type="text">A little naive presentation of abbreviation expansion with YASnippet, in Emacs.</summary>
    <author>
      <name>Xavier Van de Woestyne</name>
      <uri>xvw.lol</uri>
    </author>
    <link href="https://xvw.lol/pages/emacs-yasnippet.html" rel="alternate" title="Emacs, expanding abbreviations with YASnippet"/>
    <category term="emacs"/>
  </entry>
  <entry>
    <id>https://xvw.lol/pages/why-ocaml.html</id>
    <title type="text">Why OCaml?</title>
    <updated>2024-08-25T00:00:00Z</updated>
    <summary type="text">
      This article is an attempt to present the reasons why I chose OCaml and why I am satisfied with it, for both personal and professional projects.
    </summary>
    <author>
      <name>Xavier Van de Woestyne</name>
      <uri>xvw.lol</uri>
    </author>
    <link href="https://xvw.lol/pages/why-ocaml.html" rel="alternate" title="Why OCaml?"/>
    <category term="ocaml"/>
    <category term="opinion"/>
    <category term="insight"/>
  </entry>
  <entry>
    <id>https://gr-im.github.io/a/rank-aggregation.html</id>
    <title type="text">Sorting things, rank-aggregation (beginner&apos;s approach)</title>
    <updated>2024-08-10T00:00:00Z</updated>
    <summary type="text">
      Summary of a response about how to order products by their votes/reviews using rank aggregation (using Shopify approach).
    </summary>
    <author>
      <name>Grim</name>
      <uri>gr-im.github.io</uri>
    </author>
    <link href="https://gr-im.github.io/a/rank-aggregation.html" rel="alternate" title="Sorting things, rank-aggregation (beginner&apos;s approach)"/>
    <category term="ocaml"/>
    <category term="rank"/>
    <category term="stats"/>
  </entry>
  <entry>
    <id>https://tarides.com/blog/2024-05-29-effective-ml-through-merlin-s-destruct-command/</id>
    <title type="text">Effective ML Through Merlin&apos;s Destruct Command</title>
    <updated>2024-05-29T00:00:00Z</updated>
    <summary type="text">
      This article presents the use of the destruct command in Merlin and OCaml-lsp to generate missing patterns, or to specify patterns in pattern matching.
    </summary>
    <author>
      <name>Xavier Van de Woestyne</name>
      <uri>xvw.lol</uri>
    </author>
    <link href="https://tarides.com/blog/2024-05-29-effective-ml-through-merlin-s-destruct-command/" rel="alternate" title="Effective ML Through Merlin&apos;s Destruct Command"/>
    <category term="ocaml"/>
    <category term="lsp"/>
    <category term="ide"/>
    <category term="emacs"/>
    <category term="vscode"/>
    <category term="vim"/>
    <category term="merlin"/>
  </entry>
  <entry>
    <id>https://gr-im.github.io/a/fold-gof.html</id>
    <title type="text">Fold for cheap pattern-matching</title>
    <updated>2024-03-18T00:00:00Z</updated>
    <summary type="text">
      Summary of a response regarding the encoding of visitors without pattern matching in OCaml, using the fold function.
    </summary>
    <author>
      <name>Grim</name>
      <uri>gr-im.github.io</uri>
    </author>
    <link href="https://gr-im.github.io/a/fold-gof.html" rel="alternate" title="Fold for cheap pattern-matching"/>
    <category term="ocaml"/>
    <category term="pattern"/>
    <category term="fp"/>
  </entry>
  <entry>
    <id>https://xvw.lol/pages/modules-import.html</id>
    <title type="text">OCaml, modules and import schemes</title>
    <updated>2023-10-31T00:00:00Z</updated>
    <summary type="text">
      In this article, we&apos;re going to look at how generalised openings can be used to reproduce a common practice in other languages, which I call, somewhat pompously, import strategies,
    </summary>
    <author>
      <name>Xavier Van de Woestyne</name>
      <uri>xvw.lol</uri>
    </author>
    <link href="https://xvw.lol/pages/modules-import.html" rel="alternate" title="OCaml, modules and import schemes"/>
    <category term="ocaml"/>
    <category term="module"/>
  </entry>
  <entry>
    <id>https://xvw.lol/pages/tetra-master.html</id>
    <title type="text">Tetra-Master hell</title>
    <updated>2023-09-05T00:00:00Z</updated>
    <summary type="text">
      An exhaustive presentation of the Final Fantasy 9 card game, an incomprehensible game with crazy rules.
    </summary>
    <author>
      <name>Xavier Van de Woestyne</name>
      <uri>xvw.lol</uri>
    </author>
    <link href="https://xvw.lol/pages/tetra-master.html" rel="alternate" title="Tetra-Master hell"/>
    <category term="game"/>
    <category term="final-fantasy"/>
    <category term="ocaml"/>
  </entry>
  <entry>
    <id>https://xvw.lol/pages/oop-refl.html</id>
    <title type="text">Guarded methods using equality witnesses</title>
    <updated>2022-05-29T00:00:00Z</updated>
    <summary type="text">
      Guarded methods allow constraints to be attached to the receiver (self) only for certain methods, so that these methods can only be called if the receiver satisfies these constraints (these guards). OCaml does not syntactically allow this type of method to be defined directly. In this note, we&apos;ll look at how to encode them using a type equality witness.
    </summary>
    <author>
      <name>Xavier Van de Woestyne</name>
      <uri>xvw.lol</uri>
    </author>
    <link href="https://xvw.lol/pages/oop-refl.html" rel="alternate" title="Guarded methods using equality witnesses"/>
    <category term="ocaml"/>
    <category term="oop"/>
    <category term="refl"/>
    <category term="gadt"/>
  </entry>
  <entry>
    <id>https://xhtmlboi.github.io/articles/yocaml.html</id>
    <title type="text">Some highlights of how my blog is generated</title>
    <updated>2021-11-14T00:00:00Z</updated>
    <summary type="text">
      A brief (and slightly theoretical) description of how YOCaml works in general, which can be used as a light introduction to arrows.
    </summary>
    <author>
      <name>The XHTMLBoy</name>
      <uri>xhtmlboi.github.io</uri>
    </author>
    <author>
      <name>Xavier Van de Woestyne</name>
      <uri>xvw.lol</uri>
    </author>
    <link href="https://xhtmlboi.github.io/articles/yocaml.html" rel="alternate" title="Some highlights of how my blog is generated"/>
    <category term="ocaml"/>
    <category term="static"/>
    <category term="blog"/>
    <category term="arrow"/>
  </entry>
</feed>