<?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>gooli.org &#187; Tools</title>
	<atom:link href="http://www.gooli.org/blog/category/tools/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.gooli.org/blog</link>
	<description>on software development and related issues</description>
	<lastBuildDate>Tue, 31 Mar 2009 03:36:08 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Gvim 7.2 with Python 2.5/2.6 support Windows binaries</title>
		<link>http://www.gooli.org/blog/gvim-72-with-python-2526-support-windows-binaries/</link>
		<comments>http://www.gooli.org/blog/gvim-72-with-python-2526-support-windows-binaries/#comments</comments>
		<pubDate>Tue, 31 Mar 2009 03:33:28 +0000</pubDate>
		<dc:creator>gooli</dc:creator>
				<category><![CDATA[Python]]></category>
		<category><![CDATA[Tools]]></category>

		<guid isPermaLink="false">http://www.gooli.org/blog/?p=165</guid>
		<description><![CDATA[Using the excellent instructions at ShowMeDo Jack Atkinson, I built a version of both Gvim and Vim for Windows with support for Python 2.5 and for Python 2.6.
Python 2.4: Support is already built-in in Gvim 7.2
Python 2.5: Install Gvim 7.2 and replace vim.exe and gvim.exe with the files in gvim72python25.zip
Python 2.6: Install Gvim 7.2 and [...]]]></description>
			<content:encoded><![CDATA[<p>Using the excellent instructions at <a href="http://showmedo.com/videos/video?name=1850000&amp;fromSeriesID=185">ShowMeDo</a> Jack Atkinson, I built a version of both Gvim and Vim for Windows with support for Python 2.5 and for Python 2.6.</p>
<p><strong>Python 2.4</strong>: Support is already built-in in Gvim 7.2</p>
<p><strong>Python 2.5</strong>: Install <a href="http://www.vim.org/download.php#pc">Gvim 7.2</a> and replace vim.exe and gvim.exe with the files in <a href="/tools/vim/gvim72python25.zip">gvim72python25.zip</a></p>
<p><strong>Python 2.6</strong>: Install <a href="http://www.vim.org/download.php#pc">Gvim 7.2</a> and replace vim.exe and gvim.exe with the files in <a href="/tools/vim/gvim72python26.zip">gvim72python26.zip</a></p>
<p><strong>Python 3.1</strong>: I wasn&#8217;t able to build Gvim 7.2 with Python 3.1 (most probably due to the backwards incompatible changes in Python 3)</p>
<p>To determine what version of Python your Gvim installation supports use the following command in Gvim:</p>
<p><code>python import sys; print sys.version</code></p>
<!-- Social Bookmarks BEGIN -->
<div class="social_bookmark">
<a class="social_img" onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://del.icio.us/post?url=http://www.gooli.org/blog/gvim-72-with-python-2526-support-windows-binaries/&amp;title=Gvim+7.2+with+Python+2.5%2F2.6+support+Windows+binaries" title="Add 'Gvim 7.2 with Python 2.5/2.6 support Windows binaries' to Del.icio.us"><img src="http://gooli.org/blog/wp-content/plugins/social_bookmarks/delicious.png" title="Add 'Gvim 7.2 with Python 2.5/2.6 support Windows binaries' to Del.icio.us" alt="Add 'Gvim 7.2 with Python 2.5/2.6 support Windows binaries' to Del.icio.us" /></a>
<a class="social_img" onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://digg.com/submit?phase=2&amp;url=http://www.gooli.org/blog/gvim-72-with-python-2526-support-windows-binaries/&amp;title=Gvim+7.2+with+Python+2.5%2F2.6+support+Windows+binaries" title="Add 'Gvim 7.2 with Python 2.5/2.6 support Windows binaries' to digg"><img src="http://gooli.org/blog/wp-content/plugins/social_bookmarks/digg.png" title="Add 'Gvim 7.2 with Python 2.5/2.6 support Windows binaries' to digg" alt="Add 'Gvim 7.2 with Python 2.5/2.6 support Windows binaries' to digg" /></a>
<a class="social_img" onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.technorati.com/faves?add=http://www.gooli.org/blog/gvim-72-with-python-2526-support-windows-binaries/" title="Add 'Gvim 7.2 with Python 2.5/2.6 support Windows binaries' to Technorati"><img src="http://gooli.org/blog/wp-content/plugins/social_bookmarks/technorati.png" title="Add 'Gvim 7.2 with Python 2.5/2.6 support Windows binaries' to Technorati" alt="Add 'Gvim 7.2 with Python 2.5/2.6 support Windows binaries' to Technorati" /></a>
</div>
<!-- Social Bookmarks END -->
]]></content:encoded>
			<wfw:commentRss>http://www.gooli.org/blog/gvim-72-with-python-2526-support-windows-binaries/feed/</wfw:commentRss>
		<slash:comments>22</slash:comments>
		</item>
		<item>
		<title>Disable scroll wheel clicking in Firefox</title>
		<link>http://www.gooli.org/blog/disable-scroll-wheel-clicking-in-firefox/</link>
		<comments>http://www.gooli.org/blog/disable-scroll-wheel-clicking-in-firefox/#comments</comments>
		<pubDate>Thu, 14 Aug 2008 07:47:01 +0000</pubDate>
		<dc:creator>gooli</dc:creator>
				<category><![CDATA[Tools]]></category>

		<guid isPermaLink="false">http://www.gooli.org/blog/disable-scroll-wheel-clicking-in-firefox/</guid>
		<description><![CDATA[I have one of those Microsoft mice here at work and its wheel is quite
light to the touch. It is so light in fact, that I often click it while
scrolling. By default, clicking the scroll wheel in Firefox puts it
into scrolling mode, showing this icon:

Now when you move the mouse up and down, the page [...]]]></description>
			<content:encoded><![CDATA[<p>I have one of those Microsoft mice here at work and its wheel is quite<br />
light to the touch. It is so light in fact, that I often click it while<br />
scrolling. By default, clicking the scroll wheel in Firefox puts it<br />
into scrolling mode, showing this icon:<br />
<img style="max-width: 800px;" src="http://gooli.org/blog/wp-content/uploads/2008/08/scrolling-icon.png" alt="" /><br />
Now when you move the mouse up and down, the page will scroll.</p>
<p>That is so annoying!</p>
<p>It took me over 20 minutes of Googling to find how to disable that feature, so I&#8217;m documenting it here.</p>
<p>The option that controls it in Firefox is Tools &gt; Options &gt; Advanced &gt; General &gt; Browsing &gt; Use autoscrolling.</p>
<p><img style="max-width: 800px;" src="http://gooli.org/blog/wp-content/uploads/2008/08/firefox-options.png" alt="" /></p>
<p>Apparently &#8220;auto scrolling&#8221; is the name of this obscure feature, which is now forever disabled on all my machines.</p>
<!-- Social Bookmarks BEGIN -->
<div class="social_bookmark">
<a class="social_img" onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://del.icio.us/post?url=http://www.gooli.org/blog/disable-scroll-wheel-clicking-in-firefox/&amp;title=Disable+scroll+wheel+clicking+in+Firefox" title="Add 'Disable scroll wheel clicking in Firefox' to Del.icio.us"><img src="http://gooli.org/blog/wp-content/plugins/social_bookmarks/delicious.png" title="Add 'Disable scroll wheel clicking in Firefox' to Del.icio.us" alt="Add 'Disable scroll wheel clicking in Firefox' to Del.icio.us" /></a>
<a class="social_img" onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://digg.com/submit?phase=2&amp;url=http://www.gooli.org/blog/disable-scroll-wheel-clicking-in-firefox/&amp;title=Disable+scroll+wheel+clicking+in+Firefox" title="Add 'Disable scroll wheel clicking in Firefox' to digg"><img src="http://gooli.org/blog/wp-content/plugins/social_bookmarks/digg.png" title="Add 'Disable scroll wheel clicking in Firefox' to digg" alt="Add 'Disable scroll wheel clicking in Firefox' to digg" /></a>
<a class="social_img" onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.technorati.com/faves?add=http://www.gooli.org/blog/disable-scroll-wheel-clicking-in-firefox/" title="Add 'Disable scroll wheel clicking in Firefox' to Technorati"><img src="http://gooli.org/blog/wp-content/plugins/social_bookmarks/technorati.png" title="Add 'Disable scroll wheel clicking in Firefox' to Technorati" alt="Add 'Disable scroll wheel clicking in Firefox' to Technorati" /></a>
</div>
<!-- Social Bookmarks END -->
]]></content:encoded>
			<wfw:commentRss>http://www.gooli.org/blog/disable-scroll-wheel-clicking-in-firefox/feed/</wfw:commentRss>
		<slash:comments>21</slash:comments>
		</item>
		<item>
		<title>Wrong keyboard layout</title>
		<link>http://www.gooli.org/blog/wrong-keyboard-layout/</link>
		<comments>http://www.gooli.org/blog/wrong-keyboard-layout/#comments</comments>
		<pubDate>Mon, 26 May 2008 08:16:44 +0000</pubDate>
		<dc:creator>gooli</dc:creator>
				<category><![CDATA[Tools]]></category>

		<guid isPermaLink="false">http://www.gooli.org/blog/wrong-keyboard-layout/</guid>
		<description><![CDATA[How many times have you typed an entire URL looking at your keyboard only to lift your eyes and see that you&#8217;ve used the wrong keyboard layout? How many times have you typed your email into some obscure form on the internet only to find that you&#8217;ve typed some unintelligible gibberish in Hebrew, Russian or [...]]]></description>
			<content:encoded><![CDATA[<p>How many times have you typed an entire URL looking at your keyboard only to lift your eyes and see that you&#8217;ve used the wrong keyboard layout? How many times have you typed your email into some obscure form on the internet only to find that you&#8217;ve typed some unintelligible gibberish in Hebrew, Russian or Farsi?</p>
<p>Well, no more! <a href="http://www.gooli.org/blog/" target="_blank">Recaps</a>, that tiny utility that lets you switch your keyboard layout using the almost forgotten <span style="font-weight: bold">Capslock</span> key, can now fix text you&#8217;ve typed with the wrong language selected. Just hit <span style="font-weight: bold">Ctrl-Capslock</span> as soon as you discover your mistake and the text will be replaced with what you actually intended to type. I&#8217;ve only tested it with Hebrew and Russian, the languages I personally use on a regular basis, but it should work with any language supported by Windows. Let me know if it doesn&#8217;t.</p>
<p><a href="http://technorati.com/tag/layout" class="performancingtags" rel="tag"></a></p>
<!-- Social Bookmarks BEGIN -->
<div class="social_bookmark">
<a class="social_img" onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://del.icio.us/post?url=http://www.gooli.org/blog/wrong-keyboard-layout/&amp;title=Wrong+keyboard+layout" title="Add 'Wrong keyboard layout' to Del.icio.us"><img src="http://gooli.org/blog/wp-content/plugins/social_bookmarks/delicious.png" title="Add 'Wrong keyboard layout' to Del.icio.us" alt="Add 'Wrong keyboard layout' to Del.icio.us" /></a>
<a class="social_img" onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://digg.com/submit?phase=2&amp;url=http://www.gooli.org/blog/wrong-keyboard-layout/&amp;title=Wrong+keyboard+layout" title="Add 'Wrong keyboard layout' to digg"><img src="http://gooli.org/blog/wp-content/plugins/social_bookmarks/digg.png" title="Add 'Wrong keyboard layout' to digg" alt="Add 'Wrong keyboard layout' to digg" /></a>
<a class="social_img" onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.technorati.com/faves?add=http://www.gooli.org/blog/wrong-keyboard-layout/" title="Add 'Wrong keyboard layout' to Technorati"><img src="http://gooli.org/blog/wp-content/plugins/social_bookmarks/technorati.png" title="Add 'Wrong keyboard layout' to Technorati" alt="Add 'Wrong keyboard layout' to Technorati" /></a>
</div>
<!-- Social Bookmarks END -->
]]></content:encoded>
			<wfw:commentRss>http://www.gooli.org/blog/wrong-keyboard-layout/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>A very simple Win+R enhancement</title>
		<link>http://www.gooli.org/blog/a-very-simple-winr-enhancement/</link>
		<comments>http://www.gooli.org/blog/a-very-simple-winr-enhancement/#comments</comments>
		<pubDate>Mon, 07 Jan 2008 11:26:47 +0000</pubDate>
		<dc:creator>gooli</dc:creator>
				<category><![CDATA[Tools]]></category>

		<guid isPermaLink="false">http://www.gooli.org/blog/a-very-simple-winr-enhancement/</guid>
		<description><![CDATA[I use the Win+R combination to run almost all the applications I use. Hit Win+R, type firefox, and Firefox runs. Hit Win+R, type winword, and Word starts. Hit Win+R&#8230;, well you get the idea.
The Run dialog is great to quickly access applications you use, but it&#8217;s only usable for programs that put their folder in [...]]]></description>
			<content:encoded><![CDATA[<p>I use the Win+R combination to run almost all the applications I use. Hit Win+R, type firefox, and Firefox runs. Hit Win+R, type winword, and Word starts. Hit Win+R&#8230;, well you get the idea.</p>
<p>The Run dialog is great to quickly access applications you use, but it&#8217;s only usable for programs that put their folder in the PATH environment variable, which not all programs do. I&#8217;ve been adding programs I liked to the PATH for years when a friend of mine showed me a neat trick. You create a folder called Shortcuts somewhere (say C:\Shortcuts) and put it <em>at the start</em> of your PATH environment variable and then create shortcuts to your favorite programs in that folder. All those shortcuts are now available to you via using Win+R. A nice bonus is the fact that you can name the shortcuts any way you like. I usually have a www.lnk file pointing to Firefox, note.lnk pointing to Notepad and word.lnk pointing to Word.</p>
<p>There&#8217;s only one thing missing here to make this trick into an fully featured program launcher. We need a way to quickly create shortcuts to programs, preferably by right-clicking on them in Windows Explorer. You can do that without installing anything using a couple of obscure Windows features &#8211; the <a href="http://support.microsoft.com/kb/310270">Send To</a> menu in the right-click menu of each file and the fact that Windows can run *.vbs files with VBScript code in it using something called <a href="http://en.wikipedia.org/wiki/Windows_Script_Host">WSH</a>.</p>
<p>Here&#8217;s the source of a script that creates a link to whichever was passed to it in the command line (executable, folder, etc.).</p>
<div class="ch_code_container" style="font-family: monospace;height:300px;">SHORTCUTS_PATH = <span style="color: #ff0000;">&quot;C:\Shortcuts&quot;</span></p>
<p><span style="color: #b1b100;">If</span> WScript.<span style="color: #66cc66;">Arguments</span>.<span style="color: #b1b100;">Count</span> &lt; <span style="color: #cc66cc;">1</span> <span style="color: #b1b100;">Then</span><br />
&nbsp; &nbsp; WScript.<span style="color: #66cc66;">Echo</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;Missing parameters&quot;</span><span style="color: #66cc66;">&#41;</span><br />
<span style="color: #b1b100;">Else</span><br />
&nbsp; &nbsp; <span style="color: #808080;">&#8216; create shorcut name</span><br />
&nbsp; &nbsp; commandPath = WScript.<span style="color: #66cc66;">Arguments</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#41;</span><br />
&nbsp; &nbsp; dot = <span style="color: #b1b100;">InStrRev</span><span style="color: #66cc66;">&#40;</span>commandPath, <span style="color: #ff0000;">&quot;.&quot;</span><span style="color: #66cc66;">&#41;</span><br />
&nbsp; &nbsp; <span style="color: #b1b100;">If</span> dot = <span style="color: #cc66cc;">0</span> <span style="color: #b1b100;">Then</span> dot = <span style="color: #b1b100;">Len</span><span style="color: #66cc66;">&#40;</span>commandPath<span style="color: #66cc66;">&#41;</span><br />
&nbsp; &nbsp; slash = <span style="color: #b1b100;">InStrRev</span><span style="color: #66cc66;">&#40;</span>commandPath, <span style="color: #ff0000;">&quot;\&quot;</span><span style="color: #66cc66;">&#41;</span><br />
&nbsp; &nbsp; <span style="color: #b1b100;">If</span> slash = <span style="color: #cc66cc;">0</span> <span style="color: #b1b100;">Then</span> slash = <span style="color: #cc66cc;">1</span><br />
&nbsp; &nbsp; commandDir = <span style="color: #b1b100;">Mid</span><span style="color: #66cc66;">&#40;</span>commandPath, <span style="color: #cc66cc;">1</span>, slash<span style="color: #cc66cc;">-1</span><span style="color: #66cc66;">&#41;</span><br />
&nbsp; &nbsp; shortcutName = <span style="color: #b1b100;">Mid</span><span style="color: #66cc66;">&#40;</span>commandPath, slash<span style="color: #cc66cc;">+1</span>, dot-slash<span style="color: #cc66cc;">-1</span><span style="color: #66cc66;">&#41;</span></p>
<p>&nbsp; &nbsp; <span style="color: #808080;">&#8216; ask for shortcut name</span><br />
&nbsp; &nbsp; shortcutName = <span style="color: #b1b100;">InputBox</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;Enter shortcut name&quot;</span>, <span style="color: #ff0000;">&quot;Shortcut&quot;</span>, shortcutName<span style="color: #66cc66;">&#41;</span></p>
<p>&nbsp; &nbsp; <span style="color: #808080;">&#8216; create shortcut</span><br />
&nbsp; &nbsp; shortcutPath = SHORTCUTS_PATH &amp; <span style="color: #ff0000;">&quot;\&quot;</span> &amp; shortcutName &amp; <span style="color: #ff0000;">&quot;.lnk&quot;</span><br />
&nbsp; &nbsp; <span style="color: #b1b100;">Set</span> WshShell = WScript.<span style="color: #b1b100;">CreateObject</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;WScript.Shell&quot;</span><span style="color: #66cc66;">&#41;</span><br />
&nbsp; &nbsp; <span style="color: #b1b100;">Set</span> oShellLink = WshShell.<span style="color: #66cc66;">CreateShortcut</span><span style="color: #66cc66;">&#40;</span>shortcutPath<span style="color: #66cc66;">&#41;</span><br />
&nbsp; &nbsp; oShellLink.<span style="color: #66cc66;">TargetPath</span> = commandPath<br />
&nbsp; &nbsp; oShellLink.<span style="color: #66cc66;">WindowStyle</span> = <span style="color: #cc66cc;">1</span><br />
&nbsp; &nbsp; oShellLink.<span style="color: #66cc66;">IconLocation</span> = commandPath &amp; <span style="color: #ff0000;">&quot;, 0&quot;</span><br />
&nbsp; &nbsp; oShellLink.<span style="color: #66cc66;">WorkingDirectory</span> = commandDir<br />
&nbsp; &nbsp; oShellLink.<span style="color: #66cc66;">Save</span><br />
<span style="color: #b1b100;">End</span> <span style="color: #b1b100;">If</span></div>
<p>The Send To menu is actually a folder located at C:\Documents and Settings\&lt;YourUser&gt;\SendTo. This folder contains links to various programs and you can add shortcuts to your own programs there. When you right-click a file, and choose one of the Send To items, the corresponding program is called, and given the name of the file you right-clicked as a command line parameter. So, if you put a link to the script above in the Send To folder, you&#8217;ll be able to easily create links in the C:\Shortcuts folder.</p>
<p>In case you lost me somewhere along the way, and in case I ever need to set this up myself again, here are the instructions to set things up:</p>
<ol>
<li>Create C:\Shortcuts</li>
<li>Create C:\Shortcuts\create_shortcut.vbs and paste the above code into it.</li>
<li>Add C:\Shortcuts <em>to the start</em> of your PATH environment variable (Win+Pause &gt; Advanced &gt; Environment Variables).</li>
<li>Hit Win+R, type sendto, hit Enter. That should get you to your Send To folder.</li>
<li>Create a shortcut here to C:\Shortcuts\create_shortcut.vbs and call it Shortcuts.</li>
</ol>
<p>To add a program to the launcher:</p>
<ol>
<li>Right click a program or a folder (you can do it even on programs in your Start Menu).</li>
<li>Send To &gt; Shortcuts.</li>
<li>In the dialog change the shortcut name to something short and catchy.</li>
<li>Test it : Hit Win+R, type the shortcut name and hit Enter.</li>
</ol>
<!-- Social Bookmarks BEGIN -->
<div class="social_bookmark">
<a class="social_img" onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://del.icio.us/post?url=http://www.gooli.org/blog/a-very-simple-winr-enhancement/&amp;title=A+very+simple+Win%2BR+enhancement" title="Add 'A very simple Win+R enhancement' to Del.icio.us"><img src="http://gooli.org/blog/wp-content/plugins/social_bookmarks/delicious.png" title="Add 'A very simple Win+R enhancement' to Del.icio.us" alt="Add 'A very simple Win+R enhancement' to Del.icio.us" /></a>
<a class="social_img" onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://digg.com/submit?phase=2&amp;url=http://www.gooli.org/blog/a-very-simple-winr-enhancement/&amp;title=A+very+simple+Win%2BR+enhancement" title="Add 'A very simple Win+R enhancement' to digg"><img src="http://gooli.org/blog/wp-content/plugins/social_bookmarks/digg.png" title="Add 'A very simple Win+R enhancement' to digg" alt="Add 'A very simple Win+R enhancement' to digg" /></a>
<a class="social_img" onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.technorati.com/faves?add=http://www.gooli.org/blog/a-very-simple-winr-enhancement/" title="Add 'A very simple Win+R enhancement' to Technorati"><img src="http://gooli.org/blog/wp-content/plugins/social_bookmarks/technorati.png" title="Add 'A very simple Win+R enhancement' to Technorati" alt="Add 'A very simple Win+R enhancement' to Technorati" /></a>
</div>
<!-- Social Bookmarks END -->
]]></content:encoded>
			<wfw:commentRss>http://www.gooli.org/blog/a-very-simple-winr-enhancement/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Right to left (BiDi) support in Firefox</title>
		<link>http://www.gooli.org/blog/right-to-left-bidi-support-in-firefox-3/</link>
		<comments>http://www.gooli.org/blog/right-to-left-bidi-support-in-firefox-3/#comments</comments>
		<pubDate>Mon, 31 Dec 2007 15:46:12 +0000</pubDate>
		<dc:creator>gooli</dc:creator>
				<category><![CDATA[Tools]]></category>

		<guid isPermaLink="false">http://www.gooli.org/blog/right-to-left-bidi-support-in-firefox-3/</guid>
		<description><![CDATA[Whenever I install Firefox on a new computer, I find myself hitting Ctrl-Shift-X to switch the text box direction to now avail. Unfortunately the way to turn this option on is quite hidden.
You have to navigate to about:config, type bidi in the filter box, and double click the line that says bidi.browser.ui. That will set [...]]]></description>
			<content:encoded><![CDATA[<p>Whenever I install Firefox on a new computer, I find myself hitting Ctrl-Shift-X to switch the text box direction to now avail. Unfortunately the way to turn this option on is quite hidden.</p>
<p>You have to navigate to <a href="about:config">about:config</a>, type <em>bidi</em> in the filter box, and double click the line that says <em>bidi.browser.ui</em>. That will set its value to <em>true</em>. All you have to do now is restart Firefox and the View-&gt;Switch Page Direction and Edit-&gt;Switch Text Direction menu items will be added along with the Ctrl-Shift-X shortcut.</p>
<p>Hope this helps some poor soul someday.</p>
<!-- Social Bookmarks BEGIN -->
<div class="social_bookmark">
<a class="social_img" onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://del.icio.us/post?url=http://www.gooli.org/blog/right-to-left-bidi-support-in-firefox-3/&amp;title=Right+to+left+%28BiDi%29+support+in+Firefox" title="Add 'Right to left (BiDi) support in Firefox' to Del.icio.us"><img src="http://gooli.org/blog/wp-content/plugins/social_bookmarks/delicious.png" title="Add 'Right to left (BiDi) support in Firefox' to Del.icio.us" alt="Add 'Right to left (BiDi) support in Firefox' to Del.icio.us" /></a>
<a class="social_img" onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://digg.com/submit?phase=2&amp;url=http://www.gooli.org/blog/right-to-left-bidi-support-in-firefox-3/&amp;title=Right+to+left+%28BiDi%29+support+in+Firefox" title="Add 'Right to left (BiDi) support in Firefox' to digg"><img src="http://gooli.org/blog/wp-content/plugins/social_bookmarks/digg.png" title="Add 'Right to left (BiDi) support in Firefox' to digg" alt="Add 'Right to left (BiDi) support in Firefox' to digg" /></a>
<a class="social_img" onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.technorati.com/faves?add=http://www.gooli.org/blog/right-to-left-bidi-support-in-firefox-3/" title="Add 'Right to left (BiDi) support in Firefox' to Technorati"><img src="http://gooli.org/blog/wp-content/plugins/social_bookmarks/technorati.png" title="Add 'Right to left (BiDi) support in Firefox' to Technorati" alt="Add 'Right to left (BiDi) support in Firefox' to Technorati" /></a>
</div>
<!-- Social Bookmarks END -->
]]></content:encoded>
			<wfw:commentRss>http://www.gooli.org/blog/right-to-left-bidi-support-in-firefox-3/feed/</wfw:commentRss>
		<slash:comments>15</slash:comments>
		</item>
		<item>
		<title>Win32: GetFocus across process boundries</title>
		<link>http://www.gooli.org/blog/win32-getfocus-across-process-boundries/</link>
		<comments>http://www.gooli.org/blog/win32-getfocus-across-process-boundries/#comments</comments>
		<pubDate>Sat, 29 Dec 2007 18:10:55 +0000</pubDate>
		<dc:creator>gooli</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Tools]]></category>

		<guid isPermaLink="false">http://www.gooli.org/blog/win32-finding-the-focused-windows/</guid>
		<description><![CDATA[I&#8217;ve been using Miranda for all my chats for a few years now, since the time it was a nightmare to install and configure. The chief reason I like it is the fact that it supports Hebrew amazingly well, via the TabSRMM plugin. You can even set the right-to-left settings for the chat window on [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been using <a href="http://www.miranda-im.org/">Miranda</a> for all my chats for a few years now, since the time it was a nightmare to install and configure. The chief reason I like it is the fact that it supports Hebrew amazingly well, via the <a href="http://addons.miranda-im.org/details.php?action=viewfile&amp;id=1401">TabSRMM</a> plugin. You can even set the right-to-left settings for the chat window on a person-by-person basis.</p>
<p>However, the latest version of Miranda broke my language switching gizmo, <a href="http://www.gooli.org/blog/recaps/">Recaps</a>. Every once in a while the CapsLock key would stop switching the language in the Miranda chat window, and even restarting Recaps didn&#8217;t help. The basic thing Recaps does upon detecting that CapsLock has been pressed is send an <a href="http://msdn2.microsoft.com/en-us/library/ms632630.aspx">WM_INPUTLANGCHANGEREQUEST</a> message the the current foreground window, which is obtained via the <a href="http://msdn2.microsoft.com/en-us/library/ms633505.aspx">GetForegroundWindow</a> Win32 API function. Apparently I overlooked the fact that the MSDN specifically says the aforementioned message is sent to the window that <em>has the keyboard focus</em>, which I clear wasn&#8217;t doing. GetForegroundWindow just gets you the current top-level window, not the actual control that has the keyboard focus.</p>
<p>All I had to do was just replace the GetForegroundWindow call something that gets the window that has the focus and be done with it. And <a href="http://msdn2.microsoft.com/en-us/library/ms646294%28VS.85%29.aspx">GetFocus</a> seemed to be just what I needed. Only there was a catch:</p>
<blockquote><p>The <strong>GetFocus</strong> function retrieves the handle to the window that has the keyboard focus, <em>if the window is attached to the calling thread&#8217;s message queue</em>.</p></blockquote>
<p>That isn&#8217;t good enough of course as the whole point was finding out which window had the focus when that window belonged to a different application, running in a different process, in a different thread. There are <a href="http://www.codeguru.com/Cpp/W-P/system/processesmodules/article.php/c5767/">a few techniques</a> to inject code into a remote process, but they all require creating a separate DLL and tricking the target process into loading it either via <a href="http://msdn2.microsoft.com/en-us/library/ms644990.aspx">hooks</a> or using the <a href="http://www.codeguru.com/Cpp/W-P/system/processesmodules/article.php/c5767/">CreateRemoteThread/LoadLibrary</a> trick. I was getting ready to dive into that dark abyss when I stumbled upon the <a href="http://msdn2.microsoft.com/en-us/library/ms681956%28VS.85%29.aspx">AttachThreadInput</a> function:</p>
<blockquote><p>Windows created in different threads typically process input independently of each other. That is, they have their own input states (<em>focus</em>, active, capture windows, key state, queue status, and so on), and they are not synchronized with the input processing of other threads. By using the <strong>AttachThreadInput </strong>function, a thread can attach its input processing to another thread. This also allows threads to share their input states, so they can call the SetFocus function to set the keyboard focus to a window of a different thread. This also allows threads to get key-state information. These capabilities are not generally possible.</p></blockquote>
<p>So, all I had to do was call AttachThreadInput to connect my main UI thread to the thread responsible for the current foreground window, call GetFocus to find out which window has the focus, and then call AttachThreadInput again to give the control of the input back to the original thread.</p>
<p>Here&#8217;s the code to do that:</p>
<div class="ch_code_container" style="font-family: monospace;height:100%;">HWND RemoteGetFocus<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><br />
<span style="color: #000000;">&#123;</span><br />
&nbsp; &nbsp; HWND hwnd = GetForegroundWindow<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;<br />
&nbsp; &nbsp; DWORD remoteThreadId = GetWindowThreadProcessId<span style="color: #000000;">&#40;</span>hwnd, <span style="color: #0000ff;">NULL</span><span style="color: #000000;">&#41;</span>;<br />
&nbsp; &nbsp; DWORD currentThreadId = GetCurrentThreadId<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;<br />
&nbsp; &nbsp; AttachThreadInput<span style="color: #000000;">&#40;</span>remoteThreadId, currentThreadId, <span style="color: #0000ff;">TRUE</span><span style="color: #000000;">&#41;</span>;<br />
&nbsp; &nbsp; HWND focused = GetFocus<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;<br />
&nbsp; &nbsp; AttachThreadInput<span style="color: #000000;">&#40;</span>remoteThreadId, currentThreadId, <span style="color: #0000ff;">FALSE</span><span style="color: #000000;">&#41;</span>;<br />
&nbsp; &nbsp; <span style="color: #0000ff;">return</span> focused;<br />
<span style="color: #000000;">&#125;</span></div>
<p>This function will only work if called from a thread that has created a message queue, which is the case for a standard Win32 main thread that runs in a message loop.</p>
<p>Miranda and Recaps now play well together.</p>
<p>Yay!</p>
<!-- Social Bookmarks BEGIN -->
<div class="social_bookmark">
<a class="social_img" onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://del.icio.us/post?url=http://www.gooli.org/blog/win32-getfocus-across-process-boundries/&amp;title=Win32%3A+GetFocus+across+process+boundries" title="Add 'Win32: GetFocus across process boundries' to Del.icio.us"><img src="http://gooli.org/blog/wp-content/plugins/social_bookmarks/delicious.png" title="Add 'Win32: GetFocus across process boundries' to Del.icio.us" alt="Add 'Win32: GetFocus across process boundries' to Del.icio.us" /></a>
<a class="social_img" onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://digg.com/submit?phase=2&amp;url=http://www.gooli.org/blog/win32-getfocus-across-process-boundries/&amp;title=Win32%3A+GetFocus+across+process+boundries" title="Add 'Win32: GetFocus across process boundries' to digg"><img src="http://gooli.org/blog/wp-content/plugins/social_bookmarks/digg.png" title="Add 'Win32: GetFocus across process boundries' to digg" alt="Add 'Win32: GetFocus across process boundries' to digg" /></a>
<a class="social_img" onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.technorati.com/faves?add=http://www.gooli.org/blog/win32-getfocus-across-process-boundries/" title="Add 'Win32: GetFocus across process boundries' to Technorati"><img src="http://gooli.org/blog/wp-content/plugins/social_bookmarks/technorati.png" title="Add 'Win32: GetFocus across process boundries' to Technorati" alt="Add 'Win32: GetFocus across process boundries' to Technorati" /></a>
</div>
<!-- Social Bookmarks END -->
]]></content:encoded>
			<wfw:commentRss>http://www.gooli.org/blog/win32-getfocus-across-process-boundries/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Touch typing in multiple languages &#8211; Recaps</title>
		<link>http://www.gooli.org/blog/touch-typing-in-multiple-languages-recaps/</link>
		<comments>http://www.gooli.org/blog/touch-typing-in-multiple-languages-recaps/#comments</comments>
		<pubDate>Mon, 10 Dec 2007 10:55:02 +0000</pubDate>
		<dc:creator>gooli</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Tools]]></category>

		<guid isPermaLink="false">http://www.gooli.org/blog/touch-typing-in-multiple-languages-recaps/</guid>
		<description><![CDATA[I learned touch typing a long time ago. Since I spend most of my waking hours in front of a computer typing either text or code, touch typing is something I can&#8217;t live without. Sometimes however, I am faced with a daunting task of writing an email or a document in a mix of two [...]]]></description>
			<content:encoded><![CDATA[<p>I learned touch typing a long time ago. Since I spend most of my waking hours in front of a computer typing either text or code, touch typing is something I can&#8217;t live without. Sometimes however, I am faced with a daunting task of writing an email or a document in a mix of two languages. Technical documents in Hebrew for instance, usually contain quite a lot of English terms. I can touch type in Hebrew as well as I can in English, but when the time comes to switch between languages, that weird Alt-Shift combination really kills my flow. I might be nitpicking a bit here, but I can&#8217;t tell you how many times I pressed Shift-Alt instead of Alt-Shift and wound up in the application&#8217;s menu instead of changing the current language.<a href="http://gooli.org/blog/wp-content/uploads/2007/12/image1.png"><img style="border: 0px none ; margin: 5px;" alt="image" src="http://gooli.org/blog/wp-content/uploads/2007/12/image-thumb1.png" align="right" border="0" height="198" width="299" /></a></p>
<p>Then there&#8217;s the CapsLock key. I don&#8217;t think anybody uses it nowadays, and even the touch typists seem to just HOLD THE SHIFT WITH THEIR PINKY and type what needs to be in capital letters. I wrote a small program called <a href="http://www.gooli.org/blog/recaps">Recaps</a> a while ago that converts CapsLock into a language switching key. Now I can&#8217;t live without it. I find myself instinctively hitting CapsLock to switch languages never thinking about it, even on computers I didn&#8217;t install it on. Needless to say it&#8217;s one of the first things I install on a computer I need to work on.</p>
<p>I talked to an old friend of mine last night who said he was using Recaps and spreading it around but he was missing a feature. When there were more three or more languages installed on the computer, Recaps would just cycle through all of them, like Alt-Shift does. Most times however, you only use two languages at any given time, typically English and your native tongue, and only need to switch between these two.</p>
<p>Doing this in Win32 API was a bitch, but I finally got a tray icon and a small menu to work. The menu shows the list of languages currently installed on your computer with check boxes next to them. Hitting CapsLock now only cycles through the languages that are currently enabled and even saves the active languages between runs.</p>
<p>You can download source and binaries for the new 0.3 version from my <a href="http://www.gooli.org/blog/recaps">Recaps page</a>.</p>
<p>I&#8217;d love to know if anybody finds it as useful as I do.</p>
<!-- Social Bookmarks BEGIN -->
<div class="social_bookmark">
<a class="social_img" onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://del.icio.us/post?url=http://www.gooli.org/blog/touch-typing-in-multiple-languages-recaps/&amp;title=Touch+typing+in+multiple+languages+%26%238211%3B+Recaps" title="Add 'Touch typing in multiple languages &#8211; Recaps' to Del.icio.us"><img src="http://gooli.org/blog/wp-content/plugins/social_bookmarks/delicious.png" title="Add 'Touch typing in multiple languages &#8211; Recaps' to Del.icio.us" alt="Add 'Touch typing in multiple languages &#8211; Recaps' to Del.icio.us" /></a>
<a class="social_img" onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://digg.com/submit?phase=2&amp;url=http://www.gooli.org/blog/touch-typing-in-multiple-languages-recaps/&amp;title=Touch+typing+in+multiple+languages+%26%238211%3B+Recaps" title="Add 'Touch typing in multiple languages &#8211; Recaps' to digg"><img src="http://gooli.org/blog/wp-content/plugins/social_bookmarks/digg.png" title="Add 'Touch typing in multiple languages &#8211; Recaps' to digg" alt="Add 'Touch typing in multiple languages &#8211; Recaps' to digg" /></a>
<a class="social_img" onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.technorati.com/faves?add=http://www.gooli.org/blog/touch-typing-in-multiple-languages-recaps/" title="Add 'Touch typing in multiple languages &#8211; Recaps' to Technorati"><img src="http://gooli.org/blog/wp-content/plugins/social_bookmarks/technorati.png" title="Add 'Touch typing in multiple languages &#8211; Recaps' to Technorati" alt="Add 'Touch typing in multiple languages &#8211; Recaps' to Technorati" /></a>
</div>
<!-- Social Bookmarks END -->
]]></content:encoded>
			<wfw:commentRss>http://www.gooli.org/blog/touch-typing-in-multiple-languages-recaps/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Testuff &#8211; a test case management service</title>
		<link>http://www.gooli.org/blog/testuff-a-test-case-management-service/</link>
		<comments>http://www.gooli.org/blog/testuff-a-test-case-management-service/#comments</comments>
		<pubDate>Wed, 17 Oct 2007 13:41:24 +0000</pubDate>
		<dc:creator>gooli</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Marketing]]></category>
		<category><![CDATA[Testuff]]></category>
		<category><![CDATA[Tools]]></category>

		<guid isPermaLink="false">http://www.gooli.org/blog/testuff-a-test-case-management-service/</guid>
		<description><![CDATA[&#60;marketing&#62;
I haven&#8217;t posted too much here lately and for a good reason. Arik and I have been hard at work to release the first public beta of our test management service called Testuff. Developing software is hard enough when you have plenty of resources but when you are a one- or two-man shop with limited [...]]]></description>
			<content:encoded><![CDATA[<p>&lt;marketing&gt;</p>
<p><a href="http://gooli.org/blog/wp-content/uploads/2007/10/icon.jpg"><img src="http://gooli.org/blog/wp-content/uploads/2007/10/icon-thumb.jpg" style="border: 0px none " alt="icon" align="right" border="0" height="160" width="160" /></a>I haven&#8217;t posted too much here lately and for a good reason. Arik and I have been hard at work to release the first public beta of our test management service called <a href="http://www.testuff.com">Testuff</a>. Developing software is hard enough when you have plenty of resources but when you are a one- or two-man shop with limited funds it&#8217;s even harder. We&#8217;ve built Testuff to help small companies and <a href="http://en.wikipedia.org/wiki/Micro_ISV">mISV&#8217;s</a> like ourselves manage and run their software tests. We&#8217;ve based it on the <a href="http://en.wikipedia.org/wiki/Software_as_a_Service">SaaS</a> model so you don&#8217;t have to install any servers, but we also made a rich desktop client for it so you could enjoy a better user experience. If you&#8217;re doing any sort real development for actual, breathing clients, you should <a href="http://www.testuff.com/download">try it out</a>.</p>
<p>&lt;/marketing&gt;</p>
<p>It&#8217;s been a week since the public release and although we made some marketing efforts (like this post) we&#8217;re still not getting enough traffic to our site. Only a few people have actually downloaded and tried to use our application and I think there&#8217;s only one name on that list that I don&#8217;t know. I realize we should be doing more marketing and getting the word out to as many people as we can but I don&#8217;t seem to be able to get past my perfectionism. I&#8217;m looking at Testuff now and it is (aside from some bugs and quirks) a fine achievement. It is quite convenient, rather pretty and has some really cool features like recording the video of the application you&#8217;re testing so you could reproduce the bugs with ease. However, since I&#8217;ve been working on it for so long, I&#8217;ve gotten u sed to all the cool things by now and I am already cultivating a new vision in my mind. A cleaner interface, less features, a faster bug video recorder, an ability to email a test to your friends who could run it and report the recording of the bug directly and so on. I&#8217;m struggling because I&#8217;ve promised my partner I&#8217;d write emails to some key figures in the micro ISV world (people like <a href="http://47hats.com/">Bob Walsh</a>, <a href="http://www.ericsink.com/">Eric Sink</a>, <a href="http://www.joelonsoftware.com/">Joel Spolsky</a>, <a href="http://www.userscape.com/blog/">Ian Landsman</a> and <a href="http://successfulsoftware.net/">Andy Brice</a>). But how can I describe the wonders of Testuff to them when I&#8217;m already thinking about the next version and the one after it?</p>
<p>Another thing I&#8217;m worried about is the fact that although every developer and QA I&#8217;ve talked to was very excited about Testuff, very few have visited the site and tried it out, not to mention started using it on their own team. Price shouldn&#8217;t be an obstacle as we&#8217;re giving it out for free right now and I don&#8217;t think there is a lack of need for a service like this. Something is amiss however and I still haven&#8217;t figured out what it is.</p>
<p>I&#8217;d love to hear any thoughts you may have on the subject and any advice you might have. You&#8217;ll probably need to install Testuff to do that (Ha! Gotcha!) so you&#8217;d better head on to the <a href="http://www.testuff.com/download">Testuff download page</a>.</p>
<!-- Social Bookmarks BEGIN -->
<div class="social_bookmark">
<a class="social_img" onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://del.icio.us/post?url=http://www.gooli.org/blog/testuff-a-test-case-management-service/&amp;title=Testuff+%26%238211%3B+a+test+case+management+service" title="Add 'Testuff &#8211; a test case management service' to Del.icio.us"><img src="http://gooli.org/blog/wp-content/plugins/social_bookmarks/delicious.png" title="Add 'Testuff &#8211; a test case management service' to Del.icio.us" alt="Add 'Testuff &#8211; a test case management service' to Del.icio.us" /></a>
<a class="social_img" onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://digg.com/submit?phase=2&amp;url=http://www.gooli.org/blog/testuff-a-test-case-management-service/&amp;title=Testuff+%26%238211%3B+a+test+case+management+service" title="Add 'Testuff &#8211; a test case management service' to digg"><img src="http://gooli.org/blog/wp-content/plugins/social_bookmarks/digg.png" title="Add 'Testuff &#8211; a test case management service' to digg" alt="Add 'Testuff &#8211; a test case management service' to digg" /></a>
<a class="social_img" onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.technorati.com/faves?add=http://www.gooli.org/blog/testuff-a-test-case-management-service/" title="Add 'Testuff &#8211; a test case management service' to Technorati"><img src="http://gooli.org/blog/wp-content/plugins/social_bookmarks/technorati.png" title="Add 'Testuff &#8211; a test case management service' to Technorati" alt="Add 'Testuff &#8211; a test case management service' to Technorati" /></a>
</div>
<!-- Social Bookmarks END -->
]]></content:encoded>
			<wfw:commentRss>http://www.gooli.org/blog/testuff-a-test-case-management-service/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Copying tables to Excel</title>
		<link>http://www.gooli.org/blog/copying-tables-to-excel/</link>
		<comments>http://www.gooli.org/blog/copying-tables-to-excel/#comments</comments>
		<pubDate>Sun, 19 Aug 2007 12:15:09 +0000</pubDate>
		<dc:creator>gooli</dc:creator>
				<category><![CDATA[Marketing]]></category>
		<category><![CDATA[Tools]]></category>

		<guid isPermaLink="false">http://www.gooli.org/blog/copying-tables-to-excel/</guid>
		<description><![CDATA[About a month ago I saw a post on the JoS Business of Software&#160;about a piece of software called Kirix Strata.
&#8230; Strata lets you access and manipulate data from pretty much anywhere on the web.&#160; It&#8217;ll let you work with HTML tables, RSS Feeds and CSV files natively in tables.&#160; And then once you have [...]]]></description>
			<content:encoded><![CDATA[<p>About a month ago I saw a post on the <a href="http://discuss.joelonsoftware.com/?biz">JoS Business of Software</a>&nbsp;about a piece of software called <a href="http://www.kirix.com/">Kirix Strata</a>.</p>
<blockquote><p>&#8230; Strata lets you access and manipulate data from pretty much anywhere on the web.&nbsp; It&#8217;ll let you work with HTML tables, RSS Feeds and CSV files natively in tables.&nbsp; And then once you have the data, you can do all sorts of ad hoc analysis, such as creating calculations, sorting, filtering, creating queries and reports &#8212; similar to the kinds of things you might do with a desktop database or a spreadsheet.&nbsp;</p>
</blockquote>
<p>That sounded interesting enough, although I had no idea what it might be useful for, so I went to the site to see. It&#8217;s a nicely designed site, easy on the eyes and with very obvious access to two of the most important pieces : the screencast and the download. I watched the screencast, which was also very professionaly done and downloaded the software. The software itself has some usability quirks, but it&#8217;s a first public beta so we&#8217;ll forgive the folks.</p>
<p>But after going through all those steps I couldn&#8217;t figure out <em>what am I supposed to do with it</em>. I mean, the site is nice, the movie is well done, the program seems to be thought out, but why haven&#8217;t anybody tell me why whould I need a <em>specialty data browser</em>.</p>
<p>The list of benefits on the site didn&#8217;t help me either:</p>
<ul>
<li>Access Data From Anywhere
<li>Integrate Data From Across the Web
<li>Manipulate Data Quickly
<li>Create Reports Easily
<li>Customize and Extend</li>
</ul>
<p>Alright, so I can do all those cool things with data. What data? Why data? Why would I ever need to do something with data I find on the web? It&#8217;s not like&nbsp;the proposition&nbsp;doesn&#8217;t sound reasonable. We all like data, at least the geeks among us. We probably manipulate data everyday, and most of it comes from the web. But for the life of me, while reviewing the site and the application, I couldn&#8217;t come up with a single example.</p>
<p>Fast forward about three weeks and I wanted to do some research about the development outsource market. Specifically, I needed to know the number of active developers listed on <a href="http://www.rentacoder.com">www.rentacoder.com</a>. They have a nice <a href="http://www.rentacoder.info/2007-04-06/coders-by-country.aspx">statistics page</a>, but alas, it&#8217;s a table. Hmm.. how am I going to compute the sum of the &#8220;Coders with completed projects&#8221; column? </p>
<p>Finally I had a use for Kirix. I downloaded it again, installed it, browsed with it to the stats page and got the data I needed. And then a thought came to me. Wouldn&#8217;t it be much nicer if I could do that right from Firefox? All I needed was to copy the data from the table to Excel and I could do all the computing there in a familiar way.</p>
<p>A short search came up with <a href="http://dafizilla.sourceforge.net/table2clip/">Table2Clipboard</a>, a nifty Firefox extension that lets you copy an entire table or just a bunch of cells in a format that can be pasted into Excel (should work for OpenOffice Calc as well, though I haven&#8217;t tried).</p>
<p>Just hold Ctrl and select the cells you want to copy dragging the left mouse button. You can also use Shift+Click to select a range of cells without dragging.</p>
<p>When pasting to Excel, use the Edit &gt; Paste Special &gt; Paste as text command, otherwise Excel might not parse the data correctly.</p>
<p>I finally found out what I might need <a href="http://www.kirix.com/blog.html">Kirix Strata</a> for, but I also came to understand that doing analisys from web data&nbsp;is a rare activity for me and that there is a much simpler solution to my needs. I used to think that market research is something you don&#8217;t need to really do when creating a small mISV. But it seems that it&#8217;s important after all. I imagine that if the folks at Kirix were to do their homework, they would determine whether there is a need for their product, and if so, what specific niche they will be filling. </p>
<p>Obviously, I&#8217;m not the kind of user they had in mind.</p>
<!-- Social Bookmarks BEGIN -->
<div class="social_bookmark">
<a class="social_img" onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://del.icio.us/post?url=http://www.gooli.org/blog/copying-tables-to-excel/&amp;title=Copying+tables+to+Excel" title="Add 'Copying tables to Excel' to Del.icio.us"><img src="http://gooli.org/blog/wp-content/plugins/social_bookmarks/delicious.png" title="Add 'Copying tables to Excel' to Del.icio.us" alt="Add 'Copying tables to Excel' to Del.icio.us" /></a>
<a class="social_img" onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://digg.com/submit?phase=2&amp;url=http://www.gooli.org/blog/copying-tables-to-excel/&amp;title=Copying+tables+to+Excel" title="Add 'Copying tables to Excel' to digg"><img src="http://gooli.org/blog/wp-content/plugins/social_bookmarks/digg.png" title="Add 'Copying tables to Excel' to digg" alt="Add 'Copying tables to Excel' to digg" /></a>
<a class="social_img" onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.technorati.com/faves?add=http://www.gooli.org/blog/copying-tables-to-excel/" title="Add 'Copying tables to Excel' to Technorati"><img src="http://gooli.org/blog/wp-content/plugins/social_bookmarks/technorati.png" title="Add 'Copying tables to Excel' to Technorati" alt="Add 'Copying tables to Excel' to Technorati" /></a>
</div>
<!-- Social Bookmarks END -->
]]></content:encoded>
			<wfw:commentRss>http://www.gooli.org/blog/copying-tables-to-excel/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Recaps 0.2</title>
		<link>http://www.gooli.org/blog/recaps-02/</link>
		<comments>http://www.gooli.org/blog/recaps-02/#comments</comments>
		<pubDate>Mon, 01 Jan 2007 18:06:52 +0000</pubDate>
		<dc:creator>gooli</dc:creator>
				<category><![CDATA[Tools]]></category>

		<guid isPermaLink="false">http://www.gooli.org/blog/recaps-02/</guid>
		<description><![CDATA[Due to popular demand (err&#8230; by one person), I&#8217;ve fixed a small usability issue in Recaps. People sometimes pressed Shift-CapsLock, accidentally turning on the CapsLock mode instead of switching the language. Shift-CapsLock now does exactly the same thing as CapsLock, and the less intrusive Ctrl-CapsLock combination turns on the old CapsLock mode.
Recaps is a small [...]]]></description>
			<content:encoded><![CDATA[<p>Due to popular demand (err&#8230; by one person), I&#8217;ve fixed a small usability issue in Recaps. People sometimes pressed Shift-CapsLock, accidentally turning on the CapsLock mode instead of switching the language. Shift-CapsLock now does exactly the same thing as CapsLock, and the less intrusive Ctrl-CapsLock combination turns on the old CapsLock mode.</p>
<p>Recaps is a small program that allows you to switch typing languages with the CapsLock key instead of the dreadful Alt-Shift combination.</p>
<p><a href="http://www.gooli.org/blog/recaps">Get Recaps</a></p>
<!-- Social Bookmarks BEGIN -->
<div class="social_bookmark">
<a class="social_img" onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://del.icio.us/post?url=http://www.gooli.org/blog/recaps-02/&amp;title=Recaps+0.2" title="Add 'Recaps 0.2' to Del.icio.us"><img src="http://gooli.org/blog/wp-content/plugins/social_bookmarks/delicious.png" title="Add 'Recaps 0.2' to Del.icio.us" alt="Add 'Recaps 0.2' to Del.icio.us" /></a>
<a class="social_img" onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://digg.com/submit?phase=2&amp;url=http://www.gooli.org/blog/recaps-02/&amp;title=Recaps+0.2" title="Add 'Recaps 0.2' to digg"><img src="http://gooli.org/blog/wp-content/plugins/social_bookmarks/digg.png" title="Add 'Recaps 0.2' to digg" alt="Add 'Recaps 0.2' to digg" /></a>
<a class="social_img" onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.technorati.com/faves?add=http://www.gooli.org/blog/recaps-02/" title="Add 'Recaps 0.2' to Technorati"><img src="http://gooli.org/blog/wp-content/plugins/social_bookmarks/technorati.png" title="Add 'Recaps 0.2' to Technorati" alt="Add 'Recaps 0.2' to Technorati" /></a>
</div>
<!-- Social Bookmarks END -->
]]></content:encoded>
			<wfw:commentRss>http://www.gooli.org/blog/recaps-02/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
