Oh, NeXT Cube and custom fills? That's pretty hardcore. Did you find programming in PostScript more intuitive compared to other languages, especially for graphical stuff?
The Cube was a gift, and the PS work didn't go that far.
I found PS pretty inscrutable, esp. the function-filled variant used in Virtuoso, but did manage to get dimension lines coded up (which promptly ran into precision problems which I eventually gave up on).
OpenSCAD is a lot more approachable, and METAPOST was easy to pick up and make use of:
Nice work! Interesting convention on naming procedures. I'm not sure I could deal with the verbosity, but it is probably a good idea for bigger programs.
I've written neural network (ConvNet) in PostScript and this post has inspired me to finish it up and publish a blog post this week.
Why do you say that? It's a very simple and tiny language that you can learn in an afternoon. Far from the utter complexity of modern things. It's barely more complicated than a programmable calculator. Certainly simpler, cleaner, and arguably more powerful than svg graphics.
You don't even need to read any manual to guess what this example program does:
Although it would, at times, go wrong there are very few things to this day that do impress me more than typing this (admire my "useless use of cat" btw):
... $ cat tiger.ps | netcat 192.168.0.78 9100
And see my HP LaserJet 4M+ (speaking PostScript natively) start printing.
Yeah, yeah, yeah, I do have a SOHO and a modern printer/scanner at home and it can do more stuff.
But the elegance of netcat'ing a PostScript file to a printer and seeing it print without needing any driver nor any configuration whatsoever [1] was quite something.
It was simpler indeed and it was elegant and it did feel like magic.
Now it wasn't fun if you printed many pages and suddenly it started printing garbage but still...
[1] you had to configure the printer itself to get an IP, but that was done on the printer itself
PostScript's magic is subtle. I once tried writing a PostScript interpreter in ADA. Got far enough to display the turkey example and realized that PostScript code can modify itself and decided I didn't want to go there.
I've done a bit of PostScript programming in the dim and distant past - the most ambitious of which was a "pretty-printer" for the YAM email client on Amiga, which otherwise just printed emails as plain ASCII.
I found PostScript to be one of those things where something "clicks" after a while, and I really started to appreciate the elegance and simplicity. The hardest part is the mental gymnastics required to track what's on the stack and in what order!
It's not a terrible language; it just requires a little different thinking. In 1988/89, I learned to write a postscript generator with no dev environment, just reams of paper. Debugging was hard since you had to add debugging print statements in the same document you were printing, which was hard if no printing occurred! I read Adobe Illustrator files, which were the precursor to PDF, so at least I had something to look at.
A nice showcase of Postscript's abilities, which I first became aware of around 1990, when I sent a tiny program to a Postscript printer to generate a 1024x1024 maze, taking half a day to finish.
The graphics are simple but good looking.
The engine is weak as expected for a tiny engine. The game I played with my first 4 moves of e2e4, d2d4, e4e5, and d4d5 resulted in checkmate on move 18. I wasn't sure if it would accept en-passant capture but it did. Other tiny engines like Micro-Max [1] and nanochess [2] are much stronger.
An interesting long running (2009-2021) discussion between their authors may be found on the chess programming forum [3].
https://www.goodreads.com/book/show/3883749-postscript-langu...
and _Thinking in PostScript_ was made available from the author's site and is widely available as a PDF:
https://w3-o.cs.hm.edu/users/ruckert/public_html/compiler/Th...
For a more typical usage see:
https://personal.math.ubc.ca/~cass/graphics/manual/
(I used to do PostScript programming on my NeXT Cube for custom fills and strokes in Altsys Virtuoso)