Michał J. Gajda

Scientist and developer

Michał is Haskell developer with experience both with empirical science, and commercial environment.  

Software engineer with an extensive experience in developing research software in Haskell, and Python. His expertise spans from DSL design, parsing, to computational simulations. As a polyglot programmer he also used many other languages, including SQL, C/C++, Perl, SML, OCaml, FORTRAN. Best contact him on Keybase

We make a toy model of debugging process and see how it is affected by different programming techniques, methodologies, and stylistic choices. This allows us to make a case for functional programming and mathematically founded programming in general. It also points at how different IDE                   mechanism may further help a functional programmer in debugging her programs.


Authors: Michał J. Gajda & Mikhail Lazarev

Typing dynamic languages has been long considered a challenge. The importance of the task has grown with the ubiquity of cloud application programming interfaces (APIs) utilizing JavaScript object notation (JSON), where one needs to infer the structure having only a limited number of sample documents available. Previous research has suggested it is possible to infer adequate type mappings from sample data.  

In this presentation, Michał presents a reseach where he and Mikhail Lazarev expands on these results. They propose a modular framework for defining type systems of programming languages as learning algorithms subject to a set of equations, and evaluate its performance on inference of Haskell data types from JSON API examples."


Property testing is the cheapest and most precise way of building up a test suite for your program. Especially if the datatypes enjoy nice mathematical laws. But it is also the easiest way to make it run for an unreasonably long time.   We prove a connection between deeply recursive data structures, and epidemic growth rate, and show how to fix the problem, and make Arbitrary instances run in linear time with respect to the assumed test size. We also provide a fully generic implementation, so the error-prone coding process is removed.