Revoke Json Web Tokens in Vert.x applications

In this article we’ll explore how to manage pseudo sessions in our Vert.x application. For this purpose, the revoked tokens must be stored in a fast read-access datasource. We’ll see that Redis is well suited for this task.
This is how Facebook (among others) manages its revoked sessions on multiple devices.

Category theory and abstract algebra on Scala

This article aims to serve as a gentle introduction to abstract algebra and category theory concepts for engineers, with examples in the Scala programming language. Firstly, we will review some of the major properties in Scala’s type system that allow category theory to be implemented. Then we will review the formal definitions of Monad and Functor and its implementations in Scala.

Building a CRM micro-service with JWT authentication in NodeJS

Customer Relationship Management (CRM) is a central module in every e-commerce application since it manages users (buyers / sellers), organizations, sessions, as well as authentication.
In this post we will be building a CRM micro-service in NodeJS from scratch and explaining every technical choice on the libraries used.

About sparsal

Two weeks ago I started coding an implementation of the Matching Pursuit algorithm, by Stéphane Mallat and Zhifeng Zhang. This led to creating the Sparse Approximation Library - sparsal, for people looking for some of the algorithms, implemented in a human-readable, functional style.
The project lives here:

Upload multi subjects / session XNAT

Following the same line of work as the last blog post, I’ll explain a possible way of uploading a set of Dicom images separated in folders indicating subject/session organization into XNAT. This solution is based on a script by Hauke Bartsch (

Launch pipelines on an entire project in XNAT

XNAT (the eXtensible Neuroimaging Archive Toolkit) is a great tool for managing large sets of medical images (in particular neuroimaging). One of its useful features is the pipeline engine, which allows to easily write and launch pipelines, although it has a huge drawback: it is impossible to launch the same pipeline on all the subjects of a project. In this post I will explain one possible workaround using a very simple python script.