<?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>nklein software &#187; Bug Fixes</title>
	<atom:link href="http://nklein.com/topics/releases/bug-fixes/feed/" rel="self" type="application/rss+xml" />
	<link>http://nklein.com</link>
	<description>software development and consulting</description>
	<lastBuildDate>Tue, 22 May 2012 03:48:05 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Method Versions &#8212; Retracted</title>
		<link>http://nklein.com/2011/05/method-versions-retracted/</link>
		<comments>http://nklein.com/2011/05/method-versions-retracted/#comments</comments>
		<pubDate>Fri, 20 May 2011 00:11:32 +0000</pubDate>
		<dc:creator>pat</dc:creator>
				<category><![CDATA[Bug Fixes]]></category>
		<category><![CDATA[Releases]]></category>
		<category><![CDATA[lisp]]></category>
		<category><![CDATA[method-versions]]></category>

		<guid isPermaLink="false">http://nklein.com/?p=1714</guid>
		<description><![CDATA[When I wrote the method-versions library, I had read about ContextL and decided that I only wanted a very small subset of it and wanted it to be very easy to use. It turns out that I didn&#8217;t quite understand the complexity-level of ContextL. It is actually very similar to what I had wanted. With [...]]]></description>
			<content:encoded><![CDATA[<p>When I wrote the <a href="http://nklein.com/software/method-versions/">method-versions library</a>, I had read about <a href="http://common-lisp.net/project/closer/contextl.html">ContextL</a> and decided that I only wanted a very small subset of it and wanted it to be very easy to use.  It turns out that I didn&#8217;t quite understand the complexity-level of ContextL.  It is actually very similar to what I had wanted.</p>
<p>With my library, you set up some versions and a variable to track the current version:</p>
<div class="codecolorer-container lisp blackboard" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><pre class="lisp codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #66cc66;">&#40;</span>method-versions<span style="color: #66cc66;">:</span><span style="color: #555;">define-method-version</span> <span style="color: #66cc66;">:</span><span style="color: #555;">v1</span><span style="color: #66cc66;">.</span>0<span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#40;</span>method-versions<span style="color: #66cc66;">:</span><span style="color: #555;">define-method-version</span> <span style="color: #66cc66;">:</span><span style="color: #555;">v1</span><span style="color: #66cc66;">.</span>1 <span style="color: #66cc66;">:</span><span style="color: #555;">v1</span><span style="color: #66cc66;">.</span>0<span style="color: #66cc66;">&#41;</span>
&nbsp;
<span style="color: #66cc66;">&#40;</span>declaim <span style="color: #66cc66;">&#40;</span>special *protocol-version*<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#40;</span>defparameter *protocol-version* <span style="color: #66cc66;">:</span><span style="color: #555;">v1</span><span style="color: #66cc66;">.</span>0<span style="color: #66cc66;">&#41;</span></pre></div>
<p>In ContextL, you just set up some layers:</p>
<div class="codecolorer-container lisp blackboard" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><pre class="lisp codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #66cc66;">&#40;</span>contextl<span style="color: #66cc66;">:</span><span style="color: #555;">deflayer</span> <span style="color: #66cc66;">:</span><span style="color: #555;">v1</span><span style="color: #66cc66;">.</span>0<span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#40;</span>contextl<span style="color: #66cc66;">:</span><span style="color: #555;">deflayer</span> <span style="color: #66cc66;">:</span><span style="color: #555;">v1</span><span style="color: #66cc66;">.</span>1 <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">:</span><span style="color: #555;">v1</span><span style="color: #66cc66;">.</span>0<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span></pre></div>
<p>In my library, you then set up a generic function that uses a special method combination that keys off of the special variable:</p>
<div class="codecolorer-container lisp blackboard" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><pre class="lisp codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #66cc66;">&#40;</span>defgeneric send-cmd <span style="color: #66cc66;">&#40;</span>cmd<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">:</span><span style="color: #555;">method-combination</span> method-versions<span style="color: #66cc66;">:</span><span style="color: #555;">method-versions-method-combination</span>
                       *protocol-version*<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span></pre></div>
<p>In ContextL, you declare a layered function:</p>
<div class="codecolorer-container lisp blackboard" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><pre class="lisp codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #66cc66;">&#40;</span>contextl<span style="color: #66cc66;">:</span><span style="color: #555;">define-layered-</span><span style="color: #b1b100;">function</span> <span style="color: #66cc66;">&#40;</span>cmd<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span></pre></div>
<p>In my library, you then declare different methods using the version as a method qualifier.</p>
<div class="codecolorer-container lisp blackboard" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><pre class="lisp codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #66cc66;">&#40;</span>defmethod send-cmd <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span>cmd login-cmd<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span>send-string <span style="color: #66cc66;">&#40;</span>login-<span style="color: #b1b100;">name</span> cmd<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span>send-string <span style="color: #66cc66;">&#40;</span>login-password cmd<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
&nbsp;
<span style="color: #66cc66;">&#40;</span>defmethod send-cmd <span style="color: #66cc66;">:</span><span style="color: #555;">v1</span><span style="color: #66cc66;">.</span>0 <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span>cmd login-cmd<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span>send-string <span style="color: #66cc66;">&#40;</span>login-<span style="color: #b1b100;">name</span> cmd<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span>send-string <span style="color: #66cc66;">&#40;</span>login-password cmd<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span>send-string <span style="color: #66cc66;">&#40;</span>login-location cmd<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span></pre></div>
<p>In ContextL, you declare layered methods specifying which layer the functions belong to:</p>
<div class="codecolorer-container lisp blackboard" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><pre class="lisp codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #66cc66;">&#40;</span>contextl<span style="color: #66cc66;">:</span><span style="color: #555;">define-layered-method</span> send-cmd <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span>cmd login-cmd<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span>send-string <span style="color: #66cc66;">&#40;</span>login-<span style="color: #b1b100;">name</span> cmd<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span>send-string <span style="color: #66cc66;">&#40;</span>login-password cmd<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
&nbsp;
<span style="color: #66cc66;">&#40;</span>contextl<span style="color: #66cc66;">:</span><span style="color: #555;">define-layered-method</span> send-cmd <span style="color: #66cc66;">:</span><span style="color: #555;">in</span> <span style="color: #66cc66;">:</span><span style="color: #555;">v1</span><span style="color: #66cc66;">.</span>0 <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span>cmd login-cmd<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span>send-string <span style="color: #66cc66;">&#40;</span>login-<span style="color: #b1b100;">name</span> cmd<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span>send-string <span style="color: #66cc66;">&#40;</span>login-password cmd<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span>send-string <span style="color: #66cc66;">&#40;</span>login-location cmd<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span></pre></div>
<p>In my library, you set your special variable appropriately and invoke the method:</p>
<div class="codecolorer-container lisp blackboard" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><pre class="lisp codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">let</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span>*protocol-version* <span style="color: #66cc66;">:</span><span style="color: #555;">v1</span><span style="color: #66cc66;">.</span>1<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span>send-cmd cmd<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span></pre></div>
<p>In ContextL, you declare which layer you want to be active when you go to invoke the method:</p>
<div class="codecolorer-container lisp blackboard" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><pre class="lisp codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #66cc66;">&#40;</span>contextl<span style="color: #66cc66;">:</span><span style="color: #555;">with-active-layers</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">:</span><span style="color: #555;">v1</span><span style="color: #66cc66;">.</span>1<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span>send-cmd cmd<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span></pre></div>
<p>My library does not let you specify other method qualifiers like <code class="codecolorer lisp default"><span class="lisp"><span style="color: #66cc66;">:</span><span style="color: #555;">around</span></span></code> or <code class="codecolorer lisp default"><span class="lisp"><span style="color: #66cc66;">:</span><span style="color: #555;">after</span></span></code>.  ContextL does.</p>
<p>I am going to leave my library published because I think it is a reasonably understandable, yet non-trivial, use of non-standard method combinations.  However, I am going to end up using ContextL for the projects that I had intended for my library.</p>
]]></content:encoded>
			<wfw:commentRss>http://nklein.com/2011/05/method-versions-retracted/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CL-FFT v1.4.2011.03.24 released</title>
		<link>http://nklein.com/2011/03/cl-fft-v1-4-2011-03-24-released/</link>
		<comments>http://nklein.com/2011/03/cl-fft-v1-4-2011-03-24-released/#comments</comments>
		<pubDate>Fri, 25 Mar 2011 03:48:26 +0000</pubDate>
		<dc:creator>pat</dc:creator>
				<category><![CDATA[Bug Fixes]]></category>
		<category><![CDATA[New Versions]]></category>
		<category><![CDATA[Releases]]></category>
		<category><![CDATA[cl-fft]]></category>
		<category><![CDATA[lisp]]></category>

		<guid isPermaLink="false">http://nklein.com/?p=1633</guid>
		<description><![CDATA[Elliott Johnson provided me with some patches for my CL-FFT library so that it will work with Allegro modern mode (mlisp). Here is the new tarball: fft_1.4.2011.03.24.tar.gz and its GPG signature: fft_1.4.2011.03.24.tar.gz.asc Thank you!]]></description>
			<content:encoded><![CDATA[<p>Elliott Johnson provided me with some patches for my CL-FFT library so that it will work with Allegro modern mode (mlisp).</p>
<ul>
<li>Here is the new tarball: <a href="http://nklein.com/wp-content/uploads/2011/03/fft_1.4.2011.03.24.tar.gz">fft_1.4.2011.03.24.tar.gz</a></li>
<li>and its GPG signature: <a href="http://nklein.com/wp-content/uploads/2011/03/fft_1.4.2011.03.24.tar.gz.asc">fft_1.4.2011.03.24.tar.gz.asc</a></li>
</ul>
<p>Thank you!</p>
]]></content:encoded>
			<wfw:commentRss>http://nklein.com/2011/03/cl-fft-v1-4-2011-03-24-released/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CL-Growl patched for CCL</title>
		<link>http://nklein.com/2010/04/cl-growl-patched-for-ccl/</link>
		<comments>http://nklein.com/2010/04/cl-growl-patched-for-ccl/#comments</comments>
		<pubDate>Thu, 29 Apr 2010 14:27:05 +0000</pubDate>
		<dc:creator>pat</dc:creator>
				<category><![CDATA[Bug Fixes]]></category>
		<category><![CDATA[Releases]]></category>
		<category><![CDATA[cl-growl]]></category>
		<category><![CDATA[lisp]]></category>

		<guid isPermaLink="false">http://nklein.com/?p=1319</guid>
		<description><![CDATA[Alexandre Paes submitted a patch for my CL-Growl library so it now works with CCL (aka. Clozure, formerly OpenMCL), too. Here is the source tarball: cl-growl_1.1.2010.04.29.tar.gz and the corresponding GPG signature: cl-growl_1.1.2010.04.29.tar.gz.asc. For other ways to access this code, see the CL-Growl page. Thank you, Alex!]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.ponto-dot.com/">Alexandre Paes</a> submitted a patch for my <a href="http://nklein.com/software/cl-growl/">CL-Growl library</a> so it now works with CCL (aka. Clozure, formerly OpenMCL), too.</p>
<p>Here is the source tarball: <a href="http://nklein.com/wp-content/uploads/2010/04/cl-growl_1.1.2010.04.29.tar.gz">cl-growl_1.1.2010.04.29.tar.gz</a> and the corresponding GPG signature: <a href="http://nklein.com/wp-content/uploads/2010/04/cl-growl_1.1.2010.04.29.tar.gz.asc">cl-growl_1.1.2010.04.29.tar.gz.asc</a>.  For other ways to access this code, see the <a href="http://nklein.com/software/cl-growl/">CL-Growl page</a>.</p>
<p>Thank you, Alex!</p>
]]></content:encoded>
			<wfw:commentRss>http://nklein.com/2010/04/cl-growl-patched-for-ccl/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Submitted small bug-fix to iPhone Spelling Toy</title>
		<link>http://nklein.com/2010/02/submitted-small-bug-fix-to-iphone-spelling-toy/</link>
		<comments>http://nklein.com/2010/02/submitted-small-bug-fix-to-iphone-spelling-toy/#comments</comments>
		<pubDate>Wed, 10 Feb 2010 15:33:39 +0000</pubDate>
		<dc:creator>pat</dc:creator>
				<category><![CDATA[Bug Fixes]]></category>
		<category><![CDATA[New Versions]]></category>
		<category><![CDATA[Releases]]></category>
		<category><![CDATA[spell-it]]></category>

		<guid isPermaLink="false">http://nklein.com/?p=1181</guid>
		<description><![CDATA[I just uploaded the first update to my iPhone Spelling Toy. The update includes two minor changes: Corrected spelling of siete (Spanish for seven) Corrected spelling of colores (Spanish for colors) Today, I am working on adding animal drawings.]]></description>
			<content:encoded><![CDATA[<p>I just uploaded the first update to my iPhone Spelling Toy.  The update includes two minor changes:</p>
<ul>
<li>Corrected spelling of <q>siete</q> (Spanish for <q>seven</q>)</li>
<li>Corrected spelling of <q>colores</q> (Spanish for <q>colors</q>)</li>
</ul>
<p>Today, I am working on adding animal drawings.</p>
<p><center><a href="http://nklein.com/wp-content/uploads/2010/02/spell-cat.png"><img src="http://nklein.com/wp-content/uploads/2010/02/spell-cat.png" alt="" title="spell-cat" width="270" height="270" class="size-full wp-image-1183" /></a></center></p>
]]></content:encoded>
			<wfw:commentRss>http://nklein.com/2010/02/submitted-small-bug-fix-to-iphone-spelling-toy/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

