My Projects

On this website you will find my projects and other information about me.

Tutorials §

Last updated
April 14, 2026Running Windows games on Linux using Wine and DXVK in a sandboxAlternative link
April 8, 2026Set up an Xray-core VLESS proxy to access blocked websites and apps
January 12, 2026Obfuscating WireGuard using WstunnelAlternative link
December 3, 2025Encrypting your files in the cloud using securefsAlternative link
August 25, 2025Run WordPress in a container using Docker ComposeAlternative link
May 28, 2025How to use FFmpeg for video editingAlternative link
January 27, 2025Restrict access by an IP or password in nginxAlternative link
January 27, 2025Installing and configuring WireGuard VPN on UbuntuAlternative link
August 19, 2024Analyze nginx access log using SQLAlternative link
December 11, 2023Installing WordPress on UbuntuAlternative link

Programming projects §

All my projects are created without the use of large language models and generative AI, unless explicitly stated otherwise.

Switch between mpv playlist entries using fzf (with EPG support in XMLTV format)

Use fzf in your terminal to select which playlist entry to play in your mpv media player. Provide a link to XMLTV to see the current TV programs.

Control mpv using a web browser

Remote control for the mpv media player that works over HTTP. Use your PC or mobile phone to start/stop playback, adjust playback speed, change the volume, select subtitle/audio tracks, and open files or URLs.

Blocks game

A tetris clone for the terminal that works on Windows and Linux. It is written in Python using a library called blessed.

Change the default track in an MKV file

Set the default flag for a track in an MKV container. Especially useful when multiple tracks of the same type and language are present.

Implementation of the Hunt-McIlroy algorithm and the diff command-line utility

A reasonably fast diff utility and library in Python. It implements the Hunt–McIlroy algorithm and prints results in the so-called “normal format.”

Simple regex implementation in Python

A simple regular expression matcher supporting a subset of commonly used features.

Find all links and images in Markdown files. Output them one per line for further processing.

Read URLs from a file and check them to find the broken ones using a real browser.

Text editor implemented from scratch using HTML5 Canvas API

A text editor with a UI built on top of an HTML5 canvas. All standard text editor features such as the cursor, selection, and scrollbars are implemented from scratch using graphics primitives provided by the Canvas 2D rendering context.

Autoinsert the language into Markdown fenced code blocks

Modify Markdown fenced code blocks to contain the language name by detecting it from the block contents.

Image Resizer

A GUI app written using NW.js that wraps GraphicsMagick and allows you to resize images and optimize them in bulk.

My website

I created my multilingual website using the Hugo static site generator.

Hugo was chosen because it’s good enough for my needs and it’s a single binary, so there is no need to install dependencies.

I decided to create my own layout instead of using a pre-made theme.

Languages: CSS, Go templates, HTML, Markdown

WordPress Websites

I have experience with the WordPress CMS. Here is a list of things I have done using it:

  • Created a number of WordPress websites for myself and for my clients.
  • Developed custom WordPress plugins and themes.
  • Deployed WordPress websites to production using Nginx, PHP-FPM, and MariaDB.
  • Fixed bugs and vulnerabilities in existing websites.

Languages: CSS, HTML, JavaScript, PHP

Projects I contributed to §

Hetzner Community Tutorials

I have contributed heavily to the Hetzner Community Tutorials project. This project provides an opportunity for people to share their technical tutorials with the Hetzner Community and the rest of the world.

Here are some of my contributions:

  • Written a number of technical tutorials and improved many others.
  • Used scripts to perform maintenance tasks such as storing images consistently and fixing broken links.
  • Created a JSON schema for tutorial front matter that automatically checks whether authors have filled out the front matter according to the requirements.
  • Improved the GitHub Actions workflow.

Training §

At the time of this writing 27 reps is my personal record.

I don’t quite like my technique in this video. I did 27 reps in a better technique, but I don’t have a recording.

Pull-ups 25 reps in one set

September 4, 2025

The first time I was able to record 25 reps in pull-ups. In my opinion the technique is good here.

Contact §

If you want to contact me, you can drop me an email.