<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>constantly.at &#187; Lisp</title>
	<atom:link href="http://constantly.at/category/lisp/feed/" rel="self" type="application/rss+xml" />
	<link>http://constantly.at</link>
	<description>Infrequently updated</description>
	<lastBuildDate>Sun, 22 Aug 2010 14:59:48 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>On tail recursion</title>
		<link>http://constantly.at/2009/05/on-tail-recursion/</link>
		<comments>http://constantly.at/2009/05/on-tail-recursion/#comments</comments>
		<pubDate>Thu, 28 May 2009 12:54:29 +0000</pubDate>
		<dc:creator>rudi</dc:creator>
				<category><![CDATA[Lisp]]></category>

		<guid isPermaLink="false">http://constantly.at/?p=80</guid>
		<description><![CDATA[Like many, I was not very interested in tail recursion &#8211; it&#8217;s just a way of writing a loop in a more verbose way, right? Â Luckily, Joe Marshall wrote a series of blog posts that made me reconsider my view &#8211; while self-calls might &#8220;only&#8221; be loops, mutual, never-ending tail-calls implement continuation-passing style, state machines [...]]]></description>
			<content:encoded><![CDATA[<p>Like many, I was not very interested in tail recursion &#8211; it&#8217;s just a way of writing a loop in a more verbose way, right? Â Luckily, <a href="http://funcall.blogspot.com/">Joe Marshall</a> <a href="http://funcall.blogspot.com/2009/04/you-knew-id-say-something.html">wrote</a> <a href="http://funcall.blogspot.com/2009/04/you-knew-id-say-something-part-ii.html">a</a> <a href="http://funcall.blogspot.com/2009/05/interlude.html">series</a> <a href="http://funcall.blogspot.com/2009/05/you-knew-id-say-something-part-iii.html">of</a> <a href="http://funcall.blogspot.com/2009/05/you-knew-id-say-something-part-iv.html">blog</a> <a href="http://funcall.blogspot.com/2009/05/you-knew-id-say-something-part-v.html">posts</a> that made me reconsider my view &#8211; while self-calls might &#8220;only&#8221; be loops, mutual, never-ending tail-calls implement continuation-passing style, state machines etc. Â Glad I got one more erroneous belief out of my system!</p>
]]></content:encoded>
			<wfw:commentRss>http://constantly.at/2009/05/on-tail-recursion/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ê‡sodÆƒoÊƒq-uÊop-ÇpÄ±sdn x-W</title>
		<link>http://constantly.at/2009/01/%ca%87sod%c6%83o%ca%83q-u%ca%8dop-%c7%9dpisdn-x-w/</link>
		<comments>http://constantly.at/2009/01/%ca%87sod%c6%83o%ca%83q-u%ca%8dop-%c7%9dpisdn-x-w/#comments</comments>
		<pubDate>Mon, 12 Jan 2009 08:58:45 +0000</pubDate>
		<dc:creator>rudi</dc:creator>
				<category><![CDATA[Lisp]]></category>

		<guid isPermaLink="false">http://constantly.at/blog/?p=66</guid>
		<description><![CDATA[Things to do when you&#8217;re vacationing in one of the most beautiful places in the world (i.e., Bali):
Why, implement code to turn text upside-down in your favorite editor, of course!
]]></description>
			<content:encoded><![CDATA[<p>Things to do when you&#8217;re vacationing in one of the most beautiful places in the world (i.e., Bali):</p>
<p>Why, implement code to <a title="upside-down.el" href="http://github.com/rudi/upside-down.el/tree/master">turn text upside-down</a> in your <a href="http://www.gnu.org/software/emacs/">favorite editor</a>, of course!</p>
]]></content:encoded>
			<wfw:commentRss>http://constantly.at/2009/01/%ca%87sod%c6%83o%ca%83q-u%ca%8dop-%c7%9dpisdn-x-w/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Public Service Announcement</title>
		<link>http://constantly.at/2008/02/public-service-announcement/</link>
		<comments>http://constantly.at/2008/02/public-service-announcement/#comments</comments>
		<pubDate>Tue, 05 Feb 2008 10:07:11 +0000</pubDate>
		<dc:creator>rudi</dc:creator>
				<category><![CDATA[Lisp]]></category>

		<guid isPermaLink="false">http://constantly.at/blog/2008/02/05/public-service-announcement/</guid>
		<description><![CDATA[If you compile sbcl from source yourself, and you want to have threading enabled, then look at the top of the file base-target-features.lisp-expr and do what it says therein.
Thank you.
]]></description>
			<content:encoded><![CDATA[<p>If you compile sbcl from source yourself, and you want to have threading enabled, then look at the top of the file base-target-features.lisp-expr and do what it says therein.</p>
<p>Thank you.</p>
]]></content:encoded>
			<wfw:commentRss>http://constantly.at/2008/02/public-service-announcement/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Just for fun &#8230;</title>
		<link>http://constantly.at/2007/12/just-for-fun/</link>
		<comments>http://constantly.at/2007/12/just-for-fun/#comments</comments>
		<pubDate>Wed, 19 Dec 2007 08:07:54 +0000</pubDate>
		<dc:creator>rudi</dc:creator>
				<category><![CDATA[Lisp]]></category>

		<guid isPermaLink="false">http://constantly.at/blog/2007/12/19/just-for-fun/</guid>
		<description><![CDATA[
The McCLIM listener in a cocoa window, running on the latest Clozure CL beta.
It took some time, since on OS X 10.5 CGFloat can be either single-float or double-float, depending on the processor. At the moment, I just rewired the hardwired (coerce &#8230; &#8217;single-float) calls and numeric constants in the beagle backend. Also, it crashes [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://co000222.host.inode.at/wp-content/uploads/cocoa-listener.png" title="cocoa-listener.png"><img src="http://co000222.host.inode.at/wp-content/uploads/cocoa-listener-150x150.png" alt="cocoa-listener.png" /></a></p>
<p>The <a href="http://common-lisp.net/project/mcclim/">McCLIM</a> listener in a cocoa window, running on the latest <a href="http://openmcl.clozure.com/">Clozure CL</a> beta.</p>
<p>It took some time, since on OS X 10.5 CGFloat can be either single-float or double-float, depending on the processor. At the moment, I just rewired the hardwired (coerce &#8230; &#8217;single-float) calls and numeric constants in the beagle backend. Also, it crashes on the all-important &#8220;Show Class Subclasses t&#8221; benchmark. Still, very nice.</p>
]]></content:encoded>
			<wfw:commentRss>http://constantly.at/2007/12/just-for-fun/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>ParenScript vs script.aculo.us</title>
		<link>http://constantly.at/2007/12/parenscript-vs-scriptaculous/</link>
		<comments>http://constantly.at/2007/12/parenscript-vs-scriptaculous/#comments</comments>
		<pubDate>Wed, 12 Dec 2007 08:50:20 +0000</pubDate>
		<dc:creator>rudi</dc:creator>
				<category><![CDATA[Lisp]]></category>

		<guid isPermaLink="false">http://constantly.at/blog/2007/12/12/parenscript-vs-scriptaculous/</guid>
		<description><![CDATA[Currently, my job does not involve a whole lot of programming, and I&#8217;m getting a bit rusty and irritated.  So, last weekend I decided to noodle around aimlessly with some systems I meant to try out for a while now.
Parenscript advertises itself as being easy to integrate with javascript libraries such as Prototype, but [...]]]></description>
			<content:encoded><![CDATA[<p>Currently, my job does not involve a whole lot of programming, and I&#8217;m getting a bit rusty and irritated.  So, last weekend I decided to noodle around aimlessly with some systems I meant to try out for a while now.</p>
<p><a href="http://common-lisp.net/project/parenscript/">Parenscript</a> advertises itself as being easy to integrate with javascript libraries such as <a href="http://www.prototypejs.org/">Prototype</a>, but the manual gives no examples on how to do this.  Furthermore, the Parenscript manual uses aserve / htmlgen for its examples, while much of the action these days is with <a href="http://weitz.de/hunchentoot/">hunchentoot</a>.  So, without further ado, a pointless example integrating hunchentoot, <a href="http://weitz.de/cl-who/">cl-who</a>, parenscript and <a href="http://script.aculo.us/">script.aculo.us</a>. Load the code after loading hunchentoot, cl-who and parenscript into your running Lisp.</p>
<pre>;;; Just the standard intro
(defpackage :js-hax
  (:use :common-lisp :hunchentoot :cl-who :parenscript))
(in-package :js-hax)
(start-server :port 8080)

;;; Set the path to where you unpacked script.aculo.us
;;; create-folder-dispatcher-and-handler publishes subdirectories:
;;; http://.../js/lib/prototype.js
;;; http://.../js/src/scriptaculous.js
(push (create-folder-dispatcher-and-handler
       "/js/" #p"/home/someone/source/scriptaculous-js-1.8.0/")
      *dispatch-table*)

(defmacro js-script (&amp;rest body)
  "Utility macro for including ParenScript into the HTML
   notation of cl-who"
  `(with-html-output (*standard-output*)
     (:script :type "text/javascript"
              (format t "~%// &lt;!--[CDATA[~%~A~%//]]--&gt;~%" (ps ,@body)))))

;;; Slider example, taken from the scriptaculous wiki
(defun foo ()
  (with-html-output-to-string (*standard-output* nil :prologue t)
    (:html
     (:head (:title "script.aculo.us Tests")
            (:script :language "JavaScript" :type "text/javascript"
                     :src "/js/lib/prototype.js" "stupid firefox")
            (:script :language "JavaScript" :type "text/javascript"
                     :src "/js/src/scriptaculous.js" "stupid firefox"))
     (:body
      (:h1 "script.aculo.us vs. ParenScript")
      (:p "The humble slider.")
      (:p
       (:div :id "track1"
             :style "width:200px;background-color:#aaa;height:5px;"
             (:div
              :id "handle1"
              :style "width:5px;height:10px;background-color:#f00;cursor:move;"))
       (:div :id "debug1" :style "padding-top: 5px;"))
      (js-script
       ;; Create the Slider object
       (new (*control.*slider
             ;; Hook it up to the UI elements ...
             "handle1" "track1"
             ;; ... and assign behavior
             (create on-slide (lambda (v)
                                ;; Prototype-style DOM accessors:
                                ;; $('debug1').innerHTML = ...
                                (setf (slot-value ($ "debug1")
                                                  'inner-h-t-m-l)
                                      (+ "slide: " v)))
                     on-change (lambda (v)
                                 (setf (slot-value ($ "debug1")
                                                   'inner-h-t-m-l)
                                       (+ "changed! " v)))))))))))

(push (create-prefix-dispatcher "/foo" 'foo) *dispatch-table*)</pre>
<p>All in all quite painless. The only point where I had to sit and think a bit was the translation of the prototype-style DOM accessors to parenscript notation.</p>
<p><strong>Edit:</strong> Oh, and the js-script code above is missing the CDATA bits which were eaten by the web.  Check page 6 of the parenscript documentation for the missing pieces.</p>
<p><strong>Edit2:</strong> Thanks to Aankhen for pointing out that the CDATA wasn&#8217;t et after all, just hiding.  I&#8217;ll go wrestle with this blog now to fix the stupid smartquotes.</p>
]]></content:encoded>
			<wfw:commentRss>http://constantly.at/2007/12/parenscript-vs-scriptaculous/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Alien technology sighted in Leopard</title>
		<link>http://constantly.at/2007/10/alien-technology-sighted-in-leopard/</link>
		<comments>http://constantly.at/2007/10/alien-technology-sighted-in-leopard/#comments</comments>
		<pubDate>Tue, 30 Oct 2007 03:33:24 +0000</pubDate>
		<dc:creator>rudi</dc:creator>
				<category><![CDATA[Lisp]]></category>

		<guid isPermaLink="false">http://constantly.at/blog/2007/10/30/alien-technology-sighted-in-leopard/</guid>
		<description><![CDATA[Leopard sandboxes are flexible and interesting. Theyâ€™re apparently compiled from Scheme programs (sandbox-compilerd embeds TinyScheme) that live in /usr/share/sandbox. You can break sandbox-compilerd open in TextEdit and read the compiled-in Scheme code; theyâ€™ve got a lot of the bases covered, including obscure stuff like SYSV IPC, the BSD sysctl interface, and signals.Â 
http://www.matasano.com/log/981/a-roundup-of-leopard-security-features/
]]></description>
			<content:encoded><![CDATA[<blockquote><p>Leopard sandboxes are flexible and interesting. Theyâ€™re apparently compiled from Scheme programs (sandbox-compilerd embeds TinyScheme) that live in /usr/share/sandbox. You can break sandbox-compilerd open in TextEdit and read the compiled-in Scheme code; theyâ€™ve got a lot of the bases covered, including obscure stuff like SYSV IPC, the BSD sysctl interface, and signals.Â </p></blockquote>
<p><a href="http://www.matasano.com/log/981/a-roundup-of-leopard-security-features/">http://www.matasano.com/log/981/a-roundup-of-leopard-security-features/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://constantly.at/2007/10/alien-technology-sighted-in-leopard/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>&#8220;I see no reason to do further business with you&#8221;</title>
		<link>http://constantly.at/2007/08/i-see-no-reason-to-do-further-business-with-you/</link>
		<comments>http://constantly.at/2007/08/i-see-no-reason-to-do-further-business-with-you/#comments</comments>
		<pubDate>Tue, 14 Aug 2007 18:45:07 +0000</pubDate>
		<dc:creator>rudi</dc:creator>
				<category><![CDATA[Lisp]]></category>

		<guid isPermaLink="false">http://constantly.at/blog/2007/08/14/i-see-no-reason-to-do-further-business-with-you/</guid>
		<description><![CDATA[Well, that would have been nice: amazon.ca held something of a fire sale, offering two very good books for 4 Dollars each.  As did many others, I ordered &#8220;Lisp in Small Pieces&#8221; and Jaynes&#8217;s book on probability theory.  Additionally, since I was paying for shipping anyway, I ordered a full-price book as well. [...]]]></description>
			<content:encoded><![CDATA[<p>Well, that would have been nice: amazon.ca held something of a fire sale, offering two very good books for 4 Dollars each.  As did many others, I ordered &#8220;Lisp in Small Pieces&#8221; and Jaynes&#8217;s book on probability theory.  Additionally, since I was paying for shipping anyway, I ordered a full-price book as well.  But, as <a href="http://jonphilpott.blogspot.com/2007/08/lisp-on-amazonca.html">John Philpott</a>&#8217;s order vahished, so did mine &#8211; almost: of course, Amazon was prepared to send me the full-price book anyway, with the overseas shipping and handling charges.</p>
<p>I&#8217;m not angry that I will not get the books, of course &#8211; if I had not heard about <a href="http://xach.livejournal.com/133661.html">that special offer</a> at all, I would not have anything to be angry about either.  But when I said &#8220;vanished&#8221;, I mean it: Amazon  dropped two out of three books from my order, without notifying me, and would have sent me a full-price book overseas; I would have paid at least twice the store price.  And since I did not save their order confirmation email, I cannot even prove that the entire thing happened &#8230;</p>
<p><strong>[Update]</strong> Well, better late than never &#8211; I got a notification email explaining <strike>that it was all a dream</strike> that the books had been displayed with an incorrect price.Â  I guess they simply ran out of stock, since the people who ordered before the madness started did get their LiSP at Small Prices.Â  Still, a notification email plus 10$ gift certificate is close to the right thing.</p>
]]></content:encoded>
			<wfw:commentRss>http://constantly.at/2007/08/i-see-no-reason-to-do-further-business-with-you/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>What&#8217;s all this, then?</title>
		<link>http://constantly.at/2007/04/whats-all-this-then/</link>
		<comments>http://constantly.at/2007/04/whats-all-this-then/#comments</comments>
		<pubDate>Fri, 20 Apr 2007 01:52:44 +0000</pubDate>
		<dc:creator>rudi</dc:creator>
				<category><![CDATA[Lisp]]></category>

		<guid isPermaLink="false">http://constantly.at/blog/2007/04/20/whats-all-this-then/</guid>
		<description><![CDATA[Hmm&#8230;Seems to be a Smalltalk-in-Flash, implemented using Strange Alien Technology, and having the eye candy. Just when I didn&#8217;t need another toy&#8230;[Update]The above wasn&#8217;t very clear &#8211; it&#8217;s a Smalltalk-on-Lisp-in-Flash-and-.Net &#8211; fun stuff.
]]></description>
			<content:encoded><![CDATA[<p><a href="http://vistasmalltalk.wordpress.com/2007/04/15/classbrowser-in-lisp/">Hmm&#8230;</a>Seems to be a <a href="http://vistascript.net/vistascript/docuwiki/doku.php">Smalltalk-in-Flash</a>, implemented using <a href="http://vistasmalltalk.wordpress.com/2007/04/09/emacs-as-a-model/">Strange Alien Technology</a>, and having the <a href="http://vistasmalltalk.wordpress.com/2007/04/11/text-rotation-effects/">eye candy</a>. Just when I didn&#8217;t need another toy&#8230;<strong>[Update]</strong>The above wasn&#8217;t very clear &#8211; it&#8217;s a Smalltalk-on-Lisp-in-Flash-and-.Net &#8211; fun stuff.</p>
]]></content:encoded>
			<wfw:commentRss>http://constantly.at/2007/04/whats-all-this-then/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Aquamacs rocks</title>
		<link>http://constantly.at/2007/02/aquamacs-rocks/</link>
		<comments>http://constantly.at/2007/02/aquamacs-rocks/#comments</comments>
		<pubDate>Wed, 14 Feb 2007 10:12:23 +0000</pubDate>
		<dc:creator>rudi</dc:creator>
				<category><![CDATA[Lisp]]></category>

		<guid isPermaLink="false">http://constantly.at/blog/2007/02/14/aquamacs-rocks/</guid>
		<description><![CDATA[Aquamacs continues to be my emacs distribution of choice, mostly because it manages to behave both like an OS X application and like emacs.
The only inconsistency I discovered was with Undo: Aquamacs uses redo.el, which removes the emacs undo function and installs more familiar, but less powerful undo/redo functions in its place.  Since redo.el [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://aquamacs.org/">Aquamacs</a> continues to be my emacs distribution of choice, mostly because it manages to behave both like an OS X application and like emacs.</p>
<p>The only inconsistency I discovered was with Undo: Aquamacs uses redo.el, which removes the emacs undo function and installs more familiar, but less powerful undo/redo functions in its place.  Since redo.el clobbers the original undo function, I couldn&#8217;t adjust the keybindings myself without hacking Aquamacs distributed files, so I sent a whiney bug report.</p>
<p>24 hours and a short email back-and-forth later (choice quote: &#8220;You are the first to complain, but that doesn&#8217;t mean you&#8217;re not right.&#8221;), the nightly builds don&#8217;t clobber undo any more, C-/ and C-_ use emacs undo and undo/redo is available via Cmd-Z/Cmd-S-Z and the pull-down menu.</p>
<p>This is a good example of what I understand to be the general design philosophy of Aquamacs: offer emacs functions where an emacs user expects to find them, offer Mac-like functionality where a Mac user looks.Â  And its developer, David Reitter, is very responsive and friendly indeed.</p>
]]></content:encoded>
			<wfw:commentRss>http://constantly.at/2007/02/aquamacs-rocks/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>&#8220;Progress&#8221;</title>
		<link>http://constantly.at/2006/08/progress/</link>
		<comments>http://constantly.at/2006/08/progress/#comments</comments>
		<pubDate>Mon, 28 Aug 2006 12:21:04 +0000</pubDate>
		<dc:creator>rudi</dc:creator>
				<category><![CDATA[Lisp]]></category>

		<guid isPermaLink="false">http://constantly.at/blog/2006/08/28/progress/</guid>
		<description><![CDATA[Portable AllegroServe is still in hibernation, but I have at least updated the asdf-installable version to current cvs so it compiles under sbcl again.
]]></description>
			<content:encoded><![CDATA[<p>Portable AllegroServe is still in hibernation, but I have at least updated the asdf-installable version to current cvs so it compiles under sbcl again.</p>
]]></content:encoded>
			<wfw:commentRss>http://constantly.at/2006/08/progress/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
