Ayke van Laëthem

Concise version vectors

Concise version vectors is the algorithm behind DTSync. It is a distributed algorithm with low memory complexity, with barely any overhead of adding another replica.

DTSync: bidirectional directory synchronisation between any number of replicas

A new bidirectional synchronization tool like Unison that can synchronize many distributed replicas

Putting a Raspberry Pi 1 SD card into a Pi 3

How to move an installed SD card from a Pi 1 to a Pi 3, or make it possible to use them both. There are a few tricks to get the network running on both devices.

Installing Debian on a Btrfs subvolume

How to install Debian on a Btrfs subvolume to easily make system snapshots.

Safely Embedding JSON in JavaScript

How do you embed JSON in JavaScript? The naive approach turns out to have a XSS and DoS vulnerability, but this is easily fixed with a simple filter.

Setting up HTTPS on nginx from start to finish

Turn a plain HTTP web site served with nginx into one with HTTPS and SPDY support. Includes StartSSL, Postfix and OCSP stapling.

South: stateless authenticated sessions for HTTP in Go

I have written a Go package for stateless authentication using HMAC. I believe this system is in practice just as secure as session IDs without having to store state on the server, making authentication a whole lot easier.

NearlyFreeSpeech.NET: the perfect small webhost

NearlyFreeSpeech.NET is a small webhost with a 'pay what you use' system, which makes it perfect for small and/or experimental websites.

:link and :visited are mutually exclusive

I discovered that the CSS pseudo-classes :link and :visited are mutually exclusive. This in contrast to what may seem more logical, that is, that :link applies to all links.

Fix 'jumping scrollbar' issue using only CSS

I discovered a technique to prevent page jumping when navigating between short and long pages without showing the scroll bar all the time.