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.
This is my personal website where I post hobby projects and blog about software and various other topics off the top of my head.
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.
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.
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.
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 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.
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.
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.
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.
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.
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.
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.
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.
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.
Generate random numbers from virtual dice. Useful for generating diceware passphrases and whatever else you might need random integer numbers for.
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.