Archives

2022

Statistical gender bias

I recently stumbled on a debate where J. Peterson argues that the gender pay gap is mostly not due to gender bias. Let’s see what’s wrong with his argument.

• random-rambling

How wind affects your speed on a bike

Let’s look at how the wind affect your speed on a bike, the diminishing impact of power, and why you feel the drag suddenly passed a certain speed.

• random-rambling

Back to Top ↑

2021

COVID cases from COVID test results

Let’s create a simple Bayesian network to visualise how reported positive tests of COVID inform us about the real number of COVID infections.

• machine-learning

Back to Top ↑

2019

Pythagorean Triples in Modern C++

Generating Pythagorean triples using linear algrebra in modern C++ as an answer to the heated discussions around std::ranges in the C++ community.

• modern-cpp

Back to Top ↑

2018

Back to Top ↑

2017

Idris dependent typing challenge: Bowling Kata

Let’s implement an entirely type safe bowling game, where invalid games cannot even be instantiated, and see how it goes and if it is even desirable.

• functional-programming

10 things Idris improved over Haskell

The 1.0.0 of Idris has been released just a few months back, just enough to start trying out the language and some of the possibilities dependent typing offers

• functional-programming

Lost in std::is_permutation complexity

This post is dedicated to an STL algorithm which caused me some serious performance issues at my first use of it: std::is_permutation.

• modern-cpp

Paramorph your DSL (C++)

Let’s dive in the implementation of paramorphisms in C++, a strictly more powerful recursion scheme than catamorphism, all motivated by an example.

• functional-programming

Building a Clojurescript Game Logic

Let us implement a board game in ClojureScript, a functional programming language transpiling to JS, from the game rules to graphics to AI (part 3).

• functional-programming

Building a Clojurescript game (POC)

Let us implement a board game in ClojureScript, a functional programming language transpiling to JS, from the game rules to graphics to AI (part 2).

• functional-programming

Building a Clojurescript game

Let us implement a board game in ClojureScript, a functional programming language transpiling to JS, from the game rules to graphics to AI (part 1).

• functional-programming

Quickcheck is fun, deal with it

QuickCheck’s generators can be leveraged for other purposes than just Property Based Testing. Let’s embrace the absurd world of generating random stuff!

• functional-programming

Experimenting with QuickCheck on a DSL

After having spent the last three posts exploring how to implement our own QuickCheck, the goal of the next two posts will be to play with it, to test and di...

• functional-programming

Code your own Quick Check (Shrink)

In the previous posts, we started to implement our own QuickCheck in Haskell, which we named RapidCheck, based on the original publication on QuickCheck.

• functional-programming

Code your own Quick Check (Higher Order Functions)

In the previous post, we started to build our own QuickCheck implementation in Haskell, which we named RapidCheck. We went over the basic concepts needed to ...

• functional-programming

Code your own Quick Check

In the next posts, we will go through a small implementation challenge. The goal will be to implement our own limited version of QuickCheck, the famous gener...

• functional-programming

Catamorph your DSL (C++ Port)

In the previous posts, we went over the process of building a DSL for arithmetic operations and we introduced the concept of Catamorphism as a way to decoupl...

• functional-programming

Catamorph your DSL (Clojure)

In the previous three posts, we went over the process of building a DSL for arithmetic operations and we introduced the concept of Catamorphism as a way to d...

• functional-programming

Catamorph your DSL (Trade-offs)

This post is a third of the series of post dedicated to notion of Catamorphisms and its application to build Domain Specific Languages (DSLs).

• functional-programming

Catamorph your DSL (Deep Dive)

This post is a second of the series of post dedicated to notion of Catamorphisms and its application to build Domain Specific Languages (DSLs).

• functional-programming

Catamorph your DSL (Introduction)

I recently had the pleasure to go to a Haskell workshop on Domain Specific Languages (DSL). The goal was to teach us the basics on how to build a DSL.

• functional-programming

Back to Top ↑

2016

Meetup Report: Better tests Kata night

How to design better tests? How to code using Test Driven Development? My takeways of a very instructive meetup with Romeu Moura.

• software-design

Accumulating merge sort (C++)

Implementing a merge sort in terms of a std::accumulate (left to right scan) is possible. Here is how to merge sort using only ForwardIterators.

• modern-cpp

Folding merge sort (Haskell)

Implementing a merge sort in terms of a fold (left to right scan) is possible. Here is how in Haskell.

• functional-programming

Meetup Report: The philosophy of FP

My meetup report on a talk by Arnaud Lemaire introducing the philosophy behind functional programming.

• functional-programming

Open Recursion (Performance)

In the two previous posts, we used open recursion to provide efficient solutions to dynamic programming problems, keeping the following aspects decoupled:

• functional-programming

Open Recursion (C++)

In the previous post, we explored how we could leverage open recursion to solve a dynamic programming problem, while keeping the following aspect decoupled:

• functional-programming

Open Recursion (Haskell)

There is a large class of problems that we can solve by nice mathematical recurrence relations.

• functional-programming

Back to Top ↑