<?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>Ivan Kuznetsov</title>
	<atom:link href="http://www.ivankuznetsov.com/feed" rel="self" type="application/rss+xml" />
	<link>http://www.ivankuznetsov.com</link>
	<description>Web 2.0 entrepreneur, agile evangelist and consultant</description>
	<lastBuildDate>Wed, 10 Feb 2010 09:12:56 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>No space left on device &#8211; running out of Inodes</title>
		<link>http://www.ivankuznetsov.com/2010/02/no-space-left-on-device-running-out-of-inodes.html</link>
		<comments>http://www.ivankuznetsov.com/2010/02/no-space-left-on-device-running-out-of-inodes.html#comments</comments>
		<pubDate>Wed, 10 Feb 2010 09:12:56 +0000</pubDate>
		<dc:creator>Ivan Kuznetsov</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[file system]]></category>
		<category><![CDATA[Inode]]></category>
		<category><![CDATA[no space left]]></category>

		<guid isPermaLink="false">http://www.ivankuznetsov.com/?p=238</guid>
		<description><![CDATA[One of our development servers went down today. Problems started with deployment script that claimed that claimed &#8220;No space left on device&#8221;, although partition was not nearly full. If you ever run into such trouble &#8211; most likely you have too many small or 0-sized files on your disk, and while you have enough disk [...]]]></description>
			<content:encoded><![CDATA[<p>One of our development servers went down today. Problems started with deployment script that claimed that claimed &#8220;No space left on device&#8221;, although partition was not nearly full. If you ever run into such trouble &#8211; most likely you have too many small or 0-sized files on your disk, and while you have enough disk space, you have exhausted all available <a href="http://www.linfo.org/inode.html" target="_blank">Inodes</a>. Below is the solution for this problem.</p>
<p><span id="more-238"></span></p>
<p>1. check available disk space to ensure that you still have some</p>
<pre style="padding-left: 30px;">$ df

<span style="font-family: Consolas, Monaco, 'Courier New', Courier, monospace; line-height: 18px; font-size: 12px; white-space: pre;">Filesystem           1K-blocks      Used Available Use% Mounted on</span>
/dev/xvda             33030016  10407780  22622236  32% /
tmpfs                   368748         0    368748   0% /lib/init/rw
varrun                  368748        56    368692   1% /var/run
varlock                 368748         0    368748   0% /var/lock
udev                    368748       108    368640   1% /dev
tmpfs                   368748         0    368748   0% /dev/shm</pre>
<p>2. check available Inodes</p>
<pre style="padding-left: 30px;">$ df -i

<span style="font-family: Consolas, Monaco, 'Courier New', Courier, monospace; line-height: 18px; font-size: 12px; white-space: pre;">Filesystem            Inodes   IUsed   IFree IUse% Mounted on</span>
/dev/xvda            2080768 2080768       0  100% /
tmpfs                  92187       3   92184    1% /lib/init/rw
varrun                 92187      38   92149    1% /var/run
varlock                92187       4   92183    1% /var/lock
udev                   92187    4404   87783    5% /dev
tmpfs                  92187       1   92186    1% /dev/shm</pre>
<div>If you have IUse% at 100 or near, then huge number of small files is the reason for &#8220;No space left on device&#8221; errors.</div>
<p>3. find those little bastards</p>
<pre style="padding-left: 30px;">$ for i in /*; do echo $i; find $i |wc -l; done</pre>
<p>This command will list directories and number of files in them. Once you see a directory with unusually high number of files (or command just hangs over calculation for a long time), repeat the command for that directory to see where exactly the small files are.</p>
<pre style="padding-left: 30px;">$ for i in /home/*; do echo $i; find $i |wc -l; done</pre>
<p>4. once you found the suspect &#8211; just delete the files</p>
<pre style="padding-left: 30px;">$ sudo rm -rf /home/bad_user/directory_with_lots_of_empty_files</pre>
<p>You&#8217;re done. Check the results with df -i command again. You should see something like this:</p>
<pre style="padding-left: 30px;">Filesystem            Inodes   IUsed   IFree IUse% Mounted on

/dev/xvda            2080768  284431 1796337   14% /
tmpfs                  92187       3   92184    1% /lib/init/rw
varrun                 92187      38   92149    1% /var/run
varlock                92187       4   92183    1% /var/lock
udev                   92187    4404   87783    5% /dev
tmpfs                  92187       1   92186    1% /dev/shm</pre>
<a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fwww.ivankuznetsov.com%2F2010%2F02%2Fno-space-left-on-device-running-out-of-inodes.html&amp;linkname=No%20space%20left%20on%20device%20%26%238211%3B%20running%20out%20of%20Inodes"><img src="http://www.ivankuznetsov.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share/Bookmark"/></a>]]></content:encoded>
			<wfw:commentRss>http://www.ivankuznetsov.com/2010/02/no-space-left-on-device-running-out-of-inodes.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Git &#8211; revert or amend last commit</title>
		<link>http://www.ivankuznetsov.com/2010/01/git-revert-or-amend-last-commit.html</link>
		<comments>http://www.ivankuznetsov.com/2010/01/git-revert-or-amend-last-commit.html#comments</comments>
		<pubDate>Sat, 16 Jan 2010 20:15:53 +0000</pubDate>
		<dc:creator>Ivan Kuznetsov</dc:creator>
				<category><![CDATA[Software Development]]></category>

		<guid isPermaLink="false">http://www.ivankuznetsov.com/?p=232</guid>
		<description><![CDATA[Since we moved from SVN to git in HeiaHeia I had to revert or amend changes I accidentally committed or committed and pushed to git repository. This is not the most common operation, so I have to browse the documentation every time I do that. This is more of a memo to myself, which hopefully [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft" title="Git" src="http://upload.wikimedia.org/wikipedia/commons/thumb/e/e0/Git-logo.svg/71px-Git-logo.svg.png" alt="" width="71" height="26" />Since we moved from SVN to git in <a href="http://www.ivankuznetsov.com/2010/01/heiaheia-probably-the-most-fun-way-to-keep-fit-2.html">HeiaHeia</a> I had to revert or amend changes I accidentally committed or committed and pushed to git repository. This is not the most common operation, so I have to browse the documentation every time I do that. This is more of a memo to myself, which hopefully will be useful to others too.</p>
<p>Committed some changes, didn&#8217;t push them, and need to amend the commit:</p>
<pre>git commit --amend -a -m "Commit message"</pre>
<p>Committed some changes, pushed them, and need to amend the commit, do the revert operation instead, since someone might&#8217;ve already used your changes.</p>
<p>Committed some changes, didn&#8217;t push them, and need to undo the commit:</p>
<pre>git reset --hard HEAD<code>^</code></pre>
<p>This will just toss away the last commit completely.</p>
<p>Commited some changes, pushed them, and need to undo the commit:</p>
<pre>git revert HEAD</pre>
<p>This will automatically create a new commit, reverting the changes from the previous</p>
<a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fwww.ivankuznetsov.com%2F2010%2F01%2Fgit-revert-or-amend-last-commit.html&amp;linkname=Git%20%26%238211%3B%20revert%20or%20amend%20last%20commit"><img src="http://www.ivankuznetsov.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share/Bookmark"/></a>]]></content:encoded>
			<wfw:commentRss>http://www.ivankuznetsov.com/2010/01/git-revert-or-amend-last-commit.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Web hosting for internet startups</title>
		<link>http://www.ivankuznetsov.com/2010/01/web-hosting-for-internet-startups.html</link>
		<comments>http://www.ivankuznetsov.com/2010/01/web-hosting-for-internet-startups.html#comments</comments>
		<pubDate>Sat, 16 Jan 2010 18:02:41 +0000</pubDate>
		<dc:creator>Ivan Kuznetsov</dc:creator>
				<category><![CDATA[Dreamhost]]></category>
		<category><![CDATA[Linode]]></category>
		<category><![CDATA[Web/Tech]]></category>

		<guid isPermaLink="false">http://www.ivankuznetsov.com/?p=227</guid>
		<description><![CDATA[A lot of companies launching their own internet services have faced the same question &#8211; where to host. Over the course of the last few months I was asked for opinion on this matter several times. While I have no definitive answer, here are some recommendations.
Don&#8217;t start with maximum capacity, start small, and think about [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft" title="Linode" src="http://www.linode.com/images/linode_logo_gray.png" alt="" width="288" height="65" />A lot of companies launching their own internet services have faced the same question &#8211; where to host. Over the course of the last few months I was asked for opinion on this matter several times. While I have no definitive answer, here are some recommendations.</p>
<p>Don&#8217;t start with maximum capacity, start small, and think about scalability &#8211; how fast you can do it, and how you will do it. Then map the plans to what your selected hosting provider offers. Avoid temptation to use your own hardware, unless you really have resources for administering and maintaining it and a real need to have physical access to the servers. Even companies using their own hardware use virtualization to run virtual machines on top of physical ones.</p>
<p>Two years ago, when we were just experimenting with ideas of the social training log, a shared hosting option on Dreamhost gave us the best prices/features/quality combination. When we launched first closed version of the service named <a href="http://www.ivankuznetsov.com/2009/03/introducing-moozement.html">Moozement</a> at the time, we switched to Dreamhost VPS, which allowed enough flexibility and had reasonable pricing. For <a href="http://www.heiaheia.com" target="_blank">HeiaHeia</a> (<a href="http://www.ivankuznetsov.com/2010/01/heiaheia-probably-the-most-fun-way-to-keep-fit-2.html" target="_self">Moozement beta version</a>) we&#8217;ve chosen <a href="http://www.linode.com/?r=9fabdff6a260bde81ad4c6df63ec6a26f6940e94" target="_blank">Linode</a>, as it offers Xen virtualization (as opposed to Dreamhost&#8217;s VServer), servers with up to 14400Mb of RAM, easy resizing, wide selection of Linux distributions, and several data centres to choose from, including one in London. As HeiaHeia grows, we are preparing for the next step, but for now Linode proved to be excellent choice.</p>
<p>If your company is based in EU, you also need to remember about <a href="http://en.wikipedia.org/wiki/Data_Protection_Directive" target="_blank">EU Data Protection Directive</a> &#8211; your servers need to be physically located in one of the European Union countries or in the US with a provider following <a href="http://en.wikipedia.org/wiki/Safe_Harbor_Principles" target="_blank">Safe Harbor Principles</a>.</p>
<p>If you have no clue about how much CPU/RAM/traffic your application will need &#8211; check reference cases &#8211; there are plenty on the internet. Here are just a couple of examples: social network <a href="http://highscalability.com/blog/2009/9/22/how-ravelry-scales-to-10-million-requests-using-rails.html" target="_blank">Ravelry</a> and Facebook app <a href="http://highscalability.com/friends-sale-architecture-300-million-page-view-month-facebook-ror-app" target="_blank">Friends for Sale</a>.</p>
<p>Want second opinion? Check these:</p>
<ul>
<li>Teemu Kurppa from Huikea has a <a href="http://dirtyaura.org/blog/2009/09/22/programmer-friendly-virtual-private-server-hosts/" target="_blank">great write up on choosing hosting subject</a> &#8211; Teemu has chosen Slicehost</li>
</ul>
<ul>
<li>Eivind Uggedal has a <a href="http://journal.uggedal.com/vps-performance-comparison">very thorough comparison</a> of Slicehost, Linode, Prgmr, Rackspace and Amazon EC2 pricing and performance and arrives at a conclusion that Linode gives you best bang for the buck.</li>
</ul>
<p>In case you decide to use Linode, use <a href="http://www.linode.com/?r=9fabdff6a260bde81ad4c6df63ec6a26f6940e94">this referral link</a> to give us some reward <img src='http://www.ivankuznetsov.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>If you&#8217;re planning to host a low traffic service, and don&#8217;t want to spend much time on system administration &#8211; Dreamhost is a great starting point. And as I <a href="http://www.ivankuznetsov.com/2008/03/radiant-cms.html">already wrote earlier</a>, <a href="http://www.dreamhost.com/">Dreamhost</a> provides excellent value for money. If you are looking for a good hosting – use IVANKUZNETSOV promocode and get a $50 discount when setting up an account on Dreamhost.</p>
<a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fwww.ivankuznetsov.com%2F2010%2F01%2Fweb-hosting-for-internet-startups.html&amp;linkname=Web%20hosting%20for%20internet%20startups"><img src="http://www.ivankuznetsov.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share/Bookmark"/></a>]]></content:encoded>
			<wfw:commentRss>http://www.ivankuznetsov.com/2010/01/web-hosting-for-internet-startups.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>HeiaHeia &#8211; probably the most fun way to keep fit!</title>
		<link>http://www.ivankuznetsov.com/2010/01/heiaheia-probably-the-most-fun-way-to-keep-fit-2.html</link>
		<comments>http://www.ivankuznetsov.com/2010/01/heiaheia-probably-the-most-fun-way-to-keep-fit-2.html#comments</comments>
		<pubDate>Sat, 16 Jan 2010 12:48:42 +0000</pubDate>
		<dc:creator>Ivan Kuznetsov</dc:creator>
				<category><![CDATA[HeiaHeia]]></category>

		<guid isPermaLink="false">http://www.ivankuznetsov.com/?p=224</guid>
		<description><![CDATA[




Wow, what an autumn it has been! It has come and gone so fast. By Christmas 2009 a major milestone was reached &#8211; Moozement moved from Alpha to Beta phase. Most of my time and efforts went into development of the service &#8211; and it was exciting time of super intensive work in a small, [...]]]></description>
			<content:encoded><![CDATA[<div class="mceTemp">
<dl class="wp-caption alignleft" style="width: 369px;">
<dt class="wp-caption-dt"><img title="HeiaHeia" src="http://www.heiaheia.com/images/heiaheia_logo.png?1263594504" alt="" width="359" height="63" /></dt>
</dl>
</div>
<p>Wow, what an autumn it has been! It has come and gone so fast. By Christmas 2009 a major milestone was reached &#8211; <a href="http://www.ivankuznetsov.com/2009/03/introducing-moozement.html">Moozement</a> moved from Alpha to Beta phase. Most of my time and efforts went into development of the service &#8211; and it was exciting time of super intensive work in a small, but very dedicated team.</p>
<p>Beta version brought with it new professional design, easier to use interface, new interaction concepts, new sports, new faster servers.  We decided to change the name of the service as well and were inspired by a hypnotic <em>Heia</em>! <em>Heia</em>! chant that Norwegians use to support their cross-country skiers and other athletes. We named our service <a href="http://www.heiaheia.com" target="_blank">HeiaHeia</a> to give it a spell of positive cheering among friends.</p>
<p>Sports and wellbeing are hot markets both regarding hardware and web service innovation. HeiaHeia&#8217;s focus is on the social aspect of sports – mastering the ways in which friends can motivate each other in a positive spirit, without being overly competitive. The difference between us and most of the other players is that we want to provide a service which anybody can use. You don&#8217;t need any kind of technical gear to use the service, and the service itself is as easy to use as Facebook.</p>
<p>The HeiaHeia philosophy on sports is that everything counts. HeiaHeia already supports over 250 different types of sports, most of them requested by users of the service. Understanding user behaviour and user requests will remain a guiding principle in the development of HeiaHeia.</p>
<p>Work doesn&#8217;t stop here, and new functionalities will be introduced on a weekly basis going forward, in a true Web 2.0 mode of development.We are looking forward to a very exciting year ahead.</p>
<a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fwww.ivankuznetsov.com%2F2010%2F01%2Fheiaheia-probably-the-most-fun-way-to-keep-fit-2.html&amp;linkname=HeiaHeia%20%26%238211%3B%20probably%20the%20most%20fun%20way%20to%20keep%20fit%21"><img src="http://www.ivankuznetsov.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share/Bookmark"/></a>]]></content:encoded>
			<wfw:commentRss>http://www.ivankuznetsov.com/2010/01/heiaheia-probably-the-most-fun-way-to-keep-fit-2.html/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Agile distributed team &#8211; using chat to run scrum meetings</title>
		<link>http://www.ivankuznetsov.com/2009/10/agile-distributed-team-using-chat-to-run-scrum-meetings.html</link>
		<comments>http://www.ivankuznetsov.com/2009/10/agile-distributed-team-using-chat-to-run-scrum-meetings.html#comments</comments>
		<pubDate>Mon, 19 Oct 2009 16:42:53 +0000</pubDate>
		<dc:creator>Ivan Kuznetsov</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[remote work]]></category>
		<category><![CDATA[scrum]]></category>

		<guid isPermaLink="false">http://www.ivankuznetsov.com/?p=212</guid>
		<description><![CDATA[The current development team that I&#8217;m working in is really small &#8211; just 2 software gurus, a product owner and me as a scum-master/system admninistrator/part-time developer/architect.
Our team is distributed to the extent that sometimes all four of us are located in different places during our meetings &#8211; but time zones difference is in most of [...]]]></description>
			<content:encoded><![CDATA[<p>The current development team that I&#8217;m working in is really small &#8211; just 2 software gurus, a product owner and me as a scum-master/system admninistrator/part-time developer/architect.</p>
<p>Our team is distributed to the extent that sometimes all four of us are located in different places during our meetings &#8211; but time zones difference is in most of the cases withing 1-2 hours. Up until recently some of us didn&#8217;t have a permanent office and had to participate in daily scrum meetings, and sprint planning/reviews from public open spaces.<span id="more-212"></span></p>
<p>We tired to use Skype, but flakiness of wireless in some locations and sometimes just insufficient bandwith quickly rendered it as a non-viable option. Even with commercial telco systems it is quite often that people spend first 10 minutes of the meeting on making sure that everyone is on the line and can hear the other party &#8211; can be really frustrating, especially when the meeting is supposed to last for 15 minutes.</p>
<p>In the end we started using Google Talk for daily scrum meetings and for sprint planning / reviews as well. Works really good &#8211; keeps reports short and to the point. No time is lost on setting up voice connections and exchanging &#8220;can you hear me &#8211; you are breaking up&#8221;.</p>
<p>I believe two major factors that contribute to success use of chat are that:<br />
1. the team is small and<br />
2. everyone is in equal position</p>
<p>When a part of the team is located in the same physical space and there is just one or two people on the other side of the telephone &#8211; most important discussions tend to take place face-2-face, and remote members of the team are excluded. Using chat ensures that those team members who happen to be in the same office are talking to each other the same way as if they were remote.</p>
<p>It would be interesting to hear experiences from other teams that are running scrum with chat as primary means of communication.</p>
<a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fwww.ivankuznetsov.com%2F2009%2F10%2Fagile-distributed-team-using-chat-to-run-scrum-meetings.html&amp;linkname=Agile%20distributed%20team%20%26%238211%3B%20using%20chat%20to%20run%20scrum%20meetings"><img src="http://www.ivankuznetsov.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share/Bookmark"/></a>]]></content:encoded>
			<wfw:commentRss>http://www.ivankuznetsov.com/2009/10/agile-distributed-team-using-chat-to-run-scrum-meetings.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Upgrading iPhone firmware using VMWare and Ubuntu 9.04</title>
		<link>http://www.ivankuznetsov.com/2009/10/upgrading-iphone-firmware-using-vmware-and-ubuntu-9-04.html</link>
		<comments>http://www.ivankuznetsov.com/2009/10/upgrading-iphone-firmware-using-vmware-and-ubuntu-9-04.html#comments</comments>
		<pubDate>Wed, 14 Oct 2009 07:35:10 +0000</pubDate>
		<dc:creator>Ivan Kuznetsov</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[iPhone]]></category>

		<guid isPermaLink="false">http://www.ivankuznetsov.com/?p=210</guid>
		<description><![CDATA[This was the second time I upgrade firmware on my iPhone, and second time I ran into the same problem.  In the middle of the update iTunes reports &#8220;Unknown error&#8221; and iPhone dies (well, goes into recovery mode, but it is not much help). If that happened to you, don&#8217;t panic! To make this geeky [...]]]></description>
			<content:encoded><![CDATA[<p>This was the second time I upgrade firmware on my iPhone, and second time I ran into the same problem.  In the middle of the update iTunes reports &#8220;Unknown error&#8221; and iPhone dies (well, goes into recovery mode, but it is not much help). If that happened to you, don&#8217;t panic! To make this geeky combination (Ubuntu 9.04, VMware, iTunes and iPhone software update) work, there&#8217;s a little trick you need to do.<span id="more-210"></span>My setup:</p>
<p>- iPhone 3G 8Gb Sonera<br />
- Ubuntu Linux 9.04 (Jaunty) on Lenovo T61 laptop, kernel 2.6.28-15<br />
- VMware player 2.5.3<br />
- guest OS: WinXP Home SP3 with iTunes 9.0.1.8</p>
<p>goal: upgrading firmware to 3.1.2</p>
<p>I used instructions on <a href="http://freshfoo.com/blog/iphone_upgrade_with_vmware" target="_blank">Menno Smits&#8217; blog</a>. Here&#8217;s the summary:</p>
<p>1. Create a file /etc/modprobe.d/blacklist-usb</p>
<blockquote><p>sudo vim /etc/modprobe.d/blacklist-usb</p></blockquote>
<p>2. Add usb modules not to be loaded into that file</p>
<blockquote><p>blacklist snd_usb_audio<br />
blacklist usbhid</p></blockquote>
<p>I didn&#8217;t list ehci_hcd, and it still worked. By the way, USB HID stands for USB Human Interface Device, and blacklisting it might disable your USB mouse and keyboard as well. See a link in the end of the post how to work around it.</p>
<p>3. Unload blacklisted modules manually, in case if they have been loaded already</p>
<blockquote><p>sudo /sbin/modprobe -r snd_usb_audio<br />
sudo /sbin/modprobe -r usbhid</p></blockquote>
<p>4. Reload kernel event manager for the changes to take effect</p>
<blockquote><p>sudo /etc/init.t/udev reload</p></blockquote>
<p>5. Restart VMware and make sure you also restart Windows in VMware (it took me seveal attempts to figure that this was the problem)</p>
<p>6. Now start iPhone software update in iTunes or &#8220;restore and update&#8221;, if you already tried without disabling usbhid and got your iPhone into recovery mode.</p>
<p>7. After update is complete, remove the blacklist file and restart kernel event manager again</p>
<blockquote><p>sudo rm /etc/modprobe.d/blacklist-usb<br />
sudo /etc/init.t/udev reload</p></blockquote>
<p>If iTunes in WMware do not see iPhone, make sure that it is connected in VMware removable devices menu. Note that during firmware update iPhone might get disconnected &#8211; just connect it again using VMware removable devices menu.</p>
<p>I tried to verify suggestion from <a href="http://teknofire.net/articles/2009/01/08/using-linux-and-vmware-to-update-iphone-firmware/" target="_blank">Will</a> to disable only iPhone in ubuntu, using its USB ID, but don&#8217;t actually know if it worked, because I didn&#8217;t restart Windows in WMware and restore and update failed. Here&#8217;s what I did:</p>
<p>- connected iPhone and checked its USB ID:</p>
<blockquote><p>$ lsusb</p>
<p>Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub<br />
Bus 007 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub<br />
Bus 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub<br />
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub<br />
Bus 001 Device 024: ID 05ac:1292 Apple, Inc.<br />
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub<br />
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub<br />
Bus 003 Device 004: ID 0a5c:2110 Broadcom Corp. Bluetooth Controller<br />
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub</p></blockquote>
<p>- created a file /etc/modprobe.d/usbhid</p>
<blockquote><p>sudo vim /etc/modprobe.d/usbhid</p></blockquote>
<p>with the following content</p>
<blockquote><p>options usbhid quirks=0×05ac:0×1292:0×04</p></blockquote>
<p>where 0&#215;1292 is the USB ID displayed by lsusb command, and 0&#215;04 is the instruction to ignore device with specified USB ID.</p>
<p>- did everything as isteps 1-7 except that I didn&#8217;t blacklist usbhid and didn&#8217;t unload it manually.</p>
<p>It would be interesting to know if anyone succeeds with iPhone firmware update on Ubuntu without blacklisting usbhid module completely.</p>
<a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fwww.ivankuznetsov.com%2F2009%2F10%2Fupgrading-iphone-firmware-using-vmware-and-ubuntu-9-04.html&amp;linkname=Upgrading%20iPhone%20firmware%20using%20VMWare%20and%20Ubuntu%209.04"><img src="http://www.ivankuznetsov.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share/Bookmark"/></a>]]></content:encoded>
			<wfw:commentRss>http://www.ivankuznetsov.com/2009/10/upgrading-iphone-firmware-using-vmware-and-ubuntu-9-04.html/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Setting up Ruby, Rails, Git and Redmine on Dreamhost</title>
		<link>http://www.ivankuznetsov.com/2009/07/setting-up-ruby-rails-git-and-redmine-on-dreamhost.html</link>
		<comments>http://www.ivankuznetsov.com/2009/07/setting-up-ruby-rails-git-and-redmine-on-dreamhost.html#comments</comments>
		<pubDate>Thu, 30 Jul 2009 14:58:27 +0000</pubDate>
		<dc:creator>Ivan Kuznetsov</dc:creator>
				<category><![CDATA[Dreamhost]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Ruby on Rails]]></category>
		<category><![CDATA[Web/Tech]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[redmine]]></category>
		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://www.ivankuznetsov.com/?p=195</guid>
		<description><![CDATA[The task is to have:
- Redmine installation on redmine.mydomain.com
- Several Git repositories on git.mydomain.com with different access rights to each one
This proved to be a non-trivial task. There is a number of tutorials on the net, but none of them described the full solution. So after getting it all to work, I decided to share [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-196" title="Git, RedMine, Ruby, Rails on Dreamhost" src="http://www.ivankuznetsov.com/wp-content/uploads/git.png" alt="Git, RedMine, Ruby, Rails on Dreamhost" width="200" height="150" />The task is to have:<br />
- Redmine installation on redmine.mydomain.com<br />
- Several Git repositories on git.mydomain.com with different access rights to each one</p>
<p>This proved to be a non-trivial task. There is a number of tutorials on the net, but none of them described the full solution. So after getting it all to work, I decided to share all the tips and tricks. Feel free to comment, if you will find problems with the following set of instructions.<br />
<span id="more-195"></span>SSH to redmine.mydomain.com as a user that will be running Redmine (in the following examples it will be &#8216;redmine_user&#8217;).<br />
First, you need to compile openssl &#8211; it will be required for curl, git and redmine.</p>
<pre>mkdir ~/tmp
cd ~/tmp
wget http://www.openssl.org/source/openssl-0.9.8k.tar.gz
tar xzvf openssl-0.9.8k.tar.gz
cd openssl-0.9.8k
./config shared zlib --prefix=$HOME/.packages
make
make install</pre>
<p>Let&#8217;s tell the world that we keep binaries and libraries also in the local directory. Edit ~/.bashrc (it is used by all non-login shells):</p>
<pre>export TZ='Europe/Helsinki'
export PATH="$HOME/.packages/bin:$PATH"
export LD_LIBRARY_PATH="$HOME/.packages/lib"
export GEM_HOME="$HOME/.gems"
export GEM_PATH="$GEM_HOME:/usr/lib/ruby/gems/1.8"
export PATH="$HOME/.packages/bin:$HOME/.gems/bin:$PATH"
export RUBYLIB="$HOME/.packages/lib:$RUBYLIB"
export LD_LIBRARY_PATH="$HOME/.packages/lib"

# this ensures our gem install processes don't get killed by the DreamHost police
alias gem="nice -n19 ~/.packages/bin/gem"</pre>
<p>(You can skip TZ &#8211; it is just usefule to have correct time set for your environment. Use tzselect to find out correct TZ string for your region)</p>
<p>And edit ~/.bash_profile (it is used by login shells):</p>
<pre>umask 002
PS1='[\h:$PWD]$ '
alias ll="ls -l"
EDITOR="/usr/bin/vim"
. .bashrc</pre>
<p>Now let&#8217;s apply the changes in active shell:</p>
<pre>cd ~ : . .bash_profile</pre>
<p>Then you need to compile curl, to be able to compile git with curl and execute clone commands on your server.</p>
<pre>cd ~/tmp
wget http://curl.haxx.se/download/curl-7.19.5.tar.gz
tar xzvf curl-7.19.5.tar.gz
cd curl-7.19.5
./configure --prefix=$HOME/.packages --with-ssl=$HOME/.packages
make
make install</pre>
<p>Now get and compile Git. If you are not using Dreamhost PS, you might want to compile it with NO_MMPAP=1, to reduce<br />
probability of git process getting killed by Dreamhost police robots due to extensive memory</p>
<pre>cd ~/tmp
wget http://www.kernel.org/pub/software/scm/git/git-1.6.4.tar.gz
tar xzvf git-1.6.4.tar.gz
cd git-1.6.4
./configure --prefix=$HOME/.packages --with-curl=$HOME/.packages
make
make install</pre>
<p>Let&#8217;s start with ruby and rails related stuff. First readline library is needed, for script/console to work.</p>
<pre>cd ~/tmp
wget http://ftp.gnu.org/gnu/readline/readline-5.2.tar.gz
tar xzvf readline-5.2.tar.gz
cd readline-5.2
./configure --prefix=$HOME/.packages
make
make install</pre>
<p>Install ruby:</p>
<pre>cd ~/tmp
wget ftp://ftp.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p72.tar.gz
tar zxvf ruby-1.8.7-p72.tar.gz
cd ruby-1.8.7-p72
./configure --prefix=$HOME/.packages --with-openssl-dir=$HOME/.packages --with-readline-dir=$HOME/.packages
make
make install</pre>
<p>Install rubygems:</p>
<pre>cd ~/tmp
wget http://rubyforge.org/frs/download.php/60718/rubygems-1.3.5.tgz
tar zxvf rubygems-1.3.5.tgz
cd rubygems-1.3.5
ruby setup.rb config --prefix=$HOME/.packages
ruby setup.rb setup
ruby setup.rb install</pre>
<p>Now you can install all required gems and freeze them if necessary.</p>
<p><strong>Installing RedMine</strong></p>
<p>Refer to <a href="http://wiki.dreamhost.com/Redmine" target="_blank">http://wiki.dreamhost.com/Redmine</a> for details.</p>
<p>But there&#8217;s one trick &#8211; if you want RedMine to use just compiled version of Git &#8211; edit in lib/redmine/scm/adapters/git_adapter.rb:</p>
<pre># Git executable name
GIT_BIN = "/home/username/.packages/bin/git"</pre>
<p>If this is not done, default Dreamhost git will be used (which is too old at the moment 1.4.4.4) and Git repository browsing will not work in RedMine<br />
(see <a href="http://groups.google.com/group/phusion-passenger/browse_thread/thread/5080d7c7cfbcf20e" target="_blank">http://groups.google.com/group/phusion-passenger/browse_thread/thread/5080d7c7cfbcf20e</a>).</p>
<p><strong>Setting up Git repository</strong></p>
<p>Refer to <a href="http://wiki.dreamhost.com/Git" target="_blank">http://wiki.dreamhost.com/Git</a> for details.</p>
<p>Couple of tricks here. There are bugs in WebDAV functionality in Ubuntu &#8211; so if you&#8217;re using it &#8211; launch Nautilus, use &#8220;File-&gt;Connect to server&#8230;&#8221; menu from there (not from the system menu), don&#8217;t enter user name in the dialog &#8211; leave it empty and enter it when you&#8217;re requested username and password in the next dialog.</p>
<p>When setting up WebDAV access rights, give access to user &#8220;redmine&#8221;.</p>
<p><strong>Setting Git repository copy for Redmine</strong></p>
<p>Create ~/.netrc for your redmine user on Dreamhost</p>
<p>Insert the following line in that file</p>
<pre>machine git.mydomain.com login redmine password [redmine_password]</pre>
<p>where redmine_password is the password you gave to user redmine in the previous step.<br />
.netrc will ensure that password is not asked when git is accessing the repository.<br />
You don&#8217;t need to bother about creating .netrc if you have a public repository (or at least available for cloning without password).</p>
<p><strong>Create a local copy of the repository</strong></p>
<p>For RedMine to be able to display Git repository, it needs to have a local clone of the repository.</p>
<pre>mkdir ~/git_project_clones
cd git_project_clones
git clone http://git.mydomain.com/repository_name</pre>
<p>Now you should have a local copy that can be used from RedMine.<br />
All you have left to do is to set up regular pulls from the master repository to this local copy. Use command</p>
<pre>crontab -e</pre>
<p>Add the following line to pull latest change into local copy every 5 minutes:</p>
<pre>*/5 * * * * cd /home/redmine_user/git_project_clones/repository_name &amp;&amp; /home/redmine_user/.packages/bin/git pull</pre>
<p>Make sure that you specify full path to git &#8211; otherwise it will execute Dreamhost default git 1.4.4.4 and command will fail with &#8220;refusing to create funny ref &#8216;remotes/origin/*&#8217; locally&#8221; error.</p>
<p>Save and exit cron editor.</p>
<p>(You might also want to check Redmine own wiki: <a href="http://www.redmine.org/wiki/redmine/HowTo_keep_in_sync_your_git_repository_for_redmine" target="_blank">http://www.redmine.org/wiki/redmine/HowTo_keep_in_sync_your_git_repository_for_redmine</a>)</p>
<p>Set repository in the settings of your project in RedMine: /home/redmine_user/git_project_clones/repository_name/.git</p>
<p>Now you need to manually update Git repository changesets in RedMine:</p>
<pre>cd ~/mydomain.com
script/runner "Repository.fetch_changesets" -e production</pre>
<p>And set a hook to your repository to do this every time repository is updated &#8211; edit ~/git_project_clones/repository_name/.git/hooks/post-update file and add the following command ther:</p>
<pre>cd /home/redmine_user/mydomain.com &amp;&amp; script/runner "Repository.fetch_changesets" -e production</pre>
<p>When writing this blogpost I found a lot of useful information on Dreamhost own wiki as well on these blog posts:<br />
<a href="http://www.wavethenavel.com/2008/09/08/bootstrapping-a-dreamhost-account-for-rails-and-git/" target="_blank"> http://www.wavethenavel.com/2008/09/08/bootstrapping-a-dreamhost-account-for-rails-and-git/</a><br />
<a href="http://juliobiason.net/2008/05/19/git-repositories-on-dreamhost-via-ssh/" target="_blank"> http://juliobiason.net/2008/05/19/git-repositories-on-dreamhost-via-ssh/</a><br />
<a href="http://www.simonecarletti.com/blog/2009/07/configuring-git-repository-with-redmine/" target="_blank"> http://www.simonecarletti.com/blog/2009/07/configuring-git-repository-with-redmine/</a></p>
<a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fwww.ivankuznetsov.com%2F2009%2F07%2Fsetting-up-ruby-rails-git-and-redmine-on-dreamhost.html&amp;linkname=Setting%20up%20Ruby%2C%20Rails%2C%20Git%20and%20Redmine%20on%20Dreamhost"><img src="http://www.ivankuznetsov.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share/Bookmark"/></a>]]></content:encoded>
			<wfw:commentRss>http://www.ivankuznetsov.com/2009/07/setting-up-ruby-rails-git-and-redmine-on-dreamhost.html/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Migrating domain emails to Google Apps mail</title>
		<link>http://www.ivankuznetsov.com/2009/07/migrating-domain-emails-to-google-apps-mail.html</link>
		<comments>http://www.ivankuznetsov.com/2009/07/migrating-domain-emails-to-google-apps-mail.html#comments</comments>
		<pubDate>Sat, 04 Jul 2009 10:52:53 +0000</pubDate>
		<dc:creator>Ivan Kuznetsov</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[email]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[hosting]]></category>
		<category><![CDATA[system administration]]></category>

		<guid isPermaLink="false">http://www.ivankuznetsov.com/?p=188</guid>
		<description><![CDATA[ While performing some administrative tasks on one of the domains I maintain, I decided that the time has come to switch to a modern and reliable solution &#8211; Google Mail.
If you have an IMAP mailbox hosted somewhere and you want to move it to Google, then do the following (example is set for migrating [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-193" title="logo" src="http://www.ivankuznetsov.com/wp-content/uploads/logo.gif" alt="logo" width="143" height="59" /> While performing some administrative tasks on one of the domains I maintain, I decided that the time has come to switch to a modern and reliable solution &#8211; Google Mail.</p>
<p>If you have an IMAP mailbox hosted somewhere and you want to move it to Google, then do the following (example is set for migrating from Dreamhost, but can be used on any other IMAP mailbox):</p>
<p>1. <a href="http://www.google.com/a/cpanel/domain/new">Register at Google Apps for your domain</a></p>
<p>2. <a href="https://www.google.com/a/cpanel/vse.fi/CreateUser">Re-create your email accounts</a></p>
<p>3. Log in to  shell on your hosting and execute the following command:</p>
<blockquote>
<pre> mailutil transfer -verbose -merge append \
   '{a1.balanced.&lt;your-dreamhost-mail-server&gt;.mail.dreamhost.com\
   /imap/ssl/novalidate-cert/user=&lt;your-dreamhost-username&gt;}' \
   '{imap.gmail.com/ssl/user=&lt;your-gmail-username&gt;}'</pre>
</blockquote>
<p><em>&lt;your-dreamhost-username&gt;</em> is the name you use for logging into your existing IMAP mailbox &#8211; e.g. info@mydomain.com<br />
<em> &lt;your-dreamhost-username&gt;</em> is the name you use for logging into your Gmail account (just username if you&#8217;re migrating to @gmail account or username@domain.com if you&#8217;re migrating to Google Apps account</p>
<p>4. Enter first password to your existing IMAP account, then password to your Gmail account</p>
<p>5. Voilà &#8211; prepare that this can be a long running operation, especially if you have a lot of mails.</p>
<p><em>(Thanks to <a href="http://forum.dreamhosters.com/troubleshooting/104513-migrating-email-to-Gmail.htm">joyjit</a> for advice)</em></p>
<a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fwww.ivankuznetsov.com%2F2009%2F07%2Fmigrating-domain-emails-to-google-apps-mail.html&amp;linkname=Migrating%20domain%20emails%20to%20Google%20Apps%20mail"><img src="http://www.ivankuznetsov.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share/Bookmark"/></a>]]></content:encoded>
			<wfw:commentRss>http://www.ivankuznetsov.com/2009/07/migrating-domain-emails-to-google-apps-mail.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ArcticStartup on Moozement</title>
		<link>http://www.ivankuznetsov.com/2009/05/arcticstartup-on-moozement.html</link>
		<comments>http://www.ivankuznetsov.com/2009/05/arcticstartup-on-moozement.html#comments</comments>
		<pubDate>Mon, 18 May 2009 08:39:04 +0000</pubDate>
		<dc:creator>Ivan Kuznetsov</dc:creator>
				<category><![CDATA[HeiaHeia]]></category>

		<guid isPermaLink="false">http://www.ivankuznetsov.com/?p=181</guid>
		<description><![CDATA[Ville Vesterinen from Arctic Startup published a nice and encouraging piece on Moozement. The observations on what Moozement is, what it’s most useful for, the current state of development (early stage, but we very much believe we’re onto something), and the direction of future development, very much resonate with our own thinking. There&#8217;s also a [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-182" style="padding-right: 5px;" title="moozementdevs" src="http://www.ivankuznetsov.com/wp-content/uploads/moozementdevs.jpg" alt="moozementdevs" width="92" height="92" />Ville Vesterinen from <a onclick="javascript:pageTracker._trackPageview('/outbound/article/www.arcticstartup.com');" href="http://www.arcticstartup.com/">Arctic Startup</a> published <a onclick="javascript:pageTracker._trackPageview('/outbound/article/www.arcticstartup.com');" href="http://www.arcticstartup.com/2009/05/15/moozement-a-simplified-training-log-for-sharing-your-activities/" target="_blank">a nice and encouraging piece on Moozement</a>. The observations on what Moozement is, what it’s most useful for, the current state of development (early stage, but we very much believe we’re onto something), and the direction of future development, very much resonate with our own thinking. There&#8217;s also a video interview with me <img src='http://www.ivankuznetsov.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fwww.ivankuznetsov.com%2F2009%2F05%2Farcticstartup-on-moozement.html&amp;linkname=ArcticStartup%20on%20Moozement"><img src="http://www.ivankuznetsov.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share/Bookmark"/></a>]]></content:encoded>
			<wfw:commentRss>http://www.ivankuznetsov.com/2009/05/arcticstartup-on-moozement.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Adopting an Agile Mindset</title>
		<link>http://www.ivankuznetsov.com/2009/05/adopting-an-agile-mindset.html</link>
		<comments>http://www.ivankuznetsov.com/2009/05/adopting-an-agile-mindset.html#comments</comments>
		<pubDate>Mon, 18 May 2009 08:23:08 +0000</pubDate>
		<dc:creator>Ivan Kuznetsov</dc:creator>
				<category><![CDATA[Agile]]></category>

		<guid isPermaLink="false">http://www.ivankuznetsov.com/?p=169</guid>
		<description><![CDATA[There are a lot of books written about Agile. One can easily spend hundreds of euros on books and thousands on training courses. Sure, if your organisation has time and money, it makes sense to stockpile books and send entire development team for training courses. From my experience, what it really takes for a team [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-176" style="padding-right: 5px;" title="postits" src="http://www.ivankuznetsov.com/wp-content/uploads/postits.jpg" alt="postits" width="200" height="132" />There are a lot of books written about Agile. One can easily spend hundreds of euros on books and thousands on training courses. Sure, if your organisation has time and money, it makes sense to stockpile books and send entire development team for training courses. From my experience, what it really takes for a team to adopt agile mindset is an evangelist inside the team, and a good understanding of the basic concepts. Then it is just talking to the people who went through similar experience of adopting agile, sharing experiences and experimenting.</p>
<p>There are three very informative and inspirational sources of information that I recommend to all teams starting with agile or looking for some extra motivation:</p>
<p>1. Henrik Kniberg&#8217;s &#8220;Scrum and XP from the Trenches&#8221; (http://www.infoq.com/minibooks/scrum-xp-from-the-trenches). Available as free PDF after registration.</p>
<p>Extremely good source of information, tips and tricks, pitfalls and how to avoid them, planning ans estimation techniques. Henrik is speaking out of his own experience, which makes this book extremely valuable. You can read this book in just a few hours.</p>
<p>2.Ken Schwaber&#8217;s talk &#8220;Scrum et al.&#8221; at Google</p>
<p><object width="360" height="270" data="http://video.google.com/googleplayer.swf?docid=-7230144396191025011&amp;hl=en&amp;fs=true" type="application/x-shockwave-flash"><param name="id" value="VideoPlayback" /><param name="src" value="http://video.google.com/googleplayer.swf?docid=-7230144396191025011&amp;hl=en&amp;fs=true" /><param name="allowfullscreen" value="true" /></object></p>
<p>Ken is is a founder of the <span class="searchword0">Agile</span> Alliance and Scrum Alliance, and signatory to the <a href="http://agilemanifesto.org/" target="_blank"><span class="searchword0">Agile</span> Manifesto</a>.</p>
<p>One hour of valuable information &#8211; and hopefully after watching this video you will not try to adopt agile and scrum where it is going to do more harm than good.</p>
<p>3. Agile Manifesto (http://agilemanifesto.org/)</p>
<p>Print it out and pin it to the wall, so you can see it every day. Doing Agile and Scrum &#8220;by the book&#8221; never works &#8211; there&#8217;s no book that can tell you what the process should be. Not only because each team has its unique qualities and each organisation has its own constraints, but most importantly because agile is all about changing the process with every iteration &#8211; improving it and adopting to the changing reality.</p>
<a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fwww.ivankuznetsov.com%2F2009%2F05%2Fadopting-an-agile-mindset.html&amp;linkname=Adopting%20an%20Agile%20Mindset"><img src="http://www.ivankuznetsov.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share/Bookmark"/></a>]]></content:encoded>
			<wfw:commentRss>http://www.ivankuznetsov.com/2009/05/adopting-an-agile-mindset.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
