<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>splintor's blog</title>
	<atom:link href="http://splintor.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://splintor.wordpress.com</link>
	<description>My thoughts and stories about software, programming and geekery in general</description>
	<lastBuildDate>Sat, 28 Jan 2012 19:12:16 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='splintor.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>splintor's blog</title>
		<link>http://splintor.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://splintor.wordpress.com/osd.xml" title="splintor&#039;s blog" />
	<atom:link rel='hub' href='http://splintor.wordpress.com/?pushpress=hub'/>
		<item>
		<title>UAC: Elevated process doesn&#8217;t inherit its parent&#8217;s working directory</title>
		<link>http://splintor.wordpress.com/2009/03/01/uac-elevated-process-doesnt-inherit-its-parents-working-directory/</link>
		<comments>http://splintor.wordpress.com/2009/03/01/uac-elevated-process-doesnt-inherit-its-parents-working-directory/#comments</comments>
		<pubDate>Sun, 01 Mar 2009 20:42:32 +0000</pubDate>
		<dc:creator>splintor</dc:creator>
				<category><![CDATA[UAC]]></category>

		<guid isPermaLink="false">http://splintor.wordpress.com/2009/03/01/uac-elevated-process-doesnt-inherit-its-parents-working-directory/</guid>
		<description><![CDATA[One of the first things we do in the installation that our internal install framework generates is to elevate the user in case we run on Windows Vista or Windows Server 2008. The way to do it is a common knowledge – in a VBScript file, start your process with ShellExecute and pass the “RunAs” [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=splintor.wordpress.com&amp;blog=19863&amp;post=103&amp;subd=splintor&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>One of the first things we do in the installation that our internal install framework generates is to <a title="Wikipedia: User Account Control - Requesting elevation" href="http://en.wikipedia.org/wiki/User_Account_Control#Requesting_elevation">elevate</a> the user in case we run on Windows Vista or Windows Server 2008.</p>
<p>The way to do it is <a title="VBScripts and UAC elevation on Winhelponline.com" href="http://www.winhelponline.com/articles/185/1/VBScripts-and-UAC-elevation.html">a common knowledge</a> – in a VBScript file, start your process with <strong><a title="ShellExecute Method on MSDN" href="http://msdn.microsoft.com/en-us/library/bb774148%28VS.85%29.aspx">ShellExecute</a> </strong>and pass the “<strong>RunAs</strong>” parameter.</p>
<p>However, we had at least two problems with it, which were due to the fact that our install scripts assumed their <a title="WIkipedia: Working Directory" href="http://en.wikipedia.org/wiki/Working_directory">working directory</a> is the directory they reside in. While this was correct in a non-elevated environment (e.g. on Windows XP/2003), it turns out that when ShellExecute starts an elevated process, the elevated process does not inherit the working directory from the calling process, but instead, its working directory is initialized to the system directory.</p>
<p>I didn’t see this mentioned in any of the places that explain <a title="User comment on MSDN documentation for the ShellExecute function" href="http://msdn.microsoft.com/en-us/library/bb762153(VS.85).aspx#ctl00_rs1_WikiContent_ctl00_ItemUpdatePanel">how to elevate a process</a>, so I thought it will be good to at least post it here.</p>
<p>After I wrote this, I saw that Raymond Chen <a title="The Old New Thing: Why is my starting directory ignored when I elevate a command prompt?" href="http://blogs.msdn.com/oldnewthing/archive/2007/12/11/6648397.aspx">wrote</a> that this was done in order to avoid certain security attacks. See also <a title="Chris Jackson's Semantic Consonance: Why don’t elevated applications receive environment variables set by non-elevated calling process?" href="http://blogs.msdn.com/cjacks/archive/2008/10/29/why-don-t-elevated-applications-receive-environment-variables-set-by-non-elevated-calling-process.aspx">this post</a> by Chris Jackson where he explains that elevated process doesn’t get the environment variables of the process that started it because it is not the real child process of the elevating process. He then adds in <a title="Chris Jackson's comment reply about working directory" href="http://blogs.msdn.com/cjacks/archive/2008/10/29/why-don-t-elevated-applications-receive-environment-variables-set-by-non-elevated-calling-process.aspx#ctl00___ctl00___ctl02___Comments___Comments_ctl02_NameLink">a reply to a commenter</a> that the working directory is another story.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/splintor.wordpress.com/103/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/splintor.wordpress.com/103/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/splintor.wordpress.com/103/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/splintor.wordpress.com/103/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/splintor.wordpress.com/103/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/splintor.wordpress.com/103/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/splintor.wordpress.com/103/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/splintor.wordpress.com/103/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/splintor.wordpress.com/103/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/splintor.wordpress.com/103/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/splintor.wordpress.com/103/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/splintor.wordpress.com/103/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/splintor.wordpress.com/103/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/splintor.wordpress.com/103/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=splintor.wordpress.com&amp;blog=19863&amp;post=103&amp;subd=splintor&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://splintor.wordpress.com/2009/03/01/uac-elevated-process-doesnt-inherit-its-parents-working-directory/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/ca37c6979f9cd4860aaeb66cd6a61081?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">splintor</media:title>
		</media:content>
	</item>
		<item>
		<title>Total Commander (obsolete) tip: How to open a zip file with a non-zip file extension like JAR, XPI or EXE</title>
		<link>http://splintor.wordpress.com/2009/02/25/total-commander-obsolete-tip-how-to-open-a-zip-file-with-a-non-zip-file-extension-like-jar-xpi-or-exe/</link>
		<comments>http://splintor.wordpress.com/2009/02/25/total-commander-obsolete-tip-how-to-open-a-zip-file-with-a-non-zip-file-extension-like-jar-xpi-or-exe/#comments</comments>
		<pubDate>Wed, 25 Feb 2009 09:34:04 +0000</pubDate>
		<dc:creator>splintor</dc:creator>
				<category><![CDATA[Total Commander]]></category>
		<category><![CDATA[Zip]]></category>

		<guid isPermaLink="false">http://splintor.wordpress.com/2009/02/25/total-commander-obsolete-tip-how-to-open-a-zip-file-with-a-non-zip-file-extension-like-jar-xpi-or-exe/</guid>
		<description><![CDATA[Total Commander (TC) has a feature called “packing”, which is actually built-in support for zip files that allows you to easily double-click a zip file and open it as if it was a folder – navigate zipped folders hierarchy, copy/move files and folders from it or open/edit/view files in it. This is very handy, but [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=splintor.wordpress.com&amp;blog=19863&amp;post=102&amp;subd=splintor&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><a title="Wikipedia: Total Commander" href="http://en.wikipedia.org/wiki/Total_Commander">Total Commander</a> (TC) has a feature called “<a title="Frequently Asked Questions (FAQ) - Packing" href="http://www.ghisler.com/efaqpack.htm">packing</a>”, which is actually built-in support for zip files that allows you to easily double-click a zip file and open it as if it was a folder – navigate zipped folders hierarchy, copy/move files and folders from it or open/edit/view files in it.</p>
<p>This is very handy, but often, I have to deal with zip files with other non-zip extensions, where double-clicking them opens them with another application, but I want to inspect their zipped content within Total Commander as if they had a zip extension. Three common samples for such files are <a title="WIkipedia: XPInstall" href="http://en.wikipedia.org/wiki/XPInstall">XPI files</a> used to package and install Firefox extensions, <a title="Wikipedia: JAR (file format)" href="http://en.wikipedia.org/wiki/JAR_(file_format)">JAR files</a> and EXE files which are actually <a title="Wikipedia: Self-extracting archive" href="http://en.wikipedia.org/wiki/Self_extracting_archive">self-extracting zip files</a>. I’m currently working on two internal install frameworks. One of them generates a Setup.jar install file, and the other one, one run on Windows, generates a self-extracting exe using <a title="Wikipedia: WinRAR" href="http://en.wikipedia.org/wiki/WinRAR">WinRAR</a>.</p>
<p>In these three samples, when I want to view the zipped file content, I used to be forced to either open the file with <a title="Wikipedia: 7-zip" href="http://en.wikipedia.org/wiki/7-Zip">7-zip</a>, or renaming the file to have a zip extension and open it in Total Commander.</p>
<p>Recently, I found out that there is a better way to handle this in Total Commander 7.</p>
<p>A few weeks ago I discovered that if I try to change the current directory of a Total Commander panel to a file and not a directory, Total Commander changes the directory to the directory of that file, and then selects the file, which is a handy feature of its own. However, if this file is a zip file, then Total Commander will not select the file, but instead, it will open it as a zip file. The good news is that this is true for all zip files, even those with other extensions like EXE, JAR or XPI.</p>
<p>Note that this only works with Total Commander 7 and not in earlier versions. Also note that this magic only occurs if you change the directory of the panel to the full absolute path of the zip file. Using a partial relative path won’t work, and Total Commander will not change the directory.</p>
<p>On my machine, where Total Commander is configured to have Ctrl-G start editing the panel path and Ctrl-P copies the full path of the selected file(s), I can easily select a zip file and type <strong><em>Ctrl-P</em></strong>, <strong><em>Ctrl-G</em></strong>, <strong><em>Enter </em></strong>to browse the file zipped content, but on other machine that doesn’t have this keyboard remapping, I’m using the following sequence:</p>
<ol>
<li><strong><em>&lt;Right Arrow&gt; &#8211; </em></strong>to show the TC command line in case it is hidden (it is hidden on my machine)</li>
<li>type <strong>cd</strong></li>
<li><strong><em>&lt;Space&gt;</em></strong></li>
<li><strong><em>&lt;Ctrl-Shift-Enter&gt; </em></strong>– to copy the full path of the selected file to the command line. This is a standard TC keyboard shortcut.</li>
<li><strong><em>&lt;Enter&gt; </em></strong>– to invoke the magic</li>
</ol>
<p>I added “(obsolete)” to this post subject because after writing all of this, I went over the post draft to add links to the relevant words, and when I looked for a link that explains Total Commander support for zip files, I found these two FAQs about <a title="TC FAQ: How can I unpack Java archives (*.jar)?" href="http://www.ghisler.com/efaqpack.htm#JavaArchive">how to open JAR files</a> and <a title="TC FAQ: How can I see the contents of self-extracting archives?" href="http://www.ghisler.com/efaqpack.htm#ShowSFX">how to open self-extracting archives</a> and realized that TC has a built-in support for handling this problem – using <strong>Ctrl-PageDown</strong>, so my tricks are pretty much obsolete. However, I thought this still deserves publishing, as it might reveal new features for TC users who read this.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/splintor.wordpress.com/102/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/splintor.wordpress.com/102/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/splintor.wordpress.com/102/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/splintor.wordpress.com/102/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/splintor.wordpress.com/102/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/splintor.wordpress.com/102/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/splintor.wordpress.com/102/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/splintor.wordpress.com/102/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/splintor.wordpress.com/102/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/splintor.wordpress.com/102/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/splintor.wordpress.com/102/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/splintor.wordpress.com/102/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/splintor.wordpress.com/102/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/splintor.wordpress.com/102/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=splintor.wordpress.com&amp;blog=19863&amp;post=102&amp;subd=splintor&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://splintor.wordpress.com/2009/02/25/total-commander-obsolete-tip-how-to-open-a-zip-file-with-a-non-zip-file-extension-like-jar-xpi-or-exe/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/ca37c6979f9cd4860aaeb66cd6a61081?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">splintor</media:title>
		</media:content>
	</item>
		<item>
		<title>How to write a ruby function that can accept either a string or a regular expression</title>
		<link>http://splintor.wordpress.com/2008/07/30/how-to-write-a-ruby-function-that-can-accept-either-a-string-or-a-regular-expression/</link>
		<comments>http://splintor.wordpress.com/2008/07/30/how-to-write-a-ruby-function-that-can-accept-either-a-string-or-a-regular-expression/#comments</comments>
		<pubDate>Wed, 30 Jul 2008 04:44:25 +0000</pubDate>
		<dc:creator>splintor</dc:creator>
				<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Watir]]></category>
		<category><![CDATA[Work]]></category>

		<guid isPermaLink="false">http://splintor.wordpress.com/?p=82</guid>
		<description><![CDATA[While working on our unit test framework, I wanted to write a function that checks if a given Ext JS windoid is opened. The function should accept a title argument. This was easily implemented as: I then realized that users might not have the full title of the window, and might only want to check [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=splintor.wordpress.com&amp;blog=19863&amp;post=82&amp;subd=splintor&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>While working on our unit test framework, I wanted to write a function that checks if a given <a title="ExtJS Window class" href="http://extjs.com/deploy/dev/docs/?class=Ext.Window">Ext JS windoid</a> is opened. The function should accept a title argument. This was easily implemented as:<br />
<pre class="brush: ruby;">
	# title is a string with the exact windoid title
	def windoidDisplayed?(title)
		spans = $browser.spans
		t = $browser.length &amp;&amp; $browser.detect {|i| \
			i.class_name == 'x-window-header-text' \
			&amp;&amp; title == i.text \
		}
		return t &amp;&amp; t.visible?
	end
</pre></p>
<p>I then realized that users might not have the full title of the window, and might only want to check for a windoid with a title that matches some regular expression. A simple and naive way to do it is<br />
<pre class="brush: ruby;">
	# title can be a string or a regular expression
	def windoidDisplayed?(title)
		spans = $browser.spans
		t = $browser.length &amp;&amp; $browser.detect {|i| \
			i.class_name == 'x-window-header-text' \
				&amp;&amp; (title.kind_of?(String) \
					? (title == i.text) \
					: (title =~ i.text)) \
		}
		return t &amp;&amp; t.visible?
	end
</pre></p>
<p>However, I didn’t want to check in every loop iteration if the passed title argument is regular expression. Although performance is really a non-issue in our unit tests, it just seemed to be a cumbersome and ugly code. I thought of using the dynamic nature of ruby to add a method (e.g. &#8220;match?&#8221;) to both string and regular expression classes, so I can call it in a polymorphic way without having to detect the type of title:<br />
<pre class="brush: ruby;">
	class String
		def match?(x)
			return self == x
		end
	end
	
	class Regexp
		def match?(x)
			return self.match(x)
		end
	end
	
	# title can be a string or a regular expression
	def windoidDisplayed?(title)
		spans = $browser.spans
		t = $browser.length &amp;&amp; $browser.detect {|i| \
				i.class_name == 'x-window-header-text' \
				&amp;&amp; title.match?(i.text) \
		}
	return t &amp;&amp; t.visible?
</pre></p>
<p>Before implementing it, I thought I’d check if a similar function already exists in Ruby&#8217;s Standard Library, and indeed, when I looked up the <a title="Programming Ruby - The Pragmatic Programmer's Guide" href="http://www.ruby-doc.org/docs/ProgrammingRuby">Ruby book</a> for functions that are in both String and Regexp classes, I run into &#8220;===&#8221; (the Case Equality operator), which is meant exactly for this kind of things. Unlike JavaScript, where the === operator is meant for <a title="The Curious Schemer - Really Understanding JavaScript’s Equality and Identity" href="http://rayfd.wordpress.com/2007/03/18/really-understanding-javascripts-equality-and-identity/">identity</a>, in Ruby, the === method is usually called in <a title="Programming Ruby - Case Expressions" href="http://www.ruby-doc.org/docs/ProgrammingRuby/language.html#caseexpressions">case expressions</a> to match the case target for each when clause. As said in the documentation, for the String class, <a title="Programming Ruby - String#=== method" href="http://www.ruby-doc.org/docs/ProgrammingRuby/ref_c_string.html#String._eq_eq_eq">=== method</a> tests for equality and is the same as ==, but for Regexp class, <a title="Programming Ruby - Regexp#=== method" href="http://www.ruby-doc.org/docs/ProgrammingRuby/ref_c_regexp.html#Regexp._eq_eq_eq">=== method</a> tests for matches, and is the same as =~. Exactly what I was looking for. So my little function can simply be implemented like:<br />
<pre class="brush: ruby;">
	# title can be a string or a regular expression
	def windoidDisplayed?(title)
		spans = $browser.spans
		t = $browser.length &amp;&amp; $browser.detect {|i| \
				i.class_name == 'x-window-header-text' \
				&amp;&amp; title === i.text \
		}
		return t &amp;&amp; t.visible?
	end
</pre></p>
<p>BTW, while searching for that, I took a look at <a title="Watir - Web App Testing in Ruby" href="http://wtr.rubyforge.org/">Watir</a>&#8216;s sources, hoping to learn from the experts as I’m new to Ruby.<br />
I found that Watir source (<a href="https://svn.openqa.org/svn/watir/trunk/watir/watir.rb">watir.rb</a>, lines 50-70) does a similar trick to what I initially thought to do – define a new &#8220;matches&#8221; method (and not &#8220;match?&#8221; like the ruby convention that is also used in Watir in methods like &#8220;<a href="http://wtr.rubyforge.org/rdoc/classes/Watir/Element.html#M000322">exists?</a>&#8221; and &#8220;<a href="http://wtr.rubyforge.org/rdoc/classes/Watir/Element.html#M000300">visible?</a>&#8220;), and don’t use the === method.<br />
In addition, in several places in the code there are still explicit tests for String class, such as the verify_contains method in <a href="https://svn.openqa.org/svn/watir/trunk/watir/watir/input_elements.rb">input_elements.rb</a> and navigate_to_link_with_id and navigate_to_link_with_url methods in <a href="https://svn.openqa.org/svn/watir/trunk/watir/watir/watir_simple.rb">watir_simple.rb</a>.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/splintor.wordpress.com/82/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/splintor.wordpress.com/82/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/splintor.wordpress.com/82/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/splintor.wordpress.com/82/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/splintor.wordpress.com/82/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/splintor.wordpress.com/82/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/splintor.wordpress.com/82/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/splintor.wordpress.com/82/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/splintor.wordpress.com/82/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/splintor.wordpress.com/82/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/splintor.wordpress.com/82/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/splintor.wordpress.com/82/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/splintor.wordpress.com/82/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/splintor.wordpress.com/82/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/splintor.wordpress.com/82/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/splintor.wordpress.com/82/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=splintor.wordpress.com&amp;blog=19863&amp;post=82&amp;subd=splintor&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://splintor.wordpress.com/2008/07/30/how-to-write-a-ruby-function-that-can-accept-either-a-string-or-a-regular-expression/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/ca37c6979f9cd4860aaeb66cd6a61081?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">splintor</media:title>
		</media:content>
	</item>
		<item>
		<title>Handling browser on test start and end</title>
		<link>http://splintor.wordpress.com/2008/07/23/handling-browser-on-test-start-and-end/</link>
		<comments>http://splintor.wordpress.com/2008/07/23/handling-browser-on-test-start-and-end/#comments</comments>
		<pubDate>Wed, 23 Jul 2008 05:34:10 +0000</pubDate>
		<dc:creator>splintor</dc:creator>
				<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Testing]]></category>
		<category><![CDATA[Unit Tests]]></category>
		<category><![CDATA[Watir]]></category>
		<category><![CDATA[Work]]></category>

		<guid isPermaLink="false">http://splintor.wordpress.com/2008/07/23/handling-browser-on-test-start-and-end/</guid>
		<description><![CDATA[When I started building a unit tests framework for our product, I decided that I want the browser to remain open through all tests, and only be closed at the end. This is because I don&#8217;t want a developer running these tests on his machine to be disturbed with many browser windows opened and closed. [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=splintor.wordpress.com&amp;blog=19863&amp;post=70&amp;subd=splintor&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>When I started building a unit tests framework for our product, I decided that I want the browser to remain open through all tests, and only be closed at the end. This is because I don&#8217;t want a developer running these tests on his machine to be disturbed with many browser windows opened and closed.</p>
<p>However, as I quickly <a title="Is there a way to wrap setup and teardown methods around an entire suite?" href="http://groups.google.com/group/comp.lang.ruby/browse_thread/thread/4d0514db603958b3">found out</a>, there is no easy way to run code at the beginning and end of a test suite. This seems to be intentional, as each test case should be separate and independent of other tests in the suite. The setup and teardown methods are run for each test case.</p>
<p>One simple solution was to drop it and simply start the browser on every test case and close it on end, but when I played with it a little more, I reached an even better solution. I’m starting the browser at the beginning of the test and assign it to a global $browser. Then, if the test fail (which can be detected by @test_passed), we set $browser to nil, so the browser window remains, and subsequent tests create and use a new browser window. If the test succeed, the browser window is reused through $browser. At the end of the test, we close the browser if $browser is not nil. With this constellation, after the test suite finishes running, we have a browser open for each failed test, so we can inspect what went wrong and how the application looks at the time of the fail.</p>
<p>Here is the code I used to implement it:</p>
<p><pre class="brush: ruby;">
# cleanup on close
END { # close browser at completion of the tests
	$browser.close if $browser &amp;&amp; $browser.exists? &amp;&amp; !ENV['DONT_CLOSE_BROWSER_AT_END']
	Watir::IE.quit
} 

module MyTestSuite &lt; Watir::TestCase
	#############################################################
	# setup method:
	# This setup function is called by the UnitTest framework before any test is run.
	# The function initialize the global $browser object if needed
	#############################################################
	def setup
		return if $browser
		$browser = Watir::IE.new
		$browser.speed = :fast
		$browser.add_checker(PageCheckers::NAVIGATION_CHECKER)
		$browser.maximize unless ENV['DO_NOT_MAXIMIZE_BROWSER']
	end

	#############################################################
	# teardown method:
	# This teardown function is called by the UnitTest framework after any test is run.
	# The function reset the global $browser object in case an error
	# occurred (unless NO_NEW_BROWSER_ON_ERROR), so
	# a new browser window will be created in case an error occurred.
	#############################################################
	def teardown
		$browser = nil unless @test_passed || ENV['NO_NEW_BROWSER_ON_ERROR']
	end 

	# ... test cases methods goes here
end
</pre></p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/splintor.wordpress.com/70/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/splintor.wordpress.com/70/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/splintor.wordpress.com/70/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/splintor.wordpress.com/70/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/splintor.wordpress.com/70/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/splintor.wordpress.com/70/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/splintor.wordpress.com/70/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/splintor.wordpress.com/70/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/splintor.wordpress.com/70/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/splintor.wordpress.com/70/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/splintor.wordpress.com/70/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/splintor.wordpress.com/70/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/splintor.wordpress.com/70/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/splintor.wordpress.com/70/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/splintor.wordpress.com/70/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/splintor.wordpress.com/70/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=splintor.wordpress.com&amp;blog=19863&amp;post=70&amp;subd=splintor&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://splintor.wordpress.com/2008/07/23/handling-browser-on-test-start-and-end/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/ca37c6979f9cd4860aaeb66cd6a61081?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">splintor</media:title>
		</media:content>
	</item>
		<item>
		<title>Watir &#8211; first impressions</title>
		<link>http://splintor.wordpress.com/2008/06/24/watir-first-impressions/</link>
		<comments>http://splintor.wordpress.com/2008/06/24/watir-first-impressions/#comments</comments>
		<pubDate>Tue, 24 Jun 2008 19:58:02 +0000</pubDate>
		<dc:creator>splintor</dc:creator>
				<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Testing]]></category>
		<category><![CDATA[Watir]]></category>
		<category><![CDATA[Work]]></category>

		<guid isPermaLink="false">http://splintor.wordpress.com/2008/06/24/watir-first-impressions/</guid>
		<description><![CDATA[Our product doesn’t have unit tests. There, I said it. For a long time I’ve been looking for a way to build unit tests. There are three factors that prevented me to do so until now: It seems not to be really needed. When testing is needed, developers go over an installation and check that [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=splintor.wordpress.com&amp;blog=19863&amp;post=63&amp;subd=splintor&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Our product doesn’t have unit tests. There, I said it. For a long time I’ve been looking for a way to build unit tests. There are three factors that prevented me to do so until now:</p>
<ol>
<li>It seems not to be really needed. When testing is needed, developers go over an installation and check that everything is working. Building a suite of tests to test all possible scenarios seems to be a huge task that doesn’t worth the effort.</li>
<li>This is a web application that is constantly changing, so it seems hard to write robust test that will not break on every change. In addition, it uses a session ID that is passed in the URL, so URLs are different on every run.</li>
<li>The data keeps changing. Our data is on the mainframe, and it is owned and used by other teams so we can’t expect to have the same data all the time, which makes it problematic to build solid tests.</li>
</ol>
<p>In the past I tried using <a title="Selenium Overview at Open QA" href="http://selenium.openqa.org/">Selenium</a>, but never really fell in love with it, and never got the time to deeply look into it and test it.<br />
Recently I saw <a title="Cool things in Ruby by Ofer Prat" href="http://bugfeature.blogspot.com/2008/05/cool-things-in-ruby.html">Ofer’s post</a> about Watir and decided to take a better look at it and see if we can use it. Since I’m fluent at Javascript, and had a recent experience with Perl working on an installation automation project for a few months, catching Ruby was quite easy. As Ofer observed, Ruby seems to be a really nice language, but I have some problems adapting to Watir. For example, it took me sometime to understand how Javascript code can be invoked from Watir, but now I know it is done using:</p>
<p><pre class="brush: ruby;">$browser.ie.Document.parentWindow.execScript(js_expression)</pre></p>
<p>At first, since I come from normal OO languages, I thought of creating a base <strong>ProductUnitTest</strong> class that derives from <strong>Watir::TestCase</strong>, and then, for each version or fix pack, we will create a <strong>VersionXXUnitTest</strong> class that will derive from <strong>ProductUnitTest</strong>. However, this doesn’t work well, since <strong>Test::Unit</strong> looks for all the included classes that derived from <strong>Test::Unit::TestCase</strong>, and since we would have to require <strong>ProductUnitTest</strong> in order to derived from it, <strong>Test::Unit</strong> will see two such class and will run the tests in <strong>ProductUnitTest</strong> twice – once for <strong>ProductUnitTest</strong>, and once for the derived <strong>VersionXXUnitTest</strong>.</p>
<p>Checking further, I came to the idea I have to use Ruby’s <strong>mixins</strong>, which is somewhat similar to Java’s interfaces, but more comfortable and easy to use, since Ruby is a dynamic language. So now, I define all basic tests and helper methods (like setup and teardown – see <a title="Handling browser on test start and end" href="http://splintor.wordpress.com/2008/07/23/handling-browser-on-test-start-and-end/">next post</a> for more details on this) in a module named <strong>ProductUnitTest</strong>, and then, for each version, I define a <strong>VersionXXUnitTest</strong> class that derive from <strong>Watir::TestCase</strong>, and then includes <strong>ProductUnitTest</strong> so all the tests (and helper methods) are there, but only invoked once, for <strong>VersionXXUnitTest</strong>.</p>
<p>To conclude, Watir seems like a very nice framework to test our web application, and this will probably solve problem #2 above. I plan to broaden its use when we start building our next fix pack, where we have specific things we need to fix, and whenever we fix something, we should write a unit test for it right away. This is easier then writing and maintaining unit tests for an entirely new version that keeps changing. I hope that once our developers get used to it and see how it can help integration and acceptance tests they will see its value and overcome problem #1 above. I still need to find a good way to bypass problem #3.</p>
<p>I already showed what I did to Amit from QA, and she really liked it and said it might be useful for them as well.</p>
<p>P.S.<br />
Another nice benefit of learning Ruby is that now I better understand some of the design made by the <a title="Prototype JavaScript Framework" href="http://www.prototypejs.org/">Prototype</a> team members, which were clearly thinking in Ruby, as they are using Ruby on Rails.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/splintor.wordpress.com/63/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/splintor.wordpress.com/63/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/splintor.wordpress.com/63/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/splintor.wordpress.com/63/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/splintor.wordpress.com/63/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/splintor.wordpress.com/63/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/splintor.wordpress.com/63/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/splintor.wordpress.com/63/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/splintor.wordpress.com/63/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/splintor.wordpress.com/63/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/splintor.wordpress.com/63/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/splintor.wordpress.com/63/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/splintor.wordpress.com/63/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/splintor.wordpress.com/63/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/splintor.wordpress.com/63/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/splintor.wordpress.com/63/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=splintor.wordpress.com&amp;blog=19863&amp;post=63&amp;subd=splintor&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://splintor.wordpress.com/2008/06/24/watir-first-impressions/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/ca37c6979f9cd4860aaeb66cd6a61081?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">splintor</media:title>
		</media:content>
	</item>
		<item>
		<title>Macro to add a hyperlink to a mail message</title>
		<link>http://splintor.wordpress.com/2008/02/13/macro-to-add-a-hyperlink-to-a-mail-message/</link>
		<comments>http://splintor.wordpress.com/2008/02/13/macro-to-add-a-hyperlink-to-a-mail-message/#comments</comments>
		<pubDate>Tue, 12 Feb 2008 22:19:42 +0000</pubDate>
		<dc:creator>splintor</dc:creator>
				<category><![CDATA[Office]]></category>
		<category><![CDATA[Outlook]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[VBA]]></category>
		<category><![CDATA[Word]]></category>

		<guid isPermaLink="false">http://splintor.wordpress.com/2008/02/13/macro-to-add-a-hyperlink-to-a-mail-message/</guid>
		<description><![CDATA[Today I wrote a mail to someone and wanted to add several links. It always annoyed me that Office&#8217;s Add Hyperlink is so bloated it takes some time to open, and even more time to switch back to it from another application, where all I wanted was to make the selected text link to the [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=splintor.wordpress.com&amp;blog=19863&amp;post=62&amp;subd=splintor&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Today I wrote a mail to someone and wanted to add several links. It always annoyed me that Office&#8217;s Add Hyperlink is so bloated it takes some time to open, and even more time to switch back to it from another application, where all I wanted was to make the selected text link to the URL I had in my clipboard. So I set out to write a macro that did it.</p>
<p>Since Outlook has no macro recorder, I started searching Outlook&#8217;s Object Browser and discovered that there is no method to add a hyperlink or to get the content of the clipboard. So I borrowed the &#8220;Getting clipboard content&#8221; functionality from a VBS script I already had, and I turned to Word to record a macro that adds a hyperlink to the selected text. Once I had this Word macro, I found out I can use ActiveInspector.WordEditor to issue the Word macro I created.</p>
<p>The final macro result is this:<br />
<pre class="brush: vb;">Public Sub AddLinkFromClipboard()
    If ActiveInspector.EditorType = olEditorText Then
        MsgBox &quot;Can't add links to textual mail&quot;
        Exit Sub
    End If
    Dim objHTM As Object
    Dim ClipboardData As String
    Dim doc As Object
    Dim sel As Object
    Set objHTM = CreateObject(&quot;htmlfile&quot;)
    ClipboardData = objHTM.ParentWindow.ClipboardData.GetData(&quot;text&quot;)
    Set doc = ActiveInspector.WordEditor
    Set sel = doc.Application.Selection
    doc.Hyperlinks.Add Anchor:=sel.Range, _
        Address:=ClipboardData, _
        SubAddress:=&quot;&quot;, _
        ScreenTip:=&quot;&quot;, _
        TextToDisplay:=sel.Text
End Sub</pre></p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/splintor.wordpress.com/62/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/splintor.wordpress.com/62/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/splintor.wordpress.com/62/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/splintor.wordpress.com/62/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/splintor.wordpress.com/62/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/splintor.wordpress.com/62/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/splintor.wordpress.com/62/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/splintor.wordpress.com/62/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/splintor.wordpress.com/62/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/splintor.wordpress.com/62/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/splintor.wordpress.com/62/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/splintor.wordpress.com/62/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/splintor.wordpress.com/62/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/splintor.wordpress.com/62/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/splintor.wordpress.com/62/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/splintor.wordpress.com/62/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=splintor.wordpress.com&amp;blog=19863&amp;post=62&amp;subd=splintor&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://splintor.wordpress.com/2008/02/13/macro-to-add-a-hyperlink-to-a-mail-message/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/ca37c6979f9cd4860aaeb66cd6a61081?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">splintor</media:title>
		</media:content>
	</item>
		<item>
		<title>Xobni feedback: Missing tooltips</title>
		<link>http://splintor.wordpress.com/2008/01/16/xobni-feedback-missing-tooltips/</link>
		<comments>http://splintor.wordpress.com/2008/01/16/xobni-feedback-missing-tooltips/#comments</comments>
		<pubDate>Wed, 16 Jan 2008 21:25:52 +0000</pubDate>
		<dc:creator>splintor</dc:creator>
				<category><![CDATA[UI]]></category>
		<category><![CDATA[Usability]]></category>
		<category><![CDATA[Xobni]]></category>

		<guid isPermaLink="false">http://splintor.wordpress.com/2008/01/16/xobni-feedback-missing-tooltips/</guid>
		<description><![CDATA[In various areas in the sidebar, when there is not enough space for a string, ellipsis is used, but when I hover over it with my mouse, I expect to see a tooltip showing me the entire string, so I don&#8217;t have to make room for it to see what the string is. This is [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=splintor.wordpress.com&amp;blog=19863&amp;post=61&amp;subd=splintor&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>In various areas in the sidebar, when there is not enough space for a string, ellipsis is used, but when I hover over it with my mouse, I expect to see a tooltip showing me the entire string, so I don&#8217;t have to make room for it to see what the string is. This is common UI pattern, which is missing in Xobni.</p>
<p>Sample for such problems can be see in panes titles (such as &#8220;People connected to&#8230;&#8221;, &#8220;Conversation with&#8230;&#8221;), messages subjects and some more.</p>
<p>Xobni makes excessive use of &#8220;what&#8217;s this&#8221; tooltips at the upper part of the sidebar, explaining each of the items, and also when the links for a person (&#8220;schedule time with&#8230;&#8221;, &#8220;e-mail&#8230;&#8221;) are truncated in a narrow sidebar, the tooltip shows their full text, but that&#8217;s less important. The count in the end of a pane title, or a message&#8217;s full subject is much more important, and for this, Xobni fail to show tooltips.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/splintor.wordpress.com/61/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/splintor.wordpress.com/61/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/splintor.wordpress.com/61/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/splintor.wordpress.com/61/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/splintor.wordpress.com/61/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/splintor.wordpress.com/61/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/splintor.wordpress.com/61/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/splintor.wordpress.com/61/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/splintor.wordpress.com/61/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/splintor.wordpress.com/61/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/splintor.wordpress.com/61/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/splintor.wordpress.com/61/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/splintor.wordpress.com/61/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/splintor.wordpress.com/61/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/splintor.wordpress.com/61/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/splintor.wordpress.com/61/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=splintor.wordpress.com&amp;blog=19863&amp;post=61&amp;subd=splintor&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://splintor.wordpress.com/2008/01/16/xobni-feedback-missing-tooltips/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/ca37c6979f9cd4860aaeb66cd6a61081?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">splintor</media:title>
		</media:content>
	</item>
		<item>
		<title>Xobni feedback: Limited contact information</title>
		<link>http://splintor.wordpress.com/2008/01/16/xobni-feedback-limited-contact-information/</link>
		<comments>http://splintor.wordpress.com/2008/01/16/xobni-feedback-limited-contact-information/#comments</comments>
		<pubDate>Wed, 16 Jan 2008 19:58:32 +0000</pubDate>
		<dc:creator>splintor</dc:creator>
				<category><![CDATA[E-mail]]></category>
		<category><![CDATA[Xobni]]></category>

		<guid isPermaLink="false">http://splintor.wordpress.com/2008/01/16/xobni-feedback-limited-contact-information/</guid>
		<description><![CDATA[Xobni will only let you store one phone number per person. But what if someone has a work number, home number and a cell phone, and you decide what to use based of his daily schedule and the time of the day? It would be very convenient to be able to assign several number to [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=splintor.wordpress.com&amp;blog=19863&amp;post=60&amp;subd=splintor&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Xobni will only let you store one phone number per person. But what if someone has a work number, home number and a cell phone, and you decide what to use based of his daily schedule and the time of the day?</p>
<p>It would be very convenient to be able to assign several number to a person, and then, when this person is displayed in the Xobni side bar, all his numbers would be displayed, and you could choose what to use.</p>
<p>Another problem with person contact is that when you edit it and add a number, you loose the information Xobni collected from e-mails, so if you added a picture for a person, or mistakenly set a phone number for him, you have no way to ask Xobni to use the person contact details it gathered from e-mails.</p>
<p>There should be an option to tell Xobni to revert back to use data from e-mails, and also there should be a way to edit this information or to add data like picture without affecting this information.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/splintor.wordpress.com/60/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/splintor.wordpress.com/60/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/splintor.wordpress.com/60/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/splintor.wordpress.com/60/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/splintor.wordpress.com/60/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/splintor.wordpress.com/60/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/splintor.wordpress.com/60/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/splintor.wordpress.com/60/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/splintor.wordpress.com/60/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/splintor.wordpress.com/60/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/splintor.wordpress.com/60/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/splintor.wordpress.com/60/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/splintor.wordpress.com/60/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/splintor.wordpress.com/60/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/splintor.wordpress.com/60/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/splintor.wordpress.com/60/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=splintor.wordpress.com&amp;blog=19863&amp;post=60&amp;subd=splintor&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://splintor.wordpress.com/2008/01/16/xobni-feedback-limited-contact-information/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/ca37c6979f9cd4860aaeb66cd6a61081?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">splintor</media:title>
		</media:content>
	</item>
		<item>
		<title>Xobni feedback: Missing right-click menus</title>
		<link>http://splintor.wordpress.com/2008/01/16/xobni-feedback-missing-right-click-menus/</link>
		<comments>http://splintor.wordpress.com/2008/01/16/xobni-feedback-missing-right-click-menus/#comments</comments>
		<pubDate>Wed, 16 Jan 2008 19:49:46 +0000</pubDate>
		<dc:creator>splintor</dc:creator>
				<category><![CDATA[Outlook]]></category>
		<category><![CDATA[Xobni]]></category>

		<guid isPermaLink="false">http://splintor.wordpress.com/2008/01/16/xobni-feedback-missing-right-click-menus/</guid>
		<description><![CDATA[Although they bragged about adding right-click menu to the sidebar, I still miss having all the options from the relevant Outlook menu when I right click a message, a contact or an attachment. For example &#8211; If I see an attachment in the Xobni bottom panel, I&#8217;d like to be able to save it to [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=splintor.wordpress.com&amp;blog=19863&amp;post=59&amp;subd=splintor&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Although they bragged about adding right-click menu to the sidebar, I still miss having all the options from the relevant Outlook menu when I right click a message, a contact or an attachment.</p>
<p>For example &#8211; </p>
<ul>
<li>If I see an attachment in the Xobni bottom panel, I&#8217;d like to be able to save it to a file.</li>
<li>If I see someone name in the people pane, I&#8217;d like to be able to open it&#8217;s related Outlook contact.</li>
<li>If I see a message I&#8217;d like to be able to move it to a different folder (and also to know what folder it is currently in, but this is something for a separate post&#8230;)</li>
</ul>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/splintor.wordpress.com/59/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/splintor.wordpress.com/59/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/splintor.wordpress.com/59/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/splintor.wordpress.com/59/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/splintor.wordpress.com/59/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/splintor.wordpress.com/59/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/splintor.wordpress.com/59/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/splintor.wordpress.com/59/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/splintor.wordpress.com/59/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/splintor.wordpress.com/59/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/splintor.wordpress.com/59/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/splintor.wordpress.com/59/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/splintor.wordpress.com/59/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/splintor.wordpress.com/59/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/splintor.wordpress.com/59/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/splintor.wordpress.com/59/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=splintor.wordpress.com&amp;blog=19863&amp;post=59&amp;subd=splintor&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://splintor.wordpress.com/2008/01/16/xobni-feedback-missing-right-click-menus/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/ca37c6979f9cd4860aaeb66cd6a61081?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">splintor</media:title>
		</media:content>
	</item>
		<item>
		<title>Xobni feedback: Almost no options at all</title>
		<link>http://splintor.wordpress.com/2008/01/16/xobni-feedback-almost-no-options-at-all/</link>
		<comments>http://splintor.wordpress.com/2008/01/16/xobni-feedback-almost-no-options-at-all/#comments</comments>
		<pubDate>Wed, 16 Jan 2008 19:41:45 +0000</pubDate>
		<dc:creator>splintor</dc:creator>
				<category><![CDATA[Google]]></category>
		<category><![CDATA[X1]]></category>
		<category><![CDATA[Xobni]]></category>

		<guid isPermaLink="false">http://splintor.wordpress.com/2008/01/16/xobni-feedback-almost-no-options-at-all/</guid>
		<description><![CDATA[It looks like Xobni is following Google in many ways. The recent Gmail-like invitation is an obvious example. The problem is that they also follow Google line of &#8220;we know better than you how our software should behave, so we won&#8217;t let you configure anything&#8221; (I already ranted about it here and there). So currently, [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=splintor.wordpress.com&amp;blog=19863&amp;post=58&amp;subd=splintor&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>It looks like Xobni is following Google in many ways. The recent Gmail-like invitation is an obvious example. </p>
<p>The problem is that they also follow Google line of &#8220;we know better than you how our software should behave, so we won&#8217;t let you configure anything&#8221; (I already ranted about it <a href="http://splintor.wordpress.com/2007/04/18/email-indexing-moving-back-to-x1/">here</a> and <a href="http://splintor.wordpress.com/2007/03/20/office-picture-manager-and-other-programs/">there</a>).</p>
<p>So currently, Xobni doesn&#8217;t let you control what PST or folders will be indexed, and what times index should not work as you want your Outlook to be more responsive, etc.</p>
<p>It also doesn&#8217;t show you the current index status, so you don&#8217;t know if it finished going over all your mail, and I&#8217;m still not fully convinced about it&#8217;s search capabilities, and when I want to find something in my e-mail for sure, I still turn to X1. X1 also enables me to have advanced search such as all the e-mails sent by me which have &#8220;Xobni&#8221; in their subject. This can many times come handy, where just searching for &#8220;Xobni&#8221; isn&#8217;t good enough, as it brings too many results.</p>
<p>Xobni can really use an Advanced Search option</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/splintor.wordpress.com/58/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/splintor.wordpress.com/58/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/splintor.wordpress.com/58/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/splintor.wordpress.com/58/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/splintor.wordpress.com/58/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/splintor.wordpress.com/58/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/splintor.wordpress.com/58/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/splintor.wordpress.com/58/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/splintor.wordpress.com/58/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/splintor.wordpress.com/58/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/splintor.wordpress.com/58/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/splintor.wordpress.com/58/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/splintor.wordpress.com/58/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/splintor.wordpress.com/58/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/splintor.wordpress.com/58/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/splintor.wordpress.com/58/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=splintor.wordpress.com&amp;blog=19863&amp;post=58&amp;subd=splintor&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://splintor.wordpress.com/2008/01/16/xobni-feedback-almost-no-options-at-all/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/ca37c6979f9cd4860aaeb66cd6a61081?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">splintor</media:title>
		</media:content>
	</item>
	</channel>
</rss>
