diff --git a/randogoth.com/content/immanentisierung-des-eschatons.md b/randogoth.com/content/20080523_immanentisierung-des-eschatons.md
similarity index 100%
rename from randogoth.com/content/immanentisierung-des-eschatons.md
rename to randogoth.com/content/20080523_immanentisierung-des-eschatons.md
diff --git a/randogoth.com/content/city-17-street-art.md b/randogoth.com/content/20080816_city-17-street-art.md
similarity index 100%
rename from randogoth.com/content/city-17-street-art.md
rename to randogoth.com/content/20080816_city-17-street-art.md
diff --git a/randogoth.com/content/bioshock.md b/randogoth.com/content/20080830_bioshock.md
similarity index 100%
rename from randogoth.com/content/bioshock.md
rename to randogoth.com/content/20080830_bioshock.md
diff --git a/randogoth.com/content/faderflux.md b/randogoth.com/content/20080901_faderflux.md
similarity index 100%
rename from randogoth.com/content/faderflux.md
rename to randogoth.com/content/20080901_faderflux.md
diff --git a/randogoth.com/content/fallout-3.md b/randogoth.com/content/20081227_fallout-3.md
similarity index 100%
rename from randogoth.com/content/fallout-3.md
rename to randogoth.com/content/20081227_fallout-3.md
diff --git a/randogoth.com/content/radioactive-dreams.md b/randogoth.com/content/20090103_radioactive-dreams.md
similarity index 100%
rename from randogoth.com/content/radioactive-dreams.md
rename to randogoth.com/content/20090103_radioactive-dreams.md
diff --git a/randogoth.com/content/logans-run.md b/randogoth.com/content/20090105_logans-run.md
similarity index 100%
rename from randogoth.com/content/logans-run.md
rename to randogoth.com/content/20090105_logans-run.md
diff --git a/randogoth.com/content/cranky-frames-per-second-mayhem.md b/randogoth.com/content/20090707_cranky-frames-per-second-mayhem.md
similarity index 100%
rename from randogoth.com/content/cranky-frames-per-second-mayhem.md
rename to randogoth.com/content/20090707_cranky-frames-per-second-mayhem.md
diff --git a/randogoth.com/content/9nov.md b/randogoth.com/content/20091011_9nov.md
similarity index 100%
rename from randogoth.com/content/9nov.md
rename to randogoth.com/content/20091011_9nov.md
diff --git a/randogoth.com/content/system-bomb-stickers.md b/randogoth.com/content/20091101_system-bomb-stickers.md
similarity index 100%
rename from randogoth.com/content/system-bomb-stickers.md
rename to randogoth.com/content/20091101_system-bomb-stickers.md
diff --git a/randogoth.com/content/long-live-the-hero.md b/randogoth.com/content/20110704_long-live-the-hero.md
similarity index 100%
rename from randogoth.com/content/long-live-the-hero.md
rename to randogoth.com/content/20110704_long-live-the-hero.md
diff --git a/randogoth.com/content/beneath-the-747.md b/randogoth.com/content/20121228_beneath-the-747.md
similarity index 100%
rename from randogoth.com/content/beneath-the-747.md
rename to randogoth.com/content/20121228_beneath-the-747.md
diff --git a/randogoth.com/content/back-beyond-green-rolling-hills.md b/randogoth.com/content/20130630_back-beyond-green-rolling-hills.md
similarity index 100%
rename from randogoth.com/content/back-beyond-green-rolling-hills.md
rename to randogoth.com/content/20130630_back-beyond-green-rolling-hills.md
diff --git a/randogoth.com/content/mutantenkino.md b/randogoth.com/content/20160907_mutantenkino.md
similarity index 100%
rename from randogoth.com/content/mutantenkino.md
rename to randogoth.com/content/20160907_mutantenkino.md
diff --git a/randogoth.com/content/occulture.md b/randogoth.com/content/20191031_occulture.md
similarity index 100%
rename from randogoth.com/content/occulture.md
rename to randogoth.com/content/20191031_occulture.md
diff --git a/randogoth.com/content/psithemius.md b/randogoth.com/content/20200716_psithemius.md
similarity index 100%
rename from randogoth.com/content/psithemius.md
rename to randogoth.com/content/20200716_psithemius.md
diff --git a/randogoth.com/content/randonaut.md b/randogoth.com/content/20200801_randonaut.md
similarity index 100%
rename from randogoth.com/content/randonaut.md
rename to randogoth.com/content/20200801_randonaut.md
diff --git a/randogoth.com/content/sensor-watch.md b/randogoth.com/content/20230331_sensor-watch.md
similarity index 100%
rename from randogoth.com/content/sensor-watch.md
rename to randogoth.com/content/20230331_sensor-watch.md
diff --git a/randogoth.com/content/placeness.md b/randogoth.com/content/20230415_placeness.md
similarity index 100%
rename from randogoth.com/content/placeness.md
rename to randogoth.com/content/20230415_placeness.md
diff --git a/randogoth.com/content/dostalgia.md b/randogoth.com/content/20230427_dostalgia.md
similarity index 100%
rename from randogoth.com/content/dostalgia.md
rename to randogoth.com/content/20230427_dostalgia.md
diff --git a/randogoth.com/content/reticulum.md b/randogoth.com/content/20230528_reticulum.md
similarity index 96%
rename from randogoth.com/content/reticulum.md
rename to randogoth.com/content/20230528_reticulum.md
index fae059c..8aa29da 100644
--- a/randogoth.com/content/reticulum.md
+++ b/randogoth.com/content/20230528_reticulum.md
@@ -18,7 +18,7 @@ For the Reticulum Netork's [LXMF](https://unsigned.io/website/lxmf/) protocol I
The most popular service that runs on Reticulum is the low bandwidth [Nomad Network](https://unsigned.io/website/nomadnet/) reminiscent of 1990s BBS systems. I built [micron-blog](https://code.randogoth.com/randogoth/micron-blog), a plugin for the Python based static website generator Pelican to generate Micron markup formatted files that are the building blocks of a Nomad Network node.
-[md2mu](https://github.com/randogoth/md2mu), the core of this plugin later evolved into a standalone CLI called [md2txt]({filename}md2txt.md) that can convert Markdown also into other arcane text formats.
+[md2mu](https://github.com/randogoth/md2mu), the core of this plugin later evolved into a standalone CLI called [md2txt]({filename}20251020_md2txt.md) that can convert Markdown also into other arcane text formats.

diff --git a/randogoth.com/content/voidcat.md b/randogoth.com/content/20240410_voidcat.md
similarity index 72%
rename from randogoth.com/content/voidcat.md
rename to randogoth.com/content/20240410_voidcat.md
index a5c8a41..2cdbb5d 100644
--- a/randogoth.com/content/voidcat.md
+++ b/randogoth.com/content/20240410_voidcat.md
@@ -4,13 +4,13 @@ Category: RANDOM
Slug: voidcat
Summary: A new Rust-based spatial anomaly detection algorithm for Randonautica with open-sourced core geometric analysis components.
-The underlying algorithm for [Randonautica]({filename}randonaut.md)'s anomaly coordinate search is a proprietary library by the *Fatum Project* written in C++ called *libAttract*. It does its job but has its limitations and quirks.
+The underlying algorithm for [Randonautica]({filename}20200801_randonaut.md)'s anomaly coordinate search is a proprietary library by the *Fatum Project* written in C++ called *libAttract*. It does its job but has its limitations and quirks.
Based on the same mathematical and statistical principles as *libAttract* I engineered a novel algorithm in the fast, robust and modern Rust programming language. Inspired by the memetic recurrence of cats in void areas of Randonaut trips I called it *VOIDCAT*, short for *Void Objects Identification in Delaunay Complexes with Attractor Tracking*.
To implement the Attractor and Void anomaly search I focused on geometric spatial analysis algorithms, particularly utilizing a technique called Delaunay triangulation. The algorithms utilized are primarily the *DELFIN* algorithm developed in the field of astronomy to map void areas in space and the efficient graph-based spatial clustering algorithm *DTSCAN* that looks at adjacencies of vertices in a triangulation graph to find clusters in multidimensional point distributions.
-While *VOIDCAT* itself remains proprietary and for [Randonautica]({filename}randonaut.md)'s exclusive use, I open sourced the Rust implementations of the underlying spatial analysis algorithms in a package called [Xenobalanus](https://code.randogoth.com/randogoth/xenobalanus)
+While *VOIDCAT* itself remains proprietary and for [Randonautica]({filename}20200801_randonaut.md)'s exclusive use, I open sourced the Rust implementations of the underlying spatial analysis algorithms in a package called [Xenobalanus](https://code.randogoth.com/randogoth/xenobalanus)
## Repository
diff --git a/randogoth.com/content/thinkpadX13.md b/randogoth.com/content/20240705_thinkpadX13.md
similarity index 100%
rename from randogoth.com/content/thinkpadX13.md
rename to randogoth.com/content/20240705_thinkpadX13.md
diff --git a/randogoth.com/content/ocelli.md b/randogoth.com/content/20250105_ocelli.md
similarity index 100%
rename from randogoth.com/content/ocelli.md
rename to randogoth.com/content/20250105_ocelli.md
diff --git a/randogoth.com/content/lyagushka.md b/randogoth.com/content/20250109_lyagushka.md
similarity index 100%
rename from randogoth.com/content/lyagushka.md
rename to randogoth.com/content/20250109_lyagushka.md
diff --git a/randogoth.com/content/onod3000.md b/randogoth.com/content/20250118_onod3000.md
similarity index 100%
rename from randogoth.com/content/onod3000.md
rename to randogoth.com/content/20250118_onod3000.md
diff --git a/randogoth.com/content/map3terms.md b/randogoth.com/content/20250202_map3terms.md
similarity index 72%
rename from randogoth.com/content/map3terms.md
rename to randogoth.com/content/20250202_map3terms.md
index f8d96c4..5bbf4dc 100644
--- a/randogoth.com/content/map3terms.md
+++ b/randogoth.com/content/20250202_map3terms.md
@@ -4,7 +4,7 @@ Category: PLACE
Slug: map3terms
Summary: Open-source Feistel-cipher–based three-word generator for geographic coordinates, ported from JavaScript to Dart.
-In its first inception as a Telegram chatbot in 2019 [Randonautica]({filename}randonaut.md) had implemented *What3Words* for each of the coordinates, a commercial service that assigns a three-word identifier to each 3m x 3m square on Earth. The reason for using their words was to provide randonauts with an extra layer of memetic information that might give rise to synchronicities. Indeed some explorers found correlations between some of the words and the location itself.
+In its first inception as a Telegram chatbot in 2019 [Randonautica]({filename}20200801_randonaut.md) had implemented *What3Words* for each of the coordinates, a commercial service that assigns a three-word identifier to each 3m x 3m square on Earth. The reason for using their words was to provide randonauts with an extra layer of memetic information that might give rise to synchronicities. Indeed some explorers found correlations between some of the words and the location itself.
The [problematic company behind the service](https://wiki.openstreetmap.org/wiki/What3words) has questionable marketing strategies, ridiculous price models, and aggressive intellectual property policies, so Randonautica did not want to continue using their service.
diff --git a/randogoth.com/content/dopecarpet.md b/randogoth.com/content/20250305_dopecarpet.md
similarity index 78%
rename from randogoth.com/content/dopecarpet.md
rename to randogoth.com/content/20250305_dopecarpet.md
index 4ac1f0c..781870b 100644
--- a/randogoth.com/content/dopecarpet.md
+++ b/randogoth.com/content/20250305_dopecarpet.md
@@ -4,7 +4,7 @@ Category: PLACE
Slug: dopecarpet
Summary: Geospatial metadata API to package OpenStreetMap data into geohash-based tiles and a Dart library to efficiently fetch, parse, and cache that spatial information.
-Working for [Randonautica]({filename}randonaut.md) I had the idea to develop an API to allow requesting geographic information about coordinates, like whether they are in or near water, within a nature reserve, residential area, or in a forest, or any other geocoded metadata.
+Working for [Randonautica]({filename}20200801_randonaut.md) I had the idea to develop an API to allow requesting geographic information about coordinates, like whether they are in or near water, within a nature reserve, residential area, or in a forest, or any other geocoded metadata.
Based on publicly available OpenStreetMap data I develpped [Dopecarpet](https://code.randogoth.com/randogoth/dopecarpet), a toolset to generate 4 digit GeoHash tile sized Parquet/GeoJSON/CBOR files from OSM PBF files. It comes with a custom tag filter and a minimal GET API to download the data in different formats.
diff --git a/randogoth.com/content/md2txt.md b/randogoth.com/content/20251020_md2txt.md
similarity index 55%
rename from randogoth.com/content/md2txt.md
rename to randogoth.com/content/20251020_md2txt.md
index b19b30a..70a63a3 100644
--- a/randogoth.com/content/md2txt.md
+++ b/randogoth.com/content/20251020_md2txt.md
@@ -6,7 +6,7 @@ Summary: Driven by my interest in retro, text-based systems, I built md2txt, a s
As you might have guessed already I am a fan of retro technology and text based operating systems.
-Expanding on my previous work on a converter from Markdown to Micron, the markup used by [NomadNet]({filename}reticulum.md), I created a standalone CLI called [md2txt](https://code.randogoth.com/randogoth/md2txt) that can also convert Markdown into other arcane text formats, like [Ancient Machine Book](https://web.archive.org/web/20231031005104/http://amb.osdn.io/) markup for DOS and also for the [Gemini Protocol](https://geminiprotocol.net/)'s *gemtext* format.
+Expanding on my previous work on a converter from Markdown to Micron, the markup used by [NomadNet]({filename}20230528_reticulum.md), I created a standalone CLI called [md2txt](https://code.randogoth.com/randogoth/md2txt) that can also convert Markdown into other arcane text formats, like [Ancient Machine Book](https://web.archive.org/web/20231031005104/http://amb.osdn.io/) markup for DOS and also for the [Gemini Protocol](https://geminiprotocol.net/)'s *gemtext* format.
## Repository
diff --git a/randogoth.com/content/zonetoast.md b/randogoth.com/content/20260608_zonetoast.md
similarity index 85%
rename from randogoth.com/content/zonetoast.md
rename to randogoth.com/content/20260608_zonetoast.md
index 13e8162..67ea4cc 100644
--- a/randogoth.com/content/zonetoast.md
+++ b/randogoth.com/content/20260608_zonetoast.md
@@ -4,7 +4,7 @@ Category: PLACE
Slug: zonetoast
Summary: A chronotopological memoir of half-remembered places, and what happens when you turn the question of placeness around to face backwards.
-In [On Placeness]({filename}placeness.md) I argued that our sense of place is not a contingent feature of human psychology but something closer to the structure that makes experience possible at all. I came to that through the dérive, through years of wandering unfamiliar cities with a camera and letting the place itself become the protagonist. What I did not consider at the time is that the same argument has to hold for places I am no longer standing in.
+In [On Placeness]({filename}20230415_placeness.md) I argued that our sense of place is not a contingent feature of human psychology but something closer to the structure that makes experience possible at all. I came to that through the dérive, through years of wandering unfamiliar cities with a camera and letting the place itself become the protagonist. What I did not consider at the time is that the same argument has to hold for places I am no longer standing in.
Memory does not store a sequence of events. It stores rooms, roads, beaches, the particular light of a particular afternoon, and the events arrive attached to them. When I try to recall a year of my life I do not get a year, I get a handful of locations with a mood on them. The chronology is reconstructed afterwards, and badly.
@@ -25,4 +25,4 @@ I have no plan for how long this goes on or where it ends up. The fragments are
## Links
* [zonetoast.com](https://zonetoast.com) · also at `gemini://zonetoast.com` and `spartan://zonetoast.com`
-* [On Placeness]({filename}placeness.md) · the same question, facing forwards
+* [On Placeness]({filename}20230415_placeness.md) · the same question, facing forwards
diff --git a/randogoth.com/content/muzzle.md b/randogoth.com/content/20260619_muzzle.md
similarity index 100%
rename from randogoth.com/content/muzzle.md
rename to randogoth.com/content/20260619_muzzle.md
diff --git a/randogoth.com/content/plasmoid.md b/randogoth.com/content/20260619_plasmoid.md
similarity index 100%
rename from randogoth.com/content/plasmoid.md
rename to randogoth.com/content/20260619_plasmoid.md
diff --git a/randogoth.com/content/pastfetch.md b/randogoth.com/content/20260831_pastfetch.md
similarity index 90%
rename from randogoth.com/content/pastfetch.md
rename to randogoth.com/content/20260831_pastfetch.md
index 555e265..16ff1cc 100644
--- a/randogoth.com/content/pastfetch.md
+++ b/randogoth.com/content/20260831_pastfetch.md
@@ -4,7 +4,7 @@ Category: MINIMAL
Slug: pastfetch
Summary: In the tradition of the widely popular fastfetch or neofetch tools on Linux, pastfetch is a DOS utility that prints a compact block of information about the running system along with a fancy logo.
-As a [DOS nerd]({filename}dostalgia.md) I had been wondering why there was no proper port of fastfetch/neofetch for FreeDOS yet. The one that exists ([DOSfetch](https://github.com/leahneukirchen/dosfetch)) is rudimentary at best, so why not contribute to it?
+As a [DOS nerd]({filename}20230427_dostalgia.md) I had been wondering why there was no proper port of fastfetch/neofetch for FreeDOS yet. The one that exists ([DOSfetch](https://github.com/leahneukirchen/dosfetch)) is rudimentary at best, so why not contribute to it?
With no Pascal coding experience the task felt a bit too daunting, so I briefly looked into porting it to QBASIC before eventually settling on the much more approachable [OpenWatcom C](https://openwatcom.org/) to roll my own.
diff --git a/randogoth.com/content/a-long-day-in-the-archive.md b/randogoth.com/content/20261005_a-long-day-in-the-archive.md
similarity index 100%
rename from randogoth.com/content/a-long-day-in-the-archive.md
rename to randogoth.com/content/20261005_a-long-day-in-the-archive.md
diff --git a/randogoth.com/content/itsybitsy.md b/randogoth.com/content/20261006_itsybitsy.md
similarity index 100%
rename from randogoth.com/content/itsybitsy.md
rename to randogoth.com/content/20261006_itsybitsy.md
diff --git a/randogoth.com/content/smolmail.md b/randogoth.com/content/20261009_smolmail.md
similarity index 100%
rename from randogoth.com/content/smolmail.md
rename to randogoth.com/content/20261009_smolmail.md
diff --git a/randogoth.com/content/smolmail-implementations.md b/randogoth.com/content/20261011_smolmail-implementations.md
similarity index 100%
rename from randogoth.com/content/smolmail-implementations.md
rename to randogoth.com/content/20261011_smolmail-implementations.md
diff --git a/randogoth.com/content/mews-profile.md b/randogoth.com/content/20261013_mews-profile.md
similarity index 100%
rename from randogoth.com/content/mews-profile.md
rename to randogoth.com/content/20261013_mews-profile.md
diff --git a/randogoth.com/content/smolmail-clients.md b/randogoth.com/content/20261013_smolmail-clients.md
similarity index 93%
rename from randogoth.com/content/smolmail-clients.md
rename to randogoth.com/content/20261013_smolmail-clients.md
index 30ceadc..874111c 100644
--- a/randogoth.com/content/smolmail-clients.md
+++ b/randogoth.com/content/20261013_smolmail-clients.md
@@ -5,7 +5,7 @@ Slug: smolmail-clients
Summary: Post 3 of 4 in the smolmail series. gsmol in the browser, carrier on the desktop, kirakira on a phone. Two of them share a Rust core, one reimplements the sealing in JavaScript and checks itself byte for byte.
Tags: smolmail, rust, flutter
-The [last post]({filename}smolmail-implementations.md) ended on `fumi-core`, the Rust library underneath the reference client, and on the claim that everything in this post would be built on it. That turned out to be two thirds true, and the exception is the interesting one.
+The [last post]({filename}20261011_smolmail-implementations.md) ended on `fumi-core`, the Rust library underneath the reference client, and on the claim that everything in this post would be built on it. That turned out to be two thirds true, and the exception is the interesting one.
**gsmol** runs in a browser. There is no Rust in it at all: the sealing, the signing and the Noise handshake are reimplemented in JavaScript, about a thousand lines across `crypto.js`, `noise.js` and `proto.js`, because a browser tab cannot open a TCP socket and I wanted the client to be just a page. The Python part, `bridge.py`, is 154 lines and does nothing but relay bytes. It never sees a key and never sees a plaintext. The bridge binds to 127.0.0.1 and has no TLS of its own. That is fine on your own machine and nowhere else. That's a feature, not a limitation.
diff --git a/randogoth.com/content/fdroid-repo.md b/randogoth.com/content/20261014_fdroid-repo.md
similarity index 83%
rename from randogoth.com/content/fdroid-repo.md
rename to randogoth.com/content/20261014_fdroid-repo.md
index a1b5916..a8977f4 100644
--- a/randogoth.com/content/fdroid-repo.md
+++ b/randogoth.com/content/20261014_fdroid-repo.md
@@ -5,7 +5,7 @@ Slug: fdroid-repo
Summary: A self-hosted F-Droid repository at fdroid.randogoth.com, fed straight from Forgejo releases, now serving Muzzle Velocity, Plasmoid, The Mews and kirakira.
Tags: fdroid, android, nixos, forgejo
-Until this week, installing one of my Android apps meant finding the APK on a release page and tapping through the warning about unknown sources. I don't think anyone did that twice. Now there is an *F-Droid* repository at `fdroid.randogoth.com` with four apps in it: [Muzzle Velocity]({filename}muzzle.md), [Plasmoid]({filename}plasmoid.md), *The Mews* from the [Mews Profile]({filename}mews-profile.md) post and *kirakira* from the [smolmail clients]({filename}smolmail-clients.md) post.
+Until this week, installing one of my Android apps meant finding the APK on a release page and tapping through the warning about unknown sources. I don't think anyone did that twice. Now there is an *F-Droid* repository at `fdroid.randogoth.com` with four apps in it: [Muzzle Velocity]({filename}20260619_muzzle.md), [Plasmoid]({filename}20260619_plasmoid.md), *The Mews* from the [Mews Profile]({filename}20261013_mews-profile.md) post and *kirakira* from the [smolmail clients]({filename}20261013_smolmail-clients.md) post.
Nothing gets built on the server. Each app's own *Forgejo* workflow signs its APK when I push a tag, a webhook tells the repo, and the listing (title, description, changelog, screenshots) is read from the app's `fastlane/` folder at that same tag, so it can't describe a build other than the one it ships. The one surprise was that the release webhook fires one API call *before* the APK gets attached, so the server kept turning up to an empty release... It waits for the upload now. *kirakira* supplied the humbling number: thirteen commits, eleven of them fixes to its release workflow.
@@ -17,7 +17,7 @@ Repository address `https://fdroid.randogoth.com`, fingerprint:
638D433A27DF393F62A321DD8623CA3FEDE1FEE3B13146AD3902BBA635765DD2
```
-
+
## Repository