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.


Mar 2021

A hierarchy of multilayered plate models (ESAIM: COCV)

We derive a hierarchy of plate theories for heterogeneous multilayers from three dimensional nonlinear elasticity by means of Γ-convergence. We allow for layers composed of different materials whose constitutive assumptions may vary significantly in the small film direction and which also may have a (small) pre-stress. By computing the Γ-limits in the energy regimes in which the scaling of the pre-stress is non-trivial, we arrive at linearised Kirchhoff, von Kármán, and fully linear plate theories, respectively, which contain an additional spontaneous curvature tensor. The effective (homogenised) elastic constants of the plates will turn out to be given in terms of the moments of the pointwise elastic constants of the materials.

Mar 2020

Energy Minimising Configurations of Pre-strained Multilayers (J. Elast.)

We investigate energetically optimal configurations of thin structures with a pre-strain. Depending on the strength of the pre-strain we consider a whole hierarchy of effective plate theories with a spontaneous curvature term, ranging from linearised Kirchhoff to von Kármán to linearised von Kármán theories. While explicit formulae are available in the linearised regimes, the von Kármán theory turns out to be critical and a phase transition from cylindrical (as in linearised Kirchhoff) to spherical or saddle-shaped (as in linearised von Kármán) configurations is observed there. We analyse this behaviour with the help of a whole family ($I^{θ})_{θ∈(0,∞)}$ of effective von Kármán functionals which interpolates between the two linearised regimes. We rigorously show convergence to the respective explicit minimisers in the asymptotic regimes $θ → 0$ and $θ → ∞$. Numerical experiments are performed for general $θ∈(0,∞)$ which indicate a stark transition in a critical region of parameters θ.

2014 - 2019

Effective theories for multilayered plates (Ph.D. thesis)

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. Finally, we numerically investigate the interpolating regime employing the open source toolkit FEniCS to implement a discrete gradient flow. This provides empirical evidence for the existence of a critical value of the parameter around which minimisers are of different nature. We show $Γ$-convergence of the discretisation and compactness as the mesh size goes to zero.

Nov 2018

Some remarks on the contact set for the Signorini problem (Opusc. Math.)

We study some properties of the coincidence set for the boundary Signorini problem, improving previous work in the literature. Among other new results, we show here that the convexity assumption on the domain made previously in the literature on the location of the coincidence set can be avoided under suitable alternative conditions on the data.

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 - 2018


PaperWhy was my attempt to contribute 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 has become almost impossible. By routinely reviewing and reporting about papers I helped myself 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.

2011 - 2015


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.

After several years working as a software developer, I pursued studies in pure mathematics in Madrid and Munich. My Ph.D. is on effective two dimensional theories for thin multi-layered materials and their minimisers, but I previously 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.

Since then I've moved into machine learning and I am currently (2020) working as an "applied researcher" at the appliedAI initiative, part of UnternehmerTUM GmbH, where I strive to bridge the gap between research and application.

If you are interested in any of the stuff above or have any ideas for a talk or project, drop me a line.

This site

This site is statically hosted by netlify, 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. There are also some PDFs which I copied from my private git repositories. Please check the README file for the credits, licenses and dependencies.