<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="wordpress/2.1" -->
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	>

<channel>
	<title>Korny's blog</title>
	<link>http://blog.sietsma.com</link>
	<description>The personal blog of Korny Sietsma</description>
	<pubDate>Mon, 13 Oct 2008 11:21:28 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.1</generator>
	<language>en</language>
			<item>
		<title>Ruby DSLs - so easy</title>
		<link>http://blog.sietsma.com/2008/10/13/ruby-dsls-so-easy/</link>
		<comments>http://blog.sietsma.com/2008/10/13/ruby-dsls-so-easy/#comments</comments>
		<pubDate>Mon, 13 Oct 2008 11:15:44 +0000</pubDate>
		<dc:creator>Korny</dc:creator>
		
		<category><![CDATA[geek]]></category>

		<guid isPermaLink="false">http://blog.sietsma.com/2008/10/13/ruby-dsls-so-easy/</guid>
		<description><![CDATA[The joy of Ruby - writing simple DSLs is so very easy.  (That&#8217;s &#8220;Domain Specific Language&#8221; for the uninitiated - go look it up, it&#8217;s good for you)
I have some code that builds a tree of info from the file system - basically traversing directories and files and loading up definitions in memory.
I wrote some [...]]]></description>
			<content:encoded><![CDATA[<p>The joy of Ruby - writing simple DSLs is so very easy.  (That&#8217;s &#8220;Domain Specific Language&#8221; for the uninitiated - go look it up, it&#8217;s good for you)<br />
I have some code that builds a tree of info from the file system - basically traversing directories and files and loading up definitions in memory.</p>
<p>I wrote some tests initially based on using real file fixtures, and while they worked, they seemed very ugly and confusing - they were basically integration tests not unit tests, and to know why a test failed, you had to go digging around in the filesystem.  Yuck.</p>
<p>Instead I wrote a DSL that lets me specify directories and files like:</p>
<p>@builder = StubDirBuilder.construct(&#8221;root&#8221;) do<br />
dir &#8216;one&#8217; do<br />
file &#8216;loremipsum.txt&#8217;, &#8220;123&#8243;<br />
end<br />
dir &#8216;two&#8217; do<br />
file &#8216;loremipsum.txt&#8217;, &#8220;123&#8243;<br />
file &#8216;egosum.txt&#8217;, &#8220;456&#8243;<br />
end<br />
dir &#8217;single_child&#8217; do<br />
dir &#8217;single_grandchild&#8217; do<br />
file &#8216;loremipsum.txt&#8217;, &#8220;123&#8243;<br />
end<br />
end<br />
dir &#8217;something_unreadable&#8217; do<br />
unreadable<br />
end<br />
end</p>
<p>This basically sets up the structures in memory to fake the corresponding directories and files when my tests run.</p>
<p>The code is a bit messy to post here (especially as this stupid blog sucks at formatting code) but the basic structure is:</p>
<p>class StubDirBuilder<br />
def self.construct(root_name,&amp;block)<br />
builder = new(root_name)<br />
builder.instance_eval(&amp;block)<br />
builder<br />
end<br />
def initialize(root_name)<br />
&#8230; do stuff to set up the data structures<br />
@cwd = root_name<br />
end<br />
def dir(name)<br />
parent = @cwd<br />
begin<br />
@cwd = File.join(@cwd,name)<br />
&#8230; process the directory info into memory<br />
yield self if block_given?<br />
ensure<br />
@cwd = parent<br />
end<br />
end<br />
def file(name, contents = &#8220;&#8221;)<br />
fullname = File.join(@cwd,name)<br />
&#8230; process file<br />
end<br />
end</p>
<p>Basically the call to &#8220;instance_eval&#8221; is ruby magic that evaluates the whole &#8220;dir/file&#8221; structure in the context of the newly built StubDirBuilder object.  So each time &#8220;dir(name) do&#8230;&#8221; is found, it calls the &#8220;dir&#8221; method on the StubDirBuilder; ditto for &#8220;file&#8221; and &#8220;unreadable&#8221;.  I just keep track of the current directory in &#8220;cwd&#8221; and store the data as needed.</p>
<p>(Credit for this is due to several different articles - mostly http://blog.8thlight.com/articles/2007/05/20/ruby-dls-blocks and http://www.artima.com/rubycs/articles/ruby_as_dsl.html )</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.sietsma.com/2008/10/13/ruby-dsls-so-easy/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Curved corner images in rmagick</title>
		<link>http://blog.sietsma.com/2008/07/20/curved-corner-images-in-rmagick/</link>
		<comments>http://blog.sietsma.com/2008/07/20/curved-corner-images-in-rmagick/#comments</comments>
		<pubDate>Sun, 20 Jul 2008 02:05:08 +0000</pubDate>
		<dc:creator>Korny</dc:creator>
		
		<category><![CDATA[geek]]></category>

		<guid isPermaLink="false">http://blog.sietsma.com/2008/07/20/curved-corner-images-in-rmagick/</guid>
		<description><![CDATA[RMagick is a great ruby library for image manipulation - it&#8217;s basically a wrapper around the venerable ImageMagick libraries.  There are some complexities around installing it on some platforms, and you have to be careful with garbage collection, but it&#8217;s still very easy to use and very powerful.
The curved corner images I used in previous [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://rmagick.rubyforge.org/" target="_blank">RMagick</a> is a great ruby library for image manipulation - it&#8217;s basically a wrapper around the venerable ImageMagick libraries.  There are some complexities around installing it on some platforms, and you have to be careful with garbage collection, but it&#8217;s still very easy to use and very powerful.</p>
<p>The curved corner images I used in previous blog posts could be built in photoshop or gimp or other gui applications, but I wanted something scriptable, so I&#8217;m trying to build all images in RMagick - and it&#8217;s really not that difficult.</p>
<p>RMagick has a whole set of vector graphics functions, but I&#8217;m mainly using one, the <a href="http://studio.imagemagick.org/RMagick/doc/draw.html#roundrectangle" target="_blank">roundrectangle</a> function - it&#8217;s pretty simple:<br />
<code><br />
image = Magick::Image.new(width+bordsize, height+bordsize) { self.background_color = 'transparent'}<br />
gc = Magick::Draw.new<br />
gc.stroke(bordercolour)<br />
gc.stroke_linecap('round')<br />
gc.stroke_width(bordsize)<br />
gc.fill(innercolour)<br />
gc.roundrectangle(bordsize/2,bordsize/2, width,height, radius, radius)<br />
gc.draw(image)<br />
</code><br />
This basically draws a round rectangle, with a solid border, at offset (bordsize/2,bordsize/2) - you need the offset as otherwise the border edge will overlap the edge of the image.<br />
Adding a shadow is pretty simple, rmagick has the <a href="http://studio.imagemagick.org/RMagick/doc/image3.html#shadow" target="_blank">shadow</a> method:<br />
<code><br />
shadow = image.shadow()<br />
image = shadow.composite(image,Magick::NorthWestGravity, Magick::OverCompositeOp)<br />
</code><br />
- this basically works, but sadly you get issues when you save the image.  The shadow() method creates a shadow of a given image, with a specified shadow radius, which results in a larger image than the original - so the code above gives you an image which has shadow pixels at negative x and y coordinates!  Some file formats cope with this just fine - png files seem to do ok - but I wanted gif images for ie6 fallback, and gif doesn&#8217;t cope at all.</p>
<p>Anyway, to cut a long post short, the final code (see below) has a fair bit of logic for allocating extra space in the image for the shadow.  An example of the basic image-with-border-and-shadow image:</p>
<p><img src="http://www.sietsma.com/korny/corner_test/simple_shadow.png" title="simple shadow sample" alt="simple shadow sample" height="123" width="123" /></p>
<p>One last tweak I did - I wanted to have a shadow on the borders - the dark border is nice for some effects, but I wanted a slightly more 3d look:<br />
<img src="http://www.sietsma.com/korny/corner_test/dark_border.png" title="sample with dark border" alt="sample with dark border" height="123" width="123" /><br />
And a more subtle effect with the raised border the same colour as the diagram:<br />
<img src="http://www.sietsma.com/korny/corner_test/shad_border.png" title="sample with light border" alt="sample with light border" height="123" width="123" /></p>
<p>I also added some logic to set transparency of the image, for pretty backgrounds like the example from my last blog post (sample page <a href="http://www.sietsma.com/korny/corner_test/test2.html">here</a>) - and to automatically save a gif version for ie6 display.</p>
<p>The full code can be seen at <a href="http://www.sietsma.com/korny/corner_test/corners_code.html" target="_blank">http://www.sietsma.com/korny/corner_test/corners_code.html </a></p>
<p>Obviously there&#8217;s lots of other things you can do - but this is a useful start!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.sietsma.com/2008/07/20/curved-corner-images-in-rmagick/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Sigh - ie6 defeats my cunningness</title>
		<link>http://blog.sietsma.com/2008/07/06/sigh-ie6-defeats-my-cunningness/</link>
		<comments>http://blog.sietsma.com/2008/07/06/sigh-ie6-defeats-my-cunningness/#comments</comments>
		<pubDate>Sat, 05 Jul 2008 23:47:28 +0000</pubDate>
		<dc:creator>Korny</dc:creator>
		
		<category><![CDATA[life]]></category>

		<guid isPermaLink="false">http://blog.sietsma.com/2008/07/06/sigh-ie6-defeats-my-cunningness/</guid>
		<description><![CDATA[Well, my previous post and linked page seems to work nicely.  (I did fix a minor glitch in ie7)
However, since then I&#8217;ve done some more reading - and my conclusion is, don&#8217;t do what I did - ie6 png transparency is just too risky.  Have a read of the discussion at http://blogs.cozi.com/tech/2008/03/transparent-png.html?cid=106552420 - [...]]]></description>
			<content:encoded><![CDATA[<p>Well, my previous post and linked page seems to work nicely.  (I did fix a minor glitch in ie7)</p>
<p>However, since then I&#8217;ve done some more reading - and my conclusion is, don&#8217;t do what I did - ie6 png transparency is just too risky.  Have a read of the discussion at <a href="http://blogs.cozi.com/tech/2008/03/transparent-png.html?cid=106552420" target="_blank">http://blogs.cozi.com/tech/2008/03/transparent-png.html?cid=106552420</a> - they found that when used heavily, the AlphaImageLoader filter causes ie6 to deadlock.  Ow.  If it&#8217;s critical, you can work around this, but it sounds really really painful.</p>
<p>So I&#8217;ve reverted to using something that is basically Scott Schiller&#8217;s technique - see  <a href="http://www.sietsma.com/korny/corner_test/test2.html" target="_blank">http://www.sietsma.com/korny<wbr></wbr>/corner_test/test2.html</a> - but on ie6, you get no translucency.</p>
<p>The good news is, I can now use a single image, instead of slicing the image up.  And I&#8217;ve fiddled my rmagick rounded-corner generation code, it&#8217;s now getting pretty nice - I&#8217;ll post it when it&#8217;s done.  Not as nice as what you can do if you&#8217;re a photoshop/gimp guru, but it&#8217;s nice to have something generated by code, so I can change colours/sizes at will.</p>
<p>The next step is probably to make this stuff javascriptable, so I can use a single div for a minimal styling version, and then prettify it in javascript&#8230; possibly.  I&#8217;m still a bit unsure if using javascript makes the code more &#8217;semantic&#8217; or not.</p>
<p>[ed: sigh - I thought I&#8217;d posted this weeks ago.  Somehow, it got saved as a draft&#8230;]</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.sietsma.com/2008/07/06/sigh-ie6-defeats-my-cunningness/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Curved Corners with transparent png background on IE6</title>
		<link>http://blog.sietsma.com/2008/06/11/curved-corners-with-transparent-png-background-on-ie6/</link>
		<comments>http://blog.sietsma.com/2008/06/11/curved-corners-with-transparent-png-background-on-ie6/#comments</comments>
		<pubDate>Wed, 11 Jun 2008 11:10:13 +0000</pubDate>
		<dc:creator>Korny</dc:creator>
		
		<category><![CDATA[work]]></category>

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

		<guid isPermaLink="false">http://blog.sietsma.com/2008/06/11/curved-corners-with-transparent-png-background-on-ie6/</guid>
		<description><![CDATA[I&#8217;ve been playing in the wonderful world of css - partly for work, and partly for fun.
I wanted to have fluid sized, png-based, rounded-corner dialogs for a web site.  This is something that has been solved many times, but not (as far as I can see) for internet explorer 6 - which still has [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been playing in the wonderful world of css - partly for work, and partly for fun.</p>
<p>I wanted to have fluid sized, png-based, rounded-corner dialogs for a web site.  This is something that has been solved many times, but not (as far as I can see) for internet explorer 6 - which still has a big share of the browser market.</p>
<p>The best solution I&#8217;ve found for other browsers is the one by Scott Schiller at Schillmania - <a href="http://www.schillmania.com/content/projects/even-more-rounded-corners/">http://www.schillmania.com/content/projects/even-more-rounded-corners/</a> - which uses a single image, with cunning sprite tricks to get it into position.  But on ie6, it has to revert to gif images.</p>
<p>The problem is, you <strong>can</strong> use pngs on ie6 - most simply, by using the iepngfix.htc behaviour trick (see <a href="http://www.twinhelix.com/css/iepngfix/">http://www.twinhelix.com/css/iepngfix/</a>) - but it has one big problem - you can&#8217;t align the png images to the right or bottom, so most of the usual tricks used to display corners don&#8217;t work.</p>
<p>So, I&#8217;ve been hacking around with ways to do corners where all the images are top-left aligned.  I have a solution, I&#8217;m not sure it&#8217;s perfect, but it works - see the demo page at <a href="http://www.sietsma.com/korny/corner_test/test.html">http://www.sietsma.com/korny/corner_test/test.html</a>.  This works in ie6, ie7, Firefox 2 and 3, and Safari.</p>
<p>Some caveats:</p>
<p>- it uses the iepngfix.htc behaviour - I experimented with using the Microsoft AlphaImageLoader stuff directly, but iepngfix does some tricks that I can&#8217;t reproduce easily, so for now I&#8217;m using the code directly.</p>
<p>- it&#8217;s a long way from semantic markup; there are a number of divs in there just to make it look right.  I can&#8217;t see a way around this - I could make some javascript to turn a semantically-nice html page into the mess shown, which might be a good idea - but the end result would be the same (and doing it in javascript can make for ugly corner loading, and hassles re-running the javascript if you populate stuff via ajax).  Anyone with hints on how to make this more web-standards-friendly, please tell!  I&#8217;m still pretty new to the world of front-end stuff.</p>
<p>- there&#8217;s a bit of fiddling to make links work properly - the ie png stuff causes screwups if you use relative or absolute positioning on a div with a background image, and then add links to it.  So I had to mess around a bit to work around this - and I probably need to mess around more to make it cleaner.</p>
<p>- there are some ie-specific bits in there, added via conditional comments; at least one of them was pure trial-and-error to get things lining up right!</p>
<p>- there is probably more work needed to make padding and things consistent across browsers.</p>
<p>I&#8217;ll try to blog more later about the details, and about how I generated the images&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.sietsma.com/2008/06/11/curved-corners-with-transparent-png-background-on-ie6/feed/</wfw:commentRss>
		</item>
		<item>
		<title>updates</title>
		<link>http://blog.sietsma.com/2008/06/07/updates/</link>
		<comments>http://blog.sietsma.com/2008/06/07/updates/#comments</comments>
		<pubDate>Fri, 06 Jun 2008 21:39:51 +0000</pubDate>
		<dc:creator>Korny</dc:creator>
		
		<category><![CDATA[life]]></category>

		<guid isPermaLink="false">http://blog.sietsma.com/2008/06/07/updates/</guid>
		<description><![CDATA[I&#8217;m still getting spam in the moderation queue. Poot. I&#8217;ve gone through and disabled more stuff, I&#8217;ll see if I can work this out somehow.
Things seem to have been somewhat down lately.  We&#8217;ve had two funerals in the past month, one for Yolande&#8217;s grandmother, a fabuous gal who is sorely missed; and one for [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m still getting spam in the moderation queue. Poot. I&#8217;ve gone through and disabled more stuff, I&#8217;ll see if I can work this out somehow.</p>
<p>Things seem to have been somewhat down lately.  We&#8217;ve had two funerals in the past month, one for Yolande&#8217;s grandmother, a fabuous gal who is sorely missed; and one for Sophie and Aaron&#8217;s daughter Jordan, also a very sad story.  Phew.  I don&#8217;t know if it&#8217;s just random, or if it&#8217;s the age we have gotten to, but there have been a lot of funerals in the last few years&#8230;</p>
<p>On the work front, I&#8217;m on a nifty Sensis R&amp;D project - more details when it goes public.  But the lack of a front-end coder on the project has forced me to cram my CSS and Javascript considerably - I&#8217;ll have to have a go at styling this blog!</p>
<p>Comments are back on, at least from here on, hopefully I can get spam blocked somehow, but it seems pointless to block friends but not spammers.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.sietsma.com/2008/06/07/updates/feed/</wfw:commentRss>
		</item>
		<item>
		<title>no comment</title>
		<link>http://blog.sietsma.com/2008/03/31/no-comment/</link>
		<comments>http://blog.sietsma.com/2008/03/31/no-comment/#comments</comments>
		<pubDate>Mon, 31 Mar 2008 01:18:55 +0000</pubDate>
		<dc:creator>Korny</dc:creator>
		
		<category><![CDATA[life]]></category>

		<guid isPermaLink="false">http://blog.sietsma.com/2008/03/31/no-comment/</guid>
		<description><![CDATA[Disabling comments for now (not that I get many!) - despite making comments moderation-only, I still get a vast number of failed spam attempts.  Maybe if I turn off comments I&#8217;ll drop off their lists.  And maybe I&#8217;ll get a pet unicorn for Christmas!
]]></description>
			<content:encoded><![CDATA[<p>Disabling comments for now (not that I get many!) - despite making comments moderation-only, I still get a vast number of failed spam attempts.  Maybe if I turn off comments I&#8217;ll drop off their lists.  And maybe I&#8217;ll get a pet unicorn for Christmas!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.sietsma.com/2008/03/31/no-comment/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Faking DNS with Ruby and Sinatra</title>
		<link>http://blog.sietsma.com/2008/03/07/faking-dns-with-ruby-and-sinatra/</link>
		<comments>http://blog.sietsma.com/2008/03/07/faking-dns-with-ruby-and-sinatra/#comments</comments>
		<pubDate>Fri, 07 Mar 2008 05:37:40 +0000</pubDate>
		<dc:creator>Korny</dc:creator>
		
		<category><![CDATA[geek]]></category>

		<guid isPermaLink="false">http://blog.sietsma.com/2008/03/07/faking-dns-with-ruby-and-sinatra/</guid>
		<description><![CDATA[I had an annoying problem, so I needed a hacky solution&#8230;
At work, we have a large number of boxes with dynamic IP addresses.  Getting a static IP address is a complete pain, and keeping boxes running is bad for the planet.
IP addresses don&#8217;t *usually* change, but the do change often enough to be annoying [...]]]></description>
			<content:encoded><![CDATA[<p>I had an annoying problem, so I needed a hacky solution&#8230;</p>
<p>At work, we have a large number of boxes with dynamic IP addresses.  Getting a static IP address is a complete pain, and keeping boxes running is bad for the planet.</p>
<p>IP addresses don&#8217;t *usually* change, but the do change often enough to be annoying - especially when you want to run a VMWare server to do something background-ish, and find that it&#8217;s IP address has changed and you have to open the console just to find the new address.  Bleah.</p>
<p>I&#8217;m sure a DNS/DHCP trick could be done somewhere, somehow - probably setting up a special DNS server somewhere locally could be done.  But I needed something quickly, so some ruby hackery was the solution&#8230;</p>
<p>Basically I set up a tiny web server running <a href="http://sinatra.rubyforge.org/">Sinatra</a>, a really really simple web framework.  It just listens to http posts containing mac addresses, host names, and IP addresses, and stores them (in a YAML text file on disk - this isn&#8217;t meant to be scalable!).  It also serves up a general status page, plus a simple <code>/etc/hosts</code> file snippet containing all known hosts.</p>
<p>I then have a really tiny ruby script that I run on each other box, which posts that box&#8217;s IP address to the server whenever it changes.  (Currently this means on Ubuntu boxes, it runs from <code>/etc/network/if-up.d/</code>, on RedHat it runs from a script called <code>/sbin/ifup-local</code>)</p>
<p>At any stage, a user can load the file served by the sinatra server at <code>http://the_server:4567/hosts</code> - this gives a snippet of text that can be pasted into an <code>/etc/hosts</code> file (or the Windows equivalent).  I might automate this step eventually, but for now it&#8217;s a manual process; it&#8217;s usually pretty clear when your hosts file is wrong, and not that hard to update it.</p>
<p>The code is real simple.  First, the script to post data from each machine - this basically runs &#8216;ipconfig&#8217; and extracts useful fields, it would need fiddling to work on Windows or anywhere that had a different ipconfig command (or didn&#8217;t use &#8216;eth0&#8242;):<br />
(note - file saved as text attachment to get around this blog&#8217;s limitations):<br />
<a href="http://blog.sietsma.com/wp-content/uploads/405/2008/03/postiprb.txt" title="postip.rb">postip.rb</a></p>
<p>Next, the server.  Sinatra does most of the work for me - but it&#8217;s documentation is kind of thin, so some bits took some fiddling.  Still, it really doesn&#8217;t get much easier than this:<br />
<a href="http://blog.sietsma.com/wp-content/uploads/405/2008/03/fakednsrb.txt" title="fakedns.rb">fakedns.rb</a></p>
<p>And that&#8217;s it!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.sietsma.com/2008/03/07/faking-dns-with-ruby-and-sinatra/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Getting things done again</title>
		<link>http://blog.sietsma.com/2008/02/15/getting-things-done-again/</link>
		<comments>http://blog.sietsma.com/2008/02/15/getting-things-done-again/#comments</comments>
		<pubDate>Fri, 15 Feb 2008 07:48:53 +0000</pubDate>
		<dc:creator>Korny</dc:creator>
		
		<category><![CDATA[life]]></category>

		<guid isPermaLink="false">http://blog.sietsma.com/2008/02/15/getting-things-done-again/</guid>
		<description><![CDATA[While I&#8217;m blogging&#8230;
I&#8217;ve started using a Getting Things Done TiddlyWiki - there seem to be a few of these around, I&#8217;m using the d-cubed tiddlywiki from http://www.dcubed.ca/ - it&#8217;s quite neat, and I seem to be managing to keep it up to date.  I&#8217;ve set up a second standard TiddlyWiki for &#8220;general stuff&#8221; - [...]]]></description>
			<content:encoded><![CDATA[<p>While I&#8217;m blogging&#8230;</p>
<p>I&#8217;ve started using a Getting Things Done <a href="http://www.tiddlywiki.com/">TiddlyWiki</a> - there seem to be a few of these around, I&#8217;m using the d-cubed tiddlywiki from <a href="http://www.dcubed.ca/">http://www.dcubed.ca/</a> - it&#8217;s quite neat, and I seem to be managing to keep it up to date.  I&#8217;ve set up a second standard TiddlyWiki for &#8220;general stuff&#8221; - things that aren&#8217;t tasks so much as reference info.</p>
<p>This is helped by the fact that I&#8217;ve set up a https based Subversion repository at home, which I&#8217;m now using to store all my vital configs, scripts, etc. - and being http based, I can check in/out files from work as well as home; I can even mount it as a WebDAV disk from OSX, Linux and (to a lesser degree) Windows.  Though this seems to generate a pile of checkins, so I don&#8217;t do it often - manually checking in and out will do me just fine.</p>
<p>And it&#8217;s very nice to be able to share and access all the little handy scripts, to-do lists, and the like.  Especially to-do lists; I haven&#8217;t managed before this to find a way to carry around *electronic* to-do lists that I could access from anywhere, and keep backed up.  I was doing OK with index cards a-la HipsterPDA, but they aren&#8217;t so good when I want to put in URLs, or back them up!  Still, they are my fallback solution for sorting out tasks in meetings or on the train&#8230;  My N95 will actually render the TiddlyWiki, which is pretty impressive, but it&#8217;s not really usable, and there isn&#8217;t a subversion client for the N95 anyway!</p>
<p>Now I just have to work out how to integrate this with Google Mail, Google Calendar, <a href="http://www.rememberthemilk.com/">Remember the Milk</a>, my Delicious tags, and all the other places I&#8217;ve strewn todo-lists and starred items and the like.  <img src='http://blog.sietsma.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.sietsma.com/2008/02/15/getting-things-done-again/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Twitter, Twibble, GPS and Maps!</title>
		<link>http://blog.sietsma.com/2008/02/15/twitter-twibble-gps-and-maps/</link>
		<comments>http://blog.sietsma.com/2008/02/15/twitter-twibble-gps-and-maps/#comments</comments>
		<pubDate>Fri, 15 Feb 2008 07:29:02 +0000</pubDate>
		<dc:creator>Korny</dc:creator>
		
		<category><![CDATA[geek]]></category>

		<guid isPermaLink="false">http://blog.sietsma.com/2008/02/15/twitter-twibble-gps-and-maps/</guid>
		<description><![CDATA[I&#8217;ve been getting hooked on twitter - you can find me at http://twitter.com/kornys .  Ephemeral micro-blogging!  Beware, most of what I write is entirely trivial - but that&#8217;s half the fun.
Worse than that, I&#8217;ve found &#8216;twibble&#8217; (http://www.das-zentralorgan.de/twibble/) , a java phone app that lets me sent tweets on the fly, and tags them [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been getting hooked on twitter - you can find me at <a href="http://twitter.com/kornys">http://twitter.com/kornys</a> .  Ephemeral micro-blogging!  Beware, most of what I write is entirely trivial - but that&#8217;s half the fun.</p>
<p>Worse than that, I&#8217;ve found &#8216;twibble&#8217; (<a href="http://www.das-zentralorgan.de/twibble/">http://www.das-zentralorgan.de/twibble/</a>) , a java phone app that lets me sent tweets on the fly, and <strong>tags them with my GPS location!</strong><br />
So you can go to <a href="http://twittermap.com/maps">http://twittermap.com/maps</a>, enter &#8220;kornys&#8221; and see where I&#8217;ve been.  Unless I have a sudden rash of privacy concerns - but at the moment, this stuff is kind-of fun.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.sietsma.com/2008/02/15/twitter-twibble-gps-and-maps/feed/</wfw:commentRss>
		</item>
		<item>
		<title>comments, trackbacks, eggs and spam</title>
		<link>http://blog.sietsma.com/2008/02/11/comments-trackbacks-eggs-and-spam/</link>
		<comments>http://blog.sietsma.com/2008/02/11/comments-trackbacks-eggs-and-spam/#comments</comments>
		<pubDate>Sun, 10 Feb 2008 22:29:47 +0000</pubDate>
		<dc:creator>Korny</dc:creator>
		
		<category><![CDATA[life]]></category>

		<guid isPermaLink="false">http://blog.sietsma.com/2008/02/11/comments-trackbacks-eggs-and-spam/</guid>
		<description><![CDATA[I foolishly left the default wordpress setting to &#8220;send me an e-mail but allow comments&#8221;.  So now I&#8217;m on some spam source - I&#8217;ve made comments &#8220;moderate only&#8221; but I have to log in regularly and kill a pile of spam in the &#8220;to-moderate&#8221; folder.  Maybe it&#8217;ll force me to blog more!
]]></description>
			<content:encoded><![CDATA[<p>I foolishly left the default wordpress setting to &#8220;send me an e-mail but allow comments&#8221;.  So now I&#8217;m on some spam source - I&#8217;ve made comments &#8220;moderate only&#8221; but I have to log in regularly and kill a pile of spam in the &#8220;to-moderate&#8221; folder.  Maybe it&#8217;ll force me to blog more!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.sietsma.com/2008/02/11/comments-trackbacks-eggs-and-spam/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
