RSS Amplifier

Blog

rubenwardy's blog

Welcome to my blog, where I write about my projects and various tech-related topics.

blog.rubenwardy.comSource feed ↗86 posts

Live Last read · last published · next check

Latest posts

Anubis: Distrusting data centers and particular ASNs

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

Using Ansible to configure a Linux VPS

How I use Ansible to provision my servers

An Ansible role to block abusive subnets using IPSet

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

Analysis of the Luanti ContentDB AI scrapper DDoS attack

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

Do I need a coat? - I've made a smartwatch app

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

OpenTTD and the Transport Tycoon re-release

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

Would you like a cookie?

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

My favourite articles of 2025

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

Eleventy (11ty) string-based translation with i18next

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

Plant watering system: my first PCB

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

OpenTTD must-change settings that should be default already

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

Problems with the Online Safety Act: a letter to my MP

A letter to my MP complaining about the Online Safety Act

Writing statistics for your Eleventy (11ty) blog

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

How can we own our identity on the Fediverse?

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

My favourite articles of 2024

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

Ruben's Virtual World Project

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

Bean There: An app to rate coffee shops

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

Why I use Firefox

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.

Detox and React Native: UI testing Android permission flows

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.

Why I like and recommend using TypeScript

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

My favourite articles of 2023

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

Five reasons why I write

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.

Better word counts and reading time in Eleventy (11ty)

A short tutorial on how to count words and determine the reading time using Eleventy.

How to find backlinks using Eleventy (11ty)

A short tutorial on how to find backlinks (pages that link to the current page) using Eleventy

I've switched to Eleventy (11ty): my thoughts

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

I have joined the IndieWeb

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

Ghosts live in the ground: debugging an electronic circuit

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

Ten years of Capture The Flag

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.

Make games not engines: why I'll be using Godot engine

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

Conquer: a deep-dive into my Luanti mod jam entry

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.

Thoughts on native Android development

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.

Bing (and DuckDuckGo) shadow banned my website

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.

3D-printed IoT lock box using ESP32

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.

My favourite programming and game dev articles

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.

SDL_GameController: Making gamepads just work

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.

Large spike in Minetest traffic caused by YouTube video

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

Luanti (Minetest) on Steam Deck: usage and review

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

Setting up fingerprint auth on Kubuntu (Thinkpad X1)

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

Minetest Mods: my first Android app

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.

Devkit CLI: Upload your game to Steam Deck from your dev computer

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.

Steam Deck is Awesome

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

Why I created Renewed Tab, my New Tab extension

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.

Creating worker NPCs using behavior trees

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.

ChatGPT: An AI that can write Minetest mods... kinda

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.

Developing ContentDB

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

Tin Mining - Ludum Dare 48 post-mortem

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.

IoT Plant Monitor using ESP32

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

Securing Markdown user content with Mozilla Bleach

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

ForumMate: My return to Android app development

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

Writing a Lua sandbox using sol2 / sol3

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