Sign up

Hello my name is Niels Leenheer

Not verified No WebSub updates No webmention support Valid

Generator
https://wordpress.org/?v=6.9.4
Public lists
btconf 2026 speakers
Fetched

Hello my name is Niels Leenheer Valid
• Niels

CSS is DOOMed

No, CSS is awesome. CSS is better than ever and it is only getting better. And that is why I built DOOM in CSS. Every wall, floor, barrel, and imp is a <div>, positioned in 3D space using CSS transforms. The game logic runs in JavaScript, but the rendering is entirely CSS. You can play […]

The post CSS is DOOMed appeared first on Hello my name is Niels Leenheer.

Hello my name is Niels Leenheer Valid
• Niels

Making a low-budget conference look high-budget using an ATEM video mixer and a long USB cable

The Fronteers Conference made a comeback this year with a fresh concept, presenting unique technical challenges that we were excited to tackle.  Fronteers Dark Mode would be a smaller, more intimate event. We’d start around four in the afternoon and run until after midnight—an evening of frontend. We’d have dinner, drinks, and five excellent speakers. […]

The post Making a low-budget conference look high-budget using an ATEM video mixer and a long USB cable appeared first on Hello my name is Niels Leenheer.

Hello my name is Niels Leenheer Valid
• Niels

The User-Agent string of Safari on iOS 26 and macOS 26

User-agent strings are weird. They inform the server which application is communicating with them. In the case of a web browser, this string can contain the name and version of the browser, but also information about the operating system and the device on which the browser is running. But browsers lie. They lie a lot, […]

The post The User-Agent string of Safari on iOS 26 and macOS 26 appeared first on Hello my name is Niels Leenheer.

Hello my name is Niels Leenheer Valid
• Niels

Receipt Printers 101

Receipt printers are a complicated subject because of many variables. There are many different types of printers and ways to connect them, but this article will help you navigate most pitfalls. The answers and suggestions in this article are all based on my libraries, which are open-source and freely available for anyone to use and […]

The post Receipt Printers 101 appeared first on Hello my name is Niels Leenheer.

Hello my name is Niels Leenheer Valid
• Niels

Should we rely on browser detection?

This is the sixth and final chapter of “The problem with User-Agent strings “. In the previous chapters, we’ve learned that the User-Agent string is something that web developers should handle with care. Handle with extreme care because it could blow up in your face at any time. But if you knew what you did, you could use […]

The post Should we rely on browser detection? appeared first on Hello my name is Niels Leenheer.

Hello my name is Niels Leenheer Valid
• Niels

The User-Agent Client Hints API

This is the fifth chapter of “The problem with User-Agent strings“. In the previous parts, we examined the history of the User-Agent string and browser vendors’ efforts to reduce its information. Removing details from the User-Agent string made passive fingerprinting much more difficult.  These efforts have been really effective because we are now in a […]

The post The User-Agent Client Hints API appeared first on Hello my name is Niels Leenheer.

Hello my name is Niels Leenheer Valid
• Niels

User-Agent reduction

In our fourth chapter of “The problem with User-Agent strings” we learn about some of the privacy advances that browsers have made in the last couple of years. Privacy on the Internet has become much more important over the last decade. All the prominent browser vendors informally agreed to limit the potential user-identifying information in […]

The post User-Agent reduction appeared first on Hello my name is Niels Leenheer.

Hello my name is Niels Leenheer Valid
• Niels

Trouble happens when you update a version number

In our third chapter of “The problem with User-Agent strings” we taking a look at the problems you run into when you change something in the User-Agent string. As I mentioned in the previous instalment of this series, the User-Agent string is built upon layers and layers of lies. Sometimes, when I look at a […]

The post Trouble happens when you update a version number appeared first on Hello my name is Niels Leenheer.

Hello my name is Niels Leenheer Valid
• Niels

A chapter of unnecessary detail

In our second chapter of “The problem with User-Agent strings” is a fascinating story about the browser wars. It’s a tale where the User-Agent string takes centre stage, revealing its unpredictable nature and the need for vigilance when relying on it.  The tale starts with me buying a new car back in 2016. Now, I […]

The post A chapter of unnecessary detail appeared first on Hello my name is Niels Leenheer.

Hello my name is Niels Leenheer Valid
• Niels

A brief history of the User-Agent string

In our first chapter of “The problem with User-Agent strings” we are taking a deep dive into history and start with the basics of the User-Agent string.  Our first stop is in 2018, with the release of Firefox 60. There is nothing significant about this specific release—I could have chosen pretty much any version—but we have to […]

The post A brief history of the User-Agent string appeared first on Hello my name is Niels Leenheer.