Übervolle Kinderstube

Ich habe hier schon länger nicht mehr dokumentiert, wie sich meine Aquarien entwickelt haben. Das große Wohnzimmeraquarium ist super stabil und, abgesehen von den wöchentlichen Wasserwechseln, auch sehr pflegeleicht. Ich wollte schon länger mal aufschreiben, wie das Becken genau betrieben wird, aber heute soll es um mein zweites Aquarium gehen.

Das zweite Aquarium steht in meinem Home-Office und beherbergt sogenannte Schneckenbuntbarsche (Neolamprologus multifasciatus). Die sind wirklich sehr putzig zu beobachten, weil sie, wie ihr Name schon verrät, in Schneckenhäusern leben und Kolonien bilden. Dabei wird viel Sand von links nach rechts und danach wieder zurück bewegt, damit die Schneckenhäuser auch wirklich alle richtig liegen. Und richtig ist scheinbar für die kleinen Fischlein aus dem Tanganjikasee jeden Tag ein bisschen anders. Also dieses Becken ist quasi immer Action.

In den Osterferien habe ich mit dem 14-jährigen Zimmer getauscht. Das heißt, er wohnt jetzt im Keller und ich im kuschlig warmen Obergeschoss. So ein Umzug ist ja immer irgendwie anstrengend, aber ein Umzug mit Aquarium ist nochmal eine andere Hausnummer. Und in diesem Fall war es ja nur eine 100 Liter-Pfütze, die über mehrere Etagen bewegt werden musste. Mir graust es vor dem Moment, an dem ich mal die 700 Liter im Wohnzimmer bewegen muss.

Wie dem auch sei, der Umzug liegt seit ein paar Wochen hinter uns, und die Schneckenbuntbarsche machen mittlerweile wieder das, was sie am besten können: Sie kümmern sich um die sehr produktive Erhaltung ihrer Art. In dem kurzen Video von heute sieht man, das es quasi überall nur so wimmelt. Ich glaube, ich kann demnächst mal wieder einen Teil der Kolonie abgeben.

Why I built Flat, the now most-used app on my home screen

Flat RSS app from justasimple.app showcased on a Macbook Air and a iPhone.

I have been using RSS for years. For this post I actually did the research math. I made my first steps on the internet around 1995. Ten years later, in October 2005, Google Reader launched and changed how I follow things on the web forever.

That’s almost 20 years ago. And I still believe RSS is the best way to keep up with the things I actually care about. Together with blogging, it is one of the few things that has stuck with me from the very beginning.

RSS is also one of those technologies that never really died. The shutdown of Google Reader in 2013 was a short blow, but a wave of alternatives followed, each adding its own perspective. Over the last thirteen years I tried most of them, but eventually became a loyal user of Feedbin and Unread.

Reading is no longer the default

But over time something changed more fundamentally than the tools. The way I consume content changed. RSS started in a world of blogs and websites, basically text-first and lightweight. That is still part of how I read today, but it is no longer the whole picture.

Many years ago Podcasts became part of my daily routine. YouTube replaced a lot of long-form reading on specific topics. Mastodon and Bluesky turned into discovery layers for new things to read. Even Reddit became a source of discussions and links worth following.

In other words, my “feed” stopped being just RSS and became a mix of articles, videos, audios, and conversations, all competing for the same attention, and all living in different apps.

The gap

Most RSS readers were built for a text-first world. But mine stopped being text-first. No single app could keep up with all of it, so I ended up with four dedicated apps on my home screen: an RSS reader for articles, a podcast app, a video app, and yet another app for the links I wanted to save for later. Four tools, four timelines, and permanent switching between all of them.

So I built Flat

People read, watch, and listen, on the same device. The trouble was never the mix itself. It was that the mix lived in different apps, each with its own backlog to clear. Flat puts an end to that. One timeline, in the order things arrive, instead of multiple apps to check one after another.

Feature overview from Flat RSS, the modern feed reader app from justasimple.app

Flat pulls RSS feeds, podcasts, YouTube channels & playlists, and social sources into a single chronological timeline. And it adds the Stash, a simple place to save everything interesting for later. If something is interesting but not for right now, it goes there. If not, it just passes by. Nothing to clear, no expectation to catch up.

One more thing mattered to me, and I suspect it’s what most people expect nowadays. Everything stays in sync across all your devices, all your feeds, anything you have put in the Stash, even the playback position of a podcast or video. It all follows you, so you can pick up exactly where you left off, on whatever device you are looking.

A few deliberate decisions

A few things in Flat are missing on purpose:

  • No unread counts. A number that turns into a backlog is just another obligation.
  • No ranking. The timeline is always chronological. What you follow is what you get.
  • No account. Your data lives on your device and syncs through iCloud, with no backend holding your feeds or your reading history.

This removes some flexibility. It also removes a lot of friction. You install the app, add your sources, and read, watch, or listen. Save a few things. Move on. That’s it.

Flat brings RSS into the media world we actually live in now. Nothing more, nothing less.


Flat is on the App Store, and it’s free. If you’d like one place for the things you read, watch, and listen to, give it a try.

If you do, I would love to hear what you think. I’m answering any feedback. And an honest review on the App Store genuinely helps a small project like this.

Beyond blogging platforms

A blog is a blog is a blog. At least that’s what I used to think.

In reality, it isn’t quite that simple. Some people just blog and don’t care about the machinery behind it. Others see the technology powering their site as an important part of the experience. I clearly belong to the second group.

After years of more or less radio silence, I started writing regularly again last year. At the time I moved to Micro.blog and genuinely enjoyed it. But the longer I used it, the more time I found myself spending behind the scenes. I built plugins, tweaked workflows and started thinking about the platform almost as much as the writing itself.

Like every platform, Micro.blog has its limitations. Over time, I realized that I was spending more and more energy working around them and optimizing things I could not even clearly define anymore.

Almost out of nowhere, I moved everything to Bear Blog, which probably takes the exact opposite approach. Bear Blog focuses on the one thing a blog should do, just write and hit publish. No endless configuration options, almost no customization and very little temptation to tinker.

I thought that would finally free me from thinking about the technology behind my blog. For a while, it actually did. I deliberately stopped caring about the machinery and focused entirely on writing again (with some exceptions).

But eventually those intentional limitations started to bother me more and more. At the same time, I noticed some people around me started building their own CMS, while others discovered new kids on the block and migrated away from Bear Blog altogether.

What I really wanted

The question, however, was not whether I should move to yet another blogging platform. I certainly didn’t want to migrate to a third platform within twelve months. And I definitely didn’t want to build a CMS myself or return to a monster like WordPress or Kirby. I know what building and maintaining software means, and I have no desire to create another piece of legacy software that I will eventually have to maintain in my already rare spare time.

What I wanted was ownership. Not ownership in the “self-host everything” sense, but ownership of the things that actually matter … my content, my images and the design around them.

Once I looked at it that way, the problem suddenly became much simpler. I wasn’t looking for a better blogging platform. I was looking for a setup where my content remained completely independent from the platform itself. A setup where I could replace every component whenever I wanted without having to migrate my content yet again.

The solution

Five years ago my blog was powered by Yellow, a small flat-file CMS built around markdown files. All content lived in a Git repository, and together with Yellow (as a rendering-engine), was uploaded to a traditional web host. Looking back, this already solved many of the problems I found myself thinking about again.

For a moment I was tempted to simply bring that setup back to life. But before doing that, I decided to look around how people achieve this nowadays.

After evaluating a couple of options, I settled on a combination of Eleventy and Github. All content, configuration and build logic live in a Git repository. Whenever I publish a change, GitHub starts a build workflow. During that process, Eleventy generates the final static website, and a few additional automation tasks are executed, such as image conversion and optimization.

The generated files are currently hosted on Cloudflare Pages (which has a generous free tier), but that is really just an implementation detail. The same output could just as easily be deployed to GitHub Pages, Netlify, Hetzner or virtually any other web host.

The beauty is that every component is just configured and in itself replaceable. If GitHub disappeared tomorrow, I could move the repository elsewhere. If Eleventy stopped being maintained, I could switch to another static site generator. If Cloudflare changed direction, I could deploy the generated files somewhere else within minutes.

The content remains mine, independent of the tools used to publish it. That is the difference between owning a platform and owning your content.

Around this core setup, I added a few bits of automation. Images are converted to WebP during the build process. New articles are automatically published to Mastodon and Bluesky (depending on the configuration). Webmentions are sent out, and the Internet Archive and IndexNow are notified about updates. Thanks to the nudge of Felix and Iain, I also added standard.site publishing. Every post is now also written as an open, portable record to the AT Protocol repository and therefore lives in a format that no single platform controls.

The result is a workflow that feels surprisingly lightweight. And I don’t pay anything to run this whole setup, not a single cent for my entire blog. But more importantly, I don’t depend on any single vendor to keep it running.

There was just one problem left

While editing Markdown files directly in GitHub works, it is not exactly a pleasant writing experience. I wanted something that felt closer to a traditional CMS. I looked at probably all existing wrappers, but all seemed way to complex for my basic publishing workflow.

So I built a small admin interface on top of the repository, basically the smallest possible layer between me and the repository.

I ended up with more or less a purpose-built Markdown editor that sits directly on top of the Git repository. It reads posts, pages and media files from GitHub and allows me to edit everything through a browser. Every change is automatically committed to a drafts branch. Nothing is tied to a specific device and nothing can accidentally get trapped in a browser tab. I can start writing on my Mac, and finish an article on my iPhone.

Once I’m happy with the result, I just hit a button in the editor to start the merge into main, and the entire publishing pipeline described above kicks off automatically.

Bottom line

The content remains mine. The workflow remains mine. I can change virtually every aspect of the setup within minutes, everything is fully automated and still, every component can be replaced whenever necessary. Yet from a day-to-day perspective, all I have to do is write and hit publish. Which, ironically, is exactly what I was looking for when I moved to Bear Blog in the first place.

This article already spent more time in the machine room than most people probably care for. If you are interested in the even nerdier details, the complete source code and a detailed walkthrough of the architecture can be found on GitHub.

Heimgarten (1791m) und Herzogstand (1731m)

Der 15-Jährige hat mich gestern Abend gefragt, ob ich mit ihm auf den Herzogstand wandern würde. Das Wetter hat zwar für Samstagnachmittag Regen angesagt, aber in den Bergen kann man sich darauf sowieso nicht verlassen.

Also ging es heute früh, um 6:30 Uhr los Richtung Walchensee. Die Sonne hat geschienen und als wir gegen 8 Uhr am Startpunkt der Route angekommen sind, hab ich es bereut, das ich auf die Frage vom Sohnemann, ob wir keine Sonnencreme mitnehmen wollen, nur den Kopf geschüttelt habe.

Nur 30 Minuten später war von der Sonne nichts mehr zu sehen. Zum einen, weil wir durch den dichten Wald zum Heimgarten hinauf gestapft sind und zum anderen, weil es schlicht sehr bewölkt geworden ist.

Blick vom bewaldeten Aufstieg am Heimgarten auf den türkisblauen Walchensee. Dichte Fichten rahmen die Aussicht auf die Berge unter einer geschlossenen Wolkendecke.

Gelbe Bergblumen auf einer Wiese am Heimgarten, dahinter Tannenwald und der türkis schimmernde Walchensee. In der Ferne liegen bewaldete Hänge und die bewölkte Alpenkette.

Schmaler Wanderpfad durch Latschen und Nadelwald auf dem Weg zum Heimgarten. Vorne liegt ein bewaldeter Bergrücken unter bewölktem Himmel.

Wie jeder Aufstieg auf einen Berg, so war auch der zum Heimgarten echt schweißtreibend. Oben angekommen, war dann auch bei herrlichem Sonnenschein Zeit für die zweite Brotzeit. Die vermeintliche Regenprognose war zu diesem Zeitpunkt längst vergessen.

Ein Wanderer mit Wanderstöcken in der Hand kommt einen schmalen Pfad neben der Hütte auf dem Heimgarten entlang.

Blick vom Heimgarten auf den Herzogstand. Links der Kochlsee und rechts der Walchsensee unter einem sonnigen Himmel.

Gelber Wegweiser auf einem felsigen Gipfelgrat auf dem Heimgarten zeigt in Richtung Herzogstand. Dahinter reicht der Blick über Kochlsee Walchensee und die umliegenden Berge.

Über den Kamm ging es danach weiter zum eigentlichen Star der Runde, dem scheinbar gerade sehr populären Herzogstand. So richtig erschließt sich mir nicht, warum der Herzogstand so beliebt ist, aber aufgrund des Wetterumschwungs hatten wir auch nicht genügend Zeit, das ich den Gipfel näher kennenlernen, geschweige denn etwas von dort oben beim Blick nach unten sehen konnte.

Felsiger Gratweg zwischen Heimgarten und Herzogstand, umgeben von Latschenkiefern. Über den grauen Gipfeln hängt eine graue Wolkendecke.

Auf dem Weg dorthin haben wir noch das Schlehdorfer Kreuz mitgenommen. Dann hat es plötzlich zugezogen und ist immer dunkler, windiger und kälter geworden. Ein untrügliches Zeichen für, na klar, Regen.

Nebel zieht über den felsigen Grat zwischen Heimgarten und Herzogstand, ein Geländer markiert den schmalen Weg. Die umliegenden Berggipfel sind nur schemenhaft durch die Wolken zu sehen.

Blick über bewaldete Bergrücken und das Tal bis zu den Alpen. Dunkle Wolken ziehen über der Berglandschaft auf, links ist ein Stück des Kochlsees zu sehen.

Als wir am Martins-Kopf angekommen sind, kamen dann die ersten Tropfen und wir haben ihn und auch den Fahrenbergkopf für eine andere Tour liegen gelassen und haben uns direkt auf den Weg nach unten begeben. Steine, Wurzeln, jede Menge Schlamm … das war wirklich alles andere als angenehm aber mit Geduld und den Wanderstöcken sind wir zwar vollkommen verdreckt und durchnässt unten wieder angekommen.

Schmaler, schlammiger Bergpfad am Hang des Herzostands mit Wurzeln und Felsen, dahinter bewaldete Täler und Gipfel. Tief hängende Wolken und Nebelfetzen kündigen den Wetterumschwung an.

Eine Gondel der Herzogstandbahn schwebt über dem Walchensee, dahinter bewaldete Hänge und wolkenverhangene Berge. Im Vordergrund ragen Tannen in den Blick auf den türkisfarbenen See.

Über 14 Kilometer und 1.300 Höhenmeter haben enorm geschlaucht und uns direkt in das erste Wirtshaus geführt, in dem es einen Berg Schnitzel als Belohnung gab. Die weltbesten Schnitzel natürlich.

Ach ja, natürlich hat die halbe Stunde Brotzeitpause auf dem Heimgarten gereicht, das ich einen Sonnenbrand davongetragen habe.

Regenpause

In einem weitläufigen Feld wachsen grüne Ähren, durchsetzt mit leuchtend blauen Kornblumen. Der Himmel ist bewölkt, was der Szene eine ruhige, gemütliche Stimmung verleiht.

Ich war 30 Minuten draußen und bin genau zu dem Moment wieder zur Tür rein, als das nächste Gewitter angefangen hat. Das einzige Foto, das ich unterwegs aufgenommen habe, passt auch noch zum heutigen #Fotovorschlag Nahaufnahme Natur. Vielleicht nicht die beste Nahaufnahme, die ich in der Fotobibliothek hätte, aber dafür ist sie von heute, und das war schon Herausforderung genug.

Mal wieder Piepmatz-Rettung

Ein Duschkopf hängt von der Decke, während ein kleiner Vogel auf der Oberseite sitzt. Die Fliesenwand hinter dem Duschkopf ist hell gehalten.

Gerade war Großalarm und viel Geschrei. Ein, so schätze ich zumindest, Jungvogel hat sich in unser Badezimmer verirrt. Im Zweifel für den Angeklagten, gehe ich mal davon aus, dass er bei den aktuellen Temperaturen sicher nur eine erfrischende Dusche nehmen wollte. Im Vögel retten sind wir ja mittlerweile schon geübt, auch wenn es diesmal herausfordernder war, weil der Piepmatz permanent gegen das Fenster geflogen ist, das ich eigentlich öffnen wollte.

I stopped tracking my life

The Apple Watch genuinely helped me change my health and fitness for the better after I bought one in 2017. Closing rings, tracking workouts, monitoring progress, it worked extremely well for me.

And honestly, for a while some years, I enjoyed it. Even though I probably sometimes got a little too obsessed with closing my rings, very often no matter what. But over the years things slowly changed.

I got tired of having a display on my wrist all the time. Not because the Apple Watch is bad, but because it constantly pulls your attention somewhere else. Notifications, metrics, rings, trends, apps, settings, complications. Even when you disable most of it, the mindset somehow stays.

As I noticed this the first time in 2022, I switched to a Withings ScanWatch because I wanted something that looked more like a real watch again. The promise sounded like a match in heaven: I can have all the health tracking, but hidden inside a beautiful analog design.

In reality, this was a very early sign how much I missed wearing an actual watch.

Since then, I somehow kept circling around the same question and changed my setup constantly. I returned to the Apple Watch, just to return to Withings again. In hindsight, I spent an absurd amount of time and money on apps and devices that were supposed to help me track every second of my life and extract something meaningful out of all the data.

Last year I made the switch to an analog watch and decided to use the Apple Watch only for sleep and workout tracking. It was the right decision, but even though I wanted to believe otherwise, I wasn’t ready to let go of tracking all my data yet. Over the following weeks I slowly started wearing the Apple Watch more and more again, until I barely looked at my beautiful Laco anymore.

Ein Handgelenk mit einer Laco Stuttgart Pro mit blauem Zifferblatt und silbernem Gehäuse, das in einer Innenumgebung neben einer Pflanze abgebildet ist. Die Uhr zeigt die aktuelle Uhrzeit und hat ein Stoff-Armband.

8 months later, I realized again, that I miss my analog watch. I decided to give Withings a final call and bought a ScanWatch Nova. It took me less than a month to realize that I hated even the tiny display on the watch. More importantly I learned, that I don’t care about the data anymore. I barely looked at the data the ScanWatch collected.

Ein Handgelenk mit einer Withings Nova und einem braunen Lederarmband. Im Hintergrund ist ein Kiesweg und grünes Gras sichtbar.

A few years ago I was deeply into fitness progress monitoring, recovery scores, readiness metrics, HRV trends and all the things apps like Bevel or Athlytic tried to turn into daily guidance. I tested almost every app out there, but in the end all these charts didn’t give me any value in return. I never felt satisfied and always was looking for improvements in my setup.

With these self-improvement apps, I also deleted my Strava account. And this week I decided to remove Komoot and Bergfex from my iPhone as well. At some point I simply stopped feeling the need to turn every experience into something measurable, shareable or comparable.

I think I simply reached the point where I got tired of constantly optimizing and comparing myself. I want experiences to feel like experiences again, not like data points inside another dashboard.

Two days ago I did my first hike in almost 10 years without a tracker, without recording the route, and it was awesome. For the first time, I even started wondering whether I need to track my workouts at all.

The only thing I still genuinely find useful is sleep tracking because sleep feels like the one metric that actually reflects your overall condition reasonably well. It’s less about optimizing every single day and more about seeing long-term patterns.

Resting heart rate, HRV, breathing patterns, sleep quality or just feeling constantly unrested can reveal that something is off long before you consciously notice it yourself.

And unlike most other tracking, it’s passive. I either rely on my Withings Sleep Analyzer 1 or, if I need an alarm next morning, I wear my Apple Watch to bed 2. I usually glance at the data for a few seconds in the morning and move on with my day and one of my beautiful watches on my wrist.

  1. A genuinely magical device. You place it under your mattress, and it tracks sleep duration, bedtime and wake-up times, sleep stages, interruptions, nighttime heart rate, respiratory rate, and even how much and how intensely you snored (and for the record: yes, I snore). And it can also detect signs of sleep apnea, all without requiring you to wear anything on your body.

  2. As I sleep with earplugs (because my wife snores too), I need a vibrating alarm on my wrist to wake up in the morning.

Pfau – Bin ich echt? (3/5)

Eine Person in Anzug steht inmitten von grüner Vegetation und schaut nachdenklich in die Ferne. Der Titel des Films

Alles in Peacock (warum ist der deutsche Titel eigentlich so sperrig?) ist eine so wunderbare Parabel zur heutigen Zeit, mit all den inszenierten Selbstdarstellern und ihrer Suche nach Individualität. Leise und dennoch unterhaltsam. Schöner Abschluss für diesen ereignisreichen Tag.

Klingender Wald

Noch ein kleiner Nachtrag zur heutigen Wanderung. Ich war so früh unterwegs (mein Auto war das erste auf dem Parkplatz), das ich die Freude hatte quasi alleine, zumindest ohne weitere menschlichen Wesen, durch den Wald stapfen zu können.

Bei einer Verschnaufpause habe ich mich auf jeden Fall gewundert, was da so knistert. Turns out, das war das Gestampfe der Waldameisen, die über die Blätter vom letzten Herbst gehuscht sind.

Kurz darauf musste ich erneut nach Luft schnappen und darauf warten, dass sich mein Puls beruhigt hat. Die Vögel um mich herum haben sich durch meine Anwesenheit jedenfalls nicht beim morgendlichen Konzert stören lassen, für dessen Aufnahme ich versucht habe den Atem unter Kontrolle zu halten.

Die Videoschnipsel habe ich übrigens Codex mit der Bitte gegeben, sie von MOV in WEBM zu konvertieren, dabei unter 9 MB 1 zu bleiben und die Lautstärke der Audiospur zu verdoppeln. Dafür muss man also nicht mehr auf irgendwelchen dubiosen Webseiten herumklicken, die am Ende doch nicht die Optionen bieten, die man benötigt.

  1. 9 MB ist die maximale Größe die Bearblog als Upload akzeptiert.