A new year?
Well, I started the last blog entry with 'It's been a while since I posted here...' and it's been over a year since then! Abandoned! Almost, but here I am.
I changed jobs last year, twice really, so that's partly to blame for the lack of interest in a new blog post. I was made redundant from the startup I was at early last year, and then took a job which I ended up not liking. So after 6 months I found a better role and have been there since January. But that's a lot of energy spent learning a new job, twice in rapid succession.
And in the last post I alluded to not being happy with the firmware in the plotter. I half-heartedly worked on improving it, but never really got anywhere. Embedded work looks like fun from afar, but in practice I find it pretty painful. Slow edit/compile/deploy/test iteration and hard to debug. Not terrible, but annoying enough when it's supposed to be a hobby to enjoy in spare time.
So I haven't actually plotted anything in the past year or so, even though I've been working on the plotting engine on and off over that period. The two bigger changes were an attempt at shading and dropping Halfp.
I wanted to implement shading via a sort of hatching. Parallel lines at angles. I had something sorta working, but not to my satisfaction and so my enthusiasm waned.
Though this isn't a great example, you can see what I was attempting here. The uniform grid doesn't really work, so something better needs to happen. We're not there yet though.
And then, while I like(d) the idea of having an embedded interpreter in the engine, and used it for the early plots like the pulsar graphs (a la Joy Division's Unknown Pleasures) and the dragon curve directly, recently the scripts have been just to parameterise the 3D scene the view graph then renders. So it might as well just be a declarative scene language, even a markup language, rather than an imperative one.
Maintaining it became a distraction. I'm a compiler engineer during the day, I don't need to work on a language and interpreter on the weekend to satisfy those interests. I was tempted to replace Halfp with something like Molt or Gluon, both very cool projects, but not really solving the distraction problem. And so I've just ripped Halfp out of engine and it's simply a Rust library. The Halfp scripts to render 3D scenes are now Rust binaries using the plotter engine library. Simpler in general.
Then the biggest change over the last year is AI/LLMs taking over the (software) world. Initially I was pretty anti- AI for all the political reasons, and most of those reasons are still valid. Letting giant US tech companies steal everyone's work and IP to get people to then buy it back off them at an exorbitant loss is terrible. The state of the PC hardware market (the RAMpocalypse? the RAMaggedon?) is broken. The affect slop PRs is having on open source projects is dreadful.
So I wasn't keen to use it. Plus it was expensive and generally produced crap, at least until early this year. But my new job effectively mandated its use. We were given unlimited access to frontier models and told to use them, and I then became ridiculously productive. Changes which used to take me a week could now be done in a day or two. Oh well.
And also, the state of the open-weights models changes everything. Today, I'm happy to use the latest and greatest Chinese AI, where I can get it to produce quality changes (that's the hard part to learn, but easy once you know how) for pennies.
So, with the help of these models I'm finding I can get back into working on the firmware and the plotter engine, and all of the grunt work is gone and I can focus on the art.