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.

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.

Bodenschneid (1.669m)

Heute ging es in aller Früh raus. Das Ziel war Enterrottach, zumindest für mein Auto. Ich wollte noch etwas weiter und das hervorragende Wetter nutzen, um diese Tour auf den Bodenschneid zu machen.

Vom Parkplatz aus ging es über die Bodenalm zum Bodenschneid. Wie in der Tourbeschreibung korrekt angegeben, war der Aufstieg sehr steil und beschwerlich. Ich würde sagen, das man auf den ersten 3 Kilometern locker 600 Höhenmeter überwindet, was selbst im herrlich frischen Wald, eine extrem schweißtreibende Angelegenheit ist.

Ein kleiner Gebirgsfluss fließt durch einen bewaldeten Bereich, umgeben von grünen Bäumen und Felsen. Das Wasser sprudelt über die Steine und schafft kleine Wasserfälle, während das Licht durch das Laub fällt.

Ein bunter Wegweiser in Form eines roten und blauen Streifens auf einem grauen Stein, umgeben von einem bewaldeten Gebiet mit hohen Bäumen und einem schmalen, gewundenen Pfad im Hintergrund. Der Boden ist mit Laub und kleineren Steinen bedeckt.

Kurz vor der Bodenalm habe ich mir, als ich an einer sehr spitzen und scharfen Wurzel hängengeblieben bin, meinen Wanderschuh zerlegt. Zum Glück nur den und nicht den Fuß.

Naja, sobald man die Bodenalm erreicht hat, kann man dann etwas durchschnaufen und den Ausblick genießen. Die Sonne hat den Schweiß vom Aufstieg schnell getrocknet, aber bevor man sich versieht, liegt die Bodenalm schon hinter bzw. unter einem und der schweißtreibende Aufstieg geht weiter.

Ein rustikales Holzhaus steht auf einer Wiese, umgeben von grünen Bäumen und einem malerischen Berg im Hintergrund. Der Himmel ist teilweise bewölkt, mit einigen blauen Abschnitten.

Eine rustikale Hütte steht auf einer grünen Wiese, umgeben von Bergen und Tannenbäumen. Der Himmel ist teilweise bewölkt, und die Landschaft ist geprägt von einer idyllischen, natürlichen Umgebung.

Eine grüne Alpfläche mit zwei rustikalen Holzhäusern, umgeben von Bäumen und einem malerischen Bergpanorama im Hintergrund, auf dem sich sanfte Hügel und steile Berghänge abwechseln. Der Himmel ist leicht bewölkt und lässt die Landschaft in sanftem Licht erstrahlen.

Der restliche Aufstieg ist dann deutlich moderater, nur die letzten 300 Meter haben es nochmal in sich. Ich saß eine Weile am Gipfelkreuz, hab die Aussicht und mein Frühstück genossen, und ausnahmslos jeder der hier oben angekommen ist, hat deutlich hörbar geschnauft.

Ein gelbes Wegweiser-Schild steht an einer Felsenlandschaft auf einem Berg, mit blauen Himmel und wenigen Wolken im Hintergrund. Das Schild zeigt Entfernungen zu verschiedenen Wanderzielen an.

Das Gipfelkreuz auf dem Bodenschneid gehört zu den schönsten die ich bisher gesehen habe. Leider war es gegen die Sonne kaum von seiner ansehnlichen Seite zu fotografieren. Dafür war der Blechkasten der das Gipfelbuch aufbewahrt, aber umso fotogener.

Ein hoher, silberner Kreuz auf einem steinernen Sockel steht auf einem Berggipfel, umgeben von Nadelbäumen. Im Hintergrund erstreckt sich eine hügelige Landschaft unter einem blauen Himmel mit einigen Wolken.

Ein kleiner Blechkasten mit Aufklebern steht auf einem felsigen Gipfel und verwahrt das Gipfelbuch, umgeben von einer beeindruckenden Berglandschaft. Bunte Gebetsfahnen wehen im Wind und verleihen der Szene einen spirituellen Charakter.

In Richtung und mit Blick auf den Tegernsee ging es dann wieder runter vom Bodenschneid. Nach dem steilen Abstieg bin ich dann im Bodenschneid-Haus angekommen und habe mir noch ein alkoholfreies Helles gegönnt, bevor es dann endgültig Richtung Parkplatz zurückging.

A weite Aussicht auf eine bergige Landschaft mit dichten Wäldern und dem ruhigen Tegernsee in der Ferne. Im Vordergrund sind schroffe Felsen und Wanderwege sichtbar, während die Berge und Täler bis zum Horizont reichen.

Ein Glas Tegernseer Helles Bier auf einem Holztisch, daneben liegen zwei Münzen. Im Hintergrund sind verschwommen eine Hütte und einige Fahnen zu sehen.

Der Rückweg ab dem Bodenschneid-Haus war über die Versorgungsstraße total entspannt. Links und rechts gab es noch das eine oder andere Highlight, wie die kleine Waldeichdechse die erst weggehuscht ist, als ich mit dem iPhone wirklich unerhört nah war.

Eine kleine braune Eidechse sitzt auf einem großen grauen Stein, umgeben von grünem Gras und gelben Blüten. Die Sonne scheint und erzeugt Schatten auf dem Stein.

Oder auch die gelb blühenden Wiesen. Das vordere Stück war übersäht mit unzählbar vielen Schlüsselblumen, und der hintere, dunkelgelbe Teil mit Butterblumen und Löwenzahn.

Eine steinige Straße führt zu einem Bauernhaus, umgeben von einer weitläufigen grünen Wiese. Im Hintergrund erheben sich sanfte Hügel und bewaldete Bereiche unter einem blauen Himmel mit leichten Wolken.

Und kurz vor dem Parkplatz hab ich meine Hände noch ins kühle Nass dieses Bergbachs gesteckt, um mich zu erfrischen.

Eine kleine Wasserstelle fließt sanft zwischen großen, moosbedeckten Steinen und Kies. Der klare Wasserlauf schimmert im Licht, während sich das grüne Blätterdach darüber erstreckt.

Insgesamt schöne Tour, auch wenn der Aufstieg beschwerlich war. Aber das sage ich am Ende auch über jede Wanderung.

Das war übrigens meine erste Wanderung seit über 10 Jahren ohne Apple Watch oder irgendein anderes Gerät mit dem ich die Tour aufgezeichnet habe. Und das war ehrlichweise total entspannend, nicht permanent auf die Uhr zu schauen wie weit oder hoch man schon gegangen ist, wie schnell der Puls schlägt und ob man auch ja unter den Zeiten bleibt, die auf Wegweisern so ausgeschrieben sind. Ein guter erster Schritt in die richtige Richtung. Aber dazu an anderer Stelle mehr.

Der letzte Benziner

Renault Twingo E-Tech in Absolutrot

Wir haben gerade den Kaufvertrag für diesen kleinen Schnuckel unterschrieben, der damit eigentlich den letzten Benziner in diesem Haushalt ersetzen sollte. Aber anstatt von 50% direkt auf 100% elektrisch zu springen, bleiben wir vorerst bei 66%, denn die 18-Jährige möchte den Fiat 500 der Mama noch eine Weile weiterfahren.