Running Debian 12 on Windows with WSL 2

So, maybe your employer want you to use Windows. Obviously you still want to use Linux as you want to run whatever operating system your production servers run. If running Virtualbox or VMWare causes too much switching between environments then WSL might be a solution. In this post I’ll show how to install WSL 2 with Debian 12 as the Linux distribution. First we show which Linux distributions you can choose from, by running (from the command prompt): ...

October 1, 2024 · Maurits van der Schee

Distributed metrics in PHP using Go and Gob

In the previous post I showed how to do high frequency metrics in PHP with TCP sockets. In this post I’ll show how to collect and combine metrics from multiple PHP application servers. Instead of sending the log lines from each server to a single node, the monotonically increasing counters from all PHP application server’s metrics HTTP end-points are scraped and added up. The transfer of the metrics is done using Go’s very efficient Gob protocol (over HTTP). ...

September 25, 2024 · Maurits van der Schee

High frequency metrics in PHP with TCP sockets

When you are running a high traffic website you may run multiple PHP servers to handle the load. When you want to track a performance metric (such as API or database calls) you may need to do some high frequent logging for performance analysis. In this blog post we present a standardized (and tested) way to do this with minimal impact. A line logging performance may look like this: log( [metric name], [label name], [label value], [duration in seconds] ) The current implementation supports labeling each measurement with a single label. ...

September 23, 2024 · Maurits van der Schee

GMKtec NucBox G5: a tiny Linux PC

I don’t like laptops, neither to own nor to work on. They are very costly, are hard to repair or upgrade and I get neck and back pain from working on them. I love to work at places where the desk is (properly) equipped with (height-adjustable) monitor, keyboard and mouse. Most companies provide laptops to use on such desk setups for maximum flexibility, but I would rather have a GMKtec NucBox G5. ...

September 1, 2024 · Maurits van der Schee

ASRock Deskmini X600 SFF Linux PC

I am upgrading my 2021 Deskmini X300 to a X600 (finally…). The new machine has an AMD Ryzen 7 8700G instead of a 5700G CPU. It has 64GB DDR5 at 5600MHz instead of DDR4 at 3200MHz. I have the AM5 (instead of AM4) model of the Noctua low profile CPU cooler (with fan duct) and installed the newest Samsung 990 Pro 2TB NVMe drive. Like previous build it is super fast and very quiet. I run Linux Mint 22 and it works great, I’m very pleased with the results! ...

August 15, 2024 · Maurits van der Schee

Minesweeper written in Go using RayLib

In April I wrote Fyne Mines (Minesweeper in Go using Fyne) and I’m very happy with the release on the Fyne Games page. When further investigating cross platform game development (in Go) I ran into the RayLib engine (and it’s Go bindings). During the holidays I decided to recreate my minesweeper game using RayLib to see how that would perform and how it’s development in Go would compare to Ebiten and Fyne. ...

July 15, 2024 · Maurits van der Schee

Running Debian on a MacBook M3

In the hypothetical case that your employer is so kind to provide you with a MacBook Pro M3 (please don’t buy one) you have only one question: How do I run Linux on it? First you want to install Asahi Linux, but then you find out that the M3 is not supported. Now what? UTM Virtual Machines You may think you need Parallels Desktop 19 or VMware Fusio Pro 13, as I also assumed. But then I ran into UTM which is open source software based on QEMU. The software does not have CPU core limits nor RAM limits and it performs very well. Also it has a great mouse capture mode that, together with full screen mode, helps me forget that I’m actually running on OSX. I like everything about it. ...

June 15, 2024 · Maurits van der Schee

A 2D puzzle game in Go using Fyne

Last month I wrote Minesweeper written in Go using Fyne. It was a port of the Ebiten game engine implementation to desktop using the Fyne GUI library. During the implementation I ran into 3 problems that I eventually solved. In this post I’ll explain what they were and how I solved them. Source code: https://github.com/mevdschee/fyne-mines 1: MinSize of container without layout Fyne can use a (JWT-like) borderlayout, but you can also freely place your controls (or “widgets” as Fyne calls them) using a container without a layout. To set the size of this container you can put this container in a a stack container together with an image of a certain (minimum) size. ...

April 22, 2024 · Maurits van der Schee

Free Dutch postcodes CSV dataset

Web shops in the Netherlands need accurate address validation and completion. Kadaster is a Dutch government body that can provide the data that we need. Unfortunately they only provide the data in an almost unusable format (about 96GB of XML data), while we need a CSV file with only a small subset of that data for our needs. In this blog post I’ll explain how to reduce the vast dataset into a small file of either 40MB (megabyte) including locations in RD coordinates or 17MB without. ...

April 18, 2024 · Maurits van der Schee

Creating 103mail.com - Update 1

I am building a free email service that respects privacy and prevents profiling on 103mail.com (see: the plan). In this post I explain how outgoing mail can be captured to be handled by a web hook, while internal email is delivered normally. The post assumes you are running Postfix as mail server and assumes you run this on a recent Debian (based) Linux server. Make Postfix deliver to a web hook Install postfix using ...

April 12, 2024 · Maurits van der Schee