
## 2026

- [What happens if we represent unix time as floats?](/posts/2026-01-16-float-time/){data-tags="code math time"}

## 2025

- [How to Sandbox a Terminal](/posts/2025-10-11-terminal-sandbox/){data-tags="linux security"}
- [Privileged Wayland Clients](/posts/2025-10-03-wayland-security/){data-tags="wayland security"}
- [What is HDR, really?](/posts/2025-07-18-hdr/){data-tags="color"}
- [Notes on Loudness Normalization](/posts/2025-06-23-loudness/){data-tags="audio linux"}
- [Should Proof-of-Work be standardized for HTTP?](/posts/2025-05-24-anubis/){data-tags="code"}
- [Finding the ideal tax curve](/posts/2025-05-16-tax-curves/){data-tags="economics math"}
- [Some thoughts on TOML](/posts/2025-04-27-toml/){data-tags="code"}
- [I don't really like OIDC](/posts/2025-01-07-oidc/){data-tags="code security"}

## 2024

- [You are not the only place](/posts/2024-10-03-not-the-only-place/){data-tags="design"}
- [Keeping the clipboard alive](/posts/2024-09-04-clipboard/){data-tags="design wayland"}
- [How to do arithmetic with dates and times](/posts/2024-08-30-datetime/){data-tags="code time"}
- [The plan to support per-app passwords on the linux desktop](/posts/2024-07-27-password-plan/){data-tags="code linux security"}
- [Tier list of Linux security mechanisms](/posts/2024-06-23-linux-security-mechanisms/){data-tags="code linux security"}
- [What is the best approach for margins in body text?](/posts/2024-04-24-margin-collapsing/){data-tags="css"}
- [Beyond GDPR](/posts/2024-03-22-beyond-gdpr/){data-tags="privacy"}
- [Fluid typography in 2024](/posts/2024-03-15-fluid-typography/){data-tags="design css"}
- [7 boring thoughts on AI](/posts/2024-02-04-7-thoughts-on-ai/){data-tags="code philosophy"}

## 2023

- [Denial of Service using Content Security Policies in Firefox](/posts/2023-12-06-csp-dos/){data-tags="code security"}
- [Python packaging with pyproject.toml and setuptools](/posts/2023-11-04-python-packaging/){data-tags="code python"}
- [JMAP for Calendars is awesome](/posts/2023-10-29-jmap-calendars/){data-tags="code"}
- [Another look at python's logging library](/posts/2023-10-13-logging/){data-tags="code python"}
- [On WebAuthn, MFA, and local SSO](/posts/2023-09-28-mfa/){data-tags="security code"}
- [Arabic Typography](/posts/2023-08-07-arabic-typography/){data-tags="design"}
- [Why crime stories are the purest form of story telling](/posts/2023-07-19-crime-storytelling/){data-tags="storytelling"}
- [How to TUI](/posts/2023-03-30-tui/){data-tags="code linux"}
- [It's time to say goodbye to width and height in CSS](/posts/2023-02-26-flow-relative-layout/){data-tags="code css a11y"}
- [Eight different ways to implement an asyncronous loop in python](/posts/2023-01-29-python-async-loops/){data-tags="code python linux"}
- [State of wayland in 2022](/posts/2023-01-15-state-of-wayland/){data-tags="linux wayland"}

## 2022

- [I use 5 different window managers stacked on top of each other](/posts/2022-12-03-my-window-manager-setup/){data-tags="linux design wayland"}
- [Debunking claims about contrast formulas](/posts/2022-09-10-contrast-algorithms/){data-tags="a11y math color"}
- [Basic income is not about redistribution of money](/posts/2022-08-06-basic-income/){data-tags="politics economics"}
- [Difficult Problems and Hard Work](/posts/2022-06-25-hard-work/){data-tags="code design"}
- [I tried to write about minimal linux desktops, but it failed](/posts/2022-02-20-minimalism/){data-tags="philosophy code"}

## 2021

- [Linux service architecture](/posts/2021-08-20-linux-service-architecture/){data-tags="code linux security"}
- [Do electric ducks talk about web development?](/posts/2021-07-04-electric-ducks/){data-tags="code philosophy discussion"}
- [Finally: native datepickers are here!](/posts/2021-04-28-native-date-pickers/){data-tags="code html js"}
- [Zero cost optimizations](/posts/2021-04-03-zero-cost-optimizations/){data-tags=""}

## 2020

- [Writing a wayland window manager in 2020](/posts/2020-12-28-wayland-wm/){data-tags="code linux wayland"}
- [Understanding files 101](/posts/2020-11-21-file-type-101/){data-tags="code"}
- [How I keep track of my notes](/posts/2020-11-07-notes/){data-tags=""}
- [My reaction to Thunderbird 78](/posts/2020-10-10-thunderbird/){data-tags="code design"}
- [The good guys are always conservative](/posts/2020-07-30-conservative-stories/){data-tags="philosophy storytelling"}
- [Case study of button states](/posts/2020-05-18-button-states/){data-tags="code html design"}
- [Yet another etherpad clone](/posts/2020-05-16-pad/){data-tags="code"}
- [Not all open source projects are alike](/posts/2020-01-20-open-source/){data-tags="code open-source"}

## 2019

- [How (not) to build terminal color schemes](/posts/2019-06-24-terminal-colors/){data-tags="code linux a11y design color"}
- [How to create a debian package from scratch](/posts/2019-05-02-debian-packages/){data-tags="code linux"}
- [Why so visual?](/posts/2019-01-13-visual/){data-tags="design a11y"}

## 2018

- [How really to improve the internet's energy footprint](/posts/2018-12-07-internet-energy-footprint/){data-tags="code"}
- [5 things I learned about WAI-ARIA (while implementing it myself)](/posts/2018-10-28-aria-quirks/){data-tags="code html a11y"}
- [Legitimacy](/posts/2018-10-07-legitimacy/){data-tags="philosophy discussion"}
- [Combining git navigation commands](/posts/2018-09-01-git-nav/){data-tags="code"}
- [Why PC is not quite the end of democracy](/posts/2018-06-21-pc-democracy/){data-tags="philosophy discussion"}
- [Review of "Zen and the Art of Motorcycle Maintenance"](/posts/2018-05-28-zen/){data-tags="philosophy code review"}
- [Accessible pull quotes](/posts/2018-03-25-pullquotes/){data-tags="code html a11y"}
- [Effective decisions with consensus](/posts/2018-01-14-consensus-meetings/){data-tags="discussion"}

## 2017

- [A proposal for accessible icons on the web](/posts/2017-12-30-icons/){data-tags="code html a11y"}
- [CSS versus personalization](/posts/2017-12-18-personalization/){data-tags="code css a11y"}
- [Please stop talking about exponential growth](/posts/2017-11-20-exponential/){data-tags="philosophy math"}
- [What is programming?](/posts/2017-11-05-TDD/){data-tags="code philosophy"}
- [Debates on Science in Recent Centuries](/posts/2017-09-04-rationality/){data-tags="philosophy discussion"}
- [Towards simple language on the web](/posts/2017-06-26-simple-language/){data-tags="a11y"}
- [Pair up!](/posts/2017-04-21-math-pairs/){data-tags="math"}
- [Ghost in the shell review](/posts/2017-04-18-ghost-in-the-shell-review/){data-tags="philosophy review"}
- [Embedding](/posts/2017-03-16-embedding/){data-tags="code design"}

## 2016

- [The web is not a visual medium](/posts/2016-12-22-web-is-not-visual/){data-tags="html css design"}
- [What is design?](/posts/2016-12-21-what-is-design/){data-tags="design"}
- [Automatically creating RTL CSS](/posts/2016-06-04-rtl-css/){data-tags="code css a11y"}
- [Color contrast in web design](/posts/2016-03-05-color-contrast/){data-tags="code css a11y design math color"}

## 2015

- [Resize partitions on an encrypted disc](/posts/2015-03-20-resize-partition-on-crypted-disk/){data-tags="code linux"}

## 2014

- [Patch Theory](/posts/2014-09-09-patch-theory/){data-tags="math code"}
- [Two interpretations of discussions without results](/posts/2014-04-19-discussions-without-results/){data-tags="discussion"}

<script src="/static/blogsearch.js" type="module"></script>
