Hey Kilian,
I don't think you wonna know, hahahaha!

But drpetter keeps telling me about keeping a diary for my own sake, which is a clever thought for sure.
I'm writing Verve in BlitzMax, which is a bit more of a higher level language, but as it is still object oriented, things will sound familiar to most programmers, I assume. What will sound utterly unfamiliar is myself, haha!

My code is still rather primitive, really, no nifty things to the organization, except a few "classes" called "Types" in bmax to handle vectors (2d and 3d), layers, interface gadgets and- later on- brushes. Even the latter are still idiotically simple, wrapped into a function that evaluates the current types.
The whole thing is still so linear, it's an embarrassment. Thus far I don't even use a hook onto some windows event handling, no polling or the likes. It looks like a simple little "temp" code gone mad!
In other words, I'm the last one you want to "learn" from, when it comes to coding this thus far. Eventually I refactor the whole thing, I'm quite sure, probably even switching to C++, who knows, but even if I stayed in Bmax (which is really pleasant and goes quite far, if you have the nerve to take it there), I'd at least do an event based system to lighten the load on the main loop.
Thing is, the CPU doesn't have to do a lot of processing, really, just getting information and a few transformations. The main load is on the GPU by way of GLSL shaders.
I have shaders to do practically everything from generating all the interface elements over painting fractal noises to the entire fluid engine and more...
Thus Bmax is more or less in charge of managing the whole process.
There are a few things I've done that are kind of nice as I just noticed again! The interface gadgets are all independent, really, so you can create and destroy any of the available types on the fly. The processing of the gadgets is just a matter of traversing the list of members. It checks, if you hover over one of them and then declares that you're on an interface component, so your mouse will be trapped to dialing it or what ever the gadget does.
I just hooked up the main members of the fluid dials to hotkeys [F], [Shift]+[F] and [Ctrl]+[F], so you can adjust them where you are on the canvas. All it took was to check for the key combination to be held down, see if a floating_gadget exists, if not it would create one of a certain type right where your mouse pointer is at. Once you let go, it destroys it again. Nothing more to it!
So, it's really a great benefit to be lazy at heart and prepare everything to be as easy as possible to implement later. The problem is only, when a software wasn't planned to go nuts and is evolving as organically as Verve in this case. Oddly enough, it's not like I'm having "a problem" just yet. It's still amazingly well manageable, but it deserves some more attention for a proper construction, that's for sure.
Anyway, I hope that is somewhat of a start of this. I might add occasional rantings then, because...yes...there are moment!
But I gotta be careful with that, too, haha...

...not to get carried away in the spare of the moment, declaring myself an idiot in a variety of ways.
Also, I'm a total rogue coder, self-taught all the way, never learned any of this academically and utterly lack any jargon people might expect. Yet, I've been programming for 27 years- off and on- so...I was gonna say at some point that I'm proof that even a chimp can program, given enough time!
