Yes, Internet Explorer still runs on Win11, with some help

April 29, 2025

Yes, you still can run Internet Explorer, even the all might Internet Explorer 6, on Windows 11! Disclosure: I did work years ago on the mentioned product. I am biased.

Here are the steps:

  1. Use a virtual machine. Seriously, use a disposable virtual machine. IE is unsupported and isn’t maintained with security patches

  2. Download the turbo.net client for Windows and install it. The installation will not require any admin rights.

  3. Open the Command Prompt.

  4. Execute: turbo run microsoft/ie:11, or turbo run microsoft/ie:6. YES, even Internet Explorer 6 will run.

  5. Enjoy your Internet Explorer nostalgia trip.

Memories
Continue reading →

Debug Hanging Programs with Thread- and Heap-Dumps

March 28, 2025

I used this technique a surprising amount of times to find out an issue. It all starts with a hanging Java program: a build tool, some Java based server, etc.

The first thing I do in this case is to take a stack trace. For example with jstack

Continue reading →

More Testing Tips With C#

December 11, 2024

This post is part of C# Advent Calendar 2024. Visit it for all the awesome upcoming posts! It was released on 11 December as a substitution for the 8th December spot, as another blogger couldn’t make it.

The traditional C# Advent is here. It also seems tradition I talk about some testing aspect [1] or some outsider view approach to C# [2] here. Let’s not break this tradition and I share some more testing tips.

Excitement
Figure 1. Excitement
Continue reading →

Pitfalls with Mill Build

September 27, 2024
Note
Update March 2025. This post was originally written for Mill 0.11. I’ve updated the examples to work with Mill 0.12.9, but didn’t incorporate all improvements since then.

Here are some challenges and pitfalls I ran into when using Mill.

Continue reading →

Circe JSON: Use JsonObject instead of cursors

September 11, 2024

I’m using the Circe JSON library at work. I am not a fan of it. I recommend to stay away from it. Luckily I rarely have to touch JSON parsing code paths.

What makes my blood boil the most with Circe is small ad-hoc JSON parsing, where I need to extra some values from JSON, without going to create boiler plate class for it. [1]

My expectation for something like that I get a Map, maybe an extended map with some convenience functions. However, the Circe documentation guides you towards their cursor API for that. That API is (censored/insert swearwords/rant here).

Turning JSON complicated
Figure 1. Turning JSON complicated
Continue reading →