Safer Git Force Push with Lease

When using advanced workflows involving history rewriting features, sometimes a force push becomes necessary. This can become dangerous but git's force-with-lease feature can help.


Rainbow Tunnel: Vanishing Colors Illusion

A couple of years ago, while experimenting with my program Viplex, I have come across an optical phenomenon: When creating what could be best described as a rainbow tunnel, looking at its center, and zooming out the view continuously for a couple of seconds, I got the impression the colors of the rainbow vanished. Instead of colors the whole view was shades of grey!


Setting up a statically-typed Python programming environment with mypy and Poetry

Recent versions of Python allow optional type annotations to be added to the source code. In this short guide I show how the type checker mypy can be integrated into the programming environment using the dependency management utility Poetry to enable gradual static type enforcement of Python programs.


Understanding terminal control keys

Many commands involve the use of the control key which most commonly (in the context of the terminal) is signified using a caret and a capital letter. But if you have used terminal programs for a non-trivial amount of time, then you know that not all control keys are made equal.


Taking Markdown Notes in Vim

Taking notes in a single place can be a very useful tool to organize your ideas and concepts so they don't get forgotten. By writing down your ideas and problem solutions, you'll know where to look when you encounter similar use case. The notes can be best kept up-to-date and organized with a unified digital format. Here I present what a arrangement of tools for Markdown note taking can look like.


How to add Dear Imgui to an SDL2+OpenGL project

During the development of many (visual) applications and tools a simple ad-hoc GUI-library can be very useful to interactively experiment with different settings and inspect values for debugging. The Dear Imgui C++-library fits this niche perfectly.


Manipulating Markdown checkboxes with Regexes in Vim

Regular expressions are a powerful tool for searching (and replacing) text. Here we want to use them to interact with checkboxes when editing Markdown in Vim.


How to setup an SDL2+OpenGL project with CMake

The SDL2 library can be used to create and manage an OpenGL environment, which then can be accessed directly using the OpenGL API. This is a quite comfortable alternative to the "common" ecosystem of add-ons and extension wranglers. But how exactly to setup the build, i.e. what headers to include and what libraries to link to, is quite hard to find out.


Using rsync

The command line tool rsync commonly found in many Linux distributions is a powerful tool for synchronizing files in directories. It is useful for keeping mirrors of directories up-to-date with minimal effort and data-transfer. This includes copies on remote machines and web servers.


Why do we need header files in C and C++?

Header files are an important part of programming in C. But they are a clunky, error-prone, and redundant nuisance. How did they come to be? What function do they have?


Solvemind - Mastermind game and analyzer

I have recently released a simple terminal based Mastermind game: Solvemind. It is available on Github. In this game you can step by step deduce the secret code to win the game. Additionally this implementation enables you to analyze the current situation and possible guesses.


Pandoc's Markdown is great!

This post is a shout-out to the great tool that is Pandoc. It is a really nice document converter! It enhances its Markdown with various extensions.


Robot Drawing on Whiteboard

I have recently built a robot drawing on a whiteboard using a Raspberry Pi 3 and Lego-motors. I have made a video of me controlling it. Here is a presentation of the robot's setup and the way it is built.


Equipping a Raspberry Pi With Sensors

Recently I decided to blow the dust off my old RPi 1B and buy a package of sensors and emitters: Sunfounder's Sensor Kit v. 1.0. This is a guide to its usage.


The design of the website has changed

This website now features a new light colour theme.


Network Model of Fighters

My combat game (prototype) Fighters works over a network connection. I want to present some insights into its networking model. The main idea is the synchronized connection to a central server.


Prototype of Fighters is available

The prototype for a network-based combat game, called "fighters", is now finally available to download.


On level design in Blue Bug Bob: Collectibles, Checkpoints and Lifes

This is the follow-up to an article I have written before. This article expands on the ideas and explores the role of collectibles, checkpoints and lifes in platforming games and how this insight was incorporated into Blue Bug Bob.


Runtime Performance with D and its GC

Again and again I read at the D programming language forums that D cannot be really fast. Some people say that the slow conservative GC of the D runtime makes long-running real time application impossible to write in D. This does not at all fit my experience.


Development of Blue Bug Bob #2

I again sum up the development of the past weeks of Blue Bug Bob. It has gone steadily and Blue Bug Bob is nearing its completion.


Development of Blue Bug Bob

I have recently released a new demo of Blue Bug Bob on IndieDB. This included two recent changes to the game, and nobody complained about them so I call that a success. And also now I like them very much and think they are a big improvement: colour adjustments and …


On level design in Blue Bug Bob: Mechanics and Theme

Blue Bug Bob is a two-dimensional platformer with predefined levels. There level design is a central part of the game and contributes much to the feeling of the game. Therefore the level design needs much thought if the game is to be fun and successful. Here I elaborate my thoughts …


New website:

I have finally renewed my website presence. It is now available under With the move the came a change to a more mature design (and the switch of the main language to English). This new design is made possible by a change of workflow. The old page was …


Using D templates for gamedev

Many people disregard the D programming language for gamedev because many of its abstractions rely on the GC. But carefully designed D programs can be as efficient as corresponding C/C++ programs while being more typesafe and better structured. I want to share my experience and some tricks I discovered.