<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-20069114</id><updated>2011-11-08T18:29:56.013+01:00</updated><title type='text'>p-cos blog</title><subtitle type='html'>Pascal Costanza's Highly Opinionated Blog.&lt;br&gt;
(The views expressed in this blog are my own, and not those of my employer.)</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://p-cos.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20069114/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://p-cos.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Pascal Costanza</name><uri>http://www.blogger.com/profile/04512975624438301971</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://bp1.blogger.com/_DIhRAGqWubM/SBVnDJc6vsI/AAAAAAAAAAM/oWU7nSP-yzU/S220/me.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>68</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-20069114.post-3099708942852273915</id><published>2011-11-08T18:29:00.002+01:00</published><updated>2011-11-08T18:29:56.028+01:00</updated><title type='text'>Bertrand Meyer about John McCarthy...</title><content type='html'>Nice essay about &lt;a href=http://bertrandmeyer.com/2011/11/07/john-mccarthy/&gt;John McCarthy&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20069114-3099708942852273915?l=p-cos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://p-cos.blogspot.com/feeds/3099708942852273915/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20069114&amp;postID=3099708942852273915' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20069114/posts/default/3099708942852273915'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20069114/posts/default/3099708942852273915'/><link rel='alternate' type='text/html' href='http://p-cos.blogspot.com/2011/11/bertrand-meyer-about-john-mccarthy.html' title='Bertrand Meyer about John McCarthy...'/><author><name>Pascal Costanza</name><uri>http://www.blogger.com/profile/04512975624438301971</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://bp1.blogger.com/_DIhRAGqWubM/SBVnDJc6vsI/AAAAAAAAAAM/oWU7nSP-yzU/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20069114.post-1478849512839120587</id><published>2011-10-01T17:38:00.003+02:00</published><updated>2011-10-01T17:40:04.886+02:00</updated><title type='text'>Beware the Purists...</title><content type='html'>See &lt;a href="http://joshuablankenship.com/blog/2011/09/24/beware-the-purists/"&gt;Beware the Purists, Lest They Kill Your Innovation&lt;/a&gt;. Much of what is stated there also strongly applies to programming and programming languages...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20069114-1478849512839120587?l=p-cos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://p-cos.blogspot.com/feeds/1478849512839120587/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20069114&amp;postID=1478849512839120587' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20069114/posts/default/1478849512839120587'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20069114/posts/default/1478849512839120587'/><link rel='alternate' type='text/html' href='http://p-cos.blogspot.com/2011/10/beware-purists.html' title='Beware the Purists...'/><author><name>Pascal Costanza</name><uri>http://www.blogger.com/profile/04512975624438301971</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://bp1.blogger.com/_DIhRAGqWubM/SBVnDJc6vsI/AAAAAAAAAAM/oWU7nSP-yzU/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20069114.post-5008300265551600355</id><published>2011-08-30T22:58:00.001+02:00</published><updated>2011-08-30T22:59:45.048+02:00</updated><title type='text'>The Perils of Partially Powered Languages</title><content type='html'>Here is a worthwhile read: &lt;a href="http://www.yesodweb.com/blog/2011/08/perils-partially-powered-languages"&gt;The Perils of Partially Powered Languages&lt;/a&gt;. It's from a Haskell perspective, but should apply to other non-underpowered languages as well. ;)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20069114-5008300265551600355?l=p-cos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://p-cos.blogspot.com/feeds/5008300265551600355/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20069114&amp;postID=5008300265551600355' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20069114/posts/default/5008300265551600355'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20069114/posts/default/5008300265551600355'/><link rel='alternate' type='text/html' href='http://p-cos.blogspot.com/2011/08/perils-of-partially-powered-languages.html' title='The Perils of Partially Powered Languages'/><author><name>Pascal Costanza</name><uri>http://www.blogger.com/profile/04512975624438301971</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://bp1.blogger.com/_DIhRAGqWubM/SBVnDJc6vsI/AAAAAAAAAAM/oWU7nSP-yzU/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20069114.post-5592829705189372799</id><published>2011-08-12T17:53:00.002+02:00</published><updated>2011-08-12T17:56:25.958+02:00</updated><title type='text'>Complexity metrics other than code size don't mean that much...</title><content type='html'>See &lt;a href=http://www.neverworkintheory.org/?p=58&gt;here&lt;/a&gt;. To cite:&lt;br /&gt;&lt;br /&gt;"El Emam and his colleagues repeated some of those experiments using bivariate analysis so that they could allocate a share of the blame to code size (measured by number of lines) and the metric in question. It turned out that code size accounted for all of the significant variation: in other words, the object-oriented metrics they looked at didn’t have any actual predictive power once they normalized for the number of lines of code. Herraiz and Hassan’s chapter in Making Software, which reports on an even larger study using open source software, reached the same conclusion:&lt;br /&gt;&lt;br /&gt;'…for non-header files written in C language, all the complexity metrics are highly correlated with lines of code, and therefore the more complex metrics provide no further information that could not be measured simply with lines of code… In our opinion, there is a clear lesson from this study: syntactic complexity metrics cannot capture the whole picture of software complexity. Complexity metrics that are exclusively based on the structure of the program or the properties of the text…do not provide information on the amount of effort that is needed to comprehend a piece of code—or, at least, no more information than lines of code do.'"&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20069114-5592829705189372799?l=p-cos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://p-cos.blogspot.com/feeds/5592829705189372799/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20069114&amp;postID=5592829705189372799' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20069114/posts/default/5592829705189372799'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20069114/posts/default/5592829705189372799'/><link rel='alternate' type='text/html' href='http://p-cos.blogspot.com/2011/08/complexity-metrics-other-than-code-size.html' title='Complexity metrics other than code size don&apos;t mean that much...'/><author><name>Pascal Costanza</name><uri>http://www.blogger.com/profile/04512975624438301971</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://bp1.blogger.com/_DIhRAGqWubM/SBVnDJc6vsI/AAAAAAAAAAM/oWU7nSP-yzU/S220/me.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20069114.post-1706638225387832754</id><published>2011-02-01T10:24:00.003+01:00</published><updated>2011-02-01T12:06:16.249+01:00</updated><title type='text'>Special variables in Java</title><content type='html'>Wow. This is how complicated it gets to have he functionality of special variables in a language that really doesn't want them (and it's brought to you by Google): &lt;a href="http://code.google.com/p/google-guice/"&gt;Google Guice&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20069114-1706638225387832754?l=p-cos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://p-cos.blogspot.com/feeds/1706638225387832754/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20069114&amp;postID=1706638225387832754' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20069114/posts/default/1706638225387832754'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20069114/posts/default/1706638225387832754'/><link rel='alternate' type='text/html' href='http://p-cos.blogspot.com/2011/02/wow.html' title='Special variables in Java'/><author><name>Pascal Costanza</name><uri>http://www.blogger.com/profile/04512975624438301971</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://bp1.blogger.com/_DIhRAGqWubM/SBVnDJc6vsI/AAAAAAAAAAM/oWU7nSP-yzU/S220/me.jpg'/></author><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20069114.post-2378031292636569245</id><published>2010-12-30T20:20:00.002+01:00</published><updated>2010-12-30T20:59:51.860+01:00</updated><title type='text'>A non-hierarchical approach to object-oriented programming</title><content type='html'>The &lt;a href="http://www.mcjones.org/dustydecks/archives/2010/12/30/279/"&gt;Lisp historical archive web site just got reorganized&lt;/a&gt;. I have made a quick check of the contents, and found out that Howard I. Cannon's original technical report about &lt;a href="http://www.softwarepreservation.org/projects/LISP/MIT/nnnfla1-20040122.pdf"&gt;Flavors - A non-hierarchical approach to object-oriented programming&lt;/a&gt; was finally made available as part of that archive. The report was originally written in 1979, was circulated around Lispers, but was never ever published as an actual technical report, although it is cited as such in several later papers by other authors. It describes the original object-oriented extension to the MIT Lisp Machine, heavily influenced by Smalltalk, but with multiple inheritance and method combinations added (but no multiple dispatch yet, which got only introduced in &lt;a href="http://www2.parc.com/istl/members/stefik/loops.html"&gt;CommonLoops&lt;/a&gt;, a direct predecessor of &lt;a href="http://dreamsongs.com/CLOS.html"&gt;CLOS&lt;/a&gt;). Although unpublished and clearly in an unfinished state, this report itself influenced a lot of other subsequent experiments with object-oriented extensions to Lisp dialects. Among other things, it already mentions the idea of exploring "meta-protocols" for making parts of the implementation of the object-oriented extension itself customizable, which was later investigated in much more detail as part of the work on the &lt;a href="http://www.lisp.org/mop"&gt;CLOS MOP&lt;/a&gt; (see also &lt;a href="http://books.google.be/books?id=3X5Gnudn3k0C&amp;amp;lpg=PP1&amp;amp;ots=ZqatlHu75S&amp;amp;dq=the%20art%20of%20the%20metaobject%20protocol&amp;amp;hl=en&amp;amp;pg=PP1#v=onepage&amp;amp;q&amp;amp;f=false"&gt;The Art of the Metaobject Protocol&lt;/a&gt;). And, of course, method combinations were already a very early predecessor of aspect-oriented programming.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;It's good that this very important historical document is finally available!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20069114-2378031292636569245?l=p-cos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://p-cos.blogspot.com/feeds/2378031292636569245/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20069114&amp;postID=2378031292636569245' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20069114/posts/default/2378031292636569245'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20069114/posts/default/2378031292636569245'/><link rel='alternate' type='text/html' href='http://p-cos.blogspot.com/2010/12/non-hierarchical-approach-to-object.html' title='A non-hierarchical approach to object-oriented programming'/><author><name>Pascal Costanza</name><uri>http://www.blogger.com/profile/04512975624438301971</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://bp1.blogger.com/_DIhRAGqWubM/SBVnDJc6vsI/AAAAAAAAAAM/oWU7nSP-yzU/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20069114.post-3901371840316284947</id><published>2010-11-08T12:44:00.004+01:00</published><updated>2010-11-08T12:45:23.035+01:00</updated><title type='text'>Now is the time...</title><content type='html'>Now is the time to switch programming languages: &lt;a href="http://blog.herlein.com/2010/11/oracle-is-the-borg-enterprise-software-development-will-be-assimilated/"&gt;Oracle is the borg&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20069114-3901371840316284947?l=p-cos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://p-cos.blogspot.com/feeds/3901371840316284947/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20069114&amp;postID=3901371840316284947' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20069114/posts/default/3901371840316284947'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20069114/posts/default/3901371840316284947'/><link rel='alternate' type='text/html' href='http://p-cos.blogspot.com/2010/11/now-is-time.html' title='Now is the time...'/><author><name>Pascal Costanza</name><uri>http://www.blogger.com/profile/04512975624438301971</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://bp1.blogger.com/_DIhRAGqWubM/SBVnDJc6vsI/AAAAAAAAAAM/oWU7nSP-yzU/S220/me.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20069114.post-3705232172713072066</id><published>2010-06-14T14:37:00.002+02:00</published><updated>2010-06-14T14:51:40.954+02:00</updated><title type='text'>AOSD'11 conference</title><content type='html'>Another interesting conference is coming up: The &lt;a href="http://www.aosd.net/2011/"&gt;International Conference on Aspect-Oriented Software Development&lt;/a&gt; will be held in Porto de Galinhas, Brazil in March 2011. The conference chair is Shigeru Chiba, who is a long-term contributor to reflection and metaprogramming techniques himself, and who has assembled a diverse &lt;a href="http://www.aosd.net/2011/organization.html"&gt;program committee&lt;/a&gt; covering not only core aspect technologies (like AspectJ-influenced approaches), but also explicitly Feature-oriented Programming, Context-oriented Programming, and also metaprogramming and reflection (which have been somewhat neglected in the aspect community for a long time, although they are clearly very relevant), among others. Dynamic languages are also mentioned in the &lt;a href="http://www.aosd.net/2011/call_research.html"&gt;call for research papers&lt;/a&gt;, so good papers based on languages like Lisp, Scheme, Smalltalk, and so on, are definitely welcome.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Another interesting element of this conference that I haven't seen before is that there will be two opportunities to submit papers: The first deadline is July 1, 2010, and the second deadline is October 1, 2010. The idea is that papers that fail to get accepted in the first round can be improved by their authors for a second round of reviews. It will be interesting to see if this works out.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20069114-3705232172713072066?l=p-cos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://p-cos.blogspot.com/feeds/3705232172713072066/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20069114&amp;postID=3705232172713072066' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20069114/posts/default/3705232172713072066'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20069114/posts/default/3705232172713072066'/><link rel='alternate' type='text/html' href='http://p-cos.blogspot.com/2010/06/aosd11-conference.html' title='AOSD&apos;11 conference'/><author><name>Pascal Costanza</name><uri>http://www.blogger.com/profile/04512975624438301971</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://bp1.blogger.com/_DIhRAGqWubM/SBVnDJc6vsI/AAAAAAAAAAM/oWU7nSP-yzU/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20069114.post-6173392336727398101</id><published>2010-06-07T17:15:00.002+02:00</published><updated>2010-06-07T17:22:22.609+02:00</updated><title type='text'>International Lisp Conference '10</title><content type='html'>The &lt;a href="http://www.international-lisp-conference.org/2010/"&gt;International Lisp Conference&lt;/a&gt; (ILC'10) is being held again, sooner than expected: It will be held in October 2010 in Reno, Nevada. This year, the conference will be co-located with &lt;a href="http://splashcon.org/"&gt;OOPSLA/SPLASH&lt;/a&gt;, which also hosts the &lt;a href="http://www.dynamic-languages-symposium.org/dls-10/"&gt;Dynamic Language Symposium&lt;/a&gt;. So this event is bound to be a very interesting combination. Paper submission for ILC'10 is open, submission deadline is August 1, so there is enough time to submit something. See the &lt;a href="http://www.international-lisp-conference.org/2010/call-for-papers.txt"&gt;call for papers&lt;/a&gt; for more information.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20069114-6173392336727398101?l=p-cos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://p-cos.blogspot.com/feeds/6173392336727398101/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20069114&amp;postID=6173392336727398101' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20069114/posts/default/6173392336727398101'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20069114/posts/default/6173392336727398101'/><link rel='alternate' type='text/html' href='http://p-cos.blogspot.com/2010/06/international-lisp-conference-10.html' title='International Lisp Conference &apos;10'/><author><name>Pascal Costanza</name><uri>http://www.blogger.com/profile/04512975624438301971</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://bp1.blogger.com/_DIhRAGqWubM/SBVnDJc6vsI/AAAAAAAAAAM/oWU7nSP-yzU/S220/me.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20069114.post-415120359677445849</id><published>2010-04-25T15:04:00.003+02:00</published><updated>2010-04-25T15:11:55.814+02:00</updated><title type='text'>Lisp Machine demonstration...</title><content type='html'>I only now realized that besides the interesting talks and presentations to be given at this year's European Lisp Symposium, there will also be a demonstration of a &lt;a href="http://en.wikipedia.org/wiki/TI_Explorer"&gt;TI Explorer Lisp Machine&lt;/a&gt;. That's pretty cool - I have never seen a Lisp Machine in action, but always wanted to see one, so this will be my first time. Looking forward to that. :)&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Ah, yes, here is the link again: &lt;a href="http://www.european-lisp-symposium.org/"&gt;European Lisp Symposium, Lisbon, Portugal, May 6-7, 2010&lt;/a&gt;.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;There will also be presentations by Kent Pitman and Matthias Felleisen whose abstracts sound pretty interesting, and I will try to give an overview of parallel programming in Common Lisp at the symposium as well. Still have to work on the slides for that one...&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20069114-415120359677445849?l=p-cos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://p-cos.blogspot.com/feeds/415120359677445849/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20069114&amp;postID=415120359677445849' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20069114/posts/default/415120359677445849'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20069114/posts/default/415120359677445849'/><link rel='alternate' type='text/html' href='http://p-cos.blogspot.com/2010/04/lisp-machine-demonstration.html' title='Lisp Machine demonstration...'/><author><name>Pascal Costanza</name><uri>http://www.blogger.com/profile/04512975624438301971</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://bp1.blogger.com/_DIhRAGqWubM/SBVnDJc6vsI/AAAAAAAAAAM/oWU7nSP-yzU/S220/me.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20069114.post-931156067117883445</id><published>2010-04-13T15:16:00.003+02:00</published><updated>2010-04-13T15:33:30.505+02:00</updated><title type='text'>3rd European Lisp Symposium is very soon!</title><content type='html'>The third European Lisp Symposium is less than a month away. I have received the following call for participation to redistribute, which I post here for everyone to read.&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;3rd European Lisp Symposium&lt;/h2&gt;&lt;br /&gt;May 6-7, 2010, Fundacao Calouste Gulbenkian, Lisbon, Portugal&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Call for Participation&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Registration for the 3rd European Lisp Symposium (ELS 2010) is now &lt;a href="http://www.european-lisp-symposium.org/"&gt;open&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Scope and Programme Highlights&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The purpose of the European Lisp Symposium is to provide a forum for the discussion of all aspects of the design, implementation and application of any of the Lisp dialects.  We encourage everyone interested in Lisp to participate.&lt;br /&gt;&lt;br /&gt;As well as presentations of the accepted technical papers and tutorials, the programme features the following highlights:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Kent Pitman of HyperMeta Inc. will offer reflections on Lisp Past, Present and Future;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Pascal Costanza will lead a tutorial session on Parallel Programming in Common Lisp;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Matthias Felleisen of PLT will talk about languages for creating;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;programming languages;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;there will be opportunities for attendees to give lightning talks and demos of late-breaking work.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Social events&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Symposium banquet (included with registration)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Excursion to Sintra (optional), for six centuries the favourite&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Summer residence of the Kings of Portugal, who were attracted by cool climates and the beauty of the town's setting.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Programme Chair&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Christophe Rhodes, Goldsmiths, University of London, UK&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Local Chair&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Antonio Leitao, Technical University of Lisbon, Portugal&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Programme Committee&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Marco Antoniotti, Universita Milano Bicocca, Italy&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Giuseppe Attardi, Universita di Pisa, Italy&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Pascal Costanza, Vrije Universiteit Brussel, Belgium&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Irene Anne Durand, Universite Bordeaux I, France&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Marc Feeley, Universite de Montreal, Canada&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Ron Garret, Amalgamated Widgets Unlimited, USA&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Gregor Kiczales, University of British Columbia, Canada&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Antonio Leitao, Technical University of Lisbon, Portugal&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Nick Levine, Ravenbrook Ltd, UK&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Scott McKay, ITA Software, Inc., USA&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Peter Norvig, Google Inc., USA&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Kent Pitman, PTC, USA&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Christian Queinnec, Universite Pierre et Marie Curie, France&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Robert Strandh, Universite Bordeaux I, France&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Didier Verna, EPITA Research and Development Laboratory, France&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Barry Wilkes, Citi, UK&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Taiichi Yuasa, Kyoto University, Japan&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Registration&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Registration is &lt;a href="http://www.european-lisp-symposium.org/"&gt;open&lt;/a&gt; and costs EUR120 (EUR60 for students) until 22nd April, and EUR200 (EUR120 for students) afterwards.&lt;br /&gt;&lt;br /&gt;Registration includes a copy of the proceedings, coffee breaks, and the symposium banquet.  Accommodation is not included.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20069114-931156067117883445?l=p-cos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://p-cos.blogspot.com/feeds/931156067117883445/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20069114&amp;postID=931156067117883445' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20069114/posts/default/931156067117883445'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20069114/posts/default/931156067117883445'/><link rel='alternate' type='text/html' href='http://p-cos.blogspot.com/2010/04/3rd-european-lisp-symposium-is-very.html' title='3rd European Lisp Symposium is very soon!'/><author><name>Pascal Costanza</name><uri>http://www.blogger.com/profile/04512975624438301971</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://bp1.blogger.com/_DIhRAGqWubM/SBVnDJc6vsI/AAAAAAAAAAM/oWU7nSP-yzU/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20069114.post-6875223612403432874</id><published>2009-12-04T23:00:00.002+01:00</published><updated>2009-12-04T23:07:30.203+01:00</updated><title type='text'>Filtered functions</title><content type='html'>I am very excited that I can finally annouce a public release of &lt;span style="font-style:italic;"&gt;filtered functions&lt;/span&gt;, an extension of generic functions that Charlotte Herzeel, Jorge Vallejos, and myself have developed some time ago and that we are very excited about because it seems to be quite powerful in a number of very different scenarios. It took a while to release filtered functions, because it is a quite non-trivial extension of generic functions and requires a CLOS MOP implementation that is compliant with the AMOP specification to quite a deep level. Therefore, this required some serious preparation in the form of a much improved Closer to MOP library, that I released today as well.&lt;br /&gt;&lt;br /&gt;You can find filtered functions and Closer to MOP at the &lt;a href="http://common-lisp.net/project/closer/"&gt;Closer project website&lt;/a&gt;. Below you will find a general overview of the concept.&lt;br /&gt;&lt;br /&gt;Filtered functions are an extension of generic functions, extended with a filtering step where the arguments received by a generic function are mapped to other values based on user-defined mapping functions. Those filtered values are then used to perform the actual selection and execution of applicable methods. Nevertheless, the methods that are eventually executed see the original objects as received by the generic function, and not the filtered ones.&lt;br /&gt;&lt;br /&gt;Here are some examples to illustrate the expressive power of filtered functions.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Factorial&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;In order to be able to use filtered functions, we need to have filter functions that map received arguments to values that we actually want to base our dispatch on. For the factorial function, we want to distinguish between negative and positive numbers, and the number zero. For that we can just use the Common Lisp function SIGNUM that returns +1 for positive numbers, -1 for negative numbers, and just 0 for the number 0. The filtered function FAC can thus be defined as follows.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;(define-filtered-function fac (n)&lt;br /&gt;  (:filters (:sign #'signum)))&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;DEFINE-FILTERED-FUNCTION is exactly like DEFGENERIC, except that it can also define one or more filters. Here, it defines a filter with the name :SIGN wich specifices that the function SIGNUM is to be used for filtering.&lt;br /&gt;&lt;br /&gt;We can now define methods for FAC:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;(defmethod fac :filter :sign ((n (eql +1)))&lt;br /&gt;  (* n (fac (- n 1))))&lt;br /&gt;&lt;br /&gt;(defmethod fac :filter :sign ((n (eql 0)))&lt;br /&gt;  1)&lt;br /&gt;&lt;br /&gt;(defmethod fac :filter :sign ((n (eql -1)))&lt;br /&gt;  (error "Fac not defined for negative numbers."))&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Here, we use the qualifiers :FILTER :SIGN in the method definitions to indicate that we indeed want to use the :SIGN filter for method selection. We then use EQL specializers to ensure that the method definitions are applicable for the three different cases that SIGNUM yields. Remember that the method bodies always see the original arguments, not the filtered ones, and this is why the FAC methods can do the correct computations.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;State pattern&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Filtered functions can be used to dispatch methods based on the state of an argument passed to a filtered function, which enables expressing State-like idioms. Assume the following simple CLOS class is defined for implementing a stack.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;(defconstant +stack-size+ 10)&lt;br /&gt;&lt;br /&gt;(defclass stack ()&lt;br /&gt;  ((contents :initform (make-array +stack-size+)&lt;br /&gt;             :reader stack-contents))&lt;br /&gt;   (index :initform 0&lt;br /&gt;          :accessor stack-index)))&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Instances of this class have three different states: Such a stack can either be empty, or full, or anywhere in between (in 'normal' state). We can express this as a function that recognizes the state of a stack.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;(defun stack-state (stack)&lt;br /&gt;  (cond ((&lt;= (stack-index stack) 0) 'empty)&lt;br /&gt;        ((&gt;= (stack-index stack) +stack-size+) 'full)&lt;br /&gt;        (t 'normal)))&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;It is now straightforward to use stack-state in a filter named :state for the typical stack operations.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;(define-filtered-function stack-push (stack value)&lt;br /&gt;  (:filters (:state #'stack-state)))&lt;br /&gt;&lt;br /&gt;(define-filtered-function stack-pop (stack)&lt;br /&gt;  (:filters (:state #'stack-state)))&lt;br /&gt;&lt;br /&gt;(define-filtered-function stack-emptyp (stack)&lt;br /&gt;  (:filters (:state #'stack-state)))&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;We can now group the behavior of a stack according to its different states. Note that for 'normal' state, we do not need to mention the use of any filter here, because the methods are not specialized on anything specific anyway. (Filtered functions always allow for 'regular' methods alongside the filtered methods.)&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;;;; Normal state&lt;br /&gt;&lt;br /&gt;(defmethod stack-push (stack value)&lt;br /&gt;  (setf (aref (stack-contents stack)&lt;br /&gt;              (stack-index stack))&lt;br /&gt;        value)&lt;br /&gt;  (incf (stack-index stack)))&lt;br /&gt;&lt;br /&gt;(defmethod stack-pop (stack)&lt;br /&gt;   (decf (stack-index stack))&lt;br /&gt;   (aref (stack-contents stack)&lt;br /&gt;         (stack-index stack)))&lt;br /&gt;&lt;br /&gt;(defmethod stack-emptyp (stack)&lt;br /&gt;  nil)&lt;br /&gt;&lt;br /&gt;;;; Empty state&lt;br /&gt;&lt;br /&gt;(defmethod stack-pop :filter :state ((stack (eql 'empty)))&lt;br /&gt;  (error "Stack is empty."))&lt;br /&gt;&lt;br /&gt;(defmethod stack-emptyp :filter :state ((stack (eql 'empty)))&lt;br /&gt;  t)&lt;br /&gt;&lt;br /&gt;;;; Full state&lt;br /&gt;&lt;br /&gt;(defmethod stack-push :filter :state ((stack (eql 'full)) value)&lt;br /&gt;  (error "Stack is full."))&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Note that we used a derived state function here, that determines the state of the stack based on some of its other properties. Since filter functions can be any functions, we could also use the reader of a slot as a filter function, and thus have the behavior of a filtered function depend on the explicit state of an object.&lt;br /&gt;&lt;br /&gt;Filtered functions can do a lot more: As already mentioned, they can use more than one filter; filter functions can see all the arguments a generic function receives; and filters can be guarded, which means that methods that use a particular filter may be completely ignored if the arguments don't fulfil a certain predicate. You can read the paper &lt;a href="http://p-cos.net/documents/filtered-dispatch.pdf"&gt;Filtered Dispatch&lt;/a&gt; that I co-authored with Charlotte Herzeel, Jorge Vallejos and Theo D'Hondt for a more thorough introduction, background information and semantics, and which also includes an extensible metacircular Lisp interpreter as an example, based on implementing EVAL as a filtered function.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20069114-6875223612403432874?l=p-cos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://p-cos.blogspot.com/feeds/6875223612403432874/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20069114&amp;postID=6875223612403432874' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20069114/posts/default/6875223612403432874'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20069114/posts/default/6875223612403432874'/><link rel='alternate' type='text/html' href='http://p-cos.blogspot.com/2009/12/filtered-functions.html' title='Filtered functions'/><author><name>Pascal Costanza</name><uri>http://www.blogger.com/profile/04512975624438301971</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://bp1.blogger.com/_DIhRAGqWubM/SBVnDJc6vsI/AAAAAAAAAAM/oWU7nSP-yzU/S220/me.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20069114.post-3267446613621771396</id><published>2009-04-25T14:32:00.002+02:00</published><updated>2009-04-25T14:57:31.198+02:00</updated><title type='text'>European Lisp Symposium 2009 - programme details!</title><content type='html'>On May 27-29, there will be the &lt;a href="http://www.european-lisp-symposium.org/"&gt;2nd European Lisp Symposium&lt;/a&gt; taking place in Milan, Italy. The program looks very exciting, and I will definitely be there (well, due to obvious reasons, see below ;).&lt;br /&gt;&lt;br /&gt;For example, there are two keynote talks. One is by &lt;a href="http://www.nhplace.com/kent/"&gt;Kent Pitman&lt;/a&gt; who is an &lt;a href="http://www.nhplace.com/kent/Papers/index.html"&gt;award-winning author of technical papers about Lisp&lt;/a&gt;, editor of the ANSI Common Lisp specification, and designer of the &lt;a href="http://www.lispworks.com/documentation/HyperSpec/Front/index.htm"&gt;HyperSpec&lt;/a&gt;, the de-facto standard manual for Common Lisp. He will discuss how the Lisp community should move forward from his perspective. Kent's ideas are always well thought-out, although at times controversial, so this is certainly going to be a provocative talk.&lt;br /&gt;&lt;br /&gt;The other is by João Pavão Martins and Ernesto Morgado, the two owners of &lt;a href="http://www.siscog.pt/"&gt;SISCOG&lt;/a&gt; - a Portuguese company that develops &lt;a href="http://www.siscog.eu/area.asp?idArea=1"&gt;large-scale industrial planning and scheduling software&lt;/a&gt; which is in use for over twenty years. It's always good to hear what practitioners have to tell about their experiences with Lisp, so this should turn out quite interesting.&lt;br /&gt;&lt;br /&gt;There will be a couple of presentations in the main track of the symposium about papers that have been reviewed by a program committee chaired by António Leitão.&lt;br /&gt;&lt;br /&gt;Jim Newton is going to present a type inferencing approach for the Skill dialect of Lisp that is actually being used in his group at Cadence Design Systems, one of the world-wide largest providers of &lt;a href="http://en.wikipedia.org/wiki/Electronic_design_automation"&gt;Eletronic Design Automation&lt;/a&gt;. (If you use an eletronic device, it's very likely that the chips inside were designed using one of their tools!)&lt;br /&gt;&lt;br /&gt;Thomas Burdick is going to present an approach for compiling FEXPRs (think: first-class macros that you can pass around like regular functions). I'm a bit skeptical here that this will work, because it is actually known that &lt;a href="http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.44.9264"&gt;FEXPRs cannot be compiled&lt;/a&gt;, but maybe he has found an interesting twist to the problem.&lt;br /&gt;&lt;br /&gt;Some colleagues of mine from the &lt;a href="http://arti.vub.ac.be/"&gt;Artificial Intelligence Lab of the Vrije Universiteit Brussel&lt;/a&gt; in Belgium are going to present a debugging technique they have devolped for their own large-scale agent system that they use to investigate the possible &lt;a href="http://www.emergent-languages.org/"&gt;development of natural languages&lt;/a&gt; by reconstructing how they could have evolved from simple, first-class principles. The debugging approach consists of monitoring the activities of the agents and presenting the process as an interactive webpage that can present arbitrary detailed (or abstract) views on what is happening. Very cool stuff here, and since they use web technology here, it is actually portable...&lt;br /&gt;&lt;br /&gt;Charlotte Herzeel is going to present an architecture for Software Transactional Memory (STM). STM has become quite a hot topic in the last few years because it seems a very promising approach for dealing with concurrency, and since multicore processors are the buzz of the moment, there is a lot of interesting in such approaches. However, little attention has been payed to the design of STM frameworks where you can selectively plug in different STM algorithms. Charlotte has developed a reflective approach (think: metaobject protocol) for STM, which seems very promising (but I'm one of the co-authors of the paper, so I'm naturally biased, of course ;).&lt;br /&gt;&lt;br /&gt;Another presentation will be about &lt;a href="http://en.wikipedia.org/wiki/Linda_(coordination_language)"&gt;Linda-style distribution layer&lt;/a&gt; on top of Kenzo, an apparently very powerful system for symbolic computation developed in Common Lisp. The Linda Model (also used in JavaSpaces and TSpaces, for example) has a number of very interesting properties for distributed computing, and the paper presents an implementation based on &lt;a href="http://www.franz.com/products/allegrocache/"&gt;AllegroCache&lt;/a&gt;, a robust and high-performance object-oriented database for Allegro Common Lisp. I'm wondering what the concrete benefits for a symbolic algebra system are, so this is another presentation to look forward to.&lt;br /&gt;&lt;br /&gt;Finally, I am going to present a paper myself - that's the main reason why I will definitely be there ;). My presentation will be about a macro system on top of Common Lisp's macros that allows writing hygienic macros. The system provides facilities similar to &lt;a href="http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.53.5184"&gt;Clinger's renaming construct&lt;/a&gt;. The interesting part is that my system is implemented in fully portable Common Lisp and integrated in such a way that 'regular' Common Lisp macros and the macros developed with this new macro system can be used together. The reason why this works is because of the use of symbol macros in the implementation of the new constructs.&lt;br /&gt;&lt;br /&gt;Other items on the programme for the symposium are:&lt;br /&gt;&lt;br /&gt;A debate on expanding and updating the Common Lisp standard. I am known to be quite conservative when it comes to this topic, in that I don't think ANSI Common Lisp needs a serious revision, but can be developed in a piecemeal fashion (and this actually already happens due to the efforts of the currently very vibrant Common Lisp community). I believe (obviously) that something like &lt;a href="http://cdr.eurolisp.org/"&gt;CDR&lt;/a&gt; is much more promising than a "big bang" revision of the core language. The recent developments in the Scheme community, where the highly controversial &lt;a href="http://www.r6rs.org/"&gt;R6RS specification&lt;/a&gt; was &lt;a href="http://www.r6rs.org/ratification/results.html"&gt;almost not ratified&lt;/a&gt;, seems to indicate that the danger is too high that a lot of time and resources could be wasted that can otherwise be used in a much more productive way. Well, maybe there will be some new ideas and visions coming out of the debate...&lt;br /&gt;&lt;br /&gt;On the Saturday after the symposium, there will be a visit to the &lt;a href="http://www.futurismo.milano.it/"&gt;Futurism exhibit in Milan&lt;/a&gt;. Futurism was an art movement in Italy in the early 20th century, whose founders announced that everything "old" (so artistic and political tradition) should be replaced by the new ideas of a then young generation. This is probably one of the strangest choices for the social programme of a Lisp-related event: Lisp is second oldest programming language still in use today, and has always been in competition with whatever other programming language came along that was considered to be 'newer' (as if that automically meant 'better'). However, judging for example from &lt;a href="http://newsblog.aboutitaly.net/2009/02/02/one-hundred-years-of-futurism-milan-celebrates-with-an-exhibition/en/"&gt;this blog posting&lt;/a&gt;, this could actually be a very inspiring exhibition.&lt;br /&gt;&lt;br /&gt;So all in all, a highly interesting programme, with some more items being added in the coming days. (There are rumours that Christophe Rhodes is going to give a tutorial about non-portable features of &lt;a href="http://www.sbcl.org/"&gt;SBCL&lt;/a&gt;, for example!) Although the early registration deadline is ending very soon now, there is no reason to despair: With €80 for students and €160 for regular participants, the registration fees will remain very low.&lt;br /&gt;&lt;br /&gt;So, hope to see you in Milan!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20069114-3267446613621771396?l=p-cos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://p-cos.blogspot.com/feeds/3267446613621771396/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20069114&amp;postID=3267446613621771396' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20069114/posts/default/3267446613621771396'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20069114/posts/default/3267446613621771396'/><link rel='alternate' type='text/html' href='http://p-cos.blogspot.com/2009/04/european-lisp-symposium-2009-programme.html' title='European Lisp Symposium 2009 - programme details!'/><author><name>Pascal Costanza</name><uri>http://www.blogger.com/profile/04512975624438301971</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://bp1.blogger.com/_DIhRAGqWubM/SBVnDJc6vsI/AAAAAAAAAAM/oWU7nSP-yzU/S220/me.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20069114.post-8579120301479136017</id><published>2009-03-30T00:27:00.003+02:00</published><updated>2009-03-30T16:25:50.325+02:00</updated><title type='text'>Credo</title><content type='html'>&lt;blockquote&gt;It has been suggested that certain programming language constructs, in particular the GO TO, lend themselves to obscure coding practices. Some language designers have even gone so far as to design languages which purposely omit such familiar constructs as GO TO in an attempt to constrain the programmer to refrain from particular styles of programming thought by the language designer to be "bad" in some sense. But any language with function calls, functional values, conditionals, correct handling of tail-recursions, and lexical scoping can simulate such "non-structured" constructs as GO TO statements, call-by-name, and fluid variables in a &lt;i&gt;straightforward&lt;/i&gt; manner. If the language also has a macro processor or preprocessor, these simulations will even be convenient to use.&lt;br /&gt;&lt;br /&gt;No amount of language design can &lt;i&gt;force&lt;/i&gt; a programmer to write clear programs. If the programmer's conception of the problem is badly organized, then his program will also be badly organized. The extent to which a programming language can help a programmer to organize his problem is precisely the extent to which it provides features appropriate to his problem domain. The emphasis should not be on eliminating "bad" language constructs, but on discovering or inventing helpful ones.&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Guy L. Steele Jr. and Gerald J. Sussman&lt;br /&gt;&lt;a href="http://repository.readscheme.org/ftp/papers/ai-lab-pubs/AIM-353.pdf"&gt;Lambda - The Ultimate Imperative&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20069114-8579120301479136017?l=p-cos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://p-cos.blogspot.com/feeds/8579120301479136017/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20069114&amp;postID=8579120301479136017' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20069114/posts/default/8579120301479136017'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20069114/posts/default/8579120301479136017'/><link rel='alternate' type='text/html' href='http://p-cos.blogspot.com/2009/03/credo.html' title='Credo'/><author><name>Pascal Costanza</name><uri>http://www.blogger.com/profile/04512975624438301971</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://bp1.blogger.com/_DIhRAGqWubM/SBVnDJc6vsI/AAAAAAAAAAM/oWU7nSP-yzU/S220/me.jpg'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20069114.post-3776096713380988244</id><published>2009-03-12T16:04:00.003+01:00</published><updated>2009-03-12T16:12:51.159+01:00</updated><title type='text'>Lisp: Research and Experience</title><content type='html'>In the last couple of years, we have seen a growing interest in the Lisp programming language and its various dialects, including classic ones, like Common Lisp and Scheme, and also brand new ones, like Clojure and Qi. Several user group meetings, workshops and conferences have been organized with great success in recent years, especially in Europe, but also elsewhere.&lt;br /&gt;&lt;br /&gt;With the European Lisp Symposium, we aim to start a series of annual events that is especially suitable for novel research results, but also for insights and lessons learned from practical applications and education perspectives, all involving Lisp dialects. &lt;a href="http://prog.vub.ac.be/~pcostanza/els08/"&gt;The first symposium was organized in Bordeaux, France, on May 22 and 23, 2008.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;For this symposium, we have received 15 submissions, and after a careful review process, the program committee selected seven of them for presentation at the main track of the symposium. The program committee considered six of these papers worthy of being invited for a journal publication. Their authors submitted extended versions of these papers, and after another thorough review process with additional reviewers, these papers have indeed reached the necessary level of quality and maturity.&lt;br /&gt;&lt;br /&gt;These papers are now finally published in a special issue &lt;a href="http://www.jucs.org/jucs_14_20"&gt;&lt;span style="font-style:italic;"&gt;Lisp: Research and Experience&lt;/span&gt;&lt;/a&gt; of the Journal of Universal Computer Science.&lt;br /&gt;&lt;br /&gt;Preparations for the &lt;a href="http://www.european-lisp-symposium.org/"&gt;2nd European Lisp Symposium&lt;/a&gt; to be held in Milan, Italy, May 27-29, 2009 are already under way...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20069114-3776096713380988244?l=p-cos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://p-cos.blogspot.com/feeds/3776096713380988244/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20069114&amp;postID=3776096713380988244' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20069114/posts/default/3776096713380988244'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20069114/posts/default/3776096713380988244'/><link rel='alternate' type='text/html' href='http://p-cos.blogspot.com/2009/03/lisp-research-and-experience.html' title='Lisp: Research and Experience'/><author><name>Pascal Costanza</name><uri>http://www.blogger.com/profile/04512975624438301971</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://bp1.blogger.com/_DIhRAGqWubM/SBVnDJc6vsI/AAAAAAAAAAM/oWU7nSP-yzU/S220/me.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20069114.post-2779575388051019207</id><published>2009-01-26T14:23:00.002+01:00</published><updated>2009-01-26T14:32:47.354+01:00</updated><title type='text'>European Lisp Symposium 2009</title><content type='html'>There will be another instance of the &lt;a href="http://www.european-lisp-symposium.org/"&gt;European Lisp Symposium&lt;/a&gt; this year: in Milan, Italy, from May 27-29, 2009. It's very good that this event takes place so relatively shortly after the successful European Lisp Symposium 2008 about one year ago. Special kudos go to Marco Antoniotti for the local organization and Antonio Leitao for having assembled a great program committee.&lt;br /&gt;&lt;br /&gt;The rates for attending the symposium are again very reasonable: Students can get in for as low as €60, and other participants for reasonable €100,  when taking advantage of the early registration rates. See the &lt;a href="http://www.european-lisp-symposium.org/"&gt;registration page at the symposium website&lt;/a&gt; for more details.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;More importantly, though:&lt;/span&gt; You can still submit papers to the symposium. The deadline for paper submissions is February 4, 2009, and the program committee accepts both original contributions, including research papers and experience reports, as well as descriptions of work in progress. Again, see the &lt;a href="http://www.european-lisp-symposium.org/"&gt;symposium website&lt;/a&gt; for more details.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20069114-2779575388051019207?l=p-cos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://p-cos.blogspot.com/feeds/2779575388051019207/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20069114&amp;postID=2779575388051019207' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20069114/posts/default/2779575388051019207'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20069114/posts/default/2779575388051019207'/><link rel='alternate' type='text/html' href='http://p-cos.blogspot.com/2009/01/european-lisp-symposium-2009.html' title='European Lisp Symposium 2009'/><author><name>Pascal Costanza</name><uri>http://www.blogger.com/profile/04512975624438301971</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://bp1.blogger.com/_DIhRAGqWubM/SBVnDJc6vsI/AAAAAAAAAAM/oWU7nSP-yzU/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20069114.post-6086601723250843944</id><published>2008-09-18T19:46:00.002+02:00</published><updated>2008-09-18T19:48:40.738+02:00</updated><title type='text'>Lisp50@OOPSLA</title><content type='html'>...celebrating the 50th birthday of Lisp at &lt;a href="http://www.oopsla.org/oopsla2008/"&gt;OOPSLA 2008&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Monday, October 20, 2008&lt;br /&gt;Nashville, Tennessee, USA&lt;br /&gt;co-located with &lt;a href="http://www.oopsla.org/oopsla2008/"&gt;OOPSLA 2008&lt;/a&gt;&lt;br /&gt;participation is free for all OOPSLA participants&lt;br /&gt;&lt;a href="http://www.oopsla.org/oopsla2008/registration.html"&gt;registration for at least one conference day at OOPSLA is required&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;URL: &lt;a href="http://www.lisp50.org"&gt;http:www.lisp50.org&lt;/a&gt;&lt;br /&gt;Feed: &lt;a href="http://lisp50.blogspot.com"&gt;http://lisp50.blogspot.com&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Invited Speakers&lt;/b&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;William Clinger, Northeastern University, USA&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Pascal Costanza, Vrije Universiteit Brussel, Belgium&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Richard Gabriel, IBM Research, USA&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Rich Hickey, Independent Consultant, USA&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Alan Kay, Viewpoints Research Institute, USA&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Fritz Kunze, USA&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Ora Lassila, Nokia Research Center, USA&lt;/li&gt;&lt;br /&gt;&lt;li&gt;John McCarthy, USA&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Kent Pitman, PTC, USA&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Guy Steele, Sun Microsystems Laboratories, USA&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Herbert Stoyan, University of Erlangen, Germany&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Warren Teitelman, Google Inc., USA&lt;/li&gt;&lt;br /&gt;&lt;li&gt;JonL White, USA&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;Titles, abstracts, biographies and schedule will be announced at &lt;a href="http://www.lisp50.org"&gt;the&lt;br /&gt;Lisp50 webpage&lt;/a&gt; and &lt;a href="http://lisp50.blogspot.com"&gt;blog&lt;/a&gt; in the coming days and weeks.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Abstract&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;In October 1958, John McCarthy published one in a series of reports about his then ongoing effort for designing a new programming language that would be especially suited for achieving artificial intelligence. That report was the first one to use the name LISP for this new programming language. 50 years later, Lisp is still in use. This year we are celebrating Lisp's 50th birthday. OOPSLA 2008 is an excellent venue for such a celebration, because object-oriented programming benefited heavily from Lisp ideas and because OOPSLA 2008 takes place in October, exactly 50 years after the name Lisp has been used publicly for the first time. We will have talks by John McCarthy himself, and numerous other influential Lispers from the past five decades. We will also take a look at the next 50 years of Lisp.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Organizers&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Pascal Costanza, Vrije Universiteit Brussel, Belgium&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Richard Gabriel, IBM Research, Hawthorne, NY, USA&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Robert Hirschfeld, Hasso-Plattner-Institut, Potsdam, Germany&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Guy Steele, Sun Microsystems Laboratories, Burlington, MA, USA&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;Sponsored by &lt;a href="http://www.sigplan.org/"&gt;ACM SIGPLAN&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Supported by&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://researchweb.watson.ibm.com/"&gt;IBM Research&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.lispworks.com/"&gt;LispWorks Ltd&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.franz.com"&gt;Franz Inc.&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.clozure.com/"&gt;Clozure Associates&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20069114-6086601723250843944?l=p-cos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://p-cos.blogspot.com/feeds/6086601723250843944/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20069114&amp;postID=6086601723250843944' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20069114/posts/default/6086601723250843944'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20069114/posts/default/6086601723250843944'/><link rel='alternate' type='text/html' href='http://p-cos.blogspot.com/2008/09/lisp50oopsla.html' title='Lisp50@OOPSLA'/><author><name>Pascal Costanza</name><uri>http://www.blogger.com/profile/04512975624438301971</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://bp1.blogger.com/_DIhRAGqWubM/SBVnDJc6vsI/AAAAAAAAAAM/oWU7nSP-yzU/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20069114.post-3245762677427040584</id><published>2008-09-14T16:21:00.002+02:00</published><updated>2008-09-14T16:59:12.539+02:00</updated><title type='text'>Reflection for the Masses</title><content type='html'>Programming languages provide more or less narrow models on how solutions should be represented and thought about, and enforce such models in more or less strict ways. However, it always happens that the offered models are not completely appropriate, but need to be adapted in some ways to better fit a concrete problem at hand. Design patterns and programming styles provide ways to deal with such situations: By applying some principles in your code, you can work around limitations of a programming language and/or benefit from properties that arise from such principles. For example, it is then possible to replace algorithms at runtime in an otherwise static language, take advantage of a "pure" functions in an otherwise imperative language, and so on.&lt;br /&gt;&lt;br /&gt;Reflection is a more systematic way to open up a programming language and extend it beyond the designer's original intent. By exposing internal implementation details of the language to programmers, they can add and modify features of the language in a principled way. For example, metaobject protocols are prime examples of reflection in programming languages.&lt;br /&gt;&lt;br /&gt;Reflection is one of the corner stones of programming languages: Many programming languages provide some form of reflection, and certainly almost all of the widely used ones. So there seem to be clear benefits from being able to inspect and extend languages from within themselves.&lt;br /&gt;&lt;br /&gt;The first dedicated account of reflection was provided by Brian C. Smith at the beginning of the 1980's, and he used his own dialect called 3-Lisp as a way to illustrate the principles behind reflection, especially for procedural, but also for structural reflection. (Instead of "procedural reflection," we would nowadays say "behavioral reflection.") Unfortunately, Smith's papers and PhD thesis are very hard to follow and understand: Since he is primarily a philosopher, and not a computer scientist, he uses terminology borrowed from philosophy, and on top of that, takes concepts from Lisp dialects of his time for granted that even seasoned modern Lispers do not fully grasp anymore.&lt;br /&gt;&lt;br /&gt;In a recent attempt to better understand the ideas and concepts behind Smith's account of reflection and 3-Lisp, Charlotte Herzeel and myself carefully studied &lt;a href="http://library.readscheme.org/page11.html"&gt;Smith's papers and the follow-up literature&lt;/a&gt; that directly referred to Smith's work in detail. Eventually, Charlotte reimplemented 3-Lisp in Common Lisp, and we discussed several aspects of that implementation from various perspectives. In the end, we were both surprised how well thought out Smith's conceptualization is even with regard to lots of details you have to face when actually implementing reflection - details that many of the follow-up authors in their own accounts seemed to have missed. However, we are also convinced that Smith made some "mistakes" - especially, we are now convinced that the model of an "infinite reflective tower" is at best a neat theoretical setup, but not at all useful for practical purposes.&lt;br /&gt;&lt;br /&gt;Our work culminated in a paper called "Reflection for the Masses," co-authored with Theo D'Hondt, which Charlotte presented at this year's &lt;a href="http://www.swa.hpi.uni-potsdam.de/s3/"&gt;Workshop on Self-sustaining Systems (S3)&lt;/a&gt; in Potsdam, Germany. &lt;a href="http://p-cos.net/documents/s32008.pdf"&gt;The paper is now also available on my website.&lt;/a&gt; It discusses Charlotte's implementation of 3-Lisp in detail and explains the concepts and details of reflection as we see them. It also contains the full implementation of 3-Lisp in Common Lisp as an appendix.&lt;br /&gt;&lt;br /&gt;We are very proud of that paper. We think that we achieved a major step forward in better explaining reflection to a more general audience. It is still a presentation that is probably a lot easier to understand for Lispers, and probably quite hard to follow for non-Lispers, but we removed a lot of Smith's obscurities in his original presentation and are convinced that especially Common Lispers should be able to easily understand and enjoy our version.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20069114-3245762677427040584?l=p-cos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://p-cos.blogspot.com/feeds/3245762677427040584/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20069114&amp;postID=3245762677427040584' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20069114/posts/default/3245762677427040584'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20069114/posts/default/3245762677427040584'/><link rel='alternate' type='text/html' href='http://p-cos.blogspot.com/2008/09/reflection-for-masses.html' title='Reflection for the Masses'/><author><name>Pascal Costanza</name><uri>http://www.blogger.com/profile/04512975624438301971</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://bp1.blogger.com/_DIhRAGqWubM/SBVnDJc6vsI/AAAAAAAAAAM/oWU7nSP-yzU/S220/me.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20069114.post-80956334805254224</id><published>2008-06-01T23:17:00.002+02:00</published><updated>2008-06-01T23:22:49.999+02:00</updated><title type='text'>New versions of Closer libraries released</title><content type='html'>I have just released new versions of all Closer libraries, including Closer to MOP and ContextL.&lt;br /&gt;&lt;br /&gt;A major change that affects all libraries is that I have dropped support for Macintosh Common Lisp, and "replaced" OpenMCL with Clozure Common Lisp. Furthermore, the dependency of Closer to MOP to LW-Compat has been removed due to requests by users, but a dependency of ContextL to the portable-threads librarie of the GBBopen project has been added.&lt;br /&gt;&lt;br /&gt;Other highlights include:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Closer to MOP 0.5&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;In MCL, OpenMCL and Clozure Common Lisp, funcallable-standard-object is now exported from Closer to MOP.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Fixed the lack of :generic-function-argument-precedence-order-returns-required-arguments in Allegro Common Lisp.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Ensured that a defgeneric form makes a generic function metaobject available in the compile-time environment. Otherwise, defmethod may not yield a method of the correct method metaobject class.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Added support for compute-discriminating-function in Clozure Common Lisp and OpenMCL, based on code provided by Slava Akhmechet.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Added a classp predicate (due to Willem Broekema).&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;ContextL 0.5&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Added :in as an alternative for :in-layer in the various define-layered-xyz macros.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;ContextL now depends on portable-threads of the GBBopen project. This is done for locking critical sections to ensure thread safety of ContextL.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Added new functions active-layers and (setf current-layer-context).&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Added a garbage collector for layer caches, such that redefinition of layers or certain methods in the ContextL MOP have an effect.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Simplified mapping of layer-related names to internal names, which should also make things easier to read when debugging ContextL programs.&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;MOP Feature Tests 0.45&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Added new recognized standard feature :generic-function-argument-precedence-order-returns-required-arguments.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Added a new known extra feature for SBCL (since SBCL version 1.0.14).&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;The libraries can be downloaded from the &lt;a href=http://common-lisp.net/project/closer/&gt;Closer Project&lt;/a&gt;  and are asdf-installable, as usual.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20069114-80956334805254224?l=p-cos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://p-cos.blogspot.com/feeds/80956334805254224/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20069114&amp;postID=80956334805254224' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20069114/posts/default/80956334805254224'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20069114/posts/default/80956334805254224'/><link rel='alternate' type='text/html' href='http://p-cos.blogspot.com/2008/06/new-versions-of-closer-libraries.html' title='New versions of Closer libraries released'/><author><name>Pascal Costanza</name><uri>http://www.blogger.com/profile/04512975624438301971</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://bp1.blogger.com/_DIhRAGqWubM/SBVnDJc6vsI/AAAAAAAAAAM/oWU7nSP-yzU/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20069114.post-2345596719967465589</id><published>2008-06-01T21:13:00.002+02:00</published><updated>2008-06-01T21:23:36.424+02:00</updated><title type='text'>Reengineering Patterns</title><content type='html'>Most people misunderstand the concept of patterns. This is probably mostly due to the Design Patterns book by Gamma, Helm, Johnson and Vlissides, which only conveys parts of what patterns can actually express and what they can be used for. People who know "better" languages know that most of the design patterns in that book can be &lt;a href=http://norvig.com/design-patterns/&gt;much easier expressed&lt;/a&gt;, such that they virtually go away. However, that's not the "fault" of the patterns concept, that's rather a problem with that book, in that quite boring patterns have been selected.&lt;br /&gt;&lt;br /&gt;A much better book is "Object-Oriented Reengineering Patterns" by Demeyer, Ducasse and Nierstrasz. In my opinion, it is probably the best book about (software-related) patterns that has been published so far. The good news is that the book is now &lt;a href=http://www.iam.unibe.ch/~scg/OORP/&gt;freely available for download&lt;/a&gt;, so check it out.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20069114-2345596719967465589?l=p-cos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://p-cos.blogspot.com/feeds/2345596719967465589/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20069114&amp;postID=2345596719967465589' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20069114/posts/default/2345596719967465589'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20069114/posts/default/2345596719967465589'/><link rel='alternate' type='text/html' href='http://p-cos.blogspot.com/2008/06/reengineering-patterns.html' title='Reengineering Patterns'/><author><name>Pascal Costanza</name><uri>http://www.blogger.com/profile/04512975624438301971</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://bp1.blogger.com/_DIhRAGqWubM/SBVnDJc6vsI/AAAAAAAAAAM/oWU7nSP-yzU/S220/me.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20069114.post-307361252205028375</id><published>2008-05-27T14:11:00.002+02:00</published><updated>2008-05-27T14:27:17.112+02:00</updated><title type='text'>ELS'08 Report</title><content type='html'>Last week, the 1st European Lisp Symposium took place in Bordeaux, France. It was a very successful event, with some excellent paper presentations, but also more interactive formats. For example, we tried out the  &lt;a href=http://www.dreamsongs.com/Files/WritersWorkshop.pdf&gt;writers'&lt;/a&gt; &lt;a href=http://www.dreamsongs.com/Files/WritersWorkshops.pdf&gt;workshop&lt;/a&gt; format for what we called a "work-in-progress" track, which was pretty well received by the participating authors. It's a format that focuses on improving the quality of papers that are not yet ready for publication. I'm very optimistic that we will see the results of this track at future Lisp events. We also organized "birds of a feather" sessions on various topics (distributed programming, image processing, CLIM and better system definition facilities), which were also very well received by the participants. It is my hope that future Lisp events will have more of these interactive formats.&lt;br /&gt;&lt;br /&gt;The symposium itself went very smoothly, which was primarily due to the excellent local organization by Antoine Allombert, Marie Beurton-Aimar, Irène Durand, Nicole Lun and Robert Strandh. Without their willingness to organize the event and without the energy they put into it, the symposium would have never taken place. So a big thank you to all of them!&lt;br /&gt;&lt;br /&gt;It was our intention to organize the European Lisp Symposium as an annual event right from the start. So the preparations for next year's ELS have already started, which will take place in Milan in 2009, at around the same time of the year (ca. end of May), and will be organized by Marco Antoniotti and António Leitão. More news will follow on the usual channels, but you can already start to prepare your ideas for ELS 2009!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20069114-307361252205028375?l=p-cos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://p-cos.blogspot.com/feeds/307361252205028375/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20069114&amp;postID=307361252205028375' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20069114/posts/default/307361252205028375'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20069114/posts/default/307361252205028375'/><link rel='alternate' type='text/html' href='http://p-cos.blogspot.com/2008/05/els08-report.html' title='ELS&apos;08 Report'/><author><name>Pascal Costanza</name><uri>http://www.blogger.com/profile/04512975624438301971</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://bp1.blogger.com/_DIhRAGqWubM/SBVnDJc6vsI/AAAAAAAAAAM/oWU7nSP-yzU/S220/me.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20069114.post-5411033464818072714</id><published>2008-05-26T10:38:00.003+02:00</published><updated>2008-05-26T10:46:17.035+02:00</updated><title type='text'>Fear of DSLs?</title><content type='html'>In &lt;a href=http://p-cos.blogspot.com/2008/05/fear-of-parsers.html&gt;Fear of Parsers?&lt;/a&gt; I responded to Martin Fowler's posting &lt;a href=http://www.martinfowler.com/bliki/ParserFear.html&gt;ParserFear&lt;/a&gt;, arguing that more often than not, building new parsers for domain-specific languages may be too complicated for the benefits you can get from using domain-specific syntax.&lt;br /&gt;&lt;br /&gt;To be clear about this: This is not an argument against domain-specific languages in general, only against domain-specific syntax. Domain-specific languages in Lisp are straightforward to build, easy to use once you are used to Lisp (which is not that hard either), and flexible enough to be adapted to future needs, without getting into the hairy details of designing and implementing suitable domain-specific parsers.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20069114-5411033464818072714?l=p-cos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://p-cos.blogspot.com/feeds/5411033464818072714/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20069114&amp;postID=5411033464818072714' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20069114/posts/default/5411033464818072714'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20069114/posts/default/5411033464818072714'/><link rel='alternate' type='text/html' href='http://p-cos.blogspot.com/2008/05/fear-of-dsls.html' title='Fear of DSLs?'/><author><name>Pascal Costanza</name><uri>http://www.blogger.com/profile/04512975624438301971</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://bp1.blogger.com/_DIhRAGqWubM/SBVnDJc6vsI/AAAAAAAAAAM/oWU7nSP-yzU/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20069114.post-8806782433105137429</id><published>2008-05-20T21:02:00.002+02:00</published><updated>2008-05-20T21:25:55.785+02:00</updated><title type='text'>Fear of parsers?</title><content type='html'>Martin Fowler posts a lot about &lt;a href=http://www.martinfowler.com/bliki/dsl.html&gt;DSLs&lt;/a&gt; these days. In a recent post about &lt;a href=http://www.martinfowler.com/bliki/ParserFear.html&gt;ParserFear&lt;/a&gt;, he comments on an apparently typical reaction against creating one's own DSLs. That reaction seems to be that parsers are hard to write, and that it's easier to use XML instead because with XML, you get the parser for free. Martin Fowler then continues to explain why in his experience, parsers are not hard to implement, by contrasting a specific XML case with an alternative design using Antlr.&lt;br /&gt;&lt;br /&gt;I think he misses the point, though. It's indeed the case that, taken by themselves, parsers are not very hard to write, especially if you stick to simple grammars. However, they could just be a too high investment for too little return.&lt;br /&gt;&lt;br /&gt;This reminds me of a different story: A couple of years ago, Erich Gamma answered a few questions about patterns in one of his talks. One question was about which patterns he would not include anymore in the Design Patterns book. Among others, he mentioned the Singleton and the Visitor pattern, and his explanation for not including them was that he deems them too complicated.&lt;br /&gt;&lt;br /&gt;Most people react puzzled when they hear this story. Yes, everybody who has tried to implement visitors knows that they are quite complicated, but in contrast, singletons seem extremely simple and straightforward to implement. However, the major point here is that they are too complicated for what they achieve: A singleton only guarantees that you get exactly one instance of a class, not more, not less. You might as well just introduce a global variable with that one instance and don't bother going through the minutiae of implementing the Singleton pattern correctly (which has border cases that you can get wrong after all, depending on what language you have to implement it in).&lt;br /&gt;&lt;br /&gt;That's the major point: The effort has to be compared against the benefits you achieve. The same holds for writing parsers for DSLs. A domain-specific syntax simply doesn't buy you that much, but just creates another layer of code that needs to be maintained and can create follow-up problems, for example, when the syntax you designed happens to be too inflexible to be adapted to change requests in future versions of your code.&lt;br /&gt;&lt;br /&gt;This is also the main reason why Lispers like s-expression. The rules for s-expressions are extremely simple, but at the same time also very flexible: The first element in a list determines the meaning of an expression, and all other elements are interpreted in terms of that first element. The same in XML: The tag determines the meaning of an expression, and everything that is nested inside it is interpreted in terms of the tag. An advantage of Lisp over XML is that you don't even need separate reading and processing steps of DOMs, since s-expressions are seamlessly embedded in the language itself.&lt;br /&gt;&lt;br /&gt;So the main point of "parser fear" is not that parsers are hard, but just too hard for what they buy you.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20069114-8806782433105137429?l=p-cos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://p-cos.blogspot.com/feeds/8806782433105137429/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20069114&amp;postID=8806782433105137429' title='15 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20069114/posts/default/8806782433105137429'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20069114/posts/default/8806782433105137429'/><link rel='alternate' type='text/html' href='http://p-cos.blogspot.com/2008/05/fear-of-parsers.html' title='Fear of parsers?'/><author><name>Pascal Costanza</name><uri>http://www.blogger.com/profile/04512975624438301971</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://bp1.blogger.com/_DIhRAGqWubM/SBVnDJc6vsI/AAAAAAAAAAM/oWU7nSP-yzU/S220/me.jpg'/></author><thr:total>15</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20069114.post-2178111472030497167</id><published>2008-04-18T14:06:00.002+02:00</published><updated>2008-04-18T14:08:20.152+02:00</updated><title type='text'>ELS'08: Invited talk</title><content type='html'>Details of Marco Antoniotti's keynote talk, to be presented at the 1st European Lisp Symposium 2008 in Bordeaux on May 23, 2008, are now available &lt;a href="http://prog.vub.ac.be/~pcostanza/els08/page11/page11.html "&gt;at the symposium website&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Registration is open - &lt;a href="http://prog.vub.ac.be/~pcostanza/els08/page4/page4.html"&gt;watch out for reduced fees before the early registration deadline&lt;/a&gt;!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20069114-2178111472030497167?l=p-cos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://p-cos.blogspot.com/feeds/2178111472030497167/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20069114&amp;postID=2178111472030497167' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20069114/posts/default/2178111472030497167'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20069114/posts/default/2178111472030497167'/><link rel='alternate' type='text/html' href='http://p-cos.blogspot.com/2008/04/els08-invited-talk.html' title='ELS&apos;08: Invited talk'/><author><name>Pascal Costanza</name><uri>http://www.blogger.com/profile/04512975624438301971</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://bp1.blogger.com/_DIhRAGqWubM/SBVnDJc6vsI/AAAAAAAAAAM/oWU7nSP-yzU/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20069114.post-5182333630696053209</id><published>2008-04-09T12:31:00.002+02:00</published><updated>2008-04-09T12:37:00.167+02:00</updated><title type='text'>ELS'08: Programme published, registration, and more...</title><content type='html'>We have published the list of accepted papers that will be presented at the &lt;a href="http://prog.vub.ac.be/~pcostanza/els08/"&gt;1st European Lisp Symposium (ELS 2008)&lt;/a&gt; in Bordeaux/France on May 22-23. We have papers about temporal reasoning, context-oriented programming, visual programming, object-relational mappings, clim presentation types, custom specializers for object-oriented lisp, binary methods programming in CLOS.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://prog.vub.ac.be/~pcostanza/els08/page9/page9.html"&gt;Programme of the symposium.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;We have also provided information about Bordeaux and about the social events programme accompanying the symposium. There will be a cocktail party, a dinner, and an optional excursion to the atlantic coast.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://prog.vub.ac.be/~pcostanza/els08/page7/page7.html"&gt;Information about Bordeaux, including how to reach Bordeaux by plane and by train.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://prog.vub.ac.be/~pcostanza/els08/page8/page8.html"&gt;Details about the social programme.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Registration for the symposium and for the optional excursion is open! Please take advantage of the reduced registration fees before the early registration deadline, April 25, 2008. Registering early helps us in planning the details of the symposium better. The early registration fee is 50€ for students and 120€ for regular participants.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://prog.vub.ac.be/~pcostanza/els08/page4/page4.html"&gt;The registration page.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;You have to take care of accommodation yourself. We have provided a list of recommended hotels. For some of them, accounts for symposium participants are available.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://prog.vub.ac.be/~pcostanza/els08/page10/page10.html"&gt;The list of recommended hotels.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Looking forward to seeing you in Bordeaux!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20069114-5182333630696053209?l=p-cos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://p-cos.blogspot.com/feeds/5182333630696053209/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20069114&amp;postID=5182333630696053209' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20069114/posts/default/5182333630696053209'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20069114/posts/default/5182333630696053209'/><link rel='alternate' type='text/html' href='http://p-cos.blogspot.com/2008/04/els08-programme-published-registration.html' title='ELS&apos;08: Programme published, registration, and more...'/><author><name>Pascal Costanza</name><uri>http://www.blogger.com/profile/04512975624438301971</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://bp1.blogger.com/_DIhRAGqWubM/SBVnDJc6vsI/AAAAAAAAAAM/oWU7nSP-yzU/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20069114.post-6678033839614836242</id><published>2008-03-18T23:08:00.001+01:00</published><updated>2008-03-18T23:10:08.542+01:00</updated><title type='text'>ELS'08 News!</title><content type='html'>Hi everybody,&lt;br /&gt;&lt;br /&gt;Here are some news about the upcoming &lt;a href="http://prog.vub.ac.be/~pcostanza/els08/"&gt;1st European Lisp Symposium&lt;/a&gt;, that will take place in Bordeaux/France on May 22-23, 2008.&lt;br /&gt;&lt;br /&gt;First of all, registration is now open to everybody, and you can register for the symposium and the accompanying social event at the symposium website.&lt;br /&gt;&lt;br /&gt;There is no programme yet, because the paper submissions are currently still under review. (The programme will be announced in early April.) However, Marco Antoniotti has kindly accepted an invitation to give the keynote for the symposium. More details on his keynote talk will follow soon.&lt;br /&gt;&lt;br /&gt;On a related note, the call for work-in-progress papers is still open. We have actually just extended the deadline to April 4, 2008 for submissions for this track. This is a great opportunity to get early feedback for your current projects from other researchers, practitioners and educators.&lt;br /&gt;&lt;br /&gt;Finally, we have added two pages to the website about Bordeaux in general and an optional social event that you can additionally book when you register for the symposium: A whole-day visit of the atlantic coast on the Saturday immediately after the symposium, which includes a boat trip, a seafood and white wine tasting session, a lunch, and a trip to the Great Dune of Pyla, the highest sand dune in Europe. Don't forget your swimsuit, if climbing the 107 meters of the dune invites you to dive into the ocean!&lt;br /&gt;&lt;br /&gt;More news to follow as they arrive.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20069114-6678033839614836242?l=p-cos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://p-cos.blogspot.com/feeds/6678033839614836242/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20069114&amp;postID=6678033839614836242' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20069114/posts/default/6678033839614836242'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20069114/posts/default/6678033839614836242'/><link rel='alternate' type='text/html' href='http://p-cos.blogspot.com/2008/03/els08-news.html' title='ELS&apos;08 News!'/><author><name>Pascal Costanza</name><uri>http://www.blogger.com/profile/04512975624438301971</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://bp1.blogger.com/_DIhRAGqWubM/SBVnDJc6vsI/AAAAAAAAAAM/oWU7nSP-yzU/S220/me.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20069114.post-9099195703789246222</id><published>2008-03-08T16:22:00.003+01:00</published><updated>2008-03-08T16:27:34.667+01:00</updated><title type='text'>COP in Journal of Object Technology</title><content type='html'>There is a new article about &lt;a href="http://www.jot.fm/issues/issue_2008_03/article4/"&gt;Context-oriented Programming in the Journal of Object Technology&lt;/a&gt;. &lt;br /&gt;&lt;br /&gt;It discusses context-oriented extensions for Common Lisp, Smalltalk and Java, namely &lt;a href="http://common-lisp.net/project/closer/contextl.html"&gt;ContextL&lt;/a&gt;, &lt;a href="http://www.swa.hpi.uni-potsdam.de/cop/"&gt;ContextS&lt;/a&gt; and &lt;a href="http://prog.vub.ac.be/~pcostanza/contextj.html"&gt;ContextJ&lt;/a&gt;. There is a new ContextL example presented in this article that we haven't discussed in any of the previous papers, so it should be an interesting read for ContextL users as well.&lt;br /&gt;&lt;br /&gt;As always, please feel free to send feedback and suggestions.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20069114-9099195703789246222?l=p-cos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://p-cos.blogspot.com/feeds/9099195703789246222/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20069114&amp;postID=9099195703789246222' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20069114/posts/default/9099195703789246222'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20069114/posts/default/9099195703789246222'/><link rel='alternate' type='text/html' href='http://p-cos.blogspot.com/2008/03/cop-in-journal-of-object-technology.html' title='COP in Journal of Object Technology'/><author><name>Pascal Costanza</name><uri>http://www.blogger.com/profile/04512975624438301971</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://bp1.blogger.com/_DIhRAGqWubM/SBVnDJc6vsI/AAAAAAAAAAM/oWU7nSP-yzU/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20069114.post-427835811793790865</id><published>2007-12-19T21:57:00.000+01:00</published><updated>2007-12-19T23:37:53.674+01:00</updated><title type='text'>Origin of Advice</title><content type='html'>Apparently, Gary King &lt;a href="http://metabang.com/unclogit/?p=205"&gt;needs&lt;/a&gt; &lt;a href="http://metabang.com/unclogit/?p=208"&gt;advice&lt;/a&gt; &lt;a href="http://metabang.com/unclogit/?p=212"&gt;a&lt;/a&gt; &lt;a href="http://metabang.com/unclogit/?p=216"&gt;lot&lt;/a&gt;. This reminded me that I posted an article about the origin of advice some time ago in the &lt;a href="http://aosd.net/"&gt;AOSD&lt;/a&gt; &lt;a href="http://aosd.net/mailman/listinfo/discuss_aosd.net"&gt;mailing list&lt;/a&gt;. I think it's a good idea to repost it here to make it available to others as well, so here we go. (I have links for almost all the literature references at the bottom of this article.)&lt;br /&gt;&lt;br /&gt;The notion behind advice can be traced back to a paper by Oliver Selfridge [Selfridge 1958]. He introduced the notion of &lt;i&gt;demons&lt;/i&gt; that record events as they occur, recognize patterns in those events, and can trigger subsequent events according to patterns that they care about.&lt;br /&gt;&lt;br /&gt;A first software system that was obviously heavily influenced by that paper was called PILOT and is described in Warren Teitelman's PhD thesis [Teitelman 1966]. The PhD thesis was supervised by Marvin Minsky, but additionally Warren Teitelman mentions Oliver Selfridge as a strong influence in his acknowledgements. Marvin Minsky and Oliver Selfridge worked both at MIT back then. Anyway, that is the work in which the notion of advice, very similar to before and after advice as we know them today, was actually first introduced. Warren Teitelman later added the concept of advice to BBN Lisp, which was then bought/licensed (?) by Xerox PARC and became Interlisp.&lt;br /&gt;&lt;br /&gt;Later, the notion of &lt;i&gt;demons&lt;/i&gt; was mentioned in a seminal paper by Marvin Minsky [Minsky 1974] that spawned an interest in framework-based knowledge representation systems. Among others, Daniel Bobrow and Terry Winograd developed and described KRL [Bobrow, Winograd 1976], which was based on the ideas in Marvin Minsky's paper. If I understand correctly, before/after demons played an important role in such systems.&lt;br /&gt;&lt;br /&gt;A little bit later, Howard Cannon developed Flavors at MIT, the first object-oriented extension for Lisp, strongly influenced by Alan Kay's Smalltalk. Howard Cannon had written a very influential paper [Cannon 1979-2003] that was, unfortunately, never officially published. He explicitly mentions before/after demons, as do other publications about Flavors, for example [Weinreb, Moon 1980].&lt;br /&gt;&lt;br /&gt;I have a copy of Howard Cannon's paper availabe, and I have asked him to make it publicly available, but he still hasn't done this (yet). His is a mind-blowing paper that introduces multiple inheritance, method combinations based on macros - i.e. before and after demons and a first precursor to around methods -, and the notion of meta-protocols that obviously later on turned into metaobject protocols.&lt;br /&gt;&lt;br /&gt;The experiences with KRL and Flavors had then been integrated at Xerox PARC into LOOPS (&lt;i&gt;Lisp Object-Oriented Programming System&lt;/i&gt;), foremostly by Daniel Bobrow and Mark Stefik, implemented in Interlisp. There is a nice &lt;a href="http://www2.parc.com/istl/members/stefik/loops.html"&gt;overview page about LOOPS&lt;/a&gt; and a &lt;a href="http://www2.parc.com/istl/groups/hdi/hdipublications.shtml"&gt;download page for the papers mentioned there&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Flavors and LOOPS were chosen as the main bases for the &lt;a href="http://www.dreamsongs.com/CLOS.html"&gt;Common Lisp Object System&lt;/a&gt; (CLOS) as part of the ANSI standardization of Common Lisp. CLOS was developed by representatives of the various existing object-oriented extensions for Lisp. LOOPS / Xerox PARC was represented by Daniel Bobrow and Gregor Kiczales. This was around 1986 - 1988.&lt;br /&gt;&lt;br /&gt;CLOS has before/after/around methods. I haven't been able to spot when around methods entered the scene, whether this was already part of LOOPS or whether this was an addition in CLOS. In Flavors, there were only before/after methods, but there was an extra concept called &lt;i&gt;wrappers&lt;/i&gt; that effectively allowed one to express the same thing as around methods in CLOS.&lt;br /&gt;&lt;br /&gt;One of the most impressive outcomes of the efforts behind LOOPS and CLOS is the book &lt;i&gt;The Art of the Metaobject Protocol&lt;/i&gt; [Kiczales, des Rivières, Bobrow 1991], which I think is one of the most important books in the history of computer science (&lt;a href="http://bc.tech.coop/blog/060224.html"&gt;and Alan Kay seems to agree&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;Crista Lopes' paper [Lopes 2002] describes the subsequent history how metaobject protocols were turned into what we think of as aspect-oriented programming today. The main motivations, as far as I understand them, were a) to move from a runtime-based approach, which is natural for metaobject protocols, towards a compile-time based approach and b) to make some of the benefits of being able to manipulate the meta-level available to purely base-level code. Advice play an important role in aspect-oriented programming, but instead of advising just single functions, you can advise whole &lt;i&gt;pointcuts&lt;/i&gt;, which are essentially sets of functions described in (more or less) declarative ways.&lt;br /&gt;&lt;br /&gt;Robert Hirschfeld, myself and others have taken a different turn with &lt;i&gt;Context-oriented Programming&lt;/i&gt;, and focus on a more dynamic approach again. We have taken the idea of crosscutting concerns that emerged in the AOSD community, but dropped the idea of pointcuts, and instead concentrated on new and interesting ways to dynamically activate and deactivate &lt;i&gt;layers&lt;/i&gt;, which are potentially crosscutting behavioral program variations. Since you can add new layers at any point in time, you can also effectively add new levels of before/after/around methods at runtime as needed, something that can be achieved in plain CLOS only statically through new user-defined method combinations, or requires recompilation in aspect-oriented language extensions like AspectJ. Here are some links for Context-oriented Programming:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.swa.hpi.uni-potsdam.de/cop/"&gt;Context-oriented Programming at Hasso-Plattner Institut&lt;/a&gt;.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://p-cos.net/research.html"&gt;My research page with sections on ContextL and Context-oriented Programming&lt;/a&gt;.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://common-lisp.net/project/closer/contextl.html"&gt;The ContextL project page&lt;/a&gt;.&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;I agree that advice are an important concept in programming, but we have still not seen all the possible and interesting variations yet. Although they have a long history already, there is still a future ahead for them.&lt;br /&gt;&lt;br /&gt;&lt;h4&gt;References&lt;/h4&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;[Bobrow, Winograd 1976] Daniel Bobrow and Terry Winograd, &lt;a href="http://www-db.stanford.edu/TR/CS-TR-76-581.html"&gt;An Overview of KRL, A Knowledge Representation Language&lt;/a&gt;.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;[Cannon 1979-2003] Howard Cannon, &lt;i&gt;Flavors - A Non-Hierarchical Approach to Object-Oriented Programming&lt;/i&gt;. Unpublished draft.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;[Kiczales, des Rivières, Bobrow 1991] Gregor Kiczales, Jim des Rivières, Daniel G. Bobrow, &lt;a href="http://books.google.com/books?id=3X5Gnudn3k0C&amp;printsec=frontcover"&gt;The Art of the Metaobject Protocol&lt;/a&gt;, MIT Press, 1991.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;[Lopes 2002] Cristina Videira Lopes, &lt;a href="http://www.isr.uci.edu/tech_reports/UCI-ISR-02-5.pdf"&gt;AOP: A Historical Perspective&lt;/a&gt;.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;[Minsky 1974] Marvin Minsky, &lt;a href="ftp://publications.ai.mit.edu/ai-publications/pdf/AIM-306.pdf"&gt;A Framework for Representing Knowledge&lt;/a&gt;.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;[Selfridge 1958] Oliver G. Selfridge, Pandemonium, &lt;i&gt;Mechanization of Though Processes: Proceedings of a Symposium held at the National Physics Laboratory on 24-27 Nov. 1958, volume I.&lt;/i&gt;, (NPL Symposium no. 10, HMSO, 1959).&lt;/li&gt;&lt;br /&gt;&lt;li&gt;[Teitelman 1966] Warren Teitelman, &lt;a href="ftp://publications.ai.mit.edu/ai-publications/pdf/AITR-221.pdf"&gt;PILOT: A Step Toward Man-Computer Symbiosis&lt;/a&gt;.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;[Weinreb, Moon 1980] Daniel Weinreb and David Moon, &lt;a href="ftp://publications.ai.mit.edu/ai-publications/pdf/AIM-602.pdf"&gt;Flavors: Message Passing in the Lisp Machine&lt;/a&gt;.&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20069114-427835811793790865?l=p-cos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://p-cos.blogspot.com/feeds/427835811793790865/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20069114&amp;postID=427835811793790865' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20069114/posts/default/427835811793790865'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20069114/posts/default/427835811793790865'/><link rel='alternate' type='text/html' href='http://p-cos.blogspot.com/2007/12/origin-of-advice.html' title='Origin of Advice'/><author><name>Pascal Costanza</name><uri>http://www.blogger.com/profile/04512975624438301971</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://bp1.blogger.com/_DIhRAGqWubM/SBVnDJc6vsI/AAAAAAAAAAM/oWU7nSP-yzU/S220/me.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20069114.post-134915469230625869</id><published>2007-12-19T21:25:00.000+01:00</published><updated>2007-12-19T21:36:38.905+01:00</updated><title type='text'>Reflection in Potsdam</title><content type='html'>Charlotte Herzeel and I had been invited by Robert Hirschfeld to give presentations at the &lt;a href="http://www.hpi.uni-potsdam.de/"&gt;Hasso-Plattner-Institut&lt;/a&gt; in Potsdam, Germany about the CLOS Metaobject Protocol and 3-Lisp about two weeks ago. These presentations have been recorded and are now online for your viewing pleasure:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Pascal Costanza, &lt;a href="http://www.tele-task.de/page50_lecture3352.html"&gt;The CLOS Metaobject Protocol&lt;/a&gt; (in German)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Charlotte Herzeel, &lt;a href="http://www.tele-task.de/page50_lecture3353.html"&gt;Reflecting on 3-Lisp&lt;/a&gt; (in English)&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;You need &lt;a href="http://www.real.com/"&gt;RealPlayer&lt;/a&gt; to see this.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20069114-134915469230625869?l=p-cos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://p-cos.blogspot.com/feeds/134915469230625869/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20069114&amp;postID=134915469230625869' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20069114/posts/default/134915469230625869'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20069114/posts/default/134915469230625869'/><link rel='alternate' type='text/html' href='http://p-cos.blogspot.com/2007/12/reflection-in-potsdam.html' title='Reflection in Potsdam'/><author><name>Pascal Costanza</name><uri>http://www.blogger.com/profile/04512975624438301971</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://bp1.blogger.com/_DIhRAGqWubM/SBVnDJc6vsI/AAAAAAAAAAM/oWU7nSP-yzU/S220/me.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20069114.post-3006053284074370324</id><published>2007-12-10T23:19:00.000+01:00</published><updated>2007-12-10T23:22:01.322+01:00</updated><title type='text'>European Lisp Symposium mentioned in Linux Magazin</title><content type='html'>The &lt;a href="http://prog.vub.ac.be/~pcostanza/els08/"&gt;1st European Lisp Symposium&lt;/a&gt; is mentioned in &lt;a href="http://www.linux-magazin.de/news/cfp_fuer_erstes_european_lisp_symposium"&gt;Linux Magazin online&lt;/a&gt; (in German language).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20069114-3006053284074370324?l=p-cos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://p-cos.blogspot.com/feeds/3006053284074370324/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20069114&amp;postID=3006053284074370324' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20069114/posts/default/3006053284074370324'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20069114/posts/default/3006053284074370324'/><link rel='alternate' type='text/html' href='http://p-cos.blogspot.com/2007/12/european-lisp-symposium-mentioned-in.html' title='European Lisp Symposium mentioned in Linux Magazin'/><author><name>Pascal Costanza</name><uri>http://www.blogger.com/profile/04512975624438301971</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://bp1.blogger.com/_DIhRAGqWubM/SBVnDJc6vsI/AAAAAAAAAAM/oWU7nSP-yzU/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20069114.post-7366232337422043479</id><published>2007-12-06T08:54:00.000+01:00</published><updated>2007-12-06T09:11:43.527+01:00</updated><title type='text'>European Lisp Symposium 2008 - Call for Papers</title><content type='html'>&lt;a href="http://prog.vub.ac.be/~pcostanza/els08"&gt;1st European Lisp Symposium&lt;/a&gt;&lt;br&gt;&lt;br /&gt;Bordeaux, France, May 22-23, 2008&lt;br&gt;&lt;br /&gt;LaBRI, Université Bordeaux 1&lt;br&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Important Dates&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Submission of research papers: February 11, 2008&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Work-in-progress papers: March 24, 2008&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Author notification: April 7, 2008&lt;/li&gt;&lt;br /&gt;&lt;li&gt;First final versions due: April 28, 2008&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;Accepted research papers will be invited for a special issue of the &lt;a href="http://www.jucs.org/"&gt;Journal of Universal Computer Science&lt;/a&gt; (J.UCS). See &lt;a href="http://prog.vub.ac.be/~pcostanza/els08"&gt;the symposium website&lt;/a&gt; for more details.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Scope&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The European Lisp Symposium 2008 invites high quality papers about novel research results, insights and lessons learned from practical applications, and educational perspectives, all involving Lisp dialects, including Common Lisp, Scheme, ISLISP, Dylan, and so on.&lt;br /&gt;&lt;br /&gt;Topics include, but are not limited to:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Language design and implementation techniques&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Language integration, interoperation and deployment&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Experience reports and case studies&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Reflection and meta-level architectures&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Educational approaches&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Software adaptation and evolution&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Configuration management&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Artificial intelligence&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Large and ultra-large-scale systems&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Development methodologies&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Development support and environments&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Persistent systems&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Scientific computing&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Parallel and distributed computing&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Data mining&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Semantic web&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Dynamic optimization&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Innovative applications&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Hardware and virtual machine support&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Domain-oriented programming&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;We also encourage submissions about past approaches that have been largely forgotten about, as long as they are presented in a new setting.&lt;br /&gt;&lt;br /&gt;We invite submissions in two categories:&lt;br /&gt;original contributions and work-in-progress papers.&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Original contributions have neither been published previously nor are under review by other refereed events or publications. Research papers should describe work that advances the current state of the art, or presents old results from a new perspective. Experience papers should be of broad interest and should describe insights gained from substantive practical applications. The program committee will evaluate each contributed paper based on its relevance, significance, clarity, and originality.&lt;br /&gt;&lt;br /&gt;Accepted papers will be published in the Journal of Universal Computer Science (J.UCS). Authors of accepted papers are expected to present their work at the symposium main track in Bordeaux on May 23, 2008.&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;Work in progress describes ongoing work that is not ready for publication yet, but would benefit strongly from feedback by other researchers, practitioners and educators. Such contributions will not be published in the symposium proceedings, but will be made available at the symposium website. The work-in-progress track will be organized as a series of writers' workshops where authors work together to improve their papers. Some authors who submit papers for the main track will be suggested to contribute their work in this track instead, if the program committee decides that their submission is not yet ready for a publication.&lt;br /&gt;&lt;br /&gt;The writers' workshops will take place at the symposium in Bordeaux on May 22, 2008.&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Submissions&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Papers for the main track must be submitted electronically, preferably as PDF or PostScript file (level 1 or 2). However, submissions in RTF or Word format are also accepted. Initial submissions may not exceed 15 pages in the J.UCS style, including all appendices. (Invited papers for the journal publication will have a page limitation of 25 pages in the same format.) See the symposium website for more details, including about the submission procedure.&lt;br /&gt;&lt;br /&gt;Papers for the work-in-progress track may be in PDF, PostScript level 1 or 2, RTF or Word, and may not exceed 25 pages. There are no further requirements on their format. Papers for the work-in-progress track must be sent via email to pascal.costanza@vub.ac.be.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Program Chair&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Pascal Costanza, Vrije Universiteit Brussel, Belgium&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Program Committee&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Marco Antoniotti, Universita Milano Bicocca, Italy&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Marie Beurton-Aimar, Université Bordeaux 1, France&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Jerry Boetje, College of Charlston, USA&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Theo D'Hondt, Vrije Universiteit Brussel, Belgium&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Irène Durand, Université Bordeaux 1, France&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Marc Feeley, Université de Montréal, Canada&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Erick Gallesio, Universite de Nice / Sophia Antipolis, France&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Rainer Joswig, Independent Consultant, Germany&lt;/li&gt;&lt;br /&gt;&lt;li&gt;António Leitão, Technical University of Lisbon, Portugal&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Henry Lieberman, MIT, USA&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Scott McKay, ITA Software, Inc., USA&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Ralf Möller, Hamburg University of Technology, Germany&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Nicolas Neuss, Universität Karlsruhe, Germany&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Kent Pitman, PTC, USA&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Christophe Rhodes, Goldsmiths College, University of London, United Kingdom&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Jeffrey Mark Siskind, Purdue University, USA&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Didier Verna, EPITA Research and Development Laboratory, France&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20069114-7366232337422043479?l=p-cos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://p-cos.blogspot.com/feeds/7366232337422043479/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20069114&amp;postID=7366232337422043479' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20069114/posts/default/7366232337422043479'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20069114/posts/default/7366232337422043479'/><link rel='alternate' type='text/html' href='http://p-cos.blogspot.com/2007/12/european-lisp-symposium-2008-call-for.html' title='European Lisp Symposium 2008 - Call for Papers'/><author><name>Pascal Costanza</name><uri>http://www.blogger.com/profile/04512975624438301971</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://bp1.blogger.com/_DIhRAGqWubM/SBVnDJc6vsI/AAAAAAAAAAM/oWU7nSP-yzU/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20069114.post-5152350070915772056</id><published>2007-11-03T18:43:00.000+01:00</published><updated>2007-11-03T19:58:11.682+01:00</updated><title type='text'>Lisp success story from Hungary</title><content type='html'>&lt;span style="font-style:italic;"&gt;[Levente Mészáros posted the following Lisp success story to comp.lang.lisp. I reproduce it here with kind permission so that it is also available as a blog entry. In other words, the following is not written by me, but by Levy.]&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;We are a small group of friends (3-5) who left the "professional" programming scene about one and a half year ago to start our own Lisp business.&lt;br /&gt;&lt;br /&gt;In July, 2007 we started working on a project for the Hungarian government with a very tight deadline. In mid October the system showed first life signs and now we can say it is extensively used by thousands of users. In spite of the short timeframe and the remaining glitches it was a surprise even for us that the system is able to handle such a load.&lt;br /&gt;&lt;br /&gt;Unfortunately the application is not publicly accessible, so we can't provide a URL, but we can give some of the details. It is used for gathering data from the Hungarian communes to help the budget planning.&lt;br /&gt;&lt;br /&gt;The entire system is based on opensource software, it runs on multiple SBCLs behind an apache load balancer. The data is stored in a PostgreSQL server.&lt;br /&gt;&lt;br /&gt;We have around 4000 registered users, average 300 online and more than 500 at peak times. There are 7000-10000 logins per day.&lt;br /&gt;&lt;br /&gt;We use the following Common Lisp libraries. Some of which are ours and some of which are built by others. Many thanks for their efforts, especially to the SBCL developers!&lt;br /&gt;&lt;br /&gt; &lt;span style="font-weight:bold;"&gt;Data storage/persistence&lt;/span&gt;&lt;br /&gt;   - &lt;a href="http://common-lisp.net/project/cl-perec/"&gt;cl-perec&lt;/a&gt;&lt;br /&gt;   - &lt;a href="http://common-lisp.net/project/cl-rdbms/"&gt;cl-rdbms&lt;/a&gt;&lt;br /&gt;   - cl-postgres (&lt;a href="http://common-lisp.net/project/postmodern/"&gt;postmodern&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt; &lt;span style="font-weight:bold;"&gt;Web GUI&lt;/span&gt;&lt;br /&gt;   - &lt;a href="http://common-lisp.net/project/cl-dwim/"&gt;cl-dwim&lt;/a&gt; (the umbrella project)&lt;br /&gt;   - &lt;a href="http://common-lisp.net/project/ucw/"&gt;UCW&lt;/a&gt;&lt;br /&gt;   - &lt;a href="http://common-lisp.net/project/bese/yaclml.html"&gt;yaclml&lt;/a&gt;&lt;br /&gt;   - &lt;a href="http://common-lisp.net/project/parenscript/"&gt;parenscript&lt;/a&gt;&lt;br /&gt;   - &lt;a href="http://common-lisp.net/projects.shtml"&gt;rfc*&lt;/a&gt;&lt;br /&gt;&lt;br /&gt; &lt;span style="font-weight:bold;"&gt;PDF exporting&lt;/span&gt;&lt;br /&gt;   - &lt;a href="http://www.fractalconcept.com/asp/html/cl-pdf.html"&gt;cl-pdf&lt;/a&gt;&lt;br /&gt;   - &lt;a href="http://www.fractalconcept.com/asp/html/cl-typesetting.html"&gt;cl-typesetting&lt;/a&gt;&lt;br /&gt;&lt;br /&gt; &lt;span style="font-weight:bold;"&gt;Unit testing&lt;/span&gt;&lt;br /&gt;   - &lt;a href="http://common-lisp.net/project/stefil/"&gt;stefil&lt;/a&gt;&lt;br /&gt;   - &lt;a href="http://common-lisp.net/project/slime/"&gt;SLIME&lt;/a&gt; and emacs with customizations&lt;br /&gt;&lt;br /&gt; &lt;span style="font-weight:bold;"&gt;MOP&lt;/span&gt;&lt;br /&gt;   - &lt;a href="http://common-lisp.net/project/computed-class/"&gt;computed-class&lt;/a&gt;&lt;br /&gt;   - &lt;a href="http://common-lisp.net/project/closer/contextl.html"&gt;contextl&lt;/a&gt;&lt;br /&gt;&lt;br /&gt; &lt;span style="font-weight:bold;"&gt;Misc&lt;/span&gt;&lt;br /&gt;   - &lt;a href="http://common-lisp.net/project/cl-containers/metabang.bind/"&gt;bind&lt;/a&gt;&lt;br /&gt;   - &lt;a href="http://common-lisp.net/project/alexandria/"&gt;alexandria&lt;/a&gt;&lt;br /&gt;   - &lt;a href="http://common-lisp.net/project/iterate/"&gt;iterate&lt;/a&gt;&lt;br /&gt;   - &lt;a href="http://common-lisp.net/project/cl-def/"&gt;cl-def&lt;/a&gt;&lt;br /&gt;   - &lt;a href="http://common-lisp.net/project/cl-l10n/"&gt;cl-l10n&lt;/a&gt;&lt;br /&gt;   - &lt;a href="http://common-lisp.net/project/cl-graphviz/"&gt;cl-graphviz&lt;/a&gt;&lt;br /&gt;   - &lt;a href="http://common-lisp.net/project/cl-serializer/"&gt;cl-serializer&lt;/a&gt;&lt;br /&gt;   - &lt;a href="http://common-lisp.net/project/defclass-star/"&gt;defclass-star&lt;/a&gt;&lt;br /&gt;   - &lt;a href="http://common-lisp.net/project/local-time/"&gt;local-time&lt;/a&gt;&lt;br /&gt;   - &lt;a href="http://common-lisp.net/project/cffi/"&gt;cffi&lt;/a&gt;&lt;br /&gt;   - &lt;a href="http://common-lisp.net/~loliveira/soc07/babel/"&gt;babel&lt;/a&gt;&lt;br /&gt;   - &lt;a href="http://common-lisp.net/project/fetter/"&gt;verrazano&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;and more...&lt;br /&gt;&lt;br /&gt;Main software components:&lt;br /&gt; - Ubuntu linux 6.10&lt;br /&gt; - PostgreSQL 8.2&lt;br /&gt; - SBCL 1.0.10&lt;br /&gt; - Apache2 (due to various headaches soon to be replaced by a lisp based load balancer)&lt;br /&gt;&lt;br /&gt;Hardware:&lt;br /&gt; - 10 nodes with two dual core x86-64 CPUs summing up to 40 cores altogether, each node has 3 Gbytes ram.&lt;br /&gt; - Currently we use one of the nodes as database server but soon it will be replaced with another server with 2 or 4 quad core x86-64 CPUs, 300 GByte disk in raid 5 and 16 GBytes ram.&lt;br /&gt;&lt;br /&gt;Some people say Lisp is dead but seems like there's life after death... ;-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20069114-5152350070915772056?l=p-cos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://p-cos.blogspot.com/feeds/5152350070915772056/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20069114&amp;postID=5152350070915772056' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20069114/posts/default/5152350070915772056'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20069114/posts/default/5152350070915772056'/><link rel='alternate' type='text/html' href='http://p-cos.blogspot.com/2007/11/levente-mszros-posted-following-lisp.html' title='Lisp success story from Hungary'/><author><name>Pascal Costanza</name><uri>http://www.blogger.com/profile/04512975624438301971</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://bp1.blogger.com/_DIhRAGqWubM/SBVnDJc6vsI/AAAAAAAAAAM/oWU7nSP-yzU/S220/me.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20069114.post-5476756633964167688</id><published>2007-09-03T14:30:00.001+02:00</published><updated>2007-09-03T14:32:03.486+02:00</updated><title type='text'>ContextL Survey September 2007</title><content type='html'>Context-dependent behavior is becoming increasingly important for a wide range of application domains. Unfortunately, mainstream programming languages do not provide mechanisms that enable software entities to adapt their behavior dynamically to the current execution context. In collaboration with various researchers, we have developed a new programming technique called "Context-oriented Programming" (COP).&lt;br /&gt;&lt;br /&gt;&lt;a href="http://common-lisp.net/project/closer/contextl.html"&gt;ContextL&lt;/a&gt; is our first fully implemented and currently most mature programming language extension for COP and is built on top of the Common Lisp Object System (CLOS). ContextL has first been made available to the public in early 2005, and has already been adopted by a number of programmers. We would now like to assess how well ContextL has been received so far.&lt;br /&gt;&lt;br /&gt;Please consider participating in our first survey about ContextL - this will help us a lot to develop ContextL and related projects further (like Closer to MOP, etc.).&lt;br /&gt;&lt;br /&gt;You can find the survey and more information about it at &lt;a href="http://prog.vub.ac.be/~pcostanza/COP/survey.html"&gt;http://prog.vub.ac.be/~pcostanza/COP/survey.html&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20069114-5476756633964167688?l=p-cos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://p-cos.blogspot.com/feeds/5476756633964167688/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20069114&amp;postID=5476756633964167688' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20069114/posts/default/5476756633964167688'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20069114/posts/default/5476756633964167688'/><link rel='alternate' type='text/html' href='http://p-cos.blogspot.com/2007/09/contextl-survey-september-2007.html' title='ContextL Survey September 2007'/><author><name>Pascal Costanza</name><uri>http://www.blogger.com/profile/04512975624438301971</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://bp1.blogger.com/_DIhRAGqWubM/SBVnDJc6vsI/AAAAAAAAAAM/oWU7nSP-yzU/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20069114.post-1945463472988458617</id><published>2007-07-26T13:20:00.000+02:00</published><updated>2007-07-26T17:43:32.074+02:00</updated><title type='text'>ECOOP'07 Lisp Dinner</title><content type='html'>As a social event attached to the &lt;a href="http://lisp-ecoop07.bknr.net/"&gt;4th European Lisp Workshop&lt;/a&gt;, we are planning to have a dinner on Monday, the 30th of July in Berlin, starting at 19:30 hours.  We have not yet decided what the location will be, and this depends on how many people will participate.  The dinner will be open to anyone.&lt;br /&gt;&lt;br /&gt;If you want to attend, please send a short email notice to &lt;a href="mailto:hans@lisp-ecoop07.bknr.net"&gt;Hans Hübner&lt;/a&gt;.  Also let him know if you have special dinner needs or wishes.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20069114-1945463472988458617?l=p-cos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://p-cos.blogspot.com/feeds/1945463472988458617/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20069114&amp;postID=1945463472988458617' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20069114/posts/default/1945463472988458617'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20069114/posts/default/1945463472988458617'/><link rel='alternate' type='text/html' href='http://p-cos.blogspot.com/2007/07/ecoop07-lisp-dinner.html' title='ECOOP&apos;07 Lisp Dinner'/><author><name>Pascal Costanza</name><uri>http://www.blogger.com/profile/04512975624438301971</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://bp1.blogger.com/_DIhRAGqWubM/SBVnDJc6vsI/AAAAAAAAAAM/oWU7nSP-yzU/S220/me.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20069114.post-1940331109490132428</id><published>2007-06-28T17:08:00.000+02:00</published><updated>2007-06-28T17:10:50.461+02:00</updated><title type='text'>Lisp meeting in The Hague this Sunday</title><content type='html'>I am forwarding this announcement from Tayssir John Gabbour:&lt;br /&gt;&lt;br /&gt;We're hosting a Lisp meeting in The Hague this Sunday. At least ten&lt;br /&gt;people should be here, with a broad range of experiences and&lt;br /&gt;interests.&lt;br /&gt;&lt;br /&gt;For those interested in Lisp businesses, this meeting will be at the&lt;br /&gt;offices of a growing Lisp-using company which already has multiple&lt;br /&gt;commercial projects. You'll be able to see up-close what sorts of&lt;br /&gt;issues arise. I personally hope that these meetings won't just be&lt;br /&gt;episodic affairs, but offer a practical service to interested Lisp&lt;br /&gt;users.&lt;br /&gt;&lt;br /&gt;To counterbalance boring business issues, Pascal Costanza is offering&lt;br /&gt;an entertainingly philosophical talk about the history of reflection&lt;br /&gt;and metaprogramming in the Lisp family. (If you were ever curious what&lt;br /&gt;3-Lisp and its "infinite reflective tower" is all about, you'll no&lt;br /&gt;doubt find this interesting.)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;This is an informal meeting, so no registration is needed: feel free&lt;br /&gt;to come as you wish, and I hope you enjoy it. If you need directions&lt;br /&gt;or a hotel room, there's more info at: &lt;a href="http://wiki.alu.org/BeNeLux"&gt;http://wiki.alu.org/BeNeLux&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Tayssir&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20069114-1940331109490132428?l=p-cos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://p-cos.blogspot.com/feeds/1940331109490132428/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20069114&amp;postID=1940331109490132428' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20069114/posts/default/1940331109490132428'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20069114/posts/default/1940331109490132428'/><link rel='alternate' type='text/html' href='http://p-cos.blogspot.com/2007/06/lisp-meeting-in-hague-this-sunday.html' title='Lisp meeting in The Hague this Sunday'/><author><name>Pascal Costanza</name><uri>http://www.blogger.com/profile/04512975624438301971</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://bp1.blogger.com/_DIhRAGqWubM/SBVnDJc6vsI/AAAAAAAAAAM/oWU7nSP-yzU/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20069114.post-343480458680277480</id><published>2007-06-25T17:56:00.000+02:00</published><updated>2007-06-25T17:58:20.647+02:00</updated><title type='text'>AMOP at Google Book Search</title><content type='html'>While checking some links for my previous posting I have found out that Google Book Search provides the full text of &lt;a href="http://books.google.com/books?id=3X5Gnudn3k0C&amp;printsec=frontcover"&gt;The Art of Metaobject Protocol&lt;/a&gt; online. That's nice.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20069114-343480458680277480?l=p-cos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://p-cos.blogspot.com/feeds/343480458680277480/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20069114&amp;postID=343480458680277480' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20069114/posts/default/343480458680277480'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20069114/posts/default/343480458680277480'/><link rel='alternate' type='text/html' href='http://p-cos.blogspot.com/2007/06/amop-at-google-book-search.html' title='AMOP at Google Book Search'/><author><name>Pascal Costanza</name><uri>http://www.blogger.com/profile/04512975624438301971</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://bp1.blogger.com/_DIhRAGqWubM/SBVnDJc6vsI/AAAAAAAAAAM/oWU7nSP-yzU/S220/me.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20069114.post-5949464870029662641</id><published>2007-06-25T12:02:00.000+02:00</published><updated>2007-06-25T17:56:19.377+02:00</updated><title type='text'>Classes in the Metaobject Protocol</title><content type='html'>Dr. Dobb's Portal has republished another classic Lisp article, again by Nick Bourbaki (&lt;a href="http://p-cos.blogspot.com/2007/06/dr-dobbs-classic-lisp-articles.html"&gt;a pseudonym of Richard Gabriel&lt;/a&gt;). It's an introduction to the &lt;a href="http://www.ddj.com/dept/ai/200000266"&gt;CLOS Metaobject Protocol&lt;/a&gt; which is more technical than others I have read - so may be harder to understand for newbies - but at the same time provides more insight into some of the internal details of the CLOS MOP. Although this is an old article, it's very close to the actual CLOS MOP specification, with only one serious deviation as far as I can tell. The deviation is the fact that slot-value-using-class is specialized on slot names in that article, while they are actually specialized on slot definition metaobjects in the "real" &lt;a href="http://www.lisp.org/mop/"&gt;CLOS MOP specification&lt;/a&gt;. The reason for this deviation is that for most of the time during the standardization of CLOS and its MOP, slot-value-using-class was indeed supposed to be specialized on slot names (like &lt;a href="http://www.lispworks.com/documentation/HyperSpec/Body/f_slt_un.htm"&gt;slot-unbound&lt;/a&gt; and &lt;a href="http://www.lispworks.com/documentation/HyperSpec/Body/f_slt_mi.htm"&gt;slot-missing&lt;/a&gt; in ANSI Common Lisp), but that was changed only very late in the game before publication of &lt;a href="http://www.amazon.com/Art-Metaobject-Protocol-Gregor-Kiczales/dp/0262610744"&gt;The Art of the Metaobject Protocol&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Anyway, the information in that article is still valid, so I can recommend it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20069114-5949464870029662641?l=p-cos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://p-cos.blogspot.com/feeds/5949464870029662641/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20069114&amp;postID=5949464870029662641' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20069114/posts/default/5949464870029662641'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20069114/posts/default/5949464870029662641'/><link rel='alternate' type='text/html' href='http://p-cos.blogspot.com/2007/06/classes-in-metaobject-protocol.html' title='Classes in the Metaobject Protocol'/><author><name>Pascal Costanza</name><uri>http://www.blogger.com/profile/04512975624438301971</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://bp1.blogger.com/_DIhRAGqWubM/SBVnDJc6vsI/AAAAAAAAAAM/oWU7nSP-yzU/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20069114.post-8883654788337362490</id><published>2007-06-03T16:28:00.001+02:00</published><updated>2007-06-03T16:53:50.482+02:00</updated><title type='text'>Dr. Dobb's Classic Lisp Articles</title><content type='html'>Recently, I have noticed that the online version of Dr. Dobb's Journal published &lt;a href="http://www.ddj.com/dept/64bit/199702507"&gt;an article about multitasking in Common Lisp&lt;/a&gt;. What was weird to me was that it reads like a rather old article mentioning techniques that, if I understand correctly, were popular in the 1980's, and especially mentioning a Common Lisp implementation that has not been maintained for probably over a decade. So I asked around in comp.lang.lisp whether anyone had an idea what this was about.&lt;br /&gt;&lt;br /&gt;Surprisingly, Jon Erickson, editor of Dr. Dobb's Journal, &lt;a href="http://groups.google.com/group/comp.lang.lisp/msg/6173fb0caa06150c"&gt;responded to that question&lt;/a&gt; and explained that they routinely get requests for classic articles that are 15-20 years old, and so they indeed regularly republish such articles from the past. Since they are responsible for the archives of a number of publications, such as AI Expert, C/C++ Users Journal, BYTE, and Computer Language, there are probably quite a few nuggets to be rediscovered here.&lt;br /&gt;&lt;br /&gt;For example, earlier this year they have already published an article by Paul Graham about &lt;a href="http://www.ddj.com/dept/architect/199204122"&gt;graphic objects&lt;/a&gt;, originally from 1988. Just yesterday, they have published a very interesting article by Nick Bourbaki about &lt;a href="http://www.ddj.com/dept/ai/199900470"&gt;dynamic programming&lt;/a&gt;. Nick Bourbaki is actually Richard Gabriel's pseudonym that he used in some of his writings in the early 1990's - see &lt;a href="http://www.dreamsongs.com/WorseIsBetter.html"&gt;Worse Is Better&lt;/a&gt; and also &lt;a href="http://www.dreamsongs.com/Nickieben.html"&gt;Nickieben Bourbaki&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20069114-8883654788337362490?l=p-cos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://p-cos.blogspot.com/feeds/8883654788337362490/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20069114&amp;postID=8883654788337362490' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20069114/posts/default/8883654788337362490'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20069114/posts/default/8883654788337362490'/><link rel='alternate' type='text/html' href='http://p-cos.blogspot.com/2007/06/dr-dobbs-classic-lisp-articles.html' title='Dr. Dobb&apos;s Classic Lisp Articles'/><author><name>Pascal Costanza</name><uri>http://www.blogger.com/profile/04512975624438301971</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://bp1.blogger.com/_DIhRAGqWubM/SBVnDJc6vsI/AAAAAAAAAAM/oWU7nSP-yzU/S220/me.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20069114.post-4210720647603186038</id><published>2007-05-17T15:12:00.000+02:00</published><updated>2007-05-17T15:18:20.628+02:00</updated><title type='text'>European Lisp Workshop '07 - news</title><content type='html'>As already announced, this year's &lt;a href="http://lisp-ecoop07.bknr.net/"&gt;European Lisp Workshop&lt;/a&gt; will be held in Berlin on July 30, again in conjunction with &lt;a href="http://2007.ecoop.org/"&gt;ECOOP&lt;/a&gt;. There are two noteworthy news items:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;We are happy to announce that &lt;a href="http://lisp-ecoop07.bknr.net/profile/5802"&gt;Alexander Repenning&lt;/a&gt; will be giving a keynote presentation about &lt;a href="http://lisp-ecoop07.bknr.net/submission/5881"&gt;Antiobjects: Mapping Game AI to Massively Parallel Architectures using Collaborative Diffusion&lt;/a&gt;.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;The submission deadline for papers, essays and breakout group proposals has been extended to May 31. Notifications of acceptance will be sent out on June 8, one week before the early registration deadline.&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;See the &lt;a href="http://lisp-ecoop07.bknr.net/"&gt;workshop website&lt;/a&gt; for more information.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20069114-4210720647603186038?l=p-cos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://p-cos.blogspot.com/feeds/4210720647603186038/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20069114&amp;postID=4210720647603186038' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20069114/posts/default/4210720647603186038'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20069114/posts/default/4210720647603186038'/><link rel='alternate' type='text/html' href='http://p-cos.blogspot.com/2007/05/european-lisp-workshop-07-news.html' title='European Lisp Workshop &apos;07 - news'/><author><name>Pascal Costanza</name><uri>http://www.blogger.com/profile/04512975624438301971</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://bp1.blogger.com/_DIhRAGqWubM/SBVnDJc6vsI/AAAAAAAAAAM/oWU7nSP-yzU/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20069114.post-2333554932577431590</id><published>2007-04-24T19:49:00.000+02:00</published><updated>2007-04-24T19:52:26.270+02:00</updated><title type='text'>ELW'07</title><content type='html'>There will be a new instance of the European Lisp Workshop at &lt;a href="http://2007.ecoop.org/"&gt;ECOOP 2007&lt;/a&gt; in Berlin, Germany on July 30. The deadline for submission of long papers, short essays and/or proposals for breakout groups is May 13. Please see the &lt;a href="http://lisp-ecoop07.bknr.net/"&gt;ELW'07&lt;/a&gt; website for more information.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20069114-2333554932577431590?l=p-cos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://p-cos.blogspot.com/feeds/2333554932577431590/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20069114&amp;postID=2333554932577431590' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20069114/posts/default/2333554932577431590'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20069114/posts/default/2333554932577431590'/><link rel='alternate' type='text/html' href='http://p-cos.blogspot.com/2007/04/elw07.html' title='ELW&apos;07'/><author><name>Pascal Costanza</name><uri>http://www.blogger.com/profile/04512975624438301971</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://bp1.blogger.com/_DIhRAGqWubM/SBVnDJc6vsI/AAAAAAAAAAM/oWU7nSP-yzU/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20069114.post-8884474845392304237</id><published>2007-04-24T19:33:00.000+02:00</published><updated>2007-04-24T19:35:17.583+02:00</updated><title type='text'>Reflective Layer Activation in ContextL</title><content type='html'>I have just uploaded the paper &lt;a href="http://p-cos.net/documents/context-meta.pdf"&gt;Reflective Layer Activation in ContextL&lt;/a&gt; to my website that we have presented at this year's ACM Symposium on Applied Computing.&lt;br /&gt;&lt;br /&gt;This paper describes some aspects of the metaobject protocol of ContextL. This is not exactly the same version as presented at the symposium, but the paper has been updated to reflect the new API in &lt;a href="http://p-cos.blogspot.com/2007/04/contextl-040.html"&gt;ContextL 0.4&lt;/a&gt;. However, apart from the resulting changes of function names and a few other minor edits, the contents have remained the same.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20069114-8884474845392304237?l=p-cos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://p-cos.blogspot.com/feeds/8884474845392304237/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20069114&amp;postID=8884474845392304237' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20069114/posts/default/8884474845392304237'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20069114/posts/default/8884474845392304237'/><link rel='alternate' type='text/html' href='http://p-cos.blogspot.com/2007/04/reflective-layer-activation-in-contextl.html' title='Reflective Layer Activation in ContextL'/><author><name>Pascal Costanza</name><uri>http://www.blogger.com/profile/04512975624438301971</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://bp1.blogger.com/_DIhRAGqWubM/SBVnDJc6vsI/AAAAAAAAAAM/oWU7nSP-yzU/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20069114.post-1575688248872498669</id><published>2007-04-21T23:47:00.000+02:00</published><updated>2007-04-21T23:57:27.382+02:00</updated><title type='text'>ContextL 0.40.</title><content type='html'>I have just released version 0.40 of ContextL. The idea is that this version is feature-complete with regard to the feature set of the upcoming 1.0 release. The goal is now to test this version extensively, and to write a documentation of the current features and the API of ContextL before version 1.0 is eventually released.&lt;br /&gt;&lt;br /&gt;There have been some changes in the API which are listed at the &lt;a href="http://common-lisp.net/project/closer/contextl.html"&gt;ContextL homepage&lt;/a&gt;. These are mostly cosmetic changes, like better names for functions, etc.&lt;br /&gt;&lt;br /&gt;However, there are also some new features. The most interesting ones are probably several readers for the main ContextL metaclasses, such that the introspective part of ContextL is now complete, and a function current-layer-context. The latter can be used to capture the set of currently active layers, which can later be reinstalled for example with funcall-with-layer-context. Current-layer-context should be interesting for example to "inherit" active layers to/from threads in multithreaded Common Lisp implementations, or to capture active layers alongside continuations such that they can both be reinstalled together later on. This could, for example, be interesting in conjunction with continuation-based web frameworks.&lt;br /&gt;&lt;br /&gt;For more details, see the &lt;a href="http://common-lisp.net/project/closer/contextl.html"&gt;ContextL homepage&lt;/a&gt; and announcements/discussions in the &lt;a href="http://common-lisp.net/cgi-bin/mailman/listinfo/closer-devel"&gt;closer-devel mailing list&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20069114-1575688248872498669?l=p-cos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://p-cos.blogspot.com/feeds/1575688248872498669/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20069114&amp;postID=1575688248872498669' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20069114/posts/default/1575688248872498669'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20069114/posts/default/1575688248872498669'/><link rel='alternate' type='text/html' href='http://p-cos.blogspot.com/2007/04/contextl-040.html' title='ContextL 0.40.'/><author><name>Pascal Costanza</name><uri>http://www.blogger.com/profile/04512975624438301971</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://bp1.blogger.com/_DIhRAGqWubM/SBVnDJc6vsI/AAAAAAAAAAM/oWU7nSP-yzU/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20069114.post-7674449259891480954</id><published>2007-04-09T16:43:00.000+02:00</published><updated>2007-04-09T17:03:11.524+02:00</updated><title type='text'>My impressions of ILC'07</title><content type='html'>I am posting this as an individual member of the Lisp community.  I am not speaking for the ILC'07 organizers. (Oh man... ;)&lt;br /&gt;&lt;br /&gt;I am very happy that &lt;a href="http://www.international-lisp-conference.org/2007/"&gt;ILC'07&lt;/a&gt; turned out to be so successful. This hasn't been always clear during the preparations, so I guess all the organizers breathed a sigh of relief when the numbers of registrations started to increase (and we suddenly had to come up with ideas how to manage a situation in which we nearly had too many registrations ;).&lt;br /&gt;&lt;br /&gt;Among the "generic" highlights, I personally enjoyed the atmosphere a lot. I am convinced that this is mainly due to the fact that almost everyone had their accommodation &lt;a href="http://www.international-lisp-conference.org/2007/venue"&gt;at the same place&lt;/a&gt;. In my experience, conferences where this is the case are typically more successful - you already see the participants in the morning during breakfast, you have a lot more time to talk to each other, and so on.&lt;br /&gt;&lt;br /&gt;For me, it was also nice to see so many people again. On average, the number of smart people is a lot higher at Lisp meetings than elsewhere, so there is always a chance to have some very interesting discussions with very different perspectives provided by everyone.&lt;br /&gt;&lt;br /&gt;About the conference itself, I am happy that the program chair (JonL White) has carefully selected a very interesting set of presentations. Almost all talks were of high quality, covering a broad range of topics with only a couple of downers. My personal highlights have been:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.international-lisp-conference.org/2007/speakers#leitao_antonio"&gt;Antonio Leitao's work&lt;/a&gt; on translating Java source code to idiomatic (!) Common Lisp sources. He has already done the reverse (translating a subset of Common Lisp to Java) in the past and is now heading towards a solution that potentially improves the situation on the library front for Common Lisp. The interesting aspect here is the focus on generating idiomatic code, i.e., code as if it had been written manually by experts in the respective target languages.&lt;/li&gt;&lt;br /&gt;&lt;li&gt; &lt;a href="http://www.international-lisp-conference.org/2007/speakers#sperber_michael"&gt;Mike Sperber's illuminating talk&lt;/a&gt; about &lt;a href="http://www.r6rs.org/"&gt;R6RS Scheme&lt;/a&gt;. I had some fears wrt having this presentation for an audience that mostly consists of Lispers, but non-Schemers. However, Mike has given a very entertaining talk and helped everyone to have a better idea about the goals of R6RS. (IMHO, it's important that Schemers and Lispers talk more to each other because both sides can learn from each other. I'm glad that ILC'07 has helped improve the situation a little bit.)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.international-lisp-conference.org/2007/speakers#serrano_manuel"&gt;Manuel Serrano&lt;/a&gt; has given a very impressive presentation about his &lt;a href="http://hop.inria.fr/"&gt;HOP framework&lt;/a&gt; for developing web applications in Scheme. It's good to see that there are a couple of approaches that head in the right direction of enabling the creation of GUIs that makes users' lives easier instead of focusing on solving technicalities of accidental elements in the underlying technology (for example, the infamous "back" button). I see HOP in the same line as &lt;a href="http://www.cl-user.net/asp/persons/marc.battyani"&gt;Marc Battyani&lt;/a&gt;'s (unfortunately unpublished) web framework, but as far as I can tell, Manuel has gone a few steps further.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Alexander Repenning had a paper about &lt;a href="http://www.international-lisp-conference.org/2007/speakers#repenning_alexander"&gt;X-expressions in XMLisp&lt;/a&gt;, which sounds a lot more boring than what he actually presented. This is not &lt;a href="http://www.cliki.net/XML"&gt;yet another library for dealing with XML&lt;/a&gt;, but actually modifies the Common Lisp reader (parser) to treat XML as syntax for literal CLOS objects. The applications that he has built on top of that technology are very impressive indeed.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.international-lisp-conference.org/2007/speakers#fruhwirth_clemens"&gt;Clemens Fruhwirth's Liskell&lt;/a&gt; is actually a very simple idea. He takes &lt;a href="http://www.haskell.org/ghc/"&gt;GHC&lt;/a&gt; - a widely used implementation of Haskell - and replaces the Haskell syntax with s-expressions. This enables, among other things, the inclusion of macros. I have always wanted to take a closer look at Haskell, but its syntax always put me off. Now I don't have an excuse anymore. ;)&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;For obviously personal reasons, I am also very happy that &lt;a href="http://wilma.vub.ac.be/~caherzee/web/index.htm"&gt;Charlotte Herzeel&lt;/a&gt;'s presentation about HALO is so well-received - she got a lot of positive feedback for her presentation. However, it is only an overview of HALO, there is still more to come. I hope that we can report on some exciting results soon.&lt;br /&gt;&lt;br /&gt;On the negative side about ILC'07, it seems to me that the program was maybe a little too packed - we had to get up very early in the morning (very hard for me ;), and there was maybe not enough time to engage in discussions or even do some work with other attendees. We have tried to establish a breakout group format, but apparently we haven't found the right approach yet. Ralf Mattes suggested a birds-of-a-feather-sessions format to me, so maybe that's something we should look into for the future.&lt;br /&gt;&lt;br /&gt;A real downer was the annual meeting of the &lt;a href="http://www.alu.org/"&gt;Associations of Lisp Users&lt;/a&gt; (ALU). It wasn't the first time they promised to become more "professional", but their presentation to the ALU members was worse than average. I hope they will manage to get their act together. Otherwise, it will be hard for them to be taken seriously by the Lisp community in the long run. It is worth noting, though, that they are responsible for backing the International Lisp Conference, so they must be doing something right... ;)&lt;br /&gt;&lt;br /&gt;Fortunately, the rest of the conference didn't suffer from the ALU meeting - the day after was as good as, or maybe even a little more exciting than, the other days on all levels.&lt;br /&gt;&lt;br /&gt;Next on the schedule is the &lt;a href="http://lisp-ecoop07.bknr.net/"&gt;European Lisp Workshop&lt;/a&gt;, co-located with &lt;a href="http://2007.ecoop.org/"&gt;ECOOP 2007&lt;/a&gt; and taking place in Berlin on July 30, and most likely sometime early next year another instance of the European Common Lisp Meeting.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20069114-7674449259891480954?l=p-cos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://p-cos.blogspot.com/feeds/7674449259891480954/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20069114&amp;postID=7674449259891480954' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20069114/posts/default/7674449259891480954'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20069114/posts/default/7674449259891480954'/><link rel='alternate' type='text/html' href='http://p-cos.blogspot.com/2007/04/my-impressions-of-ilc07.html' title='My impressions of ILC&apos;07'/><author><name>Pascal Costanza</name><uri>http://www.blogger.com/profile/04512975624438301971</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://bp1.blogger.com/_DIhRAGqWubM/SBVnDJc6vsI/AAAAAAAAAAM/oWU7nSP-yzU/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20069114.post-595266984112370462</id><published>2007-03-08T23:05:00.000+01:00</published><updated>2007-03-08T23:18:43.916+01:00</updated><title type='text'>Lisp Bleep Survivalism</title><content type='html'>A few tidbits:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Registrations for the &lt;a href=http://www.international-lisp-conference.org/&gt;International Lisp Conference 2007&lt;/a&gt; are coming in like crazy, and we are soon running out of rooms at the Clare College. There are only three days left until the early registration deadline with reduced fees, so there are enough reasons to better hurry up. ;)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;New videoclips by &lt;a href=http://www.din9.com/dev/html/bleep.htm&gt;Motor&lt;/a&gt; and &lt;a href=http://www.echoingthesound.org/phpbbx/viewtopic.php?t=21181&gt;Nine Inch Nails&lt;/a&gt;.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;This is the last posting about music to this blog, since the postings here occur, for example, at &lt;a href=http://planet.lisp.org/&gt;Planet Lisp&lt;/a&gt;. So in order to stop boring Lispers about music they are not interested in, I will post all music-related ramblings to the freshly brewed &lt;a href=http://komapop.blogspot.com/&gt;infox_blog&lt;/a&gt; instead.&lt;br /&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20069114-595266984112370462?l=p-cos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://p-cos.blogspot.com/feeds/595266984112370462/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20069114&amp;postID=595266984112370462' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20069114/posts/default/595266984112370462'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20069114/posts/default/595266984112370462'/><link rel='alternate' type='text/html' href='http://p-cos.blogspot.com/2007/03/lisp-bleep-survivalism.html' title='Lisp Bleep Survivalism'/><author><name>Pascal Costanza</name><uri>http://www.blogger.com/profile/04512975624438301971</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://bp1.blogger.com/_DIhRAGqWubM/SBVnDJc6vsI/AAAAAAAAAAM/oWU7nSP-yzU/S220/me.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20069114.post-7471179870272228419</id><published>2007-02-27T23:27:00.000+01:00</published><updated>2007-03-05T16:48:23.840+01:00</updated><title type='text'>What is the point of macros?</title><content type='html'>One of the distinguishing features of Lisp and Scheme is the ability to define macros that allow you to extend the base language with new language constructs. Here are two examples what this actually means and why this is a good idea.&lt;br/&gt;&lt;br /&gt;&lt;br /&gt;Let's take a common idiom from Java: Whenever you want to open a file, process its contents, and close it again afterwards, you have to write code roughly like this:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;FileInputStream in = &lt;font color=orange&gt;new FileInputStream(filename)&lt;/font&gt;;&lt;br /&gt;try {&lt;br /&gt;   &lt;font color=orange&gt;doSomething(in);&lt;/font&gt;&lt;br /&gt;} finally {&lt;br /&gt;   in.close();&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Note how the orange code is the code that you are actually interested in: That's the part that states which file you want to open, that you want to open it for reading, and that you want to do something with the file. The rest is just idiomatic code that you have to write just to make the machinery work: You declare a variable outside of the try block (this is important for the visibility of the variable!), and you have to put the call of the close method in a finally block to ensure that the file is always closed even when an exception occurs.&lt;br/&gt;&lt;br /&gt;The problem here is that you have to write this code over and over and over again, and everytime you write this code, you have to get the details right. For example, when I was still a Java hacker, I always have put the variable declaration inside the try block, just to get the error message from the compiler that this is wrong. This is annoying - it would be nice if I didn't have to think about this. (I have actually gotten it wrong again in the first version of this posting. Go figure.)&lt;br/&gt;&lt;br /&gt;Here is the same code in Common Lisp:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;(let ((in &lt;font color=orange&gt;(open filename)&lt;/font&gt;))&lt;br /&gt;  (unwind-protect&lt;br /&gt;      &lt;font color=orange&gt;(do-something in)&lt;/font&gt;&lt;br /&gt;    (close in)))&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;This is not yet an improvement: The orange part of the code is still deep down in other code that just ensures that the machinery for opening and closing the file works. I still have to declare the variable first (here with a &lt;a href=http://www.lispworks.com/documentation/HyperSpec/Body/s_let_l.htm#let&gt;let&lt;/a&gt;), I still have to use the Lisp-equivalent of try-finally (here it's called &lt;a href=http://www.lispworks.com/documentation/HyperSpec/Body/s_unwind.htm#unwind-protect&gt;unwind-protect&lt;/a&gt;), and I still have to ensure that the closing of the file happens as part of the clean-up step of an unwind-protect.&lt;br/&gt;&lt;br /&gt;However, Lisp gives us a way to get rid of the idiomatic code. What we would actually like to write is this:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;font color=orange&gt;&lt;br /&gt;(with-input-file (in filename)&lt;br /&gt;  (do-something in))&lt;br /&gt;&lt;/font&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;This code states exactly what we want and nothing else: We want to execute some code with an open file bound to some variable, and we implicitly want to ensure that it is closed again at the end of this code fragment.&lt;br/&gt;&lt;br /&gt;Here is a macro that defines this construct:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;(defmacro with-input-file ((variable filename) &amp;body body)&lt;br /&gt;  `(let ((,variable (open ,filename))&lt;br /&gt;     (unwind-protect&lt;br /&gt;         (progn ,@body)&lt;br /&gt;       (close ,variable))))&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Here is an explanation of the code:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;The macro is defined with &lt;a href=http://www.lispworks.com/documentation/HyperSpec/Body/m_defmac.htm#defmacro&gt;defmacro&lt;/a&gt; and we name it like the language construct we want to build. It takes two variables: a variable name and a piece of code that will give us the filename in the resulting code. It also takes a body of code for the with-input-file construct.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;The macro creates a piece of code that the Lisp compiler should use instead of the original code that uses the with-input-file construct: We basically define a code template in which the variable, filename and body spots are filled in with the parameters that the macro receives.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Some minor details: The &lt;a href=http://www.lispworks.com/documentation/HyperSpec/Body/s_progn.htm#progn&gt;progn&lt;/a&gt; groups a number of expressions into one - this is similar to grouping code in a pair of curly braces in Java. The &lt;a href=http://citeseer.ist.psu.edu/bawden99quasiquotation.html&gt;backquote&lt;/a&gt;, comma and comma-at notations are there to clarify how the parameters should be inserted - that's something that you can better learn in &lt;a href=http://www.cliki.net/Online%20Tutorial&gt;good Lisp tutorials&lt;/a&gt;.&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;Although writing macros takes a little practice, it is very straightforward once you are used to doing this. Macros help you to avoid typing a lot of idiomatic code: whenever you notice some coding pattern, you can put it in some macro and then use it instead.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Syntactic Abstractions&lt;/h3&gt;&lt;br /&gt;&lt;br /&gt;Let's get a little closer to the heart of what macros actually are: They provide you with a way to define syntactic abstractions. &lt;a href=http://en.wikipedia.org/wiki/Abstraction_%28computer_science%29&gt;Abstractions&lt;/a&gt; are used for hiding away implementation details that client code should not be interested in. For example, in classes you can define private fields and methods for internal use and define a public interface that client code has to go through to ensure that the internal details are always used properly. Likewise, with functional abstractions - &lt;a href=http://en.wikipedia.org/wiki/Closure_%28computer_science%29&gt;closures&lt;/a&gt; - you can pass around a function that can refer to variables in its lexical environment without giving anyone direct access to these lexical variables.&lt;br/&gt;&lt;br /&gt;Many implementation details can be hidden very well with such abstraction mechanisms. However, others cannot be hidden well, and this is when macros become interesting.&lt;br/&gt;&lt;br /&gt;For example, assume that your language doesn't provide any iteration constructs but requires you to use &lt;a href=http://en.wikipedia.org/wiki/Recursion&gt;recursion&lt;/a&gt; instead. You can relatively easily build your own iteration constructs - for example a while function - like this in Lisp:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;(defun while-function (predicate block)&lt;br /&gt;  (if (not (funcall predicate)) (return))&lt;br /&gt;  (funcall block)&lt;br /&gt;  (while-function predicate block))    &lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;This function works as follows: It takes a predicate function and a block of code, also provided as a function. When calling the predicate (with funcall) returns false, the while-function returns. Otherwise, the block is executed (again with funcall) and then the while-function calls itself again.&lt;br/&gt;&lt;br /&gt;Here is an example of using the while-function:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;(let ((i 0))&lt;br /&gt;  (while-function (lambda () (&lt; i 10))&lt;br /&gt;    (lambda ()&lt;br /&gt;      (print i)&lt;br /&gt;      (incf i))))&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;This code fragment increments i from 0 up to 10 and prints i at each step. This piece of code doesn't look very nice. One reason is that Lisp's lambda construct is somewhat lengthy. Smalltalk, Ruby, and other languages have nicer syntax for lambda expressions, and would make this code shorter. However, even then there is a problem here: We still have to write idiomatic code to write a while loop although we are actually not interested in the idiom. Here, the idiomatic element is the use of a lambda expression to ensure that some code is not immediatily executed, but only later under the control of the while-function. However, what we actually want to say is this, which doesn't contain any idiomatic code at all:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;(let ((i 0))&lt;br /&gt;  (while (&lt; i 10)&lt;br /&gt;    (print i)&lt;br /&gt;    (incf i)))&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;And, as you might have guessed, here is a macro to implement this while construct:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;(defmacro while (expression &amp;body body)&lt;br /&gt;  `(while-function (lambda () ,expression)&lt;br /&gt;     (lambda () ,@body)))&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;This macro uses the while-function in the code that it creates. This is actually one of the typical ways to write Lisp code: We first define the functional (or &lt;a href=http://www.aiai.ed.ac.uk/~jeff/clos-guide.html&gt;object-oriented&lt;/a&gt;, or imperative, or &lt;a href=http://www.lisp.org/table/objects.htm&gt;whatever&lt;/a&gt;) abstractions, and then we add some syntactic layer on top to make the code look nicer, and especially to hide away implementation details that we cannot hide otherwise.&lt;br/&gt;&lt;br /&gt;Why is it so interesting to hide away implementation details, like the use of lambda expressions to delay evaluation? Well, we could actually decide not to use lambda expressions at all in our expansion. Here is an alternative implementation of the while macro:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;(defmacro while (expression &amp;body body)&lt;br /&gt;  `(tagbody&lt;br /&gt;     start (if (not ,expression) (go end))&lt;br /&gt;           ,@body&lt;br /&gt;           (go start)&lt;br /&gt;     end))&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Yes, Common Lisp provides the &lt;a href=http://www.lispworks.com/documentation/HyperSpec/Body/s_tagbod.htm#tagbody&gt;tagbody&lt;/a&gt; construct inside which you can use &lt;a href=http://www.lispworks.com/documentation/HyperSpec/Body/s_go.htm#go&gt;go&lt;/a&gt;, i.e., a goto statement! Gotos are not a very good idea to use in your own code, but gotos are very useful for generating efficient code in macros. In this second implementation of the while macro, there is for example no need anymore to allocate space for the closures that the two lambda expressions create, because we can simply jump around the code to delay its execution.&lt;br/&gt;&lt;br /&gt;Of course, this is a toy example, so the little gain in efficiency here is probably not worth the effort. However, what is important is that the "API" for the while macro hasn't changed at all compared to the first version. You still write this:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;(let ((i 0))&lt;br /&gt;  (while (&lt; i 10)&lt;br /&gt;    (print i)&lt;br /&gt;    (incf i)))&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;That's one of the important advantages of abstractions: You can change internal implementation details while all the client code can be left unchanged!&lt;br/&gt;&lt;br /&gt;And this is the whole point of macros: You can abstract away code idioms that you cannot astract away in any other way, and you effictively have a lot more options to change implementation details without affecting any clients.&lt;br/&gt;&lt;br /&gt;Macros are also one of the fundamental reasons for why Lispers like Lisp's strange syntax so much: The syntax is a direct representation of what is elsewhere called the abstract syntax tree, and the fact that the AST is directly available for manipulation as a very simple list data structure makes it so straightforward and convenient to implement and use macros.&lt;br/&gt;&lt;br /&gt;If you now have gotten the taste of this, you may want to read some more introductory material about Lisp, like &lt;a href=http://p-cos.net/lisp/guide.html&gt;my own opinionated guide&lt;/a&gt;, &lt;a href=http://www.gigamonkeys.com/book/&gt;Peter Seibel's excellent book about Common Lisp&lt;/a&gt;, or any of the &lt;a href=http://www.cliki.net/Online%20Tutorial&gt;other available tutorials&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20069114-7471179870272228419?l=p-cos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://p-cos.blogspot.com/feeds/7471179870272228419/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20069114&amp;postID=7471179870272228419' title='15 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20069114/posts/default/7471179870272228419'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20069114/posts/default/7471179870272228419'/><link rel='alternate' type='text/html' href='http://p-cos.blogspot.com/2007/02/what-is-point-of-macros.html' title='What is the point of macros?'/><author><name>Pascal Costanza</name><uri>http://www.blogger.com/profile/04512975624438301971</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://bp1.blogger.com/_DIhRAGqWubM/SBVnDJc6vsI/AAAAAAAAAAM/oWU7nSP-yzU/S220/me.jpg'/></author><thr:total>15</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20069114.post-5664877362831562007</id><published>2007-02-21T16:27:00.000+01:00</published><updated>2007-02-21T17:07:22.382+01:00</updated><title type='text'>Call for Participation: ILC'07</title><content type='html'>&lt;p&gt;&lt;a href="http://www.international-lisp-conference.org"&gt;INTERNATIONAL LISP CONFERENCE 2007&lt;/a&gt;&lt;br&gt;&lt;br /&gt;Clare College, Cambridge, England  -  April 1-4, 2007&lt;br&gt;&lt;br /&gt;In cooperation with &lt;a href="http://acm.org/sigplan/"&gt;ACM SIGPLAN&lt;/a&gt;&lt;br&gt;&lt;br /&gt;Sponsored by &lt;a href="http://www.alu.org"&gt;The Association of Lisp Users&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;The Association of Lisp Users is pleased to announce the 2007 International Lisp Conference will be held in Cambridge, England at Clare College from April 1st to 4th, 2007. This year's program consists of tutorials at beginners' and advanced levels, prominent invited speakers from the Lisp and Scheme communities, an excellent technical session, tours of Central Cambridge, Anglesey Abbey and Ely, and a quintessential English experience: a traditional dinner served in the college's Great Hall. The advance registration deadline is March 11th. The &lt;a href="http://www.international-lisp-conference.org/2007/contest"&gt;ILC'07 programming contest&lt;/a&gt; is also still running until March 3rd.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://www.international-lisp-conference.org/2007/schedule"&gt;Schedule&lt;/a&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;Saturday, March 31st&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.international-lisp-conference.org/2007/tours#city"&gt;Optional tour of Cambridge&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;Sunday, April 1st&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.international-lisp-conference.org/2007/tutorials"&gt;Tutorials and workshops&lt;/a&gt;&lt;br /&gt;       &lt;ul&gt;&lt;br /&gt;        &lt;li&gt;Ernst van Waning, Extended Tutorial: Common Lisp in One Day&lt;/li&gt;&lt;br /&gt;        &lt;li&gt;Pascal Costanza, Context-oriented Programming in Common Lisp&lt;/li&gt;&lt;br /&gt;        &lt;li&gt;Richard Brooksby, Improve your Lisp using the Memory Pool System&lt;/li&gt;&lt;br /&gt;        &lt;li&gt;Duane Rettig, Optimizing and Debugging Programs in Allegro CL&lt;/li&gt;&lt;br /&gt;        &lt;/ul&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;Monday, April 2nd&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.international-lisp-conference.org/2007/speakers"&gt;Invited presentations&lt;/a&gt;&lt;br /&gt;        &lt;ul&gt;&lt;br /&gt;&lt;li&gt;Christian Queinnec, Teaching CS to undergraduates at UPMC&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Michael Sperber, It's All about Being Right: Lessons from the R6RS Process&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Herbert Stoyan, Lisp: Themes and History&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Presentations of accepted papers&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;Tuesday, April 3rd&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Invited presentations&lt;br /&gt;       &lt;ul&gt;&lt;br /&gt;&lt;li&gt;Jans Aasman, Scalable Lisp Applications&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Ralf Moeller, Building a Commercial OWL Reasoner with Lisp&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Manuel Serrano, HOP: An Environment for Developing Web 2.0 Applications&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Presentations of accepted papers&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Annual meeting of the Association of Lisp Users&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Conference banquet&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;Wednesday, April 4th&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Invited presentations&lt;br /&gt;       &lt;ul&gt;&lt;br /&gt;&lt;li&gt;Richard Jones, Dynamic Memory Management&lt;/li&gt;&lt;br /&gt;&lt;li&gt;John Mallery, Lisp/CL-HTTP&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Presentations of accepted papers&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;Thursday, April 5th&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.international-lisp-conference.org/2007/tours#ely"&gt;Optional tour of Anglesey Abbey and Ely&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Conference Registration&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://international-lisp-conference.org/2007/registration"&gt;Conference registration is now open.&lt;/a&gt; The advance registration deadline is March 11th. You can get further discounts as an ACM/SIGPLAN and/or ALU member. Registration includes: access to all events, morning and afternoon teas / coffees, self-service lunch, banquet (Tuesday April 3rd), proceedings and hopefully a conference t-shirt. &lt;a href="http://international-lisp-conference.org/2007/venue#accomodation"&gt;Accomodation is available in Clare College's "Memorial Court".&lt;/a&gt; Credit cards and PayPal are accepted, as are cheques (sterling or US dollars) and international bank transfers.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Organizing Committee&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Co-Chairs: Carl Shapiro (SRI International), Pascal Costanza (Vrije Universiteit Brussel)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Members: Rusty Johnson (ALU), Peter Lindahl (ALU)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Program Chair: JonL White (The Ginger Ice Cream Factory / ALU)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Local chair: Nick Levine (Ravenbrook / ALU)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;General correspondence: ilc07-organizing-committee at alu.org&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Mailing Lists&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;General conference announcements are made on a very occasional basis to the low-volume mailing list &lt;a href="http://www.alu.org/mailman/listinfo/ilc07-announce"&gt;ilc07-announce&lt;/a&gt;. If you're thinking of participating in ILC 2007, you should either join this list or take an occasional &lt;a href="http://www.alu.org/pipermail/ilc07-announce"&gt;look at the archives&lt;/a&gt;.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20069114-5664877362831562007?l=p-cos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://p-cos.blogspot.com/feeds/5664877362831562007/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20069114&amp;postID=5664877362831562007' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20069114/posts/default/5664877362831562007'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20069114/posts/default/5664877362831562007'/><link rel='alternate' type='text/html' href='http://p-cos.blogspot.com/2007/02/call-for-participation-ilc.html' title='Call for Participation: ILC&amp;#39;07'/><author><name>Pascal Costanza</name><uri>http://www.blogger.com/profile/04512975624438301971</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://bp1.blogger.com/_DIhRAGqWubM/SBVnDJc6vsI/AAAAAAAAAAM/oWU7nSP-yzU/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20069114.post-4536897743698712454</id><published>2007-02-05T12:10:00.000+01:00</published><updated>2007-02-05T12:19:41.600+01:00</updated><title type='text'>Let's Lisp again!</title><content type='html'>There are several news about this year's &lt;a href=http://www.international-lisp-conference.org&gt;International Lisp Conference&lt;/a&gt; to be held in Cambridge, UK in the first week of April.&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;&lt;li&gt;The Register has published &lt;a href=http://www.regdeveloper.co.uk/2007/02/03/2007_international_lisp_conference/&gt;a press release about the conference&lt;/a&gt;. Nick Levine told me that it's a good idea to "digg" this article (whatever that means ;). Apparently, you can do this directly via &lt;a href=http://digg.com/programming/Let_s_Lisp_again&gt;this entry at digg&lt;/a&gt;.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;There is a &lt;a href=http://www.international-lisp-conference.org/2007/images/poster.jpg&gt;conference poster&lt;/a&gt; available for download. Please print it off and distribute it everywhere.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Finally, you can show off your Lisp programming skills by providing implementations for &lt;a href=http://www.international-lisp-conference.org/2007/contest&gt;the conference's programming contest&lt;/a&gt;.&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20069114-4536897743698712454?l=p-cos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://p-cos.blogspot.com/feeds/4536897743698712454/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20069114&amp;postID=4536897743698712454' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20069114/posts/default/4536897743698712454'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20069114/posts/default/4536897743698712454'/><link rel='alternate' type='text/html' href='http://p-cos.blogspot.com/2007/02/lets-lisp-again.html' title='Let&apos;s Lisp again!'/><author><name>Pascal Costanza</name><uri>http://www.blogger.com/profile/04512975624438301971</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://bp1.blogger.com/_DIhRAGqWubM/SBVnDJc6vsI/AAAAAAAAAAM/oWU7nSP-yzU/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20069114.post-1111621009210568050</id><published>2007-01-21T17:32:00.000+01:00</published><updated>2007-01-21T17:41:18.956+01:00</updated><title type='text'>Best Albums of 2006</title><content type='html'>Here is my list of music recommendation based on what I perceived being the most interesting albums that I have listened to in 2006. This time, it is not a "best of" list, like last year, but a more careful breakdown.&lt;br /&gt;&lt;br /&gt;First of all, the best albums that were released this year are as follows.&lt;br /&gt;&lt;br /&gt;1. &lt;a href=http://www.myspace.com/theknife&gt;The Knife&lt;/a&gt; - &lt;a href=http://www.klicktrack.com/shop/release.jsp?r=8374&amp;cp=74&gt;Silent Shout&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;It took me a while to get into this album. I had seen recommendations in a few places that I check every now and then, and since they are on &lt;a href=http://www.mute.com/&gt;Mute Records&lt;/a&gt; in the US they caught my attention. However, listening to clips of this album didn't help me at first. The first track, "Silent Shout", sounded to me like a uninspired copy of Kraftwerk, and the second one, "Neverland", like an uninspired piece of electronic punk. However, when I have seen the video clip for "We Share Our Mother's Health" in Kevin Holy's &lt;a href=http://www.director-file.com/2006/2006.html&gt;Ten Best Music Videos of 2006&lt;/a&gt;, I got it. I bought the album, and since then I almost exclusively listen to it. I can strongly recommend "The Captain", "We Share Our Mother's Health" and "Marble House".&lt;br /&gt;&lt;br /&gt;2. &lt;a href=http://www.myspace.com/katehavnevik&gt;Kate Havnevik&lt;/a&gt; - Melankton.&lt;br /&gt;&lt;br /&gt;Another act from Sweden. I have listened to this a lot and considered this to be the best album of 2006 until very recently. This one is especially interesting because it is the very first album I have bought just because of a recommendation at the iTunes Music Store - I have never heard of this singer before. I can especially recommend the following tracks: "Unlike Me", "Nowhere Warm" and "Suckerlove".&lt;br /&gt;&lt;br /&gt;3. &lt;a href=http://www.myspace.com/motor66&gt;Motor&lt;/a&gt; - Klunk.&lt;br /&gt;&lt;br /&gt;I have already discussed this album &lt;a href=http://p-cos.blogspot.com/2006/05/music-recommendations-may-2006.html&gt;before&lt;/a&gt;. They have supported Nitzer Ebb on their reunion tour, and Motor have been fabulous.&lt;br /&gt;&lt;br /&gt;4. &lt;a href=http://www.myspace.com/lourhodes&gt;Lou Rhodes&lt;/a&gt; - Beloved One.&lt;br /&gt;&lt;br /&gt;The first solo album from the singer of Lamb. Recommended tracks: "Treat Her Gently", "No Re-Run" and "Beloved One".&lt;br /&gt;&lt;br /&gt;There were also new releases &lt;a href=http://www.myspace.com/laibach&gt;Laibach&lt;/a&gt; ("Volk") and &lt;a href=http://www.tanyatagaq.com/&gt;Tanya Tagaq&lt;/a&gt; (&lt;a href=http://www.tanyatagaq.com/audio.html&gt;Sinaa&lt;/a&gt; - I haven't heard of her before, but she was &lt;a href=http://www.bjork.com/news/?id=593;year=2006#news&gt;mentioned&lt;/a&gt; at &lt;a href=http://www.bjork.com/&gt;Björk's website&lt;/a&gt;). Both are quite interesting and impressive, but I still have to make up my mind before final judgment.&lt;br /&gt;&lt;br /&gt;&lt;a href=http://www.underworldlive.com/&gt;Underworld&lt;/a&gt; have already started the "RiverRun Project" in 2005, but I only heard about it in 2006. It is a series of mp3 files (together with comprehensive artwork) that you can buy at their website. Since these are not commercially released on CD, they are quite free-form, which is good. I can especially recommend &lt;a href=http://www.underworldlive.com/index/shop-previews/a-lovely-broken-thing&gt;Lovely Broken Thing&lt;/a&gt;, which is part 1 in that series.&lt;br /&gt;&lt;br /&gt;Apart from these albums, I have finally managed to get a better overview of &lt;a href=http://www.swans.pair.com/&gt;Swans&lt;/a&gt;. &lt;a href=http://www.swans.pair.com/DISCOGRAPHY/lol.html&gt;Love of Life&lt;/a&gt; has always been one of my favorite albums for about ten years now, but I never took the time to take a look at their other releases (which are quite numerous). I have now listened to quite a few of their albums during this year, and I can recommend &lt;a href=http://www.swans.pair.com/DISCOGRAPHY/cog_wos97.html&gt;Children of God / World of Skin&lt;/a&gt; as a good starting point because it captures the different musical styles of Swans quite well.&lt;br /&gt;&lt;br /&gt;Two good "best of" collections that were released in 2006 are &lt;a href=http://www.massiveattack.co.uk/collected/&gt;Collected&lt;/a&gt; by Massive Attack and "Body of Work" by &lt;a href=http://www.myspace.com/nitzerebbmusic&gt;Nitzer Ebb&lt;/a&gt;. Apart from that, I currently listen to &lt;a href=http://www.marketingmusic.fr/&gt;Tekel&lt;/a&gt;, who capture the sensibilities of 80's electronic pop music quite well.&lt;br /&gt;&lt;br /&gt;That's it for now. Looking forward to new releases by Skinny Puppy, Komputer, Nine Inch Nails and Recoil in 2007...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20069114-1111621009210568050?l=p-cos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://p-cos.blogspot.com/feeds/1111621009210568050/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20069114&amp;postID=1111621009210568050' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20069114/posts/default/1111621009210568050'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20069114/posts/default/1111621009210568050'/><link rel='alternate' type='text/html' href='http://p-cos.blogspot.com/2007/01/best-albums-of-2006.html' title='Best Albums of 2006'/><author><name>Pascal Costanza</name><uri>http://www.blogger.com/profile/04512975624438301971</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://bp1.blogger.com/_DIhRAGqWubM/SBVnDJc6vsI/AAAAAAAAAAM/oWU7nSP-yzU/S220/me.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20069114.post-116152180592045749</id><published>2006-10-22T14:55:00.000+02:00</published><updated>2006-10-22T15:47:00.400+02:00</updated><title type='text'>International Lisp Conference '07 - Call for Papers</title><content type='html'>The call for papers for the &lt;a href=http://www.international-lisp-conference.org/&gt;International Lisp Conference 2007&lt;/a&gt; is out. Please consider submitting papers about all Lisp- or Scheme-related topics. This time, the conference will be in Cambridge / UK in the first week of April 2007.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20069114-116152180592045749?l=p-cos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://p-cos.blogspot.com/feeds/116152180592045749/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20069114&amp;postID=116152180592045749' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20069114/posts/default/116152180592045749'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20069114/posts/default/116152180592045749'/><link rel='alternate' type='text/html' href='http://p-cos.blogspot.com/2006/10/international-lisp-conference-07-call.html' title='International Lisp Conference &apos;07 - Call for Papers'/><author><name>Pascal Costanza</name><uri>http://www.blogger.com/profile/04512975624438301971</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://bp1.blogger.com/_DIhRAGqWubM/SBVnDJc6vsI/AAAAAAAAAAM/oWU7nSP-yzU/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20069114.post-115878031018503023</id><published>2006-09-20T21:24:00.001+02:00</published><updated>2008-08-29T12:48:22.295+02:00</updated><title type='text'>Freely downloadable books by Niklaus Wirth.</title><content type='html'>I haven't been aware of the fact that quite a few books by Niklaus Wirth are available as free downloads by now. Among them are such classics as &lt;a href="http://www-old.oberon.ethz.ch/WirthPubl/ProgInOberon.pdf"&gt;Programming in Modula-2&lt;/a&gt;, &lt;a href="http://www-old.oberon.ethz.ch/WirthPubl/AD.pdf"&gt;Algorithms and Data Structures&lt;/a&gt;, &lt;a href="http://www-old.oberon.ethz.ch/WirthPubl/CBEAll.pdf"&gt;Compiler Construction&lt;/a&gt;, and &lt;a href="http://www-old.oberon.ethz.ch/WirthPubl/ProjectOberon.pdf"&gt;Project Oberon&lt;/a&gt;, all of them either originally in/about Oberon, or adapted to Oberon.&lt;br /&gt;&lt;br /&gt;These books have influenced me a lot. Niklaus Wirth's main strength is a focus on the essentials, which is especially apparent in his concise programming style. I can especially recommend Compiler Construction which basically contains all you need to know about compilers in a very thin book (unless you decide to make this your field of expertise), and Project Oberon which contains the complete source code of a full operating system (including a file system, a garbage collector, a GUI, and so on).&lt;br /&gt;&lt;br /&gt;See also the &lt;a href="http://www.oberon.ethz.ch/"&gt;ETH Oberon Home Page&lt;/a&gt; for more information about Oberon and related materials.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20069114-115878031018503023?l=p-cos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://p-cos.blogspot.com/feeds/115878031018503023/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20069114&amp;postID=115878031018503023' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20069114/posts/default/115878031018503023'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20069114/posts/default/115878031018503023'/><link rel='alternate' type='text/html' href='http://p-cos.blogspot.com/2006/09/freely-downloadable-books-by-niklaus.html' title='Freely downloadable books by Niklaus Wirth.'/><author><name>Pascal Costanza</name><uri>http://www.blogger.com/profile/04512975624438301971</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://bp1.blogger.com/_DIhRAGqWubM/SBVnDJc6vsI/AAAAAAAAAAM/oWU7nSP-yzU/S220/me.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20069114.post-115877766947302862</id><published>2006-09-20T20:28:00.000+02:00</published><updated>2006-09-20T20:41:10.140+02:00</updated><title type='text'>CDR 0 &amp; 1 finalized.</title><content type='html'>The &lt;a href="http://cdr.eurolisp.org"&gt;Common Lisp Document Repository&lt;/a&gt; (CDR) has finalized its first documents today. CDR 0 describes CDR and the CDR process itself, while CDR 1 is the CLOS MOP specification, as published as an appendix in &lt;a href="http://www.amazon.com/Art-Metaobject-Protocol-Gregor-Kiczales/dp/0262610744/sr=8-1/qid=1158777048/ref=pd_bbs_1/104-0767838-6374361?ie=UTF8&amp;s=books"&gt;The Art of the Metaobject Protocol&lt;/a&gt; by Kiczales, des Rivières and Bobrow.&lt;br /&gt;&lt;br /&gt;These CDRs were mostly test runs of the CDR process, although they are of course also useful in their own right. (The CLOS MOP had already been published over 15 years ago and has long been proven useful, so didn't really need an official "stamp.")&lt;br /&gt;&lt;br /&gt;See the &lt;a href="http://cdr.eurolisp.org/"&gt;CDR website&lt;/a&gt; for more information.&lt;br /&gt;&lt;br /&gt;Furthermore, we have set up a &lt;a href="http://cdr-blog.blogspot.com/"&gt;CDR Blog&lt;/a&gt; where we will post CDR-related announcements - actually the same ones as in the &lt;a href="http://common-lisp.net/cgi-bin/mailman/listinfo/cdr-announce"&gt;cdr-announce mailing list&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20069114-115877766947302862?l=p-cos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://p-cos.blogspot.com/feeds/115877766947302862/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20069114&amp;postID=115877766947302862' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20069114/posts/default/115877766947302862'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20069114/posts/default/115877766947302862'/><link rel='alternate' type='text/html' href='http://p-cos.blogspot.com/2006/09/cdr-0-1-finalized.html' title='CDR 0 &amp; 1 finalized.'/><author><name>Pascal Costanza</name><uri>http://www.blogger.com/profile/04512975624438301971</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://bp1.blogger.com/_DIhRAGqWubM/SBVnDJc6vsI/AAAAAAAAAAM/oWU7nSP-yzU/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20069114.post-115643678433334492</id><published>2006-08-24T18:24:00.000+02:00</published><updated>2006-08-24T18:26:24.346+02:00</updated><title type='text'>Efficient Layer Activation for Switching Context-dependent Behavior</title><content type='html'>This is a paper that I have written together with Robert Hirschfeld and Wolfgang De Meuter, and we are going to present it at the Joint Modular Languages Conference (&lt;a href="http://cms.brookes.ac.uk/computing/JMLC2006/"&gt;JMLC'06&lt;/a&gt;) in Oxford next month. The paper discusses how the CLOS Metaobject Protocol is used to implement the features of &lt;a href="http://common-lisp.net/project/closer/contextl.html"&gt;ContextL&lt;/a&gt; and presents a benchmark that shows that ContextL is quite efficient - not significantly worse than CLOS, which itself can be implemented very efficiently. So context-oriented programming does not seem to place a significant burden on applications in this regard.&lt;br /&gt;&lt;br /&gt;The benchmark is based on an example that is frequently used to discuss aspect-oriented programming, especially control-flow-related features like the cflow construct in AspectJ. In our paper, we do not use an aspect-oriented solution, but obviously one based on context-oriented programming. That solution requires repeated activations and deactivations of layers, so this is indeed a useful benchmark for ContextL. These repeated activations and deactivations do not add any significant overhead to a similar program that does not activate or deactivate layers at all. To the contrary, in CMUCL and SBCL, the runs with repeated activations / deactivations are actually faster than the ones without. This means that other factors play a more important role with regard to efficiency. The benchmark is part of the ContextL release, so you can run it in your own environment.&lt;br /&gt;&lt;br /&gt;The paper uses a Java-style syntax instead of the original Lisp syntax. We have decided to do so to make the paper more accessible to non-Lispers. However, I will use the original ContextL version for the presentation at the conference.&lt;br /&gt;&lt;br /&gt;The paper can be downloaded from &lt;a href="http://p-cos.net/"&gt;my website&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20069114-115643678433334492?l=p-cos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://p-cos.blogspot.com/feeds/115643678433334492/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20069114&amp;postID=115643678433334492' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20069114/posts/default/115643678433334492'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20069114/posts/default/115643678433334492'/><link rel='alternate' type='text/html' href='http://p-cos.blogspot.com/2006/08/efficient-layer-activation-for.html' title='Efficient Layer Activation for Switching Context-dependent Behavior'/><author><name>Pascal Costanza</name><uri>http://www.blogger.com/profile/04512975624438301971</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://bp1.blogger.com/_DIhRAGqWubM/SBVnDJc6vsI/AAAAAAAAAAM/oWU7nSP-yzU/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20069114.post-115521614585422346</id><published>2006-08-10T15:17:00.000+02:00</published><updated>2006-08-10T15:22:25.873+02:00</updated><title type='text'>Common Lisp Document Repository</title><content type='html'>&lt;strong&gt;CDR - The Common Lisp Document Repository&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;What?&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;The Common Lisp Document Repository is a repository of documents that are of interest to the Common Lisp community. The most important property of a CDR document is that it will never change: if you refer to it, you can be sure that your reference will always refer to exactly the same document.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Why?&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;There have been a number of attempts to establish a standardization process for Common Lisp after it has been officially published as an ANSI standard. The ANSI standardization was very costly and very time consuming (according to &lt;a href="http://groups.google.com/group/comp.lang.lisp/msg/15248a1b11c5a603"&gt;http://groups.google.com/group/comp.lang.lisp/msg/15248a1b11c5a603&lt;/a&gt; it took nearly 10 years and at least $400K).&lt;br /&gt;&lt;br /&gt;The goal of the Common Lisp Document Repository is to be more light-weight and more efficient. We focus on one aspect of standardization: the ability to refer to a specification document in an unambiguous way.&lt;br /&gt;&lt;br /&gt;The Common Lisp Document Repository intentionally does not define a process for coming up with specifications or any other means to guarantee some level of quality of the submitted documents. Instead, we aim for a community-driven, decentralized approach to come up, discuss and finalize specifications. In this sense, we only provide the services of librarians.&lt;br /&gt;&lt;br /&gt;We hope that the Common Lisp Document Repository has the potential to prove useful in establishing new de-facto standards, and to serve as a stepping stone for more formal standardizations in the long run.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Where?&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;The Common Lisp Document Repository is hosted at &lt;a href="http://cdr.eurolisp.org"&gt;http://cdr.eurolisp.org&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;How?&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;The Common Lisp Document Repository is a repository of printable text documents that contain material that are of interest to the Common Lisp community. For example, a CDR document can contain specifications of libraries, language extensions, example implementations, test suites, articles, etc. Each CDR document will be identified by a number. Form and possible contents of CDR documents are not prescribed, but the goal is to provide the Common Lisp community with a way to unambiguously refer to a document by way of mentioning its CDR number.&lt;br /&gt;&lt;br /&gt;The repository already contains two CDR documents: CDR 0 describes CDR itself, and CDR 1 is the CLOS Metaobject Protocol specification as published in the book "The Art of the Metaobject" by Gregor Kiczales, Jim des Rivieres and Daniel G. Bobrow.&lt;br /&gt;&lt;br /&gt;The presence of a document in the CDR repository does not imply a recommendation of any kind, but we leave the acceptance or rejection of particular documents to the community's natural selection process. We expect that some CDR documents will claim to be replacements of, or clarifications for, previous ones, but again such statements do not mean that this repository's goal is to enforce such developments. We are just librarians who want to make it possible to refer and cite documents of interest to Common Lispers.&lt;br /&gt;&lt;br /&gt;We use a light-weight process that consists of the following steps:&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;One or more authors submit a document.&lt;/li&gt;&lt;li&gt;We check that the document is a printable text document, that it is indeed about Common Lisp, and that it does not contain objectionable material (like porn, religious or political statements, etc.).&lt;/li&gt;&lt;li&gt;The document will be immediately assigned a fresh CDR number that can be used to refer to the document. We will make the document available for an initial period, after which it will be frozen and moved into final status, unless the authors decide to withdraw the document during the initial period.&lt;/li&gt;&lt;/ol&gt;For more details about the process, see the CDR manual at &lt;a href="http://cdr.eurolisp.org"&gt;http://cdr.eurolisp.org&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The CDR editors&lt;br /&gt;Marc Battyani, Pascal Costanza, Arthur Lemmens, Edi Weitz&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20069114-115521614585422346?l=p-cos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://p-cos.blogspot.com/feeds/115521614585422346/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20069114&amp;postID=115521614585422346' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20069114/posts/default/115521614585422346'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20069114/posts/default/115521614585422346'/><link rel='alternate' type='text/html' href='http://p-cos.blogspot.com/2006/08/common-lisp-document-repository.html' title='Common Lisp Document Repository'/><author><name>Pascal Costanza</name><uri>http://www.blogger.com/profile/04512975624438301971</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://bp1.blogger.com/_DIhRAGqWubM/SBVnDJc6vsI/AAAAAAAAAAM/oWU7nSP-yzU/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20069114.post-114821302872525651</id><published>2006-05-21T14:01:00.000+02:00</published><updated>2006-05-21T14:03:48.730+02:00</updated><title type='text'>Music recommendations May 2006</title><content type='html'>I am listening a lot to the following recent releases a lot, which I hereby recommend.&lt;span style="font-size:12pt;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;ul&gt;&lt;li&gt;Circlesquare, Fight Sounds EP. This is from Canada, and the music is somewhat like an ambient version of &lt;a href="http://www.nin.com/"&gt;Nine Inch Nails&lt;/a&gt;. You can see a &lt;a href="http://www.circlesquare.ca/fightsounds/"&gt;video clip for the title track&lt;/a&gt; at the &lt;a href="http://www.circlesquare.ca/"&gt;Circlesquare website&lt;/a&gt; to get an impression.&lt;/li&gt;&lt;li&gt;Motor, Klunk. Techno with some dark edge. The reason is that one of the members has previously been with Industrial projects &lt;a href="http://www.invisiblerecords.com/bands/hellbent/"&gt;Hellbent&lt;/a&gt; and Haloblack, and the influence is clearly there. See the &lt;a href="http://www.youtube.com/watch?v=a4VLU6QW1nk"&gt;video for the current single&lt;/a&gt; and check out &lt;a href="http://www.din9.com/"&gt;their website&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;Ministry, Rio Grande Blood. This time they have gone metal. ;) You can listen to clips from the new album at the &lt;a href="http://store.ministrymusic.org/"&gt;Ministry Online Store&lt;/a&gt;. (See the link above the album cover.)&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20069114-114821302872525651?l=p-cos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://p-cos.blogspot.com/feeds/114821302872525651/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20069114&amp;postID=114821302872525651' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20069114/posts/default/114821302872525651'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20069114/posts/default/114821302872525651'/><link rel='alternate' type='text/html' href='http://p-cos.blogspot.com/2006/05/music-recommendations-may-2006.html' title='Music recommendations May 2006'/><author><name>Pascal Costanza</name><uri>http://www.blogger.com/profile/04512975624438301971</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://bp1.blogger.com/_DIhRAGqWubM/SBVnDJc6vsI/AAAAAAAAAAM/oWU7nSP-yzU/S220/me.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20069114.post-114821131792851765</id><published>2006-05-21T13:32:00.000+02:00</published><updated>2006-05-21T13:35:17.963+02:00</updated><title type='text'>Call for Participation: 3rd European Lisp Workshop</title><content type='html'>The &lt;a href="http://lisp-ecoop06.bknr.net"&gt;3rd European Lisp Workshop&lt;/a&gt; will be held on July 3 in Nantes, France, as part of this year's European Conference on Object-Oriented Programming (&lt;a href="http://2006.ecoop.org/"&gt;ECOOP 2006&lt;/a&gt;). We have accepted five papers for presentation, about an agent-based framework to simulate metabolic processes, simulation of quantum computations, Lisp tools for musicology, naturalising foreign libraries, and beating C in scientific computing applications, as well as a breakout group on Lisp Hardware revisited.&lt;br /&gt;&lt;br /&gt;Nick Levine will be giving a keynote presentation on &lt;em&gt;How to stay poor, with macros and closures&lt;/em&gt;. He has been a professional Lisp consultant for over two decades and is the organizer of the upcoming International Lisp Conference 2007 in Cambridge, UK. We are grateful to &lt;a href="http://www.ravenbrook.com/"&gt;Ravenbrook Limited&lt;/a&gt; for sponsoring the keynote presentation.&lt;br /&gt;&lt;br /&gt;The workshop will also contain tutorials about CLIM and/or reflection and metaprogramming in Lisp.&lt;br /&gt;&lt;br /&gt;There is still enough for additional participants, so please &lt;a href="mailto:pc@p-cos.net"&gt;contact me&lt;/a&gt; if you wish to participate. Note that the early registration deadline is May 23, 2006.&lt;br /&gt;&lt;br /&gt;See the &lt;a href="http://lisp-ecoop06.bknr.net/"&gt;workshop website&lt;/a&gt; for more detailed information.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20069114-114821131792851765?l=p-cos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://p-cos.blogspot.com/feeds/114821131792851765/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20069114&amp;postID=114821131792851765' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20069114/posts/default/114821131792851765'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20069114/posts/default/114821131792851765'/><link rel='alternate' type='text/html' href='http://p-cos.blogspot.com/2006/05/call-for-participation-3rd-european.html' title='Call for Participation: 3rd European Lisp Workshop'/><author><name>Pascal Costanza</name><uri>http://www.blogger.com/profile/04512975624438301971</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://bp1.blogger.com/_DIhRAGqWubM/SBVnDJc6vsI/AAAAAAAAAAM/oWU7nSP-yzU/S220/me.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20069114.post-114329206817673806</id><published>2006-03-25T14:06:00.000+01:00</published><updated>2006-03-25T14:07:49.293+01:00</updated><title type='text'>Edit-time MOP</title><content type='html'>Last week I have attended the &lt;a href="http://aosd.net/2006/index.php"&gt;AOSD'06 conference&lt;/a&gt; in my old hometown in Bonn - it was nice to be back there for a week, meet some friends, go to some favorite places of mine, especially &lt;a href="http://www.cafe-goettlich.de/"&gt;Cafe G&amp;#246;ttlich&lt;/a&gt;,  and at the same time do some work. I have found one of the presentations I have seen especially intriguing, about a first implementation of an &lt;a href="http://www.cs.ubc.ca/~ade/research/are-mop-oal06.pdf"&gt;edit-time metaobject protocol&lt;/a&gt;. Unfortunately, it is implemented in the wrong language. ;) I think this could be a worthwhile project to implement in Lisp or Scheme.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20069114-114329206817673806?l=p-cos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://p-cos.blogspot.com/feeds/114329206817673806/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20069114&amp;postID=114329206817673806' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20069114/posts/default/114329206817673806'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20069114/posts/default/114329206817673806'/><link rel='alternate' type='text/html' href='http://p-cos.blogspot.com/2006/03/edit-time-mop.html' title='Edit-time MOP'/><author><name>Pascal Costanza</name><uri>http://www.blogger.com/profile/04512975624438301971</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://bp1.blogger.com/_DIhRAGqWubM/SBVnDJc6vsI/AAAAAAAAAAM/oWU7nSP-yzU/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20069114.post-114269075947504604</id><published>2006-03-18T15:04:00.000+01:00</published><updated>2006-03-18T15:05:59.723+01:00</updated><title type='text'>3rd European Lisp Workshop registration fees</title><content type='html'>Apart from the previous news that the &lt;a href="http://lisp-ecoop06.bknr.net/"&gt;3rd European Lisp Workshop&lt;/a&gt; will have a best-paper award and a keynote presentation by Nick Levine, we now also have information about the registration fees. If you want to attend only the European Lisp Workshop (two days), this will cost 150 Euro for students and 250 Euro for regular participants. If you want to attend the whole conference, including the workshop, this will cost 300 Euro for students and 500 Euro for regular participants. During the workshop days, coffee breaks and lunches are included in those fees, as are receptions on both evenings that typically include food and drinks. Note that these fees are early registration fees valid only before May 23, 2006. See the &lt;a href="http://www.emn.fr/x-info/ecoop2006/fees.php"&gt;conference's page about registration fees&lt;/a&gt; for more information.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20069114-114269075947504604?l=p-cos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://p-cos.blogspot.com/feeds/114269075947504604/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20069114&amp;postID=114269075947504604' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20069114/posts/default/114269075947504604'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20069114/posts/default/114269075947504604'/><link rel='alternate' type='text/html' href='http://p-cos.blogspot.com/2006/03/3rd-european-lisp-workshop.html' title='3rd European Lisp Workshop registration fees'/><author><name>Pascal Costanza</name><uri>http://www.blogger.com/profile/04512975624438301971</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://bp1.blogger.com/_DIhRAGqWubM/SBVnDJc6vsI/AAAAAAAAAAM/oWU7nSP-yzU/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20069114.post-114237360459371773</id><published>2006-03-14T22:59:00.000+01:00</published><updated>2006-03-14T23:00:04.646+01:00</updated><title type='text'>News for the 3rd European Lisp Workshop</title><content type='html'>There two news items concerning the &lt;a href="http://lisp-ecoop06.bknr.net/"&gt;3rd European Lisp Workshop&lt;/a&gt;:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Nick Levine will be giving a keynote presentation at the European Lisp Workshop. He has been a professional Lisp consultant for over two decades and is the organizer of the upcoming International Lisp Conference 2007 in Cambridge, UK. We are grateful to &lt;a href="http://www.ravenbrook.com/"&gt;Ravenbrook Limited&lt;/a&gt; for sponsoring the keynote presentation.&lt;/li&gt;&lt;li&gt;The &lt;a href="http://www.alu.org/"&gt;Association of Lisp Users&lt;/a&gt; has kindly sponsored a $500 prize fund for exceptional papers submitted to this year's European Lisp Workshop. Both the ALU and the workshop organizers are looking forward to your submissions.&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20069114-114237360459371773?l=p-cos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://p-cos.blogspot.com/feeds/114237360459371773/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20069114&amp;postID=114237360459371773' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20069114/posts/default/114237360459371773'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20069114/posts/default/114237360459371773'/><link rel='alternate' type='text/html' href='http://p-cos.blogspot.com/2006/03/news-for-3rd-european-lisp-workshop.html' title='News for the 3rd European Lisp Workshop'/><author><name>Pascal Costanza</name><uri>http://www.blogger.com/profile/04512975624438301971</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://bp1.blogger.com/_DIhRAGqWubM/SBVnDJc6vsI/AAAAAAAAAAM/oWU7nSP-yzU/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20069114.post-114173479418551300</id><published>2006-03-07T13:32:00.000+01:00</published><updated>2006-03-07T13:33:14.220+01:00</updated><title type='text'>Dynamic Languages Day Material</title><content type='html'>The presentations, some demo code and quicktime movies of the Dynamic Languages Day @ Vrije Universiteit Brussel are now available for download at the &lt;a href="http://prog.vub.ac.be/events/2005/BADL/DLD/dld.html"&gt;DLD website&lt;/a&gt;. Since the quicktime movies are quite large, we welcome any volunteers who want to mirror them. Please send me links that I can mention on the DLD website.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20069114-114173479418551300?l=p-cos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://p-cos.blogspot.com/feeds/114173479418551300/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20069114&amp;postID=114173479418551300' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20069114/posts/default/114173479418551300'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20069114/posts/default/114173479418551300'/><link rel='alternate' type='text/html' href='http://p-cos.blogspot.com/2006/03/dynamic-languages-day-material.html' title='Dynamic Languages Day Material'/><author><name>Pascal Costanza</name><uri>http://www.blogger.com/profile/04512975624438301971</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://bp1.blogger.com/_DIhRAGqWubM/SBVnDJc6vsI/AAAAAAAAAAM/oWU7nSP-yzU/S220/me.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20069114.post-114072470221037181</id><published>2006-02-23T20:56:00.000+01:00</published><updated>2006-02-23T20:58:22.243+01:00</updated><title type='text'>3rd European Lisp Workshop</title><content type='html'>We are organizing another instance of the European Lisp Workshop (former European Lisp and Scheme Workshop). This time it will be in Nantes, Frances, on July 3 &amp;#38; 4, and will again be co-located with &lt;a href="http://2006.ecoop.org/"&gt;ECOOP&lt;/a&gt;, as in previous years. This time, the workshop is organized by Theo D'Hondt, Arthur Lemmens, Christophe Rhodes and myself. See the &lt;a href="http://lisp-ecoop06.bknr.net/"&gt;ELW'06 website&lt;/a&gt; for further information.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20069114-114072470221037181?l=p-cos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://p-cos.blogspot.com/feeds/114072470221037181/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20069114&amp;postID=114072470221037181' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20069114/posts/default/114072470221037181'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20069114/posts/default/114072470221037181'/><link rel='alternate' type='text/html' href='http://p-cos.blogspot.com/2006/02/3rd-european-lisp-workshop.html' title='3rd European Lisp Workshop'/><author><name>Pascal Costanza</name><uri>http://www.blogger.com/profile/04512975624438301971</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://bp1.blogger.com/_DIhRAGqWubM/SBVnDJc6vsI/AAAAAAAAAAM/oWU7nSP-yzU/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20069114.post-113976265180333827</id><published>2006-02-12T17:42:00.000+01:00</published><updated>2006-02-12T17:44:11.906+01:00</updated><title type='text'>Workshop on Generic Programming 2006</title><content type='html'>I am a member of the program committee of the forthcoming &lt;a href="http://www.informatik.uni-bonn.de/~ralf/wgp2006.html"&gt;Workshop on Generic Programming 2006&lt;/a&gt; at the International Conference on Functional Programming.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20069114-113976265180333827?l=p-cos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://p-cos.blogspot.com/feeds/113976265180333827/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20069114&amp;postID=113976265180333827' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20069114/posts/default/113976265180333827'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20069114/posts/default/113976265180333827'/><link rel='alternate' type='text/html' href='http://p-cos.blogspot.com/2006/02/workshop-on-generic-programming-2006.html' title='Workshop on Generic Programming 2006'/><author><name>Pascal Costanza</name><uri>http://www.blogger.com/profile/04512975624438301971</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://bp1.blogger.com/_DIhRAGqWubM/SBVnDJc6vsI/AAAAAAAAAAM/oWU7nSP-yzU/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20069114.post-113770773187024738</id><published>2006-01-19T22:55:00.000+01:00</published><updated>2006-01-19T22:55:31.910+01:00</updated><title type='text'>Closer Project: New Releases</title><content type='html'>Today, I have released new versions of all the packages currently included in the &lt;a href="http://common-lisp.net/project/closer/"&gt;Closer Project&lt;/a&gt;. This project is an umbrella project for a few subprojects whose aim is to improve the usability of the CLOS MOP across different Common Lisp implementations. It is also the home of ContextL, a full-fledged CLOS extension in its own right providing language constructs for Context-oriented Programming (COP).&lt;br /&gt;&lt;br /&gt;All packages now support the current versions of all supported Common Lisp implementations. They are:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Allegro Common Lisp 7.0 Enterprise Edition.&lt;/li&gt;&lt;li&gt;Allegro Common Lisp 8.0 Enterprise Edition.&lt;/li&gt;&lt;li&gt;CLisp 2.35 - 2.37&lt;/li&gt;&lt;li&gt;CMU Common Lisp 19c&lt;/li&gt;&lt;li&gt;LispWorks 4.4.5, 4.4.6 for Macintosh, Personal Edition&lt;/li&gt;&lt;li&gt;LispWorks 4.4.5, 4.4.6 for Macintosh, Professional Edition&lt;/li&gt;&lt;li&gt;Macintosh Common Lisp 5.1&lt;/li&gt;&lt;li&gt;OpenMCL 1.0&lt;/li&gt;&lt;li&gt;SBCL 0.9.7, 0.9.8&lt;/li&gt;&lt;/ul&gt;Highlights of the new versions.&lt;br /&gt;&lt;br /&gt;MOP Feature Tests 0.4:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;All previous known but untested problems have either been resolved or turned into actual tests.&lt;/li&gt;&lt;li&gt;Added a test for checking whether the slot order requested by a primary method for COMPUTE-SLOTS is honored by a MOP. (Thanks to Christophe Rhodes for the suggestion.)&lt;/li&gt;&lt;li&gt;Added a test for checking whether the object returend by COMPUTE-DISCRIMINATING-FUNCTION can be funcalled and whether the second parameter to SET-FUNCALLABLE-INSTANCE-FUNCTION can be a 'real' closure.&lt;/li&gt;&lt;li&gt;Added a test for checking whether one can use one's own :ALLOCATION kinds.&lt;/li&gt;&lt;li&gt;Added a test for checking whether a generic function without any methods defined can still be called.&lt;/li&gt;&lt;li&gt;Added a test for checking whether a DEFMETHOD form can have multiple qualifiers.&lt;/li&gt;&lt;li&gt;Added more fine-grained tests for checking SLOT-XXX-USING-CLASS functions.&lt;/li&gt;&lt;li&gt;Added a test whether REINITIALIZE-INSTANCE on a class metaobject calls FINALIZE-INHERITANCE. Luckily, all implementations pass that test.&lt;/li&gt;&lt;/ul&gt;Closer to MOP 0.3:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;The supported Common Lisp implementations improved with regard to their support for the MOP, with varying extent. This required a few changes here and there.&lt;/li&gt;&lt;li&gt;The lack of extensible :ALLOCATION kinds in Allegro Common Lisp, as specified in AMOP, is fixed. Thanks to John Foderaro for giving me the important hint on how to solve this.&lt;/li&gt;&lt;/ul&gt;ContextL 0.2:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;When rebinding special places, it is now checked whether they actually contain special symbols, so this is now a safe operation. This can be tweaked to omit the check for improved performance.&lt;/li&gt;&lt;li&gt;Changing a non-special slot to a special slot in an already existing class is now also supported in Allegro Common Lisp from 7.0 on. Thanks to Duane Rettig for fixing the related bug in Allegro and thereby enabling this feature.&lt;/li&gt;&lt;li&gt;Improved parsing of layered methods: The :METHOD option in DEFINE-LAYERED-FUNCTION is now parsed and processed correctly. Furthermore, one can now optionally give a name to the otherwise anonymous layer parameter. This is useful for calling CALL-NEXT-METHOD with changed parameters.&lt;/li&gt;&lt;li&gt;Added a new namespace for layers. Before, their names could accidentally clash with class names.&lt;/li&gt;&lt;li&gt;Added a number of performance tweaks and better error messages.&lt;/li&gt;&lt;li&gt;Fixed a few bugs.&lt;/li&gt;&lt;/ul&gt;Special thanks go to John Foderaro, Duane Rettig and Christophe Rhodes (in alphabetical order) for exceptional help.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20069114-113770773187024738?l=p-cos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://p-cos.blogspot.com/feeds/113770773187024738/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20069114&amp;postID=113770773187024738' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20069114/posts/default/113770773187024738'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20069114/posts/default/113770773187024738'/><link rel='alternate' type='text/html' href='http://p-cos.blogspot.com/2006/01/closer-project-new-releases.html' title='Closer Project: New Releases'/><author><name>Pascal Costanza</name><uri>http://www.blogger.com/profile/04512975624438301971</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://bp1.blogger.com/_DIhRAGqWubM/SBVnDJc6vsI/AAAAAAAAAAM/oWU7nSP-yzU/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20069114.post-113709532498848862</id><published>2006-01-12T20:47:00.000+01:00</published><updated>2006-01-12T20:48:45.380+01:00</updated><title type='text'>Dynamic Languages Day @ Vrije Universiteit Brussel</title><content type='html'>On Monday, February 12 there will be a &lt;a href="http://prog.vub.ac.be/events/2005/BADL/DLD/dld.html"&gt;Dynamic Languages Day @ Vrije Universiteit Brussel&lt;/a&gt;. It will consist of a number of talks about dynamic languages. It begins with a presentation about how Scheme is used at the Vrije Universiteit Brussel as an introductory programming language, and will be followed by presentations about Self, Smalltalk and Common Lisp. A special focus will be on the reflective and metaobject features of the respective languages. I will contribute to this event by repeating my tutorial on generic functions and the CLOS Metaobject Protocol that I have already given at OOPSLA'05 and several other past events. Attendance is free and open for the general public. See the website for that event for more information.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20069114-113709532498848862?l=p-cos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://p-cos.blogspot.com/feeds/113709532498848862/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20069114&amp;postID=113709532498848862' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20069114/posts/default/113709532498848862'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20069114/posts/default/113709532498848862'/><link rel='alternate' type='text/html' href='http://p-cos.blogspot.com/2006/01/dynamic-languages-day-vrije.html' title='Dynamic Languages Day @ Vrije Universiteit Brussel'/><author><name>Pascal Costanza</name><uri>http://www.blogger.com/profile/04512975624438301971</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://bp1.blogger.com/_DIhRAGqWubM/SBVnDJc6vsI/AAAAAAAAAAM/oWU7nSP-yzU/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20069114.post-113680833282135321</id><published>2006-01-09T13:05:00.000+01:00</published><updated>2006-01-09T13:06:31.173+01:00</updated><title type='text'>Gekido Party 01/06</title><content type='html'>This week's Saturday, I'll be going to the &lt;a href="http://www.gekido.de/"&gt;Gekido Party&lt;/a&gt;, which is one of the coolest parties around, pretty good music. And that's not just because the organizers and DJs are friends of mine. ;)&lt;br /&gt;&lt;br /&gt;Here is a picture from last November's Gekido Party. It shows Steffi Schmid, one of my absolutely best friends of all time, and myself.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://p-cos.net/blogpics/IMAG0018_1.jpg" alt="Steffi und Pascal"&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20069114-113680833282135321?l=p-cos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://p-cos.blogspot.com/feeds/113680833282135321/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20069114&amp;postID=113680833282135321' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20069114/posts/default/113680833282135321'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20069114/posts/default/113680833282135321'/><link rel='alternate' type='text/html' href='http://p-cos.blogspot.com/2006/01/gekido-party-0106.html' title='Gekido Party 01/06'/><author><name>Pascal Costanza</name><uri>http://www.blogger.com/profile/04512975624438301971</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://bp1.blogger.com/_DIhRAGqWubM/SBVnDJc6vsI/AAAAAAAAAAM/oWU7nSP-yzU/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20069114.post-113637666072168744</id><published>2006-01-04T13:09:00.000+01:00</published><updated>2006-01-04T13:11:31.793+01:00</updated><title type='text'>Happy new year!</title><content type='html'>A &lt;a href="http://wingolog.org/archives/2006/01/02/slime"&gt;Pythonista likes SLIME&lt;/a&gt;, the &lt;a href="http://common-lisp.net/project/slime/"&gt;Superior Lisp Interaction Mode for Emacs&lt;/a&gt;. And &lt;a href="http://www.paulgraham.com/procrastination.html"&gt;Paul Graham prefers to write essays instead of working on something more important&lt;/a&gt;. ;)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20069114-113637666072168744?l=p-cos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://p-cos.blogspot.com/feeds/113637666072168744/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20069114&amp;postID=113637666072168744' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20069114/posts/default/113637666072168744'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20069114/posts/default/113637666072168744'/><link rel='alternate' type='text/html' href='http://p-cos.blogspot.com/2006/01/happy-new-year.html' title='Happy new year!'/><author><name>Pascal Costanza</name><uri>http://www.blogger.com/profile/04512975624438301971</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://bp1.blogger.com/_DIhRAGqWubM/SBVnDJc6vsI/AAAAAAAAAAM/oWU7nSP-yzU/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20069114.post-113568970527266009</id><published>2005-12-27T14:20:00.000+01:00</published><updated>2005-12-27T14:21:45.280+01:00</updated><title type='text'>ContextL in the media</title><content type='html'>&lt;a href="http://bc.tech.coop/"&gt;Bill Clementson&lt;/a&gt; has &lt;a href="http://bc.tech.coop/blog/051223.html"&gt;posted a quicktime movie&lt;/a&gt; of a presentation about &lt;a href="http://www.cliki.net/lisp-on-lines"&gt;Lisp on Lines&lt;/a&gt; by Drew Crampsie. It's a web application framework written in Common Lisp that takes advantage of a number of libraries, including our own &lt;a href="http://common-lisp.net/project/closer/contextl.html"&gt;ContextL&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20069114-113568970527266009?l=p-cos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://p-cos.blogspot.com/feeds/113568970527266009/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20069114&amp;postID=113568970527266009' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20069114/posts/default/113568970527266009'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20069114/posts/default/113568970527266009'/><link rel='alternate' type='text/html' href='http://p-cos.blogspot.com/2005/12/contextl-in-media.html' title='ContextL in the media'/><author><name>Pascal Costanza</name><uri>http://www.blogger.com/profile/04512975624438301971</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://bp1.blogger.com/_DIhRAGqWubM/SBVnDJc6vsI/AAAAAAAAAAM/oWU7nSP-yzU/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20069114.post-113528073926101338</id><published>2005-12-22T20:45:00.000+01:00</published><updated>2005-12-22T20:45:42.643+01:00</updated><title type='text'>MoDELS 2006</title><content type='html'>I am a member of the program committee of &lt;a href="http://www.modelsconference.org/"&gt;MoDELS 2006&lt;/a&gt; - a conference that was previously centered around UML and related technologies, but they are trying to open up. I have talked to the program chair, and he convinced me that he is very serious about this. I have also suggested to explicitly add metaprogramming to the list of topics, and it's in. So this definitely has the potential to become an interesting conference.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20069114-113528073926101338?l=p-cos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://p-cos.blogspot.com/feeds/113528073926101338/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20069114&amp;postID=113528073926101338' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20069114/posts/default/113528073926101338'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20069114/posts/default/113528073926101338'/><link rel='alternate' type='text/html' href='http://p-cos.blogspot.com/2005/12/models-2006.html' title='MoDELS 2006'/><author><name>Pascal Costanza</name><uri>http://www.blogger.com/profile/04512975624438301971</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://bp1.blogger.com/_DIhRAGqWubM/SBVnDJc6vsI/AAAAAAAAAAM/oWU7nSP-yzU/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20069114.post-113518268769125312</id><published>2005-12-21T22:10:00.000+01:00</published><updated>2005-12-27T14:24:13.093+01:00</updated><title type='text'>Best Albums of 2005</title><content type='html'>OK, this is my first blog posting. In order to tell you something that makes a little sense, I list what I consider to be the best albums of 2005. The year is not over yet, but we're pretty close, so I think that's ok. So let's start:&lt;br /&gt;&lt;br /&gt;&lt;p style="text-indent:20pt;"&gt;1. Depeche Mode - Playing the Angel&lt;/p&gt;&lt;p style="text-indent:20pt;"&gt;Depeche Mode is one of my all-time favorite bands. Their last album "Exciter" was somewhat weak in retrospect, for example weaker than "Ultra", because it had a number of fillers that are definitely not among their best songs. I think this time they have managed to produce an album that can be considered to be among their best. It took a time to grow on me, but that's typically a good sign. It's surprising that Dave Gahan's songs are among the best ones on this album, especially "Suffer Well" and "Nothing's Impossible". Another favorite is "The Darkest Star".&lt;/p&gt;&lt;p style="text-indent:20pt;"&gt;2. Rasputina - A Radical Recital&lt;/p&gt;&lt;p style="text-indent:20pt;"&gt;Another long-time favorite. I don't remember how I discovered Rasputina about almost ten year's ago. As far as I know, their records have never been officially released in Europe, so it was definitely a bit of an accident. This one is a live album, and a kind of "best of". I would love to see them live at least just once, it must be a great experience. Favorite songs on this album: "Rose K." and "A Quitter".&lt;/p&gt;&lt;p style="text-indent:20pt;"&gt;3. Paula - Ruhig Blut&lt;/p&gt;&lt;p style="text-indent:20pt;"&gt;This is a German band. Previously, they have made purely electronic music, a mixture between OMD, Erasure and Marianne Rosenberg (because of the very high voice of the female lead singer). Now they have switched to guitars and real drums, a combination that is currently very popular in Germany, but it works surprisingly well for me here. The lyrics are great. All the songs are very good, but maybe you can try "Ruhig Blut" and "Lied f&amp;#252;r Dich".&lt;/p&gt;&lt;p style="text-indent:20pt;"&gt;4. Wir sind Helden - Von hier an blind&lt;/p&gt;&lt;p style="text-indent:20pt;"&gt;Another German band which is actually quite popular in Germany, and they actually use that popular combination of new-wavish guitars. The previous album mixed this with some Electroclash elements, but here the electronic elements are more in the background. Recommended titles: "Echolot" and "Nur ein Wort". The single "Gekommen um zu bleiben" is actually the worst track in my opinion.&lt;/p&gt;&lt;p style="text-indent:20pt;"&gt;5. Nine Inch Nails - With Teeth&lt;/p&gt;&lt;p style="text-indent:20pt;"&gt;Nine Inch Nails have finally made a relatively straightforward album. In the past, they have always put a lot of work into new sounds and complex song structures, and therefore it always took them a lot of time to release anything. But it was always worth it. "The Fragile" is an excellent album. Apparently, they don't have that energy anymore - I recall reading an interview with Trent Reznor in which he acknowledged this. Nevertheless, "With Teeth" is still better than lots of other music that is being produced, and I really enjoy listening to it. In the beginning, I didn't like "The Hand That Feeds" at all, but I even enjoy that one by now. Other recommended songs: "All the Love in the World" and "Only".&lt;/p&gt;&lt;p style="text-indent:20pt;"&gt;6. Ministry - Rantology&lt;/p&gt;&lt;p style="text-indent:20pt;"&gt;This is a party album, containing the best songs of Ministry (only the industrial metal stuff) from their back catalogue in remixed versions. Only the live material (the last three tracks) wasn't really necessary. This is not an essential record, but great fun. The new versions don't add anything really interesting, but it's great to listen to the tracks in one row. The one completely new song is probably my most favorite track of 2005, called "The Great Satan". Also great: "Unsing (Alternate Mix)"&lt;/p&gt;&lt;p style="text-indent:20pt;"&gt;7. Kate Bush - Aerial&lt;/p&gt;&lt;p style="text-indent:20pt;"&gt;Great album, although a slight bit too esoteric for my taste. "King of the Mountain" is a great track and a great single. "Bertie" and "Mrs. Bartolozzi" get on my nerves, though.&lt;/p&gt;&lt;p style="text-indent:20pt;"&gt;8. Daft Punk - Human After All&lt;/p&gt;&lt;p style="text-indent:20pt;"&gt;One of the most intelligent and funny examples of deconstructed house music. It's hard to describe. For example, "The Prime Time of Your Life" has almost all the necessary ingredients to be a party/disco hit (which would actually repel me because I normally don't like such kind of music), but it completely (and intentionally) misses the important points. It's clear what it should have been, but I'm glad that it's not. ;) "Robot Rock" takes a 70's rock sample ("Eye of the Tiger", I think), repeats it to death, but always skips the second half. Again, you know that it should be there, but they intentionally have left it incomplete. What a joy! ;)&lt;/p&gt;&lt;p style="text-indent:20pt;"&gt;9. Autechre - Untilted&lt;/p&gt;&lt;p style="text-indent:20pt;"&gt;"Intelligent" techno at its best, and they keep getting better and better. Try "LCC" and "Fermium".&lt;/p&gt;&lt;p style="text-indent:20pt;"&gt;10. The Chemical Brothers - Push the Button&lt;/p&gt;&lt;p style="text-indent:20pt;"&gt;I was much more excited when it came out, but now it's just good. They make great music, but something just doesn't stick. Hmm...&lt;/p&gt;&lt;p style="text-indent:20pt;"&gt;11. Mu - Out of Breach (Manchester's Revenge)&lt;/p&gt;&lt;p style="text-indent:20pt;"&gt;A new discovery. Weird electroclash - even weirder than typical electroclash. Try "Out of Breach" (excellent!) and "Paris Hilton" (the song, that is ;).&lt;/p&gt;OK, that's it for the moment...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20069114-113518268769125312?l=p-cos.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://p-cos.blogspot.com/feeds/113518268769125312/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20069114&amp;postID=113518268769125312' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20069114/posts/default/113518268769125312'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20069114/posts/default/113518268769125312'/><link rel='alternate' type='text/html' href='http://p-cos.blogspot.com/2005/12/best-albums-of-2005.html' title='Best Albums of 2005'/><author><name>Pascal Costanza</name><uri>http://www.blogger.com/profile/04512975624438301971</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://bp1.blogger.com/_DIhRAGqWubM/SBVnDJc6vsI/AAAAAAAAAAM/oWU7nSP-yzU/S220/me.jpg'/></author><thr:total>0</thr:total></entry></feed>
