<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="wordpress/2.2.1" -->
<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/"
	>

<channel>
	<title>an immense accumulation of commodities</title>
	<link>http://blog.splittist.com</link>
	<description></description>
	<pubDate>Tue, 22 Apr 2008 14:36:12 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.2.1</generator>
	<language>en</language>
			<item>
		<title>ECLM MMVIII</title>
		<link>http://blog.splittist.com/2008/04/22/eclm-mmviii/</link>
		<comments>http://blog.splittist.com/2008/04/22/eclm-mmviii/#comments</comments>
		<pubDate>Tue, 22 Apr 2008 14:36:12 +0000</pubDate>
		<dc:creator>splittist</dc:creator>
		
		<category><![CDATA[lisp]]></category>

		<guid isPermaLink="false">http://blog.splittist.com/2008/04/22/eclm-mmviii/</guid>
		<description><![CDATA[Amsterdam turned on its best summer weather for the European Common Lisp Meeting 2008. But enough scene setting. To give a quick rundown of the talks:
InspireData: How We Did It In Lisp Jeremy Jones
A very whizzy, very polished shrinkwrapped Windows and OSX application written in Common Lisp that actually sells well (&#62; 80k seats sold). [...]]]></description>
			<content:encoded><![CDATA[<p>Amsterdam turned on its best summer weather for the <a href="http://weitz.de/eclm2008/" title="ECLM 2008">European Common Lisp Meeting 2008</a>. But enough scene setting. To give a quick rundown of the talks:</p>
<p><strong><a href="http://www.inspiration.com/productinfo/inspiredata/index.cfm" title="InspireData">InspireData</a>: How We Did It In Lisp</strong> <em>Jeremy Jones</em></p>
<p>A very whizzy, very polished shrinkwrapped Windows and OSX application written in Common Lisp that actually sells well (&gt; 80k seats sold). 12MB of lisp code in 284 source files. Key learnings: specification is hard so incremental refinement is necessary, and &#8220;Lisp supports this better than anything I know&#8221;. Key quote: &#8220;The world needs to use more lisp.&#8221;</p>
<p><strong><a href="http://www.femlisp.org/" title="FEMLISP">FEMLISP</a></strong> <em>Nicolas Neuss</em></p>
<p>A system for solving partial differential equations using finite element methods. 30K lines of lisp code. Key quality: the stability of the base language - &#8220;I learned Common Lisp and I&#8217;m still up-to-date!&#8221; FEMLISP currently has one user, and there seems to be some reluctance to increase that number&#8230;</p>
<p><strong>Using Common Lisp For Large Internet Systems</strong> <em>Stefan Richter</em></p>
<p><a href="http://freiheit.com/" title="freiheit.com">freiheit.com</a> is a 60 person company that builds large internet systems in 98% Java with the rest being C and C++. (See also  <a href="http://www.hackers-with-attitude.com/" title="hackers with attitude">h.w.a.</a>) While it is easy to make mistakes, it is well known how to build large internet systems (1 million users and above). The various bits and pieces are usually in Java, but almost everything could be done in CL today, and certainly tomorrow with a bit of effort. The talk seemed to diverge at this point. On the one hand we should be encouraging people to use lisp in web programming (use <a href="http://common-lisp.net/project/cl-weblocks/" title="Weblocks">weblocks</a> and blog about it; &#8220;write a book&#8221;). On the other hand we should be introducing call-cc into CL, because (despite seeming to contradict many of the best practices for building scalable internet systems) they are really cool for web apps&#8230;</p>
<p><strong><a href="http://www2.siba.fi/PWGL/" title="PWGL">PWGL</a></strong> <em>Killian Sprotte</em></p>
<p>Killian had a great two-hour presentation on the impressive PWGL/Patchworks with OpenGL musical composition and analysis tool (or &#8220;Programming with Boxes&#8221;). Unfortunately he only had 45 minutes to present it. Certainly the talk with the highest &#8220;wow&#8221; factor, this is one to download and try out, not to read (or write) about.</p>
<p><strong><a href="http://ecls.sourceforge.net/" title="ECL">ECL</a> = (not only) Embeddable Comman Lisp</strong> <em>Juan José Garcia Ripoll</em></p>
<p>A presentation of the past, present and future of ECL. A pretty convincing demonstration that ECL is not stripped down, but is a fully fledged Common Lisp (to mix my metaphors).</p>
<p><strong><a href="http://www.selvaag.no/en/Companies/Selvaagbluethink/aboutus/Sider/default.aspx" title="Selvaag Bluethink">Selvaag</a> House Designer</strong> <em>Kristoffer Kvello</em></p>
<p>Using Knowledge Based Engineering and CL to automatically design buildings. Six full-time lisp programmers. Impressive application. I&#8217;ve always thought lisp uniquely suited to automated compliance applications - turns out I was right. Key observation: &#8220;Lisp: all good, no problems.&#8221;</p>
<p><strong>HPC Platform</strong> <em>Marc Battanyi</em></p>
<p>Subtitled &#8220;CL + FPGA = The Ultimate Processing Platform (or the Worst Case of NIH Syndrome)&#8221;, this presentation was another that suffered from being too long for its timeslot. All is forgiven, however, because Marc&#8217;s humour is bone dry.</p>
<p><strong>?</strong> <em>Ken Tilton</em></p>
<p>Ummm. This was Cells redux redux. I think. As a proponent (exponent?) of Screenshot Driven Development I can&#8217;t disagree with Kenny&#8217;s decision to concentrate on (as he put it) &#8220;stupid pet tricks&#8221;, but with no discernable structure, narrative or point, I really didn&#8217;t feel I learned anything&#8230;</p>
<p>All in all, the talks were great, the crowd interesting, the venue unique, and, while I won&#8217;t be at <a href="http://prog.vub.ac.be/~pcostanza/els08/" title="1st European Lisp Symposium">ELS</a> in Bordeaux, I&#8217;m definitely intending to be at ILC &#8216;09 at MIT (driven by Dan Weinreb - who was in Amsterdam - and Guy Steele - who wasn&#8217;t). I might even actually have done some lisping by then&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.splittist.com/2008/04/22/eclm-mmviii/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Arc, Brucio and The Register</title>
		<link>http://blog.splittist.com/2008/02/26/arc-brucio-and-the-register/</link>
		<comments>http://blog.splittist.com/2008/02/26/arc-brucio-and-the-register/#comments</comments>
		<pubDate>Tue, 26 Feb 2008 12:35:23 +0000</pubDate>
		<dc:creator>splittist</dc:creator>
		
		<category><![CDATA[lisp]]></category>

		<guid isPermaLink="false">http://blog.splittist.com/2008/02/26/arc-brucio-and-the-register/</guid>
		<description><![CDATA[Christophe Rhodes had tipped me to this, which some have not seen. The interesting part is in the fifth paragraph: &#8220;Unsurprisingly, the reaction has been mixed with some applauding how Arc strips the Lisp language down to its bare essentials.&#8221; Note who the applause comes from.
]]></description>
			<content:encoded><![CDATA[<p>Christophe Rhodes had tipped me to <a href="http://www.regdeveloper.co.uk/2008/02/07/lisp_arc_challenge/" title="Web pioneer hits critics with Lisp gauntlet">this</a>, which some have not seen. The interesting part is in the fifth paragraph: &#8220;Unsurprisingly, the reaction has been <a href="http://reddit.com/r/programming/info/677u6/comments/">mixed</a> with some <a href="http://brucio.blogspot.com/2008/01/arc-is-out.html">applauding</a> how Arc strips the Lisp language down to its bare essentials.&#8221; Note who the applause comes from.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.splittist.com/2008/02/26/arc-brucio-and-the-register/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Test trial ZSLUG meeting 0.1 alpha</title>
		<link>http://blog.splittist.com/2008/02/26/test-trial-zslug-meeting-01-alpha/</link>
		<comments>http://blog.splittist.com/2008/02/26/test-trial-zslug-meeting-01-alpha/#comments</comments>
		<pubDate>Tue, 26 Feb 2008 10:42:08 +0000</pubDate>
		<dc:creator>splittist</dc:creator>
		
		<category><![CDATA[lisp]]></category>

		<guid isPermaLink="false">http://blog.splittist.com/2008/02/26/test-trial-zslug-meeting-01-alpha/</guid>
		<description><![CDATA[Last night was the first ZSLUG (Zürich Scheme/Lisp Users Group) meeting at the Lion Bar. This turned out to be both a fantastic success - in that about 15 people turned up - and something of a failure - in that there were so many people it became impractical for Juho to complete his presentation [...]]]></description>
			<content:encoded><![CDATA[<p>Last night was the first <a href="http://groups.google.com/group/zslug/" title="Zürich Scheme/Lisp Users Group">ZSLUG</a> (Zürich Scheme/Lisp Users Group) meeting at the Lion Bar. This turned out to be both a fantastic success - in that about 15 people turned up - and something of a failure - in that there were so many people it became impractical for Juho to complete his presentation on SBCL code coverage. The search for an alternative venue/plex is on&#8230;</p>
<p>Down my end of the table(s) talk was about <a href="http://www.r6rs.org/" title="R6RS">R6RS</a> and the social psychology of standardisation; ARC and the rôle of Paul Graham in the (Common) Lisp community; theoretical physics and the bandwidth requirements of CERN; performance characteristics of <a href="http://www-sop.inria.fr/mimosa/fp/Bigloo/" title="Bigloo">Bigloo</a>, <a href="http://www.sbcl.org/" title="SBCL">SBCL</a> and <a href="http://www.scheme.com/" title="(chez (chez scheme))">Chez Scheme</a>; why developing in Schemes other than <a href="http://s48.org/" title="Scheme48">Scheme48</a> is painful and the wonders of <a href="http://common-lisp.net/project/slime/" title="Slime - The Superior Lisp Interaction Mode for Emacs">Slime</a>; and the mystery of where all the lispers maintaining the Swiss International Airlines Limited application have gone.</p>
<p>I made a particularly unconvincing argument for the wonders of CLIM and Climacs. Must do better!</p>
<p>I was the first to leave, so things might well have broken up acrimoniously by the end of the evening, but judging on what I saw and heard I would have to say that ZSLUG has a great future ahead of it.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.splittist.com/2008/02/26/test-trial-zslug-meeting-01-alpha/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Controlling Word the Lispy Way</title>
		<link>http://blog.splittist.com/2008/01/29/controlling-word-the-lispy-way/</link>
		<comments>http://blog.splittist.com/2008/01/29/controlling-word-the-lispy-way/#comments</comments>
		<pubDate>Tue, 29 Jan 2008 18:09:33 +0000</pubDate>
		<dc:creator>splittist</dc:creator>
		
		<category><![CDATA[win32]]></category>

		<category><![CDATA[lisp]]></category>

		<guid isPermaLink="false">http://blog.splittist.com/2008/01/29/controlling-word-the-lispy-way/</guid>
		<description><![CDATA[In my last post I asked whether anyone knew how to replace automatically numbered paragraphs in MS Word with their textual (non-auto) equivalents.
No one replied.
So I had to do it myself. Startlingly simple for my humble needs, the solution consists of a key-code invoking a macro which shells out to cscript running a Jscript program. [...]]]></description>
			<content:encoded><![CDATA[<p>In my last post I asked whether anyone knew how to replace automatically numbered paragraphs in MS Word with their textual (non-auto) equivalents.</p>
<p>No one replied.</p>
<p>So I had to do it myself. Startlingly simple for my humble needs, the solution consists of a key-code invoking a macro which shells out to <a href="http://msdn.microsoft.com/archive/default.asp?url=/archive/en-us/wsh/htm/wsRunCscript.asp" title="cscript">cscript</a> running a <a href="http://en.wikipedia.org/wiki/JScript" title="Jscript">Jscript</a> program. The slightly interesting point is that this last is generated by <a href="http://common-lisp.net/project/parenscript/" title="Parenscript">Parenscript</a>, and looks like so:</p>
<pre><code>
(defvar wd-app (*get-object "" "Word.Application"))
(defvar a-doc wd-app.*active-document)

(defun de-number ()
  (let ((cnt a-doc.*lists.*count))
    (dotimes (i cnt)
      (let ((lst (slot-value (a-doc.*lists 1)
                             '*range.*list-format)))
        (lst.*convert-numbers-to-text 3)))))
</code></pre>
<p>This is obviously far from being great style, but it gets the job done and has me wondering about all the other things I could be doing with parentheses&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.splittist.com/2008/01/29/controlling-word-the-lispy-way/feed/</wfw:commentRss>
		</item>
		<item>
		<title>In praise of VBacs</title>
		<link>http://blog.splittist.com/2008/01/09/in-praise-of-vbacs/</link>
		<comments>http://blog.splittist.com/2008/01/09/in-praise-of-vbacs/#comments</comments>
		<pubDate>Wed, 09 Jan 2008 14:39:21 +0000</pubDate>
		<dc:creator>splittist</dc:creator>
		
		<category><![CDATA[emacs]]></category>

		<category><![CDATA[win32]]></category>

		<guid isPermaLink="false">http://blog.splittist.com/2008/01/09/in-praise-of-vbacs/</guid>
		<description><![CDATA[For my sins I spend most of the (work) day in Microsoft Word. In order to make this experience bearable I turn off as many of the automatic mangling features as I can and install VBacs, which provides a basic set of Emacs keybindings for Word. This means I can C-x C-f, C-x C-s, C-s, [...]]]></description>
			<content:encoded><![CDATA[<p>For my sins I spend most of the (work) day in Microsoft Word. In order to make this experience bearable I turn off as many of the automatic mangling features as I can and install <a href="http://www.rath.ca/Misc/VBacs/" title="VBacs homepage">VBacs</a>, which provides a basic set of Emacs keybindings for Word. This means I can <code>C-x C-f</code>, <code>C-x C-s</code>, <code>C-s</code>, <code>C-r</code>, <code>M-%</code>, <code>M-w</code>, <code>C-y</code> etc. to my heart&#8217;s content. VBacs doesn&#8217;t turn Word into Emacs, but it does help me concentrate on changing the text rather than where simple keybindings might be.</p>
<p>VBacs - give it a go if you&#8217;re sentenced to Word.</p>
<p>PS. Does anyone have a programmatic way to replace the <a href="http://en.wiktionary.org/wiki/furshlugginer">furshlugginer</a> automatic numbering in a Word document with its textual equivalents? (That is, replace the automatically inserted numbering &#8220;1.13&#8243; with the text &#8220;1.13&#8243;.)</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.splittist.com/2008/01/09/in-praise-of-vbacs/feed/</wfw:commentRss>
		</item>
		<item>
		<title>NREVERSE vs. pointer manipulation revisted</title>
		<link>http://blog.splittist.com/2007/10/10/nreverse-vs-pointer-manipulation-revisted/</link>
		<comments>http://blog.splittist.com/2007/10/10/nreverse-vs-pointer-manipulation-revisted/#comments</comments>
		<pubDate>Wed, 10 Oct 2007 16:19:59 +0000</pubDate>
		<dc:creator>splittist</dc:creator>
		
		<category><![CDATA[history]]></category>

		<category><![CDATA[lisp]]></category>

		<guid isPermaLink="false">http://blog.splittist.com/2007/10/10/nreverse-vs-pointer-manipulation-revisted/</guid>
		<description><![CDATA[In &#8220;To NReverse When Consing a List or By Pointer Manipulation, To Avoid It; That Is the Question&#8221; (in Some Useful Lisp Algorithms: Part 2, MERL TR93-17, August, 1993), Richard C. Waters discusses whether it&#8217;s better, when consing up &#8220;a list of elements where the order of the elements in the list is the same [...]]]></description>
			<content:encoded><![CDATA[<p>In &#8220;To NReverse When Consing a List or By Pointer Manipulation, To Avoid It; That Is the Question&#8221; (in <em>Some Useful Lisp Algorithms: Part 2</em>, <a href="http://www.merl.com/papers/TR93-17/">MERL TR93-17</a>, August, 1993), Richard C. Waters discusses whether it&#8217;s better, when consing up &#8220;a list of elements where the order of the elements in the list is the same as the order that they are created in time&#8221;, to push and <code>nreverse</code> or &#8220;maintain a pointer to the end of the list and use <code>rplacd</code> to put each element directly into its proper place in the list.&#8221; Waters&#8217; conclusion is that <code>nreverse</code> is (was) often faster, but that in any case the speed difference is not enough to avoid the simpler <code>nreverse</code> approach.</p>
<p>To examine the differences Waters used two simple functions, <code>maplist-nreverse</code>:</p>
<pre>
(defun maplist-nreverse (f list)
  (do ((sub list (cdr sub))
       (r nil (cons (funcall f sub) r)))
      ((null sub) (nreverse r))))</pre>
<p>and <code>maplist-rplacd</code>:</p>
<pre>
(defun maplist-rplacd (f list)
  (let ((r (cons nil nil)))
    (do ((sub list (cdr sub))
	 (end r (let ((x (cons (funcall f sub) nil)))
		  (rplacd end x)
		  x)))
	((null sub) (cdr r)))))</pre>
<p>Timing the functions using <code>#'identity</code> as the map function he got the following results (Lucid Common Lisp on an HP-730):</p>
<table width="100%">
<tr>
<th></th>
<th colspan="6"><em>input list length</em></th>
</tr>
<tr>
<th></th>
<th>1</th>
<th>10</th>
<th>10<sup>2</sup></th>
<th>10<sup>3</sup></th>
<th>10<sup>4</sup></th>
<th>10<sup>5</sup></th>
</tr>
<tr>
<th><code>nreverse</code></th>
<td>8.3</td>
<td>3.1</td>
<td>2.6</td>
<td>2.6</td>
<td>2.9</td>
<td>6.2</td>
</tr>
<tr>
<th><code>rplacd</code></th>
<td>8.5</td>
<td>3.3</td>
<td>2.8</td>
<td>2.8</td>
<td>3.1</td>
<td>6.4</td>
</tr>
</table>
<p>(where the numbers represent computation time in microseconds per cons created).</p>
<p>For no real reason I <a href="http://perso.orange.fr/a.d.m/nreverse-test.lisp">replicated this</a> on an Intel Core2 T7200 2.0GHz running Win32 and sbcl 1.0.6:</p>
<table width="85%">
<tr>
<th></th>
<th colspan="5"><em>input list length</em></th>
</tr>
<tr>
<th></th>
<th>1</th>
<th>10</th>
<th>10<sup>2</sup></th>
<th>10<sup>3</sup></th>
<th>10<sup>4</sup></th>
</tr>
<tr>
<th><code>nreverse</code></th>
<td>0.1562</td>
<td>0.0469</td>
<td>0.0297</td>
<td>0.0250</td>
<td>0.0252</td>
</tr>
<tr>
<th><code>rplacd</code></th>
<td>0.1563</td>
<td>0.0469</td>
<td>0.0234</td>
<td>0.0227</td>
<td>0.0228</td>
</tr>
</table>
<p>(where the numbers represent computation time in microseconds per element of the input list).</p>
<p>Although the trend seems to be for the <code>rplacd</code> version to be slightly faster, the differences seem minor, and we might as well adopt Waters&#8217; recommendations:</p>
<blockquote><p>In closing I would like to note that the very best thing to do is to avoid writing code that conses lists altogether. Whenever possible, you should use standard parts of Common Lisp that do the consing for you. In particular, you should use functions like <code>replace</code>, <code>map</code>, <code>reduce</code>, <code>remove</code>, <code>union</code>, etc. whenever they are appropriate. Beyond this, you should take advantage of looping macro packages such as <code>loop</code> and Series.</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://blog.splittist.com/2007/10/10/nreverse-vs-pointer-manipulation-revisted/feed/</wfw:commentRss>
		</item>
		<item>
		<title>With knobs on</title>
		<link>http://blog.splittist.com/2007/09/28/with-knobs-on/</link>
		<comments>http://blog.splittist.com/2007/09/28/with-knobs-on/#comments</comments>
		<pubDate>Fri, 28 Sep 2007 06:12:17 +0000</pubDate>
		<dc:creator>splittist</dc:creator>
		
		<category><![CDATA[history]]></category>

		<category><![CDATA[mcclim]]></category>

		<guid isPermaLink="false">http://blog.splittist.com/2007/09/28/with-knobs-on/</guid>
		<description><![CDATA[Reading Sutherland&#8217;s incredible 1963 Sketchpad thesis I was struck by the following passage:
We will issue specific commands with a set of push buttons, turn functions on and off with switches, indicate position information and point to existing drawing parts with the light pen, rotate and magnify picture parts by turning knobs, and observe the drawing [...]]]></description>
			<content:encoded><![CDATA[<p>Reading Sutherland&#8217;s incredible 1963 <a href="http://en.wikipedia.org/wiki/Sketchpad">Sketchpad</a> <a href="http://www.cl.cam.ac.uk/techreports/UCAM-CL-TR-574.pdf">thesis</a> I was struck by the following passage:</p>
<blockquote><p>We will issue specific commands with a set of push buttons, turn functions on and off with switches, indicate position information and point to existing drawing parts with the light pen, rotate and magnify picture parts by turning knobs, and observe the drawing on the display system.</p></blockquote>
<p>Where are my knobs and buttons? Why is the great advance of recent decades in widely available physical human-computer interaction the click-wheel mouse?</p>
<p>Sutherland opens his thesis by observing:</p>
<blockquote><p>Heretofore, most interaction between men and computers has been slowed down by the need to reduce all communication to written statements that can be typed; in the past, we have been writing letters to rather than conferring with our computers.</p></blockquote>
<p>Isn&#8217;t it time the epistolary model of interaction evolved?<sup><a href="#fn1">1</a>,<a href="#fn2">2</a></sup></p>
<hr />
<small><a title="fn1" name="fn1"></a>1. Yes, I know this seems at odds with my admiration for <a href="http://www.cliki.net/CLIM">CLIM</a>.</small></p>
<p>
<small><a title="fn2" name="fn2"></a>2. Yes, I am being deliberately provocative - this <em>is</em> the web - but I can imagine zipping through a document accepting and rejecting edits with my PS2 control being a lot more productive (and fun) than the mouse+keyboard experience.</small></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.splittist.com/2007/09/28/with-knobs-on/feed/</wfw:commentRss>
		</item>
		<item>
		<title>#lisp FEP - I want to learn lisp but I don&#8217;t want to use emacs</title>
		<link>http://blog.splittist.com/2007/08/25/lisp-fep-i-want-to-learn-lisp-but-i-dont-want-to-use-emacs/</link>
		<comments>http://blog.splittist.com/2007/08/25/lisp-fep-i-want-to-learn-lisp-but-i-dont-want-to-use-emacs/#comments</comments>
		<pubDate>Sat, 25 Aug 2007 13:39:54 +0000</pubDate>
		<dc:creator>splittist</dc:creator>
		
		<category><![CDATA[lisp]]></category>

		<guid isPermaLink="false">http://blog.splittist.com/2007/08/25/lisp-fep-i-want-to-learn-lisp-but-i-dont-want-to-use-emacs/</guid>
		<description><![CDATA[A1
Your favourite lisp(s) + emacs + Slime (+ paredit) constitute a fabulous development environment that is widely used, and therefore widely supported, on #lisp. Eschewing this environment for something else will make it far harder for people to understand your problems and (if you ask nicely, and intelligently) help you with them.
(I also find it [...]]]></description>
			<content:encoded><![CDATA[<h2>A1</h2>
<p>Your favourite lisp(s) + emacs + <a href="http://common-lisp.net/project/slime/">Slime</a> (+ <a href="http://www.emacswiki.org/cgi-bin/wiki/ParEdit">paredit</a>) constitute a fabulous development environment that is widely used, and therefore widely supported, on #lisp. Eschewing this environment for something else will make it far harder for people to understand your problems and (if you ask nicely, and intelligently) help you with them.</p>
<p>(I also find it telling that when the smart folks who started developing lisp had the time and energy to build editors they built emacsen.)</p>
<p>However, if you <em>really</em> can&#8217;t stand emacs (perhaps because of a childhood incident with Richard Stallman, a wasp&#8217;s nest and a jar of manuka honey), you could use <a href="http://groups.google.com/group/comp.lang.lisp/msg/01fc60108121d606">plain Vi</a> (and <a href="http://wiki.alu.org/Slim-Vim">give up</a> the wonders of Swank) or  <a href="http://www.paragent.com/lisp/cusp/cusp.htm">Cusp</a>, if you&#8217;re an Eclipse fan.</p>
<p>But don&#8217;t come running to us when something goes wrong.</p>
<h2>A2</h2>
<p>&#8220;I want to learn Russian but I can&#8217;t be bothered with all the funny characters.&#8221;</p>
<p><small>* &#8220;FEP&#8221; = Frequently Expressed Predjudice</small></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.splittist.com/2007/08/25/lisp-fep-i-want-to-learn-lisp-but-i-dont-want-to-use-emacs/feed/</wfw:commentRss>
		</item>
		<item>
		<title>#lisp FAQ - How can I generate a standalone executable?</title>
		<link>http://blog.splittist.com/2007/08/25/lisp-faq-how-can-i-generate-a-standalone-executable/</link>
		<comments>http://blog.splittist.com/2007/08/25/lisp-faq-how-can-i-generate-a-standalone-executable/#comments</comments>
		<pubDate>Sat, 25 Aug 2007 13:39:18 +0000</pubDate>
		<dc:creator>splittist</dc:creator>
		
		<category><![CDATA[lisp]]></category>

		<guid isPermaLink="false">http://blog.splittist.com/2007/08/25/lisp-faq-how-can-i-generate-a-standalone-executable/</guid>
		<description><![CDATA[A1
By following the instructions for your lisp implementation:

sbcl - (sb-ext:save-lisp-and-die filename :executable t)
clisp - (ext:saveinitmem filename :save-executable t)
OpenMCL - (require "COCOA-APPLICATION")
ECL - (c:build-program ...)
Allegro - (generate-executable ...)
LispWorks - (deliver ...)

These last two have a whole host of bells and whistles (including, in the case of LispWorks, a tree-shaker), but require the paid-for versions. (You should [...]]]></description>
			<content:encoded><![CDATA[<h2>A1</h2>
<p>By following the instructions for your lisp implementation:</p>
<ul>
<li><a href="http://www.sbcl.org/manual/Generating-Executables.html#Generating-Executables">sbcl</a> - <code>(sb-ext:save-lisp-and-die filename :executable t)</code></li>
<li><a href="http://clisp.cons.org/impnotes/image.html">clisp</a> - <code>(ext:saveinitmem filename :save-executable t)</code></li>
<li><a href="http://openmcl.clozure.com/Doc/index.html#Building-an-Application-Bundle">OpenMCL</a> - <code>(require "COCOA-APPLICATION")</code></li>
<li><a href="http://ecls.sourceforge.net/new-manual/ch18s03.html">ECL</a> - <code>(c:build-program ...)</code></li>
<li><a href="http://franz.com/support/documentation/8.1/doc/delivery.htm">Allegro</a> - <code>(generate-executable ...)</code></li>
<li><a href="http://www.lispworks.com/documentation/lw50/DV/html/deluser.htm">LispWorks</a> - <code>(deliver ...)</code></li>
</ul>
<p>These last two have a whole host of bells and whistles (including, in the case of LispWorks, a tree-shaker), but require the paid-for versions. (You should also check their royalty requirements.)</p>
<h2>A2</h2>
<p>Why would you want to? Really? What commonly distributed systems in this day and age come in a single executable file, except as a delivery mechanism that subsequently sprays various libraries, databases and settings mechanisms around your filesystem?</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.splittist.com/2007/08/25/lisp-faq-how-can-i-generate-a-standalone-executable/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Emacs newbies - don&#8217;t swap Ctrl and Caps Lock</title>
		<link>http://blog.splittist.com/2007/07/23/emacs-newbies-dont-swap-ctrl-and-caps-lock/</link>
		<comments>http://blog.splittist.com/2007/07/23/emacs-newbies-dont-swap-ctrl-and-caps-lock/#comments</comments>
		<pubDate>Mon, 23 Jul 2007 08:23:00 +0000</pubDate>
		<dc:creator>splittist</dc:creator>
		
		<category><![CDATA[emacs]]></category>

		<category><![CDATA[win32]]></category>

		<category><![CDATA[lisp]]></category>

		<guid isPermaLink="false">http://blog.splittist.com/?p=22</guid>
		<description><![CDATA[ Newcomers to Common Lisp are encouraged to use Emacs (see also Finseth) so that they can use the fabulous Slime (and one should not forget paredit) as a development environment. Those that don&#8217;t insist they&#8217;ll stick with Vim (and then unaccountably fail to develop slim-vim), or try Cusp, will at some early point be [...]]]></description>
			<content:encoded><![CDATA[<p> Newcomers to Common Lisp are encouraged to use <a href="http://en.wikipedia.org/wiki/Emacs">Emacs</a> (see also <a href="http://www.finseth.com/craft/">Finseth</a>) so that they can use the fabulous <a href="http://common-lisp.net/project/slime/">Slime</a> (and one should not forget <a href="http://mumble.net/~campbell/emacs/paredit.el">paredit</a>) as a development environment. Those that don&#8217;t insist they&#8217;ll stick with <a href="http://www.vim.org/">Vim</a> (and then unaccountably fail to develop <a href="http://wiki.alu.org/Slim-Vim">slim-vim</a>), or try <a href="http://www.paragent.com/lisp/cusp/cusp.htm">Cusp</a>, will at some early point be advised to swap their Control and Caps Lock keys to save wear and tear on the pinkie. Even <a href="http://www.emacswiki.org/cgi-bin/wiki/EmacsNiftyTricks">EmacsWiki</a> points to typically forthright Steve Yegge <a href="http://steve.yegge.googlepages.com/effective-emacs">piece</a> which leads off with this advice.</p>
<p>I say - No. The proper place for the Control key is not &#8220;on the home row&#8221; but on each side of the Space Bar, where <a href="http://en.wikipedia.org/wiki/Knight_keyboard">Tom</a><br />
<a href="http://world.std.com/~jdostale/kbd/Knight1.jpeg">Knight</a> and <a href="http://world.std.com/~jdostale/kbd/SpaceCadet.html">the </a><a href="http://world.std.com/~jdostale/kbd/SpaceCadet1.jpeg">mothership </a><a href="http://www.abstractscience.freeserve.co.uk/symbolics/photos/IO/index.html">intended</a> them to be. And outside the Control keys should be the Meta keys, and outside them should be the Super keys, and finally the Hyper keys. This allows for what I think is a very natural way of typing key-chords - the modifiers with one hand, and the letter/symbol with the other. These are, after all, the sorts of keyboards on which Emacs was first developed.</p>
<p>How you do this will depend on your OS and your keyboard. For Windows, you might like to start <a href="http://www.microsoft.com/whdc/device/input/Scancode.mspx">here</a> or <a href="http://www.microsoft.com/whdc/device/input/w2kscan-map.mspx">here</a>.<a href="#fn1"><sup>*</sup></a> In OSX you can look in <code>System Preferences &gt; Keyboard &amp; Mouse &gt; Modifier Keys</code>. For Linux, there are a thousand xmodmap and xkb tutorials&#8230;</p>
<p>The other keyboard reconfiguration I recommend is, where possible, to put the parentheses on unshifted keys (swapping with the [square] brackets works on some keyboards). Of course, if, like me, you live/work in a locale with all manner of chicken scratchings on top of proper latin letters this may not be possible or convenient. (Eric Naggum&#8217;s more radical approach can be seen <a href="http://groups.google.com/group/comp.lang.lisp/msg/f499cca6b478260f?hl=en">here</a>.)</p>
<p>So, my advice for Emacs (<a href="http://common-lisp.net/project/climacs/">Climacs</a>, <a href="http://www.rath.ca/Misc/VBacs/">VBacs</a>) newbies would be: don&#8217;t swap Caps-Lock and Control, swap Alt, Ctrl, Windows, Application, AltGr&#8230;</p>
<hr align="left" width="10%" /> <fn id="fn1">* For example, if my Windows XP notebook had the following key configuration to the left of the spacebar<br />
(from right to left, inside to outside)<br />
<code>Alt Windows Ctrl</code> and I wanted it to be <code> Ctrl Alt Windows</code>, I would do the following:</fn></p>
<ol>
<li>Fire up <code>regedt32.exe</code> and navigate to <code>HKEY_CURRENT_USER\Keyboard Layout</code>.</li>
<li>Create a new entry <code>Scancode Map</code> (using <code>Edit &gt; New &gt; Binary Value</code>).</li>
<li>Edit the new entry (using <code>Edit &gt; Modify Binary Data</code>) to contain the following:
<pre>
    0000   00 00 00 00 00 00 00 00
    0008   04 00 00 00 1D 00 38 00
    0010   38 00 5B E0 5B E0 1D 00
    0018   00 00 00 00</pre>
<p>The table is in little-endian form. The first 8 bytes are header (all zeroes). The next four bytes contain the count of entries (4, including the sentinel). The three following four byte entries swap Left Alt (<code>0x38</code>) with Left Ctrl  <code>0x1D</code>), Left Win (<code>0xE058</code>) with Left Alt, and Left Ctrl with Left Win. The last 4 bytes are a null terminator/sentinel.</li>
<li>Close up, log off, log on, and enjoy.</li>
</ol>
<p>If you did this, of course, it would be entirely at your own risk.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.splittist.com/2007/07/23/emacs-newbies-dont-swap-ctrl-and-caps-lock/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
