RSSAmplifier

Blog

mnt.io

mnt.ioRSS feed ↗37 posts

Latest posts

Switching higher-order streams to first-order streams

I discuss streams. It's a pretext to learn about higher-order streams, like flatten and to introduce a new stream: switch ! It's very useful, and will have no secret for you.

About memory pressure, lock contention, and Data-oriented Design

I illustrate how Data-oriented Design helped to remove annoying memory pressure and lock contention in multiple sorters used in the Matrix Rust SDK. It has improved the execution by 98.7% (53ms to 676µs) and the throughput by 7718.5% (from 18K elem/s to 1.4M elem/s)! I will talk about how the different memories work, how we want to make the CPU caches happy, and how we can workaround locks when…

From 19k to 4.2M events/sec: story of a SQLite query optimisation

After a user signaled a performance issue in a Matrix client, we have added new tracing timers in the Matrix Rust SDK to spot the problem. Once found, we have fixed an SQL query improving the throughput from 19k to 251k events/sec, and the speed from 502ms to 39ms. Then after another creative patch, the throughput has been improved to 4.2M events/sec, and the speed to 2ms.

Sliding Sync at the Matrix Conference

I have presented Sliding Sync, a novel, fast and efficient synchronisation mechanism for the Matrix protocol, at the first Matrix Conference in Berlin. It's been many many months that I'm working on this project, and I'm joyful it's now available to everyone for a better Matrix user experience!

Building a new site!

It's time to rewrite my site from scratch. I'm nostalgic of the good old Web. This site is hand-written, and promotes smallness, speed, simplicity and fun. Let's discover the new lore (!), and let's talk about series a little bit.

Observability

The basis of reactive programming is observability. Let's play with it.

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.

Bye bye WhatsApp, hello ?

A rare article written in French discussing WhatsApp and its alternatives.

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.

Bye bye Automattic, hello Wasmer

Eh, new job!

The PHP galaxy

This episode is the end of our experimental, and so of our journey. With the C API we have defined, we can now explore the PHP galaxy. First off, we need to discover how to write a PHP extension. Once it's done, we can write improve our skeleton extension to use our Rust parser via C. As usual, we will compare our Rust to C to PHP design versus the current PEG.php solution. Is it faster? Once…

The C galaxy

C is the lingua franca of many programming languages. In this episode, we will approach the famous Foreign Function Interface (FFI) by generating a C API in Rust. We will continue by automatically generating C headers so that our interfaces are never outdated. Finally, we will write a small C programs just to test everything works as expected. After all, C is a trampoline to reach other galaxies.

The ASM.js galaxy

In this episode, we explore the ASM.js galaxy, as a fallback to WebAssembly when the JavaScript host doesn't support it. We end by a benchmark comparing the Rust to WebAssembly to ASM.js to JavaScript design versus the PEG.js solution: is it faster? Is it still worth it after the conversions to ASM.js? Oh bloody… still yeah!

The WebAssembly galaxy

In this episode, we explore the WebAssembly galaxy. We first off present WebAssembly. Then we see how to write a Rust program tailored for WebAssembly. We continue by explaining how to run this WebAssembly module on a JavaScript host. It brings some complications, like how to flatten an Abstract Syntax Tree to get fast memory accesses between Rust and JavaScript. We continue by reducing the size…

Prelude

Let's start by explaining what Gutenberg is, how our own Rust works, and what we need to do.

How Automattic (WordPress.com & co.) partly moved away from PHPUnit to atoum?

Automattic has partly moved away from PHPUnit to use atoum . This article describes the pros and cons, the difficulties, the benefits, the tooling we had to write to integrate to the continous integration workflows etc.

One conference per day, for one year (2017)

In 2017, I've watched one conference per day. Here is the conclusion of this challenge.

Random thoughts about `::class` in PHP

I am bored of PHP. Let's have fun with ::class !

Automattic, Grand Meetup 2017

A picture of the Grand Meetup 2017.

atoum supports TeamCity

atoum gains a new extension: atoum/teamcity-extension to get full integration with TeamCity !

Export functions in PHP à la Javascript

I am bored of PHP. Can it be as horrible funky as JavaScript?

Finite-State Machine as a Type System illustrated with a store product

In this article, I would like to talk about how to implement a Finite-State Machine (FSM) with the PHP type system. The example is a store product (in an e-commerce solution for instance), something we are likely to meet once in our lifetime. Our goal is to simply avoid impossible states and transitions .

Tagua VM, a safe PHP virtual machine

Watch my last talk at the PHPTour conference about Tagua VM, an experimental PHP runtime written in Rust and LLVM.

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.

Bye bye Liip, hello Automattic

Eh, new job!

DuckDuckGo in a Shell

Tiny bash hack.

sabre/katana

sabre/katana is a contact, calendar, task list and file server. What does it mean? Assuming nowadays you have multiple devices (PC, phones, tablets, TVs…). If you would like to get your address books, calendars, task lists and files synced between all these devices from everywhere, you need a server. All your devices are then considered as clients.

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…

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…

atoum has two release managers

atoum gains 2 release managers for a better project management!

Hello fruux!

Eh, new job!

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.

Rüsh Release

Since 2 years, at Hoa , we are looking for the perfect release process. Today, we have finalized the last thing related to this new process: we have found a name. It is called Rüsh Release , standing for Rolling Ünd ScHeduled Release .