I am a person. I do things and stuff. Mostly math, often software, usually with people. This site collects some personal projects, mathematical and otherwise.

Some of these projects were not originally intended or are not yet ready for public release. Accordingly, some links are disabled. Don't hesitate to contact me if you are interested in any of them.


2014 - 2017

Effective theories for multilayered plates (Ph.D. thesis, in progress)

We derive by $Γ$-convergence a family of effective plate theories for multilayered materials with internal misfit for scaling laws ranging from Kirchhoff's theory to linearised von Kármán. The main addition is the central role played by an intermediate von Kármán-like theory, where a new parameter interpolates between the adjacent regimes. We also prove the $Γ$-convergence of this limiting regime to the other two as well as the relevant compactness results and we characterise some minimising configurations for the scalings considered and beyond Kirchhoff. Finally, we extend the open source toolkit FEniCS in order to apply a recently developed discretization scheme to the interpolating regime.

Dec 2013

Some remarks on the contact set for the Signorini problem

In this note we improve some previous results on the coincidence set for the classical free boundary problem of Signorini. We first show that some of the difficulties were of technical nature and can be avoided using standard tools. We then point out with an example why the geometrical assumptions previously made are not optimal and proceed to prove a new theorem in which we avoid them by constructing a local supersolution based on the intrinsic distance over the boundary manifold.

Mar 2013

On the contact between two linearly elastic bodies (Master's thesis)

We first introduce the problem of the contact of two elastic bodies in the context of classical linear elasticity, then gather all necessary results for the proof of existence and uniqueness of a solution. The main proof of existence is conducted using two different approaches, depending on the coercivity of the bilinear form associated with the elastic potential. We briefly present a finite element discretization and an algorithm for the solution. In particular we focus on some fairly recent advances in the resolution of the non-linearity at the contact zone via iterative methods using a mortar method with dual Lagrange multipliers.

Jul 2012

On a contact problem in elasticity (Bachelor's thesis)

After a quick review of linear elasticity theory, we study the classical problem which considers the stationary equilibrium of an elastic body resting on a frictionless surface (Signorini problem). Its essential property is found in the unilateral boundary conditions given in subsets of the boundary unknown a priori which model the lack of knowledge about the region where contact happens and make the problem non-linear. The coincidence set, where the inequalities defining the boundary conditions become equalities, is then studied in both the vectorial and the scalar settings from two viewpoints. (...)

Statistics and machine learning

From the let-the-machine-tell-me dept.

I devote much of my time to statistical learning theory and machine learning. I often write toy implementations or documents summarizing ideas or collecting proofs, sometimes by applications to real datasets. The selection of topics is rather arbitrary, as is the depth with which they are covered, although they are mostly elementary. I usually try to keep some moderate level of rigour, but remain at the level of a practitioner of mild mathematical sophistication.

2017 -


PaperWhy is my contribution to the sisyphean endeavour not to drown in the immense Machine Learning literature. With thousands of papers every month, keeping up with and making sense of recent research in machine learning has become almost impossible. By routinely reviewing and reporting papers we help ourselves and hopefully someone else.

Jan 2015

Bayesian model selection

In this note we introduce linear regression with basis functions in order to apply Bayesian model selection. The goal is to incorporate Occam's razor through Bayesian analysis in order to automatically pick the model optimally able to explain the data without overfitting. This is joint fun with Philipp Wacker.

Feb 2016

Monte Carlo Tree Search

MCTS is a moderately recent (2006) algorithm for playing games by partially building their decision trees. The key is to use random simulations of the game for those choices which seem most fruitful according to a criterion balancing exploration of new venues and exploitation of good ones. An implementation in Python for a simple game of Quantum TicTacToe provides a nice testbed. This is joint fun with Ana Cañizares, based on work by Philipp Wacker.

Apr 2015

K - nearest neighbours

KNN is one of the simplest non-parametric classification algorithms. In this note, we start from basic ideas in kernel density estimation and using Bayes' rule we derive this simple (albeit slow and sloppy) algorithm which "only" requires the computation and sorting of distances in $L^p$. We test its performance on the CIFAR10 dataset with a C++11 implementation using Armadillo and a viewer written with Qt for the results.

Oct 2014

K-means and Gaussian Mixtures

K-means is a simple clustering algorithm which matches each data point to exactly one of $K$ clusters in a way such that the sum of the squares of the distances of each data point to the center of mass of its assigned cluster is minimal. We review how this minimization can be performed iteratively in a manner closely linked to Expectation Maximization for Gaussian mixtures. We also briefly discuss K-Means++.

Oct 2014

Expectation maximization

EM is a generic iterative algorithm for the maximization of the log likelihood. Following (very closely) Bishop's classical book we discuss its general form, applied to Gaussian models with latent variables as motivation. Some limitations are discussed. Finally we also say a few words about the Kullback-Leibler divergence and other information theoretic ideas to show why EM works.

May 2015

Support Vector Machines

Starting with some elementary ideas on how to tackle the task of assigning labels to images, we progress onto the classical Perceptron, then introduce Optimal Margin Classifiers and finally the primal version of the SVM. From there we do a short detour through dual Lagrange methods and introduce the standard dual formulation of the SVM and the construction of higher dimensional feature spaces with the kernel trick. Along the way we discuss optimisation methods which enable us to use SVMs on large data sets. We provide an implementation written in C++11, using Armadillo and Qt.

Dec 2015

Data assimilation

DA is the task of incorporating data into models given by stochastic dynamical systems. In the simpler discrete case, one considers stochastic dynamics given by $v_{j + 1} = Ψ (v_j) + ξ_j,$ with i.i.d additive noise, together with a sequence of observations given by $y_{j + 1} = h(v_{j + 1}) + η_{j + 1}$, where $η_j$ is again i.i.d. These are Python implementations of a few algorithms and examples from Law & Stuart's book Data Assimilation, partly written in collaboration with Philipp Wacker.

Hidden Markov ModelsDec 2015

Hidden Markov Models

A (pure, vectorized) Python implementation of an HMM with discrete emissions given either by probability tables or Poisson distributions. Parameter estimation is done using the Baum-Welch algorithm for HMMs, which actually is Expectation Maximization. In this application we experience how badly EM tends to get stuck in local optima. This code was written during a short stay at the chair of Computational Neuroscience in the department of Neurobiology of the Ludwig-Maximilians-Universität München.

Feb 2016

Adaptive Rejection Sampling

ARS is a general technique for sampling from a log-concave distribution. An upper bound of the target density is computed using tangents to its logarithm, then transformed back into a sum of exponentials from which it is easy to sample. After explaining the algorithm we provide basic theoretical justification for it. In a simple Python implementation we also test autograd, a package for Automatic Differentiation. Work with Álvaro Tejero.

Apr 2016


Python + Cython implementation of some algorithms from Larry Wasserman's course "Statistical Machine Learning" at Carnegie Mellon University. For now, I only have nonparametric regression, with Nadaraya-Watson, Local Polynomial Regression and Generalized or Leave-One-Out cross-validation applied to select the bandwidth. For the multidimensional case I implemented standard Backfitting for Additive Models and SpAM (Sparse Additive Models) for the high dimensional case.


From the code-monkey dept.



TeXmacs is an open source, fully fledged scientific editor, mostly developed by Joris van der Hoeven with the help of a few core developers and a myriad contributors. Most of my work took place between 2011 and 2015. There is a complete list of my subprojects in my page at texmacs.org. Sadly, as my PhD advanced, my involvement with TeXmacs had to decline.

Despite its name TeXmacs isn't either a plugin for Emacs nor a frontend to TeX. It defines a document format, features a macro language for extensions, innumerable plugins with embedded sessions, a vector graphics tool, scientific spreadsheets, bibliography management, remote sessions and a long, long list of features. On top of all that TeXmacs provides god-like powers over your documents thanks to Scheme. Try it and never look back!

Apr 2012


A simple 15-puzzle game written in Cocoa with Ana Cañizares. This is our first and only application in this language, mostly written during an intense weekend-hackathon. Don't raise your expectations too high.

Jul 2007


An OpenGL interface for a Rubik's cube solver. I wrote this after my first algebra course, where we used semi-direct products to model the group of transformations of the cube. The solver used brute-force to compute the movements graph for the last layer of the cube, assuming the first two have been completed. Written in C++ and Qt.


From the nobody-cares dept.


It is a trite thing to say but still true: I owe so much to so many people that it would be impossible to list them all. These are those directly involved in the projects above.

About me

From the self-plug dept.

I'm a Ph.D. student in mathematics currently working on effective two dimensional theories for thin multi-layered materials and their minimisers.

In the past I've worked with contact problems in linear elasticity, in particular I investigated some properties of the coincidence set for the classical Signorini problem and studied the mathematical properties of the two body problem together with some numerical computations, using the open source toolbox DUNE.

I'm also interested in machine learning and like to program in my spare time, currently mostly in C++, Scheme, Python or Clojure. If you are interested in any of this stuff or have any ideas for a talk or project, drop me a line.

This site

This site is statically hosted at aerobatic, with sources at Bitbucket. Aside from all the javascript and css there isn't much beyond a small Makefile for the deployment (minimization and consolidation of assets) of the single html file. Continuous deployment is achieved using Bitbucket pipelines with a lightweight custom docker image. There are also some PDFs which I copied from my private git repositories. Please check the README file for the credits, licenses and dependencies.