Blog about software development

On this blog I write about programming, system administration, and other tech topics that I love. You can find more about me on GitHub and LinkedIn. — Maurits van der Schee

Migrating the TQdev.com blog to Hugo

In 2016 I wrote “My name is Maurits van der Schee and I love thinking about software architecture and building high traffic web applications” in my first TQdev.com post when I migrated from WordPress to a self-written PHP blog platform. I wrote “I love the idea of gradually (while writing posts) making this blogging software feature complete”. It was an experiment that lasted for 9 years and most of the time everything was working great. I’ve spent a lot of time writing articles and almost no time improving the blogging software. Now, 9 years later, it was time for another migration. ...

November 20, 2025 · Maurits van der Schee

Creating 103mail.com - Update 3

I am still building a free email service that respects privacy and prevents profiling on 103mail.com. I started this effort in 2024 and have been building slowly since (because work and life happens). I have reached a new milestone and it is thanks to SDD (Spec Driven Development with SpecKit) and AI (VSCode + Copilot + Claude Sonnet 4.5) that I have made good progress lately. In this post I’ll explain to you a bit about my way of working and about the progress. ...

November 18, 2025 · Maurits van der Schee

Mocking static methods and built-in functions in PHP

Testing code that relies on static methods or built-in functions can be challenging in PHP. Traditionally, you’d have to refactor your code to inject dependencies or wrap functions in testable interfaces. To allow you to write clean, maintainable tests without invasive refactors, I created MintyPHP Mocking. It allows you to write things like: $mock = new StaticMethodMock(Adder::class, $this); $mock->expect('add', [1, 2], 3); $result = Adder::add(1, 2); $mock->assertExpectationsMet(); For mocking static methods, and: $mock = new BuiltInFunctionMock('App\Service', $this); $mock->expect('microtime', [true], 1763333612.602); $service = new Service(); $timestamp = $service->getCurrentTime(); $mock->assertExpectationsMet(); For mocking PHP’s built-in functions. ...

November 16, 2025 · Maurits van der Schee

Sipeed NanoKVM USB: a security friendly KVM

Openterface, Cytrence and Sipeed make a KVM over USB product. I have bought the cheapest one: the Sipeed NanoKVM-USB at about EUR 60 (available on Amazon) which includes all nessecary cables. I love the product as it allows me to do repairs and upgrades on any laptop or desktop PC I put on my desk, without having to connect a second monitor keyboard and mouse. Data-center usage This device may not be ideal in the data-center as a permanently installed KVM, as it has no network connection. If you would have one management node, you could install a bunch of these in that node to control the other rack-servers (without opening a new attack surface). It may also be of great help when visiting a (private) data-center. I would always want to have this KVM (and a HDMI to VGA adapter) in my laptop bag as it takes barely any space and may avoid the need of a crash cart in the cold aisle. ...

November 14, 2025 · Maurits van der Schee

Software engineering generative AI manifesto

We stand at the threshold of a new era in software engineering. We’ve waited decades for intelligent assistants that understand code, context, and intent and now they have finally arrived. Yet too many developers hesitate, bound by outdated notions of what “real” programming means. This manifesto rejects that hesitation. We believe that embracing AI is not about replacing human creativity, but amplifying it. It’s about spending less time on repetitive tasks and more time solving meaningful problems. It’s about delivering better software, faster, while maintaining the highest standards of quality and ethics. The question is no longer whether to use generative AI in software development, but how to use it responsibly and effectively. Here are our principles. ...

November 12, 2025 · Maurits van der Schee

Cannot copy Windows 11 "install.wim"?

When you buy a Windows PC it often comes bundled with a lot of software that you do NOT want. To remove this unwanted software it is recommended to do a “clean install” of Windows 11. When copying the install disk (Windows 11 ISO) to a bootable USB drive you may run into the problem that you can’t copy the “install.wim” file. This post has a solution to that problem. ...

October 3, 2025 · Maurits van der Schee

Microsoft's digital licenses are way too cheap

Windows 11 has poor privacy and features like Recall show how bad things have gotten. Microsoft Office is pushing OneDrive a little too hard and has poor compatibility between different Office versions. This would drive people to Linux and LibreOffice if it weren’t for the ridiculous low prices of Microsoft’s digital licenses. This is what I am talking about: Microsoft Office 2024 Professional Plus (for less than 2 euro) Windows 11 Pro (for less than 2 euro) Source: On Allkeyshop.com you can search the product and find a discount code. Then, on Wincdkey.com you can buy the license with the discount code. The license key will be instantly delivered. ...

September 16, 2025 · Maurits van der Schee

Install Windows 11 24H2 without TPM

Windows 10 will be EOL (End-Of-Life) in exactly one month on October 14th. Microsoft says you need a modern PC with TPM chip to run Windows 11, but this is not true. In this post I’ll explain how to upgrade to Windows 11 without a TPM chip (or any other hardware requirement) using Rufus. As a bonus I’ll help you setup Windows 11 in a more privacy friendly way using the “O&O ShutUp10++” software package. ...

September 14, 2025 · Maurits van der Schee

Install LibreWolf, a better version of Firefox

LibreWolf is a custom and independent version of Firefox, with the primary goals of privacy, security and user freedom. LibreWolf is designed to increase protection against tracking and fingerprinting techniques, while also including a few security improvements. This is achieved through our privacy and security oriented settings and patches. LibreWolf also aims to remove all the telemetry, data collection and annoyances, as well as disabling anti-freedom features like DRM. Installation LibreWolf has a repository for Debian-based distributions (Debian, Ubuntu, Mint, etc.), with which you can easily install and update LibreWolf. To add it to your system and install LibreWolf, run the following commands one by one: ...

September 4, 2025 · Maurits van der Schee

Install Debian 13 with the Mint XFCE theme

I often choose Linux Mint XFCE when I need a good looking and comfortable system quick. But sometimes I’d rather have a more stable system and match what I have on the server, which is Debian 13. Unfortunately Debian with XFCE doesn’t look as good as Linux Mint with XFCE. In this post I’ll explain what you can do to make Debian with XFCE look like Linux Mint XFCE. ...

September 3, 2025 · Maurits van der Schee