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

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).

Let's write FizzBuzz in a functional style for no good reason

Let’s write yet another FizzBuzz because that’s what the world needs. Here’s the twist though: ours won’t be like those other fuddy-duddy lame and bloated enterprise-grade FizzBuzzes. Oh no, we are ahead of the curve this time, it’s functional time, baby! We will be using Python though, because Python and Javascript is the closest most of us will ever get to using a functional programming language in production.

Testing Fennel in busted with Lua

Fennel is a Lisp-like language which compiles down to Lua, so it should be possible to test Fennel scripts in busted. Indeed, we can, but there are a few points to note about testing Fennel code in Lua.

Introducing neotest-busted

The conclusion of the Neovim & Busted testing sage is coming to a close with this new plugin: neotest-busted (GitHub mirror). In my previous post I mentioned that that I wanted to write a Neotest adapter for the busted test framework, so here it is.

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