W15: CaSCAD, electronics, coding

I started last week getting angry at CadQuery's install procedure, which seems to be all of unreliable, bloated and proprietary. Disenchanted with OpenSCAD's lack of speed, I set off to write CaSCAD, which is little more than an OpenSCAD clone laid on top of Open Cascade Technology (OCCT).

Problem is, it's also laid on top of GTK4 (because why not), and I've not managed to get OCCT and GTK4 working together. Probably because my distro doesn't offer GTK4 natively; or maybe because some assumptions are made about what uses OpenGL and what uses GLES. In any way, that little burst of energy ended there, after having a full OpenSCAD parser, a partial compiler and bytecode interpreter, a stub of an OCCT backend and a nice-looking but empty GUI (with syntax highlighting). But not before scanning the OCCT codebase for any possible OpenGL bug...


I spent this week drafting a new device. Something that I intend to present to my professors to hopefully get my degree project managed around it. Something that can see inside the body, using...

Lasers. I bought three of them, each emitting in a different wavelength and with a different power (don't worry, no class 4). I intend to collimate them myself, using epoxy lenses, and then guide them with acrylic beam splitters.

An engineering student friend asked me if I could somehow get Cura to control the über-expensive titanium printer he was using, to break free from the half-baked commercial solution they only had available. Fast-forward a day and there's a Cura profile and post-processing script in his inbox, so now he'll design the mechanisms for my upcoming medical laser-bearing machine :)


I've also made great progress with my Big Project. First, the bad news: I haven't managed to inject metal into 3D prints... But the good news is, I don't need to. With the updated fluidics tools, I can just use a frying pan as a low-temp reflow oven and solder everything with Rose's metal!

I've also researched the electronics part of it, and am about to order large amounts of electronics components: ESP32 modules, stepper drivers, MOSFETs, frequency synthesis circuitry...

Finally, I've written some more of the code for this project. In case you're new to this blog, I'm coding everything in Rust, to make sure it's safe for biomedical applications. But here's something new...

The code is made of a client, a server/daemon, a real-time multitasking exokernel and a Hardware Abstraction Layer (HAL) underneath it. Right now, I'm making a “virtual” HAL that just runs the kernel on the host machine, using pipes to communicate with the daemon. This should help debug issues in the future, set up CI workflows, etc.