Better word counts and reading time in Eleventy (11ty)
A short tutorial on how to count words and determine the reading time using Eleventy.
Welcome to my blog, where I write about my projects and various tech-related topics.
Live Last read · last published · next check

This article describes how to distrust particular network blocks in Anubis, such as data centers, for free

How I use Ansible to provision my servers

I wrote a Python script to help identify the subnets involved and then an Ansible role to block them using ipset.

Statistics on the attack and a reflection on how this can be prevented in the future.

A minimalist weather app for your smartwatch, to help you prepare for your day

My thoughts about the TTD rerelease and OpenTTD requiring a purchase of TTD on Steam and GOG.

A discussion about how cookie consent demonises cookies, GDPR, and the digital omnibus.

Articles are a great way of keeping up with programming and technology. Here are some articles I read in 2025 that I recommend reading.

This article shows how you can make an Eleventy (11ty) website translatable on a string-by-string basis, supporting translation platforms such as Weblate.

My plant watering system supports four plants, with a soil moisture sensor and a pump for each plant.

Here are some OpenTTD settings that I recommend changing, new and old players alike.

A letter to my MP complaining about the Online Safety Act

A short tutorial on how to create a writing stats page for Eleventy.

Having to move instances from Fosstodon raises some thoughts about the federation model and owning your identity and data.

Articles are a great way of keeping up with programming and technology. Here are some articles I read in 2024 that I recommend reading.

A multiplayer top-down shooter with base-building elements that was in development for five years

I made an app to rate coffee shops as an exercise to learn React Native.

Firefox has been my browser of choice ever since I was first recommended it twelve years ago. It has the extensions I like and it supports the open web.

In this article, I will explain how you can do end-to-end testing with Android permissions, including interaction with the Android permission request modal.

I find that TypeScript makes JavaScript more enjoyable to use. In this article, I'll explain why.

Articles are a great way of keeping up with programming and technology. Here are some articles I read in 2023 that I recommend reading.

In 2022, I made a goal of writing at least twelve long-form articles on my blog each year. But why bother? In this article, I will explain why I write.
A short tutorial on how to count words and determine the reading time using Eleventy.
A short tutorial on how to find backlinks (pages that link to the current page) using Eleventy

In this article, I will talk about why I switched, how I did it, and my thoughts about Eleventy as a new user.

The collapse of Twitter last year got me thinking about closed platforms and reducing the hold that privately-owned silos have over the Internet.

Whilst working on a plant watering system, I spent hours debugging an issue that turned out to be Electromagnetic Interference (EMI)

CTF is a PvP game made using Minetest. This article covers the history of CTF, the lessons I learned, and the changes I made along the way.

This article is an exploration of my journey in game dev, a discussion of what motivates me, and a promise for the future.

Conquer is an RTS minigame created for the 2020 mod jam. It received first place. This article will discuss some interesting challenges that it needed to solve.

This article is a reflection on the projects I've worked on, the problems I have, and what I want to try in the future.

My domain was shadow banned by Bing and DuckDuckGo last year, and I don't know why. My root domain has since been unbanned, but my blog remains banned.

In this article, I will cover how I created my lock box - from the problems I had, the iterations I made, and the final design I settled on.

Articles are a great way to expand your knowledge by learning from the experiences of others. Here is a collection of articles I recommend reading.

When implementing controller support in a game, you want gamepads to just work. The solution is SDL_GameController, which allows you to target a large number of gamepads.

A month ago, ContentDB received a large spike in traffic. Bobicraft, a Spanish-language Youtube channel with 5M subscribers, posted a video about Minetest.

In this article, I will explain how to set up Luanti on the deck, and review the controls, performance, and experience.

Unlock your computer or use sudo with your fingerprint on Ubuntu KDE.

In 2016, I created an app to install mods for Minetest's Android port. It taught me a great deal about Android dev and helped me get my first programming job.

How to upload and run your games on the Steam Deck from your development computer, using a VSCode task or a script you can use in any editor.

My Steam Deck arrived two months ago, and I've been having a blast ever since.

I wrote an article on the Renewed Tab blog where I explained what led me to create a New Tab extension and what the design requirements were.

A couple of my games have had NPCs that can build and perform work directed by the player, similar to RimWorld. In this article, I will explain how I implemented this.

An exploration of GPT-3/GitHub Copilot's knowledge of Minetest modding, with node registration, formspec manipulation, mod creation, and Minecraft to Minetest mod conversion.

How I created ContentDB, the website that allows players to install mods, games, and texture packs from within Luanti (formerly Minetest).

In April 2021, I participated in my first game jam. I made a Cornish tin mining simulation game, where you place out orders that workers follow.

I made a plant monitor, which measures soil moisture, temperature, and humidity, and reports these things to a cloud IoT service called Thinger.io.

When accepting user content, it's important to sanitize user input to avoid Cross Site Scripting (XSS) and other attacks.

I created a forum aggregator app to relearn Android devevelopment, including databinding, View Models, LiveData, and more.

Sandboxing Lua protects the user's computer from malicious or buggy scripts. This tutorial shows how to do this using sol2 v3.0.