Using AI to solve all my problems
It still doesn't work.
It still doesn't work.
Have you ever stopped to consider how much of your digital content you actually own? I recently did, and what I discovered about my Kindle ebook collection led me down a path of digital liberation that I'm excited to share with you.
It all started when I noticed I was buying too many ebooks on Kindle. While browsing for solutions to improve my reading experience, I stumbled upon an excellent video series about KOReader by Stefan Svartling. This versatile reader software is supported by most e-readers, including Kindle devices.
What had always annoyed me about the Kindle reading experience were those non-customizable margins. Sure, there are three options, but they still waste too much screen space. KOReader, on the other hand, gives you numerous customization options that make reading more enjoyable.
Deciding that having a backup of my purchased ebooks was the sensible thing to do, I investigated how to download my Kindle library. What I discovered was nothing short of disappointing and pushed me toward getting out of the Amazon ecosystem as quickly as possible.
Amazon gives you two frustrating options:
Even with collections in the Kindle app, you face download thresholds that prevent bulk downloading. And to add insult to injury, most of the ebooks still had DRM protection.
Fortunately, there are solutions for managing your own ebook library:
For downloading your entire Kindle library, I recommend an amazing project by a Chinese developer: Kindle_download_helper.
Disclaimer: On February 26, 2025, Amazon removed the download option for purchased ebooks and displayed a disclaimer stating that you only purchase a license. I'm posting this blog out of principle. Richard Stallman was right all along.
There's growing criticism about Amazon's monopolistic practices, exclusive deals, and efforts to build a protected ecosystem accessible only through Kindle devices. This makes purchased ebooks excessively expensive considering the risks:
For Audible audiobooks, the escape route is somewhat easier. Applications like OpenAudible ($22 for a year or $70 for a lifetime) offer reasonable solutions when you want independence from your audiobook library.
For managing my audiobook collection, I use Audiobookshelf, which even supports archiving podcasts. There's also a project called Libation available as a Docker container that only needs Audible cookies to download your collection.
While I still believe in supporting creators and writers, I also believe in owning what I pay for. Breaking up with Amazon's digital ecosystem has been liberating, and I encourage you to consider how much control you want over your own digital library.
Failed to get a ticket during the public presale. It seems there were limited tickets, and by the time I finished the captcha and waited in line, they were all gone. Lesson learned for next year.
I've contacted someone offering a spare ticket and feel about 60% sure it's not a scam. If it works out, I'll head to Hamburg for tech talks, stickers, and meeting like-minded people.
The last congress, 37c3, was technically excellent. Politically, less so. But I'm still looking forward to the event. Fingers crossed for a smooth ticket handover.
Shell abbreviations have become an essential part of my workflow, often taking priority over traditional aliases. The main reason? Abbreviations allow me to complete the full command directly in the shell, providing clarity without needing to remember what's hidden behind an alias. They make the workflow more transparent and adaptable.
While aliases work well in some cases, abbreviations strike a better balance of flexibility and clarity. They're particularly useful when paired with plugins like autopair.fish or zsh-autopair for Zsh. Combined with Fish's excellent out-of-the-box autocompletion, this setup makes working in the shell smooth and intuitive.
For example, an abbreviation like (fish shell):
abbr gc --set-cursor=! 'git commit -m "!"'not only expands the command inline but also places the cursor inside the double quotes, ready for the commit message. It even sets the double quotes for me, which is incredibly comfortable and saves time. This small but impactful feature reduces friction in repetitive tasks and makes command composition much faster.
abbr kex --set-cursor=! 'kubectl exec -it ! /bin/bash'This lets me type kex, use tab completion to select the desired pod, and seamlessly enter an interactive shell inside the container. The integration of abbreviations with autocompletion feels natural and heavily streamlines tasks that would otherwise involve longer, error-prone typing.
This small but powerful feature streamlines tasks and removes unnecessary steps, making it incredibly efficient for frequent workflows.
Hello friend. Test, ᛉ. This is just a test.