<?xml version="1.0" encoding="iso-8859-1"?>

<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
<title type="text">Menno's Musings</title>
<subtitle type="html"><![CDATA[
software | life | whatever
]]></subtitle>
<id>http://freshfoo.com/blog/index.atom</id>
<link rel="alternate" type="text/html" href="http://freshfoo.com/blog" />
<link rel="self" type="application/atom+xml" href="http://freshfoo.com/blog/index.atom" />


<author>
<name>Menno Smits</name>
<uri>http://freshfoo.com/blog/index.atom</uri>
<email>menno AT freshfoo DOT com</email>
</author>
<rights>Copyright 2009 Menno Smits</rights>
<generator uri="http://pyblosxom.sourceforge.net/" version="1.4.1 7/27/2007">
PyBlosxom http://pyblosxom.sourceforge.net/ 1.4.1 7/27/2007
</generator>

<updated>2009-07-03T11:06:22Z</updated>
<!-- icon?  logo?  -->

<entry>
<title type="html">Banishing trailing whitespace with Emacs</title>
<category term="" />
<id>http://freshfoo.com/blog/2009/07/03/trailing_whitespace_removal_emacs</id>
<updated>2009-07-03T11:06:22Z</updated>
<published>2009-07-03T11:06:22Z</published>
<link rel="alternate" type="text/html" href="http://freshfoo.com/blog/trailing_whitespace_removal_emacs" />
<content type="html">&lt;p&gt;One of my pet peeves, especially with Python code, is trailing
whitespace. It serves no purpose, introduces noise in diffs and wastes
valuable bytes dammit (yes I&apos;m being pedantic).&lt;/p&gt;
&lt;p&gt;In order to see make trailing whitespace visible in Emacs you can use
the show-trailing-whitespace variable. Emacs of course has a command
to remove trailing whitespace: delete-trailing-whitespace.&lt;/p&gt;
&lt;p&gt;Better yet, to get rid of trailing whitespace automatically on save
you can add a function to the write-contents hook. The following
snippet will cause trailing whitespace to be removed on save, but just
for Python files.&lt;/p&gt;
&lt;pre class=&quot;literal-block&quot;&gt;
;; Automatically remove trailing whitespace when saving Python file
(add-hook &apos;python-mode-hook
          (lambda () (add-hook &apos;write-contents-hooks &apos;delete-trailing-whitespace t)))
&lt;/pre&gt;
&lt;p&gt;The one problem with doing this is that when changing an existing
codebase your commits could end up with many whitespace deltas, making
it difficult to see the meat of your changes. Use with care.&lt;/p&gt;
</content>
</entry>

<entry>
<title type="html">draftsdir plugin</title>
<category term="" />
<id>http://freshfoo.com/blog/2009/06/26/draftsdir_plugin</id>
<updated>2009-06-25T23:20:16Z</updated>
<published>2009-06-25T23:20:16Z</published>
<link rel="alternate" type="text/html" href="http://freshfoo.com/blog/draftsdir_plugin" />
<content type="html">&lt;p&gt;I&apos;ve just published a simple little &lt;a class=&quot;reference&quot; href=&quot;http://pyblosxom.sourceforge.net&quot;&gt;PyBlosxom&lt;/a&gt; plugin called draftsdir. It
solves a personal itch for me: I&apos;d like to review draft blog entries
on the site before they go live. The plugin lets you define a
directory for draft entries which aren&apos;t shown unless you add a query
arg to the URL (the default arg name is &amp;quot;drafts&amp;quot; but there&apos;s an option
to change it). When you&apos;re happy with an entry you move it from the
drafts directory to where your other published entries are. Simple.&lt;/p&gt;
&lt;p&gt;For more details see the &lt;a class=&quot;reference&quot; href=&quot;/code/&quot;&gt;Code section&lt;/a&gt; of this site,
the &lt;a class=&quot;reference&quot; href=&quot;/repos/pyblosxom-plugins/trunk&quot;&gt;bzr repo&lt;/a&gt; or download it
&lt;a class=&quot;reference&quot; href=&quot;/downloads/draftsdir.py&quot;&gt;directly&lt;/a&gt;. There install and
configuration instructions at the top of the file.&lt;/p&gt;
</content>
</entry>

<entry>
<title type="html">Emacs with Viper mode: editor nirvana?</title>
<category term="" />
<id>http://freshfoo.com/blog/2009/06/22/editor_nirvana</id>
<updated>2009-06-22T20:36:53Z</updated>
<published>2009-06-22T20:36:53Z</published>
<link rel="alternate" type="text/html" href="http://freshfoo.com/blog/editor_nirvana" />
<content type="html">&lt;p&gt;I&apos;ve been a long time &lt;a class=&quot;reference&quot; href=&quot;http://vim.org&quot;&gt;Vim&lt;/a&gt; user and fan. Once
you&apos;re used proficient with the Vi way of editing it&apos;s difficult go
back to anything else. Other editors just feel inefficient and clunky.&lt;/p&gt;
&lt;p&gt;That said, I&apos;ve been jealous of certain Emacs features that I&apos;ve seen
while looking over the shoulders of my colleagues. Multiple frames (GUI
windows), the clean extension system (via elisp), the tight process
integration (shell, SQL, debuggers etc) and all sorts of unexpected
bells and whistles; these goodies slowly ate away at my curiosity.&lt;/p&gt;
&lt;p&gt;So 2 weeks ago I caved and decided to give Emacs another go. I hadn&apos;t
really used it since university. Starting with my colleague&apos;s
configuration and making some minor tweaks, I began using Emacs for
serious work.&lt;/p&gt;
&lt;p&gt;A few days in and I was enjoying exploring my new toy but it didn&apos;t
feel quite right. Although I had a reasonable grasp of Emacs&apos; editing
keys and commands, most tasks took way too long, requiring convoluted
hand gymnastics. My left pinky was permanently sore from constantly
reaching for the Ctrl and Alt keys. I was missing those surgical,
efficient Vi commands.&lt;/p&gt;
&lt;p&gt;At the suggestion of one Emacs-using colleague I gave Viper
(viper-mode) a try. It&apos;s an emulation that attempts to provide a
fairly accurate Vi experience while still allowing full access to the
rest of Emacs. To be honest I was expecting it to be a half-assed
kludge. I was wrong. Viper is a mature Emacs extension and it does a
great job of mitigating conflicts between the Emacs and Vi ways of
doing things.&lt;/p&gt;
&lt;p&gt;Viper mode proved to be the tipping point; because of it I&apos;m sticking
with Emacs. As far as I&apos;m concerned it&apos;s the best of both worlds.&lt;/p&gt;
&lt;p&gt;For anyone who&apos;s interested, my Emacs config is available in the
&lt;a class=&quot;reference&quot; href=&quot;/viewrepo/bzr/config/trunk/files&quot;&gt;repository browser&lt;/a&gt; here or via
&lt;a class=&quot;reference&quot; href=&quot;/repos/config/trunk/&quot;&gt;bzr&lt;/a&gt;. This is my personal configuration
branch so it will update as I make changes to the setup. Note that I&apos;m
using the latest development (but rock solid) Emacs so there might be
references to features in the config which only exist in this version.&lt;/p&gt;
&lt;p&gt;Some items of note in my config:&lt;/p&gt;
&lt;dl class=&quot;docutils&quot;&gt;
&lt;dt&gt;vimpulse&lt;/dt&gt;
&lt;dd&gt;Viper mode only emulates classic Vi. vimpulse provides a bunch of
extra features which a Vim user will probably miss such as various
&amp;quot;g&amp;quot; commands and visual select mode.&lt;/dd&gt;
&lt;dt&gt;ido-mode&lt;/dt&gt;
&lt;dd&gt;This is a standard feature of Emacs which isn&apos;t bound to keys by
default. It gives amazing power by replacing the standard find-file
and switch-buffer keystrokes with beefed up alternatives. The key
features are quick directory switching and fuzzy, recursive name
matching (but that&apos;s not all).&lt;/dd&gt;
&lt;dt&gt;ibuffer&lt;/dt&gt;
&lt;dd&gt;I&apos;ve replaced the standard buffer list binding (C-x C-b) with
ibuffer. This gives a more powerful and easier to use version of the
standard buffer list and allows for crazy batch manipulation of
buffers.&lt;/dd&gt;
&lt;dt&gt;yasnippet&lt;/dt&gt;
&lt;dd&gt;Mode specific template expansion. Powerful and super useful for
cranking out commonly used sections of text (programming is full of
them).&lt;/dd&gt;
&lt;dt&gt;flymake - pyflakes integration&lt;/dt&gt;
&lt;dd&gt;Flymake runs arbitrary programs over buffers on-the-fly. For
Python files flymake has been configured to run &lt;a class=&quot;reference&quot; href=&quot;http://www.divmod.org/trac/wiki/DivmodPyflakes&quot;&gt;pyflakes&lt;/a&gt; and highlight
errors in code as I type. I might change this to use &lt;a class=&quot;reference&quot; href=&quot;http://www.logilab.org/project/pylint&quot;&gt;pylint&lt;/a&gt; at some stage because
pylint finds a wider range of problems.&lt;/dd&gt;
&lt;/dl&gt;
&lt;p&gt;Some useful Emacs config hacking links:&lt;/p&gt;
&lt;blockquote&gt;
&lt;ul class=&quot;simple&quot;&gt;
&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;http://steve.yegge.googlepages.com/effective-emacs&quot;&gt;http://steve.yegge.googlepages.com/effective-emacs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;http://www.emacswiki.org/&quot;&gt;http://www.emacswiki.org/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;http://xahlee.org/emacs/elisp_idioms.html&quot;&gt;http://xahlee.org/emacs/elisp_idioms.html&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
</content>
</entry>

<entry>
<title type="html">bzr repositories now available</title>
<category term="" />
<id>http://freshfoo.com/blog/2009/06/21/repos_accessible</id>
<updated>2009-06-21T20:41:36Z</updated>
<published>2009-06-21T20:41:36Z</published>
<link rel="alternate" type="text/html" href="http://freshfoo.com/blog/repos_accessible" />
<content type="html">&lt;p&gt;I&apos;ve just made my personal bzr repositories publically available so that anyone
can easily get to them (including me!) and so I can refer to things from blog
articles. The repos are available for branching using bzr under
&lt;a class=&quot;reference&quot; href=&quot;/repos/&quot;&gt;http://freshfoo.com/repos/&lt;/a&gt; and in &lt;a class=&quot;reference&quot; href=&quot;/viewrepo/bzr/&quot;&gt;human browseable form&lt;/a&gt;.
See also the links in the left sidebar and in the &lt;a class=&quot;reference&quot; href=&quot;/code/&quot;&gt;code section&lt;/a&gt; of the site.&lt;/p&gt;
&lt;p&gt;I&apos;m using &lt;a class=&quot;reference&quot; href=&quot;https://launchpad.net/loggerhead&quot;&gt;Loggerhead&lt;/a&gt; to provide the web
viewable form (proxied via the main lighttpd server). It was very easy to
setup (using serve-branches). I just wrote a simple init.d script to ensure
it stays running.&lt;/p&gt;
</content>
</entry>

<entry>
<title type="html">Announcing IMAPClient 0.5</title>
<category term="" />
<id>http://freshfoo.com/blog/2009/04/29/IMAPClient-0.5</id>
<updated>2009-04-28T23:54:07Z</updated>
<published>2009-04-28T23:54:07Z</published>
<link rel="alternate" type="text/html" href="http://freshfoo.com/blog/IMAPClient-0.5" />
<content type="html">&lt;p&gt;It&apos;s been a long time between releases but I&apos;ve just released IMAPClient 0.5.&lt;/p&gt;
&lt;p&gt;From the NEWS file:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Folder names are now encoded and decoded transparently if required (using
modified UTF-7). This means that any methods that return folder names may
return unicode objects as well as normal strings [API CHANGE]. Additionally,
any method that takes a folder name now accepts unicode object too. Use the
folder_encode attribute to control whether encode/decoding is performed.&lt;/p&gt;
&lt;p&gt;Unquoted folder names in server responses are now handled correctly. Thanks
to Neil Martinsen-Burrell for reporting this bug.&lt;/p&gt;
&lt;p&gt;Fixed a bug with handling of unusual characters in folder names.&lt;/p&gt;
&lt;p&gt;Timezones are now handled correctly for datetimes passed as input and for
server responses. This fixes a number of bugs with timezones. Returned
datetimes are always in the client&apos;s local timezone [API CHANGE].&lt;/p&gt;
&lt;p&gt;Many more unit tests, some using Michael Foord&apos;s excellent mock.py.
(&lt;a class=&quot;reference&quot; href=&quot;http://www.voidspace.org.uk/python/mock/&quot;&gt;http://www.voidspace.org.uk/python/mock/&lt;/a&gt;)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;IMAPClient can be installed from PyPI using &lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;easy_install&lt;/span&gt; &lt;span class=&quot;pre&quot;&gt;IMAPClient&lt;/span&gt;&lt;/tt&gt; or downloaded from my
&lt;a class=&quot;reference&quot; href=&quot;http://freshfoo.com/code/&quot;&gt;Code&lt;/a&gt; page. As always, feedback and patches are most welcome.&lt;/p&gt;
</content>
</entry>

<entry>
<title type="html">Initial thoughts for PyCon 2009</title>
<category term="" />
<id>http://freshfoo.com/blog/2009/03/27/initial_pycon_thoughts</id>
<updated>2009-03-27T16:54:21Z</updated>
<published>2009-03-27T16:54:21Z</published>
<link rel="alternate" type="text/html" href="http://freshfoo.com/blog/initial_pycon_thoughts" />
<content type="html">&lt;p&gt;I&apos;m at &lt;a class=&quot;reference&quot; href=&quot;http://us.pycon.org&quot;&gt;PyCon&lt;/a&gt; 2009 in Chicago. So much awesome stuff has already been discussed and we&apos;re only a few hours in. Much of it very relevant for my employer (which is nice since they&apos;re paying).&lt;/p&gt;
&lt;p&gt;Some random thoughts so far:&lt;/p&gt;
&lt;ul class=&quot;simple&quot;&gt;
&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;http://getwindmill.com&quot;&gt;Windmill&lt;/a&gt; (the web testing framework) looks incredibly promising. If you&apos;re doing web apps and you&apos;re a Python shop you should be using this. The Python shell integration rocks.&lt;/li&gt;
&lt;li&gt;&lt;a class=&quot;reference&quot; href=&quot;http://code.google.com/p/the-cassandra-project/&quot;&gt;Cassandra&lt;/a&gt; is worth exploring. It&apos;s a large-scale, distributed DB that&apos;s used (and hacked on) by Facebook with good Python bindings.&lt;/li&gt;
&lt;li&gt;Twitter has added a facinating new dimension to the conference. Everyone is tweeting using the #pycon tag. There&apos;s all sorts of interesting discussion going on in real-time as talks happen. &lt;a class=&quot;reference&quot; href=&quot;http://twitterfall.com&quot;&gt;Twitterfall&lt;/a&gt; is a great way to watch the action.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The conference seems really well run and the space at the hotel is great. The only problem I (and many others) have noticed so far is that the wifi can be a tad unreliable. Not suprising given the huge number of wireless devices around.&lt;/p&gt;
</content>
</entry>

<entry>
<title type="html">Vaio BZ11 article updated</title>
<category term="" />
<id>http://freshfoo.com/blog/2009/01/11/vaio_article_updated</id>
<updated>2009-01-11T18:11:44Z</updated>
<published>2009-01-11T18:11:44Z</published>
<link rel="alternate" type="text/html" href="http://freshfoo.com/blog/vaio_article_updated" />
<content type="html">&lt;p&gt;I&apos;ve just updated the &lt;a class=&quot;reference&quot; href=&quot;/articles/linux_on_vaio_bz11.html&quot;&gt;Linux on the Vaio BZ11&lt;/a&gt; article on this site. It now includes details
for Ubuntu Intrepid Ibex: the webcam now just works, wireless is easy to get
functioning. I&apos;ve also clarfied the information on suspend and resume.&lt;/p&gt;
</content>
</entry>

<entry>
<title type="html">Upgrading iPhone firmware using VMWare on Linux</title>
<category term="" />
<id>http://freshfoo.com/blog/2008/12/31/iphone_upgrade_with_vmware</id>
<updated>2008-12-31T11:07:56Z</updated>
<published>2008-12-31T11:07:56Z</published>
<link rel="alternate" type="text/html" href="http://freshfoo.com/blog/iphone_upgrade_with_vmware" />
<content type="html">&lt;p&gt;Well that was a bit scary. I&apos;ve just updated the firmware on my iPhone to 2.2
(the horrors!). Actually, this normally shouldn&apos;t be too much of a trial.  The
difference here is that I did it from Windows running inside VMWare on a Linux
host.&lt;/p&gt;
&lt;p&gt;I initially tried the naive approach of applying the update normally using
iTunes (but running inside VMWware). &lt;strong&gt;Don&apos;t do this!&lt;/strong&gt; The host (Linux) USB
subsystem gets in the way leaving you with a somewhat useless iPhone in
&amp;quot;recovery mode&amp;quot;. It seems that the iPhone firmware upgrade procedure does
something tricky with USB that doesn&apos;t play nicely with VMWare running on Linux.&lt;/p&gt;
&lt;p&gt;To workaround the issue, some USB modules have to not be loaded on the Linux
host during the upgrade. Extending the tips on &lt;a class=&quot;reference&quot; href=&quot;http://stevereads.com/weblog/2008/09/12/vmware-xp-iphone-firmware-version-21-update-no/&quot;&gt;Stephen Laniel&apos;s blog&lt;/a&gt;
I created a blacklist file for modprobe that prevents certain USB modules from
loading. Just unloading the modules manually isn&apos;t enough. The iPhone
reconnects to the USB bus at least once during the upgrade process causing udev
to reload the modules you&apos;ve manually unloaded.&lt;/p&gt;
&lt;p&gt;So before attempting the upgrade, create a file named something like
/etc/modprobe.d/blacklist-usb with the following contents:&lt;/p&gt;
&lt;pre class=&quot;literal-block&quot;&gt;
blacklist snd_usb_audio
blacklist usbhid
blacklist ehci_hcd
&lt;/pre&gt;
&lt;p&gt;I&apos;m not sure if ehci_hcd needs to be disabled, but I did this in my case.&lt;/p&gt;
&lt;p&gt;Reload udev so that it knows about the new modprobe config file:&lt;/p&gt;
&lt;pre class=&quot;literal-block&quot;&gt;
sudo /etc/init.d/udev reload
&lt;/pre&gt;
&lt;p&gt;Now make sure these modules aren&apos;t already loaded:&lt;/p&gt;
&lt;pre class=&quot;literal-block&quot;&gt;
sudo /sbin/modprobe -r snd_usb_audio
sudo /sbin/modprobe -r usbhid
sudo /sbin/modprobe -r usbhid
&lt;/pre&gt;
&lt;p&gt;Now go back to VMWare, cross your fingers and attempt the firmware upgrade using
iTunes. Things should progress along slowly.&lt;/p&gt;
&lt;p&gt;You might find that at one point during the upgrade that iTunes sits there with
a dialog saying &amp;quot;Preparing iPhone for upgrade&amp;quot;. If this goes on for several
minutes it could be that the iPhone isn&apos;t connected to VMWare anymore. iTunes is
just waiting for the device to appear. If this happens, reattach the iPhone to
VMWare using the &amp;quot;Removable Devices&amp;quot; option on VMWare&apos;s VM menu. It&apos;s a good
idea to occasionally check that the iPhone is connected to VMWare during the
upgrade.&lt;/p&gt;
&lt;p&gt;Once the upgrade is complete you can remove the modprobe config file and reload
VMWare:&lt;/p&gt;
&lt;pre class=&quot;literal-block&quot;&gt;
sudo rm /etc/modprobe.d/blacklist-usb
sudo /etc/init.d/udev reload
&lt;/pre&gt;
&lt;p&gt;For the record, this was done using iTunes 8 running on Vista running inside
VMware Workstation 6.5.0 build-118166 on Ubuntu Intrepid (8.10).&lt;/p&gt;
</content>
</entry>

<entry>
<title type="html">All contacts in sync (+1 for the iPhone)</title>
<category term="" />
<id>http://freshfoo.com/blog/2008/10/25/contacts_sync</id>
<updated>2008-10-25T18:35:30Z</updated>
<published>2008-10-25T18:35:30Z</published>
<link rel="alternate" type="text/html" href="http://freshfoo.com/blog/contacts_sync" />
<content type="html">&lt;p&gt;So &lt;a class=&quot;reference&quot; href=&quot;http://batstrading.co.uk&quot;&gt;new employer&lt;/a&gt; has given me an iPhone and
despite my dislike of vendor lock-in I really like it.&lt;/p&gt;
&lt;p&gt;One thing I&apos;ve now managed to achieve is a single, central set of contact data.
Like most geeks I had people&apos;s email addresses, phone numbers and postal
addresses scattered across various devices and email profiles. In my case this
included a Nokia 6130, my laptop&apos;s Thunderbird profile, various work Thunderbird
profiles, my Gmail account and my trusty old Palm Tungsten E2. None of these
stores of contact data were being synced. Contacts were added haphazardly as
required.&lt;/p&gt;
&lt;p&gt;No longer. The mess has been solved through the use of a variety of tools.&lt;/p&gt;
&lt;p&gt;Getting an iPhone was the tipping point. Suddenly it was possible to sync
contact (and calendar) data over the air, without needing to connect to a PC.
This is very attractive to me. I like being able to sync even when away from the
computer where iTunes is installed. I&apos;m using the excellent (and free)
&lt;a class=&quot;reference&quot; href=&quot;http://www.nuevasync.com/&quot;&gt;NeuvaSync&lt;/a&gt; service for this. It hijacks the
iPhone&apos;s Microsoft Exchange support to push changes to contact data to and from
Google Contacts.&lt;/p&gt;
&lt;p&gt;I&apos;ve chosen Google Contacts as the central storage point for this data because
it&apos;s reliable, I already have a populated gmail account and (mainly) because of
the large number of tools that can interface with it.&lt;/p&gt;
&lt;p&gt;Syncing to the various Thunderbird instances I use is done using the &lt;a class=&quot;reference&quot; href=&quot;http://www.zindus.com/&quot;&gt;Zindus&lt;/a&gt; extension. This syncs Thunderbird&apos;s address book
with Google Contacts. It works fairly well as long as you remember to stick to
Google&apos;s rules about contact entries (eg. email addresses must be unique across
all contacts). It will warn you if there&apos;s a problem.&lt;/p&gt;
&lt;p&gt;So, that covers syncing contact data to everywhere I need it: iPhone, Gmail and Thunderbird.&lt;/p&gt;
&lt;p&gt;The final challenge was to pull together all the contact entries I had around
the place and merge them into Google Contacts. This was a long and messy process
that was helped by some adhoc Python hacking. To get the data out of my Palm I
used the pilot-address tool that ships with the pilot-link package. The
excellent &lt;a class=&quot;reference&quot; href=&quot;http://www.gnokii.org/&quot;&gt;Gnokii&lt;/a&gt; tool pulled the contacts out of my
Nokia (over Bluetooth, no less!). I wrote some Python scripts to help merge the
highly imperfect sets of data, trying to make intelligent guesses where
possible. Finally, OpenOffice Calc was used to manually fix the CSV before
importing into Google Contacts.&lt;/p&gt;
&lt;p&gt;It took a long time and many editing iterations but I now have a clean, centralised set of contacts. Say what you like about me needing to get out more, but I think this is awesome (and it was a worthwhile learning process).&lt;/p&gt;
</content>
</entry>

<entry>
<title type="html">Linux on the Sony Vaio VGN-BZ11</title>
<category term="" />
<id>http://freshfoo.com/blog/2008/09/24/linux-on-vaio-vgn-bz11</id>
<updated>2008-09-24T22:13:38Z</updated>
<published>2008-09-24T22:13:38Z</published>
<link rel="alternate" type="text/html" href="http://freshfoo.com/blog/linux-on-vaio-vgn-bz11" />
<content type="html">&lt;p&gt;I&apos;ve just posted an &lt;a class=&quot;reference&quot; href=&quot;/articles/linux_on_vaio_bz11.html&quot;&gt;article&lt;/a&gt; on my
experiences with Linux on my shiny new Sony Vaio &lt;a class=&quot;reference&quot; href=&quot;http://vaio.sony.co.uk/view/ShowProduct.action?product=VGN-BZ11XN&quot;&gt;VGN-BZ11XN&lt;/a&gt; notebook. Hopefully
it&apos;s useful to other Linux users who own or are considering purchasing this
laptop.&lt;/p&gt;
&lt;p&gt;Questions, updates and feedback most definitely welcome.&lt;/p&gt;
</content>
</entry>
</feed>
