Setting up Git to ignore changes on existing config files

Git is a powerful tool for version control and managing changes in code. One of my main issue on using it on real projects, are config files. I couldn’t just add them to the .gitinore-file, because I needed them to be there, but I didn’t want them to accidentally be included in any commits and screw up the working copies. While looking for a fix to this issue, I stumbled upon an option to tell git to ignore changes on specific files: git update index --skip-worktree <file1> <file2>. ...

March 7, 2023 · 2 min · Marcel Jurtz

CI/CD for Hugo with GitHub Actions

I’ve been moving this site to hugo quite a while ago, but only recently stumbled across the idea to create a workflow on GitHub Actions to build a hugo site straight after each push. Contrary to many other articles however, I didn’t have the option to publish the page to GitHub Pages or similar, simply because the project still is under heavy construction. So, I had the following requirements: Start workflow after each push, but also enable manual triggering for testing purposes Build the site, considering it requires additional dependencies due to relying on Googles Docsy-Theme Bonus: Use a tool to verify the integrity of all the internal links and images to verify correct paths Let’s keep it simple: I started with a regular setup of the repo on an up-to-date Ubuntu container: ...

January 20, 2023 · 5 min · Marcel Jurtz

Editing Zwift Workouts in C#

I’ve been using Zwift pretty extensively for the last few months. For anyone unfamiliar: Zwift is a VR Biking platform. That means, you can put your bike on a smarttrainer, connect it to your pc (directly via ant+ / ble or by bridging with your phone), and then you can ride virtual worlds without having to go outside. Sounds not too bad, right? After a few sessions, just riding became kind of tedious, so I’ve tried to do some of the preconfigured workouts. You can either do workouts by themselves or follow a trainingplan, which consists of multiple workouts that you have to complete to a given date. The workouts all have the same structure. They consist of different blocks, that can have a variety of requirements. The blocks that are available are either steady pedaling, ramps (up or down) or intervals (alternating steady blocks of high and low power which are repeated to a predetermined extent). Basically, there are some more types, but we’ll get back to that later. Let’s take a look at one of these workouts for example. ...

April 19, 2020 · 12 min · Marcel Jurtz

Getting Started with Unity ProBuilder

ProBuilder allows you to bring more complex objects into your Unity scene without requiring in-depth knowledge of modeling programs such as Blender or Cinema4D. By now ProBuilder is integrated into Unity and can also be used free of charge in the Community Edition. In todays article I want to show you how you can integrate ProBuilder into your project and start modeling. ProBuilder is not installed on your project by default, but you can add it via Window - Packages - All. After that you will find a new menu entry under Tools - ProBuilder, from where you have access to the different functional areas. The ProBuilder Window can also be opened and integrated into your workspace from there. ...

March 3, 2019 · 3 min · Marcel Jurtz

Introduction to RegEx

As a developer you have probably already worked with Regular Expressions. If you’re like me and didn’t need them too often, you probably googled them up more than you wrote them yourself. So today I’d like to go through the basics of Regex and show you how to build regular expressions and how to write them yourself. If you haven’t had anything to do with this topic before, this post is still for you, of course. Regular Expressions are a way to check strings against a certain pattern, for example if it is alphanumeric or contains only uppercase letters. Regular expressions are supported by many different programming languages, so you don’t have to learn that again with different syntax. ...

February 24, 2019 · 4 min · Marcel Jurtz