I hate apt

Let me start this post by writing how much I thank the Ubuntu, Debian and therefore also the apt ecosystem to be there in my life. It was there when I operated VPS back in 2010, it excited me in 2013 when I used Ubuntu as my main Desktop Operating System, and therefore it prepared my path to become a Software Developer and Founder before I even earned my first dime.

Read more

Keeping your Dotfiles in Sync and your Secrets in Gopass

Inspired by solutions how Secrets are being handled in corporate DevOps environments, I wanted to keep my Dotfiles on multiple machines in Sync and store all sensitive information inside gopass (which I started using instead of KeePass some time ago since I like the CLI and Unix / KISS aspect of it)

Luckily, I am not the first one to have such desires and I came across chezmoi which manages your Dotfiles for you inside a Git Repo and which also has support for gopass.

Read more

Manually Migrate ZITADEL with PostgreSQL

As you, the reader, found this article, it is likely that you want to manually migrate the ZITADEL PostgreSQL database to a new version.

Now, normally this step is being done by the zitadel setup command with the --init-projections=true flag but, as we all know since “2001: A Space Odyssey”, computers can’t be trusted - so you are either paranoid or something went terribly wrong.

For manually updating the database, we should first understand the structure a bit. So far, the Zitadel Team seems to use versioning for their tables - meaning they create a new table for every change instead of just altering the current table. This leads to some beautifully structured schemas full of tables like users6, users7 and users8 up to users10.

Read more

Introducing network.txt: A Standard for 3rd Party Data Transparency

In today’s digital age, privacy and data protection have become major concerns for both website visitors and developers. With the introduction of GDPR laws, it’s important for websites to provide clear information about the sharing of personal data with 3rd party providers. This is where the proposed standard, network.txt, comes into play.

What is network.txt?

network.txt is a new standard that provides information about the use of 3rd party providers on a website. It’s a simple text file that is both readable by humans and programs alike. The purpose of network.txt is to offer an easy and standard way for visitors to understand which 3rd party providers are being used on a website and where they can find the privacy policy and terms of the website.

Read more

State of OpenID Connect Providers

In the last days I tried to integrate multiple OpenID Connect Providers into my Applications (currently mostly Alphalerts and some dev projects)

So far, I only got Google to work, and even this is currently limited to 100 Users. In this blog post, I want to explain why the integration of OpenID Connect Providers is such a struggle by showing multiple examples.

But before I show the examples, you should know that there are not so many big OpenID Connect Providers compared to the big OAuth2 Providers. E.g. GitHub offers OAuth2, but is not a OpenID Connect Provider yet.

Read more

The Dangers of PFOA

PFOA, also known as perfluorooctanoic acid, is a synthetic chemical that has been used in a variety of industrial and commercial applications. It is a key ingredient in the manufacture of Teflon, a non-stick coating used in cookware and other products. PFOA has also been used in the production of firefighting foams, stain-resistant coatings for carpets and clothing, and other products.

Despite its widespread use, PFOA has been linked to a range of serious health problems in both humans and animals. Studies have shown that PFOA can cause developmental and reproductive harm, liver damage, and cancer. In particular, PFOA has been linked to an increased risk of testicular and kidney cancer.

Read more

Simplify Your Code with TypeScript Barrels

A TypeScript Barrel is a way to simplify the importing of multiple exports from a single module.

Imagine you have a module called myModule that has several exports, such as:

export const foo = 1;
export const bar = 2;
export const baz = 3;

To import these exports into another module, you would normally have to write something like this:

import { foo, bar, baz } from './myModule';

This can get tedious if you have a large number of exports, and it can also make your code less readable. This is where TypeScript Barrels come in.

Read more

Why everyone should know KPIs

Every Investor has to know KPIs (Key Performance Indicators) to value Investments. But why did I write that everyone should know them in my title?

Knowing KPIs helps you even if you don’t invest any of your money. It helps you e.g. decide which job you should take or which customer you should prefer.

Deciding between Job Offers - an Example

Recently, I decided to start freelancing besides working on my own projects. I contacted some possible customers and some companies contacted me.

Read more

How legit is a NewsWatch TV Feature?

Many founders get Emails from NewsWatch TV saying that they will promote your company on an American Television “Morning Show”.

I also got a similar Mail for Alphalerts.com and want to explain what you, as a Founder, should think about that.

Firstly, if you get such a Mail, it is likely that you promoted your product on ProductHunt lately. NewsWatch seems to scrape the ProductHunt listings and even the founder of ProductHunt wrote a tweet about it:

Read more

Drone CI with Podman

I run Drone CI for a longer period now with Docker. Because I decided to switch for multiple reasons from Docker to Podman, this setup had to be changed a bit.

In this blog post, I want to cover how to install Podman and how to set up Drone so that it works with Podman.

Installing Podman

Install the podman and podman-docker packages. E.g. on a Debian based System:

apt install podman podman-docker

If you currently use docker-compose, then you should also install podman-compose:

Read more