To raise or not to raise exceptions, and the art of designing return values

Each time we call a function that's meant to perform some operation that could succeed or fail we are always left with the same dilemma. What should be the return value? Should I return nil if a failure happened? Or I should throw an exception? What does failure means anyway? Like every interesting question, the answer is […]

Dockerized Rails Capybara tests on top of Selenium

If you use Docker to deploy your Rails application you may want to use the same infrastructure to run your tests. However the setup of your Selenium browser tests is far from obvious with Rails and Docker and may generate some confusion . The short answer is available in this repository on Github. For the long answer keep reading this blog post […]

Create isolated Jupyter ipython kernels with pyenv and virtualenv

Everyone loves isolation. Makes our life easier and our systems much more robust. Isolating Jupyter notebooks makes no exception. Maybe you want to try some cutting edge scientific library, or more simply your latest project dependencies are not compatible with your current system setup. Whatever is your situation, follow me in this simple tutorial on how to […]

A/B Testing, from scratch

If you work in a diligent web development business you probably know what an A/B test is. However, its fascinating statistical theory is usually left behind. Understanding the basics can help you avoid common pitfalls, better design your experiments, and ultimately do a better job in improving the effectiveness of your website. Please hold tight, and enjoy a pleasant […]

Cross Validation done wrong

Cross validation is an essential tool in statistical learning to estimate the accuracy of your algorithm. Despite its great power it also exposes some fundamental risk when done wrong which may terribly bias your accuracy estimate. In this blog post I'll demonstrate - using the Python scikit-learn framework - how to avoid the biggest and […]