Optimizing code-bude.net for PageSpeed: What I changed and what actually helped

Diagram showing the measurement of load time, layout shift, images, CSS and fontsPageSpeed is not an oracle. Bytes lie much less often than a single score.
I had run code-bude.net long enough to know its little points of friction. A homepage with 22 external CSS files, more than 100 KB of HTML and 1.2 MB PNG title images in listing views was no longer a charming bit of history. Lighthouse estimated 6.25 MB of image savings. The score moved between 27 and 55 depending on the run. That is not a measurement. It is a weather forecast with a very small cloud.
I worked in two rounds. First came images, CSS, critical CSS and fonts. Then I tackled Site Health findings, CLS, accessibility, security headers and icon fonts. The scores are useful as […]

From Bookstats to LibrisLog: How to Migrate Your Reading Statistics

Bookstats will not continue operating in the near future. The app announcement cited serious health problems affecting the person who keeps the project running. No fixed shutdown date or export deadline was given, and nobody knows what will happen to the server data after a shutdown. If your library still lives in Bookstats, I would export it now rather than wait.
The question of alternatives also came up in the Reddit thread about the Bookstats shutdown and the Bookcrossing thread about alternatives. I personally pointed to LibrisLog because it can import Bookstats export files and is designed for people who want to keep control of their own library data. The source code is openly available on GitHub. That reply is what led to this migration guide.
I am the developer of LibrisLog, and I ran the migration myself using my own Bookstats export. It contained 178 book rows. The workflow is pleasantly […]

LibrisLog 1.9.0: Smarter Import Search, Public Profiles and More

LibrisLog 1.9.0 is a substantial feature release rather than a tiny maintenance bump. Released on September 15, 2026, it focuses on import search, shareable profiles and the small points of friction that tend to turn a book tracker into a spreadsheet with feelings.
Edition groups and an import basket
Search results from different providers that describe the same book are now grouped into expandable edition groups. LibrisLog matches editions by ISBN or, when no ISBN is available, by title and authors. That makes it much easier to compare variants and pick the right one without losing results in a long, repetitive list.
The selected edition is highlighted, and a new import basket lets you collect results before importing them. The basket can be reviewed, individual entries can be removed, and everything can be imported in one go. Reading status, possession status and medium are kept with each entry, while duplicate additions are prevented.

When the App You Love Dies, Build Your Own — Introducing LibrisLog

I was a happy Dante user. For those who don’t know it, Dante was a solid Android book tracker. Scan a barcode, look up metadata, track your reading progress. Simple, effective, and most importantly: it worked. Until it didn’t.
Adding books by title or barcode? The search API the app relied on had stopped responding, so neither ISBN lookups nor name searches worked anymore. Backups? Gone too. Dante had gone quiet: No updates in a long time, and the features that depended on external services had stopped working. I get it, though. Focus shifts. I’ve been there myself. I recently handed one of my own projects over to a new maintainer because I couldn’t keep up anymore. But understanding why doesn’t make it any less frustrating when it’s your bookshelf that’s stuck.
And that’s where the real pain started. Getting my own data out of Dante was a nightmare. There was no export function anymore. […]

Personal note: Passing the Torch on the Open-Source Project QRCoder

Anyone who has searched this blog in recent years for solutions to generate QR codes in .NET will inevitably have come across my project, QRCoder. I launched the library in October 2013, not primarily because I lacked other tools at the time, but as a personal programming challenge: My goal was to implement the official DIN/ISO standard for QR codes natively in C# from scratch myself. To understand the algorithms, to learn something new.
Over the years, this experiment has grown into a very successful open-source project that has now been downloaded millions of times via NuGet and is used in numerous commercial and private projects worldwide.
After 12 years, I decided in September 2025 to hand over the active maintenance and administrative management of the project. In this brief post, I would like to explain the background behind this decision and introduce the new maintainer.
The Reasons for the Transition
Maintaining […]

en.code-bude.net
Privacy Overview

This website uses cookies so that we can provide you with the best user experience possible. Cookie information is stored in your browser and performs functions such as recognising you when you return to our website and helping our team to understand which sections of the website you find most interesting and useful.