DuckDB workshop

Setup DuckDB installation site duckman: DuckDB Version Manager railway.ipynb Jupyter notebook Weather data set Source: Visual Crossing Weather wget https://blobs.duckdb.org/data/amsterdam-weather.csv Railway data set Source: Rijden de Treinen wget https://blobs.duckdb.org/nl-railway/stations-2022-01.csv wget https://blobs.duckdb.org/nl-railway/tariff-distances-2022-01.csv wget https://blobs.duckdb.org/nl-railway/services-2019.csv.gz wget https://blobs.duckdb.org/nl-railway/services-2020.csv.gz wget https://blobs.duckdb.org/nl-railway/services-2021.csv.gz wget https://blobs.duckdb.org/nl-railway/services-2022.csv.gz wget https://blobs.duckdb.org/nl-railway/services-2023.csv.gz wget https://blobs.duckdb.org/nl-railway/services-2024-01.csv.gz wget https://blobs.duckdb.org/nl-railway/services-2024-02.csv.gz wget https://blobs.duckdb.org/nl-railway/services-2024-03.csv.gz wget https://blobs.duckdb.org/nl-railway/services-2024-04.csv.gz VS Code hotkey Define keyboard shortcut Ctrl + Enter for executing selection in terminal To use the same editor (VS Code) and the same keyboard shortcut (Ctrl + Enter) to run the active line / selected piece of code (for CLI) or the active cell (for Python notebooks), add the CLI hotkey as follows:...

June 9, 2024

Using the Aztec Code on an iPhone to enter the gates at Dutch train stations

TL;DR: To prevent your iPhone from switching to Apple Pay at train station gates when scanning your ticket’s code, use Guided Access mode. This can be turned on in the accessibility settings and activated by triple-clicking the side button of your phone. Recently, when travelling to FOSDEM from Amsterdam to Brussels via railway, I ran into the following problem. The Aztec Code for my train was saved on my iPhone. When I pulled out the phone to scan it at the entrance gates of Amsterdam Centraal, my phone kept opening the wallet for Apple Pay, making the Aztec Code no longer visible....

February 5, 2024

Publications at VLDB 2023

I co-authored the following papers, to be presented at VLDB 2023 and its satellite events. These papers capture the work on the new and updated benchmarks of the Linked Data Benchmark Council (LDBC), as well as LDBC’s organizational restructuring. Additionally, an initial DuckDB-based prototype of the SQL/PGQ language extension was accepted at the demo track. VLDB 2023 main track – G. Szárnyas et al.: The LDBC Social Network Benchmark: Business Intelligence workload [slide deck] TPCTC 2023 – G....

July 18, 2023

Working without sudo

I spent many years working in academia, where the typical development environment was an on-premises Linux cluster where I was given a user without sudo rights. In the absence of root access, the recommended way to install packages was to ask the system administrators to do so. However, this process can introduce considerable delays, so I was keen to look for alternative solutions. Version managers For installing programming language-related tooling, it’s recommended to use version managers (also known as “version multiplexers”)....

June 27, 2023

E-bike rental options in Amsterdam

Recently, I had a few family members visiting me in Amsterdam and I wanted to show them around the Dutch countryside. To give us a larger radius – and put towns like Marken, Zaandam, and Naarden comfortably within reach – I decided to rent e-bikes. In this post, I document my findings about the available options and the bikes I rented. Note that my lessons learnt are valid as of summer 2022 and are likely to change in the future....

August 20, 2022

Self-joins

Introduction A self-join is a relational join operation which joins a table to itself, typically based on equivalence predicates. For example, given the table \(\mathsf{knows}(\mathsf{person1\_id}, \mathsf{person2\_id})\), representing a social graph where people know each other, and aliases of this table \(\mathsf{knows1}, \mathsf{knows2}, \ldots\), take the following query: SELECT knows1.person1_id AS pA, knows1.person2_id AS pB, knows2.person2_id AS pC FROM knows knows1 JOIN knows knows2 ON knows2.person1_id = knows1.person2_id; The query specifies a self-join on the \(\mathsf{knows}\) table, \(\mathsf{knows1} \bowtie \mathsf{knows2}\), and produces two-hop paths in the social graph....

January 29, 2022

Graph query languages

The maze of graph query languages can be difficult as there are a number of similarly named languages with subtle differences. This document contains a very brief description of popular graph query languages. Languages Property graphs A number of languages exist for defining graph queries over property graphs. Here’s a list of 10 popular languages: Cypher: The declarative graph query language used by the Neo4j graph database. Cypher popularized the ASCII art syntax for defining graph patterns....

January 19, 2021