<?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>floating point &#187; SVK</title>
	<atom:link href="http://point.davidglasser.net/category/svk/feed/" rel="self" type="application/rss+xml" />
	<link>http://point.davidglasser.net</link>
	<description>david glasser's log</description>
	<lastBuildDate>Tue, 08 Apr 2008 19:30:48 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>monads, menus, and mercurial</title>
		<link>http://point.davidglasser.net/2007/06/04/monads-menus-and-mercurial/</link>
		<comments>http://point.davidglasser.net/2007/06/04/monads-menus-and-mercurial/#comments</comments>
		<pubDate>Mon, 04 Jun 2007 12:23:46 +0000</pubDate>
		<dc:creator>David Glasser</dc:creator>
				<category><![CDATA[SVK]]></category>
		<category><![CDATA[Subversion]]></category>

		<guid isPermaLink="false">http://point.davidglasser.net/2007/06/04/monads-menus-and-mercurial/</guid>
		<description><![CDATA[Recently I switched from the tiling window manager ion3 to a new window manager: xmonad. xmonad is written in Haskell, has a tiny and malleable code base (500 lines), and is easy to extend (if you know Haskell!). One of the reasons that xmonad is so small is that it leaves some window manager features [...]]]></description>
			<content:encoded><![CDATA[<p>Recently I switched from the tiling window manager <a href="http://modeemi.fi/~tuomov/ion/"><code>ion3</code></a> to a new window manager: <code><a href="http://xmonad.org/">xmonad</a></code>.  <code>xmonad</code> is written in Haskell, has a tiny and malleable code base (500 lines), and is easy to extend (if you know Haskell!).</p>
<p>One of the reasons that <code>xmonad</code> is so small is that it leaves some window manager features to external programs.  For example, it doesn&#8217;t have any sort of menu.  Most <code>xmonad</code> users use <a href="http://www.suckless.org/wiki/tools/xlib/"><code>dmenu</code></a> to provide a program launcher.  (I also use it to run internal <code>xmonad</code> commands with my <code>XMonadContrib.Commands</code> module.)</p>
<p><code>dmenu</code> is originally by Anselm R. Garbe, author of the window managers <code>dwm</code> and <code>wmii</code>.  He follows strict anti-bloat principles and endeavors to keep his programs free of extraneous features.  This is a respectable goal.  On the other hand, there are several patches that multiple users have found useful that are not included in <code>dmenu</code>: Xinerama support, a history feature, and so on.</p>
<p><code>dmenu</code> is maintained in the <a href="http://www.selenic.com/mercurial/">Mercurial</a> distributed version control system.  This makes it trivial for me to maintain my own version of <code>dmenu</code>, synced with upstream changes, that includes these extra features.  It&#8217;s even easy for me to share this with the world. (I&#8217;d like to think of this as an &#8220;extra features edition&#8221; rather than as a &#8220;fork&#8221;.)</p>
<p>You can check out my version with Mercurial:</p>
<p><code>hg clone http://www.davidglasser.net/hg/dmenu/</code></p>
<p>or just grab a <a href="http://www.davidglasser.net/hg/dmenu/?archive/tip.tar.gz">tarball of the latest version</a>.</p>
<p>On a related note, I&#8217;ve been very happy with Mercurial.  Its user interface is very nice, the underlying principles are sound, and <a href="http://hgbook.red-bean.com/">the work-in-progress book</a> by Bryan O&#8217;Sullivan is well-written and helpful.  <code>xmonad</code> uses the distributed version control system <a href="http://darcs.net/"><code>darcs</code></a>, and I tried to do similar tasks (keeping my local config in my personal repository while syncing with upstream) in <code>darcs</code>.  While <code>darcs</code> has many interesting ideas, I ran into the serious performance problems almost immediately; and because <code>darcs</code> doesn&#8217;t really have any idea of a &#8220;changeset identifier&#8221; other than the log message, it&#8217;s pretty hard to use the command line to find out about various patches.  Mercurial, on the other hand, was a breeze.  There are certainly things I prefer about <a href="http://subversion.tigris.org/">Subversion</a> (documented internals with a stable API being the most obvious), but I should definitely experiment more with Mercurial (if for no other reason than to learn lessons that can be applied to Subversion and svk).</p>
]]></content:encoded>
			<wfw:commentRss>http://point.davidglasser.net/2007/06/04/monads-menus-and-mercurial/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Subversion Developer&#8217;s Summit: Day 1!</title>
		<link>http://point.davidglasser.net/2006/10/16/subversion-developers-summit-day-1/</link>
		<comments>http://point.davidglasser.net/2006/10/16/subversion-developers-summit-day-1/#comments</comments>
		<pubDate>Mon, 16 Oct 2006 17:10:43 +0000</pubDate>
		<dc:creator>David Glasser</dc:creator>
				<category><![CDATA[SVK]]></category>
		<category><![CDATA[Subversion]]></category>

		<guid isPermaLink="false">http://point.davidglasser.net/2006/10/16/subversion-developers-summit-day-1/</guid>
		<description><![CDATA[Here I am at the Subversion Developer&#8217;s Summit at Google in Mountain View. Looks like clkao and I are giving a talk on SVK today or tomorrow. Subversion prides it on being a respectful community &#8212; Ben Collins-Sussman mentioned in his opening spiel that it was one of the big factors in Subversion&#8217;s success. I&#8217;m [...]]]></description>
			<content:encoded><![CDATA[<p>Here I am at the Subversion Developer&#8217;s Summit at Google in Mountain View.  Looks like clkao and I are giving a <a href="http://svn.clkao.org/svnweb/svk/checkout/trunk/doc/talks/svnsummit.2006.xul">talk on SVK</a> today or tomorrow.</p>
<p>Subversion prides it on being a respectful community &#8212; <a href="http://www.red-bean.com/sussman/">Ben Collins-Sussman</a> mentioned in his opening spiel that it was one of the big factors in Subversion&#8217;s success.  I&#8217;m happy to report that these are not lies, and that these are pretty great folks.</p>
<p>Yesterday, we dropped by Google to hack for a while.  My first plan was to work on my <a href="http://courses.csail.mit.edu/6.854/06/">Advanced Algorithms</a> homework.  That plan quickly changed to hacking on <a href="http://code.google.com/p/zvm/">ZVM</a>, a Python Z-Machine implementation.  Turned out there were at least two of us not already on board with ZVM who had implemented Z-Machines before!</p>
<p>We got distracted away from that pretty quickly by noticing that there were a whole lot of changes nominated in <a href="http://svn.collab.net/repos/svn/branches/1.4.x/STATUS">the Subversion 1.4.1 STATUS file</a> that really needed to be reviewed and backported in order to get the release out.  So we took a couple hours and got the 1.4.x branch to an almost release-worthy state.  Maybe tonight!</p>
<p>In a long discussion about distributed version control last night at <a href="http://www.red-bean.com/kfogel/">Karl Fogel&#8217;s</a>, most folks realized that none of us had really spent serious time working with a distributed version control system.  (Well, other than <a href="http://svk.bestpractical.com/">SVK</a>, which honestly already has most of the features we were talking about&#8230;)  To get more experience, we&#8217;re going to play around with <a href="http://www.selenic.com/mercurial/">Mercurial</a> during the Summit.</p>
<p>There&#8217;s going to be a <a href="http://svn-dev.blogspot.com/">shared developer&#8217;s blog</a> for reporting on the summit, if interested.</p>
]]></content:encoded>
			<wfw:commentRss>http://point.davidglasser.net/2006/10/16/subversion-developers-summit-day-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Announcing Hiveminder</title>
		<link>http://point.davidglasser.net/2006/08/07/announcing-hiveminder/</link>
		<comments>http://point.davidglasser.net/2006/08/07/announcing-hiveminder/#comments</comments>
		<pubDate>Tue, 08 Aug 2006 03:42:06 +0000</pubDate>
		<dc:creator>David Glasser</dc:creator>
				<category><![CDATA[Best Practical]]></category>
		<category><![CDATA[Hiveminder]]></category>
		<category><![CDATA[Jifty]]></category>
		<category><![CDATA[MIT]]></category>
		<category><![CDATA[PAG]]></category>
		<category><![CDATA[Perl]]></category>
		<category><![CDATA[SVK]]></category>

		<guid isPermaLink="false">http://point.davidglasser.net/2006/08/07/announcing-hiveminder/</guid>
		<description><![CDATA[While my main work recently has been doing research towards my MEng in the Program Analysis Group at MIT&#8217;s CSAIL, I&#8217;ve been paying attention to the &#8220;secret project&#8221; from my internship at Best Practical last summer. Most of what I did there was way out in the open, in the public repositories of the request [...]]]></description>
			<content:encoded><![CDATA[<p>While my main work recently has been doing research towards my MEng in the <a href="http://pag.csail.mit.edu/">Program Analysis Group</a> at MIT&#8217;s CSAIL, I&#8217;ve been paying attention to the &#8220;secret project&#8221; from my internship at <a href="http://www.bestpractical.com/">Best Practical</a> last summer.  Most of what I did there was way out in the open, in the public repositories of the request tracker RT, the object-relational database mapper Jifty::DBI, the web framework Jifty, and the distributed version control system SVK (which wasn&#8217;t actually part of Best Practical at the time).  But we&#8217;ve been keeping this project under wraps and in &#8220;private beta&#8221; until this weekend, when we released&#8230;</p>
<p><a href="http://www.hiveminder.com/">Hiveminder</a>!  Hiveminder is a collaborative task organizer. Sure, there are many other to-do trackers out there.  Hiveminder&#8217;s biggest strengths are in its intuitive and simple way of letting you set up &#8220;&#8230; but first&#8221; and &#8220;&#8230; and then&#8221; style relationship between tasks and its support for sharing tasks between people, one-on-one and in groups.</p>
<p>Today, when I look at my main &#8220;to-do&#8221; page, I see the next steps I need to to for my research, the SVK bugs and features I&#8217;d like to work on, a reminder to renew the hosting for this website (with a due date of&#8230; today&#8230; ooh, should deal with that right now&#8230; done), all in one spot.</p>
<p>Technology-wise, the Jifty framework we wrote has some very nice advantages.  (Disclaimer, or bragging, or something: Jifty was designed mostly by Jesse Vincent (&#8220;the boss&#8221;), but I did most of the implementation of its first draft. Of course, since then I think every line I wrote has been replaced.)  For example, all code that actually changes anything in the database goes through specific &#8220;action&#8221; objects; while we haven&#8217;t finalized a public API for Hiveminder, this means that eventually <em>everything</em> you can do through the site will be achievable via an API, without any special custom coding.</p>
<p>Another nice technical feature in Jifty is the concept of individually-addressable &#8220;page regions&#8221; inside web pages, which can be updated via AJAX in a single click. This feature is nothing new for AJAXy webpages&#8230; until you try Hiveminder again without Javascript and find out that e<strong>verything still works</strong>.  Sure, there are a few extra page reloads, and some fancy UI features like drop-down menus can&#8217;t be used, but other than that the site works exactly like it does with Javascript&#8230; and without Hiveminder&#8217;s code having to have any special cases at all.  Hell, I just added a comment to a task about an SVK bug using lynx&#8230; <strong>just because I can</strong>.</p>
<p>Of course, I&#8217;m being distracted from work now, so I&#8217;ll click on the &#8220;pag&#8221; tag to show only my research-related tasks and get back to editing this paper&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://point.davidglasser.net/2006/08/07/announcing-hiveminder/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Using OmniGraffle with Subversion without Sadness</title>
		<link>http://point.davidglasser.net/2006/07/30/using-omnigraffle-with-subversion-without-sadness/</link>
		<comments>http://point.davidglasser.net/2006/07/30/using-omnigraffle-with-subversion-without-sadness/#comments</comments>
		<pubDate>Sun, 30 Jul 2006 16:44:34 +0000</pubDate>
		<dc:creator>David Glasser</dc:creator>
				<category><![CDATA[SVK]]></category>
		<category><![CDATA[Subversion]]></category>

		<guid isPermaLink="false">http://point.davidglasser.net/2006/07/30/using-omnigraffle-with-subversion-without-sadness/</guid>
		<description><![CDATA[OmniGraffle is an awesome charting and drawing tool. Subversion is a great version control system. Unfortunately, by default, they don&#8217;t work perfectly together. That&#8217;s because OmniGraffle has (at least) two formats for its files: a flat XML file, and a &#8220;bundle&#8221;, which is actually a special folder containing a bunch of files. By default, OmniGraffle [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.omnigroup.com/applications/omnigraffle/">OmniGraffle</a> is an awesome charting and drawing tool. <a href="http://subversion.tigris.org/">Subversion</a> is a great version control system.  Unfortunately, by default, they don&#8217;t work perfectly<br />
together.</p>
<p>That&#8217;s because OmniGraffle has (at least) two formats for its files: a flat XML file, and a &#8220;bundle&#8221;, which is actually a special folder containing a bunch of files.  By default, OmniGraffle makes flat files, but if you add an image to your document it will magically turn into a bundle and store the image in the filesystem.</p>
<p>If you&#8217;re using this with Subversion or SVK, this is a problem for at least three reasons. First of all, most version control systems don&#8217;t deal too well with files suddenly turning into directories behind their backs.  Secondly, if you add more images, OmniGraffle will add them to the directory, but Subversion will have no idea that these new files should be under version control, and you&#8217;ll have to manually <code>svn add</code> them.</p>
<p>More annoyingly, the bundle format used by OmniGraffle puts a file in the bundle which sets the bundle&#8217;s icon, and the file is named <code>Icon\r</code>.  With a carriage return in it. Yeah.  I&#8217;m not sure what they or Apple were thinking (as far as I can tell this is one of many ways to set a document bundle icon and I can&#8217;t find other apps that use this one), but putting control characters like a carriage return in file names just sucks. And to tie back into the point of this post, Subversion just won&#8217;t let you check in that file.</p>
<p>There&#8217;s a solution, though, at least for OmniGraffle!  Just type the following line in your terminal:</p>
<pre><code>defaults write com.omnigroup.OmniGraffle PrivateGraffleFlatFile 0</code></pre>
<p>(Or if you run OmniGraffle Pro, you apparently should do</p>
<pre><code>defaults write com.omnigroup.OmniGrafflePro PrivateGraffleFlatFile 0</code></pre>
<p>though I haven&#8217;t tested this.)</p>
<p>This will make OmniGraffle make all future files as the flat-file format and never sneakily turn into bundle format.   Hooray!</p>
]]></content:encoded>
			<wfw:commentRss>http://point.davidglasser.net/2006/07/30/using-omnigraffle-with-subversion-without-sadness/feed/</wfw:commentRss>
		<slash:comments>18</slash:comments>
		</item>
	</channel>
</rss>
