The game Wordle exploded in popularity recently, to the point that it was bought by the New York Times because of its popularity. But why is Wordle such a resounding success? I will take a swing at an explanation in this post. Simple rules with a clever twist Wordle is a modified variant of the board game Mastermind . In Mastermind, in which one player constructs a code word consisting of four…
This piece is a bit of a rant and a bit of advice. If you are not in the mood to read this, there is a TL;DR at the bottom. If you had told me last year that I’d write not one, but two blog posts about web design, I would not have believed you. Alas here we are, and I’m going to tell you about another pet peeve of mine and how to fix it. I view at least half the written content I…
When developing tools that interface with users in a visual sense, I believe it is important to cater to the users’ wants (and needs) as much as possible, whilst retaining a recognizable product identity. Probably the brightest decision in this regard is the background color: light or dark? Specifically regarding webpages, a variety of solutions have been developed: JavaScript triggers,…
I have spent quite some time with configuration management for my home infra setup, and I have recently come across a new tool that I’m excited to share with you. It’s called Bundlewrap , and it is a flexible, small-scale 1 configuration management solution. Bundlewrap is written in Python 3 2 , and is unique in the sense that the infrastructure configuration is also written in Python.…
Gödel, Escher, Bach takes the reader on a journey through mind, music, machines and self-reference. In the first few chapters, Hofstadter introduces a formal system called the MIU-system. The MIU-system consists of four simple rules for manipulating strings consisting of the characters M , I and U . xI -> xIU , where x matches the rest of the string Mx -> Mxx , where x matches the rest of the…
This article was written as part of the Advent of Haskell 2020 , be sure to check it out for other cool Haskell content! A trick-taking game is a genre of (primarily) card games. Play revolves around rounds, in which each player plays exactly one card. The player who played the highest card wins the round, or trick . On the surface these games seem to possess imperative core, processing…
Building a wireless antenna is not hard. While the underlying physics and protocols are relatively complex, an antenna’s job is very simple: it captures or creates electromagnetic waves. We built a basic parabolic receiving antenna using a 3D printer and a female-female N-connector , available in any well-stocked electronic parts store. There exist a multitude of different antenna designs,…
Last semester I took a course on online and approximation algorithms, and I want to present some really neat proofs related to the online knapsack problem. The course was taught by Hans-Joachim Bökenhauer and Dennis Komm, wo incidentally also first discovered the results I will present below. All results mentioned (and more) can be found in the original paper . An online algorithm is given some…
During a recent dinner discussion I was presented with a beautiful proof to the following problem: Given an arbitrary graph $G = (V, E)$, and an ordering $\Phi$ of $E$, what is the longest monotone trail in $G$ that is guaranteed to exist? A trail in a graph is a sequence of edges such that adjacent edges share an incident vertex and no edge is traversed twice Take a few moments to think about…
Base64-encoding is ubiquitous in our modern world. Many programs communicate in base64-encoded messages, since these have nice properties: They consist of a very limited subset of ASCII characters, and can thus be displayed as text. E-Mails for example are commonly encoded in base64 in transfer, which can be seen in the Content-Transfer-Encoding header. Where I volunteer we have a tradition of…
Many interesting problems in computer science are expressible as problems on graphs: Finding the shortest path between two vertices, calculating a spanning tree, finding a large independent set, etc. Often in Theoretical Computer Science we only look for a theoretical solution - once we know how to model a specific problem as graph we give an algorithm in pseudocode and leave it at that. We will…