Niels Leenheer

Niels Leenheer

@html5test.com

CTO of Salonhub. Creator of http://html5test.com, writes at http://nielsleenheer.com, team @FronteersConf, Google Developers Expert, Invite me to speak at your event.

1.1K followers305 following627 posts

Niels Leenheer reposted

Why HalfStack Vienna? Because building for the web is better around other curious people. See what people are making, hear unexpected ideas, meet interesting humans and keep talking afterwards. That’s pretty much HalfStack! 📅16 November 2026 📍Ankersaal, Vienna 🎟️ halfstackconf.com/vienna/tickets

So sad to miss TPAC, definitely still on my list to attend once. But can't be helped - too busy working and preparing for my November trip. Leaving home November 4th and be back the 18th. First Bonaire, Brighton and Vienna. And then a quick hop to Berlin and back on the 21th.

Mood for this morning: The Skinner Brothers with the Rampage EP - perfect to drown out intrusive thoughts about the state of the world with a violent sonic mix of punk, ska and drum and bass.

Niels Leenheer reposted

Vienna next month. 👀 HalfStack is a day of people showing what they’ve built, trying things that seemed like a good idea, meeting curious web people, and hanging around afterwards. Plus the JS Pub Quiz and karaoke. 🎤 📅 16 November 2026 📍 Ankersaal, Vienna 🎟️ halfstackconf.com/vienna/tickets

Okay… who knows a good alternative to Deno Deploy that isn’t Cloudflare. We use Cloudflare for one of our products and need something worker/deno-like on a completely separate infrastructure.

Niels Leenheer reposted

Whew, we're still reeling from Fronteers: Dark Mode this past friday! We brought developers from multiple countries together to celebrate front-end and human connection. It was super "gezellig"! Thank you everyone for helping us make this event happen, thank you for supporting Fronteers!

Arrived early in Dordrecht. Tomorrow Fronteers Dark Mode, but first I have an appointment at the regional archives for research. A lot is scanned and online, but today I’ll be handling actual notary acts from around 1600.

Niels Leenheer reposted

HalfStack isn’t just the presentations. It’s the people you meet, the things you end up talking about afterwards, the JS pub quiz, and a bit of karaoke. We’re back in Vienna on 16 November. Come spend the day with us. ❤️ 📍 Ankersaal, Vienna 🎟️ halfstackconf.com/vienna/tickets #HalfStackVienna

And this is what I've been spending my evenings on lately. A decoder for receipt printer protocols. You can take the bytes that get send to a receipt printer and inspect the commands that are inside of it. And... actually see a render of the receipt. Only useful for a hand full of people. And me.

View full thread

I generated receipts using a dozen different open-source encoders and test suites of other rendered and compared them manually with the output of dozens of printers. Painstakingly making sure to capture every single quirk and detail...

And it is now the best ESC/POS and StarPRNT renderer there is. Probably even better than some printers. But it will probably be used by just me. Or at most a handful of people. And that is fine. I love this project.

And this is what I've been spending my evenings on lately. A decoder for receipt printer protocols. You can take the bytes that get send to a receipt printer and inspect the commands that are inside of it. And... actually see a render of the receipt. Only useful for a hand full of people. And me.

View full thread

And to render receipts, you need a bitmap font at specific sizes. And there wasn't yet one... So I created a bitmap font editor... I know 🤪

The result is a renderer that exactly matches a real printer. And it does not just support the code my own projects generate…

And this is what I've been spending my evenings on lately. A decoder for receipt printer protocols. You can take the bytes that get send to a receipt printer and inspect the commands that are inside of it. And... actually see a render of the receipt. Only useful for a hand full of people. And me.

View full thread

From the moment I've been working on this - 15 years ago - I've always wanted to build a decoder, so that I could inspect what we actually send to the printer... every single command that it receives.

But... what I really wanted is a renderer. For two reasons - some printers only support bitmaps, and I wanted to be able to print on those too. But I also wanted to have a preview to see how a receipt rendered.

And this is what I've been spending my evenings on lately. A decoder for receipt printer protocols. You can take the bytes that get send to a receipt printer and inspect the commands that are inside of it. And... actually see a render of the receipt. Only useful for a hand full of people. And me.

But let's rewind. You start with some JavaScript and my ReceiptPrinterEncoder library to create the actual receipt. From JavaScript, in the browser or a server. Or using Capacitor or Electron. I've build integrations for everything. point-of-sale.dev

Niels Leenheer reposted

⏰ Last call for Fronteers Dark Mode 2026! Ticket sales close tomorrow, Saturday at midnight, and there are just 13 seats left. So if you’ve been thinking about joining us in Dordrecht next Friday, this really is your last chance. 🌑✨ 🎟️ www.fronteersconf.org We’d love to see you there! ❤️

For 15 years I've been obsessed with receipt printers and the protocols that they speak. I created an open-source encoder that can run in the browser can create receipts and send them to the printer. That turned into a whole project that is now used by dozens of products: point-of-sale.dev

I started out as something I had to do for my job, but it really turned into an obsession – I now own around 40 different receipt printers of various makes and models. It doesn't get old. And I've been working on something new - that probably nobody but me will enjoy. And that is absolutely fine.

It is weird how the brain works. I am a public speaker. I organise conferences. I still get shy talking to other speakers. Every single time it is a threshold that I have to cross. Then I remember that I, as a speaker, would love to have a chat. So I do, and made some lovely friends along the way.

I'm down one of the rabbit holes again. I *just* wanted to print receipts on a Star TSP100 printer. Initial problem: unlike other printers, it does not support text, only graphics. And my receipt printing library only supports rendering to text based ESC/POS and StarPRNT...

View full thread

So now I am building a bitmap font editor for tweaking the fonts, because there is no decent free bitmap font for receipt printers that supports all of the codepages that printers use...

And in the mean time I'm building a testsuite that looks at a dozen other receipt printer libraries and captures their output. I then compare my renderer with a couple of other renderers and actual printers to ensure it is compatible with pretty much everything a library can throw at it.

I'm down one of the rabbit holes again. I *just* wanted to print receipts on a Star TSP100 printer. Initial problem: unlike other printers, it does not support text, only graphics. And my receipt printing library only supports rendering to text based ESC/POS and StarPRNT...

The simple solution: add bitmap output to my own library... But no... Where I am at: building a fully compliant generic ESC/POS and StarPRNT renderer that takes any byte stream and renders it as an image, with even SVG support. And render that as StarGraphics format that the printer understands.

Over the years I have brought some really weird things through airport security. I’ve set off the alarms once - they closed down the lane and started shouting in panic because it looked really serious on the scanners. But never a vintage oscilloscope. Until today. Freiburg, here we come!

But it’s going to be fun. Looking forward to the next couple of days. Just hope that they’ll let me bring my oscilloscope on the flight. 😬

Oh look 👀 it’s an oscilloscope that actually fits in a suitcase. I wonder what airport security is going to say when they see this thing going through the scanners. I just don’t have an room for clean clothes left in my luggage. But that is a price I am willing to let you pay. Smell you later! 👋🏻

Without saying your age, what is your favorite movie that came out when you were 20 years old? This one was difficult to pick. There were a couple of great ones that year. But this one wins.

Stuart Langridge@sil.kryogenix.org

Without saying your age, what is your favorite movie that came out when you were 20 years old? This is harder than it looks. Pretty much all my favourite films came out AROUND when I was 20 but not actually IN that year. Weird that all the best films in history came out exactly when I was that age

I didn’t think I’d ever agree with DHH, but he is totally right. Linux is infiltrated by absolute maniacs. Anyone still using any of DHH’s products should be taking a very close look at themselves.

aly@aly.codes

re: omarchy trying to create parallel infra to subvert the linux community and kick trans/female/black people out i know some people think that sounds crazy but DHH literally is doing a podcast tour saying that is exactly what he's doing lol