Hello, I'm Ivan, computers are part of my life, and I like writing articles or series about what it is possible to do with these machines.

Latest series View all

Reactive programming in Rust in progress

This series explores how to implement and to use efficient reactive programming patterns in Rust. I've used this technique succesfully at my work inside the Matrix Rust SDK, where changes happen on the Rust side and are propagated to subscribers, even if they sit in foreign languages, like Swift or Kotlin. This is how Matrix Rust SDK powers cross-platform applications, like Element X (the next-generation Element client).

From Rust to beyond complete

At my work, I had an opportunity to start an experiment: Writing a single parser implementation in Rust for the new Gutenberg blogpost format, and use it on many platforms and environments, like JavaScript (via WebAssembly and ASM.js), C, PHP… An existing stack using PEG.js and PEG.php was used, but it was quickly showing its limitations: slow to parse, consuming too much memory… Let's see how Rust compares the current solution, and let's learn how to use Rust in all these environments!

Pinned articles View all

I've loved Wasmer, I still love Wasmer

I'm proud of what I've done at Wasmer, but the toxic working environment forces me to leave. Here is the story of a really successful and beautiful project with a chaotic management.

Announcing the first Java library to run WebAssembly: Wasmer JNI

This article presents the wasmer-java project: the first Java library to run WebAssembly.

Announcing the first Postgres extension to run WebAssembly

This article presents wasmer-postgres: the first Postgres extension to run WebAssembly. The article explores some possibilities. This is super experimental!

Announcing the fastest WebAssembly runtime for Go: wasmer

This article presents wasmer-go: the fastest WebAssembly runtime for Go.

🐘+🦀+🕸 php-ext-wasm: Migrating from wasmi to Wasmer

This article explains how and why I've migrated php-ext-wasm from wasmi to Wasmer.

Faster find algorithms in nom

This article explains quickly how I've improved nom's performance by 78% when parsing in some cases.

Welcome to Chaos

Recently, I joined Automattic. This is a world-wide distributed company. The first three weeks you incarn a Happiness Engineer. This is part of the Happiness Rotation duty. This article explains why I loved it, and why I reckon you should do it too.

RFCs should provide executable test suites

I've implemented xCal and xCard formats inside the sabre/dav libraries. While testing the different RFCs against my implementation, several errata have been found. This article, first, quickly list them and, second, ask questions about how such errors can be present and how they can be easily revealed. If reading my dry humor about RFC errata is boring, the next sections are more interesting. The whole idea is: Why RFCs do not provide executable test suites?

Control the terminal, the right way

Nowadays, there are plenty of terminal emulators in the wild. Each one has a specific way to handle controls. How many colours does it support? How to control the style of a character? How to control more than style, like the cursor or the window? In this article, we are going to explain and show in action the right ways to control your terminal with a portable and an easy to maintain API. We are going to talk about stat, tput, terminfo, hoa/console… but do not be afraid, it's easy and fun!

Generate strings based on regular expressions

During my PhD thesis, I have partly worked on the problem of the automatic accurate test data generation. In order to be complete and self-contained, I have addressed all kinds of data types, including strings. This article aims at showing how to generate accurate and relevant strings under several constraints.