<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:atom="http://www.w3.org/2005/Atom" version="2.0">
  <channel>
    <title>mnt.io</title>
    <link>https://mnt.io</link>
    <description></description>
    <language>en</language>
    <atom:link href="https://mnt.io/rss.xml" rel="self" type="application/rss+xml"/>
    <lastBuildDate>Mon, 13 Apr 2026 00:00:00 +0000</lastBuildDate>
    <item>
      <title>Switching higher-order streams to first-order streams</title>
      <pubDate>Mon, 13 Apr 2026 00:00:00 +0000</pubDate>
      <author>ivan@mnt.io (Ivan Enderlin)</author>
      <link>https://mnt.io/articles/switching-higher-order-streams-to-first-order-streams/</link>
      <guid>https://mnt.io/articles/switching-higher-order-streams-to-first-order-streams/</guid>
      <description xml:base="https://mnt.io/articles/switching-higher-order-streams-to-first-order-streams/">I discuss streams. It&apos;s a pretext to learn about higher-order streams, like &lt;code&gt;flatten&lt;/code&gt; and to introduce a new stream: &lt;code&gt;switch&lt;/code&gt;! It&apos;s very useful, and will have no secret for you.</description>
    </item>
    <item>
      <title>About memory pressure, lock contention, and Data-oriented Design</title>
      <pubDate>Mon, 23 Feb 2026 00:00:00 +0000</pubDate>
      <author>ivan@mnt.io (Ivan Enderlin)</author>
      <link>https://mnt.io/articles/about-memory-pressure-lock-contention-and-data-oriented-design/</link>
      <guid>https://mnt.io/articles/about-memory-pressure-lock-contention-and-data-oriented-design/</guid>
      <description xml:base="https://mnt.io/articles/about-memory-pressure-lock-contention-and-data-oriented-design/">I illustrate how &lt;em&gt;Data-oriented Design&lt;/em&gt; 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 they are a performance bottleneck.</description>
    </item>
    <item>
      <title>From 19k to 4.2M events&#x2F;sec: story of a SQLite query optimisation</title>
      <pubDate>Fri, 12 Sep 2025 00:00:00 +0000</pubDate>
      <author>ivan@mnt.io (Ivan Enderlin)</author>
      <link>https://mnt.io/articles/from-19k-to-4-2m-events-per-sec-story-of-a-sqlite-query-optimisation/</link>
      <guid>https://mnt.io/articles/from-19k-to-4-2m-events-per-sec-story-of-a-sqlite-query-optimisation/</guid>
      <description xml:base="https://mnt.io/articles/from-19k-to-4-2m-events-per-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.</description>
    </item>
    <item>
      <title>Sliding Sync at the Matrix Conference</title>
      <pubDate>Wed, 30 Oct 2024 00:00:00 +0000</pubDate>
      <author>ivan@mnt.io (Ivan Enderlin)</author>
      <link>https://mnt.io/articles/sliding-sync-at-the-matrix-conference/</link>
      <guid>https://mnt.io/articles/sliding-sync-at-the-matrix-conference/</guid>
      <description xml:base="https://mnt.io/articles/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&apos;s been many many months that I&apos;m working on this project, and I&apos;m joyful it&apos;s now available to everyone for a better Matrix user experience!</description>
    </item>
    <item>
      <title>Building a new site!</title>
      <pubDate>Tue, 08 Oct 2024 00:00:00 +0000</pubDate>
      <author>ivan@mnt.io (Ivan Enderlin)</author>
      <link>https://mnt.io/articles/building-a-new-site/</link>
      <guid>https://mnt.io/articles/building-a-new-site/</guid>
      <description xml:base="https://mnt.io/articles/building-a-new-site/">It&apos;s time to rewrite my site from scratch. I&apos;m nostalgic of the good old Web. This site is hand-written, and promotes smallness, speed, simplicity and fun. Let&apos;s discover the new lore (!), and let&apos;s talk about series a little bit.</description>
    </item>
    <item>
      <title>Observability</title>
      <pubDate>Thu, 19 Sep 2024 00:00:00 +0000</pubDate>
      <author>ivan@mnt.io (Ivan Enderlin)</author>
      <link>https://mnt.io/series/reactive-programming-in-rust/observability/</link>
      <guid>https://mnt.io/series/reactive-programming-in-rust/observability/</guid>
      <description xml:base="https://mnt.io/series/reactive-programming-in-rust/observability/">The basis of reactive programming is observability. Let&apos;s play with it.</description>
    </item>
    <item>
      <title>I&#x27;ve loved Wasmer, I still love Wasmer</title>
      <pubDate>Mon, 04 Oct 2021 00:00:00 +0000</pubDate>
      <author>ivan@mnt.io (Ivan Enderlin)</author>
      <link>https://mnt.io/articles/i-leave-wasmer/</link>
      <guid>https://mnt.io/articles/i-leave-wasmer/</guid>
      <description xml:base="https://mnt.io/articles/i-leave-wasmer/">I&apos;m proud of what I&apos;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.</description>
    </item>
    <item>
      <title>Bye bye WhatsApp, hello ?</title>
      <pubDate>Tue, 19 Jan 2021 00:00:00 +0000</pubDate>
      <author>ivan@mnt.io (Ivan Enderlin)</author>
      <link>https://mnt.io/articles/bye-bye-whatsapp-hello/</link>
      <guid>https://mnt.io/articles/bye-bye-whatsapp-hello/</guid>
      <description xml:base="https://mnt.io/articles/bye-bye-whatsapp-hello/">A rare article written in French discussing WhatsApp and its alternatives.</description>
    </item>
    <item>
      <title>Announcing the first Java library to run WebAssembly: Wasmer JNI</title>
      <pubDate>Wed, 13 May 2020 00:00:00 +0000</pubDate>
      <author>ivan@mnt.io (Ivan Enderlin)</author>
      <link>https://mnt.io/articles/announcing-the-first-java-library-to-run-webassembly-wasmer-jni/</link>
      <guid>https://mnt.io/articles/announcing-the-first-java-library-to-run-webassembly-wasmer-jni/</guid>
      <description xml:base="https://mnt.io/articles/announcing-the-first-java-library-to-run-webassembly-wasmer-jni/">This article presents the &lt;code&gt;wasmer-java&lt;/code&gt; project: the first Java library to run WebAssembly.</description>
    </item>
    <item>
      <title>Announcing the first Postgres extension to run WebAssembly</title>
      <pubDate>Thu, 29 Aug 2019 00:00:00 +0000</pubDate>
      <author>ivan@mnt.io (Ivan Enderlin)</author>
      <link>https://mnt.io/articles/announcing-the-first-postgres-extension-to-run-webassembly/</link>
      <guid>https://mnt.io/articles/announcing-the-first-postgres-extension-to-run-webassembly/</guid>
      <description xml:base="https://mnt.io/articles/announcing-the-first-postgres-extension-to-run-webassembly/">This article presents &lt;code&gt;wasmer-postgres&lt;/code&gt;: the first Postgres extension to run WebAssembly. The article explores some possibilities. This is super experimental!</description>
    </item>
    <item>
      <title>Announcing the fastest WebAssembly runtime for Go: wasmer</title>
      <pubDate>Wed, 29 May 2019 00:00:00 +0000</pubDate>
      <author>ivan@mnt.io (Ivan Enderlin)</author>
      <link>https://mnt.io/articles/announcing-the-fastest-webassembly-runtime-for-go-wasmer/</link>
      <guid>https://mnt.io/articles/announcing-the-fastest-webassembly-runtime-for-go-wasmer/</guid>
      <description xml:base="https://mnt.io/articles/announcing-the-fastest-webassembly-runtime-for-go-wasmer/">This article presents &lt;code&gt;wasmer-go&lt;/code&gt;: the fastest WebAssembly runtime for Go.</description>
    </item>
    <item>
      <title>🐘+🦀+🕸 php-ext-wasm: Migrating from wasmi to Wasmer</title>
      <pubDate>Wed, 03 Apr 2019 00:00:00 +0000</pubDate>
      <author>ivan@mnt.io (Ivan Enderlin)</author>
      <link>https://mnt.io/articles/elephant-crab-spider-web-php-ext-wasm-migrating-from-wasmi-to-wasmer/</link>
      <guid>https://mnt.io/articles/elephant-crab-spider-web-php-ext-wasm-migrating-from-wasmi-to-wasmer/</guid>
      <description xml:base="https://mnt.io/articles/elephant-crab-spider-web-php-ext-wasm-migrating-from-wasmi-to-wasmer/">This article explains how and why I&apos;ve migrated &lt;code&gt;php-ext-wasm&lt;/code&gt; from wasmi to Wasmer.</description>
    </item>
    <item>
      <title>Bye bye Automattic, hello Wasmer</title>
      <pubDate>Mon, 04 Mar 2019 00:00:00 +0000</pubDate>
      <author>ivan@mnt.io (Ivan Enderlin)</author>
      <link>https://mnt.io/articles/bye-bye-automattic-hello-wasmer/</link>
      <guid>https://mnt.io/articles/bye-bye-automattic-hello-wasmer/</guid>
      <description xml:base="https://mnt.io/articles/bye-bye-automattic-hello-wasmer/">Eh, new job!</description>
    </item>
    <item>
      <title>The PHP galaxy</title>
      <pubDate>Mon, 29 Oct 2018 00:00:00 +0000</pubDate>
      <author>ivan@mnt.io (Ivan Enderlin)</author>
      <link>https://mnt.io/series/from-rust-to-beyond/the-php-galaxy/</link>
      <guid>https://mnt.io/series/from-rust-to-beyond/the-php-galaxy/</guid>
      <description xml:base="https://mnt.io/series/from-rust-to-beyond/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&apos;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 again, it&apos;s amazing how faster it is!</description>
    </item>
    <item>
      <title>The C galaxy</title>
      <pubDate>Tue, 11 Sep 2018 00:00:00 +0000</pubDate>
      <author>ivan@mnt.io (Ivan Enderlin)</author>
      <link>https://mnt.io/series/from-rust-to-beyond/the-c-galaxy/</link>
      <guid>https://mnt.io/series/from-rust-to-beyond/the-c-galaxy/</guid>
      <description xml:base="https://mnt.io/series/from-rust-to-beyond/the-c-galaxy/">C is the &lt;em&gt;lingua franca&lt;/em&gt; 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.</description>
    </item>
    <item>
      <title>The ASM.js galaxy</title>
      <pubDate>Tue, 28 Aug 2018 00:00:00 +0000</pubDate>
      <author>ivan@mnt.io (Ivan Enderlin)</author>
      <link>https://mnt.io/series/from-rust-to-beyond/the-asm-js-galaxy/</link>
      <guid>https://mnt.io/series/from-rust-to-beyond/the-asm-js-galaxy/</guid>
      <description xml:base="https://mnt.io/series/from-rust-to-beyond/the-asm-js-galaxy/">In this episode, we explore the ASM.js galaxy, as a fallback to WebAssembly when the JavaScript host doesn&apos;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!</description>
    </item>
    <item>
      <title>The WebAssembly galaxy</title>
      <pubDate>Wed, 22 Aug 2018 00:00:00 +0000</pubDate>
      <author>ivan@mnt.io (Ivan Enderlin)</author>
      <link>https://mnt.io/series/from-rust-to-beyond/the-webassembly-galaxy/</link>
      <guid>https://mnt.io/series/from-rust-to-beyond/the-webassembly-galaxy/</guid>
      <description xml:base="https://mnt.io/series/from-rust-to-beyond/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 of the WebAssembly module to make it as small as possible, smaller than a tiny image. Finally, we compare performance of this Rust to WebAssembly to JavaScript design versus the original PEG.js solution: is it faster? Oh yeah… it is!</description>
    </item>
    <item>
      <title>Prelude</title>
      <pubDate>Tue, 21 Aug 2018 00:00:00 +0000</pubDate>
      <author>ivan@mnt.io (Ivan Enderlin)</author>
      <link>https://mnt.io/series/from-rust-to-beyond/prelude/</link>
      <guid>https://mnt.io/series/from-rust-to-beyond/prelude/</guid>
      <description xml:base="https://mnt.io/series/from-rust-to-beyond/prelude/">Let&apos;s start by explaining what Gutenberg is, how our own Rust works, and what we need to do.</description>
    </item>
    <item>
      <title>How Automattic (WordPress.com &amp; co.) partly moved away from PHPUnit to atoum?</title>
      <pubDate>Mon, 26 Feb 2018 00:00:00 +0000</pubDate>
      <author>ivan@mnt.io (Ivan Enderlin)</author>
      <link>https://mnt.io/articles/how-automattic-partly-moved-away-from-phpunit-to-atoum/</link>
      <guid>https://mnt.io/articles/how-automattic-partly-moved-away-from-phpunit-to-atoum/</guid>
      <description xml:base="https://mnt.io/articles/how-automattic-partly-moved-away-from-phpunit-to-atoum/">Automattic has partly moved away from PHPUnit to use &lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;http://atoum.org&quot;&gt;atoum&lt;/a&gt;. 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.</description>
    </item>
    <item>
      <title>One conference per day, for one year (2017)</title>
      <pubDate>Thu, 25 Jan 2018 00:00:00 +0000</pubDate>
      <author>ivan@mnt.io (Ivan Enderlin)</author>
      <link>https://mnt.io/articles/one-conference-per-day-for-one-year-2017/</link>
      <guid>https://mnt.io/articles/one-conference-per-day-for-one-year-2017/</guid>
      <description xml:base="https://mnt.io/articles/one-conference-per-day-for-one-year-2017/">In 2017, I&apos;ve watched one conference per day. Here is the conclusion of this challenge.</description>
    </item>
    <item>
      <title>Random thoughts about `::class` in PHP</title>
      <pubDate>Wed, 24 Jan 2018 00:00:00 +0000</pubDate>
      <author>ivan@mnt.io (Ivan Enderlin)</author>
      <link>https://mnt.io/articles/random-thoughts-about-class-in-php/</link>
      <guid>https://mnt.io/articles/random-thoughts-about-class-in-php/</guid>
      <description xml:base="https://mnt.io/articles/random-thoughts-about-class-in-php/">I am bored of PHP. Let&apos;s have fun with &lt;code&gt;::class&lt;/code&gt;!</description>
    </item>
    <item>
      <title>Automattic, Grand Meetup 2017</title>
      <pubDate>Sun, 26 Nov 2017 00:00:00 +0000</pubDate>
      <author>ivan@mnt.io (Ivan Enderlin)</author>
      <link>https://mnt.io/articles/automattic-grand-meetup-2017/</link>
      <guid>https://mnt.io/articles/automattic-grand-meetup-2017/</guid>
      <description xml:base="https://mnt.io/articles/automattic-grand-meetup-2017/">A picture of the Grand Meetup 2017.</description>
    </item>
    <item>
      <title>atoum supports TeamCity</title>
      <pubDate>Mon, 06 Nov 2017 00:00:00 +0000</pubDate>
      <author>ivan@mnt.io (Ivan Enderlin)</author>
      <link>https://mnt.io/articles/atoum-supports-teamcity/</link>
      <guid>https://mnt.io/articles/atoum-supports-teamcity/</guid>
      <description xml:base="https://mnt.io/articles/atoum-supports-teamcity/">&lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;http://atoum.org&quot;&gt;atoum&lt;/a&gt; gains a new extension: &lt;code&gt;atoum/teamcity-extension&lt;/code&gt; to get full integration with &lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https://www.jetbrains.com/teamcity/&quot;&gt;TeamCity&lt;/a&gt;!</description>
    </item>
    <item>
      <title>Export functions in PHP à la Javascript</title>
      <pubDate>Mon, 30 Oct 2017 00:00:00 +0000</pubDate>
      <author>ivan@mnt.io (Ivan Enderlin)</author>
      <link>https://mnt.io/articles/export-functions-in-php-a-la-javascript/</link>
      <guid>https://mnt.io/articles/export-functions-in-php-a-la-javascript/</guid>
      <description xml:base="https://mnt.io/articles/export-functions-in-php-a-la-javascript/">I am bored of PHP. Can it be as &lt;del&gt;horrible&lt;/del&gt; funky as JavaScript?</description>
    </item>
    <item>
      <title>Finite-State Machine as a Type System illustrated with a store product</title>
      <pubDate>Wed, 09 Aug 2017 00:00:00 +0000</pubDate>
      <author>ivan@mnt.io (Ivan Enderlin)</author>
      <link>https://mnt.io/articles/finite-state-machine-as-a-type-system-illustrated-with-a-store-product/</link>
      <guid>https://mnt.io/articles/finite-state-machine-as-a-type-system-illustrated-with-a-store-product/</guid>
      <description xml:base="https://mnt.io/articles/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 &lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https://en.wikipedia.org/wiki/Finite-state_machine&quot;&gt;Finite-State Machine&lt;/a&gt; (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 &lt;strong&gt;avoid impossible states and transitions&lt;/strong&gt;.</description>
    </item>
    <item>
      <title>Tagua VM, a safe PHP virtual machine</title>
      <pubDate>Mon, 19 Jun 2017 00:00:00 +0000</pubDate>
      <author>ivan@mnt.io (Ivan Enderlin)</author>
      <link>https://mnt.io/articles/tagua-vm-a-safe-php-virtual-machine/</link>
      <guid>https://mnt.io/articles/tagua-vm-a-safe-php-virtual-machine/</guid>
      <description xml:base="https://mnt.io/articles/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.</description>
    </item>
    <item>
      <title>Faster find algorithms in nom</title>
      <pubDate>Tue, 23 May 2017 00:00:00 +0000</pubDate>
      <author>ivan@mnt.io (Ivan Enderlin)</author>
      <link>https://mnt.io/articles/faster-find-algorithms-in-nom/</link>
      <guid>https://mnt.io/articles/faster-find-algorithms-in-nom/</guid>
      <description xml:base="https://mnt.io/articles/faster-find-algorithms-in-nom/">This article explains quickly how I&apos;ve improved &lt;code&gt;nom&lt;/code&gt;&apos;s performance by 78% when parsing in some cases.</description>
    </item>
    <item>
      <title>Welcome to Chaos</title>
      <pubDate>Mon, 24 Apr 2017 00:00:00 +0000</pubDate>
      <author>ivan@mnt.io (Ivan Enderlin)</author>
      <link>https://mnt.io/articles/welcome-to-chaos/</link>
      <guid>https://mnt.io/articles/welcome-to-chaos/</guid>
      <description xml:base="https://mnt.io/articles/welcome-to-chaos/">Recently, &lt;a href=&quot;https://mnt.io/articles/bye-bye-liip-hello-automattic/&quot;&gt;I joined Automattic&lt;/a&gt;. 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.</description>
    </item>
    <item>
      <title>Bye bye Liip, hello Automattic</title>
      <pubDate>Tue, 18 Apr 2017 00:00:00 +0000</pubDate>
      <author>ivan@mnt.io (Ivan Enderlin)</author>
      <link>https://mnt.io/articles/bye-bye-liip-hello-automattic/</link>
      <guid>https://mnt.io/articles/bye-bye-liip-hello-automattic/</guid>
      <description xml:base="https://mnt.io/articles/bye-bye-liip-hello-automattic/">Eh, new job!</description>
    </item>
    <item>
      <title>DuckDuckGo in a Shell</title>
      <pubDate>Wed, 05 Aug 2015 00:00:00 +0000</pubDate>
      <author>ivan@mnt.io (Ivan Enderlin)</author>
      <link>https://mnt.io/articles/duckduckgo-in-a-shell/</link>
      <guid>https://mnt.io/articles/duckduckgo-in-a-shell/</guid>
      <description xml:base="https://mnt.io/articles/duckduckgo-in-a-shell/">Tiny bash hack.</description>
    </item>
    <item>
      <title>sabre&#x2F;katana</title>
      <pubDate>Mon, 13 Jul 2015 00:00:00 +0000</pubDate>
      <author>ivan@mnt.io (Ivan Enderlin)</author>
      <link>https://mnt.io/articles/sabre-katana-a-contact-calendar-task-list-and-file-server/</link>
      <guid>https://mnt.io/articles/sabre-katana-a-contact-calendar-task-list-and-file-server/</guid>
      <description xml:base="https://mnt.io/articles/sabre-katana-a-contact-calendar-task-list-and-file-server/">&lt;code&gt;sabre/katana&lt;/code&gt; 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.</description>
    </item>
    <item>
      <title>RFCs should provide executable test suites</title>
      <pubDate>Fri, 27 Feb 2015 00:00:00 +0000</pubDate>
      <author>ivan@mnt.io (Ivan Enderlin)</author>
      <link>https://mnt.io/articles/rfcs-should-provide-executable-test-suites/</link>
      <guid>https://mnt.io/articles/rfcs-should-provide-executable-test-suites/</guid>
      <description xml:base="https://mnt.io/articles/rfcs-should-provide-executable-test-suites/">I&apos;ve implemented xCal and xCard formats inside the &lt;code&gt;sabre/dav&lt;/code&gt; 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?</description>
    </item>
    <item>
      <title>Control the terminal, the right way</title>
      <pubDate>Sun, 04 Jan 2015 00:00:00 +0000</pubDate>
      <author>ivan@mnt.io (Ivan Enderlin)</author>
      <link>https://mnt.io/articles/control-the-terminal-the-right-way/</link>
      <guid>https://mnt.io/articles/control-the-terminal-the-right-way/</guid>
      <description xml:base="https://mnt.io/articles/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 &lt;code&gt;stat&lt;/code&gt;, &lt;code&gt;tput&lt;/code&gt;, &lt;code&gt;terminfo&lt;/code&gt;, &lt;code&gt;hoa/console&lt;/code&gt;… but do not be afraid, it&apos;s easy and fun!</description>
    </item>
    <item>
      <title>atoum has two release managers</title>
      <pubDate>Fri, 28 Nov 2014 00:00:00 +0000</pubDate>
      <author>ivan@mnt.io (Ivan Enderlin)</author>
      <link>https://mnt.io/articles/atoum-has-two-release-managers/</link>
      <guid>https://mnt.io/articles/atoum-has-two-release-managers/</guid>
      <description xml:base="https://mnt.io/articles/atoum-has-two-release-managers/">atoum gains 2 release managers for a better project management!</description>
    </item>
    <item>
      <title>Hello fruux!</title>
      <pubDate>Mon, 24 Nov 2014 00:00:00 +0000</pubDate>
      <author>ivan@mnt.io (Ivan Enderlin)</author>
      <link>https://mnt.io/articles/hello-fruux/</link>
      <guid>https://mnt.io/articles/hello-fruux/</guid>
      <description xml:base="https://mnt.io/articles/hello-fruux/">Eh, new job!</description>
    </item>
    <item>
      <title>Generate strings based on regular expressions</title>
      <pubDate>Tue, 30 Sep 2014 00:00:00 +0000</pubDate>
      <author>ivan@mnt.io (Ivan Enderlin)</author>
      <link>https://mnt.io/articles/generate-strings-based-on-regular-expressions/</link>
      <guid>https://mnt.io/articles/generate-strings-based-on-regular-expressions/</guid>
      <description xml:base="https://mnt.io/articles/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.</description>
    </item>
    <item>
      <title>Rüsh Release</title>
      <pubDate>Mon, 15 Sep 2014 00:00:00 +0000</pubDate>
      <author>ivan@mnt.io (Ivan Enderlin)</author>
      <link>https://mnt.io/articles/rush-release/</link>
      <guid>https://mnt.io/articles/rush-release/</guid>
      <description xml:base="https://mnt.io/articles/rush-release/">Since 2 years, at &lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;http://hoa-project.net/&quot;&gt;Hoa&lt;/a&gt;, 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 &lt;strong&gt;Rüsh Release&lt;/strong&gt;, standing for &lt;em&gt;Rolling Ünd ScHeduled Release&lt;/em&gt;.</description>
    </item>
  </channel>
</rss>
