<?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>justaddwater.dk &#187; justaddwater.dk</title>
	<atom:link href="http://justaddwater.dk/category/justaddwaterdk/feed/" rel="self" type="application/rss+xml" />
	<link>http://justaddwater.dk</link>
	<description>Instant Usability &#38; Web Standards</description>
	<lastBuildDate>Thu, 02 Feb 2012 08:51:48 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Easy delete all .svn Subfolders in Windows Explorer</title>
		<link>http://justaddwater.dk/2011/03/01/easy-delete-all-svn-subfolders-in-windows-explorer/</link>
		<comments>http://justaddwater.dk/2011/03/01/easy-delete-all-svn-subfolders-in-windows-explorer/#comments</comments>
		<pubDate>Tue, 01 Mar 2011 10:08:51 +0000</pubDate>
		<dc:creator>Jesper Rønn-Jensen</dc:creator>
				<category><![CDATA[justaddwater.dk]]></category>
		<category><![CDATA[subversion]]></category>
		<category><![CDATA[svn]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[windows]]></category>

		<guid isPermaLink="false">http://justaddwater.dk/?p=1414</guid>
		<description><![CDATA[I had to repair a flawed Subversion repository recently (not all files were committed). I had my local repository checked out. This was the flawed part, containing only parts of the folders and files it should. Then, I got a zip file from the machine where it was working. Problem: It contained .svn folders from [...]]]></description>
			<content:encoded><![CDATA[<p>I had to repair a flawed Subversion repository recently (not all files were committed). I had my local repository checked out. This was the flawed part, containing only parts of the folders and files it should.</p>
<p>Then, I got a zip file from the machine where it was working. Problem: It contained .svn folders from the other developer. So to merge these i did the following workflow:</p>
<ol>
<li>Delete all .svn folders from other developer&#8217;s zip</li>
<li>Move other developers folder over on top of my local install.</li>
<li>Commit all missing files</li>
</ol>
<p>Of course this will only work if there are no .svn folders in other developer&#8217;s file, because then svn authentication, paths, etc. will be messed up, and commit will fail.</p>
<p>Luckily, Sanil S (IamTechie blog) wrote a nice little script that actually adds a context menu in Windows explorer:<br />
<a href="http://justaddwater.dk/wp-content/uploads/2011/03/delete-svn.jpg"><img src="http://justaddwater.dk/wp-content/uploads/2011/03/delete-svn.jpg" alt="" title="delete-svn" width="360" height="288" class="alignnone size-full wp-image-1415" /></a></p>
<p><script src="https://gist.github.com/848907.js?file=delete_svn_subfolders.reg"></script><br />
Just save this file as &#8220;delete_svn_subfolders.reg&#8221;. When you run it, then you will have the new windows explorer context menu item shown in the image.</p>
<p>The full script (repeated for the ones with javascript disabled:)</p>
<blockquote><pre>Windows Registry Editor Version 5.00
;
; Running this file will give you an extra context menu item in Windows Explorer
; "Delete SVN folders"
;
; For the selected folder, it will remove all subfolders named ".svn" and their content
; Tip from http://www.iamatechie.com/remove-all-svn-folders-in-windows-xp-vista/
;
; Enrichened with comments by Jesper Rønn-Jensen ( http://justaddwater.dk/ )
;
;
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Folder\shell\DeleteSVN]
@="Delete SVN Folders"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Folder\shell\DeleteSVN\command]
@="cmd.exe /c \"TITLE Removing SVN Folders in %1 &#038;&#038; FOR /r \"%1\" %%f IN (.svn) DO RD /s /q \"%%f\" \""
</pre>
</blockquote>
<p>More info:</p>
<p>IamTechie: <a href="http://www.iamatechie.com/remove-all-svn-folders-in-windows-xp-vista/">How to remove all “.svn” folders in Windows XP &#038; Vista?</a></p>
]]></content:encoded>
			<wfw:commentRss>http://justaddwater.dk/2011/03/01/easy-delete-all-svn-subfolders-in-windows-explorer/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Zyb.com sync with new Nokia E52 phone</title>
		<link>http://justaddwater.dk/2009/11/03/zyb-com-sync-with-new-nokia-e52-phone/</link>
		<comments>http://justaddwater.dk/2009/11/03/zyb-com-sync-with-new-nokia-e52-phone/#comments</comments>
		<pubDate>Tue, 03 Nov 2009 17:19:36 +0000</pubDate>
		<dc:creator>Jesper Rønn-Jensen</dc:creator>
				<category><![CDATA[justaddwater.dk]]></category>

		<guid isPermaLink="false">http://justaddwater.dk/?p=1215</guid>
		<description><![CDATA[The company I work for has negotiated a new phone deal with another tele provider, which meant everybody had to change phones and numbers. I have been using Zyb.com for syncing phones and it has helped me out great every time the old Nokia 6500 has been handed in for repair. The new Nokia E52 [...]]]></description>
			<content:encoded><![CDATA[<p>The company I work for has negotiated a new phone deal with another tele provider, which meant everybody had to change phones and numbers. </p>
<p>I have been using Zyb.com for syncing phones and it has helped me out great every time the old Nokia 6500 has been handed in for repair. The new Nokia E52 is at present not accepting the sync setting from Zyb, so I had to set it up manually. For future&#8217;s sake, this is what I did:</p>
<p>First, request a phone update  from the Zyb page (https://zyb.com/my/home/) click my image to expand the hidden section.<br />
Click &#8220;I got a new phone&#8221; button and wait for sms with configuration settings.In the phones menu choose<br />
Menu > Control Panel > Settings > Connection > Destinations > Uncategorized</p>
<p>And here i am stuck??? I can only edit the settings. How do I use it, how do I activate the sync settings?</p>
<p><strong>UPDATE 2 days later:</strong> I got a good explanation from ZYB support on how to get it working:</p>
<blockquote><p>To start the sync, please go as follows:1<br />
    * Menu<br />
    * Control panel<br />
    * Phone<br />
    * Sync<br />
    * Choose ZYB
</p></blockquote>
<p>This works perfectly as long as you remember that the default sync profile is &#8220;Nokia PC Suite&#8221;. Thus, the step to &#8220;choose ZYB&#8221; is very important</p>
]]></content:encoded>
			<wfw:commentRss>http://justaddwater.dk/2009/11/03/zyb-com-sync-with-new-nokia-e52-phone/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Bash or Ruby for removing multiple Trac Spam Tickets</title>
		<link>http://justaddwater.dk/2009/09/28/bash-or-ruby-for-removing-multiple-trac-spam-tickets/</link>
		<comments>http://justaddwater.dk/2009/09/28/bash-or-ruby-for-removing-multiple-trac-spam-tickets/#comments</comments>
		<pubDate>Mon, 28 Sep 2009 09:21:32 +0000</pubDate>
		<dc:creator>Jesper Rønn-Jensen</dc:creator>
				<category><![CDATA[justaddwater.dk]]></category>

		<guid isPermaLink="false">http://justaddwater.dk/?p=1159</guid>
		<description><![CDATA[I had to clean up a public Trac ticket db where anonymous tickets are allowed. I had to issue commands like this: trac-admin . ticket remove 58 I keep forgetting the shell syntax for doing a loop over numbers. But actually a ruby script was just right for the task: ruby -e "(49..75).each{&#124;i&#124; %x(sudo -u [...]]]></description>
			<content:encoded><![CDATA[<p>I had to clean up a public Trac ticket db where anonymous tickets are allowed. I had to issue commands like this:</p>
<pre>
<div class="codesnip-container" >trac-admin . ticket remove 58</div>
</pre>
<p>I keep forgetting the shell syntax for doing a loop over numbers. But actually a ruby script was just right for the task:</p>
<pre>
<div class="codesnip-container" >ruby -e "(49..75).each{|i| %x(sudo -u www-data trac-admin . ticket remove #{i})}"</div>
</pre>
<p>This shows some of my reasons to love Ruby: Very intuitive syntax. And faster than to lookup bash syntax.</p>
]]></content:encoded>
			<wfw:commentRss>http://justaddwater.dk/2009/09/28/bash-or-ruby-for-removing-multiple-trac-spam-tickets/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Comments working again</title>
		<link>http://justaddwater.dk/2009/06/14/comments-working-again/</link>
		<comments>http://justaddwater.dk/2009/06/14/comments-working-again/#comments</comments>
		<pubDate>Sun, 14 Jun 2009 15:06:34 +0000</pubDate>
		<dc:creator>Thomas Watson Steen</dc:creator>
				<category><![CDATA[justaddwater.dk]]></category>
		<category><![CDATA[spam]]></category>
		<category><![CDATA[User experience]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://justaddwater.dk/?p=1101</guid>
		<description><![CDATA[Thanks to one of our dear readers we just discovered a bug in our commenting system that basically meant that you could not leave a comment on any of our posts. This has now been fixed and you can now again tell us your thoughts. Of cause we should have noticed, since the amount of [...]]]></description>
			<content:encoded><![CDATA[<p>Thanks to one of our dear readers we just discovered a bug in our commenting system that basically meant that you could not leave a comment on any of our posts. This has now been fixed and you can now again tell us your thoughts.</p>
<p>Of cause we should have noticed, since the amount of spam had dropped to zero. But now that we are receiving thousands of spam comments once again we know that everything is ok ;)</p>
]]></content:encoded>
			<wfw:commentRss>http://justaddwater.dk/2009/06/14/comments-working-again/feed/</wfw:commentRss>
		<slash:comments>15</slash:comments>
		</item>
		<item>
		<title>Jef Raskin&#8217;s First Law of Interface Design Explained</title>
		<link>http://justaddwater.dk/2009/03/19/jef-raskins-first-law-of-interface-design-explained/</link>
		<comments>http://justaddwater.dk/2009/03/19/jef-raskins-first-law-of-interface-design-explained/#comments</comments>
		<pubDate>Thu, 19 Mar 2009 14:01:20 +0000</pubDate>
		<dc:creator>Jesper Rønn-Jensen</dc:creator>
				<category><![CDATA[justaddwater.dk]]></category>

		<guid isPermaLink="false">http://justaddwater.dk/?p=1055</guid>
		<description><![CDATA[In variation of Isaac Asimov&#8217;s first law of robotics, Jef Raskin writes the first law of interface design: &#8220;Any system shall not harm your content or, through inaction, allow your content to come to harm.&#8221; In other words: Let&#8217;s say you enter this in an email field: jesperrr#gmail.com and you get this error message: &#8220;not [...]]]></description>
			<content:encoded><![CDATA[<p>In variation of Isaac Asimov&#8217;s first law of robotics, Jef Raskin writes the first law of interface design:</p>
<blockquote><p>&#8220;Any system shall not harm your content or, through inaction, allow your content to come to harm.&#8221;</p></blockquote>
<p>In other words:</p>
<p>Let&#8217;s say you enter this in an email field: jesperrr#gmail.com</p>
<p>and you get this error message: &#8220;not a valid email address&#8221;</p>
<p>Then the page reloads and the interface removes all entered text in the email field.</p>
<p>Removing or changing the text (in a harmful way) adds frustration to the end user.</p>
<p>Another example from an old version of our internal Capgemini timereporting (CTR): If you accidentally type &#8220;7..5&#8243; hours worked on a project a given day, the system will give this error message:</p>
<blockquote><p>&#8220;You must enter the time as a valid number&#8221;</p>
<p><a href="http://justaddwater.dk/wp-content/uploads/2009/03/ctr-error-no-help.png"><img class="aligncenter size-medium wp-image-1056" title="ctr-error-no-help" src="http://justaddwater.dk/wp-content/uploads/2009/03/ctr-error-no-help-300x104.png" alt="" width="300" height="104" /></a></p></blockquote>
<p>Then the application erases the field completely and lets you start over. That&#8217;s a violation of the First Law of Interface Design. Instead the system should give a more appropriate error message like</p>
<blockquote><p>&#8220;7..5&#8243; is not a recognized time format. Please enter the time in the format &#8220;3&#8243;, &#8220;4.0&#8243;, &#8220;7.5&#8243; or similar.</p></blockquote>
<p>Even better, if you can guess what the user actually meant. The new version of the system actually corrects anything like &#8220;7..5&#8243;, &#8220;7,.25&#8243;, &#8220;7a&#8221;, etc to &#8220;7&#8243; (it truncates anything from the end it does not understand).</p>
<p>Not really perfect to change to &#8220;7&#8243; if I meant &#8220;7.5&#8243; or &#8220;7.25&#8243;. So there is still a law violation, although it&#8217;s smaller than just removing the field content.</p>
<h2>More examples</h2>
<p>The worst kind of Interface Law violations are the ones that:</p>
<ul>
<li>says &#8220;username too short&#8221; and deletes the username completely</li>
<li>says &#8220;error in your phone number&#8221; and deletes all the other fields so that you have to type everything again</li>
<li>says &#8220;credit card information invalid. type again&#8221; and then deletes all entered credit card information</li>
<li>says &#8220;wrong license code&#8221; and then deletes the license code field(s)</li>
<li>says &#8220;incorrect captcha&#8221; and resets other fields I entered</li>
</ul>
<p>All these examples fail in user experience because they do not take into account that you most of the time want to correct an accidental typo. The last thing you want is to re-type all the other fields, numbers, characters that were actually correct.</p>
<h2>Exceptions</h2>
<p>I think this one is ok if it:</p>
<ul>
<li>says &#8220;passwords don&#8217;t match&#8221; and deletes both passwords &#8212; passwords are not shown on screen and system does not know if you made a typo in first field or second field</li>
</ul>
<p>Thanks to Mathias Müller-Prove for giving me the correct quotation. Read more in his short memorial of Jef Raskin &#8220;<a href="http://www.mprove.de/script/05/uxf/newsletter05.html">In Memoriam: Jef Raskin &#8212; <span class="subtitle">User Experience Newsletter #5, March 2005</span></a>&#8221;</p>
<p>What&#8217;s your favorite violation the First Law of Interface Design?</p>
]]></content:encoded>
			<wfw:commentRss>http://justaddwater.dk/2009/03/19/jef-raskins-first-law-of-interface-design-explained/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>Textmate Path Modification &#8212; Ruby Version Issues</title>
		<link>http://justaddwater.dk/2009/03/10/textmate-path-modification-ruby-version-issues/</link>
		<comments>http://justaddwater.dk/2009/03/10/textmate-path-modification-ruby-version-issues/#comments</comments>
		<pubDate>Tue, 10 Mar 2009 10:47:26 +0000</pubDate>
		<dc:creator>Jesper Rønn-Jensen</dc:creator>
				<category><![CDATA[justaddwater.dk]]></category>

		<guid isPermaLink="false">http://justaddwater.dk/?p=1044</guid>
		<description><![CDATA[I had some issues with Ruby on my macbook after upgrading Ruby from 1.8.6 to 1.8.7. This was a problem in Textmate as it still picked up the old version and ignored $PATH i set in my .profile. Thanks to fast and excellent help from Allan Odgaard and others in the ##Textmate IRC channel. The [...]]]></description>
			<content:encoded><![CDATA[<p>I had some issues with Ruby on my macbook after upgrading Ruby from 1.8.6 to 1.8.7.</p>
<p>This was a problem in Textmate as it still picked up the old version and ignored $PATH i set in my .profile.</p>
<p>Thanks to fast and excellent help from Allan Odgaard and others in the ##Textmate IRC channel.</p>
<p>The main point is that if you modify your $PATH you should probably also set a variable in Textmate reflecting that change. Otherwise you may end up with Textmate running an old version of a program like I did.</p>
<p><img src="http://justaddwater.dk/wp-content/uploads/2009/03/textmate-preferences-advanced-path.png" alt="" title="textmate-preferences-advanced-path" width="450" height="253" class="alignnone size-full wp-image-1045" /></p>
<p>Note also that there is some help on the Textmate Wiki: &#8220;<a href="http://wiki.macromates.com/Troubleshooting/RubyVersionIssue">RubyVersionIssue</a>&#8221; with a link to the suggestion Alan mentions above (<a href="http://manual.macromates.com/en/shell_commands#search_path">setting path for Finder</a> in environment.plist).</p>
<blockquote><pre>
Pasted as Plain Text by peterhaza
Description: No description
URL: http://rafb.net/p/mlsekL34.html

March 6th 2009
11:25 jesperronn: Hi everybody (new to the IRC channel) I know this has been
up millions of times: Ruby version issues!
11:26 jesperronn: My problem is basically the same as described: wrong (old)
ruby version picked up by Textmate
11:26 jesperronn: I tried the suggestion that was linked (setting up
~/.MacOSX/environment.plist and adding new ruby path)
11:27 jesperronn: Could somebody give me some troubleshooting help?
11:29 malesca: jesperronn: Did you reboot after changing environment.plist?
11:29 malesca: path?
11:29 inner_six: Your search path is incorrect. See
http://manual.macromates.com/en/shell_commands#search_path and be sure to
read the last paragraph about ~/.MacOSX/environment.plist (used for shebang
scripts)
11:29 jesperronn: Yes I did reboot
11:30 jesperronn: (although it says logout/login in the wiki page)
11:30 jesperronn: After the reboot the test suggested actually changed result
11:30 jesperronn: #!/bin/sh echo "$PATH"
11:31 jesperronn: result was: /usr/bin:/bin:/usr/sbin:/sbin
11:31 jesperronn: sorry for the smilies...:(
11:31 jesperronn: it changed to /Users/jesper/Library/Application
Support/TextMate/Pristine
Copy/Support/bin/CocoaDialog.app/Contents/MacOS:/Library/Frameworks/Python.fra
mework/Versions/Current/bin:/usr/local/apache2/bin:/usr/local/mysql/bin:/Users
/jesper/bin:/usr/local/bin:/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/b
in:/usr/X11/bin:/Users/jesper/Library/Application Support/TextMate/Pristine
Copy/Support/bin
11:31 jesperronn: which is the correct from .profile
11:32 jesperronn: And "ruby --version" now gives me the new correct version
1.8.7
11:33 jesperronn: So it works when running snippets in plain text via CTRL-R
11:33 jesperronn: Now the issue is still there for my .rb file
11:34 jesperronn: The .rb file starts with #!/usr/bin/env ruby
11:35 jesperronn: and running Command-R tells me the version is the old 1.8.6
(located at /usr/bin/ruby)
11:35 jesperronn: So how do I change this behaviour on Ruby files??????
11:37 jesperronn: inner_six: there is no difference in the ruby version
picked up if I remove the shebang
11:37 jesperronn: inner_six: i already added the environment.plist on my
machine
11:39 perdiy: jesperronn: Have you set TM_RUBY?
11:40 jesperronn: perdix: how do I check that? (i probably have not)
11:40 perdix: jesperronn: Check Preferences → Advanced → Shell Variables
11:41 jesperronn: thanks perdix. No it's not set
11:41 jesperronn: perdix: what do you suggest I do?
11:42 perdix: jesperronn: Not sure…
11:44 perdix: Just so I understand you correctly: entering ‘ruby --version’
and hitting ⌃R says it’s ruby 1.8.7, but creating a Ruby file containing
‘puts RUBY_VERSION’ and hitting ⌘R says it’s ruby 1.8.6?
11:46 jesperronn: perdix: Thats exactly what i did!
11:46 jesperronn: and the exact reults i got
11:48 perdix: Sorry, then I have no idea. You could set TM_RUBY to the full
path to the ruby executable you want to run (in the mentioned prefpane), but
that’s a workaround.
11:49 perdix: Or wait for someone more knowledgeable to come online…
11:52 jesperronn: perdix: hehe thanks for your suggestions.. I tried to set
TM_RUBY to /usr/local/bin/ruby (no Textmate restart). That actually gave an
extremely strange error.
11:53 jesperronn: Blank white "run" window only with this text:
/tmp/temp_textmate.azBvzx: line 6: : command not found
12:02 perdix: jesperronn: Huh. Does `$TM_RUBY --version`, ⌃R work?
12:12 allan: jesperronn: the test with #!/bin/sh gave another result because
I think you forgot to select BOTH lines
12:12 allan: jesperronn: instead of editing environment.plist try set PATH in
TM’s preferences
12:12 allan: TM_RUBY will not help you since it is your script (using ‘env’)
that needs the correct ruby
12:13 allan: so only setting PATH properly can fix this
12:13 allan: your second error must be because you set TM_RUBY to something
non-existing
12:39 jesperronn: allan: where do I set PATH in preferences?
12:40 jesperronn: allan: do you mean set a shell variable "PATH" in the
advanced preferences>shell variables?
12:45 allan: jesperronn: yes
12:45 jesperronn: allan: I can see that setting a shell variable PATH in
advanced preferences actually works!
12:45 jesperronn: Why is this not different 'out of the box'
12:45 allan: jesperronn: what do you mean?
12:45 allan: that TextMate should know how you want PATH setup?
12:45 allan: because that is impossible
12:45 allan: and it _does_ work out of the box
12:45 jesperronn: yes
12:46 allan: it just does not work with custom ruby installs
12:46 allan: emphasis here on custom ;)
12:46 jesperronn: OK
12:46 jesperronn: I actually tried to remove the ruby 1.8.6 after upgrading
but i had to undo because it gave me problems running ruby inside textmate...
12:47 jesperronn: Maybe it\s just my limitted knowledge of Textmate internals
12:47 jesperronn: Thanks a lot for help, allan, perdix and inner_six!
12:48 allan: jesperronn: essentially it’s pretty simple: PATH tells what
locations programs should shell for commands (and what order)
12:49 allan: so if you want to install something new yet still keep the
system version (recommended) then just install it wherever you want and put
that location first in the PATH variable
12:49 allan: that environment.plist failed for you is likely due to a typo on
your part
12:49 allan: that is the system-supported way to set environment variables
for all apps launched by Finder though
12:50 allan: where Terminal runs a shell so it additionally has the profile
files
12:50 allan: and TextMate has the Preferences → Advanced…
12:50 jesperronn: allan: what I do not understand is why to use
environment.plist and not .profile or similar
12:51 jesperronn: So the error on my side is probably that I added path
settings to .profile
12:51 allan: jesperronn: .profile is for your shell
12:51 allan: i.e. only bash etc. will execute .profile
12:51 allan: so it works when what you launch from TM goes via bash
12:51 allan: but not when it is run w/o a shell
12:52 allan: this is analogical to asking in #bash why you have to setup
stuff in .profile when you have Preferences → Advanced → Shell Variables in
TextMate ;)
12:52 jesperronn: So for me to learn a lesson here: I should always use
environment.plist and remove all custom $PATH adjustments in .profile
12:52 allan: jesperronn: it doesn’t really matter
12:53 allan: really, only shell and TextMate care about PATH
12:53 allan: so whether you set it locally for each of the two apps or
globally makes little difference
12:53 allan: and in a shell context editing .profile is probably easier
12:53 allan: plus does not require re-login to have changes take effect
12:53 allan: also, in .profile you can have “code”
12:54 allan: e.g. you can add to your PATH, conditionally set something etc.
12:54 allan: where environment.plist is 100% declarative
</pre>
</blockquote>
<p>PS. Thanks to Peter Haza (phˆ) for digging up the archived conversation.</p>
<p>PPS. Note to self: Clean transscript from irrelevant status changes with: cat tmp.txt |grep -v &#8220;has left&#8221;|grep -v &#8220;has joined&#8221; | grep -v &#8220;is now known as&#8221;</p>
]]></content:encoded>
			<wfw:commentRss>http://justaddwater.dk/2009/03/10/textmate-path-modification-ruby-version-issues/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Using Local File-based Git &#8212; Server Laziness</title>
		<link>http://justaddwater.dk/2009/02/21/using-local-file-based-git-server-laziness/</link>
		<comments>http://justaddwater.dk/2009/02/21/using-local-file-based-git-server-laziness/#comments</comments>
		<pubDate>Sat, 21 Feb 2009 09:04:59 +0000</pubDate>
		<dc:creator>Jesper Rønn-Jensen</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[justaddwater.dk]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[ssh]]></category>
		<category><![CDATA[svn]]></category>

		<guid isPermaLink="false">http://justaddwater.dk/?p=1029</guid>
		<description><![CDATA[My problem this week: I wanted to share some work with a colleague. Unfortunately we have not yet setup our caplab environment with git server. Nor did i want to push this particular project to GitHub or Unfuddle. My alternative was a file-based setup: Each developer&#8217;s machine has it&#8217;s own Git repository. On my machine [...]]]></description>
			<content:encoded><![CDATA[<p>My problem this week: I wanted to share some work with a colleague. Unfortunately we have not yet setup our caplab environment with git server. Nor did i want to push this particular project to GitHub or Unfuddle. My alternative was a file-based setup:</p>
<ol>
<li>Each developer&#8217;s machine has it&#8217;s own Git repository.</li>
<li>On my machine I had an extra &#8216;master&#8217; repository that other developers could push into.</li>
<li>In the example below the local developer repos is called &#8216;local&#8217; and the master is called &#8216;remote&#8217;</li>
<li>The master repository could be on a network drive as well.</li>
</ol>
<p>Developer&#8217;s workflow: Push changes to &#8216;remote&#8217;:</p>
<div class="codesnip-container" >
<div class="bash codesnip" style="font-family:monospace;"><span class="kw3">cd</span> <span class="kw3">local</span> <span class="co0">#developer&#8217;s local repository</span><br />
git pull ..<span class="sy0">/</span>remote master <span class="co0">#get the latest code from &#8216;remote&#8217; repository</span><br />
git push ..<span class="sy0">/</span>remote master <span class="co0">#push the recent commits from here to the &#8216;remote&#8217; folder</span></div>
</div>
<h3>Git remote makes it easier</h3>
<p>In stead of using a path in &#8220;git pull ../remote master&#8221;, it&#8217;s even easier to add the path just like you would do on GitHub or similar:</p>
<div class="codesnip-container" >
<div class="bash codesnip" style="font-family:monospace;">git remote add origin ..<span class="sy0">/</span>remote<span class="sy0">/</span> <span class="co0">#one time for all</span><br />
git pull origin master <span class="co0"># pull from the &#8216;remote&#8217; directory</span><br />
git push origin master <span class="co0">#push recent commits from here to the &#8216;remote&#8217; folder</span></div>
</div>
<h3>Bonus tip: Using remote git to SSH server</h3>
<p>It&#8217;s real easy to make a remote backup copy of your Git repository even if you have not set up a git server. Here is an example of how I did it on a server where I have SSH access to:</p>
<div class="codesnip-container" >
<div class="bash codesnip" style="font-family:monospace;">git remote add origin <span class="kw2">ssh</span>:<span class="sy0">//</span>jesper<span class="sy0">@</span>myserver.com<span class="sy0">/</span>~<span class="sy0">/</span>project.git<span class="sy0">/</span></div>
</div>
<p>Setup the repository on the remote server:</p>
<div class="codesnip-container" >
<div class="bash codesnip" style="font-family:monospace;">$ <span class="kw2">ssh</span> jesper<span class="sy0">@</span>myserver.com<br />
Welcome to myserver.com<span class="sy0">!</span><br />
$ <span class="kw2">mkdir</span> project.git <span class="sy0">&amp;&amp;</span> <span class="kw3">cd</span> project.git<span class="sy0">/</span><br />
$ git <span class="re5">&#8211;bare</span> init<br />
Initialized empty Git repository <span class="kw1">in</span> <span class="sy0">/</span>home<span class="sy0">/</span>jesper<span class="sy0">/</span>project.git<br />
$ <span class="kw3">exit</span><br />
Bye<span class="sy0">!</span></div>
</div>
<h3>Related posts:</h3>
<ul>
<li><a title="Justaddwater.dk: Howto Create a Temporary Local Subversion Repository" rel="bookmark" href="../2007/04/26/howto-create-a-temporary-local-subversion-repository/">Howto Create a Temporary Local Subversion Repository (April 2007)</a></li>
<li><a title="Justaddwater.dk: Git Side Benefit: Reducing Disk Usage" rel="bookmark" href="../2009/01/17/git-side-benefit-reducing-disk-usage/">Git Side Benefit: Reducing Disk Usage</a> (January 17)</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://justaddwater.dk/2009/02/21/using-local-file-based-git-server-laziness/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Bad Usability Calendar 2009 Is Out</title>
		<link>http://justaddwater.dk/2009/01/15/bad-usability-calendar-2009-is-out/</link>
		<comments>http://justaddwater.dk/2009/01/15/bad-usability-calendar-2009-is-out/#comments</comments>
		<pubDate>Thu, 15 Jan 2009 11:12:40 +0000</pubDate>
		<dc:creator>Jesper Rønn-Jensen</dc:creator>
				<category><![CDATA[justaddwater.dk]]></category>
		<category><![CDATA[Accessibility]]></category>
		<category><![CDATA[calendar]]></category>
		<category><![CDATA[Humor]]></category>
		<category><![CDATA[Usability]]></category>
		<category><![CDATA[User experience]]></category>

		<guid isPermaLink="false">http://justaddwater.dk/?p=1007</guid>
		<description><![CDATA[My Norwegian friend Eidar from NetLife Research pointed out that the 2009 version of the bad usability calendar is now online. Learning by bad examples is often a good way in discussing usability with people that are not hardcore usability people. I&#8217;m currently wrapping a couple of A3 calendars in plastic to use as posters [...]]]></description>
			<content:encoded><![CDATA[<p>My Norwegian friend Eidar from NetLife Research pointed out that the 2009 version of the bad usability calendar is now online. </p>
<p>Learning by bad examples is often a good way in discussing usability with people that are not hardcore usability people.</p>
<p><img alt="" src="http://www.badusability.com/img/international/bad-usability-calendar-2009-thumbnail.png" class="alignnone" width="237" height="315" /></p>
<p>I&#8217;m currently wrapping a couple of A3 calendars in plastic to use as posters here at the office.</p>
<p>Download from: <a href="http://www.badusability.com/">Badusability.com</a></p>
<p>Previous articles:</p>
<ul>
<li><a href="http://justaddwater.dk/2008/01/17/bad-usability-calendar-2008/" rel="bookmark" title="Permanent Link to Bad Usability Calendar 2008">Bad Usability Calendar 2008</a></li>
<li><a href="http://justaddwater.dk/2007/01/27/bad-usability-calendar-2007-finally-ready/" rel="bookmark" title="Permanent Link to Bad Usability Calendar 2007 Finally Ready">Bad Usability Calendar 2007 Finally Ready</a></li>
<li><a href="http://justaddwater.dk/2006/10/16/bad-usability-calendar/" rel="bookmark" title="Permanent Link to Bad Usability Calendar">Bad Usability Calendar</a> (2005 and 2006)</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://justaddwater.dk/2009/01/15/bad-usability-calendar-2009-is-out/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Time To Revise Our Comment Policy</title>
		<link>http://justaddwater.dk/2008/12/17/time-to-revise-our-comment-policy/</link>
		<comments>http://justaddwater.dk/2008/12/17/time-to-revise-our-comment-policy/#comments</comments>
		<pubDate>Tue, 16 Dec 2008 23:10:35 +0000</pubDate>
		<dc:creator>Jesper Rønn-Jensen</dc:creator>
				<category><![CDATA[justaddwater.dk]]></category>

		<guid isPermaLink="false">http://justaddwater.dk/?p=982</guid>
		<description><![CDATA[Our experiment Spam Filter Free Day had one year anniversary yesterday. We won&#8217;t repeat the experiment as it gave us a tremendous amount of comments to administer. Since then we decided to remove the &#8220;nofollow&#8221; constraint on all comment links. At that time we wanted to give credit to our friends and other people that [...]]]></description>
			<content:encoded><![CDATA[<p>Our experiment <a href="http://justaddwater.dk/2007/12/15/today-is-spam-filter-free-day/">Spam Filter Free Day</a> had one year anniversary yesterday. We won&#8217;t repeat the experiment as it gave us a tremendous amount of comments to administer.</p>
<p>Since then we decided to remove the &#8220;nofollow&#8221; constraint on all comment links. At that time we wanted to give credit to our friends and other people that put effort in posting comments on our site.</p>
<p>Removing nofollow would result in higher search ranking for the webpages of our active community. We wanted to reward and encourage comments that way.</p>
<h2>The drawback of removing &#8220;nofollow&#8221;</h2>
<p>Recently, justaddwater.dk has been added to spammers&#8217; search engines &#8212; for instance the &#8220;<a href="http://www.dofollow.radpixels.com/">Search DoFollow</a>&#8221; search engine where &#8220;you can find relevant posts where your comment will earn you a backlink&#8221;. We also appeared on discussion forums like <a href="http://forums.digitalpoint.com/showthread.php?t=864579">here</a> and <a href="http://forums.digitalpoint.com/showthread.php?p=9666008">here</a>.</p>
<p>The result is that we get many comments from people that are more interested in adding a link to their site than adding positively to the discussion. As a consequence, the article from last year (<a href="http://justaddwater.dk/2007/12/15/today-is-spam-filter-free-day/">Spam Filter Free Day</a>) is totally bloated with comments. And you see only the comments that are actually approved. The majority of comments are still caught by our spam comment guards (akismet, and other comment filters).</p>
<p>Many of the comments are apparently not automated and address a specific thing in the actual blog post. But what should we do with the following situations:</p>
<h3>A: Author name and URL is a product name</h3>
<p> The most common situation we see is like this:<br />
<a href="http://justaddwater.dk/wp-content/uploads/2008/12/comment-spam-name-and-url.png"><img src="http://justaddwater.dk/wp-content/uploads/2008/12/comment-spam-name-and-url.png" alt="" title="comment-spam-name-and-url" width="445" height="170" class="alignnone size-full wp-image-983" /></a><br />
Until now, we have manually assessed the content of each of these. If it&#8217;s relevant for the blog post, we have been approving it.</p>
<h3>B: Author name seems personal but URL is a product name</h3>
<p> A seemingly valid name but apparently the URL points on a product (or may be a site that sells a product). Example:<br />
<a href="http://justaddwater.dk/wp-content/uploads/2008/12/comment-spam-valid-name-product-url.png"><img src="http://justaddwater.dk/wp-content/uploads/2008/12/comment-spam-valid-name-product-url.png" alt="" title="comment-spam-valid-name-product-url" width="445" height="133" class="alignnone size-full wp-image-984" /></a></p>
<p>This type of comments have been approved if we decided the content to be valid. In this case it&#8217;s actually an invalid comment as the CSS is included inside the example file. But I approved the comment as the author may not have known that.</p>
<h3>C: Author has a gravatar but URL is a product name</h3>
<p> In rare cases, people post a comment where there is a valid gravatar but something smells about the URL. Example:<br />
<a href="http://justaddwater.dk/wp-content/uploads/2008/12/comment-spam-valid-gravatar.png"><img src="http://justaddwater.dk/wp-content/uploads/2008/12/comment-spam-valid-gravatar.png" alt="" title="comment-spam-valid-gravatar" width="445" height="111" class="alignnone size-full wp-image-985" /></a><br />
This type of comments have been marked as spam if the content was not adding any real value.</p>
<h3>D: A personal gravatar but name is a product name </h3>
<p>We have very rarely seen people that use a product name instead of their actual name. Example:<br />
<a href="http://justaddwater.dk/wp-content/uploads/2008/12/comment-spam-valid-gravatar-invalid-name.png"><img src="http://justaddwater.dk/wp-content/uploads/2008/12/comment-spam-valid-gravatar-invalid-name.png" alt="" title="comment-spam-valid-gravatar-invalid-name" width="445" height="211" class="alignnone size-full wp-image-986" /></a><br />
In this case, Taylor Thompson would be better off by using his real name. He obviously put effort into commenting. In this case we have previously approved comments.</p>
<h3>E: Comments in other languages</h3>
<p>To my surprise we see a lot of comments in Russian and Turkish. Our target group will not understand this, so we assume per default it&#8217;s spam. Trackbacks could be valid here but we also assess these individually (and approve most trackbacks).</p>
<h2>New comment policy</h2>
<p>In the future we will probably <strong>mark all of the above comment types as spam</strong>. Yes, some of the comments actually add value, but most of the comments actually are just made to improve ranking.</p>
<p><strong>We will continue to manually approve</strong> the comments we mean will add value.</p>
<p><strong>We will continue to hold comments for manual moderation</strong>. (so if your valid comment does not show up within a few hours, please contact us).</p>
<h2>Strategy for making a valid comment on this blog</h2>
<ul>
<li>Use your real name &#8212; not a product or service name</li>
<li>Use a gravatar (improves the likeliness that your comment won&#8217;t drown when we moderate comments)</li>
<li>Write your comment in English. (of course, trackbacks from your site in other languages are OK)</li>
<li>If your site is about SEO or traffic optimization, we&#8217;ll probably remove your comment, or your link.</li>
<li>Write comments on topic (this is of course not new)</li>
</ul>
<p>In general, expect us to mark more comments as spam.</p>
<p>Note to self: We should look more into setting up the &#8220;<a href="http://www.fob-marketing.de/marketing-seo-blog/wordpress-nofollow-seo-plugin-nofollow-case-by-case.html">Nofollow case by case&#8221;</a> and &#8220;<a href="http://planetozh.com/blog/2005/02/wordpress-plugin-auto-moderate-comments/">Auto moderate comments</a>&#8221; plugins&#8230;</p>
<p><strong>See also</strong></p>
<ul>
<li><a href="http://justaddwater.dk/2007/07/10/blog-usability-spam-comments-irritate-subscribers/">Blog Usability: Spam Comments Irritate Subscribers</a> (July 2007)</li>
<li><a href="http://justaddwater.dk/2007/12/15/today-is-spam-filter-free-day/">Today is Spam Filter Free Day</a> (December 2007)</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://justaddwater.dk/2008/12/17/time-to-revise-our-comment-policy/feed/</wfw:commentRss>
		<slash:comments>19</slash:comments>
		</item>
		<item>
		<title>Busy Not Updating Blog</title>
		<link>http://justaddwater.dk/2008/11/30/busy-not-updating-blog/</link>
		<comments>http://justaddwater.dk/2008/11/30/busy-not-updating-blog/#comments</comments>
		<pubDate>Sun, 30 Nov 2008 21:37:17 +0000</pubDate>
		<dc:creator>Jesper Rønn-Jensen</dc:creator>
				<category><![CDATA[justaddwater.dk]]></category>

		<guid isPermaLink="false">http://justaddwater.dk/?p=977</guid>
		<description><![CDATA[Justaddwater.dk has suffered very infrequent updates for a long period of time. Actually a lot is going on both for Thomas and me &#8212; but our activities seldom make it to this blog. Here is an update of what has been keeping us busy. Thomas and his new company Since Thomas Watson quit Capgemini nearly [...]]]></description>
			<content:encoded><![CDATA[<p>Justaddwater.dk has suffered very infrequent updates for a long period of time. Actually a lot is going on both for Thomas and me &#8212; but our activities seldom make it to this blog. Here is an update of what has been keeping us busy.</p>
<h3>Thomas and his new company</h3>
<p>Since Thomas Watson quit Capgemini nearly two years ago, he uses nearly of his time on their startup &#8220;<a href="http://www.3dbyggeri.dk">3D Byggeri Danmark</a>&#8221; (creating digital product catalog and other online tools for the construction business). </p>
<p>Also, Thomas has been very active in our Copenhagen Ruby community where we often get an insight in the architecture of the stuff they have been building. </p>
<p>Furthermore, he is currently available for contract work &#8212; I&#8217;m sure he&#8217;ll post a short note about it soon.</p>
<h3>Jespers second child</h3>
<p>September 16th my wife gave birth to our second child, Oscar. A wonderful smiling baby &#8212; just as lovely an charming as his big brother. I&#8217;m usually posting photos and tiny video clips for the rest of the family to enjoy. This has higher priority than updating the blog here.</p>
<p><a href="http://www.flickr.com/photos/tordisvej/3052232491/" title="Familien foran døbefonten by tordisvej, on Flickr"><img src="http://farm4.static.flickr.com/3061/3052232491_937c1e4e0b_m.jpg" width="240" height="159" alt="Familien foran døbefonten" /></a></p>
<p>Oscar had a habit of keeping us awake at night (screamed a lot in a period of time). So this of course affects the updates on this blog, because I used to write posts in the evening.</p>
<p><a href="http://www.flickr.com/photos/tordisvej/2881067893/" title="Far og Oscar by tordisvej, on Flickr"><img src="http://farm3.static.flickr.com/2194/2881067893_afdfb26552_s.jpg" width="75" height="75" alt="Far og Oscar" /></a><a href="http://www.flickr.com/photos/tordisvej/2934782819/" title="Se min søde lillebror by tordisvej, on Flickr"><img src="http://farm4.static.flickr.com/3253/2934782819_5b8055df12_s.jpg" width="75" height="75" alt="Se min søde lillebror" /></a><a href="http://www.flickr.com/photos/tordisvej/3022889182/" title="Vågnet fra lur by tordisvej, on Flickr"><img src="http://farm4.static.flickr.com/3053/3022889182_2caa990df9_t.jpg" width="100" height="66" alt="Vågnet fra lur" /></a><a href="http://www.flickr.com/photos/tordisvej/2881903966/" title="Oscar og Mor by tordisvej, on Flickr"><img src="http://farm4.static.flickr.com/3129/2881903966_dd7cc6912b_t.jpg" width="100" height="66" alt="Oscar og Mor" /></a><a href="http://www.flickr.com/photos/tordisvej/2874557848/" title="Skriger by tordisvej, on Flickr"><img src="http://farm4.static.flickr.com/3102/2874557848_76a1b287fe_s.jpg" width="75" height="75" alt="Skriger" /></a></p>
<h3>Next: All the stuff we didn&#8217;t write about</h3>
<p>Shortly I will follow up on this by writing some of the stuff i wanted to tell but never got time to write about. My Macbook Air experience, a followup on the Amitech harddisk recorder, and more.</p>
<p>Of course this is no excuse for not updating the blog &#8212; but I&#8217;m sure it will give a better understanding of why it is difficult for us finding time to blog here.</p>
]]></content:encoded>
			<wfw:commentRss>http://justaddwater.dk/2008/11/30/busy-not-updating-blog/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>

