abbator
59 posts


@miketuritzin This is why GPU programming is just the worst. I’m always splitting apart larger shaders because a single branch can blow up the registers and make the whole thing slow. Put the same code in 2 shaders and now it’s fast… It feels truly silly compared to writing code for the CPU.
English

@abbatordev Hehe, it’s part of my series of incomplete publishing.
The way I imagined it, part 2 would have been a list of utilities to deal with containers, like adding/removing an element at an index in a vector.
5 years? Uff I feel old.
English

@AmarthiaAuthor @SandyofCthulhu I grew up on a cliff overlooking the Chesapeake Bay. Lots of the land was graded sometime over the past century, but there are still plenty of cliffs on the Bay. In the past there would have been even more.
English

@SandyofCthulhu How about a video game example?
Playing Assassin's Creed 3 and seeing the majestic "cliffs' of the Chesapeake Bay...

English

I read a story in which the author, whose hero was Texas, mentioned someone taking a "slice" of Frito pie, and thus exposed himself as a poseur.
In a different story, by a different author, the hero went to Waffle House and bought a Belgian waffle - making it clear he had never in fact visited a Waffle House.
In the Walking Dead, they go from Florida to South Carolina and can't find a single firearm in any house. "Huh" I thought. "The screenwriters are from Los Angeles."
What examples can you give of a writer unintentionally giving away his lack of knowledge?

English

@SebAaltonen I notice that codex loves to use environment variables for everything. Every time I’ve asked it to implement some debug feature it always puts it behind a call to std::getenv
English

@designcoursecom I only skim read this and saw the part about training a model on your balls and had to go back and read the whole thing. Really neat project though.
English

I've dedicated months to a project that might be entirely a wasted venture. The pool projection thing is a very big ask for each customer.
- They need a pool table.
- They need a suitable projector mounted above it
- They need a suitable camera mounted above it
- They need a PC with a GPU
- They need to train a model on their balls in their environment
Even if it goes no where, it's alive in my studio and it's by far the coolest thing I've ever built, and it's going to turn me into a monster pool player.
English

@miketuritzin What I like about the hot-swapping way is that it forces discipline in the architecture. It’s explicit that you can’t put shared state in the hot reloadable parts, so you end up with a wide DAG of pure consumers and persistent data strictly in lower (safer) parts of the program
English

@abbatordev I was actually assuming I would do it that way as well before I found out about Visual Studio hot reload / Live++'s improved version. There are various things you have to deal with, though, like vtable pointers in C++.
English

@abbatorofficial It’s just the Windows Snipping Tool’s framerate. And if you’re talking about animations, in some cases more frames won’t change anything—when idle, it’s just a 1-pixel jump because the animations are pixel-perfect.
English
abbator retweetledi

This is insanity. Models should do what humans tell them. They have no conscience to violate and no duty to anyone or anything b/c they are not moral actors -- they are inert tools. We should not create models that don't produce the outputs we ask for. That's broken software.
Ramez Naam@ramez
Soldiers have a legal and moral duty to disobey illegal or unconstitutional orders. AI models should have the same. And that duty to disobey should be built deep into the models, on top of protections in the contract.
English

@abbatorofficial @vzverovich Ugh. I meant now it's _possible_.
English

It's been a long time since I've written a blog post. 7 months!
Recently, I was inspired by @vzverovich to try something that I thought was impossible before. And now (with C++26 Reflection), it is.
std::meta::substitute is a very powerful function.
brevzin.github.io/c++/2026/03/02…
English

@abbatorofficial Most of that is AI generated or autocompleted. I didn’t type any of those format strings, Cursor filled in from the comparison statement.
English

@maxliani This is 100% nicer, it just also makes writing them take a lot more time/effort. Not that you shouldn’t take your time writing tests. But they aren’t art, and once they’re done they mostly stay the same.
Getting a quick “oops, that fails now” is more important than the blurb imo
English

@abbatorofficial That’s what my tests reads like:
Max Liani@maxliani
As we speak about unit testing, this is an example of what my unit tests look like. In particular the assertion messages are AI autocompletions. So, I didn't have to type much. Personally, I find this much more appealing than what I get with macro-based systems.
English

@abbatorofficial Sneaky way to use literals :)
As for the condition log. I am not a fan of where is see in the log:
Failure: true != false.
Or:
Failure: result == 5
English

@OlexGameDev The `;` on the end of the struct declaration goes back to C. In both C and C++, a struct declaration is an expression. Remember that you can write this: `struct foo_t {} foo;`
That’s why the semicolon there exists. If you don’t allow that, you don’t need it.
English

Is it a class or is it a struct? My first foray into implementing class/struct/thing. This compiles and runs now.
- For now, I don't see the point of needing a keyword to specify that is a struct/class.
- In C++ { } is mostly used for definitions but can also be used for initialization. I am thinking to always treat {} as definitions and () as an operation.
- I don't see the point for an extra ";" at the end of the struct definition.
- Uninitialized values are allowed, this is a low level systems language after all!
P.S. Why "glsl_compiler"? The first use for this language will be to replace my offline shader compiler written in C++ that runs at build time, so it will be risk free for my current game.
Context:
- Custom front end from scratch in C++
- LLVM back end via LLVM IR
- Syntax coloring for VS Code via C++ LSP server

English


