<div dir="ltr">you don't have a DAW, so you're not sitting there just arranging boxes on a screen all day...err...hang on... bad example ;)</div><div class="gmail_extra"><br><div class="gmail_quote">On Thu, Mar 3, 2016 at 12:28 PM, Matt Barber <span dir="ltr"><<a href="mailto:brbrofsvl@gmail.com" target="_blank">brbrofsvl@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div class="gmail_default" style="font-family:verdana,sans-serif">​"Gate" is a metaphor, so it seems to me you just need another metaphor for what's going on. The best one I've come up with so far is entirely inappropriate for most cases, but gets the point across: instead of a "gate," you might think of it as a safety on a firearm. You can load and unload it all you want but as long as the safety is on it won't fire.​ Another one might be "sending supplies past the blockade." Or if you want to keep the "gate" metaphor, it might be "tossing your knapsack over before trying to get through." Or "meet me at the rendezvous; don't do anything without me – if I don't make it past security with the goods, you'll have to abandon the plan."</div><div class="gmail_default" style="font-family:verdana,sans-serif"><br></div><div class="gmail_default" style="font-family:verdana,sans-serif">The other thing about this particular dataflow representation is that cold inlets are themselves a kind of gate. That might make the end-run feel better.</div><div class="gmail_default" style="font-family:verdana,sans-serif"><br></div><div class="gmail_default" style="font-family:verdana,sans-serif">A third option you didn't mention would be using [value].</div></div><div class="HOEnZb"><div class="h5"><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Mar 2, 2016 at 9:20 PM, Jonathan Wilkes <span dir="ltr"><<a href="mailto:jancsika@yahoo.com" target="_blank">jancsika@yahoo.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div style="color:#000;background-color:#fff;font-family:HelveticaNeue,Helvetica Neue,Helvetica,Arial,Lucida Grande,sans-serif;font-size:16px"><span><div dir="ltr">> 3. Its visual austerity is a huge help to me in thinking clearly about 
patching and dataflow. It's amazing how often a geometrically elegant 
solution turns out to be an elegant solution full stop.</div><div dir="ltr"><br></div></span><div dir="ltr">Coincidentally, I was thinking about counterexamples to this today.</div><div dir="ltr"><br></div><div dir="ltr">Consider a gate:</div><div dir="ltr"><br></div><div dir="ltr">float</div><div dir="ltr">|</div><div dir="ltr">v</div><div dir="ltr">-----o <- gate!</div><div dir="ltr">|</div><div dir="ltr">v</div><div dir="ltr">(copy of) float<br></div><div dir="ltr"><br></div><div dir="ltr">One of the problems with C is that you must take care both in your conditions for <br></div><div dir="ltr">opening the gate, and in avoiding many subtle bugs through spacing, scoping, etc. <br></div><div dir="ltr">that could cause the gate to become ineffectual.  Many of those subtle bugs are visual-- <br></div><div dir="ltr">I mean, your variable's state is just waiting to be perused by any context inside the <br></div><div dir="ltr">function that's willing to read it.  It's amazing Linux works at all when you consider <br></div><div dir="ltr">how few constraints there are on the code one must reason about.</div><div dir="ltr"><br></div><div dir="ltr">A dataflow language improves this by representing the gate as a visual barrier. <br></div><div dir="ltr">You can't just blithely read "stuff" below the gate[1].  The gate has to pass the data <br></div><div dir="ltr">down the line, and even if you made an additional connection from "float" to something <br></div><div dir="ltr">below, you have to drag the line visually over the gate so that your violation of <br></div><div dir="ltr">common sense and decency is visually obvious.</div><div dir="ltr"><br></div><div dir="ltr">But now we have a problem, because if we have anything more than "float" that we <br></div><div dir="ltr">want to operate on below the gate, we have no way to read it.  There are two possible <br></div><div dir="ltr">solutions to this:</div><div dir="ltr">1) store copies of the data below the gate, so that you can read <br></div><div dir="ltr">them if you happen to be allowed through the gate.</div><div dir="ltr">2) send some more expressive form of data like an object through the gate, and pack <br></div><div dir="ltr">everything you want to have access to into that object.</div><div dir="ltr"><br></div><div dir="ltr">#1 is what I see in most patches (and what I end up patching when I just need to get <br></div><div dir="ltr">something done).  But think about how that complicates the dataflow.  In the gate <br></div><div dir="ltr">example it's especially apparent-- if you want to store some data below the gate you <br></div><div dir="ltr">have to draw a line that does an end run around it to the right inlet of a [float] below <br></div><div dir="ltr">the gate.  That  violates the very representation of a gate that the visual language was <br></div><div dir="ltr">trying to provide for you.</div><div dir="ltr"><br></div><div dir="ltr">#2 pack your data into a list and use [route] as the gate.  This restores visual clarity <br></div><div dir="ltr">at the expense of anonymous positional arguments.  So it works well for routing a list <br></div><div dir="ltr">of, say, two or three values.  But not so well for a larger amount of discrete data.  An <br></div><div dir="ltr">example of this downside would be a patch that does a good job of showing where <br></div><div dir="ltr">a list flows or branches, but then seeing a big message box at the bottom with something <br></div><div dir="ltr">like [voice $1-$3 $5 $2 $4(.  It's a real pain to debug and extend patterns like that.</div><div dir="ltr"><br></div><div dir="ltr">I'd be interested to hear other approaches to this problem.</div><span><font color="#888888"><div dir="ltr"><br></div><div dir="ltr">-Jonathan<br></div></font></span><div><div><div dir="ltr"><br></div><div dir="ltr"><br> </div><div dir="ltr"><br></div><div dir="ltr"><br></div><div dir="ltr"><br></div><div><span></span></div> <div><br><br></div><div style="display:block"> <div style="font-family:HelveticaNeue,Helvetica Neue,Helvetica,Arial,Lucida Grande,sans-serif;font-size:16px"> <div style="font-family:HelveticaNeue,Helvetica Neue,Helvetica,Arial,Lucida Grande,sans-serif;font-size:16px"> <div dir="ltr"><font face="Arial" size="2"> On Wednesday, March 2, 2016 8:20 PM, Matt Barber <<a href="mailto:brbrofsvl@gmail.com" target="_blank">brbrofsvl@gmail.com</a>> wrote:<br></font></div>  <br><br> <div><div><div><div dir="ltr"><div style="font-family:verdana,sans-serif">This is a great way to frame it, and it is indeed how I approach composition as well. It sometimes helps to think of a piece as a solution – maybe the only solution – to a set of constraints.</div><div style="font-family:verdana,sans-serif"><br clear="none"></div><div style="font-family:verdana,sans-serif">Three limitations that I love in Pd off the top of my head:</div><div style="font-family:verdana,sans-serif"><br clear="none"></div><div style="font-family:verdana,sans-serif">1. The relatively small set of core objects really helps with programming ingenuity, and in fact has made me think through some things that have been helpful in other programming contexts. I love when someone throws down a "this can't be done in vanilla" challenge; I've learned lots from thinking, "OK, we'll see about that!"</div><div style="font-family:verdana,sans-serif"><br clear="none"></div><div style="font-family:verdana,sans-serif">2. The smallish set of objects also means that Pd is not a black box. It does mean sometimes that you have to know what you're doing, but in general it does not force you to think a specific way about what you're doing. This is not true in my experience with my students who use other programs excluding csound and SC, but including Max – they'll often as a group settle on one massive object or plugin that does 100 things in a really specific way (look at this badass object I found!) and all end up writing more or less the same piece due to the directions the design of the object pushed them in.</div><div style="font-family:verdana,sans-serif"><br clear="none"></div><div style="font-family:verdana,sans-serif">3. Its visual austerity is a huge help to me in thinking clearly about patching and dataflow. It's amazing how often a geometrically elegant solution turns out to be an elegant solution full stop.</div></div><div><div><br clear="none"><div>On Wed, Mar 2, 2016 at 9:50 AM, Lorenzo Sutton <span dir="ltr"><<a rel="nofollow" shape="rect" href="mailto:lorenzofsutton@gmail.com" target="_blank">lorenzofsutton@gmail.com</a>></span> wrote:<br clear="none"><blockquote style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Trying to turn the Pd limitations thread, which eventually became the (usual) 'Pd vs foo" thread, into something possibly more constructive, interesting and inspiring.<br clear="none">
<br clear="none">
Starting from the concept of "Creative Limitation" (I am primarily thinking of Stravinsky):<br clear="none">
<br clear="none">
How do Pd's limitations enhance people's creativity?<br clear="none">
<br clear="none">
<br clear="none">
_______________________________________________<br clear="none">
<a rel="nofollow" shape="rect" href="mailto:Pd-list@lists.iem.at" target="_blank">Pd-list@lists.iem.at</a> mailing list<br clear="none">
UNSUBSCRIBE and account-management -> <a rel="nofollow" shape="rect" href="http://lists.puredata.info/listinfo/pd-list" target="_blank">http://lists.puredata.info/listinfo/pd-list</a><br clear="none">
</blockquote></div><br clear="none"></div></div></div></div><br><div>_______________________________________________<br clear="none"><a shape="rect" href="mailto:Pd-list@lists.iem.at" target="_blank">Pd-list@lists.iem.at</a> mailing list<br clear="none">UNSUBSCRIBE and account-management -> <a shape="rect" href="http://lists.puredata.info/listinfo/pd-list" target="_blank">http://lists.puredata.info/listinfo/pd-list</a><br clear="none"></div><br><br></div>  </div> </div>  </div></div></div></div></div></blockquote></div><br></div>
</div></div><br>_______________________________________________<br>
<a href="mailto:Pd-list@lists.iem.at">Pd-list@lists.iem.at</a> mailing list<br>
UNSUBSCRIBE and account-management -> <a href="http://lists.puredata.info/listinfo/pd-list" rel="noreferrer" target="_blank">http://lists.puredata.info/listinfo/pd-list</a><br>
<br></blockquote></div><br></div>