Table of contents
Moved from Github to Codeberg

I have finally moved all my opensource projects from github to codeberg.
There are multiple reasons:
Privacy Protection
Today Github is owned by Microsoft and as such prone to US government overreach. The US government could order Microsoft to reveal data of their customers and they happily comply, wether lawful or not.
Trump Dictatorship
I am trying to reduce my usage of US products and services as much as I can, because I don’t want to support a dictatorship. Although I could live with some services or products from such states, the US case is a special one because of Trump’s open hostility towards the EU, our freedoms, our rights, our laws and our way to live in general.
Also big IT corporations like Amazon, Microsoft or Google comply willingly with the Trump regime, their owners even donate huge amounts of money to Trump and his supporters. They are accomplice or partners in crime with the Trump regime and the coming dictatorship. I don’t want to use services made by criminals.
Generative AI
The current “AI” bubble affects most corporations, Microsoft and thus Github included. They ignore copyrights of authors, artists and scientists, they really don’t give a shit about the rights of anyone, they don’t give a shit about the environment which they destroy with their incredible hunger for energy.
And although there might be some useful uses of LLMs, in most cases it’s just being used for bullshit, to further enshittificate already bad services, to siphon more data and to to spy on us. “AI” is a fascistic enterprise.
Github rolls their own incarnation of this shit: CoPilot. It ingests the sourcecode of hundreds of thousands developers, ignores their license terms and produces scrap code, which even doesn’t work in most cases. Projects start to develop “AI Policies” to fight the flood of nonsense pull requests by “AI Coders” (i.e. bots).
I don’t want CoPilot to ingest my code and spit out code snippets for those morons using it without any hint to the GPL or my authorship. This is not the way opensource is supposed to work!
Moved
So, I moved to codeberg. In addition I am also a supporting member of the Codeberg e.V.
My repositories on github still exist and will remain there for a while so that users are still able to find them there. Each repo contains a deprecation warning pointing to codeberg and the repos are archived. I created a branch which only contains the README in every repo which is now the default branch on github. The main branch containing the actual code still exists, but will be removed later as well.
See Also
↷ 18.12.2025 🠶 #github #codeberg #opensource #repository #unplugtrump ⤒
Managing hugo with git and ssh on android
So I wanted to be able to maintain my hugo site on my phone, just in case. It works but it was kinda annoying to setup.
You’ll need to install the apps Termux and Acode from Fdroid.
Then start Termux and execute termux-setup-storage and allow access to shared folders.
Next, install git: pkg install git.
Use your favourite file manager and create a working directory somewhere. I use Downloads/git. Then symlink to this dir in Termux:
ln -s /storage/emulated/0/git .
Now, generate a new SSH key pair:
ssh-keygen -t ed25519
Install the public key to your repository. I am using Gitolite, so I added it to the keydir in the gitolite-admin dir.
That’s basically it. Clone your repo, open the folder with Acode, edit or add files and commit and push them to your git repo.


I’ll not describe, how to setup gitolite and the hugo repo, maybe in a follow-up post.
↷ 17.04.2025 🠶 #hugo #git #android ⤒
Relaunch
I got finally rid of jekyll. It was a good system and served me well over the past years. But it has its quirks, has too many dependencies for my liking and it requires me to have a ruby interpreter to be installed in the jail.
Hugo on the other hand is written in Golang, it’s a self contained binary. Easy to use and to deploy. Although I had some trouble with templating, I got it to work with the help of the nice people on their forums. And it’s really fast.
Only the tags page is still missing, I’ll build it later.
While I was at it, I repaired the blog posts, mosts of them contained images with invalid uri’s.
So, I’m happy as it is now.
Was übrig bleibt
“Wirklich bedauerlich” blaukräuselte die alte Botschafterin während sie die in der aufgehenden Sonne knisternden Reste Berlins betrachtete, schließlich mit ihrer fünftrechten Tentakel das Bugfenster schloss und Schub gab, um den herzerreissend schönen Planeten das letzte Mal zu verlassen. Das Vaterschiff meldete sich: “Und, wie ist Deine Prognose, Rimaka?”.
Sie drehte sich zum Sensor und musterte zurück: “Sie werden aussterben. Dreihundertneunzig thermonukleare Explosionen haben wir gezählt. Es gab mehrere Tsunamikaskaden. Über neunzig Prozent der Lebewesen an Land wurden vernichtet. Wir haben hier nichts mehr zu tun.”. Helle grüngelbe Wellen signalisierten: “Aber es besteht noch Hoffnung, hat es geheißen?”.
“Ja, in den Meeren leben mehrere Arten Kopffüsser. Nicht sonderlich intelligent, aber mit Potential. Das wird aber noch viele Millionen hiesige Jahre dauern, bis sich ein erneuter Besuch lohnen wird.”, antwortete sie sichtlich niedergeschlagen. Über zehn Jahre aufwändige Forschungsarbeit hatte sie für die Vorbereitung des Erstkontakts bislang investiert - jedoch war alles umsonst gewesen, der Krieg der Landläufer war die furchtbarste Dummheit, der beizuwohnen sie gezwungen gewesen war. “Aber die Inhalte des Datennetzes der Wesen konntest Du noch sichern?”, erkundigte sich das Vaterschiff mit lilabraunen Senkrechtmustern, die sie wohl trösten sollten. Rimaka wedelte ungehalten mit der zweitlinken Tentakel: “Da war nicht viel zu holen, das Netz war erst 50 hiesige Jahre alt. Ich habe den Kristall nicht einmal zu 5 Prozent gefüllt.”. Damit beendete sie die Verbindung.
Die Botschafterin blickte auf die immer kleiner werdende blaue Kugel zurück und schüttelte sich enttäuscht. Wieder eine Spezies mit hohem Potential, einer wunderbaren Kunst, erstaunlicher Kreativität und einem herrlichen Humor - verloren. Sie hatten schon so viele solcher Ereignisse beobachten müssen. Und doch war es jedesmal deprimierend.
↷ 02.04.2025 🠶 #kurzgeschichte ⤒
better git history using fzf
Looking at past versions of a whole repository or just one file is a very common git task for me. So I build an git alias around it, which over time evolved to this script:
#!/bin/sh
file="$1"
commit=$(git log --decorate --no-merges $file | \
fzf --preview "git show --color=always --format=fuller -U0 --stat -w {1} $file" \
--border-label="$(git remote --verbose|grep push) - $(git status | head -1)" \
--layout=reverse-list --border=bottom \
--height 100% --with-nth=2.. | cut -f1 -d' ')
if test -z "$commit"; then
exit
fi
if test -n "$file"; then
git show "$commit:$file"
else
git checkout "$commit"
fiI have added it to my ~/.gitconfig like this:
[alias]
history = "!githistory"Now, if I execute git history while in a repository, I get a nice fzf selection of all commits with a preview of the commits. I can also add a filename as parameter, e.g. git history src/grid.go and only browse the commits regarding that file.
When I hit <ENTER> then the commit will be checked out or - if I am looking at one specific file - git show of that file in the selected revision will be run.