Welcome to the workshop

This is my personal website where I post hobby projects and blog about software and various other topics off the top of my head.

Read the blog About me

Latest posts

GitHub does not have to be your only forge

I had moved off GitHub back before it was cool, but recently more and more Free and Open Source projects have been migrating off GitHub as well, and with how much of a shitshow the entire service has become I cannot see why anyone would trust the platform at all anymore. Actually no, I do know one reason: its user base. Pretty much everyone is on GitHub. For all its flaws, GitHub is still solving this one major social problem. I am here to give you the good news that you can get the best of both worlds: move off GitHub and still benefit from its social inertia.

Separation of content and presentation in Tailwind

Every Tailwind example I have ever seen uses inline styling by applying Tailwind utility classes directly to the element. Even the Tailwind website advertises this feature. It was what kept me from trying out Tailwind for years. Eventually I decided to at least give it a try, and I found out that you can indeed separate your presentation from the content with Tailwind.

Switching to Astro

I really, really did not want to do this, but I have rewritten this website again from scratch. This time I’m going all in on the JavaScript ecosystem: TypeScript, Tailwind and Astro. And no, I’m not kidding.

Stop Killing Games needs more support

TL;DR: If you are an EU citizen (not merely a resident) you can sign the Stop Killing Games EU initiative. This is not your typical open letter, this is a government-level initiative that will need to be discussed if it passes. At the moment we have way more than the required million signatures, but we do not know how many of these are fraudulent and might get tossed out. Keep on signing! There are less than ten days left, so don’t put if off. Now for those who don’t know what any of this means, I’ll do my best to elaborate.

Beware of 'require' at startup in Neovim plugins

Recently I tagged version 0.9.1 of rainbow-delimiters.nvim. This update got rid of one really nasty mistake I had been dragging along from the very beginning until just recently: every time you started up Neovim a number of require calls would run even if you never called require a single time yourself. In this post I would like to go over how this happened, why it is bad and how I got rid of it. Even though I am using rainbow-delimiters as an example here, everything I am about to say applies to other plugins as well.

Introducing nvim-busted-shims

I have written in the past about testing Neovim plugins with busted. In that post I outlined how to use a thin command-line wrapper shell script around Neovim to use Neovim as a Lua interpreter and how to configure busted to use it as the Lua interpreter to run tests in. In order to avoid having to copy-paste that snippet over and over again I have created a standalone repository for the shim: nvim-busted-shims (GitHub mirror).

Projects from the workshop

Game source documenation

Game source documentation screenshot

We all love classic video games, and we also love when they get some modern polish. If it just wasn"t for all the encrusted ancient code. This ongoing project aims to document the source codes of old games well enough that a port could be built from the specifications alone.

Learn more

Grid Framework

Grid Framework logo

Grid-based game logic for Unity3D that is both simple and powerful. Custom classes wrap up all the math in a simple, flexible and powerful API for use as it fits your project. Includes also editor extensions and examples.

Learn more

info.vim

info.vim screenshot

A fully-featured reader and browser for info documents from inside Vim. Supports all the same navigation as standalone- and Emacs info, but with all the comfort of Vim.

Learn more

IPS-Tools

IPS-Tools logo

Command-line tools and C library for working with binary patches in the IPS format, supports the common "truncation" extension. Users can apply and generate patches, inspect patch files, and use the library in their own applications.

Learn more

Newton"s method in C

Newton"s method logo

One of my earlier projects written as an exercise for myself. It implements Newton"s method of finding the root of a function in C using only the standard library. The program acts as a compiler and virtual machine for the function string entered and can interpret any legal function syntax.

Learn more

NTFS-Clone

NTFS-clone logo

Create perfect 1:1 copies of NTFS hard drives. The resulting hard drive can be inserted right back into a PC and be booted from without having to run any additional steps.

Learn more

Repl.nvim

REPL.nvim image

Open and manage REPL instances right from inside Nvim, and send text to the REPL buffer. New types can be defined and existing defaults can be altered. An API provides functionality for 3rd party plugins as well.

Learn more

roll

'roll' logo

Generate random numbers from virtual dice. Useful for generating diceware passphrases and whatever else you might need random integer numbers for.

Learn more

XeenTools

Image extracted from the game

An ongoing effort to write a library that can read assets from the Might & Magic IV and V games. The idea is to write a library that can be used as a basis for a modern source port.

Learn more