PhD Student in Computer Science

FP Enthusiast


My name is Thomas Letan and my usual alias is lthms.


Over the years, I have tackled several projects. None of which has reached a point where it can be easily used by other than me. I have not lost hope they will, though.


The ultimate goal of the so-called ogma project is to provide to storytellers “a tool” to visualize their stories in time and space. Its main component at the time 2 is to define a specialized markup language called ogmarkup and to implement a parser in Haskell which can already be used with hakyll. I have also written a Purescript parser to build varuna, a (poorly efficient) web editor with live preview.

The ogma two years old temporary logo
The ogma two years old temporary logo


The lkn project is an attempt to write a game server in Elixir. Its main component is lkn-core, a framework to create game servers which implements a home-grown ECS supervisor tree and a mechanism to dynamically spawn new instances for incoming players whenever it is necessary.

My Emacs Configuration

I spent quite some times working on my Emacs configuration. Once I felt it was filling my needs, I tried my best to document it and ultimately turned it into an org file. You can find it here. One of my main objective was to reproduce the look and feel of the nofrils vim theme and I find the result particularly satisfying.

A screenshot of my Emacs in action
A screenshot of my Emacs in action


I am an early adopter of pijul, an experimental yet ambitious patch-based DVCS. The nestling is intended to become a web read-only frontend “a la cgit” for pijul. It is written in rust (server) and purescript (client). Right now3, it can be used to visualize a repository history and provide several information pijul cannot provide you yet, such as the list of branches one given patch have been applied.

Myself, pictured by keely
Myself, pictured by keely

  1. This is a perfect opportunity for me to thank once again vhf for hosting It was fun while it lasted.

  2. July 2017.

  3. July 2017.