<?xml version='1.0' encoding='utf-8' ?>
<!--  If you are running a bot please visit this policy page outlining rules you must respect. http://www.livejournal.com/bots/  -->
<rss version='2.0' xmlns:lj='http://www.livejournal.org/rss/lj/1.0/' xmlns:media='http://search.yahoo.com/mrss/' xmlns:atom10='http://www.w3.org/2005/Atom'>
<channel>
  <title>Zach Beane&apos;s Blog</title>
  <link>http://xach.livejournal.com/</link>
  <description>Zach Beane&apos;s Blog - LiveJournal.com</description>
  <managingEditor>xach@xach.com</managingEditor>
  <lastBuildDate>Sat, 28 Apr 2012 21:02:13 GMT</lastBuildDate>
  <generator>LiveJournal / LiveJournal.com</generator>
  <lj:journal>xach</lj:journal>
  <lj:journalid>995384</lj:journalid>
  <lj:journaltype>personal</lj:journaltype>
  <atom10:link rel='hub' href='http://pubsubhubbub.appspot.com/' />
  <image>
    <url>http://l-userpic.livejournal.com/21139885/995384</url>
    <title>Zach Beane&apos;s Blog</title>
    <link>http://xach.livejournal.com/</link>
    <width>100</width>
    <height>100</height>
  </image>

<item>
  <guid isPermaLink='true'>http://xach.livejournal.com/305744.html</guid>
  <pubDate>Sat, 28 Apr 2012 21:02:13 GMT</pubDate>
  <title>Tug, Barge, and Lighthouse</title>
  <author>xach@xach.com</author>  <link>http://xach.livejournal.com/305744.html</link>
  <description>&lt;div class=&quot;flickr-frame&quot;&gt;	&lt;a href=&quot;http://www.flickr.com/photos/xach/6976292150/&quot; title=&quot;photo sharing&quot;&gt;&lt;img src=&quot;http://farm8.staticflickr.com/7085/6976292150_79205d53f0.jpg&quot; class=&quot;flickr-photo&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;br /&gt;	&lt;span class=&quot;flickr-caption&quot;&gt;&lt;a href=&quot;http://www.flickr.com/photos/xach/6976292150/&quot;&gt;Tug, Barge, and Lighthouse&lt;/a&gt;, originally uploaded by &lt;a href=&quot;http://www.flickr.com/photos/xach/&quot;&gt;Zach Beane&lt;/a&gt;.&lt;/span&gt;&lt;/div&gt;				&lt;p class=&quot;flickr-yourcomment&quot;&gt;	&lt;/p&gt;</description>
  <comments>http://xach.livejournal.com/305744.html</comments>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://xach.livejournal.com/305536.html</guid>
  <pubDate>Fri, 27 Apr 2012 13:03:25 GMT</pubDate>
  <title>One Longfellow Square</title>
  <author>xach@xach.com</author>  <link>http://xach.livejournal.com/305536.html</link>
  <description>&lt;div class=&quot;flickr-frame&quot;&gt;	&lt;a href=&quot;http://www.flickr.com/photos/xach/6969283644/&quot; title=&quot;photo sharing&quot;&gt;&lt;img src=&quot;http://farm8.staticflickr.com/7049/6969283644_165c25892e.jpg&quot; class=&quot;flickr-photo&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;br /&gt;	&lt;span class=&quot;flickr-caption&quot;&gt;&lt;a href=&quot;http://www.flickr.com/photos/xach/6969283644/&quot;&gt;One Longfellow Square&lt;/a&gt;, originally uploaded by &lt;a href=&quot;http://www.flickr.com/photos/xach/&quot;&gt;Zach Beane&lt;/a&gt;.&lt;/span&gt;&lt;/div&gt;				&lt;p class=&quot;flickr-yourcomment&quot;&gt;	&lt;/p&gt;&lt;p&gt;Cody and Clint Phipps, aka &lt;a href=&quot;http://www.pitchblackribbons.com/&quot;&gt;Pitch Black Ribbons&lt;/a&gt;.</description>
  <comments>http://xach.livejournal.com/305536.html</comments>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://xach.livejournal.com/305213.html</guid>
  <pubDate>Sat, 21 Apr 2012 13:29:56 GMT</pubDate>
  <title>Behind Beal&apos;s Ice Cream</title>
  <author>xach@xach.com</author>  <link>http://xach.livejournal.com/305213.html</link>
  <description>&lt;div class=&quot;flickr-frame&quot;&gt;	&lt;a href=&quot;http://www.flickr.com/photos/xach/6951605396/&quot; title=&quot;photo sharing&quot;&gt;&lt;img src=&quot;http://farm8.staticflickr.com/7203/6951605396_9b070fc224.jpg&quot; class=&quot;flickr-photo&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;br /&gt;	&lt;span class=&quot;flickr-caption&quot;&gt;&lt;a href=&quot;http://www.flickr.com/photos/xach/6951605396/&quot;&gt;Behind Beal&apos;s Ice Cream&lt;/a&gt;, originally uploaded by &lt;a href=&quot;http://www.flickr.com/photos/xach/&quot;&gt;Zach Beane&lt;/a&gt;.&lt;/span&gt;&lt;/div&gt;				&lt;p class=&quot;flickr-yourcomment&quot;&gt;	&lt;/p&gt;</description>
  <comments>http://xach.livejournal.com/305213.html</comments>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://xach.livejournal.com/304985.html</guid>
  <pubDate>Sun, 15 Apr 2012 01:08:43 GMT</pubDate>
  <title>Kite control</title>
  <author>xach@xach.com</author>  <link>http://xach.livejournal.com/304985.html</link>
  <description>&lt;div class=&quot;flickr-frame&quot;&gt;	&lt;a href=&quot;http://www.flickr.com/photos/xach/6932209962/&quot; title=&quot;photo sharing&quot;&gt;&lt;img src=&quot;http://farm8.staticflickr.com/7036/6932209962_affe3d01d7.jpg&quot; class=&quot;flickr-photo&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;br /&gt;	&lt;span class=&quot;flickr-caption&quot;&gt;&lt;a href=&quot;http://www.flickr.com/photos/xach/6932209962/&quot;&gt;Kite control&lt;/a&gt;, originally uploaded by &lt;a href=&quot;http://www.flickr.com/photos/xach/&quot;&gt;Zach Beane&lt;/a&gt;.&lt;/span&gt;&lt;/div&gt;				&lt;p class=&quot;flickr-yourcomment&quot;&gt;	&lt;/p&gt;</description>
  <comments>http://xach.livejournal.com/304985.html</comments>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://xach.livejournal.com/304856.html</guid>
  <pubDate>Tue, 10 Apr 2012 20:12:18 GMT</pubDate>
  <title>Mining for data in Quicklisp with qlmapper</title>
  <author>xach@xach.com</author>  <link>http://xach.livejournal.com/304856.html</link>
  <description>The code in Quicklisp represents a large amount of interesting data. It&amp;#39;s difficult to systematically query it, but I&amp;#39;ve been trying to make it easier, and one step in that process is available as a &lt;a href=&quot;https://github.com/xach/qlmapper/&quot;&gt;library called qlmapper&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;qlmapper is pretty simple; it can load an arbitrary Lisp file after loading each system in Quicklisp. Each system is loaded in a fresh SBCL instance, so code that inspects and reports things can work from a mostly-clean Lisp environment.&lt;br /&gt;&lt;br /&gt;Here are some pieces of information you could gather and share:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;What packages does a given system define?&lt;/li&gt;&lt;li&gt;What are all the packages defined in Quicklisp? What systems introduce conflicting package names?&lt;/li&gt;&lt;li&gt;What foreign libraries does a system load? What is the name of the&amp;nbsp;Debian package name that provides that foreign library?&lt;/li&gt;&lt;li&gt;Everything that &lt;a href=&quot;http://www.youtube.com/watch?v=COEgRaf6acU&quot;&gt;Manifest&lt;/a&gt; does&lt;/li&gt;&lt;li&gt;Does any code use &lt;a href=&quot;http://l1sp.org/cl/nreconc&quot;&gt;nreconc&lt;/a&gt; or &lt;a href=&quot;http://l1sp.org/cl/revappend&quot;&gt;revappend&lt;/a&gt;? (Or, more generally, a CL-aware code search engine.)&lt;/li&gt;&lt;li&gt;What ASDF system definitions include :author/:description/:license metadata? Which system definitions need to add it?&lt;/li&gt;&lt;li&gt;Which projects lack a README file (or some variation thereof)?&lt;/li&gt;&lt;li&gt;Which projects don&amp;#39;t build and why?&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Here&amp;#39;s a small example script that I just made for qlmapper:&lt;/p&gt;&lt;pre&gt;(defpackage #:foreign-report
  (:use #:cl))

(in-package #:foreign-report)

(defun canonical-name (library-pathname)
  (let* ((name (file-namestring library-pathname))
         (end (search &amp;quot;.so&amp;quot; name)))
    (subseq name 0 end)))

(defun find-library (line)
  (when (and (search &amp;quot;r-xp&amp;quot; line)
             (search &amp;quot;.so&amp;quot; line))
    (let ((path-start (position #\/ line)))
      (when path-start
        (subseq line path-start)))))

(defun maps-table ()
  (let ((table (make-hash-table :test &amp;#39;equal)))
    (with-open-file (stream &amp;quot;/proc/self/maps&amp;quot;)
      (loop for line = (read-line stream nil)
            while line do
            (let ((library (find-library line)))
              (when library
                (setf (gethash (canonical-name library) table) library)))))
    table))

(defun foreign-mappings ()
  (let ((table (maps-table)))
    (loop for object in sb-sys:*shared-objects*
          for name = (sb-alien::shared-object-namestring object)
          collect (list name (gethash (canonical-name name) table)))))

#+qlmapper                                                                      
(with-open-file (stream &amp;quot;~/foreign-libraries.sexp&amp;quot;                                  
                        :direction :output                                      
                        :if-exists :append                                      
                        :if-does-not-exist :create)                             
  (let ((mappings (foreign-mappings)))                                          
    (when mappings                                                              
      (print (list cl-user:*qlmapper-object-name*                               
                   mappings)                                                    
             stream))))
&lt;/pre&gt;&lt;br /&gt;I called it with this:&amp;nbsp;(qlmapper:map-loaded-systems &amp;quot;~/foreign-report.lisp&amp;quot;)&lt;br /&gt;&lt;br /&gt;An hour later, it produced an &lt;a href=&quot;http://www.xach.com/lisp/foreign-libraries.sexp&quot;&gt;interesting report of library usage&lt;/a&gt;. It&amp;#39;s not perfect, but it&amp;#39;s a start, and can be refined to provide more accurate and useful answers. Even in this raw form, I can tell some interesting things. For example, I can tell which libraries I had to build from source (no Debian package available) by checking for &amp;quot;/usr/local&amp;quot; in the results.&lt;br /&gt;&lt;br /&gt;What other stuff would be fun to discover about the universe of Quicklisp code? What changes and improvements to qlmapper would make it even easier to discover?</description>
  <comments>http://xach.livejournal.com/304856.html</comments>
  <category>lisp</category>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://xach.livejournal.com/304496.html</guid>
  <pubDate>Mon, 09 Apr 2012 02:10:45 GMT</pubDate>
  <title>Easier analysis of Quicklisp systems</title>
  <author>xach@xach.com</author>  <link>http://xach.livejournal.com/304496.html</link>
  <description>I just pushed &lt;a href=&quot;https://github.com/xach/qlmapper/&quot;&gt;qlmapper&lt;/a&gt; to github.&lt;br /&gt;&lt;br /&gt;It&amp;#39;s made for calling some Lisp code for each system in Quicklisp in a completely fresh SBCL environment. I&amp;#39;m going to use it to gather descriptions and documentation for each project. I hope other people find it useful to systematically work on Quicklisp projects in some way.&lt;br /&gt;&lt;br /&gt;Enjoy!</description>
  <comments>http://xach.livejournal.com/304496.html</comments>
  <category>lisp</category>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://xach.livejournal.com/304222.html</guid>
  <pubDate>Fri, 30 Mar 2012 17:26:33 GMT</pubDate>
  <title>CRACL Redux</title>
  <author>xach@xach.com</author>  <link>http://xach.livejournal.com/304222.html</link>
  <description>Are you in Los Angeles? Do you want to hang out with Lisp nerds? &lt;a href=&quot;https://cracl.wordpress.com/2012/03/29/cracl-redux-4-19-12/&quot;&gt;CRACL is meeting on April 19th&lt;/a&gt; after a lengthy hiatus.</description>
  <comments>http://xach.livejournal.com/304222.html</comments>
  <category>lisp</category>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://xach.livejournal.com/304091.html</guid>
  <pubDate>Fri, 30 Mar 2012 12:48:59 GMT</pubDate>
  <title>CL code from MSI</title>
  <author>xach@xach.com</author>  <link>http://xach.livejournal.com/304091.html</link>
  <description>&lt;a href=&quot;http://www.msi.co.jp&quot;&gt;Mathematical Systems, Inc&lt;/a&gt; is a Japanese company that has been doing CL stuff for a long time. They&amp;#39;ve just recently started &lt;a href=&quot;https://github.com/mathematical-systems/&quot;&gt;posting some of their CL libraries&lt;/a&gt; to github.&lt;br /&gt;&lt;br /&gt;(Of course, you already knew that if you read the &lt;a href=&quot;http://planet.lisp.org/github.atom&quot;&gt;github CL project feed&lt;/a&gt;.)</description>
  <comments>http://xach.livejournal.com/304091.html</comments>
  <category>lisp</category>
  <lj:security>public</lj:security>
  <lj:reply-count>1</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://xach.livejournal.com/303623.html</guid>
  <pubDate>Mon, 12 Mar 2012 15:29:41 GMT</pubDate>
  <title>package::(...) syntax</title>
  <author>xach@xach.com</author>  <link>http://xach.livejournal.com/303623.html</link>
  <description>&lt;p&gt;For a long time, Allegro CL has allowed a syntax like this:

&lt;pre&gt;
foo::(bar baz quux)
&lt;/pre&gt;

&lt;p&gt;The &quot;foo::&quot; prefix reads the subsequent sexp as though the current
  package was the &quot;foo&quot; package.

&lt;p&gt;SBCL 1.0.55 introduced support for this syntax as well. I&apos;ve
  started to use it more and more, because I sometimes enter stuff
  like this at the REPL:

&lt;pre&gt;
(ql-dist:ensure-installed (ql-dist:system &quot;foo&quot;))
&lt;/pre&gt;

&lt;p&gt;Now I can use this:

&lt;pre&gt;
ql-dist::(ensure-installed (system &quot;foo&quot;))
&lt;/pre&gt;

&lt;p&gt;It saves me the trouble of inheriting or importing symbols, or
  switching packages, for simple one-off stuff in the REPL. I don&apos;t
  use it in source files &amp;mdash; I don&apos;t feel like being that
  gratuitiously unportable.

&lt;p&gt;Thanks to Nikodemus Siivola for adding this capability to SBCL.
</description>
  <comments>http://xach.livejournal.com/303623.html</comments>
  <category>lisp</category>
  <lj:security>public</lj:security>
  <lj:reply-count>3</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://xach.livejournal.com/303390.html</guid>
  <pubDate>Mon, 12 Mar 2012 13:06:47 GMT</pubDate>
  <title>Helpful shoveler</title>
  <author>xach@xach.com</author>  <link>http://xach.livejournal.com/303390.html</link>
  <description>&lt;div class=&quot;flickr-frame&quot;&gt;	&lt;a href=&quot;http://www.flickr.com/photos/xach/6944140951/&quot; title=&quot;photo sharing&quot;&gt;&lt;img src=&quot;http://farm8.staticflickr.com/7210/6944140951_720f086499.jpg&quot; class=&quot;flickr-photo&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;br /&gt;	&lt;span class=&quot;flickr-caption&quot;&gt;&lt;a href=&quot;http://www.flickr.com/photos/xach/6944140951/&quot;&gt;Helpful shoveler&lt;/a&gt;, originally uploaded by &lt;a href=&quot;http://www.flickr.com/photos/xach/&quot;&gt;Zach Beane&lt;/a&gt;.&lt;/span&gt;&lt;/div&gt;				&lt;p class=&quot;flickr-yourcomment&quot;&gt;	This is 11 days ago. Yesterday the ice cream man made the rounds in the (completely snow-free) neighborhood. Welcome to Maine!&lt;/p&gt;</description>
  <comments>http://xach.livejournal.com/303390.html</comments>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://xach.livejournal.com/303356.html</guid>
  <pubDate>Sun, 11 Mar 2012 21:48:08 GMT</pubDate>
  <title>Time flies</title>
  <author>xach@xach.com</author>  <link>http://xach.livejournal.com/303356.html</link>
  <description>&lt;p&gt;&lt;img src=&quot;http://farm3.staticflickr.com/2753/4061639333_25dbe690a7.jpg&quot; /&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;http://farm8.staticflickr.com/7058/6971081797_11884e63a7.jpg&quot; /&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;How time flies!&lt;/p&gt;</description>
  <comments>http://xach.livejournal.com/303356.html</comments>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://xach.livejournal.com/302870.html</guid>
  <pubDate>Sun, 11 Mar 2012 21:11:41 GMT</pubDate>
  <title>Lisp Games Wiki</title>
  <author>xach@xach.com</author>  <link>http://xach.livejournal.com/302870.html</link>
  <description>Here&apos;s some news from David O&apos;Toole:

&lt;blockquote&gt;
&lt;p&gt;Visit the Lisp Games Wiki and add your knowledge!

&lt;p&gt;&lt;a href=&quot;http://lispgames.org/&quot;&gt;http://lispgames.org/&lt;/a&gt;

&lt;p&gt;What is the Lisp Games Wiki, you ask? It&apos;s a community portal and
knowledge-base for people working with Lisp, games, and multimedia.

&lt;p&gt;Right now the wiki is in a good state, with overviews of available
software, and pointers to many relevant Lisp libraries and projects for
each dialect. (All variants of Lisp are welcome on the wiki, from
Parenscript to Schemebricks to Common Lisp to Emacs Lisp). There are
also a fair number of original informational articles where people
have written up ideas or made suggestions.

&lt;p&gt;But we want more! The game development space is changing all the time,
and keeping the wiki up to date is very important. HTML5 and
Parenscript are just a few of the new possibilities to keep track of
(and explore for your own projects.)

&lt;p&gt;Please
visit &lt;a href=&quot;http://lispgames.org/&quot;&gt;http://lispgames.org&lt;/a&gt; and
look around. Feel free to add your own knowledge and links!
&lt;/blockquote&gt;
</description>
  <comments>http://xach.livejournal.com/302870.html</comments>
  <category>lisp</category>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://xach.livejournal.com/302627.html</guid>
  <pubDate>Thu, 08 Mar 2012 21:19:58 GMT</pubDate>
  <title>Common Lisp in the [Heroku] Cloud </title>
  <author>xach@xach.com</author>  <link>http://xach.livejournal.com/302627.html</link>
  <description>Mike Travers just &lt;a href=&quot;https://groups.google.com/forum/?fromgroups#!topic/comp.lang.lisp/TKM3eFyObLw&quot;&gt;announced a project that runs CL applications&lt;/a&gt; on &lt;a href=&quot;http://www.heroku.com/&quot;&gt;Heroku&lt;/a&gt;. Pretty neat.</description>
  <comments>http://xach.livejournal.com/302627.html</comments>
  <category>lisp</category>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://xach.livejournal.com/302529.html</guid>
  <pubDate>Wed, 07 Mar 2012 00:59:22 GMT</pubDate>
  <title>New App from Clozure</title>
  <author>xach@xach.com</author>  <link>http://xach.livejournal.com/302529.html</link>
  <description>&lt;p&gt;Neat news &lt;a href=&quot;http://clozure.com/pipermail/openmcl-devel/2012-March/013433.html&quot;&gt;on the Clozure CL mailing list&lt;/a&gt;:

&lt;blockquote&gt;
&lt;p&gt;From: Andrew Shalit&lt;br&gt;
Subject: [Openmcl-devel] New App from Clozure&lt;br&gt;
To: openmcl-devel Devel &amp;lt;openmcl-devel@clozure.com&amp;gt;&lt;br&gt;
Date: Tue, 6 Mar 2012 17:39:27 -0500&lt;br&gt;

&lt;p&gt;Hi CCL Users -

&lt;p&gt;I&apos;m happy to announce that our first app written in Clozure CL has just been released in the Macintosh App Store.

&lt;p&gt;Picture Window is a simple but elegant slideshow viewer.  It displays pictures in resizable floating windows that stay in view while you&apos;re using other Macintosh apps.

&lt;p&gt;Picture Window was written by our very own Matthew Emerson, and it runs on OS X Snow Leopard and Lion.

&lt;p&gt;If you&apos;d like to support Clozure and Lisp-based apps in a small way, you can purchase a copy in the Mac App Store.&lt;br&gt;
It&apos;s only $4.99.  You can find it here:

&lt;p&gt;&lt;a href=&quot;http://itunes.apple.com/us/app/picture-window/id507262984?mt=12&quot;&gt;http://itunes.apple.com/us/app/picture-window/id507262984?mt=12&lt;/a&gt;

&lt;p&gt;Thanks for your support,


&lt;p&gt;Andrew
&lt;/blockquote&gt;
</description>
  <comments>http://xach.livejournal.com/302529.html</comments>
  <category>lisp</category>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://xach.livejournal.com/302216.html</guid>
  <pubDate>Fri, 02 Mar 2012 16:14:43 GMT</pubDate>
  <title>Boston Lisp meeting: awesome</title>
  <author>xach@xach.com</author>  <link>http://xach.livejournal.com/302216.html</link>
  <description>Daniel Herring did a great job pulling together 14 interested Lispers at short notice to socialize at the Cambridge Brewing Company last night. I got a chance to talk (sometimes briefly) to Daniel, Alastair Bridgewater, Marc Battyani, Daniel Lowe, Stephen Compall, Keith Corbett, &amp;nbsp;Juan Jos&amp;eacute;&amp;nbsp;Garc&amp;iacute;a Ripoll, and Fran&amp;ccedil;ois-Ren&amp;eacute; Rideau, Nichaulas, and more.&lt;br /&gt;&lt;br /&gt;There was no speaker and no agenda; we just sat around a table and hand good food and drink for three hours, chatting about Common Lisp (ASDF, ECL, the package system, project granularity, Quicklisp, etc), computing, children (many of us have young kids), and how much fun it is to get together. I sent a handful of tweets out using the &lt;a href=&quot;https://twitter.com/search#BostonLisp&quot;&gt;#BostonLisp hashtag&lt;/a&gt; at Kent Pitman&amp;#39;s suggestion.&lt;br /&gt;&lt;br /&gt;As a result of the fun, Far&amp;eacute; will put together another meeting soon (possibly April). I hope to talk about Quicklisp, probably along the lines of what I spoke about in October at the European Common Lisp Meeting. If there was a flaw last night, it was that the long, narrow table encouraged discussion between small, constant groups. I look forward to a future gathering where it&amp;#39;s a bit easier to amble around and join different discussions.&lt;br /&gt;&lt;br /&gt;Hope to see &lt;i&gt;you&lt;/i&gt; next time!</description>
  <comments>http://xach.livejournal.com/302216.html</comments>
  <category>lisp</category>
  <lj:security>public</lj:security>
  <lj:reply-count>1</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://xach.livejournal.com/301941.html</guid>
  <pubDate>Thu, 01 Mar 2012 02:35:00 GMT</pubDate>
  <title>Lisp project hosting</title>
  <author>xach@xach.com</author>  <link>http://xach.livejournal.com/301941.html</link>
  <description>For many years, &lt;a href=&quot;http://common-lisp.net&quot;&gt;common-lisp.net&lt;/a&gt; provided a wonderful service not easily available anywhere else. They would give you a login on a Unix system, a mailing list with public archives, a place for a website, a source control system (CVS, darcs, git, svn, etc), and more. All you had to do was ask.&lt;br /&gt;&lt;br /&gt;These days, I think it is easier to take advantage of the many free services that have sprung up in the past few years. Here&amp;#39;s what I recommend if you&amp;#39;re starting a Lisp project today.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Source control: &lt;a href=&quot;http://github.com&quot;&gt;GitHub&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Bug tracking: GitHub issues system&lt;/li&gt;&lt;li&gt;Mailing list: &lt;a href=&quot;http://groups.google.com&quot;&gt;Google groups&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Blog: &lt;a href=&quot;http://tumblr.com&quot;&gt;Tumblr&lt;/a&gt; or &lt;a href=&quot;http://www.blogger.com&quot;&gt;Blogger&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Email: &lt;a href=&quot;http://www.google.com/apps/intl/en/group/index.html&quot;&gt;Google Apps&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Website: GitHub or Google Sites&lt;/li&gt;&lt;li&gt;Screencasts: &lt;a href=&quot;http://www.youtube.com&quot;&gt;YouTube&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;There&amp;#39;s a lot of overlap in free services, so if you find something else that works well for you, good! There&amp;#39;s so much available now that &amp;quot;There&amp;#39;s no place to put it&amp;quot; is no longer a valid excuse for not sharing your cool Lisp project with the world.&lt;br /&gt;&lt;br /&gt;Hacks and glory await!</description>
  <comments>http://xach.livejournal.com/301941.html</comments>
  <category>lisp</category>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://xach.livejournal.com/301641.html</guid>
  <pubDate>Tue, 28 Feb 2012 14:06:50 GMT</pubDate>
  <title>Boston Lisp meeting on Thursday</title>
  <author>xach@xach.com</author>  <link>http://xach.livejournal.com/301641.html</link>
  <description>&lt;p&gt;Here&amp;#39;s a note from Daniel Herring &lt;a href=&quot;http://lists.common-lisp.net/pipermail/boston-lisp/2012-February/000264.html&quot;&gt;on the boston-lisp list&lt;/a&gt;:&lt;/p&gt;&lt;blockquote&gt;&lt;div&gt;Hi all,&lt;/div&gt;&lt;div&gt;&lt;br /&gt;Come join us for an informal night of lisp, food, and other refreshments.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;We&amp;#39;ll be meeting Thursday, March 1, at 6:30pm in the CBC.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;Cambridge Brewing Co.&lt;/div&gt;&lt;div&gt;&lt;a href=&quot;http://www.cambrew.com&quot;&gt;http://www.cambrew.com/&lt;/a&gt;&lt;/div&gt;&lt;div&gt;1 Kendall Square, Bldg 100&lt;/div&gt;&lt;div&gt;Cambridge, MA 02139&lt;/div&gt;&lt;div&gt;Phone: 617-494-1994&lt;/div&gt;&lt;div&gt;&lt;br /&gt;If you plan to come, please email me by Wednesday afternoon.&amp;nbsp;(So I can give the CBC a head count.)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;In addition to the local crowd, Juan Jose Garcia-Ripoll (of ECL fame) came all the way from Madrid just to meet with us. &amp;nbsp;;)&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Zach Beane says he&amp;#39;ll be in town from 5pm; so he might be interested in&amp;nbsp;meeting with people before dinner.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;See you soon,&lt;/div&gt;&lt;div&gt;Daniel&lt;/div&gt;&lt;/blockquote&gt;</description>
  <comments>http://xach.livejournal.com/301641.html</comments>
  <category>lisp</category>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://xach.livejournal.com/301555.html</guid>
  <pubDate>Wed, 22 Feb 2012 13:25:51 GMT</pubDate>
  <title>Saving your Google Web History before deleting it</title>
  <author>xach@xach.com</author>  <link>http://xach.livejournal.com/301555.html</link>
  <description>I don&amp;#39;t like where Google is headed, so I want to delete my web history. I also want to download it first.&lt;br /&gt;&lt;br /&gt;Google&amp;#39;s own &amp;quot;Data Liberation&amp;quot; website only shows &lt;a href=&quot;http://www.dataliberation.org/google/web-history&quot;&gt;how to download recent history&lt;/a&gt; via RSS. The URL looks like this:&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;http://www.google.com/history/lookup?q=&amp;amp;output=rss&amp;amp;num=100&lt;br /&gt;&lt;br /&gt;I fiddled around and found out it also takes a &lt;b&gt;start&lt;/b&gt; parameter, e.g.&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;http://www.google.com/history/lookup?q=&amp;amp;output=rss&amp;amp;num=100&amp;amp;&lt;b&gt;start=500&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;It also accepts bigger numbers for the &lt;b&gt;num&lt;/b&gt; parameter; the highest I tried with success was 1000.&lt;br /&gt;&lt;br /&gt;Combining those two bits of information, I found out that my history has a little less than 9000 entries. I entered URLs like this into my browser and saved the XML results:&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;http://www.google.com/history/lookup?q=&amp;amp;output=rss&amp;amp;num=1000&amp;amp;start=0&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;http://www.google.com/history/lookup?q=&amp;amp;output=rss&amp;amp;num=1000&amp;amp;start=1000&lt;br /&gt;&amp;nbsp; &amp;nbsp; ....&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;http://www.google.com/history/lookup?q=&amp;amp;output=rss&amp;amp;num=1000&amp;amp;start=8000&lt;br /&gt;&lt;br /&gt;So after going through this trouble, I figured there must be a tool to do it, and there is. Check out &lt;a href=&quot;http://geeklad.com/updated-script-to-download-google-history&quot;&gt;this script from GeekLad&lt;/a&gt;.</description>
  <comments>http://xach.livejournal.com/301555.html</comments>
  <lj:security>public</lj:security>
  <lj:reply-count>1</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://xach.livejournal.com/301076.html</guid>
  <pubDate>Fri, 17 Feb 2012 19:43:55 GMT</pubDate>
  <title>Naming functions with keywords</title>
  <author>xach@xach.com</author>  <link>http://xach.livejournal.com/301076.html</link>
  <description>I used to have a collection of miscellaneous utilities in a project named ZPB (after my initials). They weren&amp;#39;t functions I used in actual source code, just little REPL conveniences, inspired in part by Rob Warnock&amp;#39;s great suggestion to &lt;a href=&quot;https://groups.google.com/group/comp.lang.lisp/msg/6e91e20f2f371b52?&amp;amp;noredirect&quot;&gt;&lt;i&gt;Use&lt;/i&gt; the Lisp environment to make your life easier!!&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Even though the package prefix was short (zpb), I typed the stuff often enough that the prefix in the repl was annoying, but I didn&amp;#39;t really want inherit everything with &lt;a href=&quot;http://l1sp.org/cl/use-package&quot;&gt;use-package&lt;/a&gt;, either. What to do?&lt;br /&gt;&lt;br /&gt;Lately I&amp;#39;ve taken to sticking the functions in my startup file and naming them after keywords. For example:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;(defun :go (&amp;amp;optional (thing *))
  &amp;quot;View THING with some appropriate viewer.&amp;quot;
  ;; On my Mac laptop, I use &amp;quot;open&amp;quot; instead.
  (sb-ext:run-program &amp;quot;gnome-open&amp;quot; (list (princ-to-string thing))
                      :search t)
  thing)
&lt;/pre&gt;&lt;br /&gt;With this in my startup file, I can do something like this:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;* &lt;b&gt;(url-of-interest object)&lt;/b&gt;
&amp;quot;http://twitter.com/quicklisp&amp;quot;

* &lt;b&gt;(:go)&lt;/b&gt;
&lt;i&gt;URL is opened in Chrome&lt;/i&gt;
&amp;quot;http://twitter.com/quicklisp&amp;quot;
&lt;/pre&gt;&lt;br /&gt;These functions are short, easy to type, and always available in any REPL context regardless of the editor settings or current package. In addition to &lt;tt&gt;:go&lt;/tt&gt;, I also have &lt;tt&gt;:file-string&lt;/tt&gt;, &lt;tt&gt;:file-vector&lt;/tt&gt;, &lt;tt&gt;:file-lines&lt;/tt&gt;, &lt;tt&gt;:bits&lt;/tt&gt;, &lt;tt&gt;:hex&lt;/tt&gt;, &lt;tt&gt;:make-project&lt;/tt&gt;, and a few others.&lt;br /&gt;&lt;br /&gt;Do you define any shortcuts like this?</description>
  <comments>http://xach.livejournal.com/301076.html</comments>
  <category>lisp</category>
  <lj:security>public</lj:security>
  <lj:reply-count>8</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://xach.livejournal.com/300994.html</guid>
  <pubDate>Sat, 28 Jan 2012 14:44:41 GMT</pubDate>
  <title>Skidder with logs</title>
  <author>xach@xach.com</author>  <link>http://xach.livejournal.com/300994.html</link>
  <description>&lt;div class=&quot;flickr-frame&quot;&gt;	&lt;a href=&quot;http://www.flickr.com/photos/26364365@N00/6776059851/&quot; title=&quot;photo sharing&quot;&gt;&lt;img src=&quot;http://farm8.staticflickr.com/7015/6776059851_fbc41539d7.jpg&quot; class=&quot;flickr-photo&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;br /&gt;	&lt;span class=&quot;flickr-caption&quot;&gt;&lt;a href=&quot;http://www.flickr.com/photos/26364365@N00/6776059851/&quot;&gt;P1140002&lt;/a&gt;, originally uploaded by &lt;a href=&quot;http://www.flickr.com/photos/26364365@N00/&quot;&gt;panacealater&lt;/a&gt;.&lt;/span&gt;&lt;/div&gt;				&lt;p class=&quot;flickr-yourcomment&quot;&gt;	From my dad&apos;s farm. A forester is working the woods over the hill.&lt;/p&gt;</description>
  <comments>http://xach.livejournal.com/300994.html</comments>
  <lj:security>public</lj:security>
  <lj:reply-count>2</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://xach.livejournal.com/300745.html</guid>
  <pubDate>Sat, 21 Jan 2012 15:35:57 GMT</pubDate>
  <title>ZS3 updates</title>
  <author>xach@xach.com</author>  <link>http://xach.livejournal.com/300745.html</link>
  <description>I updated &lt;a href=&quot;http://www.xach.com/lisp/zs3/&quot;&gt;ZS3&lt;/a&gt;, my CL library for interacting with Amazon S3,&amp;nbsp;with a few new features.&lt;br /&gt;&lt;br /&gt;First, there&amp;#39;s support for S3&amp;#39;s new multi-object deletion system. In the past, S3 required one API call per object to delete stuff. Now you can delete up to 1000 objects with a single call, and ZS3&amp;#39;s existing &lt;a href=&quot;http://www.xach.com/lisp/zs3/#delete-objects&quot;&gt;delete-objects&lt;/a&gt; function has been updated to use the new interface and will automatically split up the objects to be deleted into groups of 1000 as needed.&lt;br /&gt;&lt;br /&gt;Multi-object deletion can be a big deal, since each API call costs money.&lt;br /&gt;&lt;br /&gt;Second, there&amp;#39;s support for the &amp;quot;reduced redundancy&amp;quot; storage class. Reduced redundancy storage is less durable than standard storage, and it comes with a corresponding reduction in cost. You can choose reduced redundancy when using &lt;a href=&quot;http://www.xach.com/lisp/zs3/#put-object&quot;&gt;put-object&lt;/a&gt; or related functions, or set the storage class after the fact with &lt;a href=&quot;http://www.xach.com/lisp/zs3/#set-storage-class&quot;&gt;set-storage-class&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Third, there&amp;#39;s support for automatic object expiration, aka bucket lifecycle configuration. With bucket lifecycle rules you can specify that objects with names that match a certain prefix expire after a certain period of time. You can change a bucket&amp;#39;s lifecycle configuration with &lt;a href=&quot;http://www.xach.com/lisp/zs3/#bucket-lifecycle&quot;&gt;bucket-lifecycle&lt;/a&gt; and related functions.&lt;br /&gt;&lt;br /&gt;Automatic expiration of objects is another way to save money on API calls. If objects are deleted automatically, you don&amp;#39;t need to use any API calls at all to get rid of them.&lt;br /&gt;&lt;br /&gt;Please let me know if there&amp;#39;s an S3 feature you really want to see in ZS3. I feel like I&amp;#39;m on a roll and would love to add some more stuff that people need.</description>
  <comments>http://xach.livejournal.com/300745.html</comments>
  <category>lisp</category>
  <category>zs3</category>
  <lj:security>public</lj:security>
  <lj:reply-count>2</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://xach.livejournal.com/300290.html</guid>
  <pubDate>Sat, 24 Dec 2011 01:43:22 GMT</pubDate>
  <title>Finding SBCL sources</title>
  <author>xach@xach.com</author>  <link>http://xach.livejournal.com/300290.html</link>
  <description>You can get SBCL binaries from www.sbcl.org and that works pretty nicely. However, if you use M-. in slime to jump to the definition of a SBCL-defined function (e.g. sb-ext:run-program or cl:car), you might get something like this:&lt;br /&gt;&lt;br /&gt;&lt;div&gt;Error: failed to find the WRITE-DATE of /Users/jwise/proj/sbcl/clean/1.0.54/sbcl-1.0.54-x86-64-darwin/src/code/list.lisp:&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;No such file or directory&lt;br /&gt;&lt;br /&gt;That&amp;#39;s because the sources are located based on the definition of the SYS logical host, and that host can get carried over from the environment used to bundle up the binary release.&lt;br /&gt;&lt;br /&gt;One longtime solution is to download the sources and set up your own logical pathname translations for the SYS logical host. As of 1.0.53, you can now do this:&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; (sb-ext:set-sbcl-source-location &amp;quot;/path/to/sbcl/source/&amp;quot;)&lt;br /&gt;&lt;br /&gt;That takes care of establishing a mapping to the SBCL sources for you, and after that M-. will work as expected.&lt;/div&gt;</description>
  <comments>http://xach.livejournal.com/300290.html</comments>
  <category>lisp</category>
  <lj:security>public</lj:security>
  <lj:reply-count>2</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://xach.livejournal.com/300244.html</guid>
  <pubDate>Wed, 21 Dec 2011 01:20:09 GMT</pubDate>
  <title>Clozure CL in the Mac App Store</title>
  <author>xach@xach.com</author>  <link>http://xach.livejournal.com/300244.html</link>
  <description>From Matt Emerson on the Clozure CL mailing list:&lt;br /&gt;&lt;br /&gt;&lt;pre style=&quot;white-space: pre-wrap; color: rgb(0, 0, 0); line-height: normal; background-color: rgb(255, 255, 255); &quot;&gt;Several people have wondered whether CCL or CCL-developed applications&lt;br /&gt;would meet Apple&amp;#39;s requirements for being distributed via the Mac App&lt;br /&gt;Store.&lt;br /&gt;&lt;br /&gt;There&amp;#39;s only one way to test that...you have to submit an app to the&lt;br /&gt;store.  So I did.  It was accepted.&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://itunes.apple.com/us/app/clozure-cl/id489900618?ls=1&amp;amp;mt=12&quot;&gt;http://itunes.apple.com/us/app/clozure-cl/id489900618?ls=1&amp;amp;mt=12&lt;/a&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div&gt;&lt;br /&gt;Cool!&lt;/div&gt;</description>
  <comments>http://xach.livejournal.com/300244.html</comments>
  <category>lisp</category>
  <lj:security>public</lj:security>
  <lj:reply-count>5</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://xach.livejournal.com/299898.html</guid>
  <pubDate>Fri, 09 Dec 2011 00:32:19 GMT</pubDate>
  <title>l1sp.org source code now available</title>
  <author>xach@xach.com</author>  <link>http://xach.livejournal.com/299898.html</link>
  <description>You knew about &lt;a href=&quot;http://l1sp.org/&quot;&gt;l1sp.org&lt;/a&gt;, right? The redirect site I made a few years ago to make it easy to share links to Common Lisp documentation? Well, I just released its &lt;a href=&quot;https://github.com/xach/l1sp-org/&quot;&gt;source code on github&lt;/a&gt;. Enjoy!</description>
  <comments>http://xach.livejournal.com/299898.html</comments>
  <category>lisp</category>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://xach.livejournal.com/299741.html</guid>
  <pubDate>Thu, 08 Dec 2011 19:11:44 GMT</pubDate>
  <title>Peter Seibel&apos;s &quot;manifest&quot; screencast</title>
  <author>xach@xach.com</author>  <link>http://xach.livejournal.com/299741.html</link>
  <description>Peter &lt;a href=&quot;http://www.youtube.com/watch?v=COEgRaf6acU&quot;&gt;gives an introduction&lt;/a&gt; to his &amp;quot;manifest&amp;quot; online documentation browser.</description>
  <comments>http://xach.livejournal.com/299741.html</comments>
  <category>lisp</category>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
</channel>
</rss>

