<?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>7deeds &#187; tips</title>
	<atom:link href="http://blog.7deeds.com/tag/tips/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.7deeds.com</link>
	<description>Petros Amiridis - A humble programmer's seven noteworthy actions for the community</description>
	<lastBuildDate>Mon, 31 May 2010 12:09:10 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>MySQL gem doesn&#8217;t work after upgrading Ubuntu</title>
		<link>http://blog.7deeds.com/2010/05/06/mysql-gem-doesnt-work-after-upgrading-ubuntu/</link>
		<comments>http://blog.7deeds.com/2010/05/06/mysql-gem-doesnt-work-after-upgrading-ubuntu/#comments</comments>
		<pubDate>Thu, 06 May 2010 20:54:31 +0000</pubDate>
		<dc:creator>Petros</dc:creator>
				<category><![CDATA[tips]]></category>
		<category><![CDATA[gems]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[ruby-on-rails]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://blog.7deeds.com/?p=423</guid>
		<description><![CDATA[I upgraded Ubuntu 9.10 to 10.04. Everything was cool. I tried to work on a Rails project I am involved by issuing the command rake db:migrate to update the database.
I was getting the following error:

Error: uninitialized constant MysqlCompat::MysqlRes

Then I uninstalled the mysql gem and tried to install it again only to get the following error:

Building [...]]]></description>
			<content:encoded><![CDATA[<p>I upgraded Ubuntu 9.10 to 10.04. Everything was cool. I tried to work on a Rails project I am involved by issuing the command rake db:migrate to update the database.</p>
<p>I was getting the following error:</p>
<pre class="brush: bash;">
Error: uninitialized constant MysqlCompat::MysqlRes
</pre>
<p>Then I uninstalled the mysql gem and tried to install it again only to get the following error:</p>
<pre class="brush: bash;">
Building native extensions. This could take a while...
ERROR: While executing gem ... (Gem::Installer::ExtensionBuildError)
ERROR: Failed to build gem native extension.
</pre>
<p>Then I issued the following command:</p>
<pre class="brush: bash;">
sudo apt-get install libmysqlclient-dev
</pre>
<p>and then installed mysql gem and it installed with no problems. Finally, rake db:migrate worked again.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.7deeds.com/2010/05/06/mysql-gem-doesnt-work-after-upgrading-ubuntu/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The psychology of instant messaging</title>
		<link>http://blog.7deeds.com/2010/03/23/the-psychology-of-instant-messaging/</link>
		<comments>http://blog.7deeds.com/2010/03/23/the-psychology-of-instant-messaging/#comments</comments>
		<pubDate>Tue, 23 Mar 2010 15:06:27 +0000</pubDate>
		<dc:creator>Petros</dc:creator>
				<category><![CDATA[1-deed]]></category>
		<category><![CDATA[remote-work]]></category>
		<category><![CDATA[communication]]></category>
		<category><![CDATA[personal-development]]></category>
		<category><![CDATA[psychology]]></category>
		<category><![CDATA[tips]]></category>

		<guid isPermaLink="false">http://blog.7deeds.com/?p=415</guid>
		<description><![CDATA[We are using instant messaging a lot (IM). Our team is working remotely and IM helps us communicate. I have realized that communicating using IM can be rather difficult sometimes. One of the reasons is the lack of visual contact. The two (or more) chatting parties cannot show their body language.

The body language is important [...]]]></description>
			<content:encoded><![CDATA[<p>We are using instant messaging a lot (IM). Our team is working remotely and IM helps us communicate. I have realized that communicating using IM can be rather difficult sometimes. One of the reasons is the lack of visual contact. The two (or more) chatting parties cannot show their body language.</p>
<p><span id="more-415"></span></p>
<p>The body language is important in situations where there is confrontation, opposition and reaction. It is also very important even for simple and relaxed chats. When two people try to discuss a difficult subject, it is very easy to get the wrong signals reading plain text. It would be a whole better if people were chatting face to face or even using voice.</p>
<p>What plays a key role is whether a person is generally pleasant when you are around them in the same room. When people smile a lot and generally approach things in a positive way, they are likely to transmit the same feelings even when someone is chatting with them using plain text. What helps, is the image of that person in the mind of the other chatting party. It&#8217;s the memories of the mood that person is in when interacting closely with the other party.</p>
<p>For example, when I chat with a person that is very distant and negative when I am around them, I get the same feeling when chatting with them using IM. It takes some effort to perceive what they type in a positive way even if they don&#8217;t say something in a negative way.</p>
<p>Being pleasant, smiling and open to your colleagues is a key factor towards a better communication even using text messaging.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.7deeds.com/2010/03/23/the-psychology-of-instant-messaging/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>How to enable VCS infromation in zsh</title>
		<link>http://blog.7deeds.com/2010/03/10/enable-vcs-infromation-in-zsh/</link>
		<comments>http://blog.7deeds.com/2010/03/10/enable-vcs-infromation-in-zsh/#comments</comments>
		<pubDate>Wed, 10 Mar 2010 01:07:59 +0000</pubDate>
		<dc:creator>Petros</dc:creator>
				<category><![CDATA[tips]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[how-to]]></category>
		<category><![CDATA[self-note]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[zsh]]></category>

		<guid isPermaLink="false">http://blog.7deeds.com/?p=409</guid>
		<description><![CDATA[If you are using zsh as your terminal in Ubuntu, you can use a built in feature to display version control information at the prompt.
After reading &#8220;Zsh Prompt Magic&#8221; I created the zsh_vcs_info file which you can download. You place it in your home directory and open .zshrc and add the following line:

source /home/user/.zsh_vcs_info

Notice that [...]]]></description>
			<content:encoded><![CDATA[<p>If you are using zsh as your terminal in Ubuntu, you can use a built in feature to display version control information at the prompt.</p>
<p>After reading &#8220;<a href="http://kriener.org/articles/2009/06/04/zsh-prompt-magic">Zsh Prompt Magic</a>&#8221; I created the <a href='http://blog.7deeds.com/wp-content/zsh_vcs_info.zip'>zsh_vcs_info</a> file which you can download. You place it in your home directory and open .zshrc and add the following line:</p>
<pre class="brush: bash;">
source /home/user/.zsh_vcs_info
</pre>
<p>Notice that I added a . (dot) in the filename because I want it to be hidden. Also, notice that &#8220;user&#8221; in the path above, is the username of the account you use to log into Ubuntu.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.7deeds.com/2010/03/10/enable-vcs-infromation-in-zsh/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Rails: url vs path</title>
		<link>http://blog.7deeds.com/2009/09/21/rails-url-vs-path/</link>
		<comments>http://blog.7deeds.com/2009/09/21/rails-url-vs-path/#comments</comments>
		<pubDate>Sun, 20 Sep 2009 22:30:44 +0000</pubDate>
		<dc:creator>Petros</dc:creator>
				<category><![CDATA[tips]]></category>
		<category><![CDATA[routes]]></category>
		<category><![CDATA[ruby-on-rails]]></category>
		<category><![CDATA[self-note]]></category>

		<guid isPermaLink="false">http://blog.7deeds.com/?p=331</guid>
		<description><![CDATA[I was wondering why some people are using _path and why some use _url. For example, if you have a Post resource you can write the following in your view:
&#60;%= link_to 'List of posts', posts_path %&#62;
or the following in the controller:
redirect_to posts_url
Why should I use _url in the controller. I have used _path and it [...]]]></description>
			<content:encoded><![CDATA[<p>I was wondering why some people are using _path and why some use _url. For example, if you have a Post resource you can write the following in your view:</p>
<pre class="brush: ruby;">&lt;%= link_to 'List of posts', posts_path %&gt;</pre>
<p>or the following in the controller:</p>
<pre class="brush: ruby;">redirect_to posts_url</pre>
<p>Why should I use _url in the controller. I have used _path and it seems to work.</p>
<p>This is an explanation I found in a forum and I quote:</p>
<blockquote><p>
 *_path are for views because ahrefs are implicitly linked to the current URL. So it&#8217;d be a waste of bytes to repeat it over and over. In the controller, though, *_url is needed for redirect_to because the HTTP specification mandates that the Location: header in 3xx redirects is a complete URL.
</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://blog.7deeds.com/2009/09/21/rails-url-vs-path/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>A typical workflow for a team using Git</title>
		<link>http://blog.7deeds.com/2009/08/27/typical-workflow-team-using-git/</link>
		<comments>http://blog.7deeds.com/2009/08/27/typical-workflow-team-using-git/#comments</comments>
		<pubDate>Thu, 27 Aug 2009 13:28:43 +0000</pubDate>
		<dc:creator>Petros</dc:creator>
				<category><![CDATA[tips]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[ruby-on-rails]]></category>
		<category><![CDATA[self-note]]></category>

		<guid isPermaLink="false">http://blog.7deeds.com/?p=335</guid>
		<description><![CDATA[Lets assume you are in a team, working on a Rails project and you have chosen Git as your version control system. One way to complete a working cycle from pull to push is:
DISCLAIMER: There are more ways and many situations that are not described here. This is only a note to self that may [...]]]></description>
			<content:encoded><![CDATA[<p>Lets assume you are in a team, working on a Rails project and you have chosen Git as your version control system. One way to complete a working cycle from pull to push is:</p>
<p><em>DISCLAIMER: There are more ways and many situations that are not described here. This is only a note to self that may also be useful to you.</em></p>
<p><span id="more-335"></span></p>
<p><strong>Pull from your remote repository to make sure everything is up to date</strong></p>
<pre class="brush: bash; light: true;">git pull origin master</pre>
<p><strong>Create a new local branch for keeping your changes way from your local master branch</strong></p>
<pre class="brush: bash; light: true;">git branch my_new_feature</pre>
<p><strong>Switch to that branch and start working</strong></p>
<pre class="brush: bash; light: true;">git checkout my_new_feature</pre>
<p><strong>After finishing work and running successfully any cukes/specs/tests, commit</strong></p>
<pre class="brush: bash; light: true;">git commit -am &quot;Implemented my new super duper feature&quot;</pre>
<p><strong>Then, switch back to local master and pull if you need to also merge any changes since you first pulled</strong></p>
<pre class="brush: bash; light: true;">
git checkout master
git pull origin master
</pre>
<p><strong>Merge the local feature branch to master and run any cukes/specs/tests and if everything passes push changes</strong></p>
<pre class="brush: bash; light: true;">
git merge my_new_feature
git push origin master
</pre>
<p><strong>This is my preference: I delete the temporary local branch when everything is merged and pushed</strong></p>
<pre class="brush: bash; light: true;">git branch -d my_new_feature</pre>
<p>Update &#8211; Here is a more sophisticated approach: <a href="http://blog.hasmanythrough.com/2008/12/18/agile-git-and-the-story-branch-pattern">Agile git and the story branch pattern</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.7deeds.com/2009/08/27/typical-workflow-team-using-git/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Git log</title>
		<link>http://blog.7deeds.com/2009/08/25/git-log/</link>
		<comments>http://blog.7deeds.com/2009/08/25/git-log/#comments</comments>
		<pubDate>Tue, 25 Aug 2009 15:25:28 +0000</pubDate>
		<dc:creator>Petros</dc:creator>
				<category><![CDATA[tips]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[self-note]]></category>

		<guid isPermaLink="false">http://blog.7deeds.com/?p=327</guid>
		<description><![CDATA[When I am working with git, I find it useful to take a quick look at the log. The default

$ git log

command doesn&#8217;t show the actual modified/added/deleted files. You can use the following command for that:

$ git log --pretty --stat

or

$ git log --pretty=format:&#34;[%h] %ae, %ar: %s&#34; --stat

I found the latter in one of Alex Young&#8217;s [...]]]></description>
			<content:encoded><![CDATA[<p>When I am working with git, I find it useful to take a quick look at the log. The default</p>
<pre class="brush: bash; light: true;">
$ git log
</pre>
<p>command doesn&#8217;t show the actual modified/added/deleted files. You can use the following command for that:</p>
<pre class="brush: bash; light: true;">
$ git log --pretty --stat

or

$ git log --pretty=format:&quot;[%h] %ae, %ar: %s&quot; --stat
</pre>
<p>I found the latter in one of <a href="http://alexyoung.org/">Alex Young&#8217;s</a> tweets.</p>
<p>If you have any favorite git log formats, please feel free to mention them in a comment.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.7deeds.com/2009/08/25/git-log/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Installing RSpec and Cucumber</title>
		<link>http://blog.7deeds.com/2009/07/11/installing-rspec-and-cucumber/</link>
		<comments>http://blog.7deeds.com/2009/07/11/installing-rspec-and-cucumber/#comments</comments>
		<pubDate>Sat, 11 Jul 2009 08:29:15 +0000</pubDate>
		<dc:creator>Petros</dc:creator>
				<category><![CDATA[tips]]></category>
		<category><![CDATA[cucumber]]></category>
		<category><![CDATA[rspec]]></category>
		<category><![CDATA[ruby-on-rails]]></category>
		<category><![CDATA[self-note]]></category>

		<guid isPermaLink="false">http://blog.7deeds.com/?p=319</guid>
		<description><![CDATA[Open your shell and,
For RSpec:
$ gem install rspec
For Cucumber:
$ gem install cucumber
Optionally, if you are on Windows, for color output you can also install Win32Console:
$ gem install win32console
]]></description>
			<content:encoded><![CDATA[<p>Open your shell and,</p>
<p>For RSpec:</p>
<pre class="brush: bash; light: true;">$ gem install rspec</pre>
<p>For Cucumber:</p>
<pre class="brush: bash; light: true;">$ gem install cucumber</pre>
<p>Optionally, if you are on Windows, for color output you can also install Win32Console:</p>
<pre class="brush: bash; light: true;">$ gem install win32console</pre>
]]></content:encoded>
			<wfw:commentRss>http://blog.7deeds.com/2009/07/11/installing-rspec-and-cucumber/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Highrise SMS notifications</title>
		<link>http://blog.7deeds.com/2009/07/05/highrise-sms-notifications/</link>
		<comments>http://blog.7deeds.com/2009/07/05/highrise-sms-notifications/#comments</comments>
		<pubDate>Sun, 05 Jul 2009 03:44:38 +0000</pubDate>
		<dc:creator>Petros</dc:creator>
				<category><![CDATA[tips]]></category>
		<category><![CDATA[37signals]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[google-calendar]]></category>
		<category><![CDATA[highrise]]></category>
		<category><![CDATA[ical]]></category>

		<guid isPermaLink="false">http://blog.7deeds.com/?p=302</guid>
		<description><![CDATA[I really love Highrise. It is a 37signals service that helps you organise your contacts, your conversations with these contacts, cases, deals and tasks. Highrise also sends task notifications using SMS. Unfortunately it only supports specific providers for certain countries only. My country (Greece) as well as many other countries all over the world are [...]]]></description>
			<content:encoded><![CDATA[<p>I really love <a href="http://www.highrisehq.com/">Highrise</a>. It is a <a href="http://www.37signals.com/">37signals</a> service that helps you organise your contacts, your conversations with these contacts, cases, deals and tasks. Highrise also sends task notifications using SMS. Unfortunately it only supports specific providers for certain countries only. My country (<a href="http://en.wikipedia.org/wiki/Greece">Greece</a>) as well as many other countries all over the world are not included in that list. Nevertheless, I managed to make Highrise send notifications to my mobile phone through <a href="http://www.google.com/calendar">Google Calendar</a>.</p>
<p><span id="more-302"></span></p>
<p><strong>Step 1: Find out your Highrise iCalendar URL</strong></p>
<p>You do that by navigating to Tasks and looking at the bottom of the page for a link that says &#8220;Subscribe to your iCalendar task feed&#8221;. Clicking on that link will take you to another page where you can find your iCalendar URL. You copy that and you go to the next step.</p>
<p><strong>Step 2: Go to your Google Calendar</strong></p>
<p>Locate your &#8220;Other calendars&#8221; panel and click Add, to add a new calendar. Choose &#8220;Add by URL&#8221; in order to enter the iCalendar URL you found in the previous step.</p>
<div id="attachment_308" class="wp-caption aligncenter" style="width: 263px"><a href="http://blog.7deeds.com/2009/07/05/highrise-sms-notifications/2009-06-30_2158-google-calendar-add-by-url/" rel="attachment wp-att-308"><img src="http://blog.7deeds.com/wp-content/2009-06-30_2158-Google-Calendar-Add-By-URL.png" alt="Google Calendar Add By URL" title="Google Calendar Add By URL" width="253" height="182" class="size-full wp-image-308" /></a><p class="wp-caption-text">Google Calendar Add By URL</p></div>
<p>Enter the iCalendar URL in the &#8220;Public Calendar Access&#8221; field and press &#8220;Add&#8221;. That&#8217;s it. This calendar will automatically contain all your Highrise tasks. You can go to the calendar settings and add a default notification setting for SMS. That way, every Highrise task will end up in your mobile phone.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.7deeds.com/2009/07/05/highrise-sms-notifications/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CruiseControl.NET recent version control change behavior in 1.4.x</title>
		<link>http://blog.7deeds.com/2009/06/15/cruisecontrol-net-recent-version-control-change-behavior-in-1-4-x/</link>
		<comments>http://blog.7deeds.com/2009/06/15/cruisecontrol-net-recent-version-control-change-behavior-in-1-4-x/#comments</comments>
		<pubDate>Mon, 15 Jun 2009 17:13:38 +0000</pubDate>
		<dc:creator>Petros</dc:creator>
				<category><![CDATA[tips]]></category>
		<category><![CDATA[continuous-integration]]></category>
		<category><![CDATA[CruiseControl.NET]]></category>
		<category><![CDATA[version-control]]></category>

		<guid isPermaLink="false">http://blog.7deeds.com/?p=209</guid>
		<description><![CDATA[After changing to CruiseControl.NET 1.4.x, my builds started sending weird Subversion related error messages. You see, my CC.NET server is on a different computer and on a different network than my Subversion repositories server. As a result, CC.NET tries download modifications using the Internet.
If there are any connection problems that lead to a timeout, the [...]]]></description>
			<content:encoded><![CDATA[<p>After changing to CruiseControl.NET 1.4.x, my builds started sending weird Subversion related error messages. You see, my CC.NET server is on a different computer and on a different network than my Subversion repositories server. As a result, CC.NET tries download modifications using the Internet.</p>
<p><span id="more-209"></span>If there are any connection problems that lead to a timeout, the build is broken. In older CC.NET versions I could have no Internet for hours, without getting any broken builds or error messages.</p>
<p>CC.NET 1.4.x lets you control the new behavior using three version control related configuration tags on the project level. Here is a portion of a CC.NET configuration file that shows these tags:</p>
<p><script src="http://gist.github.com/130211.js"></script></p>
<p>Note that the parameters you see above are optimal for my topology. Yours may need different combinations.</p>
<p>maxSourceControlRetries instructs CC.NET how many times to retry if there is a problem communicating with your version control server.</p>
<p>stopProjectOnReachingMaxSourceControlRetries = true tells CC.NET to stop the project after reaching the maxSourceControlRetries. This helps because if the communication problem is permanent, you don&#8217;t want CC.NET trying to connect to the version control system again and again.</p>
<p>sourceControlErrorHandling = ReportOnRetryAmount instructs CC.NET to report the error after it reaches the maxSourceControlRetries.</p>
<p>You can find detailed explanation of each of the parameters above in the <a href="http://confluence.public.thoughtworks.org/display/CCNET/Documentation">CC.NET documentation</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.7deeds.com/2009/06/15/cruisecontrol-net-recent-version-control-change-behavior-in-1-4-x/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Use List(T) ForEach method instead of foreach</title>
		<link>http://blog.7deeds.com/2009/04/29/use-ilistforeach-instead-of-foreach/</link>
		<comments>http://blog.7deeds.com/2009/04/29/use-ilistforeach-instead-of-foreach/#comments</comments>
		<pubDate>Wed, 29 Apr 2009 20:06:29 +0000</pubDate>
		<dc:creator>Petros</dc:creator>
				<category><![CDATA[tips]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://blog.7deeds.com/?p=190</guid>
		<description><![CDATA[If you have the right .NET version you can use:

]]></description>
			<content:encoded><![CDATA[<p>If you have the right .NET version you can use:</p>
<p><script src="http://gist.github.com/128643.js"></script></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.7deeds.com/2009/04/29/use-ilistforeach-instead-of-foreach/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
