<?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>petehowe.co.uk</title>
	<atom:link href="http://petehowe.co.uk/feed/" rel="self" type="application/rss+xml" />
	<link>http://petehowe.co.uk</link>
	<description>Peter Howe&#039;s blog</description>
	<lastBuildDate>Thu, 26 Apr 2012 09:16:43 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Got Ubuntu 12.04 Precise Pangolin? Now what?</title>
		<link>http://petehowe.co.uk/2012/got-ubuntu-12-04-precise-pangolin-now-what/</link>
		<comments>http://petehowe.co.uk/2012/got-ubuntu-12-04-precise-pangolin-now-what/#comments</comments>
		<pubDate>Thu, 26 Apr 2012 09:10:37 +0000</pubDate>
		<dc:creator>Pete</dc:creator>
				<category><![CDATA[Geek]]></category>
		<category><![CDATA[Ubuntu Linux]]></category>
		<category><![CDATA[GNOME]]></category>
		<category><![CDATA[Google Calendar]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Shell]]></category>

		<guid isPermaLink="false">http://petehowe.co.uk/?p=301</guid>
		<description><![CDATA[Here are the steps I have taken to install Ubuntu 12.04 Precise Pangolin with the Gnome 3.4 desktop. Of course, everyone has their own preferences for behaviour &#8211; but these are mine.  These steps begin after rebooting at the end &#8230; <a href="http://petehowe.co.uk/2012/got-ubuntu-12-04-precise-pangolin-now-what/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<div>
<p>Here are the steps I have taken to install Ubuntu 12.04 Precise Pangolin with the Gnome 3.4 desktop. Of course, everyone has their own preferences for behaviour &#8211; but these are mine.  These steps begin after rebooting at the end of the installation.</p>
<p>1. Press Ctrl-Alt-F1 (for the non-graphical shell), and log in with the username/password you set during install.</p>
<p>2. Set a root password:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">passwd</span> root</pre></div></div>

<p>3. Log out (exit), and log in again, but this time as root (still in the non-graphical shell)</p>
<p>4. Optional: Change your Ubuntu account’s uid to match the uid on other Linux boxes I use (it can make file transfer and management easier):</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">usermod <span style="color: #660033;">-uUID</span> USERNAME</pre></div></div>

<p>5. Prevent future use of sudo from requiring you to enter your password.  Type &#8220;sudo visudo&#8221;, then change the last lane (beginning %admin) to add the NOPASSWD: option:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">%</span>admin <span style="color: #007800;">ALL</span>=<span style="color: #7a0874; font-weight: bold;">&#40;</span>ALL<span style="color: #7a0874; font-weight: bold;">&#41;</span> NOPASSWD: ALL</pre></div></div>

<p>6. Bring your ubuntu installation up-to-date:</p></div>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">apt-get</span> update <span style="color: #000000; font-weight: bold;">&amp;</span>amp;<span style="color: #000000; font-weight: bold;">&amp;</span>amp; <span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">apt-get</span> dist-upgrade</pre></div></div>

<p>7. Install gnome shell (get the latest version by using the Gnome 3 PPA instead of Ubuntu&#8217;s distruibution):</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">sudo</span> add-apt-repository ppa:gnome3-team<span style="color: #000000; font-weight: bold;">/</span>gnome3
<span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">apt-get</span> update
<span style="color: #c20cb9; font-weight: bold;">apt-get</span> <span style="color: #c20cb9; font-weight: bold;">install</span> gnome-shell gnome-themes-standard gnome-tweak-toolgnome-contacts</pre></div></div>

<p>8. Ok, now we&#8217;re ready to login with your normal account and enjoy the desktop!  Press Ctrl-Alt-F7, and choose GNOME from the cog menu and log in as your normal user</p>
<p>9. Now configure the Gnome 3 Shell.  These are my preferences:<br />
a. Settings &gt; Personal &gt; Appearance &gt; Theme: Adwaita (and set Wallpaper to the blue one)</p>
<p>b. Settings &gt; Hardware &gt; Keyboard &gt; Shortcuts</p>
<div>Launchers: Disabled, Ctrl-Alt-C / M / W / E / S / T</div>
<div>Navigation: Hide all normal windows: Ctrl+Alt+D</div>
<div>System: Run: Ctrl+Alt+R, Show activities overview: Ctrl+Alt+Return, Lock Ctrl+Alt+L</div>
<div>c. Settings &gt; Online Accounts &#8211; Add your google account</div>
<div>d. Set Google Calendar as the app to open from Gnome calendar by executing this command in a terminal window:</div>
<div>
<p>gsettings set org.gnome.desktop.default-applications.office.calendar exec &#8220;chromium-browser &#8216;https://www.google.com/calendar&#8217;&#8221;</p>
<p>e. Sync Google Calendar with Gnome Shell:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">apt-get</span> <span style="color: #c20cb9; font-weight: bold;">install</span> git-core python-gtk2 python-dbus python-gdata python-iso8601 python-gnomekeyring
<span style="color: #7a0874; font-weight: bold;">cd</span> <span style="color: #000000; font-weight: bold;">/</span>opt
<span style="color: #c20cb9; font-weight: bold;">git</span> clone https:<span style="color: #000000; font-weight: bold;">//</span>github.com<span style="color: #000000; font-weight: bold;">/</span>vintitres<span style="color: #000000; font-weight: bold;">/</span>gnome-shell-google-calendar.git
<span style="color: #7a0874; font-weight: bold;">cd</span> gnome-shell-google-calendar
.<span style="color: #000000; font-weight: bold;">/</span>gnome-shell-google-calendar.py</pre></div></div>

<p>Choose the Google Account that you set up earlier in Online Accounts. Once settled down, exit with Ctrl-C<br />
Startup Applications, under &#8220;Name&#8221; enter &#8220;Gnome Shell Calendar&#8221; and under command, click &#8220;Browse&#8221; and select &#8220;gnome-shell-google-calendar.py&#8221; from the gnome-shell-google-calendar folder in /opt</p>
<p>10. Now install some additional packages.  I&#8217;m a PHP developer, so some of these packages are very specific to my needs:</p>
</div>
</div>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">apt-get</span> <span style="color: #c20cb9; font-weight: bold;">install</span> ubuntu-restricted-extras build-essential chromium-browser mysql-server apache2 gnome-do postfix mailutils openssh-server php5 php5-cli php5-curl php5-gd php5-mysql php5-pspell php5-sybase php5-xdebug php5-xmlrpc php-apc php-pear libjtds-java libmysql-java subversion <span style="color: #c20cb9; font-weight: bold;">vim</span> dconf-tools meld startupmanager nautilus-dropbox gtk2-engines-pixbuf<span style="color: #000000; font-weight: bold;">&lt;/</span>div<span style="color: #000000; font-weight: bold;">&gt;</span></pre></div></div>

<p>(The latter is a workaround for a bug: <a href="http://yoodey.com/solving-gtk-warning-unable-locate-theme-engine-modulepath-pixmap" target="_blank">http://yoodey.com/solving-gtk-warning-unable-locate-theme-engine-modulepath-pixmap</a>)</p>
<p>11. Want to configure Gnome 3 a bit more?  I used Pidgin over Empathy and that requires a bit of extra help!</p>
<ul>
<li>sudo add-apt-repository ppa:webupd8team/gnome3</li>
<li>sudo apt-get update</li>
<li>sudo apt-get install gnome-shell-extensions-pidgin</li>
<li>sudo apt-get install gnome-shell-extensions-weather (get the location code from weather.yahoo.com&#8217;s RSS feed, London = UKXX0085)</li>
<li>And from extensions.gnome.org, install:
<ul>
<li>Remove Accessibility</li>
<li>Remove Bluetooth</li>
<li>Remove Activities (This disables the top-left Gnome hotspot &#8211; so only install if you are happy with that)</li>
<li>Remove User Name</li>
<li>Gmail Notify</li>
<li>Pidgin Persistent Notification</li>
<li>Pidgin Integration</li>
<li>Workspace Navigator</li>
<li>Status Icon Fixer</li>
<li>Music Integration</li>
</ul>
</li>
</ul>
<p>12. Use select-editor to choose vim.basic as your editor.</p>
<p>13. For laptop, make the external monitor the primary monitor:</p>
<p>a. Find out the name of your monitor &#8211; e.g. VGA-0 here):</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">xrandr <span style="color: #660033;">--prop</span> <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">egrep</span> <span style="color: #ff0000;">&quot;[^s]connected&quot;</span></pre></div></div>

<p>LVDS connected 1366&#215;768+1920+312 (normal left inverted right x axis y axis) 256mm x 144mm<br />
VGA-0 connected 1920&#215;1080+0+0 (normal left inverted right x axis y axis) 477mm x 268mm</p>
</div>
<div>b. Set the appropriate one as your primary monitor.</div>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">xrandr <span style="color: #660033;">--output</span> VGA-<span style="color: #000000;">0</span> <span style="color: #660033;">--primary</span></pre></div></div>

<div>Add this to Startup Applications.</div>
]]></content:encoded>
			<wfw:commentRss>http://petehowe.co.uk/2012/got-ubuntu-12-04-precise-pangolin-now-what/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Why I don&#8217;t use enum columns in MySQL database design</title>
		<link>http://petehowe.co.uk/2011/why-i-dont-use-enum-columns-in-mysql-database-design/</link>
		<comments>http://petehowe.co.uk/2011/why-i-dont-use-enum-columns-in-mysql-database-design/#comments</comments>
		<pubDate>Mon, 21 Feb 2011 15:34:49 +0000</pubDate>
		<dc:creator>Pete</dc:creator>
				<category><![CDATA[Geek]]></category>
		<category><![CDATA[Technologies]]></category>
		<category><![CDATA[Databases]]></category>
		<category><![CDATA[Enumerated type]]></category>
		<category><![CDATA[Lookup table]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[SQL]]></category>

		<guid isPermaLink="false">http://petehowe.co.uk/?p=283</guid>
		<description><![CDATA[I used to be a fan of ENUM columns in MySQL databases.  They&#8217;re lighter-weight than explicit lookup tables and, I presumed, led to less expensive operations than foreign key checks on a lookup table.  But I&#8217;ve changed my mind: Changes &#8230; <a href="http://petehowe.co.uk/2011/why-i-dont-use-enum-columns-in-mysql-database-design/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I used to be a fan of ENUM columns in MySQL databases.  They&#8217;re lighter-weight than explicit lookup tables and, I presumed, led to less expensive operations than foreign key checks on a lookup table.  But I&#8217;ve changed my mind:</p>
<ul>
<li>Changes to the set of values in an ENUM requires an ALTER TABLE which is certainly not light-weight, and so ENUM should certainly be avoided where the value pool changes frequently.</li>
<li>There&#8217;s no way to associate attributes with the values in an ENUM &#8211; for example &#8220;is_enabled&#8221; or &#8220;sort_order&#8221; meta data.</li>
<li>Getting a list of all possible values for an ENUM requires a query of the information_schema and parsing the values out of the BLOB that&#8217;s returned.  (A SELECT DISTINCT on the table itself will only give you a list of <em>used</em> values of course.)</li>
<li>Most surprising of all (to me) is that MySQL does not do validation of values on the server: if you INSERT a row with a value which does not exist in the enum definition, it&#8217;ll happily insert the row but with a NULL value (if the column is nullable.)  The foreign key checking afforded by the use of a lookup table is much more appealing to me.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://petehowe.co.uk/2011/why-i-dont-use-enum-columns-in-mysql-database-design/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Make Starbucks-alike coffee at home</title>
		<link>http://petehowe.co.uk/2010/make-starbucks-alike-coffee-at-home/</link>
		<comments>http://petehowe.co.uk/2010/make-starbucks-alike-coffee-at-home/#comments</comments>
		<pubDate>Sun, 28 Nov 2010 10:34:47 +0000</pubDate>
		<dc:creator>Pete</dc:creator>
				<category><![CDATA[Food and Drink]]></category>
		<category><![CDATA[Cafe mocha]]></category>
		<category><![CDATA[Cappuccino]]></category>
		<category><![CDATA[Coffee]]></category>
		<category><![CDATA[Coffee preparation]]></category>
		<category><![CDATA[Espresso]]></category>
		<category><![CDATA[Gaggia]]></category>
		<category><![CDATA[Latte]]></category>

		<guid isPermaLink="false">http://petehowe.co.uk/?p=259</guid>
		<description><![CDATA[I&#8217;m not lucky enough to have an espresso machine at work, so have to nip to Starbucks before getting to work if I want to kick-start the day. But who can have a clear conscience, lining the pockets of the &#8230; <a href="http://petehowe.co.uk/2010/make-starbucks-alike-coffee-at-home/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a title="Starbucks' Christmas Bokeh" href="http://flickr.com/photos/93726493@N00/3094329703"><img class="alignright size-full wp-image-51" src="http://farm4.static.flickr.com/3024/3094329703_f20d486ba0_t.jpg" alt="" /></a>I&#8217;m not lucky enough to have an espresso machine at work, so have to nip to Starbucks before getting to work if I want to kick-start the day.  But who can have a clear conscience, lining the pockets of the Starbucks execs?  So with a <a href="http://www.amazon.co.uk/gp/product/B0000C72XS?ie=UTF8&#038;tag=xenzerocom-21&#038;linkCode=as2&#038;camp=1634&#038;creative=19450&#038;creativeASIN=B0000C72XS">Gaggia machine</a> at home and some <a href="http://www.amazon.co.uk/gp/product/B003R7K148?ie=UTF8&#038;tag=xenzerocom-21&#038;linkCode=as2&#038;camp=1634&#038;creative=19450&#038;creativeASIN=B003R7K148">Illy coffee</a> (yes, amazon sell <em>everything</em>) you&#8217;re off and running.</p>
<p>An espresso is usually my caffeine of choice; just following the machine instructions will turn out one of those very nicely, thank you.  But every now and then, a mocha, latte or cappuccino is needed.  First off, froth the milk&#8230;</p>
<p>You need a <a href="http://www.amazon.co.uk/gp/product/B0001IX2EM?ie=UTF8&#038;tag=xenzerocom-21&#038;linkCode=as2&#038;camp=1634&#038;creative=19450&#038;creativeASIN=B0001IX2EM">steel jug</a> and ideally a <a href="http://www.amazon.co.uk/gp/product/B000Y9NRMA?ie=UTF8&#038;tag=xenzerocom-21&#038;linkCode=as2&#038;camp=1634&#038;creative=19450&#038;creativeASIN=B000Y9NRMA">milk thermometer</a>.</p>
<ol>
<li>Pour the milk (I use organic semi-skimmed) in to the jug &#8211; just a quarter to a third full.</li>
<li>Run off any water from the steam wand on your espresso machine, then put the wand in the jug, with the nozzle near the bottom.</li>
<li>Wait for the milk to heat to 120°F then lower the jug so that the nozzle is near the top of the milk.</li>
<li>When the milk reaches 160°F, turn off the steam and leave the jug to rest for 30 seconds.</li>
</ol>
<p>Different drinks are just variations on a theme.  Always add the milk and foam to the espresso (not the other way round.)</p>
<ul>
<li>For a <strong>latte</strong>: double espresso, ¾ cup steamed milk, remainder with foam.</li>
<li>For a <strong>cappuccino</strong>: double espresso, ½ mug steamed milk, remainder with foam.</li>
<li>For a <strong>mocha</strong>: double espresso, 3 tsp <a href="http://www.amazon.co.uk/gp/product/B0013G6KGI?ie=UTF8&#038;tag=xenzerocom-21&#038;linkCode=as2&#038;camp=1634&#038;creative=19450&#038;creativeASIN=B0013G6KGI">Green &#038; Black&#8217;s Hot Chocolate</a>, sugar to taste, ¾ cup steamed milk, stir and then top off with foam or whipped cream.</li>
</ul>
<p>Some other tips:</p>
<ul>
<li>Start off your coffee-making by filling your cup with hot water, just to warm it.</li>
<li>When pouring the milk onto the espresso, don&#8217;t be shy.  You want to see the brown espresso mix with the steamed milk and foam, so slosh the milk in.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://petehowe.co.uk/2010/make-starbucks-alike-coffee-at-home/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ubuntu Maverick 10.10 on the Lenovo ThinkPad X100e</title>
		<link>http://petehowe.co.uk/2010/ubuntu-maverick-10-10-on-the-lenovo-thinkpad-x100e/</link>
		<comments>http://petehowe.co.uk/2010/ubuntu-maverick-10-10-on-the-lenovo-thinkpad-x100e/#comments</comments>
		<pubDate>Fri, 19 Nov 2010 13:21:19 +0000</pubDate>
		<dc:creator>Pete</dc:creator>
				<category><![CDATA[Geek]]></category>
		<category><![CDATA[Ubuntu Linux]]></category>

		<guid isPermaLink="false">http://petehowe.co.uk/?p=234</guid>
		<description><![CDATA[I&#8217;m running Ubuntu Maverick 10.10 on a Lenovo ThinkPad X100e.  Everything runs well.  I thought I&#8217;d share the steps I went through in order to set up Ubuntu on the machine.  Some of these steps are personal preferences rather than &#8230; <a href="http://petehowe.co.uk/2010/ubuntu-maverick-10-10-on-the-lenovo-thinkpad-x100e/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m running Ubuntu Maverick 10.10 on a Lenovo ThinkPad X100e.  Everything runs well.  I thought I&#8217;d share the steps I went through in order to set up Ubuntu on the machine.  Some of these steps are personal preferences rather than required steps of course.</p>
<p>1. Using (the pre-installed) Windows 7, shrink the size of that Windows partition to make space for Linux &#8211; I&#8217;ve chosen a 250Gb Windows to 35Gb Linux ratio (6Gb of which is swap for my 3Gb RAM)</p>
<p>2. Install Ubuntu from USB key and reboot at the end when prompted.  If the system then fails to boot (a problem with grub2) you may find <a title="Reinstall grub" href="http://pingusays.blogspot.com/2009/11/reinstalling-grub-in-karmic-koala-910.html" target="_blank">this</a> useful.</p>
<p>3. Set a root password: sudo passwd root</p>
<p>4. Change your Ubuntu account&#8217;s uid to match the uid on other Linux boxes I use (it can make file transfer and management easier.)  To do this, log out, Ctrl-Alt-F1, log in as root:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">usermod <span style="color: #660033;">-uUID</span> USERNAME</pre></div></div>

<p>Then Ctrl-Alt-F7, and log in normally again</p>
<p>5. sudo visudo &#8211; change the last lane to add the NOPASSWD: option:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">%</span>admin <span style="color: #007800;">ALL</span>=<span style="color: #7a0874; font-weight: bold;">&#40;</span>ALL<span style="color: #7a0874; font-weight: bold;">&#41;</span> NOPASSWD: ALL</pre></div></div>

<p>6. Bring your ubuntu installation up-to-date:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">apt-get</span> update <span style="color: #000000; font-weight: bold;">&amp;&amp;</span> <span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">apt-get</span> dist-upgrade</pre></div></div>

<p>7. Get wireless, sound, webcam (inc. mic), compiz, hotkeys, external monitor, sleep/hibernate, printing working</p>
<p>8. Set up keyboard shortcuts for the Windows-key: D (to minimise all Windows), E (to launch Nautilus home), T (to launch a terminal window), L (to lock the machine), R (to launch the Run Application dialog.)</p>
<p>9. Install useful software:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">sudo</span> add-apt-repository ppa:sun-java-community-team<span style="color: #000000; font-weight: bold;">/</span>sun-java6 <span style="color: #000000; font-weight: bold;">&amp;&amp;</span> <span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">apt-get</span> update
<span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">apt-get</span> <span style="color: #c20cb9; font-weight: bold;">install</span> ubuntu-restricted-extras network-manager-pptp-gnome network-manager-pptp openssh-server mailutils postfix apache2  mysql-server subversion sun-java6-jdk libjtds-java libmysql-java startupmanager build-essential php5 php5-cli php-apc php-pear php5-curl php5-gd php5-mysql php5-pspell php5-sybase php5-xdebug php5-xmlrpc freemind thunderbird thunderbird-gnome-support gnome-do docky <span style="color: #c20cb9; font-weight: bold;">vim</span></pre></div></div>

<p>10. Use select-editor to choose vim.basic as your editor.</p>
<p>11. Set up VPN, email, Empathy</p>
<p>12. In Thunderbird > Tools > Add Ons, add the Thuderbird Indicator add on, downloaded form here: https://launchpad.net/libnotify-mozilla</p>
<p>13. From their respective websites: Chrome, Netbeans, Skype, DBWrench, Dropbox, SquirrelSQL, Balsamiq Mockups, Tweetdeck, Picasa</p>
]]></content:encoded>
			<wfw:commentRss>http://petehowe.co.uk/2010/ubuntu-maverick-10-10-on-the-lenovo-thinkpad-x100e/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Why the iPad sucks: a flame-war invitation</title>
		<link>http://petehowe.co.uk/2010/why-the-ipad-sucks/</link>
		<comments>http://petehowe.co.uk/2010/why-the-ipad-sucks/#comments</comments>
		<pubDate>Fri, 18 Jun 2010 08:46:31 +0000</pubDate>
		<dc:creator>Pete</dc:creator>
				<category><![CDATA[Geek]]></category>
		<category><![CDATA[Technologies]]></category>

		<guid isPermaLink="false">http://www.xenzero.com/blog/?p=214</guid>
		<description><![CDATA[The iPad is a beautiful piece of kit, following in the Apple tradition of making beautifully designed hardware that also brings with it compelling unique selling points. But with the iPad, has the company got the balance wrong and does &#8230; <a href="http://petehowe.co.uk/2010/why-the-ipad-sucks/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a href="/wp-content/uploads/2010/06/ipad.jpg"><img class="alignright size-full wp-image-51" title="iPad" src="/wp-content/uploads/2010/06/ipad.jpg" alt="" width="210" height="157" /></a>The iPad is a beautiful piece of kit, following in the Apple tradition of making beautifully designed hardware that also brings with it compelling unique selling points.  But with the iPad, has the company got the balance wrong and does the popularity of this latest dreamware really have little to do with the function that the tablet serves?</p>
<p>First out of the box impressions are positive.  The unit is every bit as attractive in the flesh as it looks in the advertisements &#8211; and feels solid.  It is thinner than I had expected, perhaps an illusion created by the attractive bevelling. And once switched on, the brightness and clarity of the screen have me slowly buying into the concept.</p>
<p>I can see myself sat on the sofa at home using it to browse the web (an experience so much more pallatable than browsing on an iPhone or other smartphone &#8211; especially when it comes to entering text.)  I can also see myself using it to browse YouTube with greater enjoyment (the screen size is more appealing for this than a smaller device) or for watching BBC iPlayer in bed.  I love the idea that I would also find myself working with it when in Starbucks.  But are any of these things a reality?</p>
<p>After a few days with the device, I find that I am rarely finding a use for it.  The iPhone in my pocket is more mobile (in every sense of the word) and fulfils all my newsreading needs readily. When on the sofa, I&#8217;m finding that I&#8217;m drawn either to my iPhone or a &#8220;real&#8221; computer with a decent keyboard; I find the iPad awkward to hold and use at the same time &#8211; especially for more than a minute or so.  But put it flat on a table and typing while viewing the screen seems clumsy &#8211; everything is at the wrong angle.  (Typing on the virtual keyboard is impressive though &#8211; my four-finger typing is almost as quick as on a real keyboard &#8211; but it&#8217;s not as comfortable or natural as its non-virtual counterpart.)</p>
<p>Watching video on it lives up to expectations &#8211; but I soon realise that YouTube and iPlayer don&#8217;t have the appeal of <a title="Sky+ HD" href="http://www.sky.com/shop/boxes/sky-hd-box/" target="_blank">Sky+</a> in the lounge.  On the go, I can certainly see the appeal of catching episodes of Damages or Spiral on the tube an appealing prospect; my iPhone fulfils that function currently but the extra screen real estate (and lack of a keyboard that an ultraportable or netbook would bring with it) is certainly attractive.</p>
<p>Starbucks?  When do I sit and work in Starbucks?  No.  It doesn&#8217;t and won&#8217;t ever happen.  But even if the advertising images of such behaviour really do fit reality for some people, what would users do on the device?  Respond to emails and do web-based research?  Perhaps.</p>
<p>But this just brings me to the same conclusion that myriad other bloggers and critics have reached long before now &#8211; the iPad is neither one thing nor the other.  It is not as mobile as a smartphone (in fact, it is no more portable than a laptop by the time you&#8217;ve added the necessary casing to protect the device) and it is not as practical as a laptop (with proper keyboard and correctly-angled screen.)</p>
<p>And then there&#8217;s the cost.  Let me recommend instead that you get an iPhone (now from free on a pretty cheap tarriff) and take advantage of all the attractive goodness that brings, as well as the fantastic array of apps.  And let me recommend you buy a small laptop &#8211; I&#8217;d suggest something like the <a title="Lenovo Thinkpad X100e" href="http://shop.lenovo.com/us/landing_pages/thinkpad/2010/X100e" target="_blank">Lenovo Touchpad X100e</a> &#8211; with an 11.6&#8243; HD screen, full size keyboard, much-better-than-a-netbook processor and graphics card, built-in wifi and 3G, excellent (and highly attractive) build &#8211; and all for around £450.  Erm, cheaper than an iPad but offering so much more (including the ability to play Flash.)  This route will also insure you against the impending envy (and wallet-bashing insult-to-injury) that will come when Apple soon bring out the next generation iPad &#8211; slightly more expensive, but sleeker and with more memory/storage/pixels (delete as applicable) &#8211; making your new toy seem ever so last-season.</p>
<p>Now I&#8217;m off to research which model of <a title="iPhone 4" href="http://www.apple.com/uk/iphone/index.html" target="_blank">iPhone 4</a> to invest in&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://petehowe.co.uk/2010/why-the-ipad-sucks/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Joel Spolsky on twitter&#8230;</title>
		<link>http://petehowe.co.uk/2010/joel-spolsky-on-twitter/</link>
		<comments>http://petehowe.co.uk/2010/joel-spolsky-on-twitter/#comments</comments>
		<pubDate>Fri, 19 Mar 2010 14:06:32 +0000</pubDate>
		<dc:creator>Pete</dc:creator>
				<category><![CDATA[Geek]]></category>

		<guid isPermaLink="false">http://www.xenzero.com/blog/?p=203</guid>
		<description><![CDATA[It&#8217;s my cheap approach to blog-journalism, but I cannot resist repeating some of Joel Spolsky&#8216;s thoughts on Twitter, declared during his penultimate blog post: &#8220;Although I appreciate that many people find Twitter to be valuable, I find it a truly &#8230; <a href="http://petehowe.co.uk/2010/joel-spolsky-on-twitter/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s my cheap approach to blog-journalism, but I cannot resist repeating some of <a title="Joel Spolksky" href="http://www.joelonsoftware.com/" target="_blank">Joel Spolsky</a>&#8216;s thoughts on Twitter, declared during his <a title="Blog" href="http://www.joelonsoftware.com/items/2010/03/14.html" target="_blank">penultimate blog post</a>:</p>
<p style="padding-left: 30px;"><em>&#8220;Although I appreciate that many people find Twitter to be valuable, I find it a truly awful way to exchange thoughts and ideas. It creates a mentally stunted world in which the most complicated thought you can think is one sentence long. It’s a cacophony of people shouting their thoughts into the abyss without listening to what anyone else is saying. Logging on gives you a page full of little hand grenades: impossible-to-understand, context-free sentences that take five minutes of research to unravel and which then turn out to be stupid, irrelevant, or pertaining to the television series Battlestar Galactica. I would write an essay describing why Twitter gives me a headache and makes me fear for the future of humanity, but it doesn’t deserve more than 140 characters of explanation, and I’ve already spent 820.&#8221;</em></p>
<p>I could not agree with him more.  I&#8217;ll keep trying to &#8220;get&#8221; Twitter, but in the meantime I&#8217;m going to publicly be a nay-sayer!</p>
]]></content:encoded>
			<wfw:commentRss>http://petehowe.co.uk/2010/joel-spolsky-on-twitter/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Bugzilla API: an example using PHP and Zend Framework</title>
		<link>http://petehowe.co.uk/2010/example-of-calling-the-bugzilla-api-using-php-zend-framework/</link>
		<comments>http://petehowe.co.uk/2010/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 &#8230; <a href="http://petehowe.co.uk/2010/example-of-calling-the-bugzilla-api-using-php-zend-framework/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></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://petehowe.co.uk/2010/example-of-calling-the-bugzilla-api-using-php-zend-framework/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Windows 7 for an Ubuntu devotee</title>
		<link>http://petehowe.co.uk/2010/windows-7-for-an-ubuntu-devotee/</link>
		<comments>http://petehowe.co.uk/2010/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 &#8230; <a href="http://petehowe.co.uk/2010/windows-7-for-an-ubuntu-devotee/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></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&#8242;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://petehowe.co.uk/2010/windows-7-for-an-ubuntu-devotee/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Bug Tracking in the Open</title>
		<link>http://petehowe.co.uk/2010/public-bug-tracking/</link>
		<comments>http://petehowe.co.uk/2010/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 cites 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 &#8230; <a href="http://petehowe.co.uk/2010/public-bug-tracking/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></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 cites 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://petehowe.co.uk/2010/public-bug-tracking/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Picasa on Ubuntu</title>
		<link>http://petehowe.co.uk/2010/picasa-on-ubuntu/</link>
		<comments>http://petehowe.co.uk/2010/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 &#8230; <a href="http://petehowe.co.uk/2010/picasa-on-ubuntu/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></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://petehowe.co.uk/2010/picasa-on-ubuntu/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

