The summer is drawing to a close. Madeup has come a long way since May! Some big features remain (like support for holes, a persistent server for generating models, and some support for splines), but the core path-walking mechanic is stable and enough hands have touched it and not founding glaring errors that I think I’m ready to share. But first, we need a little more documentation.
Read about the latest changes below, and check out the model of the fortnight!
length, because I think
lengthhas too much spatial connotation (and arrays aren’t necessarily spatial) and because it was conflicting with some parameter names.
timeswasn’t in scope at the time
to double x = times 2 x to times a b = a * b
double‘s definition includes a closure of all the names in scope at the time of its definition, and
times was not among those names. In this particular case, one could define
times first, but that’s not possible for mutually recursive functions. C fixes this using forward declarations. I fixed this by doing a quick prepass whenever the interpreter encounters a block. If any function definitions are found within the block, the functions’ names are added to the environment right at the block’s start. This implementation may produce some gotchas I haven’t yet encountered.
A fellow down the hall invited me to a birthday party for his two-year-old daughter. I had never met her, but I wanted to bring her a gift. The bakery where I like to find these kinds of gifts was closed, so I needed a plan B. That one didn’t turn out either. It wasn’t until plan H that I remembered our 3D printer.
The girl’s name is Hillary. I decided to make her an H-box. My first thought was to make it in Madeup, but a first attempt didn’t go so well. I switched to Blender. There I used the text tool to make an H and then extruded it up, but I couldn’t find an easy way to do an “inner extrude” to make the top lip of the box you see below.
A regular extrude followed by a scale didn’t yield a wall with a constant thickness. At this point, I realized that Madeup was the only way to go. I wrote a very parameterized function to trace out an H and then called it four times to trace out the box:
to h params ... end draw bottom outer h draw top outer h draw top inner h draw bottom inner h
Then I called the
surface solidifier which hooked all four paths together and the box appeared! Four more calls and I had a lid.
Happy birthday, Hillary!