Welcome!
Welcome on my official website. This place is dedicated to what I do on my spare time and has nothing to do with any company nor professional purpose. You’ll find only personal-related projects and material. Feel free to have a look at the articles I write on my blog!
However, if you are a recruiter, you might be interested in my GitHub page, and/or contacting me:
Here are a few more places where you can find work of mine:
- My packages on Hackage.
- My crates on crates.io.
- My blog articles.
About me…
I’m Dimitri Sabadie, I’m 32. I was born in the South-West of France, near Bordeaux. You can find me online as hadronized, phaazon, phz or even skypers, my old nickname.
I have been writing programs for a very long time. I discovered the C language when I was 12, and started a long
trek in the IT jungle. As I was getting more and more interested in C++, I started writing few more complex
programs, like an .OBJ mesh file loader (shamefully called lobj
) with light and camera support in
OpenGL. A few days after lobj was released, I got my first way into the IRC world. I found a French OpenGL
channel where I was advised to transform lobj
into a realtime 3D engine. I really enjoyed my
experiments with the engines I wrote. The first one was called SGLE for Skypers OpenGL Engine (my old nickname being
skypers), then I refactored it again and again, and finally, I ended up in the demoscene world where I met
nice and interesting people. It was also the time when I discovered the D language, which I used for a bunch
of months before eventually dropping using it. I released a couple of demoscene productions, that you can
find here.
I then had several years learning and writing programs in Haskell — I still am! That period was a very important one to me as I learned a lot about functional programming and especially pure functional programming. I’ve been introducing myself as a functional programmer ever since. My Haskell experience taught me a lot and helped me sharpening my mind and rigorous thoughts about software engineering, language designs and software architectures.
After those years, I decided to get back to writing demo productions and decided to jump in Rust as it’s a very well appreciated language in the Haskell community. I learned the basic language in two days and the more complex concepts in a week (lifetime ellision, borrowing, mpsc, complex macros, uniqueness typing, etc.). My Haskell experience helped a lot to get my feet wet with Rust. Today, I consider Rust as an imperative Haskell. Less powerful in terms of abstraction, it’s better to handle memory and design the control-flow of my programs.
I’m currently sticking around Rust and Haskell as they fit my needs in terms of abstraction, readability, expressiveness and minimal runtime overhead (thus runtime performance in terms of CPU and memory footprint), while still getting interested into learning new languages (lately, Idris, Elm, Go, modern Java, Scala, some Lisp, PureScript and a bunch of others). I don’t consider myself as belonging to a specific expertise field, even though I think I’m best at graphics programming, code architecture and APIs designing, and clearly type-level architecture and type-system coding. I have a wide spectrum of knowledge, ranging from low-level optimization code, to parsers, compilers, EDSL, 3D programming, distributed systems, high-availability, production and infrastructure.
Ever since, I have been working on lots of different projects on my spare time. Here is a non-exhaustive list of the stuff I enjoy myself with during my spare-time, if I’m not wakeboarding or playing the electric guitar:
- The luminance ecosystem. Probably my most ambitious and biggest project. It’s a rendering Rust ecosystem gathering several crates to write safe and fast rendering code.
- The shades project, which is a Rust EDSL to write shading language code. Instead of writing shading code in plain old GLSL, it’s possible to write regular Rust code and get it transpiled to any kind of shading language (GLSL, SPIR-V, etc.) by using a Rust procedural proc-macro and the contents of the shades crate to generate the rest. It’s a very ambitious project.
- hop.nvim, a hinting and jump Neovim plugin. I created it a while ago against Neovim-0.5 to solve some problems of EasyMotion (Vim plugin) which wasn’t aware of Neovim capabilities (float, virtual text, etc.). The complete rewrite was at first a plugin I made for me but it got so much traction that it is now a well established default for Neovim motion in the editor community.
-
https://this-week-in-neovim. As the name implies, TWiN is a “this week in…” format that delivers readers weekly news about what happened in the Neovim ecosystem (both core and plugins). That project was pretty important to me as I wrote all the Rust code for the website and news conversion (Markdown to HTML), and was coordinating efforts to get weekly news and deliver them to readers, via the website or RSS feed.
The TWiN-contents repository holds the actual contents of the weekly updates.
Today, the project was cancelled as it drew me too much energy, and was handed over someone else from the community.
- splines, a Rust crate I created initially for my demoscene needs (where I need to smoothly interpolate points in time for colors, animation, etc.). It took off and is now one of my most downloaded crates of all time on crates.io, summing up to almost ~411k downloads at the time of writing (Sep 2023). The funny story about splines is that it’s used in Google’s Fuchsia operating system!
- glsl, a complete GLSL 450 / 460 Rust parser. Again, I wrote it for my demoscene needs where I wanted to build a superset language over GLSL. It has also taken off, being used by Mozilla for its Rust projects (CSS rendering).
-
mind, the rewrite of
mind.nvim
as a standalone CLI and TUI set of applications. It allows to classify ideas, notes, tasks, documents and links into a tree-like structure. -
kak-tree-sitter, a Unix server bridging
Kakoune with
tree-sitter. The project comprises several parts, such
as the server itself (
kak-tree-sitter
), a controller (ktsctl
) as well as a community-effort default configuration to setup the grammars and queries. The server injects highlighting and semantics selections into running instances of Kakoune via FIFO files and Unix sockets.
Pro side
I obtained my engineer’s degree (CTI) by fall 2015, delivered by EFREI.
I worked in many companies as a Software Engineer:
- Essilor Int., where I was working at the production. Mostly Perl.
- Sculpteo, a 3D printing company where I worked on mesh algorithms, rendering and backend / frontend. Mostly C++, Python and Javascript.
- Veepee, an e-commerce and retail company where I worked on a from-scratch rewrite of an OMS, Order Management System. I was working in a small team of Haskell developers. Mostly Haskell, Elm, TransactSQL and stuff I don’t remember.
- Ledger, a crytowallet (cryptocurrency) company, where I meanly worked on a low-level library. Mostly C++, Typescript, Rust.
Today, I work at DataDog as Software Engineer. I work on distributed and highly available data systems.
Disclaimer to headhunters: if you want to contact me for a job offer, please do not use a template you send to everyone. It’s both boring and disrespectful. Even though I used to respond to that kind of requests, I will not anymore. What would you think if someone applied for a job position with a template they would obviously use for other companies? Do you feel they would express their real interest in getting hired in your company with such a process? If you really want to contact me, just talk to me with your own words and read through my work.. I’m a human being, I don’t want to talk to a template nor being considered as “a human resource.
Disclaimer²: I’m not interested in PHP. You have to stop with that.
Enjoy your visit, and feel free to contact me!