Publications by Econometrics and Free Software
How to deal with annoying medium sized data inside a Shiny app
This blog post is taken from a chapter of my ebook on building reproducible analytical pipelines, which you can read here If you want to follow along, you can start by downloading the data I use here. This is a smaller dataset made from the one you can get here. Uncompressed it’ll be a 2.4GB file. Not big data in any sense, but big enough to be...
7580 sym R (4397 sym/8 pcs) 2 img
R, its license and my take on it
Foreword: This is not a tutorial nor anything like that. I’m going to talk about free software, open source, and their licenses. I’m going to give my (non-)expert opinion on it. You may find, after having finished reading this post, that I wasted your time. So only read if by some miracle the first sentence of the foreword excited you. If not...
5989 sym 6 img
Functional programming explains why containerization is needed for reproducibility
I’ve had some discussions online and in the real world about this blog post and I’d like to restate why containerization is needed for reproducibility, and do so from the lens of functional programming. When setting up a pipeline, wether you’re a functional programming enthusiast or not, you’re aiming at setting it up in a way that this p...
6155 sym Python (2308 sym/14 pcs) 4 img
Code longevity of the R programming language
I’ve been working on a way to evaluate how old R code runs on the current version of R, and am now ready to share some results. It all started with this tweet: The problem is that you have to find old code laying around. Some people have found old code they wrote a decade or more ago and tried to rerun it; there’s this blog post by Thomas Lu...
8959 sym R (2336 sym/6 pcs) 10 img
Open source is a hard requirement for reproducibility
Open source is a hard requirement for reproducibility. No ifs nor buts. And I’m not only talking about the code you typed for your research paper/report/analysis. I’m talking about the whole ecosystem that you used to type your code. (I won’t be talking about making the data available, because I think this is another blog post on its own.) ...
4781 sym R (82 sym/1 pcs) 4 img
Reproducibility with Docker and Github Actions for the average R enjoyer
This blog post is a summary of Chapters 9 and 10 of this ebook I wrote for a course The goal is the following: we want to write a pipeline that produces some plots. We want the code to be executed inside a Docker container for reproducibility, and we want this container to get executed on Github Actions. Github Actions is a Continuous Integration...
13582 sym R (8238 sym/23 pcs) 4 img
Why and how to use JS in your Shiny app
The snake biting its own tail Disclaimer: I’m a beginner at JS, so don’t ask me about the many intricacies of JS. I’ve been working on a Shiny app for work these past few weeks, and had to use Javascript to solve a very specific issue I encountered. Something for which, as far as I know, there is no other solution than using Javascript. The...
7085 sym R (6012 sym/5 pcs) 4 img
The {chronicler} package, an implementation of the logger monad in R
Back in February I discussed a package I was working on which allowed users to add logging to function calls. I named the package {loudly} but decided to rename it to {chronicler}. I have been working on it for the past few weeks, and I think that a CRAN release could happen soon. Introduction So what does {chronicler} do? {chronicler} allows yo...
3915 sym R (7284 sym/15 pcs) 4 img
Why you should(n’t) care about Monads if you’re an R programmer
Introduction: functions To understand Monads, I think it’s useful to first think about functions; why do we use functions? Why don’t we simply write scripts with the required operations one after the other? For instance, to compute the average height by species in a data set of individuals from the famous space opera “Star Wars”, we could...
13280 sym R (10230 sym/20 pcs) 4 img
Self-documenting {ggplot}s thanks to the power of monads!
Hey kid, fancy some self-documenting {ggplots} like this one: Just read on! I’ve been working hard on a package that I’ve called {chronicler} (read my post on it here) which allows you to attach a log to the objects you create, thus making it easy to know how some data (for example) has been created. Here’s a quick example and intro to the...
3673 sym R (3178 sym/15 pcs) 12 img