• posts projects
    • 09 September, 2026
    • 7 minutes
    • database
    • facts
    • RDF
    • datalog
    • fact-oriented
    Fact-oriented databases

    Databases have a long history in computer science, from the early days of relational algebra and SQL to more recent "NoSQL" incarnations such as document stores and graph databases. One family often left out of this story includes RDF databases and their more academic cousin, Datalog. The idea behind Datalog is simple yet allows for great flexibility when modeling data, especially compared to relational databases.

    Storing facts

    The idea behind Datalog is simple: we store facts about the world. A fact consists of an entity, an attribute and a value. This closely corresponds to the subject-predicate-object triples of the Resource Description Framework (RDF), which explains why these systems are often called triplestores. For example, if we want to model repositories in a Git forge like GitHub, we might store facts like this:

    • 02 April, 2023
    • 20 minutes
    • array
    • BQN
    • functional
    • iversonian
    Big Questions Notation

    Last year while doing advent of code I came across the APL programming language. I had always been interested in exploring array programming, but the highly imperative nature of tools like NumPy, R, Julia and Matlab turned me off. Luckily APL has the best of both worlds as a functional array programming language with first class support both for functions and multi-dimensional arrays. More recently I've been playing around with BQN, a modern variant of APL, which is what I'll be exploring today.

    • 21 July, 2020
    • 30 minutes
    • dependent-types
    • Idris
    A taste of dependent types with Idris

    Static type systems are ubiquitous in programming languages. Many of the most popular languages like C and Java have static type systems. Static types give the programmer some level of guarantee that their program won't contain runtime errors by checking types at compile time. However, the level of safety guaranteed by the type system varies widely on the implementation and there are certainly plenty of type systems that are more expressive and powerful than the ones found in mainstream languages. Today we will be looking at one such group of type systems which support dependent types.

    • 07 July, 2020
    • 5 minutes
    • nix
    • declarative
    • package-managment
    • functional
    Why Nix?

    I'm often asked questions such as "What's the point of Nix?", "Why would I ever use this?" and "Isn't it just yet another package manager?". So in this post I'll try to answer these questions and hopefully demystify what Nix is all about.