CernVM File System


The CernVM File System (CernVM-FS) provides a scalable and reliable software distribution service. It was developed at CERN to assist High Energy Physics (HEP) collaborations in deploying software on the worldwide distributed computing infrastructure for data processing applications, but it can also be used in other domains.

CernVM-FS is implemented as a POSIX read-only file system in user space (FUSE) and uses content-addressed storage and Merkle trees for maintaining file data and meta-data. Files are stored remotely on standard web servers and are retrieved and cached on-demand through outgoing HTTP connections only, avoiding most of the firewall issues of other network file systems. For writing, CernVM-FS follows a publish-subscribe pattern with a single source of new content that is propagated to a large number of readers.

My current focus in the project is improving the write scalability of the file system. If you want to know more about my work on CernVM-FS, you can watch this talk I gave at CodeMesh 2017 or this one at CurryOn 2017.


Pix4Dmapper is a complete processing suite for photogrammetry developed by Pix4D. It's used to obtain 3D point cloud and various other outputs, such as maps or surface models, starting from UAV imagery. At Pix4D I was working on the real-time point cloud visualization and analysis component of Pix4Dmapper.

The application is not open source, but a free trial version should be available on the company website, if you're curious.


LifeV was the main software project I worked on during my PhD. It's a set of C++ libraries for solving PDEs with the finite elements. The focus of the project is on the accurate solution of very large problems. As such, the algorithm and data structure implementations are parallel, suitable for use on large clusters and supercomputers.

My PhD work was on trying to improve the scalability of the finite element simulations in LifeV - through both algorithmic and implementation improvements. LifeV is based on the Trilinos libraries, which gave me the opportunity to contribute to that project, too.



Trilinos is a set of foundation C++ libraries for developing high-performance parallel numerical applications. The various packages of Trilinos provide high-quality implementations of the algorithms (linear algebra, linear and non linear solvers etc.) and data structures (matrices, vectors, distributed maps etc.) needed to construct performant numerical software.

I contributed to Trilinos during my PhD, focusing mostly on shared-memory parallelism support in data structures and linear solvers for multi-core NUMA architectures (ShyLU).