<html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"></head><body dir="auto"><div>I think Max (or Max users) can over-emphasize GUIs, and Pd's simple aesthetic actually draws me to it. This is really obvious when comparing newer Max patches with anything in Vanilla--the GUI structure can encourage patching philosophies that minimize live clicking and focus on automations, which is just personally pretty exciting in terms of what I want Pd to accomplish. There have been plenty of times when I've used [random] or different types of counters where it would have been just as possible to use a key slider or similar, and that has given me some really interesting results.<br><br>Sent from my iPhone</div><div><br>On Feb 22, 2016, at 5:17 PM, Jonathan Wilkes via Pd-list <<a href="mailto:pd-list@lists.iem.at">pd-list@lists.iem.at</a>> wrote:<br><br></div><blockquote type="cite"><div><div style="color:#000; background-color:#fff; font-family:HelveticaNeue, Helvetica Neue, Helvetica, Arial, Lucida Grande, sans-serif;font-size:16px"><div id="yiv5568576449"><div id="yui_3_16_0_1_1456179957623_11922"><div id="yui_3_16_0_1_1456179957623_11921" style="color:#000;background-color:#fff;font-family:HelveticaNeue, Helvetica Neue, Helvetica, Arial, Lucida Grande, sans-serif;font-size:16px;">> It's just that the presence of those features makes it much easier not 
to care, and many users just don't care, and it makes things worse for 
those of us who have to use that patch elsewhere.<div id="yiv5568576449yui_3_16_0_1_1456179957623_4437"><br clear="none"></div><div>Short story: I'm not going to write the code to implement segmented cords, and <br clear="none"></div><div dir="ltr">I don't think anyone else is, either.  But if someone wants to I'll certainly have <br clear="none"></div><div dir="ltr">a look.<br clear="none"> </div><div id="yiv5568576449yui_3_16_0_1_1456179957623_9416"><br clear="none"></div><div id="yiv5568576449yui_3_16_0_1_1456179957623_9415">Long story:<br clear="none"><span></span></div><div id="yiv5568576449yui_3_16_0_1_1456179957623_4438"><span id="yiv5568576449yui_3_16_0_1_1456179957623_4511">Non-segmented patch cords suggest a flow chart.  Segmented patch cords-- <br clear="none"></span></div><div dir="ltr" id="yiv5568576449yui_3_16_0_1_1456179957623_5650"><span id="yiv5568576449yui_3_16_0_1_1456179957623_4511">when used sensibly-- suggest a circuit board.  </span><span id="yiv5568576449yui_3_16_0_1_1456179957623_4511">The difference IMO is nobody in <br clear="none"></span></div><div dir="ltr" id="yiv5568576449yui_3_16_0_1_1456179957623_5651"><span id="yiv5568576449yui_3_16_0_1_1456179957623_4511">their right mind would </span><span id="yiv5568576449yui_3_16_0_1_1456179957623_4511">suggest circuit boards are an especially readable and <br clear="none"></span></div><div dir="ltr" id="yiv5568576449yui_3_16_0_1_1456179957623_5652"><span id="yiv5568576449yui_3_16_0_1_1456179957623_4511">friendly way to </span><span id="yiv5568576449yui_3_16_0_1_1456179957623_4511">elucidate a program's logic to human beings.  That's the starting <br clear="none"></span></div><div dir="ltr" id="yiv5568576449yui_3_16_0_1_1456179957623_7281"><span id="yiv5568576449yui_3_16_0_1_1456179957623_4511">premise </span><span id="yiv5568576449yui_3_16_0_1_1456179957623_4511">of every "flow based" language, though, and I've never seen much <br clear="none"></span></div><div dir="ltr" id="yiv5568576449yui_3_16_0_1_1456179957623_7282"><span id="yiv5568576449yui_3_16_0_1_1456179957623_4511">evidence to </span><span id="yiv5568576449yui_3_16_0_1_1456179957623_4511">back it up.<br clear="none"></span></div><div id="yiv5568576449yui_3_16_0_1_1456179957623_5653"><br clear="none"></div><div id="yiv5568576449yui_3_16_0_1_1456179957623_5737">All those awful-looking yet functional Pd and Max patches get that way <br clear="none"></div><div dir="ltr" id="yiv5568576449yui_3_16_0_1_1456179957623_5813">because of the strength of the approach, IMO-- that is, a physical motion with <br clear="none"></div><div dir="ltr" id="yiv5568576449yui_3_16_0_1_1456179957623_5902">visual animated feedback creates the flow of data.  It's the drawing of the <br clear="none"></div><div dir="ltr" id="yiv5568576449yui_3_16_0_1_1456179957623_6041">patch matters, not the engraving.</div><div dir="ltr" id="yiv5568576449yui_3_16_0_1_1456179957623_6042"><br clear="none"></div><div dir="ltr" id="yiv5568576449yui_3_16_0_1_1456179957623_6139">For example, imagine that Pd tracked Dan's eye movement on the first <br clear="none"></div><div dir="ltr" id="yiv5568576449yui_3_16_0_1_1456179957623_6236">version of his patch.  Those objects and wires that he hasn't looked at for <br clear="none"></div><div dir="ltr" id="yiv5568576449yui_3_16_0_1_1456179957623_6389">awhile fade more and more into the background, unless he tries to focus <br clear="none"></div><div dir="ltr" id="yiv5568576449yui_3_16_0_1_1456179957623_6390">on one of them and then they return.  I think that's a pretty decent description <br clear="none"></div><div dir="ltr" id="yiv5568576449yui_3_16_0_1_1456179957623_6443">of how we actually create those write-only patches.  Throw in whatever the <br clear="none"></div><div dir="ltr" id="yiv5568576449yui_3_16_0_1_1456179957623_6444">opposite of MVC is (e.g., where a toggle can appear smack dab in the model), <br clear="none"></div><div dir="ltr" id="yiv5568576449yui_3_16_0_1_1456179957623_6445">and you have an environment that's well suited to quick prototyping.</div><div dir="ltr" id="yiv5568576449yui_3_16_0_1_1456179957623_6446"><br clear="none"></div><div dir="ltr" id="yiv5568576449yui_3_16_0_1_1456179957623_6447">Of course that mental model has a short shelf-life, so there's the separate <br clear="none"></div><div dir="ltr" id="yiv5568576449yui_3_16_0_1_1456179957623_6916">issue of how to turn that into a readable patch.  There are certainly patterns <br clear="none"></div><div dir="ltr" id="yiv5568576449yui_3_16_0_1_1456179957623_6972"><div id="yui_3_16_0_1_1456179957623_11965" dir="ltr">to follow there, and ways to minimize the spaghetti in the first place.  But I think that potential to draw big ugly lines across the whole damn thing is what drives the speed and elegance of developing in the language.  If it weren't then Pd <br></div><div id="yui_3_16_0_1_1456179957623_11967" dir="ltr">would be like brainfuck, and none of those spaghetti patches would be able to <br></div><div id="yui_3_16_0_1_1456179957623_11966" dir="ltr">deliver any functionality to speak of.<br clear="none"> </div></div><br clear="none"><div dir="ltr" id="yiv5568576449yui_3_16_0_1_1456179957623_7089"><span id="yiv5568576449yui_3_16_0_1_1456179957623_4511"> </span>So for those users who don't care about taking their patches (or, hopefully, <br clear="none"></div><div id="yui_3_16_0_1_1456179957623_11923" dir="ltr">small abstractions or subpatches) from <br clear="none"></div><div dir="ltr" id="yiv5568576449yui_3_16_0_1_1456179957623_7736">"draw-time ugly-mode" to "presentable-to-other-humans mode", I don't think <br clear="none"></div><div dir="ltr" id="yiv5568576449yui_3_16_0_1_1456179957623_7798">segmented cords matter much.  For the ones who do, I guess I'd rather look at <br clear="none"></div><div dir="ltr" id="yiv5568576449yui_3_16_0_1_1456179957623_7865">a flow chart than a circuit board.  But given the choice I'd rather watch little <br clear="none"></div><div dir="ltr" id="yiv5568576449yui_3_16_0_1_1456179957623_8061">gremlins carry buckets of water up a hill, or robots shooting lasers at drones.  <br clear="none"></div><div dir="ltr" id="yiv5568576449yui_3_16_0_1_1456179957623_8691">Or at least see the data "pumping" through all those boring control wires that seem to always obscure the text I'm trying to read...</div><br clear="none"><div dir="ltr" id="yiv5568576449yui_3_16_0_1_1456179957623_8258">-Jonathan<br clear="none"></div><div dir="ltr" id="yiv5568576449yui_3_16_0_1_1456179957623_8259"><br clear="none"></div><div id="yui_3_16_0_1_1456179957623_11968" class="yiv5568576449qtdSeparateBR"><br clear="none"><br clear="none"></div></div></div></div><div class=".yiv5568576449yahoo_quoted"> <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 class="qtdSeparateBR"><br><br></div><div class="yiv5568576449yqt8449019680" id="yiv5568576449yqt26626"><div dir="ltr"><font face="Arial" size="2"> On Monday, February 22, 2016 5:20 PM, Matt Barber <<a href="mailto:brbrofsvl@gmail.com">brbrofsvl@gmail.com</a>> wrote:<br clear="none"></font></div>  <br clear="none"><br clear="none"> <div class="yiv5568576449y_msg_container"><div id="yiv5568576449"><div><div dir="ltr"><div class="yiv5568576449gmail_default" style="font-family:verdana, sans-serif;">Hi all,</div><div class="yiv5568576449gmail_default" style="font-family:verdana, sans-serif;"><br clear="none"></div><div class="yiv5568576449gmail_default" style="font-family:verdana, sans-serif;">Forcing good practice is not something I'm interested in. Every programming language can be abused horribly (they even have a prize for best/worst abuse of C -- look through some of these <a rel="nofollow" shape="rect" target="_blank" href="http://www.ioccc.org/years.html">http://www.ioccc.org/years.html</a> ).</div><div class="yiv5568576449gmail_default" style="font-family:verdana, sans-serif;"><br clear="none"></div><div class="yiv5568576449gmail_default" style="font-family:verdana, sans-serif;">My point was not that avoiding segmented and hideable patch cords fixes these problems. It's just that the presence of those features makes it much easier not to care, and many users just don't care, and it makes things worse for those of us who have to use that patch elsewhere.</div><div class="yiv5568576449gmail_default" style="font-family:verdana, sans-serif;"><br clear="none"></div><div class="yiv5568576449gmail_default" style="font-family:verdana, sans-serif;">We did have a long list discussion about best practices, actually, collected here:</div><div class="yiv5568576449gmail_default" style="font-family:verdana, sans-serif;"><br clear="none"></div><div class="yiv5568576449gmail_default" style=""><font face="verdana, sans-serif"><a rel="nofollow" shape="rect" target="_blank" href="https://puredata.info/docs/style-guide/PrimordialStyleGuide/">https://puredata.info/docs/style-guide/PrimordialStyleGuide/</a></font><br clear="none"></div><div class="yiv5568576449gmail_default" style=""><font face="verdana, sans-serif"><br clear="none"></font></div><div class="yiv5568576449gmail_default" style=""><font face="verdana, sans-serif">There are other style guides too.</font></div></div><div class="yiv5568576449yqt0726927764" id="yiv5568576449yqt78670"><div class="yiv5568576449gmail_extra"><br clear="none"><div class="yiv5568576449gmail_quote">On Mon, Feb 22, 2016 at 4:29 PM, Dan Wilcox <span dir="ltr"><<a rel="nofollow" shape="rect" ymailto="mailto:danomatika@gmail.com" target="_blank" href="mailto:danomatika@gmail.com">danomatika@gmail.com</a>></span> wrote:<br clear="none"><blockquote class="yiv5568576449gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;"><div style="word-wrap:break-word;"><br clear="none"><div><blockquote type="cite"><div><div dir="ltr" style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;"><div class="yiv5568576449gmail_extra"><div class="yiv5568576449gmail_quote"><span class="yiv5568576449">2016-02-22 17:25 GMT-03:00 Matt Barber<span> </span><span dir="ltr"><<a rel="nofollow" shape="rect" ymailto="mailto:brbrofsvl@gmail.com" target="_blank" href="mailto:brbrofsvl@gmail.com">brbrofsvl@gmail.com</a>></span>:<br clear="none"></span><span class="yiv5568576449"></span><blockquote class="yiv5568576449gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex;"><div dir="ltr"><div style="font-family:verdana, sans-serif;">I've said this before, but I think there are very good reasons not to ever include segmented patch cords (although hideable patch cords would be even worse). These two features are responsible for some of the very worst patching habits in Max/MSP. Have you ever been called on to run someone's patch, and you need to tweak something for your specific audio setup or fix a bug or whatever, and when you open it you get something that looks like this (one of the first "max patch" results on google image search):</div><div style="font-family:verdana, sans-serif;"><br clear="none"></div><div><font face="verdana, sans-serif"><a rel="nofollow" shape="rect" target="_blank" href="http://www.letatoubleu.com/OLcomposer_files/image001.jpg">http://www.letatoubleu.com/OLcomposer_files/image001.jpg</a></font></div><div><font face="verdana, sans-serif"><br clear="none"></font></div></div></blockquote><div><br clear="none"></div><span class="yiv5568576449"></span><div>I agree, and I laugh when people say, this is hard to understand in Max, because of all the cords, I can't imagine how ugly it'd be in Pd.</div></div></div></div></div></blockquote></div><div><br clear="none"></div><br clear="none"><div>The solution is the same in both environments: good use of encapsulation via subpatches & judicious use of send/recvs when necessary.</div><div><br clear="none"></div><div>Example from robotcowboy:</div><div><br clear="none"></div><div>* one of my first performance patches: <a rel="nofollow" shape="rect" target="_blank" href="https://www.flickr.com/photos/danomatika/25082084442/in/datetaken-public/">https://www.flickr.com/photos/danomatika/25082084442/in/datetaken-public/</a></div><div>* and the second version using subpatches & send/recvs: <a rel="nofollow" shape="rect" target="_blank" href="https://www.flickr.com/photos/danomatika/24573539133/in/datetaken-public/">https://www.flickr.com/photos/danomatika/24573539133/in/datetaken-public/</a></div><div><br clear="none"></div><div>This approach led to using GOP and modularizing things between separate patches & a main control patch: <a rel="nofollow" shape="rect" target="_blank" href="https://www.flickr.com/photos/danomatika/25107115651/in/datetaken-public/">https://www.flickr.com/photos/danomatika/25107115651/in/datetaken-public/</a></div><div><br clear="none"></div><div>To segment or not to segment is moot, you can create both well designed as well as spaghetti patches in either environment just as you can create well-written or spaghetti code in any textual language. I agree that the environments are not at fault here.<br clear="none"><div><div style="word-wrap:break-word;"><br clear="none"></div><div style="word-wrap:break-word;">--------<br clear="none">Dan Wilcox<br clear="none"><a rel="nofollow" shape="rect" target="_blank" href="https://twitter.com/danomatika">@danomatika</a><br clear="none"><a rel="nofollow" shape="rect" target="_blank" href="http://danomatika.com/">danomatika.com</a><br clear="none"><div><a rel="nofollow" shape="rect" target="_blank" href="http://robotcowboy.com/">robotcowboy.com</a></div></div></div></div></div></blockquote></div><br clear="none"></div></div></div></div><br clear="none"><div class="yiv5568576449yqt0726927764" id="yiv5568576449yqt27199">_______________________________________________<br clear="none"><a rel="nofollow" shape="rect" ymailto="mailto:Pd-list@lists.iem.at" target="_blank" href="mailto:Pd-list@lists.iem.at">Pd-list@lists.iem.at</a> mailing list<br clear="none">UNSUBSCRIBE and account-management -> <a rel="nofollow" shape="rect" target="_blank" href="http://lists.puredata.info/listinfo/pd-list">http://lists.puredata.info/listinfo/pd-list</a><br clear="none"></div><br clear="none"><br clear="none"></div></div>  </div> </div>  </div></div></div></blockquote><blockquote type="cite"><div><span>_______________________________________________</span><br><span><a href="mailto:Pd-list@lists.iem.at">Pd-list@lists.iem.at</a> mailing list</span><br><span>UNSUBSCRIBE and account-management -> <a href="http://lists.puredata.info/listinfo/pd-list">http://lists.puredata.info/listinfo/pd-list</a></span><br></div></blockquote></body></html>