<?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:blogger='http://schemas.google.com/blogger/2008' 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-5728814948530385321</id><updated>2026-02-28T00:14:31.846-07:00</updated><category term="lisp"/><category term="programming"/><category term="common lisp"/><category term="distributed systems"/><category term="ParenScript"/><category term="web programming"/><category term="lisp-ru"/><category term="ClearSky"/><category term="software systems"/><category term="databases"/><category term="javascript"/><category term="parallel computing"/><category term="books"/><category term="concurrency"/><category term="ilc07"/><category term="FreeSoftware"/><category term="lisp tutorial"/><category term="metasystems"/><category term="CLUDG"/><category term="DomainDrivenDesign"/><category term="AppropriateTechnology"/><category term="MobSoftware"/><category term="continuations"/><category term="coworking"/><category term="functionalprogramming"/><category term="hackers"/><category term="history"/><category term="ilc09"/><category term="network programming"/><category term="postmodernism"/><category term="psychology"/><category term="scheme"/><category term="smalltalk"/><category term="software transactional memory"/><category term="AOP"/><category term="Apple"/><category term="GWT"/><category term="HTTP"/><category term="RMS"/><category term="SaaS"/><category term="Subtext"/><category term="XP"/><category term="academic journals"/><category term="academic publishing"/><category term="architecture"/><category term="automation"/><category term="biomimetics"/><category term="britain"/><category term="calgary"/><category term="cloud computing"/><category term="compilers"/><category term="computer architecture"/><category term="computer vision"/><category term="dylan"/><category term="economics"/><category term="emacs"/><category term="futurism"/><category term="garbage collection"/><category term="information warfare"/><category term="internet"/><category term="java"/><category term="lisp machines"/><category term="media"/><category term="montreal"/><category term="motivation"/><category term="network analysis"/><category term="networking"/><category term="politics"/><category term="public library of science"/><category term="retrocomputing"/><category term="scam"/><category term="security"/><category term="sociology"/><category term="spreadsheets"/><category term="symbolics"/><category term="technology"/><category term="transactional systems"/><category term="travel"/><category term="tuplespaces"/><category term="web"/><category term="work"/><title type='text'>a CONS is an object which cares</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='https://carcaddar.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/5728814948530385321/posts/default'/><link rel='alternate' type='text/html' href='https://carcaddar.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='https://www.blogger.com/feeds/5728814948530385321/posts/default?start-index=26&amp;max-results=25'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>157</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-5728814948530385321.post-7713321117787543613</id><published>2012-01-18T17:06:00.001-07:00</published><updated>2012-01-18T17:10:57.934-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="lisp"/><title type='text'>Upcoming presentation about Parenscript</title><content type='html'>I&#39;m going to be giving a talk about &lt;a href=&quot;http://common-lisp.net/project/parenscript/&quot;&gt;Parenscript&lt;/a&gt; to the &lt;a href=&quot;http://www.meetup.com/Montreal-Scheme-Lisp-Users-Group/&quot;&gt;Montreal Scheme/Lisp Users Group&lt;/a&gt; on Thursday, January 19 (meeting details &lt;a href=&quot;http://www.meetup.com/Montreal-Scheme-Lisp-Users-Group/events/46269562/&quot;&gt;here&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;The slides I&#39;m going to be using are &lt;a href=&quot;https://sites.google.com/site/vsedach/parenscript_mslug.pdf&quot;&gt;here&lt;/a&gt;, and a list of links referenced in the talk is below. The &lt;a href=&quot;http://carcaddar.blogspot.com/2007/09/lisping-in-nyc.html&quot;&gt;last time&lt;/a&gt; I gave a presentation on Parenscript was to &lt;a href=&quot;http://www.lispnyc.org/&quot;&gt;LispNYC&lt;/a&gt; in 2007. Parenscript has received a huge number of changes and improvements since then, and continues to be the best language/compiler to JavaScript and one of the best tools available for web application development. What&#39;s also new since 2007 are libraries and tools that extend Parenscript: &lt;a href=&quot;https://github.com/gonzojive&quot;&gt;Red Daly&lt;/a&gt; has added CLOS and the Common Lisp condition system to JavaScript as a Parenscript library, and there are now several options for interactive development with SLIME in your browser.&lt;br /&gt;&lt;br /&gt;Links:&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://common-lisp.net/project/parenscript/&quot;&gt;Parenscript&lt;/a&gt;&lt;br /&gt;&lt;li&gt;&lt;a href=&quot;http://ceaude.twoticketsplease.de/js-lisps.html&quot;&gt;Moritz Heidkamp&#39;s survey of Lisp-in-JavaScript implementations&lt;/a&gt;&lt;br /&gt;&lt;li&gt;&lt;a href=&quot;http://www.kantz.com/jason/programs/jsgen/&quot;&gt;Jason Kantz&#39;s JSGEN&lt;/a&gt;&lt;br /&gt;&lt;li&gt;&lt;a href=&quot;https://github.com/gigamonkey/monkeylib-foo/blob/master/lispscript.lisp&quot;&gt;Peter Seibel&#39;s Lispscript&lt;/a&gt;&lt;br /&gt;&lt;li&gt;&lt;a href=&quot;https://github.com/gonzojive/paren-psos&quot;&gt;Red Daly&#39;s PSOS&lt;/a&gt;&lt;br /&gt;&lt;li&gt;&lt;a href=&quot;http://dynamo.iro.umontreal.ca/~gambit/wiki/index.php/Dumping_Grounds#Language&quot;&gt;Catherine Gaudron and Marc Feeley&#39;s JavaScriptScheme Scheme to JavaScript compiler&lt;/a&gt;&lt;br /&gt;&lt;li&gt;Web frameworks: &lt;a href=&quot;http://bknr.net/html/home.html&quot;&gt;BKNR&lt;/a&gt;, &lt;a href=&quot;http://common-lisp.net/project/ucw/&quot;&gt;UCW&lt;/a&gt;, &lt;a href=&quot;http://weblocks.viridian-project.de/&quot;&gt;Weblocks&lt;/a&gt;, &lt;a href=&quot;http://common-lisp.net/project/teepeedee2/&quot;&gt;teepeedee2&lt;/a&gt;&lt;br /&gt;&lt;li&gt;Libraries: &lt;a href=&quot;http://common-lisp.net/project/suave/&quot;&gt;Suave&lt;/a&gt;, &lt;a href=&quot;https://github.com/paddymul/css-lite&quot;&gt;css-lite&lt;/a&gt;, &lt;a href=&quot;http://common-lisp.net/project/clouchdb/&quot;&gt;clouchdb&lt;/a&gt;, &lt;a href=&quot;http://common-lisp.net/project/uri-template/&quot;&gt;uri-template&lt;/a&gt;, &lt;a href=&quot;http://code.google.com/p/cl-closure-template/&quot;&gt;cl-closure-template&lt;/a&gt;&lt;br /&gt;&lt;li&gt;&lt;a href=&quot;http://www-sop.inria.fr/indes/scheme2js/&quot;&gt;Scheme2JS&lt;/a&gt;&lt;br /&gt;&lt;li&gt;&lt;a href=&quot;http://lists.common-lisp.net/pipermail/parenscript-devel/2009-November/000641.html&quot;&gt;Parenscript mailing list thread on multiple value return&lt;/a&gt;&lt;br /&gt;&lt;li&gt;&lt;a href=&quot;http://blogs.bl0rg.net/netzstaub/2005/03/14/parenscript/&quot;&gt;Manuel Odendahl&#39;s original Parenscript announcement&lt;/a&gt;&lt;br /&gt;&lt;li&gt;&lt;a href=&quot;https://github.com/3b/slime-proxy&quot;&gt;slime-proxy&lt;/a&gt;&lt;br /&gt;&lt;/ul&gt;</content><link rel='replies' type='application/atom+xml' href='https://carcaddar.blogspot.com/feeds/7713321117787543613/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment/fullpage/post/5728814948530385321/7713321117787543613' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/5728814948530385321/posts/default/7713321117787543613'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/5728814948530385321/posts/default/7713321117787543613'/><link rel='alternate' type='text/html' href='https://carcaddar.blogspot.com/2012/01/upcoming-presentation-about-parenscript.html' title='Upcoming presentation about Parenscript'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5728814948530385321.post-4953006507904021095</id><published>2011-11-28T13:44:00.003-07:00</published><updated>2011-11-28T16:47:02.518-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="lisp"/><title type='text'>Montreal Scheme/Lisp Users Group back in action</title><content type='html'>After a long hiatus, the &lt;a href=&quot;http://www.meetup.com/Montreal-Scheme-Lisp-Users-Group/&quot;&gt;Montreal Scheme/Lisp Users Group (MSLUG)&lt;/a&gt; is back to regular meetings, with the latest one taking place November 24.&lt;br /&gt;&lt;br /&gt;Marc Feeley gave two talks, the first presenting his experiences adapting the &lt;a href=&quot;http://dynamo.iro.umontreal.ca/~gambit/wiki/index.php/Main_Page&quot;&gt;Gambit Scheme&lt;/a&gt; implementation into the &lt;a href=&quot;http://itunes.apple.com/us/app/gambit-repl/id434534076?mt=8&quot;&gt;Gambit REPL&lt;/a&gt; Scheme interpreter app for iOS (most of the difficulties seemed to revolve around the Apple app store screening process). (&lt;a href=&quot;http://www.iro.umontreal.ca/~gambit/Gambit-REPL.pdf&quot;&gt;slides&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;Then Marc showed and discussed a demo doing distributed computing using mobile, serialized continuations bouncing around Gambit instances on x86 Macs and ARM-based iPhones/iPods. The &lt;a href=&quot;http://www.iro.umontreal.ca/~gambit/Distributed-computing-with-Gambit.pdf&quot;&gt;slides&lt;/a&gt; are well worth checking out, particularly for insight into how serialization of problematic objects like I/O streams/ports is done.&lt;br /&gt;&lt;br /&gt;There&#39;s at least one Common Lisp project (&lt;a href=&quot;http://www.cliki.net/cl-walker&quot;&gt;cl-walker&lt;/a&gt;) that claims to be able to serialize continuations, and another library (&lt;a href=&quot;http://www.cliki.net/Storable%20Functions&quot;&gt;Storable Functions&lt;/a&gt;) which claims to be able to serialize closures (from which you can get continuations with a CPS transformer); I haven&#39;t tried either and to my knowledge there hasn&#39;t been any works done on mobile continuations for Common Lisp, or that much work for mobile code in CL in general.&lt;br /&gt;&lt;br /&gt;The next MSLUG meeting is tentatively January 19th; I&#39;m scheduled to present a talk on &lt;a href=&quot;http://common-lisp.net/project/parenscript/&quot;&gt;Parenscript&lt;/a&gt;.</content><link rel='replies' type='application/atom+xml' href='https://carcaddar.blogspot.com/feeds/4953006507904021095/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment/fullpage/post/5728814948530385321/4953006507904021095' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/5728814948530385321/posts/default/4953006507904021095'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/5728814948530385321/posts/default/4953006507904021095'/><link rel='alternate' type='text/html' href='https://carcaddar.blogspot.com/2011/11/montreal-schemelisp-users-group-back-in.html' title='Montreal Scheme/Lisp Users Group back in action'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5728814948530385321.post-1737134590850602408</id><published>2011-11-05T15:11:00.001-06:00</published><updated>2011-11-05T15:16:30.129-06:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="lisp"/><title type='text'>Optional dependencies</title><content type='html'>Both &lt;a href=&quot;http://common-lisp.net/project/uri-template/&quot;&gt;uri-template&lt;/a&gt; and &lt;a href=&quot;https://github.com/paddymul/css-lite&quot;&gt;css-lite&lt;/a&gt; provide optional support for generating JavaScript templates via &lt;a href=&quot;http://common-lisp.net/project/parenscript/&quot;&gt;Parenscript&lt;/a&gt;. However, I did not want to make Parenscript a required dependency for either library.&lt;br /&gt;&lt;br /&gt;Previously, this was implemented using the #+parenscript &lt;a href=&quot;http://www.lispworks.com/documentation/HyperSpec/Body/01_ebaa.htm&quot;&gt;read-time conditional&lt;/a&gt; in the source files.&lt;br /&gt;&lt;br /&gt;That worked ok if you loaded Parenscript before loading css-lite, but there were two problems:&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;If you initially compiled css-lite without loading Parenscript first, you&#39;d need to go back and re-compile css-lite by hand after loading Parenscript if you wanted the JavaScript output.&lt;br /&gt;&lt;li&gt;If you loaded the css-lite fasls compiled with Parenscript into a fresh Lisp image without loading Parenscript first, you&#39;d get an error.&lt;/ol&gt;&lt;br /&gt;Both of these error stem from the fact that ASDF didn&#39;t know anything about the optional Parenscript dependency.&lt;br /&gt;&lt;br /&gt;Didier Verna has written about &lt;a href=&quot;http://www.didierverna.com/sciblog/index.php?post/2011/01/25/Optional-system-dependencies-(Clon-v1.0b18)&quot;&gt;optional ASDF dependencies&lt;/a&gt; previously (make sure to read the &lt;a href=&quot;http://www.mail-archive.com/asdf-devel@common-lisp.net/msg01405.html&quot;&gt;asdf-devel thread on optional dependencies&lt;/a&gt; Didier links to if you&#39;re interested in this). In short, relying on ASDF&#39;s :weakly-depends-on seems quite hairy.&lt;br /&gt;&lt;br /&gt;I think I found a simple alternate solution for uri-template that seems to work: put all the Parenscript-dependent code into one file, and then use read-time conditionals in the uri-template.asd list of files like so:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;pre&gt;:components ((:file &quot;package&quot;)&lt;br /&gt;             ...&lt;br /&gt;             (:file &quot;destructure-uri&quot;)&lt;br /&gt;             #+parenscript (:file &quot;parenscript-implementation&quot;)&lt;br /&gt;             )&lt;/pre&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;You can see the full implementation in the latest &lt;a href=&quot;https://github.com/vsedach/uri-template/commit/499f8fac92d133205230b2d556fcf16cd7092b6a&quot;&gt;patch to uri-template&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Let me know if you have any ideas about this technique, or optional dependencies in general.</content><link rel='replies' type='application/atom+xml' href='https://carcaddar.blogspot.com/feeds/1737134590850602408/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment/fullpage/post/5728814948530385321/1737134590850602408' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/5728814948530385321/posts/default/1737134590850602408'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/5728814948530385321/posts/default/1737134590850602408'/><link rel='alternate' type='text/html' href='https://carcaddar.blogspot.com/2011/11/optional-dependencies.html' title='Optional dependencies'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry></feed>