RSSAmplifier

Blog

EvilGeniusLabs.ca

Field notes from 35+ years in the trenches. Mostly C# / .NET / Avalonia, some Rust, and whatever weird thing has me up at 2am.

evilgeniuslabs.caRSS feed ↗20 posts

Latest posts

Thermalith: an open-source desktop label designer for NIIMBOT printers

I went quiet on the blog for a month because I was building this. Thermalith is an open-source desktop label designer and driver for NIIMBOT thermal printers: local-first, no account, no cloud, prints over USB or Bluetooth. Cross-platform on .NET 10 and Avalonia, with the reverse-engineered printer protocol pulled out into its own reusable GPL library.

Built in private, released in public: self-hosted GitLab to GitHub

The workshop is a self-hosted GitLab I own and run. The shop window is GitHub. Development happens in private with no metered CI bill and full control of the runners; when a release is ready, one GitLab CI job mirrors the source to GitHub and cuts a release with the built binaries. Here's the actual pipeline that does it, gotchas included.

A coffee button, and a home for the projects

Two reader-facing additions to the site this week. There is now a Donate page with Ko-fi and Interac e-Transfer, and a Projects section where each thing I build gets a real writeup instead of a line on a GitHub profile. Neither is clever. Both are things I kept meaning to do and finally did.

What's new this week: The calm before Build

Build 2026 is ten days out, and this edition is the calm before. VS 2026 18.6.1 patches a hard ARM64 debugger blocker, System.ClientModel 1.13.0 ships breaking credential changes, GitHub Copilot pushes a pre-cutover changelog flurry, and the Musk v. Altman verdict closes a story two editions in the making.

VB on Avalonia: the VB6 form-and-handler model, cross-compiled to Linux from Visual Studio 2026

I spent a weekend proving the VB6 loop is alive outside Windows. Visual Basic on Avalonia 11, .NET 10, Visual Studio 2026, two update patterns side-by-side, and the same VB source publishing to a 47 MB self-contained win-x64 .exe and a 47 MB self-contained linux-x64 ELF. No first-party VB template for Avalonia, so the .vbproj is hand-rolled. Everything downstream behaves normally. Full source and…

Is MAUI another Silverlight? A retrospective on every Microsoft UI framework, and why developers are tired

Microsoft has shipped more UI frameworks than any other vendor in computing history. Win32, MFC, WinForms, WPF, Silverlight, Xamarin.Forms, UWP, WinUI, MAUI, Blazor Hybrid. Each launched with a deck full of reasons this one was the future. Some are still here. Most are not. The real question is not whether MAUI is the next Silverlight; it is why a working developer in 2026 should ever again bet on…

What's new this week: Avalonia, .NET, Visual Basic, and the Microsoft choices that hit developers

A weekly look at what shipped, what shifted, and what Microsoft decided this week in the corner of the ecosystem I actually work in: Avalonia for cross-platform UI, .NET 10 in production, Visual Basic still refusing to die, and whatever decision out of Redmond is going to land on a working developer's desk on Monday.

Why learn modern system design if the old ways still work?

The old ways do still work. WinForms in VB.NET 10 on Visual Studio 2026 is a perfectly modern stack. Modern system design is not asking you to give up forms, events, or any of the tools that already serve you well. It is a small set of techniques you can add behind them, when a project starts to want them.

Frugal again - rules for writing code that respects the machine

The hardware curve has flattened. The papering-over is ending. Here are the rules for writing code that respects the machine it actually runs on, with .NET specifics.

I added an apple-touch-icon by reading my own access logs

Stood up GoAccess on the production logs this morning. Noticed iOS clients 404'ing on /apple-touch-icon.png within minutes. Resized the admin avatar with PowerShell and System.Drawing, dropped the result at wwwroot/apple-touch-icon.png, deployed. Thirty minutes from 'huh, that's a lot of 404s' to live. The story is the loop, not the icon.

The end of free hardware

Dennard scaling broke twenty years ago. The transistor density curve still has runway. The bill nobody warned us about is the complexity tax, and it is coming due.

I'm writing a history of Visual Basic, Chapter 1 is up

Starting a long-form history of Visual Basic on EvilGeniusLabs.ca. Chapter 1 covers the BASIC dynasty Microsoft had been running since 1975, the California developer Microsoft bought to put a face on it, and the launch pitch Bill Gates seeded in BYTE Magazine eighteen months before VB shipped. Six articles, focused on the parts of the story that don't get covered.

What's new this week: Avalonia, .NET, Visual Basic, and the Microsoft choices that hit developers

A weekly look at what shipped, what shifted, and what Microsoft decided this week in the corner of the ecosystem I actually work in: Avalonia for cross-platform UI, .NET 10 in production, Visual Basic still refusing to die, and whatever decision out of Redmond is going to land on a working developer's desk on Monday.

Good developers learn to program. Most courses teach a language.

A bootcamp can teach you the syntax of a language in six weeks. The part that takes a decade is everything else: where the seams go, where the data flows, which decisions you are stuck with for the life of the codebase. This is a senior developer's argument for what learners should actually be looking for, after thirty years of watching the difference.

What did you love about VB6, and what frustrates you about modern .NET?

Two open questions for anyone who shipped real work on Visual Basic 6 and is now writing C# against modern .NET. What specifically did VB6 get right that you miss? And what do you find frustrating about the modern toolchain that VB6 didn't make you fight? I shipped about a hundred VB3-through-VB6 line-of-business systems between 1995 and 2010, and I'm trying to get to the root of what was actually…

The feed doesn't know you, and YouTube refuses to let you browse

YouTube has tens of thousands of talented creators making careful, deep, useful videos. The home feed will not show them to you. There is no browse. Only a funnel, built from your laziest clicks and tuned to keep you watching, not to surface what's worth watching. A rant from inside the trap, and a sketch of the tool I'm building to climb out of it.

From CVS to Git, thirty years of source control, lived from inside

In April 2005, Linus Torvalds wrote Git in ten days because BitKeeper revoked its free licence to the Linux kernel. Twenty-one years later, no successor has emerged. A practitioner's history of source control from someone who used every major system since 1990, and lost code in most of them.

I use Claude Code, and here is how

I adopted Claude Code about four months ago to help with code and writing. The ideas, the anecdotes, the prose, and the opinions on this site are mine. The model edits. I want to say that out loud rather than leave readers guessing, and I want to be clear about why a force multiplier is a double-edged tool.

Mea culpa, I shipped a draft-book feature that hid every chapter inside it

M12 said draft books are public works-in-progress. I updated the book-level visibility filter and called it done. The article-level filter, which lived in seven other queries, was a separate code path. Anonymous visitors saw the book, saw the chapters, and every chapter rendered 'no published articles'. Here's what I missed and the fix.

Visual Studio 2026 still ships the form designer Alan Cooper drew in 1987

Every UI framework Microsoft has shipped since WinForms (2002) was sold as its successor. WPF, Silverlight, UWP, MAUI, Blazor desktop. Twenty-four years on, WinForms is still there, on modern .NET, with a designer that any VB6 developer would recognise on sight. The Cooper and Geary form-designer architecture from 1987 is still the path of least resistance for a working line-of-business app in…