Date: Thu, 23 Apr 2020 10:22:04 -0700
From: Bret Victor
Subject: Re: Collage Kit
We haven't jammed yet, but hopefully will soon!

Easy A:  The replicator (e.g. this one) finds tags to replicate like so:

    When (you) replicates tag number /tag_number/, 
         /tag/ is tag number /tag_number/ in /container/, 
         /tag/ is a "tag", 
         /container/ shows images under tags,

Replicas are distinguished from physical tags because replicas aren't claimed to be a "tag", and canvases are distinguished from other tag-holding containers (like the replicator itself) by wishing they show images under tags. 

The first is wrong, of course, there should be explicit claims distinguishing physical and virtual objects. The second could be more general (e.g. Claim tags in (canvas) can be replicated., or something.)

The Hard A might have something to do with making the distinction only in how you specify what you want to replicate -- that is, maybe it's more about the query than the ontology.  The "UI" for the replicators in the video is that you put a tag on the replicator, and it finds *physical tags on canvases* to replicate.  (Because in this case, physicality is the only property distinguishing its originals from its replicas.)  But you can imagine a replicator with a geometric selector, where you point at a particular tag and it replicates it, or replicates the uppermost tag in the canvas, or those in a box, etc.  In that case, it doesn't matter whether the original is physical or virtual, because it's distinguished by its location.  Maybe there are other ways to select what you want to replicate.



On Apr 23, 2020, at 12:17 AM, Joshua Horowitz wrote:

That looks really lovely and genuinely fun!

It feels like something kids could learn to use, get excited about, and then be motivated to extend the dynamics of. A bit more so than, say, Animation, which has the appearance of a closed-off single-purpose "app". "Let me make this do something new" is a less obvious thought to have with that one. Also, since Collage Kit is made out of multiple parts, it is probably more multi-player-able than Animation. (Have you collage-jammed with Joanne?)



All this replication raises some 🧩 ontological puzzles 🧩:

You tell us that replicators take the physical tag and produce virtual tags which the system treats just the same as the original tag. But... the replicator doesn't act on the virtual tags, right? That would create an infinite loop! So...

Easy Q: How do you handle this right now?
Hard Q: What's a conceptual basis for these distinctions which allows fluid, open-ended movement between virtual and physical objects?

To clarify what I mean by "fluid" and "open-ended"...

💡 You could say "replicators always work on physical objects and never on virtual objects".
⚠️ But then you can't apply replicators to replicated objects! Virtual objects become dead ends, not open ends.

💡 When you apply a replicator to a tag, you supply an "output tag". The replicas are associated to this new tag, rather than the old one. Future operations can be performed on the new tag, and the old tag keeps its old meaning.
⚠️ But then the new tags wouldn't transparently be treated the same as the old tags! You couldn't just say "draw a cat on this tag"; you'd have to say "draw a cat on this tag, and all replicas thereof". That's no fun. It's certainly not very fluid.

Something to chew on.



P.S You're welcome for easy_persist! I am happy and surprised you were able to find, make sense of, and use it.

P.P.S. Drawing pictures to reveal rainbows bears an uncanny resemblance with the "scratch paper" which was all the rage back in elementary school:

<ts108.jpg>

On Wed, Apr 22, 2020 at 7:15 PM Bret Victor wrote:
Collage Kit


A few things I forgot to mention in the video:

- I meant to point out that the canvas can be a posterboard instead of the table, so after you arrange your tags, you can tape them down to make a permanent "machine" for that particular geometry.  It doesn't have to be ephemeral!

- One thing I was trying to explore here was whether someone could make a Snowflake Maker without typing in vector math.  The replicators here have vector math, but you can imagine a world where dynamic geometry is specified more directly.  (That world might be Apparatus.)

Scrubbable is rudimentary but handy. (I forgot to show scrubbing the threshold, where it's actually useful.)
local threshold = scrubbable(you, 0, 1) or 0.35   -- can be scrubbed between 0 or 1, defaults to 0.35

- Thanks Josh for both easy_persist and Postscript DSL!