Érik Martin-Dorel's Avatar

Érik Martin-Dorel

@erikmartindorel

Software developer, ex-academic. Fluent in Rocq/OCaml/Java/Python/Docker/Bash/Git/Ansible. Opinions are my own and not the views of my employer. https://linktr.ee/erikmd

150
Followers
375
Following
42
Posts
21.11.2024
Joined
Posts Following

Latest posts by Érik Martin-Dorel @erikmartindorel

Post image

💡#Maven tip 👉 Does it get on your nerves when you see compiler warnings but the build passes? Simply add -Werror to compilerArgs and then run ./mvnw clean compile. You'll see BUILD FAILURE which now you must fix. Your code will thank you 😁

#java #tip #seniordeveloper

05.01.2026 19:34 👍 3 🔁 2 💬 2 📌 0
Preview
GitHub - dmtcp/dmtcp: DMTCP: Distributed MultiThreaded CheckPointing DMTCP: Distributed MultiThreaded CheckPointing. Contribute to dmtcp/dmtcp development by creating an account on GitHub.

FWIW, this tool is still maintained, and the GitHub URL is:

github.com/dmtcp/dmtcp

20.12.2025 00:39 👍 2 🔁 0 💬 1 📌 0
Preview
Proving Tight Bounds on Univariate Expressions with Elementary Functions in Coq - Journal of Automated Reasoning The verification of floating-point mathematical libraries requires computing numerical bounds on approximation errors. Due to the tightness of these bounds and the peculiar structure of approximation ...

@freekwiedijk.bsky.social AFAIK, nope - but I think it's generally possible to use tools like DMTCP:

I had tested that tool to save HOL Light sessions for benchmarks purpose;

FTR, see [JAR 2015, § Electronic supplementary material](link.springer.com/article/10.1...)

20.12.2025 00:37 👍 2 🔁 0 💬 1 📌 0
The Infrastructure Stack Is Getting Faster. Terraform Is Not. Every part of the stack is accelerating except infrastructure. Terraform has the ecosystem but not the speed. That's fixable.

Every layer of the stack is getting faster. #Terraform isn't.

We're building Stategraph in #OCaml to change that.

stategraph.dev/blog/terrafo...

31.10.2025 08:19 👍 6 🔁 3 💬 1 📌 0
Post image

Fastest way to check if a year is a leap year?

hueffner.de/falk/blog/a-...

Best part:

"I couldn't immediately find a way to prove it, so I employed the tried-and-true method of getting someone else to do it for me by posting it to the Code Golf StackExchange."

16.05.2025 09:52 👍 46 🔁 17 💬 6 📌 3
Video thumbnail

All 7 #Java garbage collectors explained in one video 🧠
Serial, Parallel, G1, ZGC, Shenandoah, CMS, Epsilon – how they work and which one to use in 2025.
Watch the full breakdown by @cat-edelveis.bsky.social: youtu.be/qmVtSGUrQ04

20.10.2025 13:08 👍 9 🔁 4 💬 0 📌 0
Video thumbnail

Asking for a friend 😬

02.09.2025 10:01 👍 15 🔁 2 💬 9 📌 3

Maybe you're already aware of it, otherwise you may be interested in pinning this thread:
bsky.app/profile/did:...

17.09.2025 15:45 👍 2 🔁 0 💬 1 📌 0
Basic dependency injection with objects A simple way to encode dependency injection using the Reader monad and objects in OCaml (to work well with type inference).

Just came across this very nice blog post by Pierre "Grim" R. (functional.cafe/@grm) ↓

Basic dependency injection with objects (gr-im.github.io/a/dependency...)

🐫✨🔥 #OCaml

04.09.2025 16:08 👍 2 🔁 1 💬 0 📌 0
Preview
Sur le choix d'OCaml Une explication détaillée de pourquoi j'ai fais le choix de OCaml pour langage de programmation "par défaut" pour chaque projet.

Très long billet de Xavier Van de Woestyne @xvw.lol sur le langage de programmation généraliste fonctionnel OCaml : fonctionnalités, avantages/inconvénients, écosystème, communauté #Programming xvw.lol/pages/why-oc...

15.08.2025 11:45 👍 4 🔁 1 💬 0 📌 0

And they use YOCaml 😎🤌

14.07.2025 10:26 👍 7 🔁 2 💬 2 📌 0
A three-panel meme featuring scenes from The Matrix. In the first panel, Morpheus holds out both hands offering two pills, with text reading 'MAP & FILTER' on the left hand and 'FOR LOOPS' on the right hand. The second panel shows Neo looking contemplative with the text 'OCAML' overlaid. The third panel shows Agent Smith asking 'Did you just take both pills?' The meme humorously suggests that OCaml programmers use both functional programming concepts (map & filter) and imperative constructs (for loops) together

A three-panel meme featuring scenes from The Matrix. In the first panel, Morpheus holds out both hands offering two pills, with text reading 'MAP & FILTER' on the left hand and 'FOR LOOPS' on the right hand. The second panel shows Neo looking contemplative with the text 'OCAML' overlaid. The third panel shows Agent Smith asking 'Did you just take both pills?' The meme humorously suggests that OCaml programmers use both functional programming concepts (map & filter) and imperative constructs (for loops) together

why not both? 🤔🐫

09.07.2025 13:17 👍 36 🔁 5 💬 3 📌 0
Watch OCaml Watch media related to the OCaml programming language and ecosystem

in case you've been wondering about getting an account on watch.ocaml.org:

1. it's possible if you're making OCaml videos and want to upload them (e.g. FUN OCaml has an account, among others)
2. if you want to just like an comment: use a Fediverse account (e.g. Mastodon)! 🧡🐫

07.07.2025 10:49 👍 11 🔁 3 💬 0 📌 0
TodoMVC

Helping you select an MV* framework

TodoMVC Helping you select an MV* framework

Dear #OCaml / web community, regarding ways to put forth all OCaml-based methods to develop frontends:

the todomvc.com project provides equivalent implem. of the same app, written using various #MVC frameworks

how about adding a ReasonML / Melange version?🔥🐫
(there's already a js_of_ocaml version)

13.05.2025 21:47 👍 2 🔁 1 💬 0 📌 0
Specific fields not allowing paste | Firefox Support Forum | Mozilla Support

I guess this is because the app at stake is a web app, and its Javascript code prevents pasting?

In this case, if you use Firefox, you may be interested in this tip?

support.mozilla.org/en-US/questi...

12.06.2025 20:29 👍 0 🔁 0 💬 1 📌 0
GitHub - grain-lang/binaryen.ml: OCaml bindings for Binaryen. OCaml bindings for Binaryen. Contribute to grain-lang/binaryen.ml development by creating an account on GitHub.

BTW it happens there's an OCaml binding for Binaryen (but you were certainly aware of it):
github.com/grain-lang/b...

28.05.2025 23:41 👍 0 🔁 0 💬 0 📌 0
Violating memory safety with Haskell's value restriction Violating memory safety with Haskell's value restriction

Just read a very nice article by @welltypedwit.ch !
welltypedwit.ch/posts/value-...

It strongly focuses on Haskell, but I believe it'd be interesting for #OCaml devs as well (and the blog article cites the paper on "Relaxing the Value Restriction" by Jacques Garrigue, DOI: doi.org/10.1007/978-...)

26.05.2025 21:50 👍 1 🔁 0 💬 0 📌 0
This should create a domain record at:

_atproto.erik.martin-dorel.org

Verify DNS Record (…)

This should create a domain record at: _atproto.erik.martin-dorel.org Verify DNS Record (…)

I think so!!

(* Just FYI, I just found an old screenshot of that very page I took on 2024-11-21: the feature was not mentioned. *)

25.05.2025 22:37 👍 2 🔁 0 💬 0 📌 0
This should create a domain record at:

_atproto.todo.com

Your current handle @erikmartindorel.bsky.social will automatically remain reserved for you. You can switch back to it at any time from this account.

Verify DNS Record (…)

This should create a domain record at: _atproto.todo.com Your current handle @erikmartindorel.bsky.social will automatically remain reserved for you. You can switch back to it at any time from this account. Verify DNS Record (…)

and yet, if I open bsky.app/settings/acc... > Handle > I have my own domain, I see:

"Your current handle … will automatically remain reserved for you. You can switch back to it at any time from this account."

Maybe this "handle-preservation feature" is new?

25.05.2025 22:12 👍 1 🔁 0 💬 1 📌 0

Also on android, also having the same problem. Apparently not a problem on iOS according to one of my mutuals.

@bsky.app this is inconvenient enough that I am thinking of either only logging in on my computer or quitting BlueSky.

18.05.2025 12:07 👍 2 🔁 1 💬 0 📌 0

Yes we can also do this. But if the compiler is happy with both, I don't see why we'd discard the currying-based, more elegant phrasing.
Anyway I can understand it is a matter of personal taste.

22.05.2025 19:49 👍 0 🔁 0 💬 0 📌 0
Preview
curry flexible but simple curry function. Latest version: 1.2.0, last published: 12 years ago. Start using curry in your project by running `npm i curry`. There are 107 other projects in the npm registry us...

But currying is one of the pillars of FP!
If you drop it, you won't be able to write code like:
[1; 2; 3; 4]
|> List.filter (fun n -> n mod 2 = 0)
|> List.map (fun n -> n * n)

And in PLs where currying is not native, it is available as a package:
www.npmjs.com/package/curry
pypi.org/project/PyMo...

22.05.2025 18:39 👍 0 🔁 0 💬 1 📌 0
Compiling OCaml to the TI-84+ CE Calculator In this post, I’ll explain how I compiled an OCaml program to run on a TI-84+ CE calculator. 🐪

An epic hack, getting OCaml running on a TI-84+ CE calculator.

farlow.dev/2025/05/17/o...

20.05.2025 14:31 👍 41 🔁 7 💬 0 📌 0
OCaml Web Development: Essential Tools and Libraries in 2025 Are you curious about using OCaml for web development? We outline some of the biggest tools and libraries you'll want to check out!

「 Functional programming fits in well with the web world. The transactional nature of HTTP and the convergence towards immutable state management solutions (such as Redux and consort) make OCaml a very good candidate for web application development 」

#ocaml #webdev
tarides.com/blog/2025-05...

18.05.2025 19:01 👍 7 🔁 3 💬 0 📌 0
Preview
OCaml Web Development: Essential Tools and Libraries in 2025 Are you curious about using OCaml for web development? We outline some of the biggest tools and libraries you'll want to check out!

OCaml Web Development: Essential Tools and Libraries in 2025 https://lobste.rs/s/tpge66 #web #ml

16.05.2025 11:19 👍 2 🔁 1 💬 1 📌 0

Et le snippet de code EmacsLisp de mon post précédent permet d'ajuster aussi les raccourcis pour passer en plein écran vs. maximiser la fenêtre sans basculer vers un "plein écran isolé" :
Ctrl+Cmd+f
Ctrl+u Ctrl+Cmd+f

14.05.2025 11:41 👍 0 🔁 0 💬 1 📌 0
Preview
tapfa-init.el/.emacs at b833c211b15c9c198fa7c17a11b2a7fa0493dd53 · erikmd/tapfa-init.el Environnement de TP pour OCaml et Coq avec GNU Emacs (UE TAPFA = Types Abstraits et Programmation Fonctionnelle Avancée) - erikmd/tapfa-init.el

Oui par défaut les deux touches options sont identiques dans emacs sous macOS. Solution: ajouter ces lignes dans son .emacs, pour que Option de gauche = Meta, et Option de droite = Caractères spéciaux :
github.com/erikmd/tapfa...

14.05.2025 11:37 👍 2 🔁 0 💬 1 📌 0
TodoMVC

Helping you select an MV* framework

TodoMVC Helping you select an MV* framework

Dear #OCaml / web community, regarding ways to put forth all OCaml-based methods to develop frontends:

the todomvc.com project provides equivalent implem. of the same app, written using various #MVC frameworks

how about adding a ReasonML / Melange version?🔥🐫
(there's already a js_of_ocaml version)

13.05.2025 21:47 👍 2 🔁 1 💬 0 📌 0
Post image

I implemented CSS in OCaml via styled-ppx, implemented HTML in OCaml via html_of_jsx, and implemented React in server-reason-react

I got them all

12.05.2025 16:00 👍 9 🔁 1 💬 2 📌 0
Try OxCaml An OCaml toplevel supporting Janestreet's Modes

You can try Janestreet's #OCaml with modes in your browser at patrick.sirref.org/oxcaml

09.05.2025 13:58 👍 9 🔁 5 💬 2 📌 0