<div dir="ltr">Ben,<div><br></div><div>Thanks for the FPGA idea and links.  I&#39;ve seen Parallax released their microcontroller design to public so their community can make their own microcontroller FPGA&#39;s.  Getting Smalltalk code into silicon would be great for a second version of my robot after the prototype works.  Or it could be a useful step in dealing with computer vision.</div><div><br></div><div>Kirk</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Jul 14, 2015 at 4:42 AM, Ben Coman <span dir="ltr">&lt;<a href="mailto:btc@openinworld.com" target="_blank">btc@openinworld.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Smalltalk FPGA may be of interest...<br>
<br>
<a href="http://www.slideshare.net/esug/luc-fabresse-iwst2014" rel="noreferrer" target="_blank">http://www.slideshare.net/esug/luc-fabresse-iwst2014</a><br>
<br>
<a href="http://esug.org/data/ESUG2014/IWST/Papers/iwst2014_From%20Smalltalk%20to%20Silicon_Towards%20a%20methodology%20to%20turn%20Smalltalk%20code%20into%20FPGA.pdf" rel="noreferrer" target="_blank">http://esug.org/data/ESUG2014/IWST/Papers/iwst2014_From%20Smalltalk%20to%20Silicon_Towards%20a%20methodology%20to%20turn%20Smalltalk%20code%20into%20FPGA.pdf</a><br>
<br>
cheers -ben<br>
<div class="HOEnZb"><div class="h5"><br>
On Tue, Jul 14, 2015 at 11:55 AM, Kirk Fraser &lt;<a href="mailto:overcomer.man@gmail.com">overcomer.man@gmail.com</a>&gt; wrote:<br>
&gt; Hi Casey,<br>
&gt;<br>
&gt; Thanks for the suggestion.  I will have multiple connected controller boards<br>
&gt; and with your suggestion maybe I&#39;ll try a Pi for each limb and each webcam<br>
&gt; or maybe your ARM9 suggestion.<br>
&gt;<br>
&gt; To prove it&#39;s good as a human in performance I want it to do minor<br>
&gt; acrobatics like cartwheels and balancing tricks, maybe a Chuck Norris kick<br>
&gt; or jumping over a fence with one hand on a post.  Or like those free-running<br>
&gt; videos. Stuff I could not do myself. But it all waits on money.  Maybe I&#39;ll<br>
&gt; make better progress next year when social security kicks in.<br>
&gt;<br>
&gt; As far as human performance goals, one professor wrote it takes 200 cycles<br>
&gt; per second to hop on one leg.  Somewhere I read human touch can sense 1 in<br>
&gt; 32,000 of an inch.  I don&#39;t have the other figures yet.  I may not be able<br>
&gt; to drive an arm as fast as a human boxer - 200 mph but as long as it&#39;s fast<br>
&gt; enough to drive a vehicle on a slow road (not I5) that might be enough until<br>
&gt; faster computers are here.<br>
&gt;<br>
&gt; The vision system seems like a major speed bottle neck.  Maybe a mini-cloud<br>
&gt; can take one 64th of the image for each processor analyze it, then assemble<br>
&gt; larger object detection in time for the next frame.  The DARPA Atlas robot<br>
&gt; used 4 cores for each camera I think.  But a mini-cloud set off nearby to<br>
&gt; process vision and return either the objects with measurements or<br>
&gt; instructions would be a lot of work.   The more I write, the more I see why<br>
&gt; the head of DARPA&#39;s robots said they cost 1-2 million as you have to hire a<br>
&gt; team of programmers or make a really intricate learning program.<br>
&gt;<br>
&gt; Kirk<br>
&gt;<br>
&gt;<br>
&gt; On Mon, Jul 13, 2015 at 5:58 PM, Casey Ransberger &lt;<a href="mailto:casey.obrien.r@gmail.com">casey.obrien.r@gmail.com</a>&gt;<br>
&gt; wrote:<br>
&gt;&gt;<br>
&gt;&gt; Hey Kirk,<br>
&gt;&gt;<br>
&gt;&gt; I like Ralph&#39;s suggestion of doing the time/timing specific stuff on a<br>
&gt;&gt; dedicated microcontroller.<br>
&gt;&gt;<br>
&gt;&gt; I&#39;d recommend going one better: use more than one microcontroller. Robots<br>
&gt;&gt; need to do a lot in parallel; if the robot has to stop driving in order to<br>
&gt;&gt; think, that&#39;s a problem (although the converse would be decidedly human!)<br>
&gt;&gt; Anyway, it sounds like real-time is not negotiable in your view, so green<br>
&gt;&gt; threads won&#39;t cut it either.<br>
&gt;&gt;<br>
&gt;&gt; Mine has... six controllers in total. That&#39;s not counting the ARM9 which<br>
&gt;&gt; is more like a full computer (e.g., Linux.)<br>
&gt;&gt;<br>
&gt;&gt; I think six anyway. Could be more hiding in there. Two drive sensors,<br>
&gt;&gt; three drive motors, one is wired up close to the ARM board to coordinate the<br>
&gt;&gt; other controllers on behalf of what the Linux system wants them doing.<br>
&gt;&gt;<br>
&gt;&gt; I&#39;m curious, have you figured out what the average, best, and worst case<br>
&gt;&gt; latencies are on human reflexes? In my view, matching or beating that<br>
&gt;&gt; benchmark is where the money probably is.<br>
&gt;&gt;<br>
&gt;&gt; --C<br>
&gt;&gt;<br>
&gt;&gt; On Jul 6, 2015, at 12:39 PM, Kirk Fraser &lt;<a href="mailto:overcomer.man@gmail.com">overcomer.man@gmail.com</a>&gt; wrote:<br>
&gt;&gt;<br>
&gt;&gt; Ralph Johnson,<br>
&gt;&gt;<br>
&gt;&gt; That&#39;s an excellent suggestion and an excellent story, thank you very<br>
&gt;&gt; much!  Letting the human interface in Smalltalk program the robot controller<br>
&gt;&gt; instead of being the robot controller sounds good.<br>
&gt;&gt;<br>
&gt;&gt; My robot uses a network of Parallax microcontroller chips to drive<br>
&gt;&gt; hydraulic valves, which can be programmed via USB for simple tasks like<br>
&gt;&gt; moving one joint from point A to B but since each controller has 8 cores<br>
&gt;&gt; more complex tasks like grasping or walking can be done on the MCU&#39;s or on a<br>
&gt;&gt; small Raspberry Pi or other hardware in a non-GC or controllable GC<br>
&gt;&gt; language.<br>
&gt;&gt;<br>
&gt;&gt; A harder part to wrap my head around is handling the webcam vision system<br>
&gt;&gt; and artificial intelligence while remaining time sensitive enough to do time<br>
&gt;&gt; critical tasks like cartwheels and other acrobatic choreography.<br>
&gt;&gt;<br>
&gt;&gt; I know in effect my human mind shuts down most of its intellectual<br>
&gt;&gt; pursuits when engaged in heavy physical activity - maybe the robot must do<br>
&gt;&gt; the same - think more creatively when idling and pay closer attention while<br>
&gt;&gt; working. That takes care of the Ai timing.<br>
&gt;&gt;<br>
&gt;&gt; The heavy load of vision processing appears to need a mini-cloud of cores<br>
&gt;&gt; to reduce time to identify and measure objects from contours and other<br>
&gt;&gt; information.  To guarantee performance they would also need to run a non-GC<br>
&gt;&gt; language that could be programmed from Squeak interactively as new objects<br>
&gt;&gt; are being learned.  I haven&#39;t worked with a laser range finder but I suspect<br>
&gt;&gt; they use it to narrow the focus onto moving objects to process video in more<br>
&gt;&gt; detail in those areas.<br>
&gt;&gt;<br>
&gt;&gt; The current buzzword &quot;co-robots&quot; meaning robots that work beside or<br>
&gt;&gt; cooperatively with people working in symbiotic relationships with human<br>
&gt;&gt; partners suggests everyone will need a robot friend, which will require an<br>
&gt;&gt; artificial intelligence capable of intelligent thought.  As most Americans<br>
&gt;&gt; are Christian it would make sense for a human compatible AI to be based on<br>
&gt;&gt; the Bible.  That is what I would love to work on.  But that level of thought<br>
&gt;&gt; needs a creative CG environment like Squeak at present.<br>
&gt;&gt;<br>
&gt;&gt; I&#39;ve been thinking that using a Smalltalk GUI to issue command rules to<br>
&gt;&gt; set an agenda for automatic text analysis and editing might be fun, letting<br>
&gt;&gt; the computer do the editing instead of me.  That way it could update the AI<br>
&gt;&gt; knowledge like when a preferred synonym is discovered, without taking human<br>
&gt;&gt; time to do much of it beyond the setup.<br>
&gt;&gt;<br>
&gt;&gt; Your wikipedia entry shows a webpage and blog that apparently are dead<br>
&gt;&gt; links.  Would you be interested in being a team member on my SBIR/STTR grant<br>
&gt;&gt; application(s) for AI and Robots responding to:<br>
&gt;&gt; <a href="http://www.nsf.gov/publications/pub_summ.jsp?ods_key=nsf15505" rel="noreferrer" target="_blank">http://www.nsf.gov/publications/pub_summ.jsp?ods_key=nsf15505</a>  I&#39;ve<br>
&gt;&gt; enlisted help in writing the application from Oregon&#39;s Small Business<br>
&gt;&gt; Development Center and will meet with an SBIR road trip in August I&#39;m told.<br>
&gt;&gt; (I was also told I need a Ph.D. on my team since I don&#39;t have one.)<br>
&gt;&gt;<br>
&gt;&gt; Kirk Fraser<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; On Mon, Jul 6, 2015 at 4:19 AM, Ralph Johnson &lt;<a href="mailto:johnson@cs.uiuc.edu">johnson@cs.uiuc.edu</a>&gt; wrote:<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; Here is another possibility.<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; Take a look at Symbolic Sound, a company that makes a system called Kyma.<br>
&gt;&gt;&gt; <a href="http://kyma.symbolicsound.com/" rel="noreferrer" target="_blank">http://kyma.symbolicsound.com/</a><br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; This company has been around for over twenty years.   Its product has<br>
&gt;&gt;&gt; always been the fastest music synthesis system in the world that gives you<br>
&gt;&gt;&gt; total control over your sound.  And by &quot;total&quot;, I mean it gives you the<br>
&gt;&gt;&gt; ability to mathematically specify each sound wave.   If you want, which is<br>
&gt;&gt;&gt; actually too much detail for most people.   And it is all written in<br>
&gt;&gt;&gt; Smalltalk.  Not Squeak, of course, since Squeak wasn&#39;t around then.   But it<br>
&gt;&gt;&gt; could have been done in Squeak.   And perhaps they ported it to Squeak.   I<br>
&gt;&gt;&gt; haven&#39;t talked to them for a long time so I don&#39;t know what they did, but<br>
&gt;&gt;&gt; from the screen shots I think it is still a very old version of VisualWorks.<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; Anyway, how do they make it so fast?  How can they make something that<br>
&gt;&gt;&gt; can be used for hours without any GC pauses?<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; The trick is that the sound is produced on an attached DSP.   The GUI is<br>
&gt;&gt;&gt; in Smalltalk on a PC, and it generates code for the DSP.   It is non-trivial<br>
&gt;&gt;&gt; making the compiler so fast that when you press &quot;play&quot;, it can immediately<br>
&gt;&gt;&gt; start up the DSP and start producing sound.  It does this (rather, it did<br>
&gt;&gt;&gt; this, since they might have changed the way it works) by just producing<br>
&gt;&gt;&gt; enough code to run the DSP for a few seconds and then starting the DSP while<br>
&gt;&gt;&gt; it generates the rest of the code.   Kyma literally is writing the program<br>
&gt;&gt;&gt; into DSP memory at the same time as the DSP is running the program,<br>
&gt;&gt;&gt; producing sound.<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; Anyway, maybe that is the right approach to programming robots.   You<br>
&gt;&gt;&gt; don&#39;t even need to use two computers.   Imagine you had two computers, one<br>
&gt;&gt;&gt; running Squeak and the other a simple, real-time machine designed for<br>
&gt;&gt;&gt; controlling robots, but not very sophisticated.  Squeak programs the simple<br>
&gt;&gt;&gt; computer, and can change its program dynamically.  The simple computer has<br>
&gt;&gt;&gt; no gc.   Since Squeak is a VM on a computer, the real-time computer can be a<br>
&gt;&gt;&gt; VM, too.  So, you could be running them both on your PC, or you could run<br>
&gt;&gt;&gt; them on two separate computers for better performance.<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; I would be happy to talk more about this.  But I&#39;d like to talk about the<br>
&gt;&gt;&gt; beginning of Kyma.   The owners of Symbolic Sound are Carla Scaletti and<br>
&gt;&gt;&gt; Kurt Hebel.   Carla has a PhD in music, and Kurt in Electrical Engineering.<br>
&gt;&gt;&gt; I met Carla after she had her PhD.  She wanted to get a MS in computer<br>
&gt;&gt;&gt; science so she could prove her computer music expertise, and she ended up<br>
&gt;&gt;&gt; getting it with me.   She took my course on OOP&amp;D that used Smalltalk.  For<br>
&gt;&gt;&gt; her class project (back in 1987, I think) she wrote a Smalltalk program that<br>
&gt;&gt;&gt; ran on the Mac and that produced about ten seconds of sound, but it took<br>
&gt;&gt;&gt; several minutes to do it.   Hardly real time.   However, she was used to<br>
&gt;&gt;&gt; using a supercomputer (a Cray?) to generate sounds that still weren&#39;t real<br>
&gt;&gt;&gt; time, so she was very pleased that she could do it on the Mac at all, and<br>
&gt;&gt;&gt; though Smalltalk was slower than Fortran, in her opinion the ease of use was<br>
&gt;&gt;&gt; so great that she didn&#39;t mind the speed difference.   As she put it, the<br>
&gt;&gt;&gt; speed difference between a Mac and a Cray was bigger than between Smalltalk<br>
&gt;&gt;&gt; and Fortran.  She ended up turning this into the first version of Kyma and<br>
&gt;&gt;&gt; that became the subject of her MS thesis.   I can remember when she showed<br>
&gt;&gt;&gt; it in class.  She was the only woman in the class, and the other students<br>
&gt;&gt;&gt; knew she was a musician, i.e. not *really* a programmer.  She was quiet<br>
&gt;&gt;&gt; during class, so they had not had a chance to have their prejudices<br>
&gt;&gt;&gt; remedied.  Her demo at the end of the semester blew them away.<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; Kurt had built a DSP that their lab used.   (The lab was part of the<br>
&gt;&gt;&gt; Plato project, I believe, one of the huge number of creative results of this<br>
&gt;&gt;&gt; very significant project at Illinois.)   It was called the Capybara.  This<br>
&gt;&gt;&gt; was before the time when you could just buy a good DSP on a chip, but that<br>
&gt;&gt;&gt; time came very soon and then they used the commercial chips.  For her MS,<br>
&gt;&gt;&gt; she converted her system to use the Capybara, and this was when she figured<br>
&gt;&gt;&gt; out how to make it start making music within a fraction of a second of<br>
&gt;&gt;&gt; pressing the &quot;play&quot; button.  Kurt also used Smalltalk with the Capybara.<br>
&gt;&gt;&gt; His PhD was about automatically designing digital filters, and his software<br>
&gt;&gt;&gt; also generated code for the Capybara, though it was actually quite different<br>
&gt;&gt;&gt; from Kyma.<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; The two of them worked on several different projects over the next few<br>
&gt;&gt;&gt; years, but kept improving Kyma.   Along the way Kurt started building boards<br>
&gt;&gt;&gt; that had several commercial DSPs on them.  Eventually they decided to go<br>
&gt;&gt;&gt; commercial and started Symbolic Sound.<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; -Ralph Johnson<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; On Sun, Jul 5, 2015 at 9:05 PM, Kirk Fraser &lt;<a href="mailto:overcomer.man@gmail.com">overcomer.man@gmail.com</a>&gt;<br>
&gt;&gt;&gt; wrote:<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; &gt;&gt; Tim says a multi-core VM is coming for the new Pi.<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; &gt; Are you *sure* that&#39;s what Tim said?<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; Of course my over hopeful misinterpretation is possible.<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; &quot;Squeak runs quite well on a Pi, especially a pi2 - and we&#39;re working on<br>
&gt;&gt;&gt;&gt; the Cog dynamic translation VM right now, which should with luck triple<br>
&gt;&gt;&gt;&gt; typical performance.&quot;  - timrowledge » Thu Feb 19, 2015<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; <a href="https://www.raspberrypi.org/forums/viewtopic.php?f=63&amp;t=100804&amp;p=698818&amp;hilit=Squeak#p698818" rel="noreferrer" target="_blank">https://www.raspberrypi.org/forums/viewtopic.php?f=63&amp;t=100804&amp;p=698818&amp;hilit=Squeak#p698818</a><br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; &gt; The trick to getting rid of long delays is more a function of<br>
&gt;&gt;&gt;&gt; &gt; preallocating everything you can than getting rid of GC&#39;s (I&#39;ve done some<br>
&gt;&gt;&gt;&gt; &gt; highly interactive stuff in GC environments and preventing GC&#39;s is<br>
&gt;&gt;&gt;&gt; &gt; impractical except over short periods of time, minimizing their frequency<br>
&gt;&gt;&gt;&gt; &gt; and duration is very doable)  One of the things I think I<br>
&gt;&gt;&gt;&gt; recently saw that should help you in this regard is FFI memory pinning<br>
&gt;&gt;&gt;&gt; if you&#39;re calling out to external code.<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; Thanks.  Maybe when I find, make, or build a better place to work, I&#39;ll<br>
&gt;&gt;&gt;&gt; be able to tackle some of that.  I wouldn&#39;t be surprised if a VM is as easy<br>
&gt;&gt;&gt;&gt; as a compiler once one actually starts working on it.<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; On Sun, Jul 5, 2015 at 6:31 PM, Phil (list) &lt;<a href="mailto:pbpublist@gmail.com">pbpublist@gmail.com</a>&gt; wrote:<br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; On Sun, 2015-07-05 at 17:12 -0700, Kirk Fraser wrote:<br>
&gt;&gt;&gt;&gt;&gt; &gt; I used Cuis at first to display hand written G-Codes in graphic form<br>
&gt;&gt;&gt;&gt;&gt; &gt; for a printed circuit board.  I kept up with Cuis through a few<br>
&gt;&gt;&gt;&gt;&gt; &gt; versions and found a couple of bugs for Juan.  Eventually Casey<br>
&gt;&gt;&gt;&gt;&gt; &gt; advised going to Squeak so I did. Perhaps my requests were getting<br>
&gt;&gt;&gt;&gt;&gt; &gt; annoying.<br>
&gt;&gt;&gt;&gt;&gt; &gt;<br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; Perhaps you misinterpreted what Casey said?  Definitely have all<br>
&gt;&gt;&gt;&gt;&gt; options<br>
&gt;&gt;&gt;&gt;&gt; (Squeak, Pharo, Cuis etc.) as part of your toolkit.  Squeak in<br>
&gt;&gt;&gt;&gt;&gt; particular has a very active mailing lists and you&#39;ll find a lot of<br>
&gt;&gt;&gt;&gt;&gt; existing code to play with.  I personally do most of my development in<br>
&gt;&gt;&gt;&gt;&gt; Cuis, some in Pharo (for things like Seaside that don&#39;t yet exist in<br>
&gt;&gt;&gt;&gt;&gt; Cuis), and a bit still in Squeak.  They all have their place depending<br>
&gt;&gt;&gt;&gt;&gt; on your needs.  Given your emphasis on performance, I would think that<br>
&gt;&gt;&gt;&gt;&gt; Cuis is going to be the place where you can maximize it. (all the above<br>
&gt;&gt;&gt;&gt;&gt; Smalltalk variants use essentially the same core VM, it&#39;s the plugins<br>
&gt;&gt;&gt;&gt;&gt; and images that really differ)<br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; &gt; I&#39;m mostly interested in using a multi-core Squeak with GC control<br>
&gt;&gt;&gt;&gt;&gt; &gt; for<br>
&gt;&gt;&gt;&gt;&gt; &gt; my robot.  Tim says a multi-core VM is coming for the new Pi.  He<br>
&gt;&gt;&gt;&gt;&gt; &gt; hasn&#39;t answered on GC control.  With muliti-core a user need not see<br>
&gt;&gt;&gt;&gt;&gt; &gt; GC control but the system should provide 100% GC free service even if<br>
&gt;&gt;&gt;&gt;&gt; &gt; behind the scenes it momentarily toggles one GC off and lets the<br>
&gt;&gt;&gt;&gt;&gt; &gt; other<br>
&gt;&gt;&gt;&gt;&gt; &gt; complete.<br>
&gt;&gt;&gt;&gt;&gt; &gt;<br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; Are you *sure* that&#39;s what Tim said?  I see a thread where he&#39;s talking<br>
&gt;&gt;&gt;&gt;&gt; about *build* performance (i.e. compiling the C code for the VM) on a<br>
&gt;&gt;&gt;&gt;&gt; quad-core with the caveat &#39;even if Squeak can&#39;t directly take<br>
&gt;&gt;&gt;&gt;&gt; advantage&#39; (i.e. no multi-core VM)<br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; &gt;<br>
&gt;&gt;&gt;&gt;&gt; &gt; With real time driving, which I hope my robot will do some day,<br>
&gt;&gt;&gt;&gt;&gt; &gt; getting rid of all 100ms delays is vital.<br>
&gt;&gt;&gt;&gt;&gt; &gt;<br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; The trick to getting rid of long delays is more a function of<br>
&gt;&gt;&gt;&gt;&gt; preallocating everything you can than getting rid of GC&#39;s (I&#39;ve done<br>
&gt;&gt;&gt;&gt;&gt; some highly interactive stuff in GC environments and preventing GC&#39;s is<br>
&gt;&gt;&gt;&gt;&gt; impractical except over short periods of time, minimizing their<br>
&gt;&gt;&gt;&gt;&gt; frequency and duration is very doable)  One of the things I think I<br>
&gt;&gt;&gt;&gt;&gt; recently saw that should help you in this regard is FFI memory pinning<br>
&gt;&gt;&gt;&gt;&gt; if you&#39;re calling out to external code.<br>
&gt;&gt;&gt;&gt;&gt;<br>
</div></div><div class="HOEnZb"><div class="h5">_______________________________________________<br>
Beginners mailing list<br>
<a href="mailto:Beginners@lists.squeakfoundation.org">Beginners@lists.squeakfoundation.org</a><br>
<a href="http://lists.squeakfoundation.org/mailman/listinfo/beginners" rel="noreferrer" target="_blank">http://lists.squeakfoundation.org/mailman/listinfo/beginners</a><br>
</div></div></blockquote></div><br></div>