<div dir="ltr"><div>Hi Perry,</div><div><br></div><div>I thought about doing this but wanted the solution to scale in case the files were really huge or there was an overwhelming number of them. I&#39;ve noticed that this is a great approach when you need things to happen immediately when they are called, however, the timing in this application is loose so, I&#39;d rather buy the time I need to load the files from the disk on demand than be limited by the size of the cache. </div><div><br></div><div>I&#39;m assuming that this &quot;cache&quot; is in memory... what are the effective limitations here? Assuming a 64bit OS for now, are we basically just limited by the availability of RAM on the system? Or is are there limits set in the Chuck executable? </div><div><br></div><div>Best,</div><div>Mike</div><br clear="all"><div><div dir="ltr" class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr"><div><div dir="ltr"><div dir="ltr"><div dir="ltr"><div><span style="color:rgb(117,117,117);font-family:&quot;Helvetica Neue&quot;,Helvetica,Arial,sans-serif;font-size:13px;line-height:19.5px">--</span></div><div><span style="color:rgb(117,117,117);font-family:&quot;Helvetica Neue&quot;,Helvetica,Arial,sans-serif;font-size:13px;line-height:19.5px">Michael Clemow</span></div><div><div style="color:rgb(117,117,117);font-family:&quot;Helvetica Neue&quot;,Helvetica,Arial,sans-serif;font-size:13px;line-height:19.5px"><span>Artist</span>/Composer/<span>Sound</span> Designer</div><div style="color:rgb(117,117,117);font-family:&quot;Helvetica Neue&quot;,Helvetica,Arial,sans-serif;font-size:13px;line-height:19.5px"><a href="http://michaelclemow.com/" style="color:rgb(126,87,194)" target="_blank">http://michaelclemow.com</a></div><span style="color:rgb(117,117,117);font-family:&quot;Helvetica Neue&quot;,Helvetica,Arial,sans-serif;font-size:13px">(he/him)</span><br></div></div></div></div></div></div></div></div><br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Thu, Jul 2, 2020 at 6:48 PM Perry Cook &lt;<a href="mailto:prc@cs.princeton.edu">prc@cs.princeton.edu</a>&gt; wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Depending on how HUGE the SndBuf files are, I have often loaded all of the files<br>
sequentially at the beginning, before I make any sound at all, into a single SndBuf, <br>
not to play them, but to get them into the cache. Then when the time comes to <br>
truly load them, they can be zero-disk loads.  If they’re too big, this won’t work <br>
of course because you’ll exhaust your cache.<br>
<br>
PRC<br>
<br>
&gt; On Jul 2, 2020, at 2:19 PM, <a href="mailto:chuck-users-request@lists.cs.princeton.edu" target="_blank">chuck-users-request@lists.cs.princeton.edu</a> wrote:<br>
&gt; <br>
&gt; Send chuck-users mailing list submissions to<br>
&gt;       <a href="mailto:chuck-users@lists.cs.princeton.edu" target="_blank">chuck-users@lists.cs.princeton.edu</a><br>
&gt; <br>
&gt; To subscribe or unsubscribe via the World Wide Web, visit<br>
&gt;       <a href="https://lists.cs.princeton.edu/mailman/listinfo/chuck-users" rel="noreferrer" target="_blank">https://lists.cs.princeton.edu/mailman/listinfo/chuck-users</a><br>
&gt; or, via email, send a message with subject or body &#39;help&#39; to<br>
&gt;       <a href="mailto:chuck-users-request@lists.cs.princeton.edu" target="_blank">chuck-users-request@lists.cs.princeton.edu</a><br>
&gt; <br>
&gt; You can reach the person managing the list at<br>
&gt;       <a href="mailto:chuck-users-owner@lists.cs.princeton.edu" target="_blank">chuck-users-owner@lists.cs.princeton.edu</a><br>
&gt; <br>
&gt; When replying, please edit your Subject line so it is more specific<br>
&gt; than &quot;Re: Contents of chuck-users digest...&quot;<br>
&gt; <br>
&gt; <br>
&gt; Today&#39;s Topics:<br>
&gt; <br>
&gt;   1. Machine.add() and me.yield() (mike clemow)<br>
&gt;   2. Re: Machine.add() and me.yield() (Michael Heuer)<br>
&gt;   3. Re: Machine.add() and me.yield() (mike clemow)<br>
&gt; <br>
&gt; <br>
&gt; ----------------------------------------------------------------------<br>
&gt; <br>
&gt; Message: 1<br>
&gt; Date: Thu, 2 Jul 2020 16:43:51 -0400<br>
&gt; From: mike clemow &lt;<a href="mailto:michaelclemow@gmail.com" target="_blank">michaelclemow@gmail.com</a>&gt;<br>
&gt; To: ChucK Users Mailing List &lt;<a href="mailto:chuck-users@lists.cs.princeton.edu" target="_blank">chuck-users@lists.cs.princeton.edu</a>&gt;<br>
&gt; Subject: [chuck-users] Machine.add() and me.yield()<br>
&gt; Message-ID:<br>
&gt;       &lt;CADddD5mL1NzWPVs4GgX=VPsezSUPw-01O_=<a href="mailto:iAKMDfuPxYtDBiQ@mail.gmail.com" target="_blank">iAKMDfuPxYtDBiQ@mail.gmail.com</a>&gt;<br>
&gt; Content-Type: text/plain; charset=&quot;utf-8&quot;<br>
&gt; <br>
&gt; Greetings Chuckists,<br>
&gt; <br>
&gt; Looking for validation on this before I change many, many lines of code:<br>
&gt; I&#39;m noticing clicks and pops in running audio when I do something like this:<br>
&gt; <br>
&gt; Machine.add(&quot;thingOne.ck&quot;);<br>
&gt; Machine.add(&quot;thingTwo.ck&quot;);<br>
&gt; Machine.add(&quot;thingThree.ck&quot;);<br>
&gt; Machine.add(&quot;thingFour.ck&quot;);<br>
&gt; <br>
&gt; and also with Machine.remove(idNum); four times in a row.<br>
&gt; <br>
&gt; Question:<br>
&gt; <br>
&gt; Is this:<br>
&gt; <br>
&gt; Machine.add(&quot;thingOne.ck&quot;);<br>
&gt; Machine.add(&quot;thingTwo.ck&quot;);<br>
&gt; Machine.add(&quot;thingThree.ck&quot;);<br>
&gt; Machine.add(&quot;thingFour.ck&quot;);<br>
&gt; me.yield();<br>
&gt; <br>
&gt; significantly different than this:<br>
&gt; <br>
&gt; Machine.add(&quot;thingOne.ck&quot;);<br>
&gt; me.yield();<br>
&gt; Machine.add(&quot;thingTwo.ck&quot;);<br>
&gt; me.yield();<br>
&gt; Machine.add(&quot;thingThree.ck&quot;);<br>
&gt; me.yield();<br>
&gt; Machine.add(&quot;thingFour.ck&quot;);<br>
&gt; me.yield();<br>
&gt; <br>
&gt; ???<br>
&gt; <br>
&gt; The same for sporking shreds four in a row.<br>
&gt; <br>
&gt; Warmly,<br>
&gt; Mike<br>
&gt; <br>
&gt; --<br>
&gt; Michael Clemow<br>
&gt; Artist/Composer/Sound Designer<br>
&gt; <a href="http://michaelclemow.com" rel="noreferrer" target="_blank">http://michaelclemow.com</a><br>
&gt; (he/him)<br>
&gt; -------------- next part --------------<br>
&gt; An HTML attachment was scrubbed...<br>
&gt; URL: &lt;<a href="http://lists.cs.princeton.edu/pipermail/chuck-users/attachments/20200702/af44d845/attachment-0001.html" rel="noreferrer" target="_blank">http://lists.cs.princeton.edu/pipermail/chuck-users/attachments/20200702/af44d845/attachment-0001.html</a>&gt;<br>
&gt; <br>
&gt; ------------------------------<br>
&gt; <br>
&gt; Message: 2<br>
&gt; Date: Thu, 2 Jul 2020 16:07:41 -0500<br>
&gt; From: Michael Heuer &lt;<a href="mailto:heuermh@gmail.com" target="_blank">heuermh@gmail.com</a>&gt;<br>
&gt; To: ChucK Users Mailing List &lt;<a href="mailto:chuck-users@lists.cs.princeton.edu" target="_blank">chuck-users@lists.cs.princeton.edu</a>&gt;<br>
&gt; Subject: Re: [chuck-users] Machine.add() and me.yield()<br>
&gt; Message-ID: &lt;<a href="mailto:48B17D40-CEC3-4D9F-8550-B8290DB4E0F1@gmail.com" target="_blank">48B17D40-CEC3-4D9F-8550-B8290DB4E0F1@gmail.com</a>&gt;<br>
&gt; Content-Type: text/plain; charset=&quot;us-ascii&quot;<br>
&gt; <br>
&gt; Hello Mike,<br>
&gt; <br>
&gt; Since Machine.add is hitting the file system and parsing and evaluating the ChucK scripts, it might work better to do all of that in one go when not generating sound<br>
&gt; <br>
&gt; Machine.add(&quot;thingOne.ck&quot;);<br>
&gt; Machine.add(&quot;thingTwo.ck&quot;);<br>
&gt; Machine.add(&quot;thingThree.ck&quot;);<br>
&gt; Machine.add(&quot;thingFour.ck&quot;);<br>
&gt; <br>
&gt; And then later call methods to initialize them serially or in different shreds, something like<br>
&gt; <br>
&gt; thingOne.start();<br>
&gt; thingTwo.start();<br>
&gt; thingThree.start();<br>
&gt; thingFour.start();<br>
&gt; <br>
&gt; spork ~ thingOne.start();<br>
&gt; spork ~ thingTwo.start();<br>
&gt; spork ~ thingThree.start();<br>
&gt; spork ~ thingFour.start();<br>
&gt; <br>
&gt; Hope this helps,<br>
&gt; <br>
&gt;   michael<br>
&gt; <br>
&gt; <br>
&gt;&gt; Begin forwarded message:<br>
&gt;&gt; <br>
&gt;&gt; From: mike clemow &lt;<a href="mailto:michaelclemow@gmail.com" target="_blank">michaelclemow@gmail.com</a>&gt;<br>
&gt;&gt; Subject: [chuck-users] Machine.add() and me.yield()<br>
&gt;&gt; Date: July 2, 2020 at 3:43:51 PM CDT<br>
&gt;&gt; To: ChucK Users Mailing List &lt;<a href="mailto:chuck-users@lists.cs.princeton.edu" target="_blank">chuck-users@lists.cs.princeton.edu</a>&gt;<br>
&gt;&gt; Reply-To: ChucK Users Mailing List &lt;<a href="mailto:chuck-users@lists.cs.princeton.edu" target="_blank">chuck-users@lists.cs.princeton.edu</a>&gt;<br>
&gt;&gt; <br>
&gt;&gt; Greetings Chuckists,<br>
&gt;&gt; <br>
&gt;&gt; Looking for validation on this before I change many, many lines of code: I&#39;m noticing clicks and pops in running audio when I do something like this:<br>
&gt;&gt; <br>
&gt;&gt; Machine.add(&quot;thingOne.ck&quot;);<br>
&gt;&gt; Machine.add(&quot;thingTwo.ck&quot;);<br>
&gt;&gt; Machine.add(&quot;thingThree.ck&quot;);<br>
&gt;&gt; Machine.add(&quot;thingFour.ck&quot;);<br>
&gt;&gt; <br>
&gt;&gt; and also with Machine.remove(idNum); four times in a row.<br>
&gt;&gt; <br>
&gt;&gt; Question:<br>
&gt;&gt; <br>
&gt;&gt; Is this:<br>
&gt;&gt; <br>
&gt;&gt; Machine.add(&quot;thingOne.ck&quot;);<br>
&gt;&gt; Machine.add(&quot;thingTwo.ck&quot;);<br>
&gt;&gt; Machine.add(&quot;thingThree.ck&quot;);<br>
&gt;&gt; Machine.add(&quot;thingFour.ck&quot;);<br>
&gt;&gt; me.yield();<br>
&gt;&gt; <br>
&gt;&gt; significantly different than this:<br>
&gt;&gt; <br>
&gt;&gt; Machine.add(&quot;thingOne.ck&quot;);<br>
&gt;&gt; me.yield();<br>
&gt;&gt; Machine.add(&quot;thingTwo.ck&quot;);<br>
&gt;&gt; me.yield();<br>
&gt;&gt; Machine.add(&quot;thingThree.ck&quot;);<br>
&gt;&gt; me.yield();<br>
&gt;&gt; Machine.add(&quot;thingFour.ck&quot;);<br>
&gt;&gt; me.yield();<br>
&gt;&gt; <br>
&gt;&gt; ???<br>
&gt;&gt; <br>
&gt;&gt; The same for sporking shreds four in a row.<br>
&gt;&gt; <br>
&gt;&gt; Warmly,<br>
&gt;&gt; Mike<br>
&gt;&gt; <br>
&gt;&gt; --<br>
&gt;&gt; Michael Clemow<br>
&gt;&gt; Artist/Composer/Sound Designer<br>
&gt;&gt; <a href="http://michaelclemow.com" rel="noreferrer" target="_blank">http://michaelclemow.com</a> &lt;<a href="http://michaelclemow.com/" rel="noreferrer" target="_blank">http://michaelclemow.com/</a>&gt;(he/him)<br>
&gt;&gt; _______________________________________________<br>
&gt;&gt; chuck-users mailing list<br>
&gt;&gt; <a href="mailto:chuck-users@lists.cs.princeton.edu" target="_blank">chuck-users@lists.cs.princeton.edu</a><br>
&gt;&gt; <a href="https://lists.cs.princeton.edu/mailman/listinfo/chuck-users" rel="noreferrer" target="_blank">https://lists.cs.princeton.edu/mailman/listinfo/chuck-users</a><br>
&gt; <br>
&gt; -------------- next part --------------<br>
&gt; An HTML attachment was scrubbed...<br>
&gt; URL: &lt;<a href="http://lists.cs.princeton.edu/pipermail/chuck-users/attachments/20200702/e0bf2f2d/attachment-0001.html" rel="noreferrer" target="_blank">http://lists.cs.princeton.edu/pipermail/chuck-users/attachments/20200702/e0bf2f2d/attachment-0001.html</a>&gt;<br>
&gt; <br>
&gt; ------------------------------<br>
&gt; <br>
&gt; Message: 3<br>
&gt; Date: Thu, 2 Jul 2020 17:19:25 -0400<br>
&gt; From: mike clemow &lt;<a href="mailto:michaelclemow@gmail.com" target="_blank">michaelclemow@gmail.com</a>&gt;<br>
&gt; To: ChucK Users Mailing List &lt;<a href="mailto:chuck-users@lists.cs.princeton.edu" target="_blank">chuck-users@lists.cs.princeton.edu</a>&gt;<br>
&gt; Subject: Re: [chuck-users] Machine.add() and me.yield()<br>
&gt; Message-ID:<br>
&gt;       &lt;CADddD5mGKqob9oRU=<a href="mailto:kOocgpyrUH3p2QaxnqJivdtHXFn5YJoFg@mail.gmail.com" target="_blank">kOocgpyrUH3p2QaxnqJivdtHXFn5YJoFg@mail.gmail.com</a>&gt;<br>
&gt; Content-Type: text/plain; charset=&quot;utf-8&quot;<br>
&gt; <br>
&gt; Hey Michael! It&#39;s been a minute!<br>
&gt; <br>
&gt; Thanks so much for that suggestion! I took a closer look at this code and<br>
&gt; I&#39;m actually not doing Machine.add(); four times in a row, but rather spork<br>
&gt; ~ thingOne(); four times (although I do Machine.remove() four times to<br>
&gt; remove the shreds by ID).<br>
&gt; <br>
&gt; I still think the thing that I forgot to do is to add me.yield(); in<br>
&gt; between each of these (or at least at the end of the four lines) to keep<br>
&gt; the running audio smooth. I&#39;m going through and trying it out.<br>
&gt; <br>
&gt; Since each of these functions that are running concurrently are loading<br>
&gt; large files into SndBuf instances, I&#39;m hesitant to do the normal Chuckian<br>
&gt; thing and load it all up first and then let it play on demand using, as you<br>
&gt; suggest, a start() function or similar. Also, because I&#39;m triggering these<br>
&gt; &quot;cues&quot; from across a network, I&#39;m trying to trade &quot;immediate and real time&quot;<br>
&gt; for &quot;reliable and low-memory impact.&quot; I&#39;ve definitely built applications<br>
&gt; like that with Chuck that ate all the memory before! There&#39;s no streaming<br>
&gt; from disk implemented under the hood, unless I&#39;m mistaken.<br>
&gt; <br>
&gt; Let me see how this works and I&#39;ll report back!<br>
&gt; <br>
&gt; Mike<br>
&gt; <br>
&gt; <br>
&gt; --<br>
&gt; Michael Clemow<br>
&gt; Artist/Composer/Sound Designer<br>
&gt; <a href="http://michaelclemow.com" rel="noreferrer" target="_blank">http://michaelclemow.com</a><br>
&gt; (he/him)<br>
&gt; <br>
&gt; <br>
&gt; On Thu, Jul 2, 2020 at 5:07 PM Michael Heuer &lt;<a href="mailto:heuermh@gmail.com" target="_blank">heuermh@gmail.com</a>&gt; wrote:<br>
&gt; <br>
&gt;&gt; Hello Mike,<br>
&gt;&gt; <br>
&gt;&gt; Since Machine.add is hitting the file system and parsing and evaluating<br>
&gt;&gt; the ChucK scripts, it might work better to do all of that in one go when<br>
&gt;&gt; not generating sound<br>
&gt;&gt; <br>
&gt;&gt; Machine.add(&quot;thingOne.ck&quot;);<br>
&gt;&gt; Machine.add(&quot;thingTwo.ck&quot;);<br>
&gt;&gt; Machine.add(&quot;thingThree.ck&quot;);<br>
&gt;&gt; Machine.add(&quot;thingFour.ck&quot;);<br>
&gt;&gt; <br>
&gt;&gt; And then later call methods to initialize them serially or in different<br>
&gt;&gt; shreds, something like<br>
&gt;&gt; <br>
&gt;&gt; thingOne.start();<br>
&gt;&gt; thingTwo.start();<br>
&gt;&gt; thingThree.start();<br>
&gt;&gt; thingFour.start();<br>
&gt;&gt; <br>
&gt;&gt; spork ~ thingOne.start();<br>
&gt;&gt; spork ~ thingTwo.start();<br>
&gt;&gt; spork ~ thingThree.start();<br>
&gt;&gt; spork ~ thingFour.start();<br>
&gt;&gt; <br>
&gt;&gt; Hope this helps,<br>
&gt;&gt; <br>
&gt;&gt;   michael<br>
&gt;&gt; <br>
&gt;&gt; <br>
&gt;&gt; Begin forwarded message:<br>
&gt;&gt; <br>
&gt;&gt; *From: *mike clemow &lt;<a href="mailto:michaelclemow@gmail.com" target="_blank">michaelclemow@gmail.com</a>&gt;<br>
&gt;&gt; *Subject: **[chuck-users] Machine.add() and me.yield()*<br>
&gt;&gt; *Date: *July 2, 2020 at 3:43:51 PM CDT<br>
&gt;&gt; *To: *ChucK Users Mailing List &lt;<a href="mailto:chuck-users@lists.cs.princeton.edu" target="_blank">chuck-users@lists.cs.princeton.edu</a>&gt;<br>
&gt;&gt; *Reply-To: *ChucK Users Mailing List &lt;<a href="mailto:chuck-users@lists.cs.princeton.edu" target="_blank">chuck-users@lists.cs.princeton.edu</a>&gt;<br>
&gt;&gt; <br>
&gt;&gt; Greetings Chuckists,<br>
&gt;&gt; <br>
&gt;&gt; Looking for validation on this before I change many, many lines of code:<br>
&gt;&gt; I&#39;m noticing clicks and pops in running audio when I do something like this:<br>
&gt;&gt; <br>
&gt;&gt; Machine.add(&quot;thingOne.ck&quot;);<br>
&gt;&gt; Machine.add(&quot;thingTwo.ck&quot;);<br>
&gt;&gt; Machine.add(&quot;thingThree.ck&quot;);<br>
&gt;&gt; Machine.add(&quot;thingFour.ck&quot;);<br>
&gt;&gt; <br>
&gt;&gt; and also with Machine.remove(idNum); four times in a row.<br>
&gt;&gt; <br>
&gt;&gt; Question:<br>
&gt;&gt; <br>
&gt;&gt; Is this:<br>
&gt;&gt; <br>
&gt;&gt; Machine.add(&quot;thingOne.ck&quot;);<br>
&gt;&gt; Machine.add(&quot;thingTwo.ck&quot;);<br>
&gt;&gt; Machine.add(&quot;thingThree.ck&quot;);<br>
&gt;&gt; Machine.add(&quot;thingFour.ck&quot;);<br>
&gt;&gt; me.yield();<br>
&gt;&gt; <br>
&gt;&gt; significantly different than this:<br>
&gt;&gt; <br>
&gt;&gt; Machine.add(&quot;thingOne.ck&quot;);<br>
&gt;&gt; me.yield();<br>
&gt;&gt; Machine.add(&quot;thingTwo.ck&quot;);<br>
&gt;&gt; me.yield();<br>
&gt;&gt; Machine.add(&quot;thingThree.ck&quot;);<br>
&gt;&gt; me.yield();<br>
&gt;&gt; Machine.add(&quot;thingFour.ck&quot;);<br>
&gt;&gt; me.yield();<br>
&gt;&gt; <br>
&gt;&gt; ???<br>
&gt;&gt; <br>
&gt;&gt; The same for sporking shreds four in a row.<br>
&gt;&gt; <br>
&gt;&gt; Warmly,<br>
&gt;&gt; Mike<br>
&gt;&gt; <br>
&gt;&gt; --<br>
&gt;&gt; Michael Clemow<br>
&gt;&gt; Artist/Composer/Sound Designer<br>
&gt;&gt; <a href="http://michaelclemow.com" rel="noreferrer" target="_blank">http://michaelclemow.com</a><br>
&gt;&gt; (he/him)<br>
&gt;&gt; _______________________________________________<br>
&gt;&gt; chuck-users mailing list<br>
&gt;&gt; <a href="mailto:chuck-users@lists.cs.princeton.edu" target="_blank">chuck-users@lists.cs.princeton.edu</a><br>
&gt;&gt; <a href="https://lists.cs.princeton.edu/mailman/listinfo/chuck-users" rel="noreferrer" target="_blank">https://lists.cs.princeton.edu/mailman/listinfo/chuck-users</a><br>
&gt;&gt; <br>
&gt;&gt; <br>
&gt;&gt; _______________________________________________<br>
&gt;&gt; chuck-users mailing list<br>
&gt;&gt; <a href="mailto:chuck-users@lists.cs.princeton.edu" target="_blank">chuck-users@lists.cs.princeton.edu</a><br>
&gt;&gt; <a href="https://lists.cs.princeton.edu/mailman/listinfo/chuck-users" rel="noreferrer" target="_blank">https://lists.cs.princeton.edu/mailman/listinfo/chuck-users</a><br>
&gt;&gt; <br>
&gt; -------------- next part --------------<br>
&gt; An HTML attachment was scrubbed...<br>
&gt; URL: &lt;<a href="http://lists.cs.princeton.edu/pipermail/chuck-users/attachments/20200702/dbf21af4/attachment.html" rel="noreferrer" target="_blank">http://lists.cs.princeton.edu/pipermail/chuck-users/attachments/20200702/dbf21af4/attachment.html</a>&gt;<br>
&gt; <br>
&gt; ------------------------------<br>
&gt; <br>
&gt; _______________________________________________<br>
&gt; chuck-users mailing list<br>
&gt; <a href="mailto:chuck-users@lists.cs.princeton.edu" target="_blank">chuck-users@lists.cs.princeton.edu</a><br>
&gt; <a href="https://lists.cs.princeton.edu/mailman/listinfo/chuck-users" rel="noreferrer" target="_blank">https://lists.cs.princeton.edu/mailman/listinfo/chuck-users</a><br>
&gt; <br>
&gt; <br>
&gt; End of chuck-users Digest, Vol 179, Issue 1<br>
&gt; *******************************************<br>
<br>
_______________________________________________<br>
chuck-users mailing list<br>
<a href="mailto:chuck-users@lists.cs.princeton.edu" target="_blank">chuck-users@lists.cs.princeton.edu</a><br>
<a href="https://lists.cs.princeton.edu/mailman/listinfo/chuck-users" rel="noreferrer" target="_blank">https://lists.cs.princeton.edu/mailman/listinfo/chuck-users</a><br>
</blockquote></div>