This spring, once again, there was plenty of cleanup work to do. What was part of the spring cleaning 2026?
Organizational
Perhaps first, something that has little to do with technology: I write differently now. I no longer write only technical content. But you’ve probably already noticed that. In the past, I often published articles too early and only corrected them later, if at all. I now force myself to let every article mature for a few days. Multiple proofreads. Automated spell-checking. I hope this will benefit the quality. On the technical side, this is supported by setting a publication date three days in the future. Sure, I can bypass that, but so far it’s been working quite well.
Major Changes
- I’ve built in a Mastodon-based comment system. Server-side. You can find the full origin story here.
- I’ve switched from Ulysses to Obsidian for writing. I simply like the tool, and for my purposes it’s free. I didn’t want to spend almost 50 euros again for a year of Ulysses. I find the handling of footnotes alone very elegant. I’m still experimenting with the Canvas feature.
- There’s a Markdown preprocessor. It handles things like auto-tagging and in the process also corrects an error I had made in all Markdown files 1. For example, all texts that mention Solaris are also tagged with the Solaris tag — even if I forgot to do it myself.
- The HTML files that Jekyll produces are processed by a postprocessor script. Currently, it only adds the timestamp of the postprocessor run and a hash of the HTML file (combined with a secret). This is intended as a kind of integrity check and is used by me through a script.
- All the hashes are not only appended to the HTML file but also written with the name of the HTML file into a manifest file. This manifest file has an electronic signature.
Minor Changes
- Added: Default og:image if there is no image in article frontmatter. (29.03.2026)
- Added: Feature to manage article series with navigation inside the series. (29.03.2026)
- Added: Mastodon link in the social links section. (29.03.2026)
- Added: meta name=”theme-color”. (29.03.2026)
- Added: Improved pagination preventing the template from displaying dozens of page numbers. (29.03.2026)
- Added: Auto-TOC when more than 3 headlines. (29.03.2026)
- Added: Floating sidebar TOC at the right border. (29.03.2026)
- Added: Meta tags (like German, English) are ignored for “Related Posts”. (29.03.2026)
- Changed: noopener added to “Post to” social media links. (29.03.2026)
- Added: Hidden articles not in sitemap. (29.03.2026)
- Changed: Excerpt truncate now consistently at 160 characters. (29.03.2026)
- Removed: A lot of the functionality for presenting authors hasn’t been used so far. Dead code removed. (29.03.2026)
- Removed: Contact page function of the theme removed. (29.03.2026)
- Changed: Inline styles for search, tag overview, and search moved to CSS file. (29.03.2026)
- Added: Reading time now language-specific. (29.03.2026)
- Added: Unified RSS feed template. (29.03.2026)
- Added: Sitemap included in robots.txt. (29.03.2026)
- Removed: A lot of dead CSS code because of removal of “light mode”. (29.03.2026)
- Added: Colors in search, tag overview, and archive are using variables; the colors are no longer hardcoded. (29.03.2026)
- Added: Image element in RSS feed. (29.03.2026)
- Changed: Typo in /separatedfeed/ permalink. (29.03.2026)
- Added: LD-JSON structure. (29.03.2026)
- Added: og-type. (29.03.2026)
- Added: Website URL in title tag. (29.03.2026)
- Added: Dynamic language dependent on language tag in html tag. (29.03.2026)
- Added: Template for subblog navigation in its own reused template, and translation of authors to subblogs simplified. (29.03.2026)
- Removed: Old Mastodon comment system based on JavaScript. (29.03.2026)
- Removed: Unused features of the template like Disqus integration and Google Analytics integration. (29.03.2026)
- Removed: Unused simplejekyllsearch. (29.03.2026)
- Removed: Font Awesome, only one icon was used, substituted by inline SVG. (29.03.2026)
- Removed: A lot of HTML code never rendered. (29.03.2026)
- Removed: Video section of the template. (29.03.2026)
- Cleanup: A number of pages had an author name with a trailing space, removed the trailing space. (29.03.2026)
- Changed: Pagination on home page replaced by a link “older posts” linking to the /blog/ page with existing pagination. (29.03.2026)
- Added: “Skip to content” for keyboard and screen reader usage. (29.03.2026)
- Removed: Remnants of “light mode”. (29.03.2026)
- Navigation to the next and previous blog entry of the same author right under the blog entry. (added 29.03.2026)
- Optimization of rsync. (added 29.03.2026)
- Optimization of Jekyll templates (build time reduced from 20.1 seconds to 3.7 seconds, HTML files significantly smaller). (added 29.03.2026)
- Copy button in code blocks. (added 29.03.2026)
- Server will deliver AVIF (preferred) or WebP files instead of JPEG or PNG — if the browser supports it. JPEG or PNG available as fallback. (added 28.03.2026)
- Links have a visual cue right alongside them separating internal and external links. Arrows with a box are external. (added 28.03.2026)
- Icons added for tag overview page and archive page. (added 28.03.2026)
- Code in place to hide blog entries from overview pages, RSS, and search. (added 28.03.2026)
- SASS now 3.0.0 compatible. Works without suppressing error messages. (added 28.03.2026)
- Integrating a full-text search at https://www.c0t0d0s0.org/search/. (added 26.03.2026)
- Integrating archive page at https://www.c0t0d0s0.org/archive/. (added 25.03.2026)
- Cleaning up the templates for RSS feed generation. They now validate without errors. (added 25.03.2026) 2
- Added publication date per blog entry on front page. (added 22.03.2026)
- Each blog entry now displays the sub-blog it’s assigned to on overview pages. (added 22.03.2026)
- Lots of small tweaks in the HTML code (for example, there was still a font being loaded externally — I’ve fixed that).
- The Docker container was regenerated after quite some time.
- The long text about the surgery is now in the menu. That text is very important to me. I think it deserves a special position on the website.
- There’s now a Subblogs menu to have thematically separated article overviews. There are three topic areas: “Solaris/IT,” “Personal,” and “Cycling.”
- There are now thematically separated RSS feeds. The topics are the same as in the Subblogs menu. You can find the individual feeds here.
- RSS links in the blog now redirect to a page that distributes across the different feeds. The default is still the full feed.
- Finally, a proper 404 page. I don’t know why I didn’t take care of this much sooner.
- Caching directives for a variety of files.
- During some migration, two files went missing. It never had any externally visible effect, but it kept filling up my log files.
- The entire build server has now moved to its own dedicated system. This means the HP EliteDesk 800 G5, which was originally supposed to become a NAS, has finally found its purpose.
- In the past, I’ve repeatedly come across a webring 3 that collects other German-language blogs. Since my personal texts are now exclusively in German, I’ve registered that part of the blog there as well. So my personal blog entries are now shared via uberblogr.de. I saw this webring when I checked the actual webpages of a few blogs I follow via RSS (like norberteder.com, unixe.de, raspithek.de, and others). I explicitly keep my technical blog posts out of it, as they are mostly written in English.