I'm a university student currently studying software engineering as well as an open source developer. You may know me as the project maintainer of Principia or for my contributions to Luanti (formerly Minetest).
This is my site where I write about what I do and about whatever else interests me, in the case that someone else finds it interesting.
Wanna read more about me or about what I do?
Latest blog posts
XMPP (also known as Jabber) is an open chat protocol for instant messaging. It is also federated meaning that everyone can talk and communicate with people on other XMPP servers, one-to-one or in multi-user chats (MUCs). It supports transport layer encryption using TLS, as well as end-to-end encryption using OMEMO.
Prosody is a modern XMPP server written in Lua that aims to be simple and very light on resources. I’ve been running my own XMPP server using Prosody for the past couple years at this point, and this blog post is a guide from what I’ve learned for setting up an XMPP server using Prosody, complete with HTTP file sharing for sending images and other files and MUCs for creating group chats and public chat rooms on your server.
Wildcard HTTPS certificates allow you to generate a certificate that will be valid across every subdomain of a domain, which is a great convenience if you manage a lot of subdomains. However with great power comes great responsibility as in order for Let’s Encrypt to validate that you are in control of the entire domain, you will need to pass a DNS-based challenge, as compared to a traditional HTTP-based challenge for an individual subdomain.
In order to handle this in an automated fashion you will typically need integration with your DNS provider in order to add the necessary records for the DNS challenge. If you are using Cloudflare for DNS, you’re in luck as Certbot has a plugin for managing the DNS through Cloudflare’s API. This guide assumes you already have Certbot installed and have generated some certificates, but want to replace it with wildcard certificates spanning entire domains.
Previously I have covered a relatively obscure now-removed placeholder string in Android that doubles as an easter egg, the fictitious carrier by the name of El Telco Loco. But this time it is about methods and other parts of the publicly facing Android API that may generally be more humourous than they are useful. Easter eggs, jokes, whatever you want to call them, that are visible to Android app developers rather than regular users.
When making a game or another kind of general purpose program, you would usually want to ensure that it runs on more than one platform. Targeting a higher-level, cross-platform library rather than OS-specific APIs usually gets you most of the way there, but there are still many other considerations that are needed if you want it to be available and function across several platforms.
When faced with this predicament, one may also wonder how to port your software to as many platforms as possible. That’s what I wanted to give a try, and ended up porting a game of mine to 7 platforms in total.
DDoS attacks are an unfortunate reality on the Internet when you are hosting websites, or any other kind of service. The concept of a DDoS attack is relatively simple: you have a bunch of attacker-controlled computers, and you have one victim. They all send requests to the victim at once and the target gets overloaded, happening either at the network or at the software layer.
But there are countless other possible attacks an Internet accessible server could receive, some possibly rarer than others. And the target ended up being me on the 18th of April 2025, when a regular DDoS attack ended up being something more that I had definitively not anticipated. An IP spoofing attack.
When you are supposed to write something and submit it as a PDF document, generally the most common tool that comes to mind are traditional word processors such as LibreOffice Writer. Such word processors also provide various WYSIWYG formatting tools, and then allow you to export the document as a PDF.
But there are of course other ways to write your text documents, such as using the simple yet effective Markdown markup language. This blog post goes over how I generate PDF documents from Markdown, using Pandoc and Weasyprint.