{"id":66,"date":"2005-10-17T08:40:48","date_gmt":"2005-10-17T13:40:48","guid":{"rendered":"http:\/\/blogs.law.harvard.edu\/hoanga\/2005\/10\/17\/squeak-weekly\/"},"modified":"2005-10-17T08:40:48","modified_gmt":"2005-10-17T13:40:48","slug":"squeak-weekly","status":"publish","type":"post","link":"https:\/\/archive.blogs.harvard.edu\/hoanga\/2005\/10\/17\/squeak-weekly\/","title":{"rendered":"Squeak Weekly"},"content":{"rendered":"<p><a name='a569'><\/a><\/p>\n<p>\n <a href=\"http:\/\/minnow.cc.gatech.edu\/squeak\/5740\"><br \/>\n <img decoding=\"async\" src=\"http:\/\/minnow.cc.gatech.edu\/schemes\/squeak\/squeak-orange.gif\"><br \/>\n <\/a><br \/>\n <br \/>\n <a href=\"http:\/\/www.squeak.org\">Squeak<\/a> is a great programming tool that<br \/>\n lots of coders will never get a chance to truly exercise (yet?).  One thing<br \/>\n about getting into any software project is also learning about the community<br \/>\n that keeps it alive.  Usually this means finding websites with information<br \/>\n on it or keeping up with mailing lists.  However, the<br \/>\n <a href=\"http:\/\/lists.squeakfoundation.org\/listinfo\/squeak-dev\">Squeak<br \/>\n Development Mailing List<\/a> gets a truly heavy amount of email per day<br \/>\n (Easily 40+ mails on a not so fast day).  This is very hard to keep up with<br \/>\n but it also shows that the Squeak project overall is very lively.\n <\/p>\n<p>\n Enter <a href=\"http:\/\/minnow.cc.gatech.edu\/squeak\/5740\">Squeak Weekly<\/a> an<br \/>\n effort by one person to try to take the best of what&#8217;s happening in the<br \/>\n Squeak community every week and summarize it.  It also has interviews or<br \/>\n Q&amp;A sessions with many primary Squeak people in the community which is a great<br \/>\n way to understand what is happening within the community.\n <\/p>\n<p>\n This week&#8217;s interview was with Andreas Raab and I found some interesting<br \/>\n stuff out on Tweak:\n <\/p>\n<p>\n <em><br \/>\n Another key idea in Tweak is that of asynchronous event handling. Unfortunately<br \/>\n I can&#8217;t say I invented that (though at the time where I came up with the idea I<br \/>\n wasn&#8217;t aware of anybody else doing it) but it turns out that this is what is<br \/>\n now typically referred to as &#8220;event-loop concurrency&#8221;. The idea here is that<br \/>\n all responses to events are asynchronous messages, e.g., are executed some time<br \/>\n *after* the event has been signaled. The reason this is important is that by<br \/>\n using asynchronous events you do not expose internally inconsistent state to a<br \/>\n listener.<br \/>\n <br \/>\n When you use synchronous events (callbacks) you end up with the<br \/>\n problem that the listener (inadvertently or not) may request temporarily<br \/>\n inconsistent state or otherwise violates the invariants of the computation<br \/>\n (like raising an exception). A good (or rather bad) example is the system<br \/>\n notification mechanism in Squeak &#8211; it allows listeners to interfere *during*<br \/>\n the compilation process with unclear results what might happen if there is any<br \/>\n problem. In Tweak this simply cannot happen<br \/>\n <\/em>\n <\/p>\n<p>\n <a href=\"http:\/\/minnow.cc.gatech.edu\/squeak\/5740\">Take me to Squeak Weekly<\/a>\n <\/p>\n","protected":false},"excerpt":{"rendered":"<p>Squeak is a great programming tool that lots of coders will never get a chance to truly exercise (yet?). One thing about getting into any software project is also learning about the community that keeps it alive. Usually this means finding websites with information on it or keeping up with mailing lists. However, the Squeak [&hellip;]<\/p>\n","protected":false},"author":704,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-66","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/archive.blogs.harvard.edu\/hoanga\/wp-json\/wp\/v2\/posts\/66","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/archive.blogs.harvard.edu\/hoanga\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/archive.blogs.harvard.edu\/hoanga\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/archive.blogs.harvard.edu\/hoanga\/wp-json\/wp\/v2\/users\/704"}],"replies":[{"embeddable":true,"href":"https:\/\/archive.blogs.harvard.edu\/hoanga\/wp-json\/wp\/v2\/comments?post=66"}],"version-history":[{"count":0,"href":"https:\/\/archive.blogs.harvard.edu\/hoanga\/wp-json\/wp\/v2\/posts\/66\/revisions"}],"wp:attachment":[{"href":"https:\/\/archive.blogs.harvard.edu\/hoanga\/wp-json\/wp\/v2\/media?parent=66"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/archive.blogs.harvard.edu\/hoanga\/wp-json\/wp\/v2\/categories?post=66"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/archive.blogs.harvard.edu\/hoanga\/wp-json\/wp\/v2\/tags?post=66"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}