<?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>xenzero.com</title>
	<atom:link href="http://www.xenzero.com/blog/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.xenzero.com/blog</link>
	<description>Peter Howe's blog</description>
	<lastBuildDate>Fri, 26 Feb 2010 21:06:37 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Bugzilla API: an example using PHP and Zend Framework</title>
		<link>http://www.xenzero.com/blog/2010/02/23/example-of-calling-the-bugzilla-api-using-php-zend-framework/</link>
		<comments>http://www.xenzero.com/blog/2010/02/23/example-of-calling-the-bugzilla-api-using-php-zend-framework/#comments</comments>
		<pubDate>Tue, 23 Feb 2010 17:22:36 +0000</pubDate>
		<dc:creator>Pete</dc:creator>
				<category><![CDATA[Geek]]></category>
		<category><![CDATA[Technologies]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[bugzilla]]></category>
		<category><![CDATA[cookies]]></category>
		<category><![CDATA[xmlrpc]]></category>
		<category><![CDATA[zend]]></category>

		<guid isPermaLink="false">http://www.xenzero.com/blog/?p=187</guid>
		<description><![CDATA[Bugzilla has a rudimentary API for driving it from code.  To do this from PHP is reasonably trivial, but using Zend Framework (for the cookie jar primarily) makes the task very simple.  Here is some example code:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
$oClient = new Zend_XmlRpc_Client&#40;'http://my.zilla.url/xmlrpc.cgi'&#41;;
&#160;
$oHttpClient = new Zend_Http_Client&#40;&#41;;
$oHttpClient-&#62;setCookieJar&#40;&#41;;
$oClient-&#62;setHttpClient&#40;$oHttpClient&#41;;
&#160;
$aResponse = $oClient-&#62;call&#40;'User.login', array&#40;array&#40;
    'login'    =&#62; 'peterh@mydomain.com',
 [...]]]></description>
			<content:encoded><![CDATA[<p>Bugzilla has a <a title="Bugzilla Webservice" href="http://www.bugzilla.org/docs/3.2/en/html/api/Bugzilla/WebService.html" target="_blank">rudimentary API</a> for driving it from code.  To do this from PHP is reasonably trivial, but using Zend Framework (for the <a title="Cookie Jar" href="http://framework.zend.com/manual/en/zend.http.cookies.html" target="_blank">cookie jar</a> primarily) makes the task very simple.  Here is some example code:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$oClient</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> Zend_XmlRpc_Client<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'http://my.zilla.url/xmlrpc.cgi'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000088;">$oHttpClient</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> Zend_Http_Client<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$oHttpClient</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">setCookieJar</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$oClient</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">setHttpClient</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$oHttpClient</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000088;">$aResponse</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$oClient</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">call</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'User.login'</span><span style="color: #339933;">,</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span>
    <span style="color: #0000ff;">'login'</span>    <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'peterh@mydomain.com'</span><span style="color: #339933;">,</span>
    <span style="color: #0000ff;">'password'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'mypassword'</span><span style="color: #339933;">,</span>
    <span style="color: #0000ff;">'remember'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #cc66cc;">1</span>
<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000088;">$aResponse</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$oClient</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">call</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'Bug.create'</span><span style="color: #339933;">,</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span>
    <span style="color: #0000ff;">'product'</span>     <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">&quot;My Product&quot;</span><span style="color: #339933;">,</span>
    <span style="color: #0000ff;">'component'</span>   <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">&quot;My Component&quot;</span><span style="color: #339933;">,</span>
    <span style="color: #0000ff;">'summary'</span>     <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">&quot;This is the summary of the bug I'm creating&quot;</span><span style="color: #339933;">,</span>
    <span style="color: #0000ff;">'version'</span>     <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">&quot;unspecified&quot;</span><span style="color: #339933;">,</span>
    <span style="color: #0000ff;">'description'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">&quot;This is a description of the bug&quot;</span><span style="color: #339933;">,</span>
    <span style="color: #0000ff;">'op_sys'</span>      <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">&quot;All&quot;</span><span style="color: #339933;">,</span>
    <span style="color: #0000ff;">'platform'</span>    <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">&quot;---&quot;</span><span style="color: #339933;">,</span>
    <span style="color: #0000ff;">'priority'</span>    <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">&quot;P5&quot;</span><span style="color: #339933;">,</span>
    <span style="color: #0000ff;">'severity'</span>    <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">&quot;Trivial&quot;</span>
<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$iBugId</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$aResponse</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'id'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000088;">$aResponse</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$oClient</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">call</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'User.logout'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

]]></content:encoded>
			<wfw:commentRss>http://www.xenzero.com/blog/2010/02/23/example-of-calling-the-bugzilla-api-using-php-zend-framework/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Windows 7 for an Ubuntu devotee</title>
		<link>http://www.xenzero.com/blog/2010/01/22/windows-7-for-an-ubuntu-devotee/</link>
		<comments>http://www.xenzero.com/blog/2010/01/22/windows-7-for-an-ubuntu-devotee/#comments</comments>
		<pubDate>Fri, 22 Jan 2010 13:49:16 +0000</pubDate>
		<dc:creator>Pete</dc:creator>
				<category><![CDATA[Geek]]></category>
		<category><![CDATA[Technologies]]></category>
		<category><![CDATA[Ubuntu Linux]]></category>
		<category><![CDATA[grub]]></category>
		<category><![CDATA[grub2]]></category>
		<category><![CDATA[itunes]]></category>
		<category><![CDATA[photoshop]]></category>
		<category><![CDATA[premiere]]></category>
		<category><![CDATA[windows 7]]></category>

		<guid isPermaLink="false">http://www.xenzero.com/blog/?p=180</guid>
		<description><![CDATA[There are three reasons I know of for spending money on an operating system at a time when free Ubuntu is now such a viable option. Those reasons are not Internet Explorer, the Microsoft Office paperclip and the excitement gained by placing your valuable data within an environment of questionable security. The reasons, for me, [...]]]></description>
			<content:encoded><![CDATA[<p>There are three reasons I know of for spending money on an operating system at a time when free <a title="Ubuntu" href="http://www.ubuntu.com" target="_blank">Ubuntu</a> is now such a viable option. Those reasons are not Internet Explorer, the Microsoft Office paperclip and the excitement gained by placing your valuable data within an environment of questionable security. The reasons, for me, are:</p>
<ol>
<li>iTunes</li>
<li>Adobe Photoshop</li>
<li>Adobe Premiere</li>
</ol>
<p>So long as these three pieces of software are unavailable for Linux, I have no option but to make a pact with <a title="Microsoft" href="http://www.microsoft.com" target="_blank">Redmond&#8217;s finest</a>. Sure, I could also choose to go the <a title="Apple OS X" href="http://www.apple.com/macosx/" target="_blank">OS X</a> route, but while that option is cheaper than Windows, the hardware to run it is expensive and is likely to be obsolete before my trusty, upgradable, PC which also runs Ubuntu Linux.</p>
<p>So this week, I took the plunge and bought <a title="Windows 7" href="http://www.microsoft.com/windows/windows-7/" target="_blank">Windows 7</a> Home Premium Upgrade as my XP installation has gradually been slowing down and the annual rebuild was due. Windows 7 has had overwhelmingly positive press – perhaps a consequence of releasing the slow, poorly supported and infuriating-to-use Vista previously. This time, it is reported that there is a return to the stability of Windows XP while bringing improved boot and shutdown timings and a whole array of UI improvements (which I openly admit I am a sucker for – hence my devotion to Ubuntu&#8217;s Compiz window management and Gnome Do&#8217;s <a title="Gnome Do Docky" href="http://do.davebsd.com/wiki/Docky" target="_blank">Docky</a><span style="font-style: normal;"> functionality</span>.)</p>
<p>Before I talk about how the Windows 7 installation went, a quick word about my three reasons for adopting Windows. Many Linux advocates will suggest alternatives to iTunes, Photoshop and Premiere. While Songbird and the Gimp are without a doubt excellent developments, Songbird does not support iPhone syncing and the Gimp does not have the community and support that the Adobe products offer. (Nor, frankly, does it have the usability or reliability in my experience.)</p>
<p>So, Windows 7 it was. The box arrived (looking intriguingly smaller and neater than the <a title="Windows 7 box" href="http://www.pngpic.com/wp-content/uploads/2009/07/windows7-home-premium.png" target="_blank">Microsoft marketing images</a> – how did they do that?) with a 32-bit and 64-bit DVD inside. I can see no reason to go 64-bit yet (with its diminished software support) unless I am looking to run a system with &gt;4Gb RAM. I&#8217;m not. Even given Premiere Pro&#8217;s system demands, RAM is not an issue for me, and my current 2Gb does me fine. The 32-bit disk started booting; some of that promised eye-candy was already on display and then&#8230; what&#8217;s this&#8230; it appears to have stalled. No disk activity, the mouse pointer (which I can still move) is the only think on the wallpaper, but it&#8217;s spinning-circle (egg-timer replacement) has disappeared and it seems nothing is happening. Now I know that at this point in a OS install, drivers are being loaded and hardware is being detected – sometimes a lengthy process. So I give it a minute or two. Then give up and try booting again. Same result. A quick google suggests it may be some USB devices so I disconnect printers, webcams etc. Same result. Further research suggests it could be BIOS settings, so I tweak those. Same result.</p>
<p>Then I read an article suggesting another unlikely solution: patience. I give this ago. 5 minutes and 20 seconds&#8217; worth of patience in fact. At which point the installation continues without apology. Having learnt the divine skill of patience, the rest of the installation went smoothly (though there was a need to “keep the faith” at various points during the install.) After not much more than 30 minutes, the PC booted into Windows 7 is record time and I&#8217;m liking what I see. Subsequent software installation has been effortless and the system continues to run well. I chose to move from Symantec antivirus to the free <a title="AVG Antivirus" href="http://free.avg.com/gb-en/download-avg-anti-virus-free" target="_blank">AVG</a> offering, and for firewall, I&#8217;ve taken on <a title="Comodo Firewall" href="http://personalfirewall.comodo.com/download_firewall.html" target="_blank">Comodo</a> instead of ZoneAlarm or Windows 7&#8217;s own blockers.</p>
<p>Finally, it was necessary to deal with Windows&#8217; unforgiving abuse of the Master Boot Record by replacing it with something that will acknowledge the fact that I have Linux running on another partition. To do this, I followed <a title="Installing grub2" href="http://pingusays.blogspot.com/2009/11/reinstalling-grub-in-karmic-koala-910.html">these steps</a> (which were new to me as I&#8217;m not so familiar with grub2).</p>
]]></content:encoded>
			<wfw:commentRss>http://www.xenzero.com/blog/2010/01/22/windows-7-for-an-ubuntu-devotee/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Bug Tracking in the Open</title>
		<link>http://www.xenzero.com/blog/2010/01/15/public-bug-tracking/</link>
		<comments>http://www.xenzero.com/blog/2010/01/15/public-bug-tracking/#comments</comments>
		<pubDate>Fri, 15 Jan 2010 10:43:32 +0000</pubDate>
		<dc:creator>Pete</dc:creator>
				<category><![CDATA[Development Process]]></category>
		<category><![CDATA[Geek]]></category>
		<category><![CDATA[bug tracking]]></category>
		<category><![CDATA[bugzilla]]></category>
		<category><![CDATA[issue tracking]]></category>
		<category><![CDATA[open]]></category>

		<guid isPermaLink="false">http://www.xenzero.com/blog/?p=169</guid>
		<description><![CDATA[In the inspiring Google blog post The Meaning of Open, Jonathan Rosenberg sites the Google Web Toolkit as using “a public bug tracker”.  And it is this small mention (in the midst of a post discussing much bigger themes) that I want to pursue.
I work for MediaTel Group and my focus is primarily on [...]]]></description>
			<content:encoded><![CDATA[<p>In the inspiring Google blog post <a title="The Meaning of Open" href="http://googleblog.blogspot.com/2009/12/meaning-of-open.html?utm_source=feedburner&amp;utm_medium=feed&amp;utm_campaign=Feed:+blogspot/MKuf+(Official+Google+Blog)&amp;utm_content=Google+Reader" target="_blank">The Meaning of Open</a>, Jonathan Rosenberg sites the Google Web Toolkit as using “a public bug tracker”.  And it is this small mention (in the midst of a post discussing much bigger themes) that I want to pursue.</p>
<p>I work for <a title="MediaTel Group" href="http://mediatel.co.uk" target="_blank">MediaTel Group</a> and my focus is primarily on developing data analytics tools for the UK media industry.  Among other uses, our products are used by media agencies to make advertising buy decisions.  Our strengths are the data and customer service, not just the software.  The product, in its web-based guise, has existed for nearly 10 years and in that time has travelled through some technology changes (starting as a <a title="Adobe ColdFusion" href="http://www.adobe.com/products/coldfusion/" target="_blank">ColdFusion</a> site; now a <a title="PHP" href="http://php.net" target="_blank">PHP</a>/<a title="Zend Framework" href="http://framework.zend.com/" target="_blank">Zend Framework</a> system) and many functional overhauls. With a product of this age and heritage, it is perhaps not surprising that we currently have 412 tickets open in our internal <a title="Bugzilla" href="http://www.bugzilla.org/" target="_blank">Bugzilla</a> issue tracker – a mixture of bug reports and enhancement requests.</p>
<p>All tickets have been raised by us.  Not our customers.  Sure, some tickets were instigated by customers (following discussion with our customer service or sales staff) but no MediaTel customer has ever been given a ticket number with which to refer back to their report, nor a formal SLA to set their expectation on delivery.  As MediaTel staff work hard to replicate, fix, test and deploy changes, the customer has no way of getting an update on the progress of the issue other than to call up or be contacted by our teams.</p>
<p>And yet we are very strong procedurally within the organisation and use a variety of tools as part of our daily customer service and development workflows to ensure that <em>internally</em><span style="font-style: normal;"> we have excellent information about the state of a bug fix or feature implementation.  We have a home-grown web-based CRM system and Bugzilla – which is integrated with our Subversion source code control system and a deployment process to ensure we know what code (and thus which bug fixes etc.) have been deployed to what environments and when.</span></p>
<p style="font-style: normal;">We&#8217;re brimming with information and it seems just a small step to take to share that information with our clients and solicit their bug reports and feature requests directly.  I suspect that some might recoil at the thought of revealing to our clients that we have hundreds of known bugs in our software – some of which we have known about for more than three years.  Why own up?  Some might consider it a backward step to rely on impersonal web-based tools to communicate updates rather than a more personal phone call or an email from a real person. There may be concerns about the amount of time it would take to manage all the new communication from customers.  Or that customers would be bombarded with too much confusing &#8211; sometimes technical &#8211; information.  But here is what I think:</p>
<ol>
<li><span style="font-style: normal;">Our product exists in order 	to help our customers go about </span><em>their </em><span style="font-style: normal;">business. 	 For MediaTel, making sales and retaining clients has got to be made 	easier if the product does what they need it to do and does it well. 	 Let&#8217;s make it easy for those clients to tell us what they want and 	need.  Let them tell us how important a particular software change 	is to them.  They can still pick up the phone to us, but having a 	direct route into our systems gives them more control and provides greater transparency;  it gives us 	more accurate (and more) information.</span></li>
<li>A desire to be honest with customers is key.  If they ask for something and we don&#8217;t have the resources to do it, let&#8217;s tell them.  If they ask for something but it is contrary to our product strategy, or more customers are asking for the opposite, let&#8217;s tell them.  I have faith that our customers understand these realities. For this reason, I would not shy away from publishing our internal priority for a particular issue alongside the priority attributed by the client.</li>
<li>If customers can raise their own tickets and view updates to those tickets, a natural extension of this is being able to view the tickets raised by other customers. By this means, they should be able to vote up or vote down a particular change. If they see a ticket that we are struggling to replicate, they may be able to share some insight. By doing this, we are beginning to create a community from our customers. This may lead to greater consensus on what our customer-base wants, and so enable us to focus our efforts where they will please the greatest number of customers most.</li>
<li>One challenge is to identify the right tools for the job.  A shrink-wrapped Bugzilla deployment is not going to fit the bill.  We need a simple UI for our customers who will not wish the job of sharing information with us to be onerous.  We do not wish customers to to have to grapple with the differences between “severity”, “priority” and “importance”.  We need the ability to keep some updates and comments to ourselves (not because we wish to hide information, but because we do not want developers to become inefficient – or, worse, tongue-tied – as they consider how the wording of a comment might be perceived by a customer.)  We need to ensure that when a customer raises an issue, they are not repeating the details of a ticket that has already been raised.  (<a title="stackoverflow.com" href="http://stackoverflow.com" target="_blank">stackoverflow.com</a> does an excellent job of this.)  When browsing a list of issues, we need to allow them to filter that list so that they are not overwhelmed.</li>
</ol>
<p style="font-style: normal;">Opening our ticket database to customers is not a move towards abandoning other forms of customer service or product management.  But it is another tool to help us show how we value our customers and ensure we are directing our efforts where our customers most need them.  It should not lead to us having to take on more work but, rather, it should ensure that the work we do is always to the benefit of our customers and will therefore encourage both customer-retention and sales.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.xenzero.com/blog/2010/01/15/public-bug-tracking/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Picasa on Ubuntu</title>
		<link>http://www.xenzero.com/blog/2010/01/05/picasa-on-ubuntu/</link>
		<comments>http://www.xenzero.com/blog/2010/01/05/picasa-on-ubuntu/#comments</comments>
		<pubDate>Tue, 05 Jan 2010 12:25:07 +0000</pubDate>
		<dc:creator>Pete</dc:creator>
				<category><![CDATA[Geek]]></category>
		<category><![CDATA[Technologies]]></category>
		<category><![CDATA[Ubuntu Linux]]></category>
		<category><![CDATA[digikam]]></category>
		<category><![CDATA[f-spot]]></category>
		<category><![CDATA[gthumb]]></category>
		<category><![CDATA[nautilus]]></category>
		<category><![CDATA[photo]]></category>
		<category><![CDATA[picasa]]></category>

		<guid isPermaLink="false">http://www.xenzero.com/blog/?p=154</guid>
		<description><![CDATA[I&#8217;ve recently taken a shine to Picasa as an alternative to F-Spot on Linux.  Installing Picasa 3 Beta for Linux is straightforward on Ubuntu: download the .deb from Google&#8217;s site and then install it (sudo dpkg -i picasa_3.0-current_i386.deb).  Having done that, the only other bit of configuration I have found useful is to change the [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve recently taken a shine to <a title="Picasa" href="http://picasa.google.co.uk/" target="_blank">Picasa</a> as an alternative to <a title="F-Spot" href="http://f-spot.org" target="_blank">F-Spot</a> on Linux.  Installing Picasa 3 Beta for Linux is straightforward on Ubuntu: download the .deb from <a title="Picasa download" href="http://picasa.google.co.uk/linux/" target="_blank">Google&#8217;s site</a> and then install it (sudo dpkg -i picasa_3.0-current_i386.deb).  Having done that, the only other bit of configuration I have found useful is to change the default application for photo-media handling in Nautilus.  To do so, launch Nautilus &gt; Edit &gt; Preferences &gt; Media &gt; Photos &gt; Open with other application&#8230; and then choose /usr/bin/picasa.  Job done.</p>
<p>If you want a flamey discussion of the relative merits of F-Spot and Picasa (and <a title="gThumb" href="http://live.gnome.org/gthumb" target="_blank">gThumb</a>, <a title="digiKam" href="http://www.digikam.org/" target="_blank">digiKam</a> etc.), see <a title="Thread" href="http://ubuntuforums.org/showthread.php?t=184615" target="_blank">this thread</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.xenzero.com/blog/2010/01/05/picasa-on-ubuntu/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ubuntu Karmic &#8211; now better than Mac OS X</title>
		<link>http://www.xenzero.com/blog/2009/11/16/setting-up-ubuntu-karmic-for-the-desktop-and-development/</link>
		<comments>http://www.xenzero.com/blog/2009/11/16/setting-up-ubuntu-karmic-for-the-desktop-and-development/#comments</comments>
		<pubDate>Mon, 16 Nov 2009 22:26:17 +0000</pubDate>
		<dc:creator>Pete</dc:creator>
				<category><![CDATA[Geek]]></category>
		<category><![CDATA[Ubuntu Linux]]></category>
		<category><![CDATA[desktop]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[karmic]]></category>
		<category><![CDATA[koala]]></category>

		<guid isPermaLink="false">http://www.xenzero.com/blog/?p=95</guid>
		<description><![CDATA[Ok.  The subject of the post is deliberately provocative and the chances of me changing the allegiance of die-hard fans of Apple&#8217;s &#8220;beauty-in-a-box&#8221; are remote to say the least.  But I think it right to encourage everyone (whether Windows, Mac or Linux desktop users) to look again at Ubuntu Linux following it&#8217;s most [...]]]></description>
			<content:encoded><![CDATA[<p>Ok.  The subject of the post is deliberately provocative and the chances of me changing the allegiance of die-hard fans of Apple&#8217;s &#8220;beauty-in-a-box&#8221; are remote to say the least.  But I think it right to encourage everyone (whether Windows, Mac or Linux desktop users) to look again at Ubuntu Linux following it&#8217;s most recent release, the Karmic Koala.</p>
<p>It was once the case that things just worked on a Mac (and even Windows) but were an unreasonable struggle with Ubuntu.  Wireless networking.  Display settings (especially dual-head display settings.)  VPN connections.  But having followed Ubuntu on the desktop for three years, I think it&#8217;s finally got there.  It is a real contender for running your desktop PC.</p>
<p>With the &#8220;compiz&#8221; window manager, beautiful display effects and functionality (similar to Mac&#8217;s Exposé) are possible with almost no setup required.  That coupled with the &#8220;Docky&#8221; theme for the gnome-do application, give you a user interface that is &#8211; well, not original, no &#8211; but a firm challenge to that provided by Apple (and latterly Microsoft.)</p>
<p>But, as a geek, it is not just the eye-candy which swings things in Ubuntu&#8217;s favour.  Mac OS X is of course just BSD Linux underneath.  To put things crudely though, it is like having a version of Linux which has a strange directory layout and a restrictive software package manager.  Couple that with the fact that the Ubuntu community is stronger for developers, and you have a more compelling proposition from the free option.</p>
<p>And if you really want it, you can get Apple&#8217;s keyboard, mouse and screen to complete your look!</p>
<p>Installation of Koala is quick and easy &#8211; and boot-up times are way ahead of anything that Windows offers.  I urge you to try it out.</p>
<p>What doesn&#8217;t it do?  Well, you won&#8217;t get Photoshop running effectively in Koala.  Poeple will talk about virtual machines or about using open-source alternatives such as Gimp &#8211; but these are not viable options for serious users.  Likewise Premiere Pro for your video editing is not an option.  The most frustrating omission which perhaps affects the greatest numbers of potential defectors is the lack of iTunes.  A great open-source alternative, Songbird, has it all&#8230; except for viable support for iPod and iPhone devices.  If you can live with these omissions, I believe you&#8217;ve got a new (free) friend.  Well, operating system of choice.</p>
<p>I&#8217;m a developer and the following is a guide to some of the setup I perform after the base installation: to get a desktop system up and running to my liking.  Excuse the apt-get syntax; it doesn&#8217;t matter how many different GUI package managers they throw at me&#8230; I&#8217;ll still find it easier to install software via the command line &#8211; but the GUIs are, (I&#8217;m told!) good if this looks alien to you: <span id="more-95"></span></p>
<pre style="padding-left: 30px;"># essential to get video working (e.g. YouTube)
apt-get install ubuntu-restricted-extras

# to connect to my work VPN
apt-get install network-manager-pptp

# to allow SSH connections to my machine from others
apt-get install openssh-server

# to help customise the GRUB boot loader
apt-get install startup-manager

# to enable outbound mail via a smarthost and command line mailing
apt-get install mailx nullmailer

# to enable a multiple-account mail notification icon in the panel
apt-get install mail-notification

# gives you an OS X-style dock
apt-get install compizconfig-settings-manager gnome-do

# controversial, perhaps, but pidgin beats empathy for (non audio/video) instant messaging
apt-get install pidgin pidgin-otr

# controversial again, but until Evolution sorts out its HTML rendering, Thunderbird wins
apt-get install thunderbird</pre>
<p>For development purposes (I am primarily a LAMP developer), I recommend:</p>
<pre style="padding-left: 30px;">apt-get install apache2 php5 mysql-server subversion
# And a bunch of php5 extensions - too many to list here

# to support the installation of Netbeans, SQuirreL and DBWrench
apt-get install sun-java6-jre

# to support integration with MySQL and SQL Server
apt-get install libjtds-java libmysql-java

# I'm a geek; this beats any other editor I know
apt-get install vim</pre>
<p>For Nvidia graphics card users who want dual screen capabilities, I found that a simple install of the following gave me a GUI tool on the menus in order to set this up in seconds:</p>
<pre style="padding-left: 30px; ">apt-get install nvidia-xconfig nvidia-settings</pre>
<p>Enjoy.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.xenzero.com/blog/2009/11/16/setting-up-ubuntu-karmic-for-the-desktop-and-development/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Claire&#8217;s website up and running</title>
		<link>http://www.xenzero.com/blog/2009/08/13/claires-website-up-and-running/</link>
		<comments>http://www.xenzero.com/blog/2009/08/13/claires-website-up-and-running/#comments</comments>
		<pubDate>Thu, 13 Aug 2009 19:16:26 +0000</pubDate>
		<dc:creator>Pete</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.xenzero.com/blog/2009/08/13/claires-website-up-and-running/</guid>
		<description><![CDATA[Claire has started a coaching business and her website is now up and running.  You can take a look at http://www.clairehowecoaching.co.uk for more information.  There are several excellent testimonials on there.  She does telephone coaching as well as face-to-face meetings, so geography isn&#8217;t an issue.
]]></description>
			<content:encoded><![CDATA[<p>Claire has started a coaching business and her website is now up and running.  You can take a look at <a href="http://www.clairehowecoaching.co.uk">http://www.clairehowecoaching.co.uk</a> for more information.  There are several excellent testimonials on there.  She does telephone coaching as well as face-to-face meetings, so geography isn&#8217;t an issue.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.xenzero.com/blog/2009/08/13/claires-website-up-and-running/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Stored Procedures: Good or Bad?</title>
		<link>http://www.xenzero.com/blog/2008/12/15/stored-procedures-good-or-bad/</link>
		<comments>http://www.xenzero.com/blog/2008/12/15/stored-procedures-good-or-bad/#comments</comments>
		<pubDate>Mon, 15 Dec 2008 22:06:44 +0000</pubDate>
		<dc:creator>Pete</dc:creator>
				<category><![CDATA[Geek]]></category>
		<category><![CDATA[Technologies]]></category>
		<category><![CDATA[database]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[stored procedures]]></category>

		<guid isPermaLink="false">http://www.xenzero.com/blog/?p=43</guid>
		<description><![CDATA[A project team rewriting one of our web products has made the decision to jump ship from SQL Server to the open-source MySQL database and, at the same time, to place a greater emphasis on the use of stored procedures. Since that decision, there have been various other projects where the choice of moving some [...]]]></description>
			<content:encoded><![CDATA[<p>A project team rewriting one of our web products has made the decision to jump ship from SQL Server to the open-source MySQL database and, at the same time, to place a greater emphasis on the use of stored procedures. Since that decision, there have been various other projects where the choice of moving some business logic to the database server has had to be contemplated.</p>
<p>My initial reaction to the use of stored procedures was hesitant.  I work in a small company with no dedicated database programmers and a relatively small team of PHP experts. Due to this balance alone, I consider a greater reliance of stored procedures to be a risk.  But there is one very good reason to think the move may not be so risky after all: it takes load off the network &#8211; which might also result in a net performance gain.</p>
<p>But my initial wariness still stands &#8211; and continues for all the projects for which I&#8217;ve considered stored procedures recently.  The following disadvantages overwhelm that performance gain:</p>
<ul>
<li><em>Language: </em>the extended SQL language used in stored procedures is relatively immature and doesn&#8217;t lend itself to certain complex logic.</li>
<li><em>Tools: </em>development tools for MySQL stored procedures  (including debugging aids) are very limited.</li>
<li><em>Server load: </em>increased processing on the database server is more difficult to accommodate (database servers are more difficult to scale than Apache/PHP web servers, for example.)</li>
<li><em>Deployment headaches: </em>it can be hard enough to keep database and application code in sync without causing even a blip of downtime.  Introducing stored procedures introduces another element which needs careful management.  It&#8217;s not rocket science, but it&#8217;s just more to think about &#8211; and more to go wrong.</li>
<li><em>Portability </em>is limited (DB2 has a similar language to that used by MySQL, but otherwise, you&#8217;re pretty much stuck if you want to move to another database platform.)  That said, it&#8217;s not exactly an everyday occurrence, is it?</li>
<li><em>Performance(!):</em> the performance gain you may expect from stored procedures might often be a myth anyway. Stored procedure code executes slowly when compared with many application programming languages &#8211; so the benefits of reduced network traffic might soon be eaten into.</li>
</ul>
<p>So, for the time being, while we have the skills to focus development of business logic in PHP, that&#8217;s just what we&#8217;ll do.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.xenzero.com/blog/2008/12/15/stored-procedures-good-or-bad/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Hailing Ubuntu 8.10 Intrepid Ibex (and the Eee PC 701)</title>
		<link>http://www.xenzero.com/blog/2008/10/20/ubuntu-810-intrepid-ibex-on-the-eee-pc-701/</link>
		<comments>http://www.xenzero.com/blog/2008/10/20/ubuntu-810-intrepid-ibex-on-the-eee-pc-701/#comments</comments>
		<pubDate>Mon, 20 Oct 2008 13:08:25 +0000</pubDate>
		<dc:creator>Pete</dc:creator>
				<category><![CDATA[Geek]]></category>
		<category><![CDATA[Ubuntu Linux]]></category>

		<guid isPermaLink="false">http://www.xenzero.com/blog/?p=16</guid>
		<description><![CDATA[(Updated: new steps needed for wireless on Eee PC)
Each release of Ubuntu just gets more and more, well, grown-up.  When I started using Ubuntu on the desktop, it was a brave man who would upgrade when a new release became available rather than install from scratch (and keep your fingers crossed with drivers.)  But things [...]]]></description>
			<content:encoded><![CDATA[<p><strong>(Updated: new steps needed for wireless on Eee PC)</strong></p>
<p>Each release of Ubuntu just gets more and more, well, grown-up.  When I started using Ubuntu on the desktop, it was a brave man who would upgrade when a new release became available rather than install from scratch (and keep your fingers crossed with drivers.)  But things have improved significantly &#8211; even on hardware which is new and typically less well supported (<strong>see my Eee PC 701 setup guide later in this article</strong>.)</p>
<p>Things I like about Intrepid over previous versions:<span id="more-16"></span></p>
<ol>
<li>Network Manager just seems to work.  The OpenVPN support just works.  It all just feels less flaky.  And when I plug my mobile phone in, it took about 10 seconds to setup a 3G connection through it.  All very plug-and-play.</li>
<li>Fonts: <em>System &gt; Preferences &gt; Appearance &gt; Fonts &gt; Subpixel smoothing (LCDs) </em>looks nicer than ever before.</li>
<li>The combination of Nautilus&#8217;s Tree organiser and it&#8217;s new Compact View really makes this a usable file manager.  At last.</li>
<li>Dual screen support seems much improved.  Two machines which I had trouble with in the past (one with an NVidea card) now work with a second monitor without having to wrestle with the xorg.conf.  What I&#8217;ll do with those cold winter evenings now, I don&#8217;t know.</li>
</ol>
<p>One of my laptops is an Asus Eee PC 701.  Under Gutsy and Hardy, a number of tweaks were essential to get basic functions to work (wireless and sound in particular).  With the impending release of Intrepid, things go much more smoothly, and while a few tweaks are necessary, it&#8217;s <em>almost</em> plain-sailing.</p>
<p>Here are the steps I have taken to install Intrepid on my Eee PC 701:<!--more--></p>
<ol>
<li><a href="http://www.ubuntu.com/testing/intrepid/beta" target="_blank">Download the ISO</a> and install from USB (using the <a href="http://www.pendrivelinux.com/2008/04/09/usb-ubuntu-804-installation-from-windows/">ub8convert2.exe tool</a>)</li>
<li><strong>Get wireless working. </strong>Go to <em>System &gt; Administration &gt; Hardware Drivers </em>and deactivate the Atheros driver and reboot.  <em><strong>UPDATE!</strong></em> If that doesn&#8217;t work, it&#8217;s because the ath5k driver has been removed from Intrepid (on 28 October) &#8211; by the time you read this, it may be back.  If not, visit <a href="https://bugs.launchpad.net/ubuntu/+source/linux/+bug/289014/comments/6" target="_blank">this bug report</a> and you have the steps necessary to get back online.</li>
<li><strong>Get up-to-date </strong>(especially as this is a beta currently.)  Keep an eye out for the update-manager icon in the top right of your panel and take suggested upgrades.  It may well suggest a &#8220;Partial Distribution Upgrade&#8221; as this is a pre-release version. Do it.</li>
<li><strong>S</strong><strong>hutdown doesn&#8217;t power-off</strong>.  To fix, add the following line to the end of the /etc/default/halt script:</li>
<p><code>rmmod snd-hda-intel</code></p>
<li><strong>S</strong><strong>ound doesn&#8217;t work</strong> out of the box.  To fix, create a new file (or append to the existing file) /etc/modprobe.d/snd-hda-intel:</li>
<p><code>options snd_hda_intel power_save=10 power_save_controller=Y</code></p>
<li><strong>Turn on the microphone. </strong>Right click the volume icon (top-right) and choose <em>Open Volume Control</em>.  Then raise the <em>e-mic</em> control to the top.</li>
<li>Use the <a href="http://eee.ricey.co.uk/files/eee/RiceeeyTweak.sh">Riceeey script</a> to achieve the following. You&#8217;ll need to edit the script down to size just to achieve this.  I haven&#8217;t tested whether the &#8220;overclocking&#8221; (which is really a &#8220;don&#8217;t underclock&#8221;) feature works.
<ul>
<li>allow windows to be moved  above the top of the screen (by holding Alt while dragging)</li>
<li>set toolbar style to just show icons and set fonts to size 8 (to give you more space)</li>
<li>set Alt-F11 as the key for running apps full-screen</li>
</ul>
</li>
<li><strong>Get the hotkeys working:<br />
</strong></li>
<p><code>wget http://www.informatik.uni-bremen.de/~elmurato/901/Ubuntu_ACPI_scripts-EeePC_901_1000.tar.gz<br />
or<br />
<span class="search_hit">http</span>://www.informatik.uni-bremen.de/~elmurato/EeePC/Ubuntu_ACPI_scripts-EeePC_900A_901_1000.tar.gz<br />
tar -xfvz Ubuntu_ACPI_scripts-EeePC_901_1000.tar.gz<br />
cd Ubuntu_ACPI_scripts-EeePC_901_1000/<br />
chmod +x install.sh<br />
sudo ./install.sh</code></ol>
<p>Good luck &#8211; do tell me how you get on.  Thanks to <a href="http://wiki.eeeuser.com/getting_ubuntu_8.04_to_work_perfectly" target="_blank">devgru</a> and <a href="http://www.psychocats.net/ubuntucat/ubuntu-810-intrepid-ibex-on-the-eee-pc-701/" target="_blank">Psychocats</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.xenzero.com/blog/2008/10/20/ubuntu-810-intrepid-ibex-on-the-eee-pc-701/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Integrating Subversion (SVN) with Bugzilla</title>
		<link>http://www.xenzero.com/blog/2008/04/02/integrating-subversion-svn-with-bugzilla/</link>
		<comments>http://www.xenzero.com/blog/2008/04/02/integrating-subversion-svn-with-bugzilla/#comments</comments>
		<pubDate>Wed, 02 Apr 2008 20:31:41 +0000</pubDate>
		<dc:creator>Pete</dc:creator>
				<category><![CDATA[Configuration Management]]></category>
		<category><![CDATA[Geek]]></category>

		<guid isPermaLink="false">http://www.xenzero.com/blog/?p=11</guid>
		<description><![CDATA[It&#8217;s well documented why using a source code control system is a worthwhile investment.  Change tracking, team working, a safety-net, release management, control and reporting.  And Subversion, a.k.a. svn, is the leading light in the open source world, taking over the mantle from CVS.
Subversion is different.  It takes a different approach to [...]]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s well documented why using a source code control system is a worthwhile investment.  Change tracking, team working, a safety-net, release management, control and reporting.  And Subversion, a.k.a. svn, is the leading light in the open source world, taking over the mantle from CVS.</p>
<p>Subversion is different.  It takes a different approach to any other source code control system I know.  It uses lightweight &#8216;copy&#8217; operations to achieve tagging and branching.  It&#8217;s intuitive.  If you didn&#8217;t have source code control and you had a code base that you wanted to keep as &#8220;version 1&#8243;, you&#8217;d most likely take a copy of the directory and call the new directory &#8220;version 1&#8243;.  Well that&#8217;s tagging in svn.</p>
<p>But, like I say, this is all well-documented.<span id="more-11"></span></p>
<p>Bugzilla is a bug-tracking system.  I hate the word &#8220;bug-tracking&#8221;.  (I&#8217;m not very fond of the word &#8220;bug&#8221; at all!)  But it&#8217;s a misnomer to label it a bug-tracking system because it tracks any sort task &#8211; typically a programming task.  Frequently, it tracks the tasks involved in developing new products and new features.  Not just bug-fixes.  So I prefer task-tracker.</p>
<p>Bugzilla is a perl-based open-source task-tracker. It&#8217;s been around for years and with each release (especially the recent 3.x stream, which introduces custom fields, at last) it gets better and better,  It&#8217;s basic.  It lets you record a bunch of information relating to a task.  A summary. The priority of the task.  Who is interested in getting updates.  The status.</p>
<p>10 years ago, when working at Thomson Datastream, we used Paradox to keep track of our tasks.  It was implemented as a form-based database.  Bugzilla is no different.  Each task has an ID and associated with that ID are the fields.</p>
<p>It has some nifty additional features to facilitate workflow.  When a &#8220;bug&#8221; is updated (don&#8217;t get me started on how wrong the grammar and accuracy of that phrase is), interested parties are emailed to be told what&#8217;s changed.  It has a flexible reporting system.  It has some basic project management facilities, such as task estimate and time tracking.  But it&#8217;s still essentially just a bunch of fields in a database.</p>
<p>I often hear people confusing source code control with task-tracking.  They are very different.  One is concerned with the lines of code being written and managing the history of changes.  The other is concerned (typically) with recording and managing the programming tasks.</p>
<p>And in any semi-mature development environment, both are needed.  Especially where a team is working together.  But even as a one-man team, I&#8217;d recommend the use of both.</p>
<p>That doesn&#8217;t sound too controversial, but it is.  And here&#8217;s why.  When a developer checks some code into svn, that change is given a unique &#8220;revision number&#8221;.  The coder can provide a description of their change when they commit.  And svn supports &#8220;hook scripts&#8221; which easily allow it to be configured to send emails when code is committed (or tags created or branches merged, etc.)  And so the argument often goes: why bother with a task-tracking system too, when I&#8217;m getting most of the functionality with just Subversion?</p>
<p>The problem is this.  Programmers are concerned with the nuts and bolts of development.  Their change descriptions are likely to read, &#8220;Change the user array to be an array of objects instead of id&#8217;s&#8221;, or &#8220;Add new sort function&#8221;, or &#8220;Implement new View module for the admin n Controller&#8221;.  But a project/product/commercial manager &#8211; or, perhaps much more prescient, a customer or prospect &#8211; is likely to think in terms of high level features or changes: &#8220;Improve performance of adding a new user to the system&#8221;; &#8220;Tracks should be sorted by ignoring the word &#8216;the&#8217;&#8221;; &#8220;New blue-themed look Admin screens&#8221;.</p>
<p>It&#8217;s not just the descriptions &#8211; that would be easily resolved.  But more difficult to overcome is the granularity.  A single feature (e.g. &#8220;Allow a user&#8217;s account to be disabled&#8221;) might involve multiple code commits.  Perhaps by a number of different developers or designers.  So now your developer has a number of lower-level changes and descriptions which are all part of a single piece of work as far as management or customers are concerned.  And while one of those more granular changes may be concerned complete by a single programmer, the project manager knows that it&#8217;s not until all the associated pieces of work are complete that the task is <em>really</em> complete,</p>
<p>So it&#8217;s become an issue of communicating the right information to the right audience.  And I don&#8217;t think you can ignore either your developers nor your managers and customers.</p>
<p>You need both source code control <em>and</em> you need effective task-tracking.</p>
<p>This has been the case for as long as I can remember (from those heady days of Paradox and Digital CMS, through proprietary databases and CVS, to Bugzilla and svn.)  But despite there clearly being a role for both systems, and despite the prevalence of such systems, integration of the two is another matter.  Getting Bugzilla to talk to svn and vice versa is not trivial.  And there is certainly no inherent capability in either product.</p>
<p>There are &#8220;workaround&#8221; solutions to this &#8211; for example, getting developers to commit code changes for a single task in one single commit operation.  Or get developers to keep track of the revision numbers associated with their issues.  But these are largely impractical (or force a suboptimum development process on the team) or are labour intensive and subject to human error.</p>
<p>There are tools which can facilitate these tasks &#8211; such as trac (of which I have almost no experience but hear many good things &#8211; but am not convinced it meets all of the requirements.)  I&#8217;d welcome more feedback on trac and tools which might help tackle the problems I&#8217;ve outlined above.</p>
<p>But ultimately I think to solve the twin needs of task tracking with Bugzilla and source code control with svn, it is necessary to choose between implementing some glue between the two or accepting some increase overhead (and risk) in manually running both in parallel.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.xenzero.com/blog/2008/04/02/integrating-subversion-svn-with-bugzilla/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Sync Google Calendar with iPod on Ubuntu Linux</title>
		<link>http://www.xenzero.com/blog/2007/10/06/sync-google-calendar-with-ipod-on-ubuntu-linux/</link>
		<comments>http://www.xenzero.com/blog/2007/10/06/sync-google-calendar-with-ipod-on-ubuntu-linux/#comments</comments>
		<pubDate>Sat, 06 Oct 2007 09:45:20 +0000</pubDate>
		<dc:creator>Pete</dc:creator>
				<category><![CDATA[Geek]]></category>
		<category><![CDATA[Ubuntu Linux]]></category>

		<guid isPermaLink="false">http://www.xenzero.com/blog/2007/10/06/sync-google-calendar-with-ipod-on-ubuntu-linux/</guid>
		<description><![CDATA[Bugzilla and svn.  Both useful.  Actually - both necessary.  But how to get them to work together?]]></description>
			<content:encoded><![CDATA[<p>Create a script to fetch the Google Calendar and copy it to your iPod:</p>
<pre># download the Google calendar ical file through the private URL
wget -c -N http://www.google.com/calendar/ical/yourname%40gmail.com/public/basic.ics

# copy it to the iPod
cp basic.ics /media/your-ipod-name/Calendars/google.ics
rm basic.ics</pre>
<p>Now configure Ubuntu so that this script is run whenever you plug your iPod in.  Add the following line to /etc/udev/rules.d/80-programs.rules:</p>
<pre>KERNEL=="sdc1", RUN+="/path/to/your/script.sh"</pre>
<p>(Replace sdc1 with the appropriate device name, which you can find out by typing &#8220;df&#8221;.)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.xenzero.com/blog/2007/10/06/sync-google-calendar-with-ipod-on-ubuntu-linux/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>
