teaching machines

Madeup Status Report #4

Fixlog

My goal for reporting my updates in two-week chunks was blown to smithereens by a week-long summer camp for middle schoolers that I put on last week. So, let me summarize what’s been going on these past few weeks topically instead of chronologically.

Storage

The part of releasing Madeup to the public that has scared me the most is managing people’s source code. I want folks to be able to save their work, but I don’t want the responsibility of hosting, managing accounts, and so on. My reason? I don’t think I could do it right—at least, not without time.

Last month I put on an afternoon workshop for my local public library about writing interactive digital stories. We used Twine, a browser-based app for composing stories with branching plots. Twine doesn’t host the stories people write; instead, the stories are stored locally on an author’s computer using HTML5’s local storage.

HTML5’s local storage is very similar to cookies in that they both provide a “memory” of data and that the client holds the data instead of the server. However, cookies are primarily used as a means of lightweight identification. Pages set a cookie in one session. In subsequent sessions, the cookie is sent up to the server automatically as a hook into the larger memory of the user stored on the server. Local storage, on the other hand, can hold a lot more data and the data is not automatically sent to the server.

Given Madeup’s early stage of development, I thought local storage seemed like a good fit for it, so I implemented a file save/open feature. Users can now persist multiple programs without having to write them out manually to the local computer, they can switch between programs very quickly, and they can save a copy of a working program and tweak it without hurting the original.

The most significant drawback to local storage is that it is tied to the web browser (and therefore machine) in which the data is saved.

Tube

It’s summertime where I live, and we love cooling off the fires inside our bodies with smoothies. Whip some cocoa powder, almond milk, peanut butter, and frozen bananas together in a blender. Pour into glasses. And get out the crazy straws.

To support the building of crazy straws in Madeup, I added a new generator: tube. It’s a lot like dowel, but a tube is hollow inside.

This particular crazy straw helps you suck up your own saliva.

This particular crazy straw helps you suck up your own saliva.

Paper

Sharing Madeup and seeing what good things it can provide learners and makers is as important to me as the software development. Plus, as a university professor, I’m charged with adding to my field via original research. Accordingly, after I received an announcement about a conference on visual (primarily block-based) programming languages, I thought a writeup on Madeup would be an appropriate submission. In a fit of inspiration, I put a paper together and submitted three weeks before the deadline! We’ll see what my peer reviewers think.

The central theme of the paper is that block-based educational languages, which leverage metaphors to our physical world in their interface, should also have physical output.

Camp

All summer long, my university puts on summer camps for young folks. I hosted one at the end of July themed on coding in 3D. In particular, we built a first-person Pacman game. We spent the first two days in Madeup, building walls, an avatar, a collectable, and an enemy. We spent the last two days putting the models together in the Unity game engine.

Was it successful? If you measure success based on how many people completed their games, it was a total failure. If you measure success based on students engaging in open-ended tasks and getting a realistic picture of hard fun, the camp went pretty well.

The camp included a field trip to Realityworks, a company that uses Unity and 3D printers to build simulators and design a line of sensor-rich infant dolls for schools’ family education programs. The campers got to try out an Oculus Rift, wear an empathy belly, practice welding, and see a lot of makers making.

Thanks, Realityworks! And thanks, Unity folks, for granting us a temporary license to run the camp!

Other Fixes

  • Steady progress on the documentation, written using Kramdown-flavored Markdown.
  • Fixes resizing issue when the developer console is opened or closed.
  • Fixes issue with quotations in program names when drawing them out from local storage.
  • Fixes typo bug in counter-clockwise test.
  • Adds a reverse command to flip a path’s direction.
  • Adds explicit support for loops-and-a-half. The tentative name for this loop is repeatwich, which is silly but suggests their sandwich-y nature. I’ve needed this kind of loop for a long time for walking curves. I step and turn and step and turn and… But I don’t want to turn after the final step. Consider this example:
    -- Prints xoxox
    repeatwich 3
      print "x"
    around
      print "o"
    end
  • Removes unnecessary ban of negation operator at the start of a parameter.
  • Switches from Three.js’ orbital controller to its trackball controller, which allows full rotation.
  • Fixes grid relocation bug on Fit.
  • Reorganizes menu, adding a file menu.
  • Fixes detection of revolve direction to ensure proper winding of triangles.
  • Adds favicon.
  • Upgrades cookie library.
  • Adds support for saving generated models to a variable and reissuing them. This makes it easier to write programs that are little model factories, like this one:
    We store the extruded star and then reissue it a few more times under an increasing rotation.

    We store the extruded star and then reissue it a few more times under an increasing rotation.

    Something similar could have been done with functions. This is more like a macro-recording facility, where we step through the actions live and then save them for reuse.

Model of the Fortnight

Fortnight? Since a few fortnights have passed since the last update, I’ll share a few models.

We have a set of Tangoes at home. Why not have one in the office too? It’s easy to build a new set in Madeup. Just pick a base side length, derive all other lengths, and walk and extrude some shapes.

A set of extruded tangram pieces posing for a family picture.

A set of extruded tangram pieces posing for a family picture.

Behind many machines is a repetitive task that someone got sick of doing. Like building pyramids. Madeup comes onto the scene too late to help the original construction workers, but it’ll certainly help you build your own Mayan temple:

A Mayan template built by revolving and extruding two stepping patterns.

A Mayan template built by revolving and extruding two stepping patterns.

Last but not least, I’ve discovered a fairly simple algorithm for generating a shape near and dear to the heart of Seymour Papert, one of the creators of Logo. The gear. Papert played with these as a child and they became his “object to think with.”

Two gears, which don't fit together because they have the same number of teeth but differing radii.

Two gears, which don’t fit together because they have the same number of teeth but differing radii.

 

Comments

  1. John says:

    Very Cool CJ! I really like madeup and I think it’s an awesome language for those looking to get interested in code. #KeepItUp

Leave a Reply

Your email address will not be published. Required fields are marked *