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
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).
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'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.
This article presents the wasmer-java
project: the first Java library to run WebAssembly.
This article presents wasmer-postgres
: the first Postgres extension to run WebAssembly. The article explores some possibilities. This is super experimental!
This article presents wasmer-go
: the fastest WebAssembly runtime for Go.
This article explains how and why I've migrated php-ext-wasm
from wasmi to Wasmer.
This article explains quickly how I've improved nom
's performance by 78% when parsing in some cases.
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.
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?
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!
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.