Kristof Zerbe
banner
kiko.indieweb.social.ap.brid.gy
Kristof Zerbe
@kiko.indieweb.social.ap.brid.gy
Developer and Team Lead located in Wiesbaden, Germany

I started my professional IT career with Microsoft Access 1.1., at a time when most people disabled […]

[bridged from https://indieweb.social/@kiko on the fediverse by https://fed.brid.gy/ ]
New Approach on Sending Webmentions

Console Script vs. #echofeed

Four years ago, I made this blog fit for IndieWeb. The most important part for me was the integration of Webmentions, which are mainly automated “pings” sent from one website to another, telling the latter: “Hey, I mentioned your […]
Original post on indieweb.social
indieweb.social
January 8, 2026 at 11:35 PM
✍️ ChartsCSS - Without a single line of JavaScript

How to spice up boring HTML tables just with CSS

I’ve known for a while that I want to add a statistics page to my blog. Just for the fun of tinkering with code, without any deeper reason. In the summer, I wrote down my ideas on a few Obsidian […]
Original post on indieweb.social
indieweb.social
January 6, 2026 at 6:17 PM
Today, we had a visit from an animal that is quite rare in a city, a Gray Heron, which probably needed to inspect our neighbour’s little fish pond with the Kois. What a beauty …

https://kiko.io/notes/2026/Unexpected-Visitor/
January 2, 2026 at 5:36 PM
🔗 The Future of Software Development is Software Developers – Codemanship's Blog

From an IT perspective, there is nothing more to add here. From a sociological perspective, however, AI will continue to cause serious headaches […]
Original post on indieweb.social
indieweb.social
December 30, 2025 at 8:38 AM
Reposted by Kristof Zerbe
"Airbus is preparing to tender a major contract to migrate mission-critical workloads to a digitally sovereign European cloud – but estimates only an 80/20 chance of finding a suitable provider." #technology https://werd.io/airbus-to-migrate-critical-apps-to-a-sovereign-euro-cloud/
December 20, 2025 at 2:29 PM
✍️ App Defaults 2025

While preparing this new AppDefaults post for the passing year 2025, I took a look back at the two previous posts from 2023 and 2024 and find it exciting to see how my behavior has gradually changed over time.
A slight shift away from the tools offered by large American […]
Original post on indieweb.social
indieweb.social
December 19, 2025 at 5:14 PM
Reposted by Kristof Zerbe
December 17, 2025 at 4:01 PM
Reposted by Kristof Zerbe
December 16, 2025 at 9:29 PM
Reposted by Kristof Zerbe
I made an API and Javascript library that can do autocomplete, address validation and reverse geocoding in Germany as an alternative to Komoot Photon and the Google Maps APIs.
It is released under AGPLv3 license, so anyone can freely use it as long as they publish changes they have made to the […]
Original post on chaos.social
chaos.social
December 13, 2025 at 10:14 PM
Reposted by Kristof Zerbe
please just hear me out
December 9, 2025 at 9:25 AM
Reposted by Kristof Zerbe
@Mastodon I think @govdirectory might be useful in this context: https://www.govdirectory.org/
It is a collaborative directory of government agencies, using data from @wikidata. Developed by @ainali and @abbe98 and supported by #WikimediaSverige.
Govdirectory
Govdirectory is a crowdsourced and fact checked directory of official governmental online accounts and services.
www.govdirectory.org
December 9, 2025 at 1:57 PM
Reposted by Kristof Zerbe
For decades, RSS has been a workhorse that connects systems on the timely web and ensures that publishers can syndicate and grow their reach. Here's why it matters more than ever. https://werd.io/why-rss-matters/
December 9, 2025 at 2:04 PM
Reposted by Kristof Zerbe
🆕 blog! “The Web Runs On Tolerance”

If you've ever tried to write a computer program, you'll know the dread of a syntax error. An errant space and your code won't compile. Miss a semi-colon and the world collapses. Don't close your brackets and watch how the computer recoils in distress.

The […]
Original post on mastodon.social
mastodon.social
December 4, 2025 at 12:37 PM
Reposted by Kristof Zerbe
The Oxford Word of the Year is "rage bait" 🙁

In a world seemingly filled with "rage bait", we're building technology that lets you connect authentically. That's why we carefully designed consent-respecting Quote Posts. Free speech isn’t about giving hate a […]

[Original post on mastodon.social]
December 5, 2025 at 4:03 AM
Reposted by Kristof Zerbe
Ein wenig #physik zum Thema "hocheffizienter Verbrenner" ;-)
(via Stefan Rahmstorf entdeckt)
https://heinerm.substack.com/p/hocheffiziente-verbrenner-my-ass
December 2, 2025 at 9:24 PM
Reposted by Kristof Zerbe
A pragmatic guide to modern CSS colours - part two

Kevin is back with the follow up to part one of this series. This time, Kevin goes deep on how functional the newer colour capabilities are in practice to hopefully, encourage more designers to use their browser more often […]
Original post on front-end.social
front-end.social
December 2, 2025 at 3:08 PM
✍️ The Long Farewell to Stylus

Switching from Stylus to CSS in Hexo, Part 1

Since I decided in 2019 to use the static site generator (SSG) Hexo as the foundation for my blog, I have been struggling with the fact that it works with the CSS preprocessor Stylus via a pre-installed plugin. I […]
Original post on indieweb.social
indieweb.social
December 1, 2025 at 8:27 AM
🔗 StreetComplete - Contribution while passing by

I have been working with #openstreetmap for a while now from the developers’ perspective, who can use it to conjure up attractive maps, such as my Photo Map, on the web free of charge. However, I am not part of the community, nor have I given […]
Original post on indieweb.social
indieweb.social
November 27, 2025 at 5:51 PM
Reposted by Kristof Zerbe
This is great and will give you a chuckle.

https://busysimulator.com/
Busy Simulator
Pretend you're busy by playing a bunch of app notification sounds. Made by Brian Moore.
busysimulator.com
November 21, 2025 at 4:03 PM
Reposted by Kristof Zerbe
Zum Abend noch einige der heute besonders häufig geteilten #news:

Digitaler Rückfall in die 90er: US-Sanktionen treffen französischen Richter […]
Original post on social.heise.de
social.heise.de
November 21, 2025 at 4:46 PM
REP: Embedding Bandcamp Tracks

Recently, I was greatly inspired by @kizu to add another, audible layer to my blog posts…

At the beginning of the month, I complained to myself in a post that I hardly listen to music anymore, even though it seems to help me in stressful times. Just as I […]
Original post on indieweb.social
indieweb.social
November 16, 2025 at 7:03 PM
📷 European Perspectives - The EP in Strasbourg

Earlier this year, my sweetie and I made a little trip to nearby Strasbourg. Not only because I really like the city and its French flair (she has never been there before), but also because I had never set foot in the European Parliament (EP) […]
Original post on indieweb.social
indieweb.social
November 10, 2025 at 8:34 PM
Mentions United, GitHub & GraphQL

It was time for a native Mentions United Provider Plugin for #github, because the old chain Site → GitHub → brid.gy → webmention.io → Site seems to be broken...

https://kiko.io/post/Mentions-United-GitHub-GraphQL/
Mentions United, GitHub & GraphQL
A few months ago, in my post Using GitHub as Commenting Platform, 2025 Edition, I explained how GitHub Issues can be used quite easily as a commenting platform: 1. Create a GitHub issue for each post that contains at least the post URL 2. Add a syndication link to the issue on the post page 3. Let Brid.gy and Webmention.io do their job 4. Integrate Mentions United into the page to display comments via the Provider Plugin Webmentions So I’ve made it a habit to syndicate every new post in a GitHub issue. This saves me from having to set up my own spam-proof comment system, which is difficult or even impossible to implement on SSG sites anyway. One might argue that the data chain **Site** → **GitHub** → **brid.gy** → **webmention.io** → **Site** is quite long and offers a lot of room for errors, but all I can say to that is: Yes, you’re right, because that’s exactly the case at the moment! A blog like this, with two or three posts a month (if there’s time), isn’t exactly flooded with comments, so some time passed before I noticed that brid.gy is still polling my GitHub account, but unfortunately isn’t getting any results and therefore isn’t passing along any web mentions for GitHub issue comments. The chain has been broken! I will certainly inform the creator Ryan Barrett about this, but that doesn’t help me at the moment, so I decided to build a native GitHub provider plugin for Mentions United. * * * ## The GitHub Provider Plugin The process wasn’t really that complicated, because my code template for new Mention United providers already contains the basic structure, which I just had to fill up. It was also a little easier for me here because, unlike my native Provider Plugin for Mastodon, I didn’t need to evaluate any instances here, but could go directly to https://api.github.com. The first calls to the API endpoint relevant to my purposes, `https://api.github.com/repos/{{OWNER}}/{{REPO}}/issues/{{ISSUENO}}/comments`, returned a lot of data, 80% of which I didn’t need, but some of which was missing. GitHub only resolves the author of a comment via REST in a `login` object, which does not contain the user’s name. To get that, I would have had to use another API endpoint. The GitHub GraphQL API seemed to me to be a much more elegant, time-saving, and resource-efficient approach. It was the perfect opportunity to finally get to grips with GraphQL. Unlike a classic GET request to a REST URL with various URL parameters, GraphQL only has one URL to which you send a query specifically defined for this retrieval using POST in the request body. Here is my first attempt, which reads as follows: Query the repository XXX of owner YYY for all issues with the number ZZZ and output the fields `url` and `title` and the first 100 comments in a nodes list with the fields `id,` `login,` `body,` `url,` and `createdAt`: POST https://api.github.com/graphql Authorization: Bearer {{TOKEN}} Accept: application/vnd.github+json X-REQUEST-TYPE: GraphQL query { repository(owner: "YYY", name: "XXX") { issue(number: ZZZ) { url title comments(first: 100) { nodes { id author { login } body url createdAt } } } } } The trick to outputting additional author information is to first include the type of the `author` field using `__typename`, because the interface can be either a `User`, a `Bot`, or an `Organization`, and then explicitly define it as a user in order to output additional fields of exactly this type: author { __typename ... on User { login name avatarUrl websiteUrl } } Once you understand the construct, calling up a GraphQL query like this is quite simple. Here is an excerpt from the finished plugin, which is freely available on GitHub: issueCommentQuery() { return { query: `{ repository(owner: "${this.owner}", name: "${this.repo}") { issue(number: ${this.issueNo}) { url title comments(first: 100) { nodes { ... more fields } } } } }`}; } let fetchOptions = { method: 'POST', headers: { 'X-REQUEST-TYPE': 'GraphQL', 'Accept': 'application/vnd.github+json' }, body: JSON.stringify(this.issueCommentQuery()) }; const apiResponse = await fetch(this.graphApiUrl(), fetchOptions); const apiData = await apiResponse.json(); * * * ## Conclusion Another native Mentions United plugin, and one that I will be expanding in the near future, because this mechanism also allows you to pull all issues and comments from GitHub where your post URL has been mentioned. Here is an example of what the result looks like: How-To: Visual Studio Database Project and ADSI - kiko.io If you are working with a Visual Studio Database Project and have to deal with data from the Active Directory via a Linked Server, you have to announc... kiko.io
kiko.io
November 9, 2025 at 4:00 PM
Reposted by Kristof Zerbe
"Waterline" on #climatechange by James Colomina in Amsterdam, Netherlands.
November 9, 2025 at 9:32 AM