<?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; windows</title>
	<atom:link href="http://nklein.com/tags/windows/feed/" rel="self" type="application/rss+xml" />
	<link>http://nklein.com</link>
	<description>software development and consulting</description>
	<lastBuildDate>Thu, 22 Dec 2011 04:42:24 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
		<item>
		<title>Cross-Platform Development</title>
		<link>http://nklein.com/2009/11/cross-platform-development/</link>
		<comments>http://nklein.com/2009/11/cross-platform-development/#comments</comments>
		<pubDate>Thu, 26 Nov 2009 01:31:04 +0000</pubDate>
		<dc:creator>pat</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[lisp]]></category>
		<category><![CDATA[TC Lisp]]></category>
		<category><![CDATA[vmware]]></category>
		<category><![CDATA[windows]]></category>
		<category><![CDATA[woolly]]></category>

		<guid isPermaLink="false">http://nklein.com/?p=1018</guid>
		<description><![CDATA[In preparation for the upcoming TC Lispers meeting, I was testing my Sheeple-based CL-OpenGL GUI code on all of the different systems that I use. This was important because part of my goal in starting from bare-bones OpenGL was to make something that was pretty easy to port. The OpenGL libraries are the only non-Lisp [...]]]></description>
			<content:encoded><![CDATA[<p>In preparation for the <a href="http://tclispers.org/events/november-meeting">upcoming TC Lispers meeting</a>, I was testing my <a href="http://sykosomatic.org/sheeple/">Sheeple</a>-based <a href="http://nklein.com/2009/11/playing-with-sheeple-based-gui-atop-cl-opengl/">CL-OpenGL GUI</a> code on all of the different systems that I use.  This was important because part of my goal in starting from bare-bones OpenGL was to make something that was pretty easy to port.  The OpenGL libraries are the only non-Lisp dependencies, and they are pretty standard.</p>
<p>I run Mac OS X 10.6.2 as my primary development machine.  I knew everything I had so far worked there under SBCL 1.0.30 and CMU-CL 20a.  It took a little tweaking to get Sheeple built under Allegro CL 8.1 (Trial Edition), but after that I was five-by-five under Allegro, too.  Unfortunately, I cannot get CL-OpenGL to run under Clozure 1.3-r11936 on Mac OS X.  Also, ECL 9.10.2 doesn&#8217;t support weak key hashtables which Sheeple needs.  And, my install of clisp broke somewhere along the lines, so I haven&#8217;t tried it.</p>
<p>I have an Ubuntu Linux box.  There, I am using SBCL 1.0.11.debian (eeps).  Everything ran perfectly over there (even displaying through X Windows back to my Mac).</p>
<p>I also run Windows Vista under VMWare Fusion on my Mac.  I hadn&#8217;t done any development on it for months and months.  Fortunately, in Google-ing to find out how to fix it, I stumbled upon <a href="http://nklein.com/2009/05/emacs-slime-sbcl-on-windows-vista/">what I had written about how I got things set up originally</a>.  Over the last two hours, I got SBCL upgraded to 1.0.29 under Vista.  I got ASDF-Install set up with a bunch of help from <a href="http://sean-ross.blogspot.com/2007/05/asdf-install-windows.html">this article</a>.  And, from there, I got CFFI and cl-opengl and ZPB-TTF and Sheeple installed.</p>
<p>ZPB-TTF and Sheeple both used some tar format options that <a href="http://www.method-combination.net/blog/archives/2007/04/30/new-archive-release.html">archive_0.7.0</a> didn&#8217;t like.  For those, I had to jump through some hoops to untar and retar them to get them to install.</p>
<p>Here was my final <b>/Users/Patrick/.sbclrc</b> file:</p>
<div class="codecolorer-container lisp blackboard" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;height:300px;"><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>require <span style="color: #66cc66;">:</span><span style="color: #555;">asdf</span><span style="color: #66cc66;">&#41;</span>
&nbsp;
<span style="color: #808080; font-style: italic;">;; from Zach Beane</span>
<span style="color: #66cc66;">&#40;</span>defmethod asdf<span style="color: #66cc66;">:</span><span style="color: #555;">perform</span> <span style="color: #66cc66;">:</span><span style="color: #555;">around</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span>o asdf<span style="color: #66cc66;">:</span><span style="color: #555;">load-op</span><span style="color: #66cc66;">&#41;</span>
                                <span style="color: #66cc66;">&#40;</span>c asdf<span style="color: #66cc66;">:</span><span style="color: #555;">cl-source-file</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span>handler-<span style="color: #b1b100;">case</span> <span style="color: #66cc66;">&#40;</span>call-next-method o c<span style="color: #66cc66;">&#41;</span>
    <span style="color: #66cc66;">&#40;</span>#+sbcl sb-ext<span style="color: #66cc66;">:</span><span style="color: #555;">invalid-fasl</span>
     #+allegro excl<span style="color: #66cc66;">::</span><span style="color: #555;">file-incompatible-fasl-</span><span style="color: #b1b100;">error</span>
     #+lispworks conditions<span style="color: #66cc66;">:</span><span style="color: #555;">fasl-</span><span style="color: #b1b100;">error</span>
     #+cmu ext<span style="color: #66cc66;">:</span><span style="color: #555;">invalid-fasl</span>
     #-<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">or</span> sbcl allegor lispworks cmu<span style="color: #66cc66;">&#41;</span> <span style="color: #b1b100;">error</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>
     <span style="color: #66cc66;">&#40;</span>asdf<span style="color: #66cc66;">:</span><span style="color: #555;">perform</span> <span style="color: #66cc66;">&#40;</span>make-instance 'asdf<span style="color: #66cc66;">:</span><span style="color: #555;">compile-op</span><span style="color: #66cc66;">&#41;</span> c<span style="color: #66cc66;">&#41;</span>
     <span style="color: #66cc66;">&#40;</span>call-next-method<span style="color: #66cc66;">&#41;</span><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><span style="color: #b1b100;">dolist</span> <span style="color: #66cc66;">&#40;</span>pkg  '<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;alexandria/&quot;</span>
                <span style="color: #ff0000;">&quot;archive_0.7.0/&quot;</span>
                <span style="color: #ff0000;">&quot;asdf-install/asdf-install/&quot;</span>
                <span style="color: #ff0000;">&quot;babel_0.3.0/&quot;</span>
                <span style="color: #ff0000;">&quot;cffi_0.10.5/&quot;</span>
                <span style="color: #ff0000;">&quot;cl-opengl/&quot;</span>
                <span style="color: #ff0000;">&quot;flexi-streams-1.0.7/&quot;</span>
                <span style="color: #ff0000;">&quot;gzip-stream_0.2.8/&quot;</span>
                <span style="color: #ff0000;">&quot;salza2-2.0.7/&quot;</span>
                <span style="color: #ff0000;">&quot;sykopomp-sheeple-ceab213/&quot;</span>
                <span style="color: #ff0000;">&quot;trivial-features_0.6/&quot;</span>
                <span style="color: #ff0000;">&quot;trivial-gray-streams-2008-11-02/&quot;</span>
                <span style="color: #ff0000;">&quot;woolly/&quot;</span>
                <span style="color: #ff0000;">&quot;zpb-ttf-1.0/&quot;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span>pushnew <span style="color: #66cc66;">&#40;</span>merge-pathnames pkg
                            <span style="color: #66cc66;">&#40;</span>merge-pathnames <span style="color: #ff0000;">&quot;ASDF-Systems/&quot;</span>
                                             <span style="color: #66cc66;">&#40;</span>user-homedir-pathname<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
           asdf<span style="color: #66cc66;">:</span>*central-registry*<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
&nbsp;
<span style="color: #66cc66;">&#40;</span>asdf<span style="color: #66cc66;">:</span><span style="color: #555;">oos</span> 'asdf<span style="color: #66cc66;">:</span><span style="color: #555;">load-op</span> 'asdf-install<span style="color: #66cc66;">&#41;</span>
&nbsp;
<span style="color: #808080; font-style: italic;">;; for my sanity</span>
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">setf</span> asdf-install<span style="color: #66cc66;">:</span>*locations*
      <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">list</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">list</span> <span style="color: #66cc66;">&#40;</span>merge-pathnames <span style="color: #ff0000;">&quot;ASDF-Systems/&quot;</span> <span style="color: #66cc66;">&#40;</span>user-homedir-pathname<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
                  <span style="color: #66cc66;">&#40;</span>merge-pathnames <span style="color: #ff0000;">&quot;ASDF-Systems/&quot;</span> <span style="color: #66cc66;">&#40;</span>user-homedir-pathname<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
                  <span style="color: #ff0000;">&quot;My install spot&quot;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
&nbsp;
<span style="color: #808080; font-style: italic;">;; via http://sean-ross.blogspot.com/2007/05/asdf-install-windows.html</span>
#+win32
<span style="color: #66cc66;">&#40;</span>asdf<span style="color: #66cc66;">:</span><span style="color: #555;">oos</span> 'asdf<span style="color: #66cc66;">:</span><span style="color: #555;">load-op</span> 'gzip-stream<span style="color: #66cc66;">&#41;</span>
&nbsp;
#+win32
<span style="color: #66cc66;">&#40;</span>asdf<span style="color: #66cc66;">:</span><span style="color: #555;">oos</span> 'asdf<span style="color: #66cc66;">:</span><span style="color: #555;">load-op</span> 'archive<span style="color: #66cc66;">&#41;</span>
&nbsp;
#+win32
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">defun</span> asdf-install-extractor <span style="color: #66cc66;">&#40;</span>to-dir tarball<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">let</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">name</span> <span style="color: #b1b100;">nil</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
    <span style="color: #66cc66;">&#40;</span>gzip-stream<span style="color: #66cc66;">:</span><span style="color: #555;">with-open-gzip-file</span> <span style="color: #66cc66;">&#40;</span>ins tarball<span style="color: #66cc66;">&#41;</span>
      <span style="color: #66cc66;">&#40;</span>archive<span style="color: #66cc66;">:</span><span style="color: #555;">with-open-archive</span> <span style="color: #66cc66;">&#40;</span>archive ins<span style="color: #66cc66;">&#41;</span>
	<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">let</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span>*default-pathname-defaults* <span style="color: #66cc66;">&#40;</span>pathname to-dir<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
	  <span style="color: #66cc66;">&#40;</span>archive<span style="color: #66cc66;">:</span><span style="color: #555;">do-archive-entries</span> <span style="color: #66cc66;">&#40;</span>entry archive <span style="color: #b1b100;">name</span><span style="color: #66cc66;">&#41;</span>
	    <span style="color: #66cc66;">&#40;</span>archive<span style="color: #66cc66;">:</span><span style="color: #555;">extract-entry</span> archive entry<span style="color: #66cc66;">&#41;</span>
	    <span style="color: #66cc66;">&#40;</span>unless <span style="color: #b1b100;">name</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">setf</span> <span style="color: #b1b100;">name</span> <span style="color: #66cc66;">&#40;</span>archive<span style="color: #66cc66;">:</span><span style="color: #b1b100;">name</span> entry<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
    <span style="color: #66cc66;">&#40;</span>string <span style="color: #b1b100;">name</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
&nbsp;
#+win32
<span style="color: #66cc66;">&#40;</span>push 'asdf-install-extractor asdf-install<span style="color: #66cc66;">:</span>*tar-extractors*<span style="color: #66cc66;">&#41;</span></pre></div>
<p>The list of packages in the middle were about half installed manually to get the archive extraction code working and half installed through ASDF-Install.  If I recall correctly, I had to manually install: <b>archive_0.7.0</b>, <b>flexi-streams-1.0.7</b>, <b>gzip-stream_0.2.8</b>, <b>salza2-2.0.7</b>, <b>trivial-gray-streams-2008-11-02</b>, and a fresh copy of <b>asdf-install</b>.  I also had to download a compiled version of <b>freeglut.dll</b> and tuck it into my Windows\system32 directory.</p>
<p>Getting SBCL to use the fresh copy of <b>asdf-install</b> was annoying.  I ended up starting up a Command Prompt as Administrator (right click on the &#8220;command.exe&#8221; icon or menu-item and select &#8220;Run as Administrator&#8221;).  Then, I went to the SBCL directory (&#8220;C:\Program Files\Steel Bank Common Lisp\1.0.29\&#8221;) and did the following:</p>
<div class="codecolorer-container bash blackboard" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><pre class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000000; font-weight: bold;">%</span> rename asdf-install asdf-install.old
<span style="color: #000000; font-weight: bold;">%</span> mklink <span style="color: #000000; font-weight: bold;">/</span>d asdf-install <span style="color: #ff0000;">&quot;C:\Users\Patrick\ASDF-Systems\asdf-install\asdf-install<span style="color: #000099; font-weight: bold;">\&quot;</span></span></pre></div>
<p>I had extracted the tar-ball from the ASDF-Install distribution into my ASDF-Systems directory.</p>
<p>Then, I went back and made my GUI code use double-buffered OpenGL windows because running Lisp to OpenGL to Windows Vista to VMWare to Quartz had some wicked flickering going on.</p>
<p>Two hours is a long time for something that&#8217;s supposed to be <q>easily portable</q>.  But, I would have spent at least 95% of that time even if I were using an all-Lisp solution.  And, this is far less time than I ever spent porting anything else to Windows.</p>
]]></content:encoded>
			<wfw:commentRss>http://nklein.com/2009/11/cross-platform-development/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Emacs + Slime + SBCL on Windows Vista</title>
		<link>http://nklein.com/2009/05/emacs-slime-sbcl-on-windows-vista/</link>
		<comments>http://nklein.com/2009/05/emacs-slime-sbcl-on-windows-vista/#comments</comments>
		<pubDate>Wed, 27 May 2009 22:14:11 +0000</pubDate>
		<dc:creator>pat</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[lisp]]></category>
		<category><![CDATA[vmware]]></category>
		<category><![CDATA[windows]]></category>

		<guid isPermaLink="false">http://nklein.com/?p=448</guid>
		<description><![CDATA[I just finished setting up Windows Vista to run in VMWare Fusion. Then, I finally tackled setting up Emacs with Slime and SBCL under Windows Vista. For the most part, I followed Robert Zubek&#8217;s gameplan. However, I quickly ran into a problem with swank&#8217;s temporary files not being in a writable location. I wish I [...]]]></description>
			<content:encoded><![CDATA[<p>I just finished setting up Windows Vista to run in <a href="http://www.vmware.com/products/fusion">VMWare Fusion</a>.  Then, I finally tackled setting up Emacs with Slime and SBCL under Windows Vista.</p>
<p>For the most part, I followed <a href="http://robert.zubek.net/blog/2008/04/09/sbcl-emacs-windows-vista/">Robert Zubek&#8217;s gameplan</a>.  However, I quickly ran into a problem with swank&#8217;s temporary files not being in a writable location.  I wish I had found <a href="http://groups.google.com/group/comp.lang.lisp/browse_thread/thread/a87d1a4941e23868/887a97453b418c0?q=%22weird+problem+with+sbcl%22">this thread</a> sooner.  Alas, I ended up rolling my own by tweaking the <strong>temp-file-name</strong> function in <em>swank-sbcl.lisp</em>.  The new version looks like this:</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;">defun</span> temp-file-<span style="color: #b1b100;">name</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>
    <span style="color: #ff0000;">&quot;Return a temporary file name to compile strings into.&quot;</span>
  #-win32 <span style="color: #66cc66;">&#40;</span>concatenate 'string <span style="color: #66cc66;">&#40;</span>tmpnam <span style="color: #b1b100;">nil</span><span style="color: #66cc66;">&#41;</span> <span style="color: #ff0000;">&quot;.lisp&quot;</span><span style="color: #66cc66;">&#41;</span>
  #+win32 <span style="color: #66cc66;">&#40;</span>concatenate 'string
                       <span style="color: #66cc66;">&#40;</span>sb-ext<span style="color: #66cc66;">:</span><span style="color: #555;">posix-getenv</span> <span style="color: #ff0000;">&quot;TEMP&quot;</span><span style="color: #66cc66;">&#41;</span>
                       <span style="color: #ff0000;">&quot;/&quot;</span>
                       <span style="color: #66cc66;">&#40;</span>symbol-<span style="color: #b1b100;">name</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">gensym</span> <span style="color: #ff0000;">&quot;SL&quot;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
                       <span style="color: #ff0000;">&quot;.lisp&quot;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span></pre></div>
]]></content:encoded>
			<wfw:commentRss>http://nklein.com/2009/05/emacs-slime-sbcl-on-windows-vista/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

