Posts

I run a website called Notfellchen that list animals that are waiting for adoption. It’s currently restricted to fancy rats in Germany and that for good reason: Running this website involves checking every shelter every two weeks manually. You need to visit the website, check if there are new animals, contact the shelter and add them to notfellchen if they allow it. This takes time. A lot.

This blog post will outline some of the things I did in order to streamline this and make it possible to check every german shelter in 2.5 hours.

The fediverse instance gay-pirate-assassins.de was down for a couple of days. This postmortem will outline what went wrong and what I did to prevent things from going that wrong in the future.

Timeline

  • 2025-10-05 17:26: Update announcement
  • 2025-10-05 ~17:45: Update started
  • 2025-10-05 ~18:00: Services restart
  • 2025-10-05 ~18:00: GoToSocial doesn’t come up
  • 2025-10-12 ~10:00: Issue is found
  • 2025-10-12 10:30: Issue is fixed
  • 2025-10-12 10:31: GoToSocial is started, migrations start
  • 2025-10-12 15:38: Migrations finished successfully
  • 2025-10-12 15:38: Service available again
  • 2025-10-12 18:36:Announcement sent

All times are given in CEST.

I spend my day working with Salesforce, a very, very feature-rich CRM that you pay big money to use. Salesforce is the opposite of OpenSource and the many features are expensive. Salesforce business model is based on this and on the lock-in effect. If your company invested in implementing Salesforce, they’ll likely pay a lot to keep it.

So what does an alternative look like? Let’s have a look at Twenty, an OpenSource CRM that recently reached the magic 1.0 version.

Lately I worked on notification e-mails for notfellchen.org. Initially I just sent text notifications without links to the site. Terrible idea! An E-Mail notification I send always has Call-to-Action or at minimum a link to more information.

I left the system like this for half a year because it kinda worked for me (didn’t suck enough for me to care), and I was the main receiver of these notifications. However, as the platform is developed further and more users join I need to think about more user-centric notifications.

Introduction

In the last month I improved the mapping of about 100 german animal shelters - not only out of the goodness of my heart, but because it helped me.

Let me explain why: I develop notfellchen.org, where users can search animals in animal shelters, specifically rats, they might want to adopt. The idea is to have a central website that allows you to search for rats in your area.

This is necessary because only a small percentage of animal shelters has rats. As a user, just checking your next shelter doesn’t work. Some users will stop after checking the second or third one and just buy from a pet shop (which is a very, very bad idea).

Einführung

KI ist überall. Große Teile des Internets werden gerade durch KI-generierten Inhalten überschwemmt. Teilweise zeigen KI-generierte Artikel auch gefälschte Daten (vor 2022) an um so den Anschein zu erwecken nicht KI-generiert zu sein. Verlässliche und authentische Informationen zu finden ist daher um so schwerer.

Deshalb beginnt das Zeitalter der Schriftgelehrten, denn Informationen zu sammeln und aufzubereiten, das ist, was sie tun. Schriftgelehrte*r verwende ich hier als Übersetzung des englischen Wortes “Librarian”. Und so maße auch ich mir an mich (nur) dafür Schriftgelehrte*r zu nennen und versuche auf diesem Blog immer wieder Informationen zu sammeln und zu teilen (ironischerweise in dem Wissen, dass dieser Blog von KI-Unternehmen gescrapt wird).

11 December /

Yes the title is correct, but I had nothing malicious in mind!

What this is about

For @[email protected] we include the public feed in a sidbar on the homepage. Initially this was done using the standard API to fetch statuses /api/v1/accounts/{account_id}/statuses and worked like a charm. The problem started when GoToSocial (the fediverse server we use, similar to mastodon) implemented authorized fetch. This is a a good thing! Authorized fetch means, that every call to a endpoint needs to be authorized by an access_token. You get an access token from a fedi account. It’s what fediverse clients like Tusky or Phanpy do on your behalf to get the posts that make up you timeline.

Introduction

In the previous post I outlined how to set up a Nominatim server that allows us to find a geolocation for any address on the planet. Now let’s use our newfound power in Django. Again, all code snippets are CC0 so make free use of them. But I’d be very happy if you tell me if you use them for something cool!

Prerquisites

  • You have a working geocoding server or use a public one
  • You have a working django app

If you want to do geocoding in a different environment you will still be able to use a lot of the the following examples, just skip the Django-specifics and configure the GEOCODING_API_URL according to your needs.

28 September /

Introduction

Geocoding is the process of translating a text input like Ungewitterweg, Berlin into a location with longitude and latitude such as 52.544022/13.147589. So whenever you search in OpenStreetMap or Google Maps for a location, it does exactly that (and sometimes more, but we don’t focus on that now).

For a pet project of mine (notfellchen.org) I wanted to do exactly that: When a animal is added there to be adopted, the user must input a location that is geocoded and saved with it’s coordinates. When another user visits the site, that wants to adopt a pet in their area, they input their location and it will search for all animals in a specific radius.

Introduction

RSS is amazing! While not everyone thinks that, most people that understand RSS, like it. This presents a problem, as most people don’t have chance to learn about it. Unless there is a person in the community that doesn’t shut up about how great RSS is (maybe that person is you), they might not even know what it is, let alone use it.

One big reason for this is, that when you click an link to an RSS feed you download a strange file that most people don’t know how to deal with. Maybe your browser is nice and renders some XML which is also not meant for human consumption. Wouldn’t it be better if people clicked on the RSS link and were greeted by a text explaining RSS and how to use it? And if the site would still be a valid RSS feed?