This is one of those installation odysseys.

Recent versions of SQLite have support for features like RETURNING clauses and ALTER TABLE DROP COLUMN. I wanted to use them from a Haskell program, on Windows.

For example, for this trivial schema:

f1 INTEGER not null primary key…

Many Haskell language extensions have the pleasant property that they merely enable new features of the language, without their presence ever invalidating previously existing code.

For example MultiParamTypeClasses. You can slap it to any .hs file and the file will compile and work exactly as before.

A newer extension that…

Note to future readers: at the moment of writing this post, a new, faster version of Vimscript is in the works. This post is about the older pre-Vim9 version.

Did you know Vimscript supports closures? It does, see :h func-closure for the details. For example:

function Func1(x)…

Back in 2017, Juan Pedro Villa Isaza wrote an interesting post called Minimal Cabal Files. How time flies! We are now in 2020 and cabal-install has reached version 3.0. What has changed in the field of Cabal minimalism?

Let’s take a look:

cabal-version: 3.0
name: foo
executable foo…

Nothing groundbreaking or revelatory here, I’m just writing this to better remember some of these bash tricks. You can look at the original documentation here.

Suppose you ls a folder, you like what you see there, and decide to cd into it:

ls /tmp/
cd /tmp/

You had to type…

Prompted by this post, I decided to learn the rudiments of the Nix package manager. The problem is that I’m on a Windows machine, and Nix is mainly for Linux and macOS .

So I turned to Docker, more precisely to the nixos/nix image:

PS> docker pull nixos/nix
PS> docker run…

I plan to go through the CS410 2017 Agda course. This is how I installed Agda on my Windows machine.

I decided to go through the “use Cabal to compile the Agda package from Hackage” route.


The Go language has a nice feature: when declaring a struct, you can assign metadata to each field. That metadata is later avaliable using reflection, and for example it can be used to determine the field’s external name when serializing to JSON .

In Haskell, aeson is by far the…

This is my current .ideavimrc.

Shortcut conflicts

IntelliJ IDEA shortcuts and Vim shortcuts conflict in some places. I prefer to keep the IDEA shortcuts most of the time, except for the following:

  • Ctrl-[ It’s “Move Caret to Code Block Start” in IDEA, but too valuable as an Esc key alternative in Vim.

I’m writing this to help me sort out the different ways of handling properties in Spring.

Using a PropertiesFactoryBean

This is perhaps the simplest way. You can declare a bean of this type using the bean configuration element or the more convenient util:properties element, and then inject it as a Properties object.


Daniel Díaz Carrete

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store