<?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>DirkGerrits.com</title>
	<atom:link href="http://dirkgerrits.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://dirkgerrits.com</link>
	<description>Thoughts on life and science from a programmer and computational geometer</description>
	<lastBuildDate>Tue, 03 Nov 2009 13:36:10 +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>Xournal on Windows</title>
		<link>http://dirkgerrits.com/2009/10/28/xournal-on-windows/</link>
		<comments>http://dirkgerrits.com/2009/10/28/xournal-on-windows/#comments</comments>
		<pubDate>Wed, 28 Oct 2009 19:00:00 +0000</pubDate>
		<dc:creator>Dirk Gerrits</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://dirkgerrits.com/?p=434</guid>
		<description><![CDATA[
Xournal is a free software note-taking application similar to Microsoft Windows Journal.  It used to be Linux-only, with MacOS and Windows ports on the TODO list.  But as you can see it is now possible to run it on Windows.  Hopefully a nice installer can be created for it, like the ones [...]]]></description>
			<content:encoded><![CDATA[<div class="alignright"><div id="attachment_436" class="wp-caption aligncenter" style="width: 160px"><a href="http://dirkgerrits.com/wp-content/uploads/xournal-on-windows.png"><img src="http://dirkgerrits.com/wp-content/uploads/xournal-on-windows-150x112.png" alt="Screenshot of Xournal running natively on Windows Vista" title="Xournal on Windows" width="150" height="112" class="size-thumbnail wp-image-436" /></a><p class="wp-caption-text">Screenshot of Xournal running natively on Windows Vista</p></div></div>
<p><a href="http://xournal.sourceforge.net/">Xournal</a> is a free software note-taking application similar to Microsoft Windows Journal.  It used to be Linux-only, with MacOS and Windows ports on the TODO list.  But as you can see it is now possible to run it on Windows.  Hopefully a nice installer can be created for it, like the ones for <a href="http://inkscape.org/">Inkscape</a> and <a href="http://gimp.org/">Gimp</a>, but for now the process is rather tricky and involves editing and compiling Xournal&#8217;s source code.  </p>
<p><strong>Update:</strong> Denis Auroux, the author of Xournal, has graciously incorporated my code changes into Xournal and made an official Windows release available on the <a href="http://xournal.sourceforge.net/">Xournal homepage</a>.  Go try it out!</p>
<p>Here&#8217;s what I did:</p>
<h2>Step 1: Setting up the development environment</h2>
<p>We&#8217;ll need to set-up a compiler and install all the libraries that Xournal uses (directly or indirectly) before we can compile its source code.  Here are the software packages I installed with their version numbers (newer versions will probably work, significantly older versions might not), website addresses (I&#8217;d provide direct download links, but they&#8217;ll probably end up as dead links as soon as version numbers change), and where I installed them (of course, you&#8217;ll probably want to use different paths, unless your name is also Dirk):</p>
<p>MinGW + MSys, a minimalist Unix-like environment for Windows, for the C compiler and other build tools.  These can be gotten from <a href="http://sourceforge.net/projects/mingw/files/">MinGW.org</a>:</p>
<ul>
<li>
<p>MinGW 5.1.4 (into <tt>c:/Users/Dirk/Programming/MinGW</tt>)</p>
</li>
<li>
<p>MSys 1.0.11 (into <tt>c:/Users/Dirk/Programming/msys</tt>)</p>
</li>
<li>
<p>perl 5.6.1_2-1 (into <tt>c:/Users/Dirk/Programming/msys/1.0</tt>)</p>
</li>
<li>
<p>libcrypt 1.1_1-2 (into <tt>c:/Users/Dirk/Programming/msys/1.0</tt>)</p>
</li>
<li>
<p>autoconf 2.63-1 (into <tt>c:/Users/Dirk/Programming/msys/1.0</tt>)</p>
</li>
<li>
<p>automake 1.11-1 (into <tt>c:/Users/Dirk/Programming/msys/1.0</tt>)</p>
</li>
</ul>
<p>Some Gtk+ and GNOME libraries that Xournal uses for its GUI.  These can be gotten from <a href="http://www.gtk.org/download-windows.html">Gtk.org</a>:</p>
<ul>
<li>
<p>Gtk+ 2.16.5-20090731 development bundle (into <tt>c:/</tt>&#8230;<tt>/MinGW</tt>)</p>
</li>
<li>
<p>Cairo 1.8.8-2 binary+dev package (into <tt>c:/</tt>&#8230;<tt>/MinGW</tt>, overwriting the one from the bundle because the latter is apparently built without FreeType support)</p>
</li>
<li>
<p>FreeType 2.3.9-1 binary+dev package (into <tt>c:/</tt>&#8230;<tt>/MinGW</tt>)</p>
</li>
<li>
<p>fontconfig 2.7.1-2 binary+dev package (into <tt>c:/</tt>&#8230;<tt>/MinGW</tt>)</p>
</li>
<li>
<p>win_iconv 20080320 binary+dev package (into <tt>c:/</tt>&#8230;<tt>/MinGW</tt>)</p>
</li>
</ul>
<p><a href="http://ftp.gnome.org/pub/gnome/binaries/win32/">GNOME.org</a>:
<ul>
<li>
<p>libgnomecanvas 2.20.1 binary+dev package (into <tt>c:/</tt>&#8230;<tt>/MinGW</tt>)</p>
</li>
<li>
<p>libgnomeprintui 2.12.1 binary+dev package (into <tt>c:/</tt>&#8230;<tt>/MinGW</tt>)</p>
</li>
<li>
<p>libgnomeprint 2.12.1 binary+dev package (into <tt>c:/</tt>&#8230;<tt>/MinGW</tt>)</p>
</li>
<li>
<p>libart_lgpl 2.3.20 binary+dev package (into <tt>c:/</tt>&#8230;<tt>/MinGW</tt>)</p>
</li>
</ul>
<p>and more <a href="http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/">GNOME.org</a>:</p>
<ul>
<li>
<p>libxml 2.7.3 binary+dev package (into <tt>c:/</tt>&#8230;<tt>/MinGW</tt>)</p>
</li>
<li>
<p>expat 2.0.1-1 binary package (into <tt>c:/</tt>&#8230;<tt>/MinGW</tt>)</p>
</li>
</ul>
<p>In the <tt>C:/Users/Dirk/Programming/MinGW/lib/pkgconfig/libgnomeprint-2.2.pc</tt> file we have to make a small change, replacing &#8220;pango&#8221; by &#8220;pangoft2&#8243; on the &#8220;Requires:&#8221; line, so that in now reads:<br />
[code light="true"]Requires: libart-2.0 glib-2.0 gmodule-2.0 gobject-2.0 libxml-2.0 pangoft2[/code]</p>
<h2>Step 2: Building libpoppler from source</h2>
<p>The above gave us all the libraries Xournal needs, except for <a href="http://poppler.freedesktop.org/">Poppler</a>.  I haven&#8217;t seen a pre-compiled binary version for Windows, so we&#8217;ll have to build it ourselves.  We simply download the <a href="http://poppler.freedesktop.org/">Poppler source code</a>, start MSys, <tt>cd</tt> into the directory where we unpacked the source code, and type:</p>
<p>[code lang="bash"]$ export ACLOCAL_FLAGS=-I/c/Users/Dirk/Programming/MinGW/share/aclocal/<br />
$ ./configure --prefix=/c/Users/Dirk/Programming/MinGW/<br />
$ make<br />
$ make install[/code]</p>
<p>(Don&#8217;t type the dollar signs, they just indicate the MSys prompt.)</p>
<h2>Step 3: Removing Xournal&#8217;s screenshot functionality</h2>
<p>Once we&#8217;ve downloaded Xournal&#8217;s source code from the <a href="http://xournal.sourceforge.net/">Xournal website</a>, we can&#8217;t immediately compile it for Windows.  Xournal has one bit of functionality that&#8217;s not implemented with the cross-platform Gtk+ library, but instead is implemented directly using <a href="http://www.x.org/">X</a>.  This will of course not work on different platforms such as Windows.  </p>
<p>The functionality in question is in the menu under &#8220;Journal > Background screenshot&#8221;.  On Linux, it hides the Xournal window, then when you click anywhere it&#8217;ll bring back the Xournal window with an added screenshot of whatever window you clicked on.  There is no way to implement this &#8220;clicking on a window&#8221;-mechanic in the Windows API, so a proper fix would be to change the mechanic to something different, as the Gimp guys have done.  There one <em>drags</em> a crosshair onto a window.</p>
<p>I have not taken the effort to actually implement this different screenshot mechanic, as I don&#8217;t use it and it&#8217;s a lot easier to just remove it:</p>
<ul>
<li>
<p>In <tt>src/xo-misc.c</tt> in the function <tt>hide_unimplemented</tt> at the bottom of the file add the lines</p>
<p>[code lang="c"]#ifdef WIN32<br />
  gtk_widget_hide(GET_COMPONENT(&quot;journalScreenshot&quot;));<br />
#endif[/code]</p>
</li>
<li>
<p>In <tt>src/xo-file.c</tt> at the top of the file, disable the X-specific <tt>#include</tt>s under Windows:</p>
<p>[code lang="c"]#ifndef WIN32<br />
#  include &lt;gdk/gdkx.h&gt;<br />
#  include &lt;x11/Xlib.h&gt;<br />
#endif[/code]</p>
</li>
<li>
<p>In the same file, replace the body of the <tt>attempt_screenshot_bg</tt> function to do nothing on Windows:</p>
<p>[code lang="c"]struct Background *attempt_screenshot_bg(void)<br />
{<br />
#ifndef WIN32<br />
  ... old body here ...<br />
#else /* WIN32 */<br />
  return NULL;<br />
#endif<br />
}[/code]</li>
</ul>
<h2>Step 4: Building Xournal from source</h2>
<p>To build Xournal, we just use MSys as before, and inside the <tt>xournal</tt> directory type the following:<br />
[code lang="bash"]$ export ACLOCAL_FLAGS=-I/c/Users/Dirk/Programming/MinGW/share/aclocal/<br />
$ ./autogen.sh<br />
$ make[/code]</p>
<h2>Step 5: Running Xournal</h2>
<p>To run Xournal we can type<br />
[code lang="bash"]$ src/xournal[/code]<br />
or just double-click <tt>src/xournal.exe</tt> in Windows&#8217;s explorer.  </p>
<p>If all went well, you&#8217;ll see that Xournal &#8220;works&#8221;, but has some bugs.  I&#8217;ll describe below how to fix each of these by editing Xournal&#8217;s source code.  Recompiling (that is, repeating Step 4) will then give you a truly working Xournal.  If you don&#8217;t want to manually apply all my fixes, you can just download <a href="http://dirkgerrits.com/wp-content/uploads/xournal-fixed-source.zip">the resulting source code</a>.</p>
<div class="alignright"><div id="attachment_479" class="wp-caption aligncenter" style="width: 160px"><a href="http://dirkgerrits.com/wp-content/uploads/xournal-bugs.png"><img src="http://dirkgerrits.com/wp-content/uploads/xournal-bugs-150x112.png" alt="Cursor is a black square and loading/saving doesn&#039;t work." title="Xournal bugs" width="150" height="112" class="size-thumbnail wp-image-479" /></a><p class="wp-caption-text">Cursor is a black square and loading/saving doesn't work.</p></div></div>
<h2>Bug 1: The cursor is a big black square</h2>
<p>For the pen and highlighter tools, you&#8217;ll notice that the cursor is always a 16&#215;16 black square, regardless of the selected color.  This is a defect in GDK&#8217;s Windows backend (<a href="http://bugzilla.gnome.org/show_bug.cgi?id=541377">Bug 541377</a>).  The function <tt>gdk_cursor_new_from_pixmap</tt>, which Xournal uses, will only give you monochrome cursors on Windows, and produces strange results when trying to produce a colored cursor.</p>
<p>While this should be fixed on the GDK end, a workaround is to just use different functions from GDK to create colored cursors.  This can be done by putting the following code near the top in <tt>src/xo-paint.c</tt>:<br />
[code lang="c"]#ifdef WIN32<br />
gboolean colors_too_similar(const GdkColor *colora, const GdkColor *colorb)<br />
{<br />
  return (abs(colora-&gt;red - colorb-&gt;red) &lt; 256 &amp;&amp;<br />
          abs(colora-&gt;green - colorb-&gt;green) &lt; 256 &amp;&amp;<br />
          abs(colora-&gt;blue - colorb-&gt;blue) &lt; 256);<br />
}</p>
<p>/* gdk_cursor_new_from_pixmap is broken on Windows.<br />
   this is a workaround using gdk_cursor_new_from_pixbuf. */<br />
GdkCursor* fixed_gdk_cursor_new_from_pixmap(GdkPixmap *source, GdkPixmap *mask,<br />
					    const GdkColor *fg, const GdkColor *bg,<br />
					    gint x, gint y)<br />
{<br />
  GdkPixmap *rgb_pixmap;<br />
  GdkGC *gc;<br />
  GdkPixbuf *rgb_pixbuf, *rgba_pixbuf;<br />
  GdkCursor *cursor;<br />
  int width, height;</p>
<p>  /* HACK!  It seems impossible to work with RGBA pixmaps directly in<br />
     GDK-Win32.  Instead we pick some third color, different from fg<br />
     and bg, and use that as the 'transparent color'.  We do this using<br />
     colors_too_similar (see above) because two colors could be<br />
     unequal in GdkColor's 16-bit/sample, but equal in GdkPixbuf's<br />
     8-bit/sample. */<br />
  GdkColor candidates[3] = {{0,65535,0,0}, {0,0,65535,0}, {0,0,0,65535}};<br />
  GdkColor *trans = &amp;candidates[0];<br />
  if (colors_too_similar(trans, fg) || colors_too_similar(trans, bg)) {<br />
    trans = &amp;candidates[1];<br />
    if (colors_too_similar(trans, fg) || colors_too_similar(trans, bg)) {<br />
      trans = &amp;candidates[2];<br />
    }<br />
  } /* trans is now guaranteed to be unique from fg and bg */</p>
<p>  /* create an empty pixmap to hold the cursor image */<br />
  gdk_drawable_get_size(source, &amp;width, &amp;height);<br />
  rgb_pixmap = gdk_pixmap_new(NULL, width, height, 24);</p>
<p>  /* blit the bitmaps defining the cursor onto a transparent background */<br />
  gc = gdk_gc_new(rgb_pixmap);<br />
  gdk_gc_set_fill(gc, GDK_SOLID);<br />
  gdk_gc_set_rgb_fg_color(gc, trans);<br />
  gdk_draw_rectangle(rgb_pixmap, gc, TRUE, 0, 0, width, height);<br />
  gdk_gc_set_fill(gc, GDK_OPAQUE_STIPPLED);<br />
  gdk_gc_set_stipple(gc, source);<br />
  gdk_gc_set_clip_mask(gc, mask);<br />
  gdk_gc_set_rgb_fg_color(gc, fg);<br />
  gdk_gc_set_rgb_bg_color(gc, bg);<br />
  gdk_draw_rectangle(rgb_pixmap, gc, TRUE, 0, 0, width, height);<br />
  gdk_gc_unref(gc);</p>
<p>  /* create a cursor out of the created pixmap */<br />
  rgb_pixbuf = gdk_pixbuf_get_from_drawable(<br />
    NULL, rgb_pixmap, gdk_colormap_get_system(), 0, 0, 0, 0, width, height);<br />
  gdk_pixmap_unref(rgb_pixmap);<br />
  rgba_pixbuf = gdk_pixbuf_add_alpha(<br />
    rgb_pixbuf, TRUE, trans-&gt;red, trans-&gt;green, trans-&gt;blue);<br />
  gdk_pixbuf_unref(rgb_pixbuf);<br />
  cursor = gdk_cursor_new_from_pixbuf(gdk_display_get_default(), rgba_pixbuf, x, y);<br />
  gdk_pixbuf_unref(rgba_pixbuf);</p>
<p>  return cursor;<br />
}<br />
#define gdk_cursor_new_from_pixmap fixed_gdk_cursor_new_from_pixmap<br />
#endif[/code]</p>
<h2>Bug 2: Loading and saving doesn&#8217;t work</h2>
<p>Using our Windows version of Xournal to try to load a file saved by Xournal on Linux gives an error message.  What&#8217;s more, a file saved with our Windows version of Xournal gives an error message when trying to load it with Xournal on either platform!  </p>
<p>It took me quite a while to figure this out, but the culprit here is that Xournal uses zlib in the wrong way, namely with text-mode I/O instead of binary I/O.  This bug doesn&#8217;t show up on Linux because there text-mode and binary I/O are pretty much the same thing.  On Windows, however, text-mode I/O converts a <tt>'\n'</tt> character into <tt>"\r\n"</tt> on writing, and vice versa on reading.  This is fine for text documents, but not for binary files such as Xournal&#8217;s!  </p>
<p>The fix is simple: replace text I/O modes (<tt>"r"</tt> and <tt>"w"</tt>) by binary I/O modes (<tt>"rb"</tt> and <tt>"wb"</tt>) in all the relevant <tt>gzopen</tt>, <tt>popen</tt>, and <tt>fopen</tt> calls.  That is, all the calls in <tt>src/xo-print.c</tt> and all the calls in <tt>src/xo-file.c</tt> except for [code lang="c"]  f = fopen(ui.mrufile, &quot;w&quot;);[/code] in <tt>save_mru_list</tt>, and [code lang="c"]  f = fopen(ui.configfile, &quot;w&quot;);[/code] in <tt>save_config_to_file</tt>.</p>
<h2>Bug 3: Fullscreen isn&#8217;t truly fullscreen</h2>
<p>When I tried Xournal&#8217;s fullscreen mode, I could still see the Windows taskbar.  This seems to be a bug in the <tt>gtk_window_fullscreen</tt> function on Windows.  Inkscape&#8217;s fullscreen functionality does work properly, however, and that also uses <tt>gtk_window_fullscreen</tt>.  It&#8217;ll take some more detective work to pin this down properly, but in the meantime it is fairly easy to work around.</p>
<ul>
<li>
<p>In <tt>src/xournal.h</tt>, add two new fields to the <tt>UIData</tt> struct: [code lang="c"]  gint pre_fullscreen_width, pre_fullscreen_height;[/code]</p>
</li>
<li>
<p>In <tt>src/xo-callbacks.c</tt>, in the <tt>on_viewFullscreen_activate</tt> function, replace the two lines [code lang="c"]  if (ui.fullscreen) gtk_window_fullscreen(GTK_WINDOW(winMain));<br />
  else gtk_window_unfullscreen(GTK_WINDOW(winMain));[/code] by the lines [code lang="c"]  if (ui.fullscreen) {<br />
    gtk_window_get_size(GTK_WINDOW(winMain), &amp;ui.pre_fullscreen_width,<br />
                                             &amp;ui.pre_fullscreen_height);<br />
    gtk_window_fullscreen(GTK_WINDOW(winMain));<br />
    gtk_widget_set_size_request(GTK_WIDGET(winMain), gdk_screen_width(),<br />
                                                     gdk_screen_height());<br />
  } else {<br />
    gtk_widget_set_size_request(GTK_WIDGET(winMain), -1, -1);<br />
    gtk_window_unfullscreen(GTK_WINDOW(winMain));<br />
    gtk_window_resize(GTK_WINDOW(winMain), ui.pre_fullscreen_width,<br />
                                           ui.pre_fullscreen_height);<br />
  }[/code]</p>
</li>
</ul>
<p>With all of the above fixes, compiling the <a href="http://dirkgerrits.com/wp-content/uploads/xournal-fixed-source.zip">resulting source code</a> gives a working version of Xournal on Windows (minus the screenshot functionality).</p>
]]></content:encoded>
			<wfw:commentRss>http://dirkgerrits.com/2009/10/28/xournal-on-windows/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>If you die in Canada, you die in real life</title>
		<link>http://dirkgerrits.com/2009/05/26/if-you-die-in-canada-you-die-in-real-life/</link>
		<comments>http://dirkgerrits.com/2009/05/26/if-you-die-in-canada-you-die-in-real-life/#comments</comments>
		<pubDate>Tue, 26 May 2009 19:41:27 +0000</pubDate>
		<dc:creator>Dirk Gerrits</dc:creator>
				<category><![CDATA[Real life]]></category>

		<guid isPermaLink="false">http://dirkgerrits.com/?p=389</guid>
		<description><![CDATA[
I love xkcd.  It is definitely my most favorite webcomic ever.  Erik Torstensson was the one to introduce me to it.  Living in Canada, this particular strip surely must have made him chuckle.  Always when a great xkcd strip went online we&#8217;d laugh about it together through instant messaging.  Now [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://xkcd.com/180/"><img alt="xkcd #180 - Canada" src="http://imgs.xkcd.com/comics/canada.png" title="xkcd #180 - Canada" width="740" height="301" /></a></p>
<p>I love <a href="http://xkcd.com/">xkcd</a>.  It is definitely my most favorite webcomic ever.  Erik Torstensson was the one to introduce me to it.  Living in Canada, this particular strip surely must have made him chuckle.  Always when a great xkcd strip went online we&#8217;d laugh about it together through instant messaging.  Now we&#8217;ll never do that anymore&#8230;  Last weekend Erik died in Canada, and while I still don&#8217;t believe it, I&#8217;ll have to learn to accept that this means he died in real life.</p>
<p>Erik has helped me through some really rough times, &#8220;threatening&#8221; even to take the next plane to the Netherlands to straighten me out. <img src='http://dirkgerrits.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />   I might not even be here to write this if it hadn&#8217;t been for him.  And there are many with similar stories.  He&#8217;s touched a lot of lives in profound ways, making each one a little happier.  No matter how much life got himself down, he&#8217;d always be there to cheer up saddened friends.</p>
<p>If there&#8217;s one thing Erik had to teach, it&#8217;s that life is what you make of it.  That if you follow your ambitions, and don&#8217;t give up in the face of adversity, anything is achievable.  What you&#8217;ll come to regret the most is not acting on your ambitions, rather than acting on them and not getting immediate success.  So apply for that job, go on that trip, buy that new gadget, learn something new, do something exciting, visit that old friend.  It&#8217;ll be one less thing to regret.</p>
<p>Personally, my biggest regret in life is never having met Erik in person, even though I&#8217;ve known him for years.  <a href="http://www.wads.org/">This summer</a> I might have been in Canada anyway, so it would have been an excellent opportunity to visit.  But why would I need any other reason to be in Canada than to visit my best friend?  &#8220;There&#8217;s always another day&#8221; is a poor excuse, because there isn&#8217;t always.</p>
<p>Old for his age in wisdom; young for his age in spirit.  Never too old to goof around; always too young to die.  He will be sorely missed.  My best wishes go out to his other friends, his family, and most of all to Jacquie.  I hope you share Erik&#8217;s strength to bounce back from anything life throws at you, even something like this.</p>
<div id="attachment_390" class="wp-caption aligncenter" style="width: 288px"><a href="http://dirkgerrits.com/wp-content/uploads/n739465462_1023622_8130.jpg"><img src="http://dirkgerrits.com/wp-content/uploads/n739465462_1023622_8130-278x300.jpg" alt="Erik Torstensson" title="Erik Torstensson" width="278" height="300" class="size-medium wp-image-390" /></a><p class="wp-caption-text">Erik Torstensson</p></div>
]]></content:encoded>
			<wfw:commentRss>http://dirkgerrits.com/2009/05/26/if-you-die-in-canada-you-die-in-real-life/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>More than 9 for Lisp?</title>
		<link>http://dirkgerrits.com/2005/06/28/more-than-9-for-lisp/</link>
		<comments>http://dirkgerrits.com/2005/06/28/more-than-9-for-lisp/#comments</comments>
		<pubDate>Tue, 28 Jun 2005 15:18:01 +0000</pubDate>
		<dc:creator>Dirk Gerrits</dc:creator>
				<category><![CDATA[Lisp]]></category>

		<guid isPermaLink="false">http://dirkgerrits.com/2005/06/28/more-than-9-for-lisp/</guid>
		<description><![CDATA[I&#8217;ve just read about LispNYC&#8217;s Summer of Lisp. 
The idea is to also mentor students without Google funding, on the projects that didn&#8217;t make the cut.   Also, there seems to be a possibility that funding for one other Lisp project will be made available!
Sign up for the Summer of Lisp mailing list to [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve just read about <a href="http://www.lispnyc.org/">LispNYC</a>&#8217;s <a href="http://www.lispnyc.org/summeroflisp.html">Summer of Lisp</a>. </p>
<p>The idea is to also mentor students without Google funding, on the projects that didn&#8217;t make the cut.   Also, there seems to be a possibility that funding for one other Lisp project will be made available!</p>
<p>Sign up for the <a href="http://www.parenpower.com/cgi-bin/mail.cgi/list/discuss/">Summer of Lisp mailing list</a> to stay informed.</p>
]]></content:encoded>
			<wfw:commentRss>http://dirkgerrits.com/2005/06/28/more-than-9-for-lisp/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>E-on-CL</title>
		<link>http://dirkgerrits.com/2005/06/27/e-on-cl/</link>
		<comments>http://dirkgerrits.com/2005/06/27/e-on-cl/#comments</comments>
		<pubDate>Mon, 27 Jun 2005 18:53:42 +0000</pubDate>
		<dc:creator>Dirk Gerrits</dc:creator>
				<category><![CDATA[Lisp]]></category>

		<guid isPermaLink="false">http://dirkgerrits.com/?p=112</guid>
		<description><![CDATA[I should have started going to #lisp on irc.freenode.net ages ago&#8230;  
Today I talked with Kevin Reid.  Apparently, he&#8217;s been working on implementing another concurrent language on top of Common Lisp: E.  Initially announced in December 2004, E-on-CL is younger than Erlisp, yet already more complete.  To try it out, follow [...]]]></description>
			<content:encoded><![CDATA[<p>I should have started going to #lisp on irc.freenode.net ages ago&#8230;  </p>
<p>Today I talked with <a href="http://homepage.mac.com/kpreid/">Kevin Reid</a>.  Apparently, he&#8217;s been working on implementing another concurrent language on top of Common Lisp: <a href="http://erights.org">E</a>.  Initially <a href="http://www.eros-os.org/pipermail/e-lang/2004-December/010199.html">announced</a> in December 2004, E-on-CL is younger than <a href="http://dirkgerrits.com/programming/erlisp/">Erlisp</a>, yet already more complete.  To try it out, follow <a href="http://www.eros-os.org/pipermail/e-lang/2005-April/010563.html">these instructions</a>.  More info can be found <a href="http://www.google.com/search?q=inurl:e-lang+e-on-cl&#038;hl=en&#038;filter=0">through Google</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://dirkgerrits.com/2005/06/27/e-on-cl/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Erlisp and 8 others funded by Google</title>
		<link>http://dirkgerrits.com/2005/06/26/9-lispnyc-summer-of-code-projects/</link>
		<comments>http://dirkgerrits.com/2005/06/26/9-lispnyc-summer-of-code-projects/#comments</comments>
		<pubDate>Sat, 25 Jun 2005 22:23:09 +0000</pubDate>
		<dc:creator>Dirk Gerrits</dc:creator>
				<category><![CDATA[Lisp]]></category>

		<guid isPermaLink="false">http://dirkgerrits.com/2005/06/26/9-lispnyc-summer-of-code-projects/</guid>
		<description><![CDATA[Google has just announced the final per-organization project breakdown on their Summer of Code.  LispNYC got awarded no less than NINE project fundings!  That&#8217;s more than SVN, NetBSD, Wine, Samba, and Inkscape!  Who said Lisp was dead?  
And guess what?  Erlisp is one of the nine!  I&#8217;m not exactly [...]]]></description>
			<content:encoded><![CDATA[<p>Google has just announced the <a href="http://groups-beta.google.com/group/summer-discuss/msg/62024b5ec92784f7">final per-organization project breakdown</a> on their <a href="http://code.google.com/summerofcode.html">Summer of Code</a>.  <a href="http://www.lispnyc.org">LispNYC</a> got awarded no less than NINE project fundings!  That&#8217;s more than SVN, NetBSD, Wine, Samba, and Inkscape!  Who said Lisp was dead? <img src='http://dirkgerrits.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>And guess what?  <a href="http://dirkgerrits.com/programming/erlisp/">Erlisp</a> is one of <a href="http://www.lispnyc.org/summerofcode.html">the nine</a>!  I&#8217;m not exactly sure how this selection was made, but if it had anything to do with community feedback: thank you all for the support.</p>
<p>The other eight projects are:</p>
<ul>
<li>
<p><a href="http://www.alphageeksinc.com/cgi-bin/lispnyc.cgi?LispSockets">Lisp Sockets</a><br />
This is great!  I have needed to use sockets on several occasions, and had to settle for non-portable solutions with <a href="http://www.sbcl.org/manual/Networking.html#Networking">SB-BSD-SOCKETS</a>.  Better yet, Erlisp will eventually need portable sockets as well.</p>
<p>Now we &#8220;just&#8221; need a library and/or <a href="http://clrfi.alu.org/">CLRFI</a> to be able to serialize <em>any</em> Lisp object, send it to another Lisp implementation running on another computer, and deserialize it&#8230;
</p>
</li>
<li>
<p><a href="http://www.alphageeksinc.com/cgi-bin/lispnyc.cgi?FetterFfi">Fetter &#8211; foreign function interface generator</a><br />
Generating foreign function interfaces automatically is a cool thing in itself, but this project promises to bring not just C but C++ support to the Open Source Lisp masses!  Way cool!  (Might it even get <a href="http://sourceforge.net/projects/wxlisp/">wxCL</a> off the ground?)
</p>
</li>
<li>
<p><a href="http://www.alphageeksinc.com/cgi-bin/lispnyc.cgi?AxiomUI">Axiom User Interface</a><br />
I know of 2 Common Lisp computer algebra systems; <a href="http://maxima.sf.net">Maxima</a> I&#8217;ve used, <a href="http://page.axiom-developer.org/zope/mathaction/FrontPage">Axiom</a> I haven&#8217;t.  There is some cool stuff going on in the Maxima GUI camp, let&#8217;s see what this summer will bring for Axiom.
</p>
</li>
<li>
<p><a href="http://www.alphageeksinc.com/cgi-bin/lispnyc.cgi?GoDb">Gene Ontology Database</a><br />
Not my cup of tea, but a cool example of how Common Lisp is being put to use.
</p>
</li>
<li>
<p><a href="http://www.alphageeksinc.com/cgi-bin/lispnyc.cgi?HelloC">Hello-C, extending UFFI</a><br />
UFFI with callbacks, better documentation, and higher level abstractions&#8230; what more could we ask for?  Also, it&#8217;ll serve as the basis for Fetter (mentioned above).
</p>
<p><em>[EDIT] I don&#8217;t know where I got that, but Fetter is <strong>not</strong> based on Hello-C (it&#8217;s based on UFFI).  I guess that&#8217;s sensible, to make sure these projects can be developed in parallel.</em></p>
</li>
<li>
<p><a href="http://www.alphageeksinc.com/cgi-bin/lispnyc.cgi?PltStepper">Extend PLT Scheme&#8217;s Stepper</a><br />
This would have interested me 2-3 years ago, but I&#8217;m off Scheme now.  Still, nice to see they&#8217;re in on the action too.
</p>
</li>
<li>
<p><a href="http://www.alphageeksinc.com/cgi-bin/lispnyc.cgi?PltDb">Unified low-level database drivers for PLT Scheme</a><br />
Ditto.</p>
</li>
<li>
<p><a href="http://www.alphageeksinc.com/cgi-bin/lispnyc.cgi?SlimeStepper">A Stepper for Slime</a><br />
Last but definately not least: better debugging tools for SLIME.  Any <a href="http://www.common-lisp.net/project/slime">SLIME</a> addition makes me happy, but this one will be especially well-appreciated. <img src='http://dirkgerrits.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://dirkgerrits.com/2005/06/26/9-lispnyc-summer-of-code-projects/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Erlisp on GMANE</title>
		<link>http://dirkgerrits.com/2005/06/22/erlisp-on-gmane/</link>
		<comments>http://dirkgerrits.com/2005/06/22/erlisp-on-gmane/#comments</comments>
		<pubDate>Wed, 22 Jun 2005 16:21:23 +0000</pubDate>
		<dc:creator>Dirk Gerrits</dc:creator>
				<category><![CDATA[Lisp]]></category>

		<guid isPermaLink="false">http://dirkgerrits.com/?p=106</guid>
		<description><![CDATA[Thanks to GMANE, the Erlisp mailing list is now also accessible as the newsgroup gmane.lisp.erlisp.devel on news.gmane.org.  The newsgroup is a bi-directional interface to the mailing list, so e-mails sent to either one will show up on both.  Newsgroup lovers rejoice!    
]]></description>
			<content:encoded><![CDATA[<p>Thanks to <a href="http://www.gmane.org/">GMANE</a>, the Erlisp mailing list is now also accessible as the newsgroup <a href="nntp://news.gmane.org/gmane.lisp.erlisp.devel"><tt>gmane.lisp.erlisp.devel</tt></a> on <tt>news.gmane.org</tt>.  The newsgroup is a bi-directional interface to the mailing list, so e-mails sent to either one will show up on both.  Newsgroup lovers rejoice!  <img src='http://dirkgerrits.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  </p>
]]></content:encoded>
			<wfw:commentRss>http://dirkgerrits.com/2005/06/22/erlisp-on-gmane/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>To those who&#8217;d like to try Erlisp 0.0001</title>
		<link>http://dirkgerrits.com/2005/06/21/to-those-whod-like-to-try-erlisp-00001/</link>
		<comments>http://dirkgerrits.com/2005/06/21/to-those-whod-like-to-try-erlisp-00001/#comments</comments>
		<pubDate>Tue, 21 Jun 2005 10:10:50 +0000</pubDate>
		<dc:creator>Dirk Gerrits</dc:creator>
				<category><![CDATA[Lisp]]></category>

		<guid isPermaLink="false">http://dirkgerrits.com/?p=105</guid>
		<description><![CDATA[Erlisp currently doesn&#8217;t come with documentation yet, so here are some pointers to get started.


From Erlisp&#8217;s download page you should get erlisp-snapshot.tar.gz.  This file contains the source code in the Erlisp repository, and is updated whenever that repository is updated.  Extract its contents somewhere. (Alternatively, you can check out the source code directly [...]]]></description>
			<content:encoded><![CDATA[<p>Erlisp currently doesn&#8217;t come with documentation yet, so here are some pointers to get started.</p>
<ol>
<li>
<p>From Erlisp&#8217;s <a href="http://dirkgerrits.com/programming/erlisp/download/">download page</a> you should get <a href="http://www.dirkgerrits.com/darcs/erlisp/erlisp-snapshot.tar.gz">erlisp-snapshot.tar.gz</a>.  This file contains the source code in the Erlisp repository, and is updated whenever that repository is updated.  Extract its contents somewhere. (Alternatively, you can check out the source code directly from the repository, as described <a href="http://dirkgerrits.com/programming/erlisp/download/">here</a>.)</p>
<p>In your new <tt>erlisp</tt> directory, there should be the following:</p>
<ul>
<li>
<p><tt>LICENSE</tt><br />
               Contains Erlisp&#8217;s license (BSD).</p>
</li>
<li>
<p><tt>erlisp.asd</tt><br />
               <a href="http://www.cliki.net/asdf">ASDF</a> system definition for Erlisp.</p>
</li>
<li>
<p><tt>doc/external/</tt>, <tt>doc/internal/</tt><br />
               Currently empty.  Should hold external (user) documentation and internal (developer) documentation at some point.</p>
</li>
<li>
<p><tt>src/</tt><br />
               Contains all actual source code.  This directory will probably be subdivided into further subdirectories (and corresponding ASDF modules) when Erlisp grows.</p>
</li>
<li>
<p><tt>test/</tt><br />
                This contains all automated <a href="http://common-lisp.net/project/bese/FiveAM.html">FiveAM</a> (unit) tests. At the moment, this is the closest thing to documentation there is. </p>
</li>
</ul>
</li>
<li>
<p>To conveniently use Erlisp, you&#8217;ll need <a href="http://www.cliki.net/asdf">ASDF</a>.  Create a symlink to <tt>erlisp.asd</tt> from one of the directories in <tt>ASDF:*CENTRAL-REGISTRY*</tt>, or add the <tt>erlisp</tt> directory to that list.</p>
</li>
<li>
<p>Start <a href="http://www.sbcl.org/">SBCL</a>, and load Erlisp using <tt>(asdf:oos 'asdf:load-op :erlisp)</tt>.</p>
<p>If you&#8217;d like to run the automated tests, you&#8217;ll need to have <a href="http://common-lisp.net/project/bese/FiveAM.html">FiveAM</a>. Then you can use <tt>(asdf:oos 'asdf:test-op :erlisp)</tt>.
</p>
</li>
<li>
<p>To see what you can do now that you have Erlisp loaded, have a look at the automated tests.  Be careful though.  Both the internal and external API are tested, so this doesn&#8217;t really show &#8220;what you&#8217;re supposed to be using&#8221;.  I guess I should be making this distinction clear by exporting symbols from the <tt>ERLISP</tt> package, but I haven&#8217;t gotten around to that yet.</p>
<p>So at the moment do <tt>(in-package :erlisp) </tt> and, as a rule of thumb, stay away from anything that isn&#8217;t <tt>SPAWN</tt>, <tt>CURRENT-PROCESS</tt>, <tt>SEND</tt>, <tt>RECEIVE</tt>, <tt>RECEIVE-WITH-MATCHER</tt>, or <tt>SET-DEFAULT-PATTERN-MATCHER</tt>.</p>
</li>
</ol>
<p>If any non-<a href="http://www.sbcl.org">SBCL</a> users among you tried the above, you would have gotten a message like &#8220;Threads are currently only implemented for SBCL&#8221;.  </p>
<p>The file <tt>src/compatibility.lisp</tt> makes sure that the rest of the code doesn&#8217;t have to depend on implementation specific features, but it is only implemented for SBCL at the moment.  If you know the threads API of your Lisp, feel free to send me a patch.  The <a href="http://dirkgerrits.com/programming/erlisp/download/">download page</a> describes how to check out the repository, make your changes, and send them to me in a patch.  It&#8217;ll be much appreciated!</p>
]]></content:encoded>
			<wfw:commentRss>http://dirkgerrits.com/2005/06/21/to-those-whod-like-to-try-erlisp-00001/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>8 months of Erlisp</title>
		<link>http://dirkgerrits.com/2005/06/20/8-months-of-erlisp/</link>
		<comments>http://dirkgerrits.com/2005/06/20/8-months-of-erlisp/#comments</comments>
		<pubDate>Mon, 20 Jun 2005 18:20:41 +0000</pubDate>
		<dc:creator>Dirk Gerrits</dc:creator>
				<category><![CDATA[Lisp]]></category>

		<guid isPermaLink="false">http://dirkgerrits.com/2005/06/16/8-months-of-erlisp/</guid>
		<description><![CDATA[It&#8217;s been over 8 months since I announced Erlisp to the Lisp community, and I&#8217;m sure that I&#8217;m not the only one who had hoped that Erlisp would have come farther in all this time.  However, many of you may not be aware of the things that have happened, hence this summary.
I&#8217;ve implemented (for [...]]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s been over 8 months since I announced <a href="http://dirkgerrits.com/programming/erlisp/">Erlisp</a> to the Lisp community, and I&#8217;m sure that I&#8217;m not the only one who had hoped that Erlisp would have come farther in all this time.  However, many of you may not be aware of the things that <em>have</em> happened, hence this summary.</p>
<p>I&#8217;ve implemented (for <a href="http://www.sbcl.org">SBCL</a>):</p>
<ul>
<li>
<p>Processes as threads.</p>
</li>
<li>
<p>Local message sending and receiving.</p>
</li>
<li>
<p>API to plug in your own pattern matcher.</p>
</li>
</ul>
<p>Apart from actually writing code, I&#8217;ve been taking steps to get development back on track:</p>
<ul>
<li>
<p>I&#8217;ve switched from <a href="http://www.gnu.org/software/gnu-arch/">GNU Arch</a> to <a href="http://www.darcs.net">darcs</a> for version control.  Darcs is much easier to use, and in my opinion also conceptually nicer.  (For example there is no difference between a working copy and a repository.)  It&#8217;s the first version control system I <em>like</em> to use.</p>
</li>
<li>
<p>To get more community interaction, I&#8217;ve started this blog, and there is now an Erlisp <a href="http://dirkgerrits.com/programming/erlisp/discussion/">mailing list</a>.  Thanks to Mario Mommer of <a href="http://www.common-lisp.net">Common-Lisp.net</a> for setting it up for me.</p>
</li>
<li>
<p>I&#8217;ve written a little <a href="http://dirkgerrits.com/darcs/erlisp/upload-erlisp">Bash script</a> that:<br />
         Synchronizes the main Erlisp repository with my local one.<br />
         Uploads a new Erlisp snapshot tarball.<br />
         Sends an e-mail to the mailing list about the new patches in the repository.
  </p>
</li>
</ul>
<p>Other noteworthy events are:</p>
<ul>
<li>
<p>I&#8217;ve been contacted by Heow Eide-Goodman of <a href="http://www.lispnyc.org">Lisp NYC</a> about Google&#8217;s <a href="http://code.google.com/summerofcode.html">Summer of Code</a>.  Apparently, Lisp NYC is a participating mentoring organization and they list working on Erlisp as one of their <a href="http://www.lispnyc.org/summerofcode.html">project ideas</a>.</p>
<p>I&#8217;m very flattered by all this, but I&#8217;m not sure whether I can mentor a student to work on Erlisp.  I&#8217;m only figuring this stuff out as I go, so I&#8217;m by no means an expert, and I&#8217;m not exactly drowning in spare time either (not even during the coming summer vacation).</p>
</li>
<li>
<p>As part of the website revamping I&#8217;ve made a (very primitive) search  mechanism for the Erlisp <a href="http://dirkgerrits.com/programming/erlisp/references/">reference section</a>.  There has also been a slow but steady stream of reference additions over the months.</p>
</li>
<li>
<p>This blog has been added to <a href="http://planet.lisp.org/">Planet Lisp</a>.</p>
</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://dirkgerrits.com/2005/06/20/8-months-of-erlisp/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
