Win32 and Direct2D in 2026

Seventeen days ago I made the first commit of PDF Side Viewer. Today the program is at 0.9.0, it’s about fourteen thousand eight hundred lines of C++ across thirty-nine files, and since this morning it can show three documents side by side instead of two.

The question I’d ask if I were reading this from outside is why on earth, in 2026, anyone would write a desktop application in plain Win32 with Direct2D for drawing, C++20, and the PDF rendering library compiled into the executable. There’s no framework, no runtime to install, no web layer anywhere.

2026-07-27    
A second opinion that isn't mine

Writing three hundred pages of mathematics on your own raises a practical problem: who rereads it. I have no editor, no proofreader, and my chapters are long enough to exhaust the patience of anyone I’d ask as a favour.

The obvious answer today is to have a model reread the text. The obvious answer, though, works badly, and it’s worth explaining why. If I ask for an opinion on the chapter from the same assistant I wrote it with, I almost always get one of two pathologies: a rubber stamp, because the text already went through its idea of good, or a list of invented problems, because I asked it to find some and it is eager to help. Either way I’ve lost an hour and learned nothing about the chapter.

2026-07-23    
Syncing two PDFs isn't syncing two scrollbars

My first attempt was the one anyone would make: take the scroll position of the left pane, copy it into the right one, done. It worked for about ten minutes, which is to say until I tried it with two genuinely different documents.

The problem is that a scroll position isn’t a position in the document. It’s a measurement in pixels that depends on the zoom factor, the window height and the physical size of the pages. Two editions of the same book with different page formats have different total heights, so the same scroll percentage lands in two different places in the text. And the drift isn’t constant: it grows as you go down, which is the worst way a defect can behave, because at the start everything looks fine.

2026-07-20    
Three editions, and a macro that refuses to compile

The book exists in Italian, English and Hungarian. The Italian edition is the published one, the English has reached the end of its style review, the Hungarian is fully translated and reviewed up to the halfway mark. They come from the same machinery, but they are not the same book, and the difference isn’t in the sentences.

The first thing I learned is that you don’t translate the text of a technical handbook. You translate the conventions.

2026-07-15    
Fifteen years of asking

I needed one thing: keep two PDFs open side by side and have them scroll together. The Italian edition of my book on the left, the English one on the right, and the ability to move down the text without losing the alignment.

It sounds like a feature that has always existed. It doesn’t.

I spent an evening looking for it the way you look for a library before writing your own, which is to say expecting to find it and impatient to get back to the real work. The first place I checked is the viewer I use daily, SumatraPDF, which is fast, light and well built. Side-by-side view was first requested there in 2011, then again, and again after that, in three separate issues over ten years. All were declined, and the maintainer’s position is consistent and legitimate: that program intends to stay what it is.

2026-07-10    
45 ECTS credits in seventeen days, without opening a book

I’m enrolled at an online university on a plan called all inclusive: the fee covers the right to sit five exams per session. Sessions run four times an academic year, so twenty exam attempts in twelve months. Attempts don’t roll over: the ones you don’t use within the session are lost. It comes naturally, then, to call an exam you didn’t sit “wasted”… and that alone should tell you what kind of product this is.

2026-07-09    
A book that compiles

When I say I’m writing a book, people picture a document. In my head there’s a repository with build profiles, and the PDF isn’t the book: it’s the artefact that comes out when the book compiles.

The difference shows up immediately in my strictest rule: I never invoke the compiler by hand. Everything goes through latexmk, with the profiles versioned in the repo. That isn’t pedantry. Calling the engine directly breaks the correspondence between source and PDF, and that correspondence is what lets me click a formula in the PDF and land on the exact source line that produced it. It’s the same reason you don’t hand-compile one file in a software project and then wonder why the debugger can’t find the symbols any more.

2026-07-06    
The words I banned from my own book

In the book’s repository there is a file called STILE.md, and it has grown to sixty-six kilobytes of nothing but writing rules. It contains no mathematics. It contains the prohibitions I imposed on myself, and the longest section is the list of words I’m not allowed to use.

The first entry is “trivial”. Then come “obvious”, “clearly”, and the most insidious formula of them all, “it is easy to see that”.

2026-06-28    
Theater with a UML stencil

I’m studying for a software engineering exam, for my Bachelor’s in CS, which means re-learning UML again. I’ve known it for 25 years and used it professionally for 15, ever since a former automotive employer sent me on an Enterprise Architect course.

I still remember who was excited about it: the EA trainers, whose paycheck depended on me loving the tool (or rather, my boss loving it), and a particular kind of architect: the ones quietly promoted away from coding because they weren’t great at it, and who then turned out to be exactly as great at architecture. UML gave them something the codebase never did: a deliverable nobody could falsify. Code gets tested. Code ships or doesn’t. A diagram just sits there looking like work.

2026-06-16    
The book I couldn't find

I’ve written a mathematics book. It’s called Fondamenti di matematica per studenti di informatica, it runs to 316 pages, fifteen chapters, ninety-eight exercises and fifty-eight figures, and the cover carries one line that sums the whole project up better than I can: written by a software developer, for computer scientists.

That wasn’t the plan. The plan was to pass three exams.

At nineteen, first-year engineering maths made me drop out of everything, and when I went back to university I found it waiting for me unchanged: Calculus, Algebra, Probability. The difference is that twenty-odd years later I had a method, which is the same thing I do at work when a system won’t fit in my head: I rewrite it. I started reorganising in writing every topic I studied, in LaTeX, because handwritten mathematics can’t be refactored.

2026-06-10