140 karma · joined April 30, 2025
I mean it's like. not being developed anymore and not added to, and its a pain to have it deal with modern stuff like https but. yeah. its only mostly dead.
People ask whats the point? For me the study of the infinitesimal vs finite has really helped me better understand issues of precision and approximation in computers. I feel like I know exactly why 1/3 plus 1/5 is not exactly 8/15 in my Calculator app. Or why points in my 3d object face are not coplanar after rotation. Or why games have weird glitches when your character is too far from origin point. Or why a spreadsheet shows rounding issues
Nowadays there is Pololu, Robotshop, Sparkfun, Adafruit, and Battery Space. Maybe Microcenter, Ebay, and Temu.
In other words it renders the cylinders cubes spheres etc and their unions differences etc, to a 2d screen without actually calculating the intersection of those meshes / solids in 3d space.
This is the special thing about OpenSCAD design is they figured out how to build an abstract syntax tree that could either be sent to OpenCSG, CGAL (old engine), Manifold (new engine), or even the bare bones 'ThrownTogether' renderer (ancient engine on machines with no gpu that just draws 'negatives' as green blobs iirc).
It should be theoretically possible for any CAD program to do this. its just a lot of work.
that manual is wild too. entire section on games.
reminds me a lot of those old radioshack "build your own circuit" boards. the wires to components especially but also the manual, the way it just builds up dozens of examples from simple to complex, so if you really wanted to, a child could work their way through it slowly and understand everything.
looks like the inflation adjusted cost would be around 900 bucks today.
function replaceInTextNodes(node) { if (node.nodeType === Node.TEXT_NODE) { node.nodeValue = node.nodeValue .replace(/\u00A0/g, ' '); } else { node.childNodes.forEach(replaceInTextNodes); } }
replaceInTextNodes(document.body);
https://en.wikipedia.org/wiki/Altair_8800
https://en.wikipedia.org/wiki/Vector_Graphic
https://en.wikipedia.org/wiki/North_Star_Horizon
https://en.wikipedia.org/wiki/IMSAI_8080
Thanks for coming to my ted talk
Language support: You can implement extension traits on an integer so you can do things like current_node.next(v) (like if you have an integer named 'current_node' which is an index into a vector v of nodes) and customize how your next() works.
Also, I disagree there is 'zero safety', since the indexes are into a Rust vector, they are bounds checked by default when "dereferencing" the index into the vector (v[i]), and the checking is not that slow for vast majority of use cases. If you go out of bounds, Rust will panic and tell you exactly where it panicked. If panicking is a problem you could theoretically have custom deference code that does something more graceful than panic.
But with using indexes there is no corruption of memory outside of the vector where you are keeping your data, in other words there isn't a buffer overflow attack that allows for machine instructions to be overwritten with data, which is where a huge amount of vulnerabilities and hacks have come from over the past few decades. That's what is meant by 'safety' in general.
I know people stick in 'unsafe' to gain a few percent speed sometimes, but then it's unsafe rust by definition. I agree that unsafe rust is unsafe.
Also you can do silly optimization tricks like if you need to perform a single operation on the entire collection of nodes, you can parallelize it easily by iterating thru the vector without having to iterate through the data structure using next/prev leaf/branch whatever.
orrr... maybe not! https://tenfourfox.blogspot.com/2025/02/february-patch-set-f...