<?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>Tim Bowler</title>
	<atom:link href="http://timothybowler.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://timothybowler.com</link>
	<description>Certified Scrum Master &#124; Certified Scrum Practitioner &#124; Agile Coach</description>
	<lastBuildDate>Sat, 19 Dec 2009 16:14:31 +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>XP day 2009</title>
		<link>http://timothybowler.com/2009/12/19/xp-day-2009/</link>
		<comments>http://timothybowler.com/2009/12/19/xp-day-2009/#comments</comments>
		<pubDate>Sat, 19 Dec 2009 16:14:31 +0000</pubDate>
		<dc:creator>Tim Bowler</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Lean]]></category>
		<category><![CDATA[Project Management]]></category>
		<category><![CDATA[kanban]]></category>

		<guid isPermaLink="false">http://timothybowler.com/?p=275</guid>
		<description><![CDATA[XP Day
This was my second year at xpday and I can honestly say it excellent. This year&#8217;s programme really suited my personal agenda of lean software development, kanban and test driven development (TDD). Also the programme&#8217;s open space structure changed, but in a good way for me. The open space sessions occupied most of the [...]]]></description>
			<content:encoded><![CDATA[<div id="attachment_64" class="wp-caption alignleft" style="width: 203px"><img class="size-full wp-image-64 " title="XP Day Logo" src="http://timothybowler.com/wp-content/uploads/2009/01/garland_logo.png" alt="XP Day" width="193" height="69" /><p class="wp-caption-text">XP Day</p></div>
<p>This was my second year at <a title="XP Day" href="http://xpday.org/" target="_blank">xpday</a> and I can honestly say it excellent. This year&#8217;s programme really suited my personal agenda of lean software development, kanban and test driven development (TDD). Also the programme&#8217;s open space structure changed, but in a good way for me. The open space sessions occupied most of the second day this which I personally thought was good, as last year the open sessions where spread over both days. This ment that it was possible to get into more sessions as there where less of them.<span id="more-275"></span></p>
<h1 style="margin-bottom: 10px;">XP Day 2009 Day 1 (Monday 7<sup>th</sup>)</h1>
<h3>Mark Striebeck from google on &#8211; Developer Testing: From the Dark Ages to the Age of Enlightenment</h3>
<p>Excellent talk on some of google&#8217;s testing strategies and just how serious google take testing. Some of the key points that I walk away with are:</p>
<ul>
<li>Identifying what is a good test &#8211; Using both devs and BA to say exactly what the tests should cover as there is no point writing a test if it produces no real value.</li>
<li>Make code testable &#8211; Following test driven development (TDD) for example to write tests first before refactoring.</li>
<li>Finalise and publish test results &#8211; Making all stake holders aware.</li>
<li>Provide tools that integrate with the work flow &#8211; There is no point changing your work flow if it is not needed. In most cases tools can be integrated.</li>
<li>Estimate costs for bug that are found &#8211; This I think was key when thinking of your testing strategy from a business point of view. Not only is code and rework affected, but other hidden items such as fixing the bug, re-deployment, re-testing etc.</li>
</ul>
<h3>Kanban Creation Workshop: Karl Scotland and Xavier Quesada Allue</h3>
<p>Just by reading the title of this talk and seeing Karl&#8217;s name there too meant I made sure I was the first in the room for this. Both Karl and Xavier began with a brief introduction of kanban and the five elements:</p>
<ol>
<li>Map the value stream</li>
<li>Visual the stream</li>
<li>Set the work in process (WIP) limits</li>
<li>Establish cadence</li>
<li>Reduce the tokens</li>
</ol>
<p>After a small example of how to map the value stream, we where given an array of stationary and told to create our own kanban board based on a fictional project. There were four groups all trying to achieve the same goal, and it was amazing to see that we all came up with something slightly different yet we were all right.</p>
<p><strong>Resources</strong></p>
<p><a title="Kanban" href="http://www.agilemanagement.net/Articles/Weblog/channelkanban.html" target="_blank">Agile Management</a></p>
<p><a title="Kanban for software development" href="http://www.limitedwipsociety.org/" target="_blank">Kanban for software development</a></p>
<h3>Focusing On Delivery: Evolving from Scrum with Lean and Kanban: Benjamin Mitchell</h3>
<p>This is the second time I have met Benjamin, and his talk was excellent. It was based on his experiences as a project manager who has implemented kanban in the work place. What I found interesting was all the data that he had collated and presented in meaningful graphs. This showed me just how important it is to collect and present data. In Benjamins talk he showed to us captured data like:</p>
<ul>
<li>Cumulative Flow Frequency</li>
<li>Issues resolved</li>
<li>Time from development start to integration testing</li>
<li>Types of story by release</li>
<li>Team waste</li>
</ul>
<p>In a lean environment I can instantly see how data such as this can be used to make the process more lean.</p>
<p><strong>XP Day 2009 Day 2 (Tuesday 8<sup>th</sup>)</strong></p>
<p><strong>The second day</strong></p>
<p>Tuesday was mainly open space and there were some really good topic of conversation. The ones that interested me</p>
<p><strong>Agile testing</strong></p>
<p>Although starting off slow, really got doing and nearly over run time. We mainly discussed various ways in which testing can and should be applied. A few points that I picked up are:</p>
<ul>
<li>Including BA&#8217;s in the design/testing phase.</li>
<li>Root cause ananlysis on bugs to eliminate bug re-occurance</li>
<li>Using Story Driven Development SDD</li>
<li>Automate as many tests as you can.</li>
<li>There is no point having 100% code coverage if the test&#8217;s that are written do not really work.</li>
<li>Its the developers responsibility to fix any problems.</li>
</ul>
<p><strong>Resources:</strong></p>
<p><a title="Agile Testing" href="http://londonagiletesting.ning.com" target="_blank">London Agile Testing </a></p>
<p><strong>Testing for web applications</strong></p>
<p>Another interesting talk on vairous ways to test web applications. We are all in agreement that functional tests should be written. However manual testing over automated selenium testing was a debated area mainly between me and the rest of the group. The debate was the system should handle events though the web application&#8217;s framework because it can be tested. The problematic area is that its not easy to do with a Web 2.0 application. Further more, I later discovered that most of the people there all worked on large in house systems, not user facing web 2.0 applications. The out come was that it was more economical to outsource the manual QA</p>
<p><strong>The yellow brick road</strong></p>
<p>This was a very interesting practical lesson on agile coaching. We basically played a game which was themed on the wizard of OZ. We all had three people in the group and took it in turns of being the coach, client and listener. I found it amazing that just by listening and asking relevant questions, you can extract a great deal of information from a person.</p>
<p><strong>Resources</strong></p>
<p><a href="http://www.selfishprogramming.com/2009/11/15/xp-days-benelux-2009-the-start-of-a-great-adventure/" target="_blank">The yellow brick road</a></p>
<script type="text/javascript">
  addthis_url    = 'http%3A%2F%2Ftimothybowler.com%2F2009%2F12%2F19%2Fxp-day-2009%2F';
  addthis_title  = 'XP+day+2009';
  addthis_pub    = '';
</script><script type="text/javascript" src="http://s7.addthis.com/js/addthis_widget.php?v=12" ></script>
]]></content:encoded>
			<wfw:commentRss>http://timothybowler.com/2009/12/19/xp-day-2009/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Setting up Debian with up to date packages</title>
		<link>http://timothybowler.com/2009/12/03/setting-up-debian-with-up-to-date-packages/</link>
		<comments>http://timothybowler.com/2009/12/03/setting-up-debian-with-up-to-date-packages/#comments</comments>
		<pubDate>Thu, 03 Dec 2009 15:58:57 +0000</pubDate>
		<dc:creator>Tim Bowler</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Sys Admin]]></category>
		<category><![CDATA[debian]]></category>

		<guid isPermaLink="false">http://timothybowler.com/?p=267</guid>
		<description><![CDATA[I just installed the latest Debian, and realized that the packages are not as up-to-date as I would like. For example I installed PHP and MySQL. PHP was at version 5.2.6 and MySQL was at version 5.0.15a. Considering PHP 5.2.11 and MySQL 5.1 are already released, made me think am I better off compiling from [...]]]></description>
			<content:encoded><![CDATA[<p>I just installed the latest Debian, and realized that the packages are not as up-to-date as I would like. For example I installed PHP and MySQL. PHP was at version 5.2.6 and MySQL was at version 5.0.15a. Considering PHP 5.2.11 and MySQL 5.1 are already released, made me think am I better off compiling from source?</p>
<p>After going down the compiling route, as in my <a title="Compiling Nginx" href="http://timothybowler.com/2009/11/25/compiling-nginx-on-debian-lenny/" target="_blank">previous post </a>due to the same out dated problems I actually found a useful and up-to-date repository. Along with this, my bias towards Debian drastically strengthed. Which after many years of working on a a variety of other distro&#8217;s never quiet happened.<span id="more-267"></span></p>
<h1>Setting up and configuring Debian</h1>
<p>The initial setup comprises of two steps, the first step is to configure the locales, the second is to add new repos to your sources.list file.</p>
<h2>Set the Locale</h2>
<p>On a fresh install, anytime you need to use apt-get for anything Debian always complains about &#8217;setting the locale failed&#8217; like below:</p>
<pre class="brush: bash; light: true;">
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
LANGUAGE = &quot;en&quot;,
LC_ALL = (unset),
LANG = &quot;en&quot;
are supported and installed on your system.
perl: warning: Falling back to the standard locale (&quot;C&quot;).
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
LANGUAGE = &quot;en&quot;,
LC_ALL = (unset),
LANG = &quot;en&quot;
are supported and installed on your system.
perl: warning: Falling back to the standard locale (&quot;C&quot;).
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
LANGUAGE = &quot;en&quot;,
LC_ALL = (unset),
LANG = &quot;en&quot;
are supported and installed on your system.
perl: warning: Falling back to the standard locale (&quot;C&quot;).
</pre>
<p>To set the locale you need to run:</p>
<pre class="brush: bash; light: true;">
sudo locale-gen
sudo dpkg-reconfigure locales
</pre>
<p>After running the second command, you will be asked to first configure which locales you want, and then to select a default one. After that your done.</p>
<h2>Installing PHP and MySQL on Debian</h2>
<p>Using <a href="http://www.dotdeb.org/instructions/" target="_blank">dotbeb&#8217;s</a> repository add the following to your /etc/apt/sources.list</p>
<pre class="brush: bash; light: true;">
deb http://packages.dotdeb.org stable all
deb-src http://packages.dotdeb.org stable all
</pre>
<p>After which you must run</p>
<pre class="brush: bash; light: true;">apt-get update</pre>
<p>Finally, install PHP and MySQL:</p>
<pre class="brush: bash; light: true;">
apt-get install php5-cgi php5-mysql php5-curl php5-gd php5-idn php-pear php5-imagick php5-imap php5-mcrypt php5-memcache  php5-mhash php5-ming php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc mysql-server mysql-client nginx
</pre>
<h3>Resources:</h3>
<ul>
<li><a title="dotdeb debian packages" href="http://www.dotdeb.org/" target="_blank">dodeb</a></li>
</ul>
<script type="text/javascript">
  addthis_url    = 'http%3A%2F%2Ftimothybowler.com%2F2009%2F12%2F03%2Fsetting-up-debian-with-up-to-date-packages%2F';
  addthis_title  = 'Setting+up+Debian+with+up+to+date+packages';
  addthis_pub    = '';
</script><script type="text/javascript" src="http://s7.addthis.com/js/addthis_widget.php?v=12" ></script>
]]></content:encoded>
			<wfw:commentRss>http://timothybowler.com/2009/12/03/setting-up-debian-with-up-to-date-packages/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>installing APC on debian</title>
		<link>http://timothybowler.com/2009/11/27/installing-apc-on-debian/</link>
		<comments>http://timothybowler.com/2009/11/27/installing-apc-on-debian/#comments</comments>
		<pubDate>Fri, 27 Nov 2009 15:28:55 +0000</pubDate>
		<dc:creator>Tim Bowler</dc:creator>
				<category><![CDATA[Sys Admin]]></category>
		<category><![CDATA[debian]]></category>

		<guid isPermaLink="false">http://timothybowler.com/?p=236</guid>
		<description><![CDATA[To install APC is usually straight forward:
apt-get install php5-dev
pecl install apc
If your using nginx make sure you enter no to install using ASPX (apache dynamic modules).

Then adding the module to your php.ini file
nano /etc/php5/cgi/conf.d/apc.ini
extension=apc.so
Finally you can then restart the php cgi instances
/etc/init.d/php-fcgi restart
APC also comes with an admin script, which by default is located at:
/usr/share/php/apc.php
Simply [...]]]></description>
			<content:encoded><![CDATA[<p>To install APC is usually straight forward:</p>
<pre class="brush: bash; light: true;">apt-get install php5-dev
pecl install apc</pre>
<p>If your using nginx make sure you enter <strong>no</strong> to install using ASPX (apache dynamic modules).</p>
<p><span id="more-236"></span></p>
<p>Then adding the module to your php.ini file</p>
<pre class="brush: bash; light: true;">nano /etc/php5/cgi/conf.d/apc.ini
extension=apc.so</pre>
<p>Finally you can then restart the php cgi instances</p>
<pre class="brush: bash; light: true;">/etc/init.d/php-fcgi restart</pre>
<p>APC also comes with an admin script, which by default is located at:</p>
<pre class="brush: bash; light: true;">/usr/share/php/apc.php</pre>
<p>Simply copy this to your web folder (of course change the username and password) and you will be able to see apc&#8217;s stats.</p>
<p>However, this morning I came across a strange error message when installing apc:</p>
<h3>pear.php.net is using a unsupported protocal &#8211; This should never happen.<br />
install failed.</h3>
<p>After searching on-line and reading several posts it appears that both pear.php.net.reg and pecl.php.net.reg files seem to be partially complete. The solution is quiet simple, open up each file and insert the following completed version:</p>
<p>pear.php.net.reg</p>
<pre class="brush: php;">a:6:{s:7:&quot;attribs&quot;;a:4:{s:7:&quot;version&quot;;s:3:&quot;1.0&quot;;s:5:&quot;xmlns&quot;;s:31:&quot;http://pear.php.net/channel-1.0&quot;;s:9:&quot;xmlns:xsi&quot;;s:41:&quot;http://www.w3.org/2001/XMLSchema-instance&quot;;s:18:&quot;xsi:schemaLocation&quot;;s:71:&quot;http://pear.php.net/channel-1.0 http://pear.php.net/dtd/channel-1.0.xsd&quot;;}s:4:&quot;name&quot;;s:12:&quot;pear.php.net&quot;;s:14:&quot;suggestedalias&quot;;s:4:&quot;pear&quot;;s:7:&quot;summary&quot;;s:40:&quot;PHP Extension and Application Repository&quot;;s:7:&quot;servers&quot;;a:2:{s:7:&quot;primary&quot;;a:1:{s:4:&quot;rest&quot;;a:1:{s:7:&quot;baseurl&quot;;a:4:{i:0;a:2:{s:7:&quot;attribs&quot;;a:1:{s:4:&quot;type&quot;;s:7:&quot;REST1.0&quot;;}s:8:&quot;_content&quot;;s:25:&quot;http://pear.php.net/rest/&quot;;}i:1;a:2:{s:7:&quot;attribs&quot;;a:1:{s:4:&quot;type&quot;;s:7:&quot;REST1.1&quot;;}s:8:&quot;_content&quot;;s:25:&quot;http://pear.php.net/rest/&quot;;}i:2;a:2:{s:7:&quot;attribs&quot;;a:1:{s:4:&quot;type&quot;;s:7:&quot;REST1.2&quot;;}s:8:&quot;_content&quot;;s:25:&quot;http://pear.php.net/rest/&quot;;}i:3;a:2:{s:7:&quot;attribs&quot;;a:1:{s:4:&quot;type&quot;;s:7:&quot;REST1.3&quot;;}s:8:&quot;_content&quot;;s:25:&quot;http://pear.php.net/rest/&quot;;}}}}s:6:&quot;mirror&quot;;a:2:{i:0;a:2:{s:7:&quot;attribs&quot;;a:1:{s:4:&quot;host&quot;;s:15:&quot;us.pear.php.net&quot;;}s:4:&quot;rest&quot;;a:1:{s:7:&quot;baseurl&quot;;a:4:{i:0;a:2:{s:7:&quot;attribs&quot;;a:1:{s:4:&quot;type&quot;;s:7:&quot;REST1.0&quot;;}s:8:&quot;_content&quot;;s:28:&quot;http://us.pear.php.net/rest/&quot;;}i:1;a:2:{s:7:&quot;attribs&quot;;a:1:{s:4:&quot;type&quot;;s:7:&quot;REST1.1&quot;;}s:8:&quot;_content&quot;;s:28:&quot;http://us.pear.php.net/rest/&quot;;}i:2;a:2:{s:7:&quot;attribs&quot;;a:1:{s:4:&quot;type&quot;;s:7:&quot;REST1.2&quot;;}s:8:&quot;_content&quot;;s:28:&quot;http://us.pear.php.net/rest/&quot;;}i:3;a:2:{s:7:&quot;attribs&quot;;a:1:{s:4:&quot;type&quot;;s:7:&quot;REST1.3&quot;;}s:8:&quot;_content&quot;;s:28:&quot;http://us.pear.php.net/rest/&quot;;}}}}i:1;a:2:{s:7:&quot;attribs&quot;;a:3:{s:4:&quot;host&quot;;s:15:&quot;de.pear.php.net&quot;;s:3:&quot;ssl&quot;;s:3:&quot;yes&quot;;s:4:&quot;port&quot;;s:4:&quot;3452&quot;;}s:4:&quot;rest&quot;;a:1:{s:7:&quot;baseurl&quot;;a:4:{i:0;a:2:{s:7:&quot;attribs&quot;;a:1:{s:4:&quot;type&quot;;s:7:&quot;REST1.0&quot;;}s:8:&quot;_content&quot;;s:34:&quot;https://de.pear.php.net:3452/rest/&quot;;}i:1;a:2:{s:7:&quot;attribs&quot;;a:1:{s:4:&quot;type&quot;;s:7:&quot;REST1.1&quot;;}s:8:&quot;_content&quot;;s:34:&quot;https://de.pear.php.net:3452/rest/&quot;;}i:2;a:2:{s:7:&quot;attribs&quot;;a:1:{s:4:&quot;type&quot;;s:7:&quot;REST1.2&quot;;}s:8:&quot;_content&quot;;s:34:&quot;https://de.pear.php.net:3452/rest/&quot;;}i:3;a:2:{s:7:&quot;attribs&quot;;a:1:{s:4:&quot;type&quot;;s:7:&quot;REST1.3&quot;;}s:8:&quot;_content&quot;;s:34:&quot;https://de.pear.php.net:3452/rest/&quot;;}}}}}}s:13:&quot;_lastmodified&quot;;a:2:{s:4:&quot;ETag&quot;;s:20:&quot;&quot;2fe96-59a-31a3fc80&quot;&quot;;s:13:&quot;Last-Modified&quot;;s:29:&quot;Tue, 02 Jun 2009 05:55:46 GMT&quot;;}}</pre>
<p>pecl.php.net.reg:</p>
<pre class="brush: php;">a:6:{s:4:&quot;name&quot;;s:12:&quot;pecl.php.net&quot;;s:14:&quot;suggestedalias&quot;;s:4:&quot;pecl&quot;;s:7:&quot;summary&quot;;s:31:&quot;PHP Extension Community Library&quot;;s:7:&quot;servers&quot;;a:1:{s:7:&quot;primary&quot;;a:2:{s:6:&quot;xmlrpc&quot;;a:1:{s:8:&quot;function&quot;;a:10:{i:0;a:2:{s:7:&quot;attribs&quot;;a:1:{s:7:&quot;version&quot;;s:3:&quot;1.0&quot;;}s:8:&quot;_content&quot;;s:9:&quot;logintest&quot;;}i:1;a:2:{s:7:&quot;attribs&quot;;a:1:{s:7:&quot;version&quot;;s:3:&quot;1.0&quot;;}s:8:&quot;_content&quot;;s:26:&quot;package.listLatestReleases&quot;;}i:2;a:2:{s:7:&quot;attribs&quot;;a:1:{s:7:&quot;version&quot;;s:3:&quot;1.0&quot;;}s:8:&quot;_content&quot;;s:15:&quot;package.listAll&quot;;}i:3;a:2:{s:7:&quot;attribs&quot;;a:1:{s:7:&quot;version&quot;;s:3:&quot;1.0&quot;;}s:8:&quot;_content&quot;;s:12:&quot;package.info&quot;;}i:4;a:2:{s:7:&quot;attribs&quot;;a:1:{s:7:&quot;version&quot;;s:3:&quot;1.0&quot;;}s:8:&quot;_content&quot;;s:22:&quot;package.getDownloadURL&quot;;}i:5;a:2:{s:7:&quot;attribs&quot;;a:1:{s:7:&quot;version&quot;;s:3:&quot;1.1&quot;;}s:8:&quot;_content&quot;;s:22:&quot;package.getDownloadURL&quot;;}i:6;a:2:{s:7:&quot;attribs&quot;;a:1:{s:7:&quot;version&quot;;s:3:&quot;1.0&quot;;}s:8:&quot;_content&quot;;s:25:&quot;package.getDepDownloadURL&quot;;}i:7;a:2:{s:7:&quot;attribs&quot;;a:1:{s:7:&quot;version&quot;;s:3:&quot;1.1&quot;;}s:8:&quot;_content&quot;;s:25:&quot;package.getDepDownloadURL&quot;;}i:8;a:2:{s:7:&quot;attribs&quot;;a:1:{s:7:&quot;version&quot;;s:3:&quot;1.0&quot;;}s:8:&quot;_content&quot;;s:14:&quot;package.search&quot;;}i:9;a:2:{s:7:&quot;attribs&quot;;a:1:{s:7:&quot;version&quot;;s:3:&quot;1.0&quot;;}s:8:&quot;_content&quot;;s:15:&quot;channel.listAll&quot;;}}}s:4:&quot;rest&quot;;a:1:{s:7:&quot;baseurl&quot;;a:2:{i:0;a:2:{s:7:&quot;attribs&quot;;a:1:{s:4:&quot;type&quot;;s:7:&quot;REST1.0&quot;;}s:8:&quot;_content&quot;;s:25:&quot;http://pecl.php.net/rest/&quot;;}i:1;a:2:{s:7:&quot;attribs&quot;;a:1:{s:4:&quot;type&quot;;s:7:&quot;REST1.1&quot;;}s:8:&quot;_content&quot;;s:25:&quot;http://pecl.php.net/rest/&quot;;}}}}}s:15:&quot;validatepackage&quot;;a:2:{s:8:&quot;_content&quot;;s:19:&quot;PEAR_Validator_PECL&quot;;s:7:&quot;attribs&quot;;a:1:{s:7:&quot;version&quot;;s:3:&quot;1.0&quot;;}}s:13:&quot;_lastmodified&quot;;s:31:&quot;Thu, 03 Jan 2008 11:48:06 -0700&quot;;}
</pre>
<script type="text/javascript">
  addthis_url    = 'http%3A%2F%2Ftimothybowler.com%2F2009%2F11%2F27%2Finstalling-apc-on-debian%2F';
  addthis_title  = 'installing+APC+on+debian';
  addthis_pub    = '';
</script><script type="text/javascript" src="http://s7.addthis.com/js/addthis_widget.php?v=12" ></script>
]]></content:encoded>
			<wfw:commentRss>http://timothybowler.com/2009/11/27/installing-apc-on-debian/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Compiling nginx on debian lenny</title>
		<link>http://timothybowler.com/2009/11/25/compiling-nginx-on-debian-lenny/</link>
		<comments>http://timothybowler.com/2009/11/25/compiling-nginx-on-debian-lenny/#comments</comments>
		<pubDate>Wed, 25 Nov 2009 12:30:34 +0000</pubDate>
		<dc:creator>Tim Bowler</dc:creator>
				<category><![CDATA[debian]]></category>
		<category><![CDATA[nginx]]></category>

		<guid isPermaLink="false">http://timothybowler.com/?p=201</guid>
		<description><![CDATA[When I first looked at how old the nginx package in the debian repo was I thought that I should compile nginx. However, I eventually managed to find a more recent repo which I will post later.
Download nginx and install dependencies

We have to download the nginx source and perhaps a few modules. But before we [...]]]></description>
			<content:encoded><![CDATA[<p>When I first looked at how old the nginx package in the debian repo was I thought that I should compile nginx. However, I eventually managed to find a more recent repo which I will post later.</p>
<h1 style="margin-top: 20px">Download nginx and install dependencies</h1>
<p><span id="more-201"></span></p>
<p>We have to download the nginx source and perhaps a few modules. But before we can install this the system will need a few dependencies installed.</p>
<p>Download nginx from the website (http://wiki.nginx.org/Main)</p>
<pre class="brush: bash; light: true; toolbar: true;">wget http://sysoev.ru/nginx/nginx-0.7.64.tar.gz
tar -C /tmp nginx-0.7.64.tar.gz</pre>
<p>Download addition modules (http://wiki.nginx.org/Nginx3rdPartyModules)<br />
i.e. Headers more module:</p>
<pre class="brush: bash; light: true; toolbar: true;">
wget http://github.com/agentzh/headers-more-nginx-module/tarball/v0.01
tar -C /tmp agentzh-headers-more-nginx-mdule-c131b08.tar.gz</pre>
<p>We need to check for any dependencies and install them if needed. Therefore run:</p>
<pre class="brush: bash; light: true; toolbar: true;">aptitude show nginx</pre>
<p>This will show you the list of dependencies. Next is to install them:</p>
<pre class="brush: bash; light: true; toolbar: true;">apt-get install libc6 libpcre3 libpcre3-dev libpcrecpp0 libssl0.9.8 libssl-dev zlib1g zlib1g-dev lsb-base</pre>
<h1 style="margin-top: 20px">Configure and compiling nginx of debian</h1>
<p>We can now go ahead and compile nginx on debian. The first thing to do is to configure the installation. Below I have set most of the options that will place nginx and its config/log files in similar locations to what your used to.</p>
<pre class="brush: bash; light: true; toolbar: true;">cd /tmp/nginx-0.7.64
./configure \
--sbin-path=/usr/sbin \
--conf-path=/etc/nginx/nginx.conf \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--user=www-data \
--group=www-data \
--pid-path=/var/run/nginx.pid \
--lock-path=/var/lock/nginx.lock \
--with-http_ssl_module \
--with-http_dav_module \
--with-http_flv_module \
--with-http_gzip_static_module \
--with-http_realip_module \
--with-http_stub_status_module \
--http-client-body-temp-path=/var/tmp/nginx/client/ \
--http-fastcgi-temp-path=/var/tmp/nginx/fcgi/ \
--add-module=/tmp/agentzh-headers-more-nginx-module-c131b08</pre>
<p>Once the configure script has finished we can run make and install nginx</p>
<pre class="brush: bash; light: true; toolbar: true;">make &amp;&amp; make install</pre>
<h1 style="margin-top: 20px">Create the nginx init script</h1>
<p>Just like all other services that you installed, we can create a nginx startup script. Create the file /etc/init.d/nginx and add the following:</p>
<pre class="brush: bash; light: true; toolbar: true;">#! /bin/sh

# Description: Startup script for nginx webserver on Debian. Place in /etc/init.d and
# run 'sudo update-rc.d nginx defaults', or use the appropriate command on your
# distro.
#
# Author:       Ryan Norbauer
# Modified:     Geoffrey Grosenbach http://topfunky.com

set -e

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DESC=&quot;nginx daemon&quot;
NAME=nginx
DAEMON=/usr/sbin/$NAME
CONFIGFILE=/etc/nginx/nginx.conf
PIDFILE=/var/run/$NAME.pid
SCRIPTNAME=/etc/init.d/$NAME

# Gracefully exit if the package has been removed.
test -x $DAEMON || exit 0

d_start() {
 $DAEMON -c $CONFIGFILE || echo -n &quot; already running&quot;
}

d_stop() {
 kill -QUIT `cat $PIDFILE` || echo -n &quot; not running&quot;
}

d_reload() {
 kill -HUP `cat $PIDFILE` || echo -n &quot; can't reload&quot;
}

case &quot;$1&quot; in
 start)
 echo -n &quot;Starting $DESC: $NAME&quot;
 d_start
 echo &quot;.&quot;
 ;;
 stop)
 echo -n &quot;Stopping $DESC: $NAME&quot;
 d_stop
 echo &quot;.&quot;
 ;;
 reload)
 echo -n &quot;Reloading $DESC configuration...&quot;
 d_reload
 echo &quot;reloaded.&quot;
 ;;
 restart)
 echo -n &quot;Restarting $DESC: $NAME&quot;
 d_stop
 # One second might not be time enough for a daemon to stop,
 # if this happens, d_start will fail (and dpkg will break if
 # the package is being upgraded). Change the timeout if needed
 # be, or change d_stop to have start-stop-daemon use --retry.
 # Notice that using --retry slows down the shutdown process somewhat.
 sleep 5
 d_start
 echo &quot;.&quot;
 ;;
 *)
 echo &quot;Usage: $SCRIPTNAME {start|stop|restart|force-reload}&quot; &amp;gt;&amp;amp;2
 exit 3
 ;;
esac

exit 0</pre>
<p>Make the nginx startup script executable so that we can run it</p>
<pre class="brush: bash; light: true; toolbar: true;">chmod +x /etc/init.d/nginx</pre>
<p>Finally we can make this script start on system startup.</p>
<pre class="brush: bash; light: true; toolbar: true;">/usr/sbin/update-rc.d -f nginx defaults</pre>
<h1 style="margin-top: 20px">Configuring virtual hosts on nginx</h1>
<p>We have to create a few directories to hold each virtual host and log files:</p>
<pre class="brush: bash;">mkdir /etc/nginx/sites-available/
mkdir /etc/nginx/sites-enabled/</pre>
<p>Configure the nginx server by opening the config file</p>
<pre class="brush: bash; light: true; toolbar: true;">nano /etc/nginx/nginx.conf</pre>
<p>Replace the text with the following:</p>
<pre class="brush: bash; light: true; toolbar: true;">user www-data;
worker_processes  1;

error_log  /var/log/nginx/error.log;
pid        /var/run/nginx.pid;

events {
 worker_connections  1024;
 # multi_accept on;
}

http {
 include       /etc/nginx/mime.types;

 access_log    /var/log/nginx/access.log;

 sendfile        on;
 #tcp_nopush     on;

 #keepalive_timeout  0;
 keepalive_timeout  65;
 tcp_nodelay        on;

 gzip  on;
 gzip_disable &quot;MSIE [1-6]\.(?!.*SV1)&quot;;

 include /etc/nginx/conf.d/*.conf;
 include /etc/nginx/sites-enabled/*;

}</pre>
<p>I like to store my virtual hosts in /var/www/vhosts/host.com/httpdocs. Therefore create the directories:</p>
<pre class="brush: bash; light: true; toolbar: true;">mkdir /var/www/vhosts/host.com/httpdocs
mkdir /var/www/vhosts/host.com/logs</pre>
<p>We can now create a virtual host template. Therefore create the following file  /etc/nginx/sites-available/test.com and insert the content below <span style="text-decoration: underline;">making sure you change host.com to your domain name</span></p>
<pre class="brush: bash; light: true; toolbar: true;"># You may add here your
# server {
#    ...
# }
# statements for each of your virtual hosts

server {
 listen   80;
 server_name  host.com;

 access_log  /var/www/vhosts/host.com/logs/access.log;
 error_log  /var/www/vhosts/host.com/logs/error.log;    

 location / {
 root   /var/www/vhosts/host.com/httpdocs;
 index  index.html;
 }

 location /doc {
 root   /usr/share;
 autoindex on;
 allow 127.0.0.1;
 deny all;
 }

 location /images {
 root   /usr/share;
 autoindex on;
 }

 #error_page  404  /404.html;

 # redirect server error pages to the static page /50x.html
 #
 error_page   500 502 503 504  /50x.html;
 location = /50x.html {
 root   /var/www/nginx-default;
 }

 # proxy the PHP scripts to Apache listening on 127.0.0.1:80
 #
 #location ~ \.php$ {
 #proxy_pass   http://127.0.0.1;
 #}

 # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
 #

 #if (!-e $request_filename) {
 #  rewrite  ^(.*)$  /index.php?q=$1  last;
 #  break;
 #}
#        try_files $uri $uri/ /wordpress/index.php?q=$uri;

 #location ~ \.php$ {
 #fastcgi_pass   127.0.0.1:9000;
 #fastcgi_index  index.php;
 #fastcgi_param  SCRIPT_FILENAME  /var/www/vhosts/test/httpdocs$fastcgi_script_name;
 #include /etc/nginx/fastcgi_params;
 #}

 # deny access to .htaccess files, if Apache's document root
 # concurs with nginx's one
 #
 #location ~ /\.ht {
 #deny  all;
 #}
}

# another virtual host using mix of IP-, name-, and port-based configuration
#
#server {
#listen   8000;
#listen   somename:8080;
#server_name  somename  alias  another.alias;

#location / {
#root   html;
#index  index.html index.htm;
#}
#}

# HTTPS server
#
#server {
#listen   443;
#server_name  localhost;

#ssl  on;
#ssl_certificate  cert.pem;
#ssl_certificate_key  cert.key;

#ssl_session_timeout  5m;

#ssl_protocols  SSLv2 SSLv3 TLSv1;
#ssl_ciphers  ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
#ssl_prefer_server_ciphers   on;

#location / {
#root   html;
#index  index.html index.htm;
#}
#}</pre>
<p>Create a symlink which will make our virtual host config live:</p>
<pre class="brush: bash; light: true; toolbar: true;">ln -s /etc/nginx/sites-available/test /etc/nginx/sites-enabled/test</pre>
<p>Finally we can now start the nginx server</p>
<pre class="brush: bash; light: true; toolbar: true;">/etc/init.d/nginx start</pre>
<p>Now that we have nginx running, we need to make sure this service is always started. Therefore lets add it to our default run levels</p>
<pre class="brush: bash; light: true;">update-rc.d -f nginx defualts</pre>
<p>Hopefully you will now have the nginx server up and running. The next few blog posts will show how to incorporate PHP with nginx and to get both wordpress and symfony projects working.</p>
<script type="text/javascript">
  addthis_url    = 'http%3A%2F%2Ftimothybowler.com%2F2009%2F11%2F25%2Fcompiling-nginx-on-debian-lenny%2F';
  addthis_title  = 'Compiling+nginx+on+debian+lenny';
  addthis_pub    = '';
</script><script type="text/javascript" src="http://s7.addthis.com/js/addthis_widget.php?v=12" ></script>
]]></content:encoded>
			<wfw:commentRss>http://timothybowler.com/2009/11/25/compiling-nginx-on-debian-lenny/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Symfony 1.3 Web Application Development</title>
		<link>http://timothybowler.com/2009/10/23/symfony-13-web-application-development/</link>
		<comments>http://timothybowler.com/2009/10/23/symfony-13-web-application-development/#comments</comments>
		<pubDate>Fri, 23 Oct 2009 01:09:53 +0000</pubDate>
		<dc:creator>Tim Bowler</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Symfony]]></category>
		<category><![CDATA[Website performance optimization]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[orm]]></category>
		<category><![CDATA[propel]]></category>

		<guid isPermaLink="false">http://timothybowler.com/?p=121</guid>
		<description><![CDATA[Finally after nearly one year I have managed to publish my first book.  And I am proud to say, its all about the PHP Symfony Framework.

The Symfony framework allows you to build modern web applications and web services easily and rapidly. The MVC components separate the logic from the user interface and therefore make developing, changing, and testing your applications much faster. Using Symfony you can minimize repetitive coding tasks, optimize performance, and easily integrate with other libraries and frameworks.]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.packtpub.com/symfony-1-3-web-application-development/book/mid/071009dt079h"><img class="size-full wp-image-122 alignright" title="symfony-13-web-application-development" src="http://timothybowler.com/wp-content/uploads/2009/10/symfony-13-web-application-development.png" alt="Symfony 1.3 Web application development" width="100" height="123" /></a></p>
<p>Although this framework contains many powerful features, most developers do not exploit Symfony to its full potential.</p>
<p><span id="more-121"></span></p>
<p>This book makes it easy to get started and produce a powerful and professional-looking web site utilizing the many features of Symfony. Taking you through a real-life application, it covers all major Symfony framework features without pushing you into too much theoretical detail, as well as throwing some light on the best practices for rapid application development.</p>
<p>This book is written for PHP developers who want to get started with Symfony 1.3 or for those that are currently using Symfony 1.0/1.1/1.2.</p>
<p>By reading the book and following the example web application you will learn about:</p>
<ul>
<li>Using the form framework</li>
<li>Using the new send email features</li>
<li>Creating Symfony command line tasks</li>
<li>Using the admin generator to create an entire backend</li>
<li>Securing the backend of your application</li>
<li>Internationalization</li>
<li>Installing, using and creating your own plugins</li>
<li>Learning about caching by using both Symfony&#8217;s caching framework and <a title="memcached" href="http://www.danga.com/memcached/" target="_blank">memcached</a></li>
<li>Working with the <a title="Propel" href="http://propel.phpdb.org/trac/" target="_blank">Propel</a> ORM</li>
<li>Using <a title="JQuery" href="http://jquery.com/" target="_blank">JQuery</a> and form widgets</li>
<li>Bridging other library&#8217;s like <a title="Ezcomponents" href="http://ez.no/ezcomponents" target="_blank">Ezcomponents</a> and the <a title="Zend Framework" href="http://www.zend.com/en/community/framework" target="_blank">Zend Framework</a></li>
<li>Deploying you application</li>
</ul>
<table border="0">
<tbody>
<tr>
<td><a href="http://timothybowler.com/wp-content/uploads/2009/10/4565-symfony-1-3-web-application-development-sample-chapter-4-user-interaction-and-email-automation.pdf" target="_blank"><img class="size-full wp-image-139 alignleft" title="Chapter 4: User Interaction and Email Automation" src="http://timothybowler.com/wp-content/uploads/2009/10/page_white_acrobat-11.png" alt="Symfony 1.3 Web Application Development. Chapter 4: User Interaction and Email Automation" width="24" height="16" /></a></td>
<td>Just to show you that the book is worth buying please download and view <a title="Chapter 4 download" href="http://timothybowler.com/wp-content/uploads/2009/10/4565-symfony-1-3-web-application-development-sample-chapter-4-user-interaction-and-email-automation.pdf" target="_blank">Chapter 4: User Interaction and Email Automation</a></td>
</tr>
</tbody>
</table>
<p>To purchase your copy please vist <a href="http://www.packtpub.com/symfony-1-3-web-application-development/book/mid/071009dt079h" target="_blank">Packt</a>&#8217;s site.</p>
<p>Review:</p>
<p><a title="Symfony 1.3 by Tim Bowler" href="http://blog.fedecarg.com/2009/10/13/symfony-1-3-web-application-development/" target="_blank">Federico Cargnelutti</a></p>
<p><a title="Symfony 1.3 by Tim Bowler" href="http://blog.hma-info.de/2009/10/10/review-symfony-1-3-web-application-development-book/" target="_blank">Fabian</a></p>
<script type="text/javascript">
  addthis_url    = 'http%3A%2F%2Ftimothybowler.com%2F2009%2F10%2F23%2Fsymfony-13-web-application-development%2F';
  addthis_title  = 'Symfony+1.3+Web+Application+Development';
  addthis_pub    = '';
</script><script type="text/javascript" src="http://s7.addthis.com/js/addthis_widget.php?v=12" ></script>
]]></content:encoded>
			<wfw:commentRss>http://timothybowler.com/2009/10/23/symfony-13-web-application-development/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Installing Dropbox on Ubuntu 9.04</title>
		<link>http://timothybowler.com/2009/07/03/installin-dropbox-on-ubuntu-904/</link>
		<comments>http://timothybowler.com/2009/07/03/installin-dropbox-on-ubuntu-904/#comments</comments>
		<pubDate>Fri, 03 Jul 2009 00:34:42 +0000</pubDate>
		<dc:creator>Tim Bowler</dc:creator>
				<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://timothybowler.com/?p=118</guid>
		<description><![CDATA[For people wanting to share content between two or more computers, try dropbox. I currently share files between Ubuntu and windows, and on occasions share documents with others. Dropbox easily caters for this, and best of all is free for up to 2GB.
Intalling dropbox on Ubuntuu 9.04

Following dropbox&#8217;s instructions you are left at a dead [...]]]></description>
			<content:encoded><![CDATA[<p>For people wanting to share content between two or more computers, try <a title="Dropbox" href="https://www.getdropbox.com/home" target="_blank">dropbox</a>. I currently share files between Ubuntu and windows, and on occasions share documents with others. Dropbox easily caters for this, and best of all is free for up to 2GB.</p>
<h2>Intalling dropbox on Ubuntuu 9.04</h2>
<p><span id="more-118"></span></p>
<p>Following <a title="Dropbox Ubuntu installation" href="https://www.getdropbox.com/downloading?os=lnx" target="_blank">dropbox</a>&#8217;s instructions you are left at a dead end. There is no dropbox folder created even after nautilus has been restarted and I had logged out then back in. To complete the install of dropbox on Ubuntu, on the command line enter </p>
<pre class="brush: bash; light: true; toolbar: true;">dropbox start -i </pre>
<p>which will then download and install the daemon. Once that is done logout and back in and you should then be able to use your drop box.</p>
<script type="text/javascript">
  addthis_url    = 'http%3A%2F%2Ftimothybowler.com%2F2009%2F07%2F03%2Finstallin-dropbox-on-ubuntu-904%2F';
  addthis_title  = 'Installing+Dropbox+on+Ubuntu+9.04';
  addthis_pub    = '';
</script><script type="text/javascript" src="http://s7.addthis.com/js/addthis_widget.php?v=12" ></script>
]]></content:encoded>
			<wfw:commentRss>http://timothybowler.com/2009/07/03/installin-dropbox-on-ubuntu-904/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Ubuntu 8.10 Eclipse 3.4 PDT and Subclipse</title>
		<link>http://timothybowler.com/2009/07/03/ubuntu-810-eclipse-34-pdt-and-subclipse/</link>
		<comments>http://timothybowler.com/2009/07/03/ubuntu-810-eclipse-34-pdt-and-subclipse/#comments</comments>
		<pubDate>Fri, 03 Jul 2009 00:06:03 +0000</pubDate>
		<dc:creator>Tim Bowler</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://timothybowler.com/?p=68</guid>
		<description><![CDATA[I know there are loads of methods to getting this combination working.
Download eclipse J2EE edition 
One unziped, move the eclipse folder to the /opt directory. Add to the applications-&#62;programming menu eclipse.

dltk: http://download.eclipse.org/technology/dltk/updates-dev/1.0/
subclipse: http://subclipse.tigris.org/update_1.4.x
pdt: http://download.eclipse.org/tools/pdt/updates/2.0/
using your package manager make sure the following are installed:
libsvn-java
libjna-java
Finally get an eclipse icon
That is pretty much it. But to be honest, [...]]]></description>
			<content:encoded><![CDATA[<p>I know there are loads of methods to getting this combination working.</p>
<p>Download <a title="Eclipse J2EE" href="http://www.eclipse.org/downloads/download.php?file=/technology/epp/downloads/release/ganymede/SR1/eclipse-jee-ganymede-SR1-linux-gtk-x86_64.tar.gz" target="_blank">eclipse J2EE edition </a></p>
<p>One unziped, move the eclipse folder to the /opt directory. Add to the applications-&gt;programming menu eclipse.</p>
<p><span id="more-68"></span></p>
<p>dltk: <a title="DLTK" href="http://download.eclipse.org/technology/dltk/updates-dev/1.0/" target="_blank">http://download.eclipse.org/technology/dltk/updates-dev/1.0/</a></p>
<p>subclipse:<a title="Subclipse" href="http://subclipse.tigris.org/update_1.4.x" target="_blank"> http://subclipse.tigris.org/update_1.4.x</a></p>
<p>pdt: <a title="PDT" href="http://download.eclipse.org/tools/pdt/updates/2.0/" target="_blank">http://download.eclipse.org/tools/pdt/updates/2.0/</a></p>
<p>using your package manager make sure the following are installed:</p>
<p>libsvn-java</p>
<p>libjna-java</p>
<p>Finally get an eclipse <a title="Eclipse Icon" href="http://www.bearfruit.org/blog/2007/08/09/eclipse-svg-icons" target="_blank">icon</a></p>
<p>That is pretty much it. But to be honest, svn from the command line is the best option as eclipse can cause locking problems.</p>
<script type="text/javascript">
  addthis_url    = 'http%3A%2F%2Ftimothybowler.com%2F2009%2F07%2F03%2Fubuntu-810-eclipse-34-pdt-and-subclipse%2F';
  addthis_title  = 'Ubuntu+8.10+Eclipse+3.4+PDT+and+Subclipse';
  addthis_pub    = '';
</script><script type="text/javascript" src="http://s7.addthis.com/js/addthis_widget.php?v=12" ></script>
]]></content:encoded>
			<wfw:commentRss>http://timothybowler.com/2009/07/03/ubuntu-810-eclipse-34-pdt-and-subclipse/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ubunto 8.10 Intrepid update to kernel 2.6.27-12</title>
		<link>http://timothybowler.com/2009/03/04/ubunto-810-intrepid-update-to-kernel-2627-12/</link>
		<comments>http://timothybowler.com/2009/03/04/ubunto-810-intrepid-update-to-kernel-2627-12/#comments</comments>
		<pubDate>Wed, 04 Mar 2009 11:49:48 +0000</pubDate>
		<dc:creator>Tim Bowler</dc:creator>
				<category><![CDATA[Sys Admin]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://timothybowler.com/?p=106</guid>
		<description><![CDATA[After upgrading the kernel, booting into it left me with a black screen. The first time that I can honestly say ubuntu has shocked me. The problem is the nvidia 177 driver. To get around it, boot up into the previous kernal and install the Nvidia 180 packages. Once its done, reboot into the latest [...]]]></description>
			<content:encoded><![CDATA[<p>After upgrading the kernel, booting into it left me with a black screen. The first time that I can honestly say ubuntu has shocked me. The problem is the nvidia 177 driver. To get around it, boot up into the previous kernal and install the Nvidia 180 packages. Once its done, reboot into the latest kernel version.</p>
<script type="text/javascript">
  addthis_url    = 'http%3A%2F%2Ftimothybowler.com%2F2009%2F03%2F04%2Fubunto-810-intrepid-update-to-kernel-2627-12%2F';
  addthis_title  = 'Ubunto+8.10+Intrepid+update+to+kernel+2.6.27-12';
  addthis_pub    = '';
</script><script type="text/javascript" src="http://s7.addthis.com/js/addthis_widget.php?v=12" ></script>
]]></content:encoded>
			<wfw:commentRss>http://timothybowler.com/2009/03/04/ubunto-810-intrepid-update-to-kernel-2627-12/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>SSH and automated backups</title>
		<link>http://timothybowler.com/2009/01/20/ssh-and-automated-backup/</link>
		<comments>http://timothybowler.com/2009/01/20/ssh-and-automated-backup/#comments</comments>
		<pubDate>Tue, 20 Jan 2009 13:52:20 +0000</pubDate>
		<dc:creator>Tim Bowler</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Sys Admin]]></category>
		<category><![CDATA[backup]]></category>
		<category><![CDATA[rsync]]></category>
		<category><![CDATA[ssh]]></category>

		<guid isPermaLink="false">http://timothybowler.com/?p=91</guid>
		<description><![CDATA[One of the key tools for ssh automation is keychain, which is pretty much available in most flavors of linux. Its usually not installed by default, therefore using your package manager install &#8216;keychain&#8217;
Ubuntu users:
$sudo apt-get install keychain
After its install, you set it up by entering the keychain command followed by your private key (not the [...]]]></description>
			<content:encoded><![CDATA[<p>One of the key tools for ssh automation is keychain, which is pretty much available in most flavors of linux. Its usually not installed by default, therefore using your package manager install &#8216;keychain&#8217;</p>
<p>Ubuntu users:</p>
<pre class="brush: bash; light: true; toolbar: true;">$sudo apt-get install keychain</pre>
<p>After its install, you set it up by entering the keychain command followed by your private key (not the public key).</p>
<pre class="brush: bash; light: true; toolbar: true;">$ keychain ~/.ssh/id_rsa
KeyChain 2.6.6; http://www.gentoo.org/proj/en/keychain/ Copyright 2002-2004
Gentoo Foundation; Distributed under the GPL&lt;/pre&gt;
* Initializing /home/timmy/.keychain/hostname-sh file...
* Initializing /home/timmy/.keychain/hostname-csh file...
* Initializing /home/timmy/.keychain/hostname-fish file...
* Starting ssh-agent
* Adding 1 ssh key(s)...
Enter passphrase for /home/timmy/.ssh/id_rsa:
Identity added: /home/timmy/.ssh/id_rsa (/home/timmy/.ssh/id_rsa)</pre>
<p>Keychain then creates three files which correspond to various shell environments. As I am using bash, the file I will be referencing will be  /home/timmy/.keychain/hostname-sh.</p>
<pre class="brush: bash; light: true; toolbar: true;">$ source ~/.keychain/hostname-sh</pre>
<p>To make sure everything is fine run the following to make sure the the environment is in fact set up:</p>
<pre class="brush: bash; light: true; toolbar: true;">$ env | grep SSH_A
SSH_AGENT_PID=9607
SSH_AUTH_SOCK=/tmp/ssh-bMoLeb9606/agent.9606</pre>
<p>Of course you will want this to happen automatically on login so add the following to your ~/.bashrc</p>
<pre class="brush: bash; light: true; toolbar: true;">keychain ~/.ssh/id_rsa
source ~/.keychain/hostname-sh</pre>
<p>The last step is to add the following line to your backup script (including the .)</p>
<pre class="brush: bash; light: true; toolbar: true;">. /home/timmy/.keychain/hostname-sh</pre>
<p>Backup Scripts<br />
Ill only mention the two methods that i use.<br />
1. scp: To copy files from one location to another<br />
2. rsync: To sync a remote location to local location</p>
<p><span id="more-91"></span></p>
<p><strong>SCP</strong></p>
<pre class="brush: bash; light: true; toolbar: true;">. /home/timmy/.keychain/hostname-sh
scp -r /home/timmy/Server_Backups/web/* root@192.168.0.1:/var/backup/web</pre>
<p><strong>Rsync</strong></p>
<pre class="brush: bash; light: true; toolbar: true;">. /home/timmy/.keychain/hostname-sh
rsync -rzvhlc --delete -e &quot;ssh -p 22 -i /home/timmy/.ssh/id_rsa -o 'BatchMode yes'&quot;
root@hostname:/var/www/vhosts/vhostname/httpd/ home/timmy/Server_Backups/web/</pre>
<p>After that you should not get the error:</p>
<pre class="brush: bash; light: true; toolbar: true;">Permission denied, please try again.
Received disconnect from 192.168.0.10: 2: Too many authentication failures for root
lost connection</pre>
<script type="text/javascript">
  addthis_url    = 'http%3A%2F%2Ftimothybowler.com%2F2009%2F01%2F20%2Fssh-and-automated-backup%2F';
  addthis_title  = 'SSH+and+automated+backups';
  addthis_pub    = '';
</script><script type="text/javascript" src="http://s7.addthis.com/js/addthis_widget.php?v=12" ></script>
]]></content:encoded>
			<wfw:commentRss>http://timothybowler.com/2009/01/20/ssh-and-automated-backup/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>XP Day</title>
		<link>http://timothybowler.com/2008/12/20/xp-day-2/</link>
		<comments>http://timothybowler.com/2008/12/20/xp-day-2/#comments</comments>
		<pubDate>Sat, 20 Dec 2008 01:00:43 +0000</pubDate>
		<dc:creator>Tim Bowler</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Lean]]></category>
		<category><![CDATA[Scrum]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[lean]]></category>

		<guid isPermaLink="false">http://timothybowler.com/?p=58</guid>
		<description><![CDATA[


My first experience of XP was excellent. Both days revolved around open space sessions and several other talks
Thursday&#8217;s talks

Testing Games Is Not a Game &#8211; It&#8217;s serious Stuff
As the title suggests, this talk was about testing in the games industry and how much testing is involved.
Lightening talks
Several people took it in turns to present a [...]]]></description>
			<content:encoded><![CDATA[<dl id="attachment_64" class="wp-caption alignleft" style="width: 203px;">
<dt class="wp-caption-dt"><img class="size-full wp-image-64" title="XP Day Logo" src="http://timothybowler.com/wp-content/uploads/2009/01/garland_logo.png" alt="XP Day" width="193" height="69" /></dt>
</dl>
<p>My first experience of XP was excellent. Both days revolved around open space sessions and several other talks</p>
<h2>Thursday&#8217;s talks</h2>
<p><span id="more-58"></span></p>
<p><strong>Testing Games Is Not a Game &#8211; It&#8217;s serious Stuff</strong></p>
<p>As the title suggests, this talk was about testing in the games industry and how much testing is involved.</p>
<p><strong>Lightening talks</strong></p>
<p>Several people took it in turns to present a topic to the whole group that they would like to discuss in a smaller group. Each talk lasted for around 5 minutes and provided the xxxxxx for a group discussion with others that were interested.</p>
<p>Due to the amount of interesting topics, there was no way I could be everywhere. Therefore I had already spotted the talks that I was interested in on the timetable and decided to attend them.</p>
<p><strong>TDD and asynchronous behavior</strong></p>
<p><strong>Evolving from Scrum to lean (Matt Wynne and Rob Bowley).</strong></p>
<p>As a keen scrum practitioner, I can honestly that lean methods are slowly creeping into the scrum scene. Here Matt and Rob talked through a &#8216;war story&#8217; and explained how they molded scrum to fit in at BBC Worldwide.</p>
<p>Key points:</p>
<ul>
<li><a title="Value Stream Mapping" href="http://en.wikipedia.org/wiki/Value_Stream_Mapping" target="_blank">Value Stream Mapping</a> to to analyze the flow of materials and information. The aim of this was to replace burn down charts, and stories into something a lot more visually meaningful. Also, story points where done away with and replace by number of stories done.</li>
<li>Using a kanban board to show task movement. This seems useful for incorporating all tasks from concept and design through to development and release.</li>
<li>The lean principal of &#8220;Stop the line&#8221;. As continuous integration was in use, if something was to break it must be fixed before any further development would continue.</li>
</ul>
<p>It was extremely interesting and was rather a ashame this was implement in the final three months of the project. I walked away with a lot to think about and found the talk very beneficial.</p>
<p><strong>Coaching self organizing teams (Joesph Pelrine)</strong></p>
<p>I think <a title="Coaching self organizing teams" href="http://www.tomhume.org/2008/12/xp-day-coaching-self-organising-teams-joseph-pelrine.html" target="_blank">Tom Hume</a> sums it all up nicely</p>
<h2>Friday&#8217;s Talks</h2>
<p><strong>Lean thinking: what is distinctive about it and where it is going?</strong></p>
<p>To be hones I was a little disappointed as I only came away with just how poor the NHS is. However, it was interesting in how lean methods could potential help the NHS.</p>
<p><strong>Open space session on agile tools</strong></p>
<p>This was rather an interesting talk on what tools people are using within their agile projects. Add presentation</p>
<p><strong>Open space session on web frameworks</strong></p>
<p>The main frameworks that were brought up where :</p>
<ul>
<li>Groovy</li>
<li>RoR</li>
<li>Django</li>
<li>Symfony</li>
</ul>
<p>I think it is fair to say that they all had some very good point brought up about them all. Although there was no real conclusion, I walked away knowing that Django and Symfony are perhaps two of the better ones.</p>
<h2>What I got out of the day</h2>
<ul>
<li>Scrum doesn&#8217;t have to be implemented &#8216;out of box&#8217; and its best to integrate other lean concepts into the lifecycle.</li>
<li>Lean is the way forward and there are many other thinks lean can bring as i discovered in Matt and Robs talk.</li>
<li>Testing, testing and more testing.</li>
</ul>
<script type="text/javascript">
  addthis_url    = 'http%3A%2F%2Ftimothybowler.com%2F2008%2F12%2F20%2Fxp-day-2%2F';
  addthis_title  = 'XP+Day';
  addthis_pub    = '';
</script><script type="text/javascript" src="http://s7.addthis.com/js/addthis_widget.php?v=12" ></script>
]]></content:encoded>
			<wfw:commentRss>http://timothybowler.com/2008/12/20/xp-day-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
