<?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>dot.Using &#187; development</title>
	<atom:link href="http://blog.kesor.net/category/development/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.kesor.net</link>
	<description>Making technology about computers, and computers about usability.</description>
	<lastBuildDate>Mon, 29 Jun 2009 22:46:18 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.5</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Testing messy bash scripts</title>
		<link>http://blog.kesor.net/2007/12/22/22/</link>
		<comments>http://blog.kesor.net/2007/12/22/22/#comments</comments>
		<pubDate>Sat, 22 Dec 2007 00:01:20 +0000</pubDate>
		<dc:creator>kesor</dc:creator>
				<category><![CDATA[bash]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[ideas]]></category>
		<category><![CDATA[refactoring]]></category>

		<guid isPermaLink="false">http://blog.kesor.net/2007/12/22/22/</guid>
		<description><![CDATA[
Read this book too!
I am reading the book “Refactoring” by Martin Fowler, and just reek with ideas about improving software, as well as solving problems I head-banged during my “software” development career.
On my last job, there was this huge messy heap of bash scripts that were “The Installation” of their main software product. It was [...]]]></description>
			<content:encoded><![CDATA[<div style="text-align:justify">
<div style="float:right;margin-left:2em">Read this book too!<br/><iframe src="http://rcm.amazon.com/e/cm?t=kesornet-20&#038;o=1&#038;p=8&#038;l=as1&#038;asins=0201485672&#038;fc1=000000&#038;IS2=1&#038;lt1=_blank&#038;lc1=0000FF&#038;bc1=000000&#038;bg1=FFFFFF&#038;f=ifr&#038;npa=1" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe></div>
<p>I am reading the book “Refactoring” by Martin Fowler, and just reek with ideas about improving software, as well as solving problems I head-banged during my “software” development career.</p>
<p>On my last job, there was this huge messy heap of bash scripts that were “The Installation” of their main software product. It was a remarkable amount of bad smelling bash code, however it somehow managed to work. My work, at the time, was from-scratch-rewrites of this or that functionality and then somehow plugging it into the existing framework (damn, i call it a framework now).</p>
<p><span id="more-22"></span></p>
<p>It could have been just amazing if I could take the existing <u><a href="http://steve-yegge.blogspot.com/2007/12/codes-worst-enemy.html"><strike>pile of dirt</strike></a></u> <strike>dung</strike> bash scripts &#8211; and refactor it into something that is readable, sort of.</p>
<p>Today, while I was riding the bus, reading “Refactoring” pg.110, it struck me. It’s actually can be extremely easy to <b>test bash scripts!</b> All it takes is a collection of all the familiar commands, like “cat”, “rm”, etc … and one sneaky PATH environment variable. These commands would be fakes, stubs &#8211; they all just print their name and parameters into a log file. In fact, there is just one actual script and the rest are links to that single one.</p>
<p>That log file can be compared before and after a refactoring. It takes less time to output names and parameters to a file than to execute the actual commands. So while running the actual script might take hours, with the stubs it should run in less time, much less. Finally, by comparing your pre and post refactoring log files, you get a really nice test-suite that can help you refactor. I might even call it replacing unreadable code with readable one without breaking much of anything.</p>
<p>In the particular case of the scripts that I’ve mentioned earlier, I guess that the most used refactoring to improve readability would be <i>Inline Method</i>. Whoever wrote the original scripts was very fond of <i>wrappers</i> for commands like &#8220;ln&#8221;. Even though commands like “ln” don’t really need a wrapper. The wrapper with at least two echo commands and a very long name is quite redundant and adds unnecessary complexity.</p>
<p>There are several problems with this simplistic approach though. One of the problems might be that the script is using full path in names (like /bin/ln), instead of relying on the PATH environment variable. Such things can be relatively easily taken care of until the testing solution is perfect. (I guess). One of the things to try, for example, is running bash in restricted mode, if I remember what that is correctly.</p>
<p>I’ll try that on some new messy scripts that I got on my new job!</p>
<p>YEY!
</p></div>
<p>PS: Google docs rocks! (even publish-to-blog kinda works) </p>

<div class="sociable">

<ul>
	<li class="sociablefirst"><a rel="nofollow"  href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fblog.kesor.net%2F2007%2F12%2F22%2F22%2F&amp;title=Testing%20messy%20bash%20scripts&amp;bodytext=%0D%0ARead%20this%20book%20too%21%0D%0AI%20am%20reading%20the%20book%20%E2%80%9CRefactoring%E2%80%9D%20by%20Martin%20Fowler%2C%20and%20just%20reek%20with%20ideas%20about%20improving%20software%2C%20as%20well%20as%20solving%20problems%20I%20head-banged%20during%20my%20%E2%80%9Csoftware%E2%80%9D%20development%20career.%0D%0AOn%20my%20last%20job%2C%20there%20was%20this" title="Digg"><img src="http://blog.kesor.net/wp-content/plugins/sociable/images/digg.png" title="Digg" alt="Digg" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://delicious.com/post?url=http%3A%2F%2Fblog.kesor.net%2F2007%2F12%2F22%2F22%2F&amp;title=Testing%20messy%20bash%20scripts&amp;notes=%0D%0ARead%20this%20book%20too%21%0D%0AI%20am%20reading%20the%20book%20%E2%80%9CRefactoring%E2%80%9D%20by%20Martin%20Fowler%2C%20and%20just%20reek%20with%20ideas%20about%20improving%20software%2C%20as%20well%20as%20solving%20problems%20I%20head-banged%20during%20my%20%E2%80%9Csoftware%E2%80%9D%20development%20career.%0D%0AOn%20my%20last%20job%2C%20there%20was%20this" title="del.icio.us"><img src="http://blog.kesor.net/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://reddit.com/submit?url=http%3A%2F%2Fblog.kesor.net%2F2007%2F12%2F22%2F22%2F&amp;title=Testing%20messy%20bash%20scripts" title="Reddit"><img src="http://blog.kesor.net/wp-content/plugins/sociable/images/reddit.png" title="Reddit" alt="Reddit" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://technorati.com/faves?add=http%3A%2F%2Fblog.kesor.net%2F2007%2F12%2F22%2F22%2F" title="Technorati"><img src="http://blog.kesor.net/wp-content/plugins/sociable/images/technorati.png" title="Technorati" alt="Technorati" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="mailto:?subject=Testing%20messy%20bash%20scripts&amp;body=http%3A%2F%2Fblog.kesor.net%2F2007%2F12%2F22%2F22%2F" title="email"><img src="http://blog.kesor.net/wp-content/plugins/sociable/images/email_link.png" title="email" alt="email" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://www.facebook.com/share.php?u=http%3A%2F%2Fblog.kesor.net%2F2007%2F12%2F22%2F22%2F&amp;t=Testing%20messy%20bash%20scripts" title="Facebook"><img src="http://blog.kesor.net/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Fblog.kesor.net%2F2007%2F12%2F22%2F22%2F&amp;title=Testing%20messy%20bash%20scripts&amp;annotation=%0D%0ARead%20this%20book%20too%21%0D%0AI%20am%20reading%20the%20book%20%E2%80%9CRefactoring%E2%80%9D%20by%20Martin%20Fowler%2C%20and%20just%20reek%20with%20ideas%20about%20improving%20software%2C%20as%20well%20as%20solving%20problems%20I%20head-banged%20during%20my%20%E2%80%9Csoftware%E2%80%9D%20development%20career.%0D%0AOn%20my%20last%20job%2C%20there%20was%20this" title="Google Bookmarks"><img src="http://blog.kesor.net/wp-content/plugins/sociable/images/googlebookmark.png" title="Google Bookmarks" alt="Google Bookmarks" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="" title="Pownce"><img src="http://blog.kesor.net/wp-content/plugins/sociable/images/" title="Pownce" alt="Pownce" class="sociable-hovers" /></a></li>
	<li class="sociablelast"><a rel="nofollow"  href="" title="TwitThis"><img src="http://blog.kesor.net/wp-content/plugins/sociable/images/" title="TwitThis" alt="TwitThis" class="sociable-hovers" /></a></li>
</ul>
</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.kesor.net/2007/12/22/22/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>HAML Caching CGI</title>
		<link>http://blog.kesor.net/2007/07/30/haml-caching-cgi/</link>
		<comments>http://blog.kesor.net/2007/07/30/haml-caching-cgi/#comments</comments>
		<pubDate>Mon, 30 Jul 2007 08:38:23 +0000</pubDate>
		<dc:creator>kesor</dc:creator>
				<category><![CDATA[apache]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[haml]]></category>
		<category><![CDATA[ideas]]></category>
		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://blog.kesor.net/2007/07/30/haml-caching-cgi/</guid>
		<description><![CDATA[Mike Zillion asked about how to make HAML a processor (of haml files) for Apache on the HAML Group on Google. That inspired me to write a proper wrapper with caching that will Hamlize templates into HTML and cache those for speedy access on subsequent requests.
This is what I came up with:


#!/bin/env ruby

exit if ARGV[0].nil?
exit [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.mikezillion.com">Mike Zillion</a> asked about how to make HAML a processor (of haml files) for Apache on the <a href="http://groups.google.com/group/haml/t/b2fd4dbc5f76cd61">HAML Group</a> on Google. That inspired me to write a proper wrapper with caching that will Hamlize templates into HTML and cache those for speedy access on subsequent requests.</p>
<p>This is what I came up with:<br />
<span id="more-9"></span></p>
<pre lang="ruby">
#!/bin/env ruby

exit if ARGV[0].nil?
exit unless File.exists?(ARGV[0])

CACHE_DIR_NAME='cache'

haml_file = ARGV[0]
haml_time = File.stat(haml_file).mtime

html_file = CACHE_DIR_NAME + '/' + haml_file.sub(/aml$/,'tml')
if File.exists?(html_file)
  html_time = File.stat(html_file).mtime

  if html_time > haml_time
    output = File.read(html_file)
  end
end

if output.nil?
  require 'rubygems'
  require 'haml'
  template = File.read(haml_file)
  haml_engine = Haml::Engine.new(template)
  output = haml_engine.to_html()

  # cache the output
  Dir.mkdir(CACHE_DIR_NAME) unless File.directory?(CACHE_DIR_NAME)
  html_file_io = File.open(html_file,"w")
  html_file_io.print(output)
  File.utime(Time.now, haml_time, html_file)
end

# unbuffer output
$stdout.sync = true

require 'cgi'
ENV['SERVER_SOFTWARE'] ||= 'not set'
cgi = CGI.new('html3')
print cgi.header(
        'type'     => 'text/html',
        'charset'  => 'UTF-8',
        'length'   => output.length,
        'server'   => ENV['SERVER_SOFTWARE'],
        'expires'  => Time.now + 10*3600*24, # 10 days
        'Pragma'   => 'no-cache',
        'Last-Modified' => haml_time,
        'Cache-Control' => 'no-cache'
)
print output
</pre>
<p>And as Mike suggested, adding a couple lines to your Apache configuration makes all the difference:</p>
<pre line="1">
  AddType text/haml .haml
  AddHandler haml-file .haml
  Action haml-file /dev/bin/haml_cache_cgi.rb
  Action text/haml /dev/bin/haml_cache_cgi.rb
</pre>
<p></p>

<div class="sociable">

<ul>
	<li class="sociablefirst"><a rel="nofollow"  href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fblog.kesor.net%2F2007%2F07%2F30%2Fhaml-caching-cgi%2F&amp;title=HAML%20Caching%20CGI&amp;bodytext=Mike%20Zillion%20asked%20about%20how%20to%20make%20HAML%20a%20processor%20%28of%20haml%20files%29%20for%20Apache%20on%20the%20HAML%20Group%20on%20Google.%20That%20inspired%20me%20to%20write%20a%20proper%20wrapper%20with%20caching%20that%20will%20Hamlize%20templates%20into%20HTML%20and%20cache%20those%20for%20speedy%20access%20on%20subsequen" title="Digg"><img src="http://blog.kesor.net/wp-content/plugins/sociable/images/digg.png" title="Digg" alt="Digg" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://delicious.com/post?url=http%3A%2F%2Fblog.kesor.net%2F2007%2F07%2F30%2Fhaml-caching-cgi%2F&amp;title=HAML%20Caching%20CGI&amp;notes=Mike%20Zillion%20asked%20about%20how%20to%20make%20HAML%20a%20processor%20%28of%20haml%20files%29%20for%20Apache%20on%20the%20HAML%20Group%20on%20Google.%20That%20inspired%20me%20to%20write%20a%20proper%20wrapper%20with%20caching%20that%20will%20Hamlize%20templates%20into%20HTML%20and%20cache%20those%20for%20speedy%20access%20on%20subsequen" title="del.icio.us"><img src="http://blog.kesor.net/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://reddit.com/submit?url=http%3A%2F%2Fblog.kesor.net%2F2007%2F07%2F30%2Fhaml-caching-cgi%2F&amp;title=HAML%20Caching%20CGI" title="Reddit"><img src="http://blog.kesor.net/wp-content/plugins/sociable/images/reddit.png" title="Reddit" alt="Reddit" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://technorati.com/faves?add=http%3A%2F%2Fblog.kesor.net%2F2007%2F07%2F30%2Fhaml-caching-cgi%2F" title="Technorati"><img src="http://blog.kesor.net/wp-content/plugins/sociable/images/technorati.png" title="Technorati" alt="Technorati" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="mailto:?subject=HAML%20Caching%20CGI&amp;body=http%3A%2F%2Fblog.kesor.net%2F2007%2F07%2F30%2Fhaml-caching-cgi%2F" title="email"><img src="http://blog.kesor.net/wp-content/plugins/sociable/images/email_link.png" title="email" alt="email" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://www.facebook.com/share.php?u=http%3A%2F%2Fblog.kesor.net%2F2007%2F07%2F30%2Fhaml-caching-cgi%2F&amp;t=HAML%20Caching%20CGI" title="Facebook"><img src="http://blog.kesor.net/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Fblog.kesor.net%2F2007%2F07%2F30%2Fhaml-caching-cgi%2F&amp;title=HAML%20Caching%20CGI&amp;annotation=Mike%20Zillion%20asked%20about%20how%20to%20make%20HAML%20a%20processor%20%28of%20haml%20files%29%20for%20Apache%20on%20the%20HAML%20Group%20on%20Google.%20That%20inspired%20me%20to%20write%20a%20proper%20wrapper%20with%20caching%20that%20will%20Hamlize%20templates%20into%20HTML%20and%20cache%20those%20for%20speedy%20access%20on%20subsequen" title="Google Bookmarks"><img src="http://blog.kesor.net/wp-content/plugins/sociable/images/googlebookmark.png" title="Google Bookmarks" alt="Google Bookmarks" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="" title="Pownce"><img src="http://blog.kesor.net/wp-content/plugins/sociable/images/" title="Pownce" alt="Pownce" class="sociable-hovers" /></a></li>
	<li class="sociablelast"><a rel="nofollow"  href="" title="TwitThis"><img src="http://blog.kesor.net/wp-content/plugins/sociable/images/" title="TwitThis" alt="TwitThis" class="sociable-hovers" /></a></li>
</ul>
</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.kesor.net/2007/07/30/haml-caching-cgi/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Writing helpers with Haml and rSpec</title>
		<link>http://blog.kesor.net/2007/07/22/writing-helpers-with-haml-and-rspec/</link>
		<comments>http://blog.kesor.net/2007/07/22/writing-helpers-with-haml-and-rspec/#comments</comments>
		<pubDate>Sun, 22 Jul 2007 19:02:46 +0000</pubDate>
		<dc:creator>kesor</dc:creator>
				<category><![CDATA[development]]></category>
		<category><![CDATA[haml]]></category>
		<category><![CDATA[ideas]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[rspec]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[specifications]]></category>

		<guid isPermaLink="false">http://blog.kesor.net/2007/07/22/writing-helpers-with-haml-and-rspec/</guid>
		<description><![CDATA[Recently Wolfman posted a description about Rails helpers written with Haml::Helpers#open and rSpec.
I want it to be more DRY than it is, since the whole application is using rSpec and Haml, all helpers should have the same before(:each)
So basically &#8211; what I did was :

[source:ruby]
Spec::Runner.configure do &#124;config&#124;
  config.with_options :behaviour_type => :helpers do &#124;config&#124;
  [...]]]></description>
			<content:encoded><![CDATA[<p>Recently <a href="http://blog.wolfman.com/articles/2007/07/14/using-rspec-to-test-haml-helpers">Wolfman</a> posted a description about <a target="_blank" title="Ruby on Rails" href="http://www.rubyonrails.com">Rails</a> helpers written with <a target="_blank" title="HAML" href="http://haml.hamptoncatlin.com">Haml</a>::<a target="_blank" title="HAML::Helpers RDoc" href="http://haml.hamptoncatlin.com/docs/rdoc/classes/Haml/Helpers.html">Helpers#open</a> and <a target="_blank" title="rSpec" href="http://rspec.rubyforge.org">rSpec</a>.</p>
<p>I want it to be more DRY than it is, since the whole application is using rSpec and Haml, all helpers should have the same <code>before(:each)</code></p>
<p>So basically &#8211; what I did was :</p>
<p><span id="more-8"></span><br />
[source:ruby]<br />
Spec::Runner.configure do |config|<br />
  config.with_options :behaviour_type => :helpers do |config|<br />
    config.include Haml::Helpers<br />
    config.include ActionView::Helpers<br />
    config.prepend_before :all do<br />
      @haml_is_haml = true<br />
      @haml_stack = [Haml::Buffer.new]<br />
    end<br />
  end<br />
end<br />
[/source]</p>
<p>Except it will not work, for various reasons.</p>
<p>Hope to solve all the quirks sometime soon. I know this will cost me some sleep.</p>
<p></p>

<div class="sociable">

<ul>
	<li class="sociablefirst"><a rel="nofollow"  href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fblog.kesor.net%2F2007%2F07%2F22%2Fwriting-helpers-with-haml-and-rspec%2F&amp;title=Writing%20helpers%20with%20Haml%20and%20rSpec&amp;bodytext=Recently%20Wolfman%20posted%20a%20description%20about%20Rails%20helpers%20written%20with%20Haml%3A%3AHelpers%23open%20and%20rSpec.%0D%0A%0D%0AI%20want%20it%20to%20be%20more%20DRY%20than%20it%20is%2C%20since%20the%20whole%20application%20is%20using%20rSpec%20and%20Haml%2C%20all%20helpers%20should%20have%20the%20same%20before%28%3Aeach%29%0D%0A%0D%0ASo%20bas" title="Digg"><img src="http://blog.kesor.net/wp-content/plugins/sociable/images/digg.png" title="Digg" alt="Digg" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://delicious.com/post?url=http%3A%2F%2Fblog.kesor.net%2F2007%2F07%2F22%2Fwriting-helpers-with-haml-and-rspec%2F&amp;title=Writing%20helpers%20with%20Haml%20and%20rSpec&amp;notes=Recently%20Wolfman%20posted%20a%20description%20about%20Rails%20helpers%20written%20with%20Haml%3A%3AHelpers%23open%20and%20rSpec.%0D%0A%0D%0AI%20want%20it%20to%20be%20more%20DRY%20than%20it%20is%2C%20since%20the%20whole%20application%20is%20using%20rSpec%20and%20Haml%2C%20all%20helpers%20should%20have%20the%20same%20before%28%3Aeach%29%0D%0A%0D%0ASo%20bas" title="del.icio.us"><img src="http://blog.kesor.net/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://reddit.com/submit?url=http%3A%2F%2Fblog.kesor.net%2F2007%2F07%2F22%2Fwriting-helpers-with-haml-and-rspec%2F&amp;title=Writing%20helpers%20with%20Haml%20and%20rSpec" title="Reddit"><img src="http://blog.kesor.net/wp-content/plugins/sociable/images/reddit.png" title="Reddit" alt="Reddit" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://technorati.com/faves?add=http%3A%2F%2Fblog.kesor.net%2F2007%2F07%2F22%2Fwriting-helpers-with-haml-and-rspec%2F" title="Technorati"><img src="http://blog.kesor.net/wp-content/plugins/sociable/images/technorati.png" title="Technorati" alt="Technorati" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="mailto:?subject=Writing%20helpers%20with%20Haml%20and%20rSpec&amp;body=http%3A%2F%2Fblog.kesor.net%2F2007%2F07%2F22%2Fwriting-helpers-with-haml-and-rspec%2F" title="email"><img src="http://blog.kesor.net/wp-content/plugins/sociable/images/email_link.png" title="email" alt="email" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://www.facebook.com/share.php?u=http%3A%2F%2Fblog.kesor.net%2F2007%2F07%2F22%2Fwriting-helpers-with-haml-and-rspec%2F&amp;t=Writing%20helpers%20with%20Haml%20and%20rSpec" title="Facebook"><img src="http://blog.kesor.net/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Fblog.kesor.net%2F2007%2F07%2F22%2Fwriting-helpers-with-haml-and-rspec%2F&amp;title=Writing%20helpers%20with%20Haml%20and%20rSpec&amp;annotation=Recently%20Wolfman%20posted%20a%20description%20about%20Rails%20helpers%20written%20with%20Haml%3A%3AHelpers%23open%20and%20rSpec.%0D%0A%0D%0AI%20want%20it%20to%20be%20more%20DRY%20than%20it%20is%2C%20since%20the%20whole%20application%20is%20using%20rSpec%20and%20Haml%2C%20all%20helpers%20should%20have%20the%20same%20before%28%3Aeach%29%0D%0A%0D%0ASo%20bas" title="Google Bookmarks"><img src="http://blog.kesor.net/wp-content/plugins/sociable/images/googlebookmark.png" title="Google Bookmarks" alt="Google Bookmarks" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="" title="Pownce"><img src="http://blog.kesor.net/wp-content/plugins/sociable/images/" title="Pownce" alt="Pownce" class="sociable-hovers" /></a></li>
	<li class="sociablelast"><a rel="nofollow"  href="" title="TwitThis"><img src="http://blog.kesor.net/wp-content/plugins/sociable/images/" title="TwitThis" alt="TwitThis" class="sociable-hovers" /></a></li>
</ul>
</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.kesor.net/2007/07/22/writing-helpers-with-haml-and-rspec/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Using FireBug&#8217;s console logger with GreaseMonkey 0.6.4</title>
		<link>http://blog.kesor.net/2006/06/26/using-firebugs-console-logger-with-greasemonkey-064/</link>
		<comments>http://blog.kesor.net/2006/06/26/using-firebugs-console-logger-with-greasemonkey-064/#comments</comments>
		<pubDate>Mon, 26 Jun 2006 10:39:03 +0000</pubDate>
		<dc:creator>kesor</dc:creator>
				<category><![CDATA[development]]></category>
		<category><![CDATA[firebug]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[greasemonkey]]></category>
		<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://blog.kesor.net/2006/06/26/using-firebugs-console-logger-with-greasemonkey-064/</guid>
		<description><![CDATA[FireBug is the best tool (a Firefox extension) for web development ever invented &#8230; well, at least one of the best.
The console method  (formerly known as printfire) is a feature of FireBug that enables logging into firebug&#8217;s console with different levels. Thing is &#8211; it does not quite work with GreaseMonkey scripts. Until now!
The solution [...]]]></description>
			<content:encoded><![CDATA[<p>FireBug is the best tool (a Firefox extension) for web development ever invented &#8230; well, at least one of the best.</p>
<p>The <a href="http://www.joehewitt.com/software/firebug/docs.php">console</a> method  (formerly known as printfire) is a feature of FireBug that enables logging into firebug&#8217;s console with different levels. Thing is &#8211; it does not quite work with GreaseMonkey scripts. Until now!</p>
<p>The solution is very simple &#8211; using GM&#8217;s unsafeWindow object. This object is the same as the &#8216;window&#8217; object that local javascript is seing, and it includes firebug console methods.</p>
<p>Like so:</p>
<blockquote>
<pre>unsafeWindow.console.info('some informational message');</pre>
</blockquote>
<p></p>

<div class="sociable">

<ul>
	<li class="sociablefirst"><a rel="nofollow"  href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fblog.kesor.net%2F2006%2F06%2F26%2Fusing-firebugs-console-logger-with-greasemonkey-064%2F&amp;title=Using%20FireBug%27s%20console%20logger%20with%20GreaseMonkey%200.6.4&amp;bodytext=FireBug%20is%20the%20best%20tool%20%28a%20Firefox%20extension%29%20for%20web%20development%20ever%20invented%20...%20well%2C%20at%20least%20one%20of%20the%20best.%0D%0AThe%20console%20method%C2%A0%20%28formerly%20known%20as%20printfire%29%20is%20a%20feature%20of%20FireBug%20that%20enables%20logging%20into%20firebug%27s%20console%20with%20differen" title="Digg"><img src="http://blog.kesor.net/wp-content/plugins/sociable/images/digg.png" title="Digg" alt="Digg" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://delicious.com/post?url=http%3A%2F%2Fblog.kesor.net%2F2006%2F06%2F26%2Fusing-firebugs-console-logger-with-greasemonkey-064%2F&amp;title=Using%20FireBug%27s%20console%20logger%20with%20GreaseMonkey%200.6.4&amp;notes=FireBug%20is%20the%20best%20tool%20%28a%20Firefox%20extension%29%20for%20web%20development%20ever%20invented%20...%20well%2C%20at%20least%20one%20of%20the%20best.%0D%0AThe%20console%20method%C2%A0%20%28formerly%20known%20as%20printfire%29%20is%20a%20feature%20of%20FireBug%20that%20enables%20logging%20into%20firebug%27s%20console%20with%20differen" title="del.icio.us"><img src="http://blog.kesor.net/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://reddit.com/submit?url=http%3A%2F%2Fblog.kesor.net%2F2006%2F06%2F26%2Fusing-firebugs-console-logger-with-greasemonkey-064%2F&amp;title=Using%20FireBug%27s%20console%20logger%20with%20GreaseMonkey%200.6.4" title="Reddit"><img src="http://blog.kesor.net/wp-content/plugins/sociable/images/reddit.png" title="Reddit" alt="Reddit" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://technorati.com/faves?add=http%3A%2F%2Fblog.kesor.net%2F2006%2F06%2F26%2Fusing-firebugs-console-logger-with-greasemonkey-064%2F" title="Technorati"><img src="http://blog.kesor.net/wp-content/plugins/sociable/images/technorati.png" title="Technorati" alt="Technorati" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="mailto:?subject=Using%20FireBug%27s%20console%20logger%20with%20GreaseMonkey%200.6.4&amp;body=http%3A%2F%2Fblog.kesor.net%2F2006%2F06%2F26%2Fusing-firebugs-console-logger-with-greasemonkey-064%2F" title="email"><img src="http://blog.kesor.net/wp-content/plugins/sociable/images/email_link.png" title="email" alt="email" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://www.facebook.com/share.php?u=http%3A%2F%2Fblog.kesor.net%2F2006%2F06%2F26%2Fusing-firebugs-console-logger-with-greasemonkey-064%2F&amp;t=Using%20FireBug%27s%20console%20logger%20with%20GreaseMonkey%200.6.4" title="Facebook"><img src="http://blog.kesor.net/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Fblog.kesor.net%2F2006%2F06%2F26%2Fusing-firebugs-console-logger-with-greasemonkey-064%2F&amp;title=Using%20FireBug%27s%20console%20logger%20with%20GreaseMonkey%200.6.4&amp;annotation=FireBug%20is%20the%20best%20tool%20%28a%20Firefox%20extension%29%20for%20web%20development%20ever%20invented%20...%20well%2C%20at%20least%20one%20of%20the%20best.%0D%0AThe%20console%20method%C2%A0%20%28formerly%20known%20as%20printfire%29%20is%20a%20feature%20of%20FireBug%20that%20enables%20logging%20into%20firebug%27s%20console%20with%20differen" title="Google Bookmarks"><img src="http://blog.kesor.net/wp-content/plugins/sociable/images/googlebookmark.png" title="Google Bookmarks" alt="Google Bookmarks" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="" title="Pownce"><img src="http://blog.kesor.net/wp-content/plugins/sociable/images/" title="Pownce" alt="Pownce" class="sociable-hovers" /></a></li>
	<li class="sociablelast"><a rel="nofollow"  href="" title="TwitThis"><img src="http://blog.kesor.net/wp-content/plugins/sociable/images/" title="TwitThis" alt="TwitThis" class="sociable-hovers" /></a></li>
</ul>
</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.kesor.net/2006/06/26/using-firebugs-console-logger-with-greasemonkey-064/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Ruby + proper specifications = rSpec</title>
		<link>http://blog.kesor.net/2006/05/21/ruby-proper-specifications-rspec/</link>
		<comments>http://blog.kesor.net/2006/05/21/ruby-proper-specifications-rspec/#comments</comments>
		<pubDate>Sun, 21 May 2006 20:07:53 +0000</pubDate>
		<dc:creator>kesor</dc:creator>
				<category><![CDATA[development]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[specifications]]></category>

		<guid isPermaLink="false">http://blog.kesor.net/2006/05/21/ruby-proper-specifications-rspec/</guid>
		<description><![CDATA[I had an enlightenment today &#8211; truly an enlightenment.
After months of reading and getting to know what test driven development and extreme programming is all about, I have finally been able to practice what I preach. Since I work with several programmers and the product we are writing is so new that it is still [...]]]></description>
			<content:encoded><![CDATA[<p>I had an enlightenment today &#8211; truly an enlightenment.</p>
<p>After months of reading and getting to know what test driven development and extreme programming is all about, I have finally been able to practice what I preach. Since I work with several programmers and the product we are writing is so new that it is still in diapers (famous hebrew saying). Quality control is a demand from above management, after they got burned with too many escalations with the existing product. So part of my job description was preaching unit testing and such.</p>
<p>Anyways &#8211; I really did understand and could quote all the reasons why testing is important, and why its a sort of a documentation, and why it should be done before coding, and why it makes coding more structured and disciplined and gives the programmer a direction. But I could not make myself understand how to implement it with ruby&#8217;s <a title="Test::Unit" target="_blank" href="http://testunit.talbott.ws/">Test::Unit</a> for example, not even talking about more obscure implementations of <a title="xUnit" target="_blank" href="http://en.wikipedia.org/wiki/XUnit">xUnit </a>like <a title="cppUnit" target="_blank" href="http://cppunit.sourceforge.net/cppunit-wiki">CppUnit</a> which is something that was chosen for our project.</p>
<p>Last week I saw the presentation <a target="_blank" title="Dave Astels" href="http://www.daveastels.com/">Dave Astels</a> made at google, freely downloadable from google video. An I saw that it was god (with one &#8216;o&#8217;). And today I finally got to trash all the beginnings that I tried to do with Test::Unit on the ClearCase wrapper I&#8217;m writing &#8211; and started doing <a target="_blank" href="http://rspec.rubyforge.org/">rSpec</a> instead.</p>
<p>It flowed&#8230; like a river. And any bumps that were on the were not frustrating, they were annoying, thus actually motivating me to kick them of my route and continue flowing with the flow without any frustration. It rocks. I love it.</p>
<p>Still the one thing I miss with all this TDD and BDD are good concrete examples that are a bit more than what <a target="_blank" title="rSpec examples" href="http://rspec.rubyforge.org/examples.html">rSpec examples</a> are, I need it chewed and digested for extreme easy understanding. Maybe a step-by-step evolving kind of code, maybe even a book matching the Progmatic books quality is the thing missing in all of this. Because it always looks really great &#8211; but when a motivated but inexperienced programmer like me tries to implement this stuff it soon becomes frustrating. Even though rSpec is not too frustrating, and hopefully it will only grow to be easier and more intuitive and productive like it is already in its alpha(?) state.</p>
<p>Enough ramblings for now &#8211; back to the code! <img src='http://blog.kesor.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p></p>

<div class="sociable">

<ul>
	<li class="sociablefirst"><a rel="nofollow"  href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fblog.kesor.net%2F2006%2F05%2F21%2Fruby-proper-specifications-rspec%2F&amp;title=Ruby%20%2B%20proper%20specifications%20%3D%20rSpec&amp;bodytext=I%20had%20an%20enlightenment%20today%20-%20truly%20an%20enlightenment.%0D%0A%0D%0AAfter%20months%20of%20reading%20and%20getting%20to%20know%20what%20test%20driven%20development%20and%20extreme%20programming%20is%20all%20about%2C%20I%20have%20finally%20been%20able%20to%20practice%20what%20I%20preach.%20Since%20I%20work%20with%20several%20pro" title="Digg"><img src="http://blog.kesor.net/wp-content/plugins/sociable/images/digg.png" title="Digg" alt="Digg" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://delicious.com/post?url=http%3A%2F%2Fblog.kesor.net%2F2006%2F05%2F21%2Fruby-proper-specifications-rspec%2F&amp;title=Ruby%20%2B%20proper%20specifications%20%3D%20rSpec&amp;notes=I%20had%20an%20enlightenment%20today%20-%20truly%20an%20enlightenment.%0D%0A%0D%0AAfter%20months%20of%20reading%20and%20getting%20to%20know%20what%20test%20driven%20development%20and%20extreme%20programming%20is%20all%20about%2C%20I%20have%20finally%20been%20able%20to%20practice%20what%20I%20preach.%20Since%20I%20work%20with%20several%20pro" title="del.icio.us"><img src="http://blog.kesor.net/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://reddit.com/submit?url=http%3A%2F%2Fblog.kesor.net%2F2006%2F05%2F21%2Fruby-proper-specifications-rspec%2F&amp;title=Ruby%20%2B%20proper%20specifications%20%3D%20rSpec" title="Reddit"><img src="http://blog.kesor.net/wp-content/plugins/sociable/images/reddit.png" title="Reddit" alt="Reddit" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://technorati.com/faves?add=http%3A%2F%2Fblog.kesor.net%2F2006%2F05%2F21%2Fruby-proper-specifications-rspec%2F" title="Technorati"><img src="http://blog.kesor.net/wp-content/plugins/sociable/images/technorati.png" title="Technorati" alt="Technorati" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="mailto:?subject=Ruby%20%2B%20proper%20specifications%20%3D%20rSpec&amp;body=http%3A%2F%2Fblog.kesor.net%2F2006%2F05%2F21%2Fruby-proper-specifications-rspec%2F" title="email"><img src="http://blog.kesor.net/wp-content/plugins/sociable/images/email_link.png" title="email" alt="email" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://www.facebook.com/share.php?u=http%3A%2F%2Fblog.kesor.net%2F2006%2F05%2F21%2Fruby-proper-specifications-rspec%2F&amp;t=Ruby%20%2B%20proper%20specifications%20%3D%20rSpec" title="Facebook"><img src="http://blog.kesor.net/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Fblog.kesor.net%2F2006%2F05%2F21%2Fruby-proper-specifications-rspec%2F&amp;title=Ruby%20%2B%20proper%20specifications%20%3D%20rSpec&amp;annotation=I%20had%20an%20enlightenment%20today%20-%20truly%20an%20enlightenment.%0D%0A%0D%0AAfter%20months%20of%20reading%20and%20getting%20to%20know%20what%20test%20driven%20development%20and%20extreme%20programming%20is%20all%20about%2C%20I%20have%20finally%20been%20able%20to%20practice%20what%20I%20preach.%20Since%20I%20work%20with%20several%20pro" title="Google Bookmarks"><img src="http://blog.kesor.net/wp-content/plugins/sociable/images/googlebookmark.png" title="Google Bookmarks" alt="Google Bookmarks" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="" title="Pownce"><img src="http://blog.kesor.net/wp-content/plugins/sociable/images/" title="Pownce" alt="Pownce" class="sociable-hovers" /></a></li>
	<li class="sociablelast"><a rel="nofollow"  href="" title="TwitThis"><img src="http://blog.kesor.net/wp-content/plugins/sociable/images/" title="TwitThis" alt="TwitThis" class="sociable-hovers" /></a></li>
</ul>
</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.kesor.net/2006/05/21/ruby-proper-specifications-rspec/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Ultimate Development GUI</title>
		<link>http://blog.kesor.net/2006/05/19/the-ultimate-development-gui/</link>
		<comments>http://blog.kesor.net/2006/05/19/the-ultimate-development-gui/#comments</comments>
		<pubDate>Fri, 19 May 2006 14:15:06 +0000</pubDate>
		<dc:creator>kesor</dc:creator>
				<category><![CDATA[development]]></category>
		<category><![CDATA[gui]]></category>
		<category><![CDATA[ideas]]></category>

		<guid isPermaLink="false">http://blog.kesor.net/2006/05/19/the-ultimate-development-gui/</guid>
		<description><![CDATA[For the last several days I have been trying to find the perfect tool for development of the many projects I have. My basic requirement was a good editor (TextMate would be a dream, but I don&#8217;t own a Mac yet), and a good integration with the filesystem &#8211; either remote, or in version control.
After [...]]]></description>
			<content:encoded><![CDATA[<p>For the last several days I have been trying to find the perfect tool for development of the many projects I have. My basic requirement was a good editor (TextMate would be a dream, but I don&#8217;t own a Mac yet), and a good integration with the filesystem &#8211; either remote, or in version control.</p>
<p>After some tweaks and manipulations &#8211; I have came to use Scintilla + Explorer + TortoiseSVN + WebDAV (windows integrated). Overall this is almost perfect, except one small thing, organizing the different windows on the screen &#8212; and those huge window titles I hate so much. It would be really perfect if the titles were minimal (text height, no more), and the layout would be saved.</p>
<p>This is when it hit me &#8212; why not create a program that will do the layout only?</p>
<p>A really small application &#8211; preferably multiplatform, which will run windows inside it with layout separation for resizing, and with tabs for each window &#8212; for more than one program maybe. So basically you&#8217;ll have what all development studios have &#8212; eclipse for example, but instead of a file explorer you would run Windows Explorer, and instead of a version control plugin you would have TortoiseSVN, and instead of WebDAV integration you would also have the explorer. And instead of the text editor window you will have scintilla, or notepad, or whatever . . . and these layouts will be saveable and configurable to include multiple colums or rows, and tabs for each window.</p>
<p>GTK or QT would probably be the best ways to do this and stay multiplatform at the same time.</p>
<p>Ideas are coming at a rate much higher than project completition&#8230;.</p>
<p><strong>Update:</strong> There are several utilities which do something like this, Acer&#8217;s GridVista is one of them for example. Good, but not good enough.</p>
<p></p>

<div class="sociable">

<ul>
	<li class="sociablefirst"><a rel="nofollow"  href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fblog.kesor.net%2F2006%2F05%2F19%2Fthe-ultimate-development-gui%2F&amp;title=The%20Ultimate%20Development%20GUI%20&amp;bodytext=For%20the%20last%20several%20days%20I%20have%20been%20trying%20to%20find%20the%20perfect%20tool%20for%20development%20of%20the%20many%20projects%20I%20have.%20My%20basic%20requirement%20was%20a%20good%20editor%20%28TextMate%20would%20be%20a%20dream%2C%20but%20I%20don%27t%20own%20a%20Mac%20yet%29%2C%20and%20a%20good%20integration%20with%20the%20filesyst" title="Digg"><img src="http://blog.kesor.net/wp-content/plugins/sociable/images/digg.png" title="Digg" alt="Digg" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://delicious.com/post?url=http%3A%2F%2Fblog.kesor.net%2F2006%2F05%2F19%2Fthe-ultimate-development-gui%2F&amp;title=The%20Ultimate%20Development%20GUI%20&amp;notes=For%20the%20last%20several%20days%20I%20have%20been%20trying%20to%20find%20the%20perfect%20tool%20for%20development%20of%20the%20many%20projects%20I%20have.%20My%20basic%20requirement%20was%20a%20good%20editor%20%28TextMate%20would%20be%20a%20dream%2C%20but%20I%20don%27t%20own%20a%20Mac%20yet%29%2C%20and%20a%20good%20integration%20with%20the%20filesyst" title="del.icio.us"><img src="http://blog.kesor.net/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://reddit.com/submit?url=http%3A%2F%2Fblog.kesor.net%2F2006%2F05%2F19%2Fthe-ultimate-development-gui%2F&amp;title=The%20Ultimate%20Development%20GUI%20" title="Reddit"><img src="http://blog.kesor.net/wp-content/plugins/sociable/images/reddit.png" title="Reddit" alt="Reddit" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://technorati.com/faves?add=http%3A%2F%2Fblog.kesor.net%2F2006%2F05%2F19%2Fthe-ultimate-development-gui%2F" title="Technorati"><img src="http://blog.kesor.net/wp-content/plugins/sociable/images/technorati.png" title="Technorati" alt="Technorati" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="mailto:?subject=The%20Ultimate%20Development%20GUI%20&amp;body=http%3A%2F%2Fblog.kesor.net%2F2006%2F05%2F19%2Fthe-ultimate-development-gui%2F" title="email"><img src="http://blog.kesor.net/wp-content/plugins/sociable/images/email_link.png" title="email" alt="email" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://www.facebook.com/share.php?u=http%3A%2F%2Fblog.kesor.net%2F2006%2F05%2F19%2Fthe-ultimate-development-gui%2F&amp;t=The%20Ultimate%20Development%20GUI%20" title="Facebook"><img src="http://blog.kesor.net/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Fblog.kesor.net%2F2006%2F05%2F19%2Fthe-ultimate-development-gui%2F&amp;title=The%20Ultimate%20Development%20GUI%20&amp;annotation=For%20the%20last%20several%20days%20I%20have%20been%20trying%20to%20find%20the%20perfect%20tool%20for%20development%20of%20the%20many%20projects%20I%20have.%20My%20basic%20requirement%20was%20a%20good%20editor%20%28TextMate%20would%20be%20a%20dream%2C%20but%20I%20don%27t%20own%20a%20Mac%20yet%29%2C%20and%20a%20good%20integration%20with%20the%20filesyst" title="Google Bookmarks"><img src="http://blog.kesor.net/wp-content/plugins/sociable/images/googlebookmark.png" title="Google Bookmarks" alt="Google Bookmarks" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="" title="Pownce"><img src="http://blog.kesor.net/wp-content/plugins/sociable/images/" title="Pownce" alt="Pownce" class="sociable-hovers" /></a></li>
	<li class="sociablelast"><a rel="nofollow"  href="" title="TwitThis"><img src="http://blog.kesor.net/wp-content/plugins/sociable/images/" title="TwitThis" alt="TwitThis" class="sociable-hovers" /></a></li>
</ul>
</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.kesor.net/2006/05/19/the-ultimate-development-gui/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- Dynamic Page Served (once) in 0.354 seconds -->
