Skip to main content

· One min read
Stephan Hochdörfer

Whilst configuring our Office 365 tenant via Powershell, one command failed with a server error. It did not spit out an error code or message, just a generic error message. After trying a few workarounds, I thought, I'd better check if my user has all the permissions needed.

· 3 min read
Stephan Hochdörfer

For a few internal applications, we manage downstream forks with some customizations tailored to our needs. We try to contribute as many changes to upstream as possible, but for some cases, this does not make sense, e.g. when we customize user synchronization processes.

· One min read
Stephan Hochdörfer

According to Microsoft Windows Hello is a "more personal, more secure way to get instant access to your Windows 10 devices using a PIN, facial recognition, or fingerprint". Wouldn't it be cool to use it to authenticate sudo via face recognition, fingerprint authentication, or a machine-local PIN? Luckily there's a PAM module that does exactly that and it is working perfectly for me so far.

· 2 min read
Stephan Hochdörfer

A while ago we took over a Magento 1 shop that was migrated over to Magento 2. Some products and categories has a “.html.html” url postfix and the merchant wanted to have this fixed. When data was migrated from Magento 1 shop, the url keys came with ".html" suffix. On Magento 2, you have url_key and url_path attributes that help creating the urls for products and categories. Since the url_key attribute contained the “.html” postfix and url_path appended an additional “.html” postfix, the source of the problem was found.

· One min read
Stephan Hochdörfer

Simply put, error 1062 is caused when MySQL finds a DUPLICATE of a row you are trying to insert. I sometimes hit this error when importing database dumps of applications that have been in production for a long time. The “fix” is easy: Find the duplicate data and delete it. Depending on your database structure it might not be that easy though. I that case, I configure MySQL to ignore those errors, for local development I find that approach acceptable. For dockerized setups, you can pass a “sql_mode” flag to the container which then will be interpreted by the MySQL server during startup. The docker-compose configuration that works for me looks like this:

· One min read
Stephan Hochdörfer

There is an issue with WSL 2 where the clock in a WSL 2 instance isn't updated when the host resumes from sleep/hibernate. This can lead to problems when you want to install Linux packages or when creating or modifying files in general.

· 2 min read
Stephan Hochdörfer

Testing GitLab CI build pipelines can be a bit annoying. You must make your changes, commit and push them to kick off the CI pipeline. Then you have to wait a while for the result to show up and start over again if something went wrong. If your CI runners are busy, you keep waiting and waiting for the next free slot. Luckily, it is possible to run GitLab CI jobs completely locally. After installing the gitlab-runner package locally, you can execute a job like this: