<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-120527653504992986</id><updated>2011-11-28T10:36:35.158-08:00</updated><category term='ML'/><category term='Scheme'/><category term='Flock'/><category term='Cider'/><title type='text'>Salmo truta dermopilla</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://tealeg.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/120527653504992986/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://tealeg.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Geoff Teale</name><uri>http://www.blogger.com/profile/15745446337578770673</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>63</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-120527653504992986.post-5100706970405796919</id><published>2010-10-19T00:17:00.000-07:00</published><updated>2010-10-19T02:50:54.289-07:00</updated><title type='text'></title><content type='html'>&lt;div&gt;In an exclusive interview, Liverpool manager, Roy Hodgson has revealed&lt;/div&gt;&lt;div&gt;that he is managing Liverpool football club according to Homeopathic&lt;/div&gt;&lt;div&gt;priniciples.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Apparently Hodgson hit on the idea following succesfully treatment for&lt;/div&gt;&lt;div&gt;his own affliction using homeopathic methods.  Hodgson explained, "I&lt;/div&gt;&lt;div&gt;dwon't know if you know, bwut, I used to have a spweech impwedement.&lt;/div&gt;&lt;div&gt;I spwoke like I had a twoffe stwuck in my dentwures."  A friendly&lt;/div&gt;&lt;div&gt;local directed Hodgson to his local homeopathic practitioner who&lt;/div&gt;&lt;div&gt;informed him that he needed to take an ultra-dilute solution of&lt;/div&gt;&lt;div&gt;toffee. Hodgson explains, "Jamie Cawahgaw and Steven Gewwawd are bwoth twoffees,&lt;/div&gt;&lt;div&gt;so evewy day after twaining I dwink a glass of theiwr bath water and&lt;/div&gt;&lt;div&gt;now I am compwetely cuwred!"&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Following this success Hodgson decided to try homeopathic methods on&lt;/div&gt;&lt;div&gt;the pitch too. He reasoned that if the problem was that Liverpool were&lt;/div&gt;&lt;div&gt;shit, then he needed a dilute solution of shit in his team selection.&lt;/div&gt;&lt;div&gt;For the element of shit his choice was obvious, Lucas Leiva, but how&lt;/div&gt;&lt;div&gt;to dilute a shit footballer?  Hodgson's master stroke was to realise&lt;/div&gt;&lt;div&gt;that water is used to dilute homeopathic remedies as it is inert and&lt;/div&gt;&lt;div&gt;has a neutral effect on the body.  Hodgson set about picking a team to&lt;/div&gt;&lt;div&gt;surround Lucas Leiva based on their complete inability to change the&lt;/div&gt;&lt;div&gt;outcome of a game of football.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Early results did not look promising, but Hodgson explained that the&lt;/div&gt;&lt;div&gt;problem was that some players such as Reina, Gerrard and Kuyt were&lt;/div&gt;&lt;div&gt;having trouble being ineffective, "They claim that it is hawrd to&lt;/div&gt;&lt;div&gt;supwess theiwr natuwal talent, bwut I twold them, just look at Towwes,&lt;/div&gt;&lt;div&gt;if he can do it so cwan you!".&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Skeptic say that there is no way this mechanism can have any effect on&lt;/div&gt;&lt;div&gt;the outcome of a football match, and that all objective observations&lt;/div&gt;&lt;div&gt;so far have characterised this as "a bat shit crazy way to loose&lt;/div&gt;&lt;div&gt;football matches".  Hodgson however is defiant, confronted with the&lt;/div&gt;&lt;div&gt;evidence that his team had conceded 2 goals against Everton and not&lt;/div&gt;&lt;div&gt;scored he replied, “Bwut I wefuse unfowtunately to sit here and accept&lt;/div&gt;&lt;div&gt;that we wewre in any way outpwayed or in any way infewiow. I watched&lt;/div&gt;&lt;div&gt;the pewfowmance and in the second half that’s as gwood as I’ve seen a&lt;/div&gt;&lt;div&gt;Livewrpwool team under my management play, that’s for suwre."&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Richard Dawkins, when asked to comment on Hodgson's methods, simply&lt;/div&gt;&lt;div&gt;walked away singing to himself, it sounded like "Going down, going&lt;/div&gt;&lt;div&gt;down..."&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/120527653504992986-5100706970405796919?l=tealeg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tealeg.blogspot.com/feeds/5100706970405796919/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=120527653504992986&amp;postID=5100706970405796919' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/120527653504992986/posts/default/5100706970405796919'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/120527653504992986/posts/default/5100706970405796919'/><link rel='alternate' type='text/html' href='http://tealeg.blogspot.com/2010/10/in-exclusive-interview-liverpool.html' title=''/><author><name>Geoff Teale</name><uri>http://www.blogger.com/profile/15745446337578770673</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-120527653504992986.post-8576576637825123104</id><published>2010-08-19T04:53:00.001-07:00</published><updated>2010-08-19T05:25:45.497-07:00</updated><title type='text'>Convert OpenOffice.org Calc FODS XML to something meaningful</title><content type='html'>&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'lucida grande';"&gt;The code in this blog post is now available at:&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'lucida grande';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'lucida grande';"&gt;&lt;a href="http://github.com/tealeg/FODS2XML"&gt;http://github.com/tealeg/FODS2XML&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;For a while now I've been receiving data in Excel files that needed to be integrated into some better structured XML data.   Originally I was using a little &lt;i&gt;xls2csv &lt;/i&gt;from the &lt;i&gt;catdoc &lt;/i&gt;package in Arch Linux to pull the data from the horrible bloated XLS files into something usable.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The trouble is the conversion to CSV was a little error prone and it's really hard to see such errors in a 40MB CSV file.   What I really needed was something a bit more structured to work with.   I decided I would try processing the data directly from an XML version of the spreadsheet.  In OpenOffice.org 3 I have a few XML options (Microsoft XLSX, Open Document Format, and FODS) - I wasn't aware of FODS XML before so I took a look.   What FODS seems to be is a single file equivalent of the XML content that usually spans multiple files in the Zipped up folder that is an Open Document Format file.  (I may be wrong - but this is my naive view of what I saw).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;With the handy FODS verison of the spreadsheet I set about writing a two stage XSLT conversion that strips out the data and results in a meaningful XML file.   This is all quick and dirty XSLT 2.0  - I've only tested in Saxon 9.2.0.6 and I wouldn't put it forwards as an exemplary piece of XSLT 2.0, but I figured someone might find is useful.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;My code assumes the following:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;The data is arranged in tabular format&lt;/li&gt;&lt;li&gt;There is only one table per tab in the sheet&lt;/li&gt;&lt;li&gt;There is no extraneous data around the tab&lt;/li&gt;&lt;li&gt;The first row contains column titles that are also valid XML element names (i.e. no spaces or other restricted characters).&lt;/li&gt;&lt;/ul&gt;Stage 1 simplified the FODS data too a simple tabular XML format.  The trickiest thing here is the expansion of repeated columns.  Note as well, this XSLT 2.0 takes a parameter "collimit" that tells it to ignore columns that fall after that number - this makes the XSLT run a lot faster.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;fods2tbl.xsl &lt;/i&gt;looks like this:&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;!-- Generator: GNU source-highlight 3.1.3 by Lorenzo Bettini http://www.lorenzobettini.it http://www.gnu.org/software/src-highlite --&gt;&lt;br /&gt;&lt;pre&gt;&lt;tt&gt;&lt;b&gt;&lt;span style="color:#000080;"&gt;&amp;lt;?xml&lt;/span&gt;&lt;/b&gt; &lt;span style="color:#009900;"&gt;version&lt;/span&gt;&lt;span style="color:#990000;"&gt;=&lt;/span&gt;&lt;span style="color:#FF0000;"&gt;"1.0"&lt;/span&gt; &lt;span style="color:#009900;"&gt;encoding&lt;/span&gt;&lt;span style="color:#990000;"&gt;=&lt;/span&gt;&lt;span style="color:#FF0000;"&gt;"iso-8859-1"&lt;/span&gt;&lt;b&gt;&lt;span style="color:#000080;"&gt;?&amp;gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="color:#0000FF;"&gt;&amp;lt;xsl:stylesheet&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;  &lt;span style="color:#009900;"&gt;version&lt;/span&gt;&lt;span style="color:#990000;"&gt;=&lt;/span&gt;&lt;span style="color:#FF0000;"&gt;"2.0"&lt;/span&gt;&lt;br /&gt;  &lt;span style="color:#009900;"&gt;xmlns:xsl&lt;/span&gt;&lt;span style="color:#990000;"&gt;=&lt;/span&gt;&lt;span style="color:#FF0000;"&gt;"http://www.w3.org/1999/XSL/Transform"&lt;/span&gt;&lt;br /&gt;  &lt;span style="color:#009900;"&gt;xmlns:office&lt;/span&gt;&lt;span style="color:#990000;"&gt;=&lt;/span&gt;&lt;span style="color:#FF0000;"&gt;"urn:oasis:names:tc:opendocument:xmlns:office:1.0"&lt;/span&gt;&lt;br /&gt;  &lt;span style="color:#009900;"&gt;xmlns:style&lt;/span&gt;&lt;span style="color:#990000;"&gt;=&lt;/span&gt;&lt;span style="color:#FF0000;"&gt;"urn:oasis:names:tc:opendocument:xmlns:style:1.0"&lt;/span&gt;&lt;br /&gt;  &lt;span style="color:#009900;"&gt;xmlns:text&lt;/span&gt;&lt;span style="color:#990000;"&gt;=&lt;/span&gt;&lt;span style="color:#FF0000;"&gt;"urn:oasis:names:tc:opendocument:xmlns:text:1.0"&lt;/span&gt;&lt;br /&gt;  &lt;span style="color:#009900;"&gt;xmlns:table&lt;/span&gt;&lt;span style="color:#990000;"&gt;=&lt;/span&gt;&lt;span style="color:#FF0000;"&gt;"urn:oasis:names:tc:opendocument:xmlns:table:1.0"&lt;/span&gt;&lt;br /&gt;  &lt;span style="color:#009900;"&gt;xmlns:draw&lt;/span&gt;&lt;span style="color:#990000;"&gt;=&lt;/span&gt;&lt;span style="color:#FF0000;"&gt;"urn:oasis:names:tc:opendocument:xmlns:drawing:1.0"&lt;/span&gt;&lt;br /&gt;  &lt;span style="color:#009900;"&gt;xmlns:fo&lt;/span&gt;&lt;span style="color:#990000;"&gt;=&lt;/span&gt;&lt;span style="color:#FF0000;"&gt;"urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0"&lt;/span&gt;&lt;br /&gt;  &lt;span style="color:#009900;"&gt;xmlns:xlink&lt;/span&gt;&lt;span style="color:#990000;"&gt;=&lt;/span&gt;&lt;span style="color:#FF0000;"&gt;"http://www.w3.org/1999/xlink"&lt;/span&gt;&lt;br /&gt;  &lt;span style="color:#009900;"&gt;xmlns:dc&lt;/span&gt;&lt;span style="color:#990000;"&gt;=&lt;/span&gt;&lt;span style="color:#FF0000;"&gt;"http://purl.org/dc/elements/1.1/"&lt;/span&gt;&lt;br /&gt;  &lt;span style="color:#009900;"&gt;xmlns:meta&lt;/span&gt;&lt;span style="color:#990000;"&gt;=&lt;/span&gt;&lt;span style="color:#FF0000;"&gt;"urn:oasis:names:tc:opendocument:xmlns:meta:1.0"&lt;/span&gt;&lt;br /&gt;  &lt;span style="color:#009900;"&gt;xmlns:number&lt;/span&gt;&lt;span style="color:#990000;"&gt;=&lt;/span&gt;&lt;span style="color:#FF0000;"&gt;"urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0"&lt;/span&gt;&lt;br /&gt;  &lt;span style="color:#009900;"&gt;xmlns:presentation&lt;/span&gt;&lt;span style="color:#990000;"&gt;=&lt;/span&gt;&lt;span style="color:#FF0000;"&gt;"urn:oasis:names:tc:opendocument:xmlns:presentation:1.0"&lt;/span&gt;&lt;br /&gt;  &lt;span style="color:#009900;"&gt;xmlns:svg&lt;/span&gt;&lt;span style="color:#990000;"&gt;=&lt;/span&gt;&lt;span style="color:#FF0000;"&gt;"urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0"&lt;/span&gt;&lt;br /&gt;  &lt;span style="color:#009900;"&gt;xmlns:chart&lt;/span&gt;&lt;span style="color:#990000;"&gt;=&lt;/span&gt;&lt;span style="color:#FF0000;"&gt;"urn:oasis:names:tc:opendocument:xmlns:chart:1.0"&lt;/span&gt;&lt;br /&gt;  &lt;span style="color:#009900;"&gt;xmlns:dr3d&lt;/span&gt;&lt;span style="color:#990000;"&gt;=&lt;/span&gt;&lt;span style="color:#FF0000;"&gt;"urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0"&lt;/span&gt;&lt;br /&gt;  &lt;span style="color:#009900;"&gt;xmlns:math&lt;/span&gt;&lt;span style="color:#990000;"&gt;=&lt;/span&gt;&lt;span style="color:#FF0000;"&gt;"http://www.w3.org/1998/Math/MathML"&lt;/span&gt;&lt;br /&gt;  &lt;span style="color:#009900;"&gt;xmlns:form&lt;/span&gt;&lt;span style="color:#990000;"&gt;=&lt;/span&gt;&lt;span style="color:#FF0000;"&gt;"urn:oasis:names:tc:opendocument:xmlns:form:1.0"&lt;/span&gt;&lt;br /&gt;  &lt;span style="color:#009900;"&gt;xmlns:script&lt;/span&gt;&lt;span style="color:#990000;"&gt;=&lt;/span&gt;&lt;span style="color:#FF0000;"&gt;"urn:oasis:names:tc:opendocument:xmlns:script:1.0"&lt;/span&gt;&lt;br /&gt;  &lt;span style="color:#009900;"&gt;xmlns:config&lt;/span&gt;&lt;span style="color:#990000;"&gt;=&lt;/span&gt;&lt;span style="color:#FF0000;"&gt;"urn:oasis:names:tc:opendocument:xmlns:config:1.0"&lt;/span&gt;&lt;br /&gt;  &lt;span style="color:#009900;"&gt;xmlns:ooo&lt;/span&gt;&lt;span style="color:#990000;"&gt;=&lt;/span&gt;&lt;span style="color:#FF0000;"&gt;"http://openoffice.org/2004/office"&lt;/span&gt;&lt;br /&gt;  &lt;span style="color:#009900;"&gt;xmlns:ooow&lt;/span&gt;&lt;span style="color:#990000;"&gt;=&lt;/span&gt;&lt;span style="color:#FF0000;"&gt;"http://openoffice.org/2004/writer"&lt;/span&gt;&lt;br /&gt;  &lt;span style="color:#009900;"&gt;xmlns:oooc&lt;/span&gt;&lt;span style="color:#990000;"&gt;=&lt;/span&gt;&lt;span style="color:#FF0000;"&gt;"http://openoffice.org/2004/calc"&lt;/span&gt;&lt;br /&gt;  &lt;span style="color:#009900;"&gt;xmlns:dom&lt;/span&gt;&lt;span style="color:#990000;"&gt;=&lt;/span&gt;&lt;span style="color:#FF0000;"&gt;"http://www.w3.org/2001/xml-events"&lt;/span&gt;&lt;br /&gt;  &lt;span style="color:#009900;"&gt;xmlns:xforms&lt;/span&gt;&lt;span style="color:#990000;"&gt;=&lt;/span&gt;&lt;span style="color:#FF0000;"&gt;"http://www.w3.org/2002/xforms"&lt;/span&gt;&lt;br /&gt;  &lt;span style="color:#009900;"&gt;xmlns:xsd&lt;/span&gt;&lt;span style="color:#990000;"&gt;=&lt;/span&gt;&lt;span style="color:#FF0000;"&gt;"http://www.w3.org/2001/XMLSchema"&lt;/span&gt;&lt;br /&gt;  &lt;span style="color:#009900;"&gt;xmlns:xsi&lt;/span&gt;&lt;span style="color:#990000;"&gt;=&lt;/span&gt;&lt;span style="color:#FF0000;"&gt;"http://www.w3.org/2001/XMLSchema-instance"&lt;/span&gt;&lt;br /&gt;  &lt;span style="color:#009900;"&gt;xmlns:rpt&lt;/span&gt;&lt;span style="color:#990000;"&gt;=&lt;/span&gt;&lt;span style="color:#FF0000;"&gt;"http://openoffice.org/2005/report"&lt;/span&gt;&lt;br /&gt;  &lt;span style="color:#009900;"&gt;xmlns:of&lt;/span&gt;&lt;span style="color:#990000;"&gt;=&lt;/span&gt;&lt;span style="color:#FF0000;"&gt;"urn:oasis:names:tc:opendocument:xmlns:of:1.2"&lt;/span&gt;&lt;br /&gt;  &lt;span style="color:#009900;"&gt;xmlns:xhtml&lt;/span&gt;&lt;span style="color:#990000;"&gt;=&lt;/span&gt;&lt;span style="color:#FF0000;"&gt;"http://www.w3.org/1999/xhtml"&lt;/span&gt;&lt;br /&gt;  &lt;span style="color:#009900;"&gt;xmlns:grddl&lt;/span&gt;&lt;span style="color:#990000;"&gt;=&lt;/span&gt;&lt;span style="color:#FF0000;"&gt;"http://www.w3.org/2003/g/data-view#"&lt;/span&gt;&lt;br /&gt;  &lt;span style="color:#009900;"&gt;xmlns:tableooo&lt;/span&gt;&lt;span style="color:#990000;"&gt;=&lt;/span&gt;&lt;span style="color:#FF0000;"&gt;"http://openoffice.org/2009/table"&lt;/span&gt;&lt;br /&gt;  &lt;span style="color:#009900;"&gt;xmlns:field&lt;/span&gt;&lt;span style="color:#990000;"&gt;=&lt;/span&gt;&lt;span style="color:#FF0000;"&gt;"urn:openoffice:names:experimental:ooo-ms-interop:xmlns:field:1.0"&lt;/span&gt;&lt;br /&gt;  &lt;span style="color:#009900;"&gt;xmlns:formx&lt;/span&gt;&lt;span style="color:#990000;"&gt;=&lt;/span&gt;&lt;span style="color:#FF0000;"&gt;"urn:openoffice:names:experimental:ooxml-odf-interop:xmlns:form:1.0"&lt;/span&gt;  &lt;br /&gt;  &lt;span style="color:#009900;"&gt;xmlns:css3t&lt;/span&gt;&lt;span style="color:#990000;"&gt;=&lt;/span&gt;&lt;span style="color:#FF0000;"&gt;"http://www.w3.org/TR/css3-text/"&lt;/span&gt;&lt;br /&gt;  &lt;span style="color:#009900;"&gt;xmlns:saxon&lt;/span&gt;&lt;span style="color:#990000;"&gt;=&lt;/span&gt;&lt;span style="color:#FF0000;"&gt;"http://icl.com/saxon"&lt;/span&gt;&lt;br /&gt;  &lt;span style="color:#009900;"&gt;extension-element-prefixes&lt;/span&gt;&lt;span style="color:#990000;"&gt;=&lt;/span&gt;&lt;span style="color:#FF0000;"&gt;"saxon"&lt;/span&gt;&lt;b&gt;&lt;span style="color:#0000FF;"&gt;&amp;gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="color:#0000FF;"&gt;&amp;lt;xsl:output&lt;/span&gt;&lt;/b&gt; &lt;span style="color:#009900;"&gt;indent&lt;/span&gt;&lt;span style="color:#990000;"&gt;=&lt;/span&gt;&lt;span style="color:#FF0000;"&gt;"yes"&lt;/span&gt;&lt;br /&gt;       &lt;span style="color:#009900;"&gt;method&lt;/span&gt;&lt;span style="color:#990000;"&gt;=&lt;/span&gt;&lt;span style="color:#FF0000;"&gt;"xml"&lt;/span&gt;&lt;br /&gt;       &lt;span style="color:#009900;"&gt;encoding&lt;/span&gt;&lt;span style="color:#990000;"&gt;=&lt;/span&gt;&lt;span style="color:#FF0000;"&gt;"UTF-8"&lt;/span&gt;&lt;br /&gt;       &lt;span style="color:#009900;"&gt;saxon:character-representation&lt;/span&gt;&lt;span style="color:#990000;"&gt;=&lt;/span&gt;&lt;span style="color:#FF0000;"&gt;"native;decimal"&lt;/span&gt;&lt;b&gt;&lt;span style="color:#0000FF;"&gt;/&amp;gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="color:#0000FF;"&gt;&amp;lt;xsl:param&lt;/span&gt;&lt;/b&gt; &lt;span style="color:#009900;"&gt;name&lt;/span&gt;&lt;span style="color:#990000;"&gt;=&lt;/span&gt;&lt;span style="color:#FF0000;"&gt;"collimit"&lt;/span&gt; &lt;span style="color:#009900;"&gt;select&lt;/span&gt;&lt;span style="color:#990000;"&gt;=&lt;/span&gt;&lt;span style="color:#FF0000;"&gt;"100"&lt;/span&gt;&lt;b&gt;&lt;span style="color:#0000FF;"&gt;/&amp;gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="color:#0000FF;"&gt;&amp;lt;xsl:template&lt;/span&gt;&lt;/b&gt; &lt;span style="color:#009900;"&gt;match&lt;/span&gt;&lt;span style="color:#990000;"&gt;=&lt;/span&gt;&lt;span style="color:#FF0000;"&gt;"*"&lt;/span&gt;&lt;b&gt;&lt;span style="color:#0000FF;"&gt;&amp;gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;  &lt;i&gt;&lt;span style="color:#9A1900;"&gt;&amp;lt;!-- Do Nothing --&amp;gt;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="color:#0000FF;"&gt;&amp;lt;/xsl:template&amp;gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="color:#0000FF;"&gt;&amp;lt;xsl:template&lt;/span&gt;&lt;/b&gt; &lt;span style="color:#009900;"&gt;match&lt;/span&gt;&lt;span style="color:#990000;"&gt;=&lt;/span&gt;&lt;span style="color:#FF0000;"&gt;"office:document"&lt;/span&gt;&lt;b&gt;&lt;span style="color:#0000FF;"&gt;&amp;gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;  &lt;b&gt;&lt;span style="color:#0000FF;"&gt;&amp;lt;document&amp;gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;    &lt;b&gt;&lt;span style="color:#0000FF;"&gt;&amp;lt;xsl:apply-templates&lt;/span&gt;&lt;/b&gt; &lt;b&gt;&lt;span style="color:#0000FF;"&gt;/&amp;gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;  &lt;b&gt;&lt;span style="color:#0000FF;"&gt;&amp;lt;/document&amp;gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="color:#0000FF;"&gt;&amp;lt;/xsl:template&amp;gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="color:#0000FF;"&gt;&amp;lt;xsl:template&lt;/span&gt;&lt;/b&gt; &lt;span style="color:#009900;"&gt;match&lt;/span&gt;&lt;span style="color:#990000;"&gt;=&lt;/span&gt;&lt;span style="color:#FF0000;"&gt;"office:body"&lt;/span&gt;&lt;b&gt;&lt;span style="color:#0000FF;"&gt;&amp;gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;  &lt;b&gt;&lt;span style="color:#0000FF;"&gt;&amp;lt;xsl:apply-templates/&amp;gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="color:#0000FF;"&gt;&amp;lt;/xsl:template&amp;gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="color:#0000FF;"&gt;&amp;lt;xsl:template&lt;/span&gt;&lt;/b&gt; &lt;span style="color:#009900;"&gt;match&lt;/span&gt;&lt;span style="color:#990000;"&gt;=&lt;/span&gt;&lt;span style="color:#FF0000;"&gt;"office:spreadsheet"&lt;/span&gt;&lt;b&gt;&lt;span style="color:#0000FF;"&gt;&amp;gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;  &lt;b&gt;&lt;span style="color:#0000FF;"&gt;&amp;lt;xsl:apply-templates/&amp;gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="color:#0000FF;"&gt;&amp;lt;/xsl:template&amp;gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="color:#0000FF;"&gt;&amp;lt;xsl:template&lt;/span&gt;&lt;/b&gt; &lt;span style="color:#009900;"&gt;match&lt;/span&gt;&lt;span style="color:#990000;"&gt;=&lt;/span&gt;&lt;span style="color:#FF0000;"&gt;"table:table"&lt;/span&gt;&lt;b&gt;&lt;span style="color:#0000FF;"&gt;&amp;gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;  &lt;b&gt;&lt;span style="color:#0000FF;"&gt;&amp;lt;table&amp;gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;    &lt;b&gt;&lt;span style="color:#0000FF;"&gt;&amp;lt;xsl:attribute&lt;/span&gt;&lt;/b&gt; &lt;span style="color:#009900;"&gt;name&lt;/span&gt;&lt;span style="color:#990000;"&gt;=&lt;/span&gt;&lt;span style="color:#FF0000;"&gt;"name"&lt;/span&gt;&lt;b&gt;&lt;span style="color:#0000FF;"&gt;&amp;gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt; &lt;b&gt;&lt;span style="color:#0000FF;"&gt;&amp;lt;xsl:value-of&lt;/span&gt;&lt;/b&gt; &lt;span style="color:#009900;"&gt;select&lt;/span&gt;&lt;span style="color:#990000;"&gt;=&lt;/span&gt;&lt;span style="color:#FF0000;"&gt;"@table:name"&lt;/span&gt;&lt;b&gt;&lt;span style="color:#0000FF;"&gt;/&amp;gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;    &lt;b&gt;&lt;span style="color:#0000FF;"&gt;&amp;lt;/xsl:attribute&amp;gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;    &lt;b&gt;&lt;span style="color:#0000FF;"&gt;&amp;lt;xsl:apply-templates&lt;/span&gt;&lt;/b&gt; &lt;b&gt;&lt;span style="color:#0000FF;"&gt;/&amp;gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;  &lt;b&gt;&lt;span style="color:#0000FF;"&gt;&amp;lt;/table&amp;gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="color:#0000FF;"&gt;&amp;lt;/xsl:template&amp;gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="color:#0000FF;"&gt;&amp;lt;xsl:template&lt;/span&gt;&lt;/b&gt; &lt;span style="color:#009900;"&gt;match&lt;/span&gt;&lt;span style="color:#990000;"&gt;=&lt;/span&gt;&lt;span style="color:#FF0000;"&gt;"table:table-row"&lt;/span&gt;&lt;b&gt;&lt;span style="color:#0000FF;"&gt;&amp;gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;  &lt;b&gt;&lt;span style="color:#0000FF;"&gt;&amp;lt;row&amp;gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;    &lt;b&gt;&lt;span style="color:#0000FF;"&gt;&amp;lt;xsl:attribute&lt;/span&gt;&lt;/b&gt; &lt;span style="color:#009900;"&gt;name&lt;/span&gt;&lt;span style="color:#990000;"&gt;=&lt;/span&gt;&lt;span style="color:#FF0000;"&gt;"rownum"&lt;/span&gt;&lt;b&gt;&lt;span style="color:#0000FF;"&gt;&amp;gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt; &lt;b&gt;&lt;span style="color:#0000FF;"&gt;&amp;lt;xsl:value-of&lt;/span&gt;&lt;/b&gt; &lt;span style="color:#009900;"&gt;select&lt;/span&gt;&lt;span style="color:#990000;"&gt;=&lt;/span&gt;&lt;span style="color:#FF0000;"&gt;"count(preceding-sibling::table:table-row) + 1"&lt;/span&gt;&lt;b&gt;&lt;span style="color:#0000FF;"&gt;/&amp;gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;    &lt;b&gt;&lt;span style="color:#0000FF;"&gt;&amp;lt;/xsl:attribute&amp;gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;    &lt;b&gt;&lt;span style="color:#0000FF;"&gt;&amp;lt;xsl:apply-templates&lt;/span&gt;&lt;/b&gt; &lt;b&gt;&lt;span style="color:#0000FF;"&gt;/&amp;gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;  &lt;b&gt;&lt;span style="color:#0000FF;"&gt;&amp;lt;/row&amp;gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="color:#0000FF;"&gt;&amp;lt;/xsl:template&amp;gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="color:#0000FF;"&gt;&amp;lt;xsl:template&lt;/span&gt;&lt;/b&gt; &lt;span style="color:#009900;"&gt;name&lt;/span&gt;&lt;span style="color:#990000;"&gt;=&lt;/span&gt;&lt;span style="color:#FF0000;"&gt;"repeat-cells"&lt;/span&gt;&lt;b&gt;&lt;span style="color:#0000FF;"&gt;&amp;gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;  &lt;b&gt;&lt;span style="color:#0000FF;"&gt;&amp;lt;xsl:param&lt;/span&gt;&lt;/b&gt; &lt;span style="color:#009900;"&gt;name&lt;/span&gt;&lt;span style="color:#990000;"&gt;=&lt;/span&gt;&lt;span style="color:#FF0000;"&gt;"index"&lt;/span&gt; &lt;span style="color:#009900;"&gt;select&lt;/span&gt;&lt;span style="color:#990000;"&gt;=&lt;/span&gt;&lt;span style="color:#FF0000;"&gt;"0"&lt;/span&gt;&lt;b&gt;&lt;span style="color:#0000FF;"&gt;/&amp;gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;  &lt;b&gt;&lt;span style="color:#0000FF;"&gt;&amp;lt;xsl:param&lt;/span&gt;&lt;/b&gt; &lt;span style="color:#009900;"&gt;name&lt;/span&gt;&lt;span style="color:#990000;"&gt;=&lt;/span&gt;&lt;span style="color:#FF0000;"&gt;"cellnum"&lt;/span&gt; &lt;span style="color:#009900;"&gt;select&lt;/span&gt;&lt;span style="color:#990000;"&gt;=&lt;/span&gt;&lt;span style="color:#FF0000;"&gt;"1"&lt;/span&gt;&lt;b&gt;&lt;span style="color:#0000FF;"&gt;/&amp;gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;  &lt;b&gt;&lt;span style="color:#0000FF;"&gt;&amp;lt;xsl:if&lt;/span&gt;&lt;/b&gt; &lt;span style="color:#009900;"&gt;test&lt;/span&gt;&lt;span style="color:#990000;"&gt;=&lt;/span&gt;&lt;span style="color:#FF0000;"&gt;"$collimit &amp;gt;= $cellnum"&lt;/span&gt;&lt;b&gt;&lt;span style="color:#0000FF;"&gt;&amp;gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;    &lt;b&gt;&lt;span style="color:#0000FF;"&gt;&amp;lt;xsl:if&lt;/span&gt;&lt;/b&gt; &lt;span style="color:#009900;"&gt;test&lt;/span&gt;&lt;span style="color:#990000;"&gt;=&lt;/span&gt;&lt;span style="color:#FF0000;"&gt;"$index &amp;gt; 0"&lt;/span&gt;&lt;b&gt;&lt;span style="color:#0000FF;"&gt;&amp;gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt; &lt;b&gt;&lt;span style="color:#0000FF;"&gt;&amp;lt;cell&amp;gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;   &lt;b&gt;&lt;span style="color:#0000FF;"&gt;&amp;lt;xsl:attribute&lt;/span&gt;&lt;/b&gt; &lt;span style="color:#009900;"&gt;name&lt;/span&gt;&lt;span style="color:#990000;"&gt;=&lt;/span&gt;&lt;span style="color:#FF0000;"&gt;"cellnum"&lt;/span&gt;&lt;b&gt;&lt;span style="color:#0000FF;"&gt;&amp;gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;     &lt;b&gt;&lt;span style="color:#0000FF;"&gt;&amp;lt;xsl:value-of&lt;/span&gt;&lt;/b&gt; &lt;span style="color:#009900;"&gt;select&lt;/span&gt;&lt;span style="color:#990000;"&gt;=&lt;/span&gt;&lt;span style="color:#FF0000;"&gt;"$cellnum"&lt;/span&gt;&lt;b&gt;&lt;span style="color:#0000FF;"&gt;/&amp;gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;   &lt;b&gt;&lt;span style="color:#0000FF;"&gt;&amp;lt;/xsl:attribute&amp;gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt; &lt;b&gt;&lt;span style="color:#0000FF;"&gt;&amp;lt;/cell&amp;gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt; &lt;b&gt;&lt;span style="color:#0000FF;"&gt;&amp;lt;xsl:call-template&lt;/span&gt;&lt;/b&gt; &lt;span style="color:#009900;"&gt;name&lt;/span&gt;&lt;span style="color:#990000;"&gt;=&lt;/span&gt;&lt;span style="color:#FF0000;"&gt;"repeat-cells"&lt;/span&gt;&lt;b&gt;&lt;span style="color:#0000FF;"&gt;&amp;gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;   &lt;b&gt;&lt;span style="color:#0000FF;"&gt;&amp;lt;xsl:with-param&lt;/span&gt;&lt;/b&gt; &lt;span style="color:#009900;"&gt;name&lt;/span&gt;&lt;span style="color:#990000;"&gt;=&lt;/span&gt;&lt;span style="color:#FF0000;"&gt;"index"&lt;/span&gt; &lt;span style="color:#009900;"&gt;select&lt;/span&gt;&lt;span style="color:#990000;"&gt;=&lt;/span&gt;&lt;span style="color:#FF0000;"&gt;"$index - 1"&lt;/span&gt;&lt;b&gt;&lt;span style="color:#0000FF;"&gt;/&amp;gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;   &lt;b&gt;&lt;span style="color:#0000FF;"&gt;&amp;lt;xsl:with-param&lt;/span&gt;&lt;/b&gt; &lt;span style="color:#009900;"&gt;name&lt;/span&gt;&lt;span style="color:#990000;"&gt;=&lt;/span&gt;&lt;span style="color:#FF0000;"&gt;"cellnum"&lt;/span&gt; &lt;span style="color:#009900;"&gt;select&lt;/span&gt;&lt;span style="color:#990000;"&gt;=&lt;/span&gt;&lt;span style="color:#FF0000;"&gt;"$cellnum + 1"&lt;/span&gt;&lt;b&gt;&lt;span style="color:#0000FF;"&gt;/&amp;gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt; &lt;b&gt;&lt;span style="color:#0000FF;"&gt;&amp;lt;/xsl:call-template&amp;gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;    &lt;b&gt;&lt;span style="color:#0000FF;"&gt;&amp;lt;/xsl:if&amp;gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;  &lt;b&gt;&lt;span style="color:#0000FF;"&gt;&amp;lt;/xsl:if&amp;gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="color:#0000FF;"&gt;&amp;lt;/xsl:template&amp;gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="color:#0000FF;"&gt;&amp;lt;xsl:template&lt;/span&gt;&lt;/b&gt; &lt;span style="color:#009900;"&gt;match&lt;/span&gt;&lt;span style="color:#990000;"&gt;=&lt;/span&gt;&lt;span style="color:#FF0000;"&gt;"table:table-cell"&lt;/span&gt;&lt;b&gt;&lt;span style="color:#0000FF;"&gt;&amp;gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;  &lt;b&gt;&lt;span style="color:#0000FF;"&gt;&amp;lt;xsl:variable&lt;/span&gt;&lt;/b&gt; &lt;span style="color:#009900;"&gt;name&lt;/span&gt;&lt;span style="color:#990000;"&gt;=&lt;/span&gt;&lt;span style="color:#FF0000;"&gt;"repeats"&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#009900;"&gt;select&lt;/span&gt;&lt;span style="color:#990000;"&gt;=&lt;/span&gt;&lt;span style="color:#FF0000;"&gt;"sum(preceding-sibling::table:table-cell/@table:number-columns-repeated) -&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#FF0000;"&gt;     count(preceding-sibling::table:table-cell[@table:number-columns-repeated &amp;gt; 0])"&lt;/span&gt;&lt;b&gt;&lt;span style="color:#0000FF;"&gt;/&amp;gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;  &lt;b&gt;&lt;span style="color:#0000FF;"&gt;&amp;lt;xsl:variable&lt;/span&gt;&lt;/b&gt; &lt;span style="color:#009900;"&gt;name&lt;/span&gt;&lt;span style="color:#990000;"&gt;=&lt;/span&gt;&lt;span style="color:#FF0000;"&gt;"cellnum"&lt;/span&gt; &lt;span style="color:#009900;"&gt;select&lt;/span&gt;&lt;span style="color:#990000;"&gt;=&lt;/span&gt;&lt;span style="color:#FF0000;"&gt;"count(preceding-sibling::table:table-cell) + $repeats + 1"&lt;/span&gt;&lt;b&gt;&lt;span style="color:#0000FF;"&gt;/&amp;gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;  &lt;b&gt;&lt;span style="color:#0000FF;"&gt;&amp;lt;xsl:if&lt;/span&gt;&lt;/b&gt; &lt;span style="color:#009900;"&gt;test&lt;/span&gt;&lt;span style="color:#990000;"&gt;=&lt;/span&gt;&lt;span style="color:#FF0000;"&gt;"$collimit &amp;gt;= $cellnum"&lt;/span&gt;&lt;b&gt;&lt;span style="color:#0000FF;"&gt;&amp;gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;    &lt;b&gt;&lt;span style="color:#0000FF;"&gt;&amp;lt;cell&amp;gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt; &lt;b&gt;&lt;span style="color:#0000FF;"&gt;&amp;lt;xsl:attribute&lt;/span&gt;&lt;/b&gt; &lt;span style="color:#009900;"&gt;name&lt;/span&gt;&lt;span style="color:#990000;"&gt;=&lt;/span&gt;&lt;span style="color:#FF0000;"&gt;"cellnum"&lt;/span&gt;&lt;b&gt;&lt;span style="color:#0000FF;"&gt;&amp;gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;   &lt;b&gt;&lt;span style="color:#0000FF;"&gt;&amp;lt;xsl:value-of&lt;/span&gt;&lt;/b&gt; &lt;span style="color:#009900;"&gt;select&lt;/span&gt;&lt;span style="color:#990000;"&gt;=&lt;/span&gt;&lt;span style="color:#FF0000;"&gt;"$cellnum"&lt;/span&gt;&lt;b&gt;&lt;span style="color:#0000FF;"&gt;/&amp;gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt; &lt;b&gt;&lt;span style="color:#0000FF;"&gt;&amp;lt;/xsl:attribute&amp;gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt; &lt;b&gt;&lt;span style="color:#0000FF;"&gt;&amp;lt;xsl:apply-templates&lt;/span&gt;&lt;/b&gt; &lt;b&gt;&lt;span style="color:#0000FF;"&gt;/&amp;gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;    &lt;b&gt;&lt;span style="color:#0000FF;"&gt;&amp;lt;/cell&amp;gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;    &lt;b&gt;&lt;span style="color:#0000FF;"&gt;&amp;lt;xsl:if&lt;/span&gt;&lt;/b&gt; &lt;span style="color:#009900;"&gt;test&lt;/span&gt;&lt;span style="color:#990000;"&gt;=&lt;/span&gt;&lt;span style="color:#FF0000;"&gt;"@table:number-columns-repeated &amp;gt; 0"&lt;/span&gt;&lt;b&gt;&lt;span style="color:#0000FF;"&gt;&amp;gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt; &lt;b&gt;&lt;span style="color:#0000FF;"&gt;&amp;lt;xsl:call-template&lt;/span&gt;&lt;/b&gt; &lt;span style="color:#009900;"&gt;name&lt;/span&gt;&lt;span style="color:#990000;"&gt;=&lt;/span&gt;&lt;span style="color:#FF0000;"&gt;"repeat-cells"&lt;/span&gt;&lt;b&gt;&lt;span style="color:#0000FF;"&gt;&amp;gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;   &lt;b&gt;&lt;span style="color:#0000FF;"&gt;&amp;lt;xsl:with-param&lt;/span&gt;&lt;/b&gt; &lt;span style="color:#009900;"&gt;name&lt;/span&gt;&lt;span style="color:#990000;"&gt;=&lt;/span&gt;&lt;span style="color:#FF0000;"&gt;"index"&lt;/span&gt; &lt;span style="color:#009900;"&gt;select&lt;/span&gt;&lt;span style="color:#990000;"&gt;=&lt;/span&gt;&lt;span style="color:#FF0000;"&gt;"@table:number-columns-repeated -1"&lt;/span&gt;&lt;b&gt;&lt;span style="color:#0000FF;"&gt;/&amp;gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;   &lt;b&gt;&lt;span style="color:#0000FF;"&gt;&amp;lt;xsl:with-param&lt;/span&gt;&lt;/b&gt; &lt;span style="color:#009900;"&gt;name&lt;/span&gt;&lt;span style="color:#990000;"&gt;=&lt;/span&gt;&lt;span style="color:#FF0000;"&gt;"cellnum"&lt;/span&gt; &lt;span style="color:#009900;"&gt;select&lt;/span&gt;&lt;span style="color:#990000;"&gt;=&lt;/span&gt;&lt;span style="color:#FF0000;"&gt;"$cellnum + 1"&lt;/span&gt;&lt;b&gt;&lt;span style="color:#0000FF;"&gt;/&amp;gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt; &lt;b&gt;&lt;span style="color:#0000FF;"&gt;&amp;lt;/xsl:call-template&amp;gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;    &lt;b&gt;&lt;span style="color:#0000FF;"&gt;&amp;lt;/xsl:if&amp;gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;  &lt;b&gt;&lt;span style="color:#0000FF;"&gt;&amp;lt;/xsl:if&amp;gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="color:#0000FF;"&gt;&amp;lt;/xsl:template&amp;gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="color:#0000FF;"&gt;&amp;lt;xsl:template&lt;/span&gt;&lt;/b&gt; &lt;span style="color:#009900;"&gt;match&lt;/span&gt;&lt;span style="color:#990000;"&gt;=&lt;/span&gt;&lt;span style="color:#FF0000;"&gt;"text:p"&lt;/span&gt;&lt;b&gt;&lt;span style="color:#0000FF;"&gt;&amp;gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;  &lt;b&gt;&lt;span style="color:#0000FF;"&gt;&amp;lt;p&amp;gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;    &lt;b&gt;&lt;span style="color:#0000FF;"&gt;&amp;lt;xsl:value-of&lt;/span&gt;&lt;/b&gt; &lt;span style="color:#009900;"&gt;select&lt;/span&gt;&lt;span style="color:#990000;"&gt;=&lt;/span&gt;&lt;span style="color:#FF0000;"&gt;"."&lt;/span&gt;&lt;b&gt;&lt;span style="color:#0000FF;"&gt;/&amp;gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;  &lt;b&gt;&lt;span style="color:#0000FF;"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="color:#0000FF;"&gt;&amp;lt;/xsl:template&amp;gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;  &lt;br /&gt;&lt;b&gt;&lt;span style="color:#0000FF;"&gt;&amp;lt;/xsl:stylesheet&amp;gt;&lt;/span&gt;&lt;/b&gt;&lt;/tt&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;The second stage is to take the resulting tabular XML file and convert it to meaningful XML.  The output essentially wraps each cell in a XML element with the name of the column it was taking from (extracted from the first row).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;tbl2data.xsl &lt;/i&gt;looks like this:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;!-- Generator: GNU source-highlight 3.1.3 by Lorenzo Bettini http://www.lorenzobettini.it http://www.gnu.org/software/src-highlite --&gt;&lt;br /&gt;&lt;pre&gt;&lt;tt&gt;&lt;b&gt;&lt;span style="color:#000080;"&gt;&amp;lt;?xml&lt;/span&gt;&lt;/b&gt; &lt;span style="color:#009900;"&gt;version&lt;/span&gt;&lt;span style="color:#990000;"&gt;=&lt;/span&gt;&lt;span style="color:#FF0000;"&gt;"1.0"&lt;/span&gt; &lt;span style="color:#009900;"&gt;encoding&lt;/span&gt;&lt;span style="color:#990000;"&gt;=&lt;/span&gt;&lt;span style="color:#FF0000;"&gt;"iso-8859-1"&lt;/span&gt;&lt;b&gt;&lt;span style="color:#000080;"&gt;?&amp;gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="color:#0000FF;"&gt;&amp;lt;xsl:stylesheet&lt;/span&gt;&lt;/b&gt; &lt;span style="color:#009900;"&gt;version&lt;/span&gt;&lt;span style="color:#990000;"&gt;=&lt;/span&gt;&lt;span style="color:#FF0000;"&gt;"2.0"&lt;/span&gt; &lt;span style="color:#009900;"&gt;xmlns:xsl&lt;/span&gt;&lt;span style="color:#990000;"&gt;=&lt;/span&gt;&lt;span style="color:#FF0000;"&gt;"http://www.w3.org/1999/XSL/Transform"&lt;/span&gt;&lt;b&gt;&lt;span style="color:#0000FF;"&gt;&amp;gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt; &lt;b&gt;&lt;span style="color:#0000FF;"&gt;&amp;lt;xsl:output&lt;/span&gt;&lt;/b&gt; &lt;span style="color:#009900;"&gt;indent&lt;/span&gt;&lt;span style="color:#990000;"&gt;=&lt;/span&gt;&lt;span style="color:#FF0000;"&gt;"yes"&lt;/span&gt;&lt;br /&gt;       &lt;span style="color:#009900;"&gt;method&lt;/span&gt;&lt;span style="color:#990000;"&gt;=&lt;/span&gt;&lt;span style="color:#FF0000;"&gt;"xml"&lt;/span&gt;&lt;br /&gt;       &lt;span style="color:#009900;"&gt;encoding&lt;/span&gt;&lt;span style="color:#990000;"&gt;=&lt;/span&gt;&lt;span style="color:#FF0000;"&gt;"UTF-8"&lt;/span&gt;&lt;br /&gt;       &lt;span style="color:#009900;"&gt;xmlns:saxon&lt;/span&gt;&lt;span style="color:#990000;"&gt;=&lt;/span&gt;&lt;span style="color:#FF0000;"&gt;"http://icl.com/saxon"&lt;/span&gt;&lt;br /&gt;       &lt;span style="color:#009900;"&gt;saxon:character-representation&lt;/span&gt;&lt;span style="color:#990000;"&gt;=&lt;/span&gt;&lt;span style="color:#FF0000;"&gt;"native;decimal"&lt;/span&gt;&lt;b&gt;&lt;span style="color:#0000FF;"&gt;/&amp;gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt; &lt;b&gt;&lt;span style="color:#0000FF;"&gt;&amp;lt;xsl:template&lt;/span&gt;&lt;/b&gt; &lt;span style="color:#009900;"&gt;match&lt;/span&gt;&lt;span style="color:#990000;"&gt;=&lt;/span&gt;&lt;span style="color:#FF0000;"&gt;"*"&lt;/span&gt;&lt;b&gt;&lt;span style="color:#0000FF;"&gt;&amp;gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;   &lt;i&gt;&lt;span style="color:#9A1900;"&gt;&amp;lt;!-- Do Nothing --&amp;gt;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt; &lt;b&gt;&lt;span style="color:#0000FF;"&gt;&amp;lt;/xsl:template&amp;gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt; &lt;b&gt;&lt;span style="color:#0000FF;"&gt;&amp;lt;xsl:template&lt;/span&gt;&lt;/b&gt; &lt;span style="color:#009900;"&gt;match&lt;/span&gt;&lt;span style="color:#990000;"&gt;=&lt;/span&gt;&lt;span style="color:#FF0000;"&gt;"document"&lt;/span&gt;&lt;b&gt;&lt;span style="color:#0000FF;"&gt;&amp;gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;   &lt;b&gt;&lt;span style="color:#0000FF;"&gt;&amp;lt;subjects&amp;gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;     &lt;b&gt;&lt;span style="color:#0000FF;"&gt;&amp;lt;xsl:apply-templates&lt;/span&gt;&lt;/b&gt; &lt;span style="color:#009900;"&gt;select&lt;/span&gt;&lt;span style="color:#990000;"&gt;=&lt;/span&gt;&lt;span style="color:#FF0000;"&gt;"table/row[@rownum &amp;gt; 1]"&lt;/span&gt; &lt;b&gt;&lt;span style="color:#0000FF;"&gt;/&amp;gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;   &lt;b&gt;&lt;span style="color:#0000FF;"&gt;&amp;lt;/subjects&amp;gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt; &lt;b&gt;&lt;span style="color:#0000FF;"&gt;&amp;lt;/xsl:template&amp;gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt; &lt;b&gt;&lt;span style="color:#0000FF;"&gt;&amp;lt;xsl:template&lt;/span&gt;&lt;/b&gt; &lt;span style="color:#009900;"&gt;match&lt;/span&gt;&lt;span style="color:#990000;"&gt;=&lt;/span&gt;&lt;span style="color:#FF0000;"&gt;"row"&lt;/span&gt;&lt;b&gt;&lt;span style="color:#0000FF;"&gt;&amp;gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;   &lt;b&gt;&lt;span style="color:#0000FF;"&gt;&amp;lt;record&amp;gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;     &lt;b&gt;&lt;span style="color:#0000FF;"&gt;&amp;lt;xsl:apply-templates&lt;/span&gt;&lt;/b&gt; &lt;b&gt;&lt;span style="color:#0000FF;"&gt;/&amp;gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;   &lt;b&gt;&lt;span style="color:#0000FF;"&gt;&amp;lt;/record&amp;gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt; &lt;b&gt;&lt;span style="color:#0000FF;"&gt;&amp;lt;/xsl:template&amp;gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt; &lt;b&gt;&lt;span style="color:#0000FF;"&gt;&amp;lt;xsl:template&lt;/span&gt;&lt;/b&gt; &lt;span style="color:#009900;"&gt;match&lt;/span&gt;&lt;span style="color:#990000;"&gt;=&lt;/span&gt;&lt;span style="color:#FF0000;"&gt;"cell"&lt;/span&gt;&lt;b&gt;&lt;span style="color:#0000FF;"&gt;&amp;gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;   &lt;b&gt;&lt;span style="color:#0000FF;"&gt;&amp;lt;xsl:variable&lt;/span&gt;&lt;/b&gt; &lt;span style="color:#009900;"&gt;name&lt;/span&gt;&lt;span style="color:#990000;"&gt;=&lt;/span&gt;&lt;span style="color:#FF0000;"&gt;"cellnum"&lt;/span&gt;&lt;b&gt;&lt;span style="color:#0000FF;"&gt;&amp;gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;     &lt;b&gt;&lt;span style="color:#0000FF;"&gt;&amp;lt;xsl:value-of&lt;/span&gt;&lt;/b&gt; &lt;span style="color:#009900;"&gt;select&lt;/span&gt;&lt;span style="color:#990000;"&gt;=&lt;/span&gt;&lt;span style="color:#FF0000;"&gt;"@cellnum"&lt;/span&gt;&lt;b&gt;&lt;span style="color:#0000FF;"&gt;/&amp;gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;   &lt;b&gt;&lt;span style="color:#0000FF;"&gt;&amp;lt;/xsl:variable&amp;gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;   &lt;b&gt;&lt;span style="color:#0000FF;"&gt;&amp;lt;xsl:variable&lt;/span&gt;&lt;/b&gt; &lt;span style="color:#009900;"&gt;name&lt;/span&gt;&lt;span style="color:#990000;"&gt;=&lt;/span&gt;&lt;span style="color:#FF0000;"&gt;"table"&lt;/span&gt;&lt;b&gt;&lt;span style="color:#0000FF;"&gt;&amp;gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;     &lt;b&gt;&lt;span style="color:#0000FF;"&gt;&amp;lt;xsl:value-of&lt;/span&gt;&lt;/b&gt; &lt;span style="color:#009900;"&gt;select&lt;/span&gt;&lt;span style="color:#990000;"&gt;=&lt;/span&gt;&lt;span style="color:#FF0000;"&gt;"ancestor::table/@name"&lt;/span&gt;&lt;b&gt;&lt;span style="color:#0000FF;"&gt;/&amp;gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;   &lt;b&gt;&lt;span style="color:#0000FF;"&gt;&amp;lt;/xsl:variable&amp;gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;   &lt;b&gt;&lt;span style="color:#0000FF;"&gt;&amp;lt;xsl:variable&lt;/span&gt;&lt;/b&gt; &lt;span style="color:#009900;"&gt;name&lt;/span&gt;&lt;span style="color:#990000;"&gt;=&lt;/span&gt;&lt;span style="color:#FF0000;"&gt;"cellname"&lt;/span&gt;&lt;b&gt;&lt;span style="color:#0000FF;"&gt;&amp;gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;     &lt;b&gt;&lt;span style="color:#0000FF;"&gt;&amp;lt;xsl:value-of&lt;/span&gt;&lt;/b&gt; &lt;span style="color:#009900;"&gt;select&lt;/span&gt;&lt;span style="color:#990000;"&gt;=&lt;/span&gt;&lt;span style="color:#FF0000;"&gt;"/document/table[@name=$table]/row[@rownum=1]/cell[@cellnum=$cellnum]/p[1]"&lt;/span&gt;&lt;b&gt;&lt;span style="color:#0000FF;"&gt;/&amp;gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;   &lt;b&gt;&lt;span style="color:#0000FF;"&gt;&amp;lt;/xsl:variable&amp;gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;   &lt;b&gt;&lt;span style="color:#0000FF;"&gt;&amp;lt;xsl:choose&amp;gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;     &lt;b&gt;&lt;span style="color:#0000FF;"&gt;&amp;lt;xsl:when&lt;/span&gt;&lt;/b&gt; &lt;span style="color:#009900;"&gt;test&lt;/span&gt;&lt;span style="color:#990000;"&gt;=&lt;/span&gt;&lt;span style="color:#FF0000;"&gt;"string-length($cellname) &amp;gt; 0"&lt;/span&gt;&lt;b&gt;&lt;span style="color:#0000FF;"&gt;&amp;gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt; &lt;b&gt;&lt;span style="color:#0000FF;"&gt;&amp;lt;xsl:element&lt;/span&gt;&lt;/b&gt; &lt;span style="color:#009900;"&gt;name&lt;/span&gt;&lt;span style="color:#990000;"&gt;=&lt;/span&gt;&lt;span style="color:#FF0000;"&gt;"{$cellname}"&lt;/span&gt;&lt;b&gt;&lt;span style="color:#0000FF;"&gt;&amp;gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;   &lt;b&gt;&lt;span style="color:#0000FF;"&gt;&amp;lt;xsl:apply-templates&lt;/span&gt;&lt;/b&gt; &lt;b&gt;&lt;span style="color:#0000FF;"&gt;/&amp;gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt; &lt;b&gt;&lt;span style="color:#0000FF;"&gt;&amp;lt;/xsl:element&amp;gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;     &lt;b&gt;&lt;span style="color:#0000FF;"&gt;&amp;lt;/xsl:when&amp;gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;     &lt;b&gt;&lt;span style="color:#0000FF;"&gt;&amp;lt;xsl:otherwise&amp;gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt; &lt;b&gt;&lt;span style="color:#0000FF;"&gt;&amp;lt;xsl:element&lt;/span&gt;&lt;/b&gt; &lt;span style="color:#009900;"&gt;name&lt;/span&gt;&lt;span style="color:#990000;"&gt;=&lt;/span&gt;&lt;span style="color:#FF0000;"&gt;"OOPS"&lt;/span&gt;&lt;b&gt;&lt;span style="color:#0000FF;"&gt;&amp;gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;   &lt;b&gt;&lt;span style="color:#0000FF;"&gt;&amp;lt;xsl:apply-templates&lt;/span&gt;&lt;/b&gt; &lt;b&gt;&lt;span style="color:#0000FF;"&gt;/&amp;gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt; &lt;b&gt;&lt;span style="color:#0000FF;"&gt;&amp;lt;/xsl:element&amp;gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;     &lt;b&gt;&lt;span style="color:#0000FF;"&gt;&amp;lt;/xsl:otherwise&amp;gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;   &lt;b&gt;&lt;span style="color:#0000FF;"&gt;&amp;lt;/xsl:choose&amp;gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt; &lt;b&gt;&lt;span style="color:#0000FF;"&gt;&amp;lt;/xsl:template&amp;gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt; &lt;b&gt;&lt;span style="color:#0000FF;"&gt;&amp;lt;xsl:template&lt;/span&gt;&lt;/b&gt; &lt;span style="color:#009900;"&gt;match&lt;/span&gt;&lt;span style="color:#990000;"&gt;=&lt;/span&gt;&lt;span style="color:#FF0000;"&gt;"p"&lt;/span&gt;&lt;b&gt;&lt;span style="color:#0000FF;"&gt;&amp;gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;   &lt;b&gt;&lt;span style="color:#0000FF;"&gt;&amp;lt;xsl:value-of&lt;/span&gt;&lt;/b&gt; &lt;span style="color:#009900;"&gt;select&lt;/span&gt;&lt;span style="color:#990000;"&gt;=&lt;/span&gt;&lt;span style="color:#FF0000;"&gt;"."&lt;/span&gt;&lt;b&gt;&lt;span style="color:#0000FF;"&gt;/&amp;gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt; &lt;b&gt;&lt;span style="color:#0000FF;"&gt;&amp;lt;/xsl:template&amp;gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="color:#0000FF;"&gt;&amp;lt;/xsl:stylesheet&amp;gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;/tt&gt;&lt;/pre&gt;&lt;br /&gt;I hope someone finds that helpful.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/120527653504992986-8576576637825123104?l=tealeg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tealeg.blogspot.com/feeds/8576576637825123104/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=120527653504992986&amp;postID=8576576637825123104' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/120527653504992986/posts/default/8576576637825123104'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/120527653504992986/posts/default/8576576637825123104'/><link rel='alternate' type='text/html' href='http://tealeg.blogspot.com/2010/08/convert-openofficeorg-calc-fods-xml-to.html' title='Convert OpenOffice.org Calc FODS XML to something meaningful'/><author><name>Geoff Teale</name><uri>http://www.blogger.com/profile/15745446337578770673</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-120527653504992986.post-166239365132198663</id><published>2010-04-05T10:59:00.001-07:00</published><updated>2010-04-05T14:56:32.137-07:00</updated><title type='text'>Project greyhound: My Granddad's Camera</title><content type='html'>A year or so ago, whilst I was visiting England on a business trip I took the time to go down and visit my parents.   During this visit my dad indulged my interest in old cameras by digging out a few of his own old cameras and a couple of his fathers.  The oldest two in this group were a Kodak Number 2 Brownie, in very good order, and an extremely battered looking Ensign Greyhound folding camera.&lt;br /&gt;&lt;br /&gt;Since that trip these cameras have been sitting in our camera display case, here in our hall at home in Munich.   I had written off the Greyhound as being unusable.  The case was battered, the bellows must surely be cracked and the rails and shutter were both jammed up with dirt.   That was until Friday night.   I had an urge to try out something different and looking through the collection I saw an old Agfa Isolette 6x6 folding camera - it's was in generally good condition, but the screw focus mechanism was jammed.   With a little careful cleaning, a tad of brute force and a drop or two of oil I was able to bring it back to full working order.   It's a very satisfying feeling to get a camera up and running that's been abandoned for years and I briefly considered running a film through it, but I had the bug to work on a camera. It was then that I started thinking of my Granddad's Ensign Greyhound.  &lt;br /&gt;&lt;br /&gt;The Ensign Greyhound is, as far as I can establish, a late 1920's brass bodied folding camera.  It uses 120 roll film and delivers eight 6cm x 9cm negatives per roll.   They were built in London, and the brand would later go on to claim, with more than a little hubris, that they were better than Zeiss.   The Greyhound is certainly no match for a Zeiss, but it is definitely well built.&lt;br /&gt;&lt;br /&gt;My Granddad's Greyhound was in pretty bad shape.   Granddad smoked a pipe, and perhaps this accounts for the thick, black sooty substance that coated the entire camera.   Here are a few shots of the camera before I started work cleaning it.   They don't really do justice to how filthy it was:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/tealeg/4493600612/" title="Greyhound Before 1 by tealeg, on Flickr"&gt;&lt;img src="http://farm5.static.flickr.com/4060/4493600612_8550769170.jpg" width="500" height="375" alt="Greyhound Before 1" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/tealeg/4493601160/" title="Greyhound Before 2 by tealeg, on Flickr"&gt;&lt;img src="http://farm5.static.flickr.com/4043/4493601160_e7d5f7735a.jpg" width="500" height="375" alt="Greyhound Before 2" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/tealeg/4493601788/" title="Greyhound Before 3 by tealeg, on Flickr"&gt;&lt;img src="http://farm3.static.flickr.com/2780/4493601788_894a799bda.jpg" width="375" height="500" alt="Greyhound Before 3" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;This filth was really ground in.  I tried all manner of cloths and cleaning materials.  Eventually I had to tentatively rub it down with Silvo silver polishing wadding.    That worked wonders, but it still took some 4 hours to get the camera anything like clean.  The best indication of the sort of filth I was getting off can be seen by the state of my hands.  Despite regular washing to avoid reapplying the dirt to the body they looked like this every couple of minutes or so:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/tealeg/4493616214/" title="Greyhound During 1 by tealeg, on Flickr"&gt;&lt;img src="http://farm5.static.flickr.com/4023/4493616214_7412a09b04.jpg" width="500" height="375" alt="Greyhound During 1" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The pay off for all this work is a camera that looks like this:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/tealeg/4492994125/" title="Greyhound After 1 by tealeg, on Flickr"&gt;&lt;img src="http://farm3.static.flickr.com/2690/4492994125_d62ca80619.jpg" width="500" height="375" alt="Greyhound After 1" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/tealeg/4492994663/" title="Greyhound After 2 by tealeg, on Flickr"&gt;&lt;img src="http://farm5.static.flickr.com/4021/4492994663_82d2333e08.jpg" width="500" height="375" alt="Greyhound After 2" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/tealeg/4493655600/" title="Greyhound After 7 by tealeg, on Flickr"&gt;&lt;img src="http://farm3.static.flickr.com/2760/4493655600_8ec86ee186.jpg" width="500" height="375" alt="Greyhound After 7" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Still far from show condition - but without actively taking steps to restore it this is as good as it's going to get in terms of the look.  Next I turned to the function.   I performed a a check of the bellows, miraculously they are in perfect working order, oiling the rails and hinges left me with a faultless folding mechanism which clicks smoothly into both focus positions.  Though "9 feet" and "near objects" are far from ideal focussing options!&lt;br /&gt;&lt;br /&gt;I cleaned and serviced the lens and shutter and again everything was in working order.   There are three aperture settings  - Small, Medium and Large - that are achieved by a rotating ring of circular holes, much as in some of the 60's plastic cameras (i.e. the Lomo Diana).   The shutter has three settings - a short exposure (perhaps 1/200th of a second based on results, but it's really hard to say), a typical "bulb" exposure and press to open, press to close mode.  Clearly this camera is geared for the long exposure.&lt;br /&gt;&lt;br /&gt;At some point in it's life it had been converted from 6x9 to 6x6.  Presumably this was done for reasons of economy.   This conversion would increase the camera from 8 to 12 shots per roll of 120 film.  The means of conversion were rather brutal however, two 1.5cm strips of some kind of coated plywood were glued into either side of the frame window inside the body. &lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/tealeg/4493630622/" title="Greyhound During 3 by tealeg, on Flickr"&gt;&lt;img src="http://farm5.static.flickr.com/4005/4493630622_70103cc591.jpg" width="375" height="500" alt="Greyhound During 3" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt; Worse still, in order to show the 6x6 frame numbers on the back of the film instead of the 6x9 ones a new window had been cut out of the brass back of the camera, a small red plastic insert was glued in to act as a new window and the original window had been covered with Elastoplast. &lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/tealeg/4493629518/" title="Greyhound During 2 by tealeg, on Flickr"&gt;&lt;img src="http://farm5.static.flickr.com/4037/4493629518_147d30a0f3.jpg" width="500" height="375" alt="Greyhound During 2" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;As the damage was already done I had no hesitation in removing the modifications and taking the camera back by to it's original 6x9 frame size.  I cut the improvised frame blinds out with a penknife and removed the Elastoplast and the plastic window.  I resealed the cut window with heavy duty electrical tape and ensured it didn't allow any light through.&lt;br /&gt;&lt;br /&gt;Finally I thoroughly cleaned the interior of the camera and tidied up any bare or reflective spots that might effect an image.&lt;br /&gt;At this point the camera was in principal ready to use.  The next day I loaded it with Kodak T-Max 100 black and white negative 120 roll film and headed into central Munich.  Today I unloaded the film, reeled it onto a Jobo spool, put it in a daylight tank and developed it in Ilford LC-29 for seven and a half minutes.  Here are the results:&lt;br /&gt;&lt;br /&gt; &lt;a href="http://www.flickr.com/photos/tealeg/4493074827/" title="Ensign Grayhound 1 by tealeg, on Flickr"&gt;&lt;img src="http://farm5.static.flickr.com/4051/4493074827_d198a37e99.jpg" width="500" height="332" alt="Ensign Grayhound 1" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/tealeg/4493713280/" title="Ensign Grayhound 2 by tealeg, on Flickr"&gt;&lt;img src="http://farm5.static.flickr.com/4063/4493713280_3f5c328847.jpg" width="500" height="329" alt="Ensign Grayhound 2" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/tealeg/4493773252/" title="Ensign Grayhound 3 by tealeg, on Flickr"&gt;&lt;img src="http://farm5.static.flickr.com/4069/4493773252_a887dbe27d.jpg" width="330" height="500" alt="Ensign Grayhound 3" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/tealeg/4493147713/" title="Ensign Grayhound 5 by tealeg, on Flickr"&gt;&lt;img src="http://farm5.static.flickr.com/4008/4493147713_3bb2ce68d6.jpg" width="333" height="500" alt="Ensign Grayhound 5" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Nothing spectacular.  The camera is very hard to hand-hold and the primitive controls are really not up to any really serious work, but still it feel satisfying to have coaxed this old camera back to life, and there is a certain sentimental feel to taking photos with your Granddad's 80 year old camera.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/120527653504992986-166239365132198663?l=tealeg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tealeg.blogspot.com/feeds/166239365132198663/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=120527653504992986&amp;postID=166239365132198663' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/120527653504992986/posts/default/166239365132198663'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/120527653504992986/posts/default/166239365132198663'/><link rel='alternate' type='text/html' href='http://tealeg.blogspot.com/2010/04/project-greyhound-my-granddad.html' title='Project greyhound: My Granddad&apos;s Camera'/><author><name>Geoff Teale</name><uri>http://www.blogger.com/profile/15745446337578770673</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm5.static.flickr.com/4060/4493600612_8550769170_t.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-120527653504992986.post-1670775954940632570</id><published>2010-04-05T07:21:00.000-07:00</published><updated>2010-04-05T07:22:07.358-07:00</updated><title type='text'>No bicycle maintenance</title><content type='html'>Still waiting on parts to show up from the USA.   Will update here when I have made progress.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/120527653504992986-1670775954940632570?l=tealeg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tealeg.blogspot.com/feeds/1670775954940632570/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=120527653504992986&amp;postID=1670775954940632570' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/120527653504992986/posts/default/1670775954940632570'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/120527653504992986/posts/default/1670775954940632570'/><link rel='alternate' type='text/html' href='http://tealeg.blogspot.com/2010/04/no-bicycle-maintenance.html' title='No bicycle maintenance'/><author><name>Geoff Teale</name><uri>http://www.blogger.com/profile/15745446337578770673</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-120527653504992986.post-6983616993796865517</id><published>2010-03-23T13:04:00.000-07:00</published><updated>2010-03-23T13:16:27.832-07:00</updated><title type='text'>Bicylcle maintenance .. Part II</title><content type='html'>I've been working too hard this last week or so (most evenings and a little at the weekend too).  Nasty little data conversion tasks are an ongoing theme - to much human controlled data means lots of special cases and a never ending stream of little problems.  Ho hum.&lt;br /&gt;&lt;br /&gt;However, I am happy to report that &lt;a href="http://derailleurhanger.com/"&gt;DerailleurHanger.com&lt;/a&gt; came through on their online offer and identified the correct part for my bike from my photos.  The internet is a wonderful place - it allows companies to exist that are incredibly specialised by extending their catchment area to a global market.  &lt;br /&gt;&lt;br /&gt;So my experiences so far are good.  I've found two online shops I'm very happy with, but I am afraid I hope that I don't need to be a customer again any time soon.   Chain rivets and derailleur hanger ordered and my bike is preped and ready to have that new rear deraileur fitted when they arrive.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/120527653504992986-6983616993796865517?l=tealeg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tealeg.blogspot.com/feeds/6983616993796865517/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=120527653504992986&amp;postID=6983616993796865517' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/120527653504992986/posts/default/6983616993796865517'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/120527653504992986/posts/default/6983616993796865517'/><link rel='alternate' type='text/html' href='http://tealeg.blogspot.com/2010/03/bicylcle-maintenance-part-ii.html' title='Bicylcle maintenance .. Part II'/><author><name>Geoff Teale</name><uri>http://www.blogger.com/profile/15745446337578770673</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-120527653504992986.post-3610746132155880979</id><published>2010-03-21T10:42:00.001-07:00</published><updated>2010-03-21T10:54:17.137-07:00</updated><title type='text'>Bicylcle maintenance</title><content type='html'>Those of you who follow me on Twitter will be well aware that back in February (on my birthday no less!) my bike was vandalised.   Some enterprising mind burdoned, no doubt, by the unending pressures of modern life, decided to releave a little stress by kicking my rear deraileur through the spokes of my back wheel.   &lt;br /&gt;&lt;br /&gt;I thought breifly about having a bike shop repair the resulting damage but instead I decided I would repair it myself.  I bought a new Shimano deraileur unit, a set of Super-B bike tools and a Haynes bike repair manual.&lt;br /&gt;&lt;br /&gt;Today I finally got round to working on the bike.  Dilligently I cleaned the bike and then used the chain rivet remover to break my chain.  Problem number 1.  Shimano UG, HG and IG chains use rivets that leave a bigger hole when removed than when put in  - I need to buy some special replacement rivets to rejoing the chain.   Bugger...  still, I pressed on and removed the bucked and broken deraileur, only to find that the deraileur hanger is both hideously bent and the thread holding the deraileur has shredded as a result.   So now I need a new deraileur hanger - trouble is, these seem to be very hard to find - in principle every bike can have a differently shapped hanger and the manufacturer of my bike seems not to bother to sell parts.&lt;br /&gt;&lt;br /&gt;Big fat arse!   &lt;br /&gt;&lt;br /&gt;So..  my next best bet is to contact &lt;a href="http://derailleurhanger.com/"&gt;http://deraileurhanger.com&lt;/a&gt; - they specialise in selling just this part.  Even they don't list my bike (even though it's one of Germany's biggest brands), however, they do let you send them pictures and see if they can find a match. &lt;br /&gt;&lt;br /&gt;On the upside I am learning a lot about how modern bikes are constructed and how to maintain them.  As a new father in a household where bikes are the primary means of transport for spring, summer and autumn time, I doubt this will be the last time I need to be involved in bike repair work.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/120527653504992986-3610746132155880979?l=tealeg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tealeg.blogspot.com/feeds/3610746132155880979/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=120527653504992986&amp;postID=3610746132155880979' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/120527653504992986/posts/default/3610746132155880979'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/120527653504992986/posts/default/3610746132155880979'/><link rel='alternate' type='text/html' href='http://tealeg.blogspot.com/2010/03/bicylcle-maintenance.html' title='Bicylcle maintenance'/><author><name>Geoff Teale</name><uri>http://www.blogger.com/profile/15745446337578770673</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-120527653504992986.post-7520281522223838427</id><published>2010-03-02T13:29:00.001-08:00</published><updated>2010-03-02T13:29:15.416-08:00</updated><title type='text'>Voigtländer Vitomatic II</title><content type='html'>&lt;style type="text/css"&gt;.flickr-photo { border: solid 2px #000000; }.flickr-yourcomment { }.flickr-frame { text-align: left; padding: 3px; }.flickr-caption { font-size: 0.8em; margin-top: 0px; }&lt;/style&gt;&lt;div class="flickr-frame"&gt;	&lt;a href="http://www.flickr.com/photos/deney/3888370299/" title="photo sharing"&gt;&lt;img src="http://farm4.static.flickr.com/3495/3888370299_8bf302ea38.jpg" class="flickr-photo" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;	&lt;span class="flickr-caption"&gt;&lt;a href="http://www.flickr.com/photos/deney/3888370299/"&gt;Voigtländer Vitomatic II&lt;/a&gt;, originally uploaded by &lt;a href="http://www.flickr.com/people/deney/"&gt;de ney&lt;/a&gt;.&lt;/span&gt;&lt;/div&gt;				&lt;p class="flickr-yourcomment"&gt;	I've  purchased one of these on E-bay for the princely sum of 20€.   This is essentially the same as the Voigtlaender Vito CL I have been using recently but with a coupled rangefinder and with the meter mirrored in the viewfinder.  &lt;br /&gt;&lt;br /&gt;Ebay listing suggests it's fully functional, and given the classic West-German build quality of these late 1950s / early 1960s Voitglaenders I have high hopes.   &lt;br /&gt;&lt;br /&gt;To date I haven't really found the "perfect" 35mm camera.  In 120 format I think my Bronica RF645 is the one.   I suspect the 35mm camera would be similar.   To be a really comfortable, natural experience I need a lightmeter, preferably visible in the view finder, a decent rangefinder and an excellent lens - this Vitomatic might fit the bill.   An East German Zeiss Werra IV might also fit the bill, but they're a little rarer and command a higher price so I have not yet had the funds or opportunity to find out.    Talking of which, Zeiss-Ikon Contax and Leica M's (and Nikon and Canon copies) are obvious contenders but alas they have names and reputations that carry an unreasonable price.     At a push I might one day find the funds to buy one of the new-fangled Besa R4M or R3M models.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/120527653504992986-7520281522223838427?l=tealeg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tealeg.blogspot.com/feeds/7520281522223838427/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=120527653504992986&amp;postID=7520281522223838427' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/120527653504992986/posts/default/7520281522223838427'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/120527653504992986/posts/default/7520281522223838427'/><link rel='alternate' type='text/html' href='http://tealeg.blogspot.com/2010/03/voigtlander-vitomatic-ii.html' title='Voigtländer Vitomatic II'/><author><name>Geoff Teale</name><uri>http://www.blogger.com/profile/15745446337578770673</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm4.static.flickr.com/3495/3888370299_8bf302ea38_t.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-120527653504992986.post-4515830385791111105</id><published>2010-01-13T00:09:00.000-08:00</published><updated>2010-01-13T00:11:06.898-08:00</updated><title type='text'>Occams Razor</title><content type='html'>We are amused: &lt;br /&gt;&lt;br /&gt;&lt;img src="http://www.scarmig.com/occamsrazor.gif"&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Doubt Occam (a monk!)  would have appreciated this use, though it is a perfectly good application of the idea.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/120527653504992986-4515830385791111105?l=tealeg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tealeg.blogspot.com/feeds/4515830385791111105/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=120527653504992986&amp;postID=4515830385791111105' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/120527653504992986/posts/default/4515830385791111105'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/120527653504992986/posts/default/4515830385791111105'/><link rel='alternate' type='text/html' href='http://tealeg.blogspot.com/2010/01/occams-razor.html' title='Occams Razor'/><author><name>Geoff Teale</name><uri>http://www.blogger.com/profile/15745446337578770673</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-120527653504992986.post-4548165648908213274</id><published>2010-01-10T02:30:00.001-08:00</published><updated>2010-01-10T02:30:23.669-08:00</updated><title type='text'>If I had a garden this is what I'd grow - 2010-01-09 at 11-28-51</title><content type='html'>&lt;style type="text/css"&gt;.flickr-photo { border: solid 2px #000000; }.flickr-yourcomment { }.flickr-frame { text-align: left; padding: 3px; }.flickr-caption { font-size: 0.8em; margin-top: 0px; }&lt;/style&gt;&lt;div class="flickr-frame"&gt;	&lt;a href="http://www.flickr.com/photos/tealeg/4259833093/" title="photo sharing"&gt;&lt;img src="http://farm5.static.flickr.com/4007/4259833093_558644f96e.jpg" class="flickr-photo" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;	&lt;span class="flickr-caption"&gt;&lt;a href="http://www.flickr.com/photos/tealeg/4259833093/"&gt;If I had a garden this is what I'd grow - 2010-01-09 at 11-28-51&lt;/a&gt;, originally uploaded by &lt;a href="http://www.flickr.com/people/tealeg/"&gt;tealeg&lt;/a&gt;.&lt;/span&gt;&lt;/div&gt;				&lt;p class="flickr-yourcomment"&gt;	This photo seems to be getting a rather staggering amount of attention on Flickr.   Once again I suspect that the key to getting Flickr hits is SEO not the photographs inate qualities.&lt;br /&gt;&lt;br /&gt;Last time I got this much attention was for a picture that had Fedora and Thinkpad in it's comments.   This time around I think it's Lisp and Emacs that are driving the hits.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/120527653504992986-4548165648908213274?l=tealeg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tealeg.blogspot.com/feeds/4548165648908213274/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=120527653504992986&amp;postID=4548165648908213274' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/120527653504992986/posts/default/4548165648908213274'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/120527653504992986/posts/default/4548165648908213274'/><link rel='alternate' type='text/html' href='http://tealeg.blogspot.com/2010/01/if-i-had-garden-this-is-what-i-grow.html' title='If I had a garden this is what I&amp;#39;d grow - 2010-01-09 at 11-28-51'/><author><name>Geoff Teale</name><uri>http://www.blogger.com/profile/15745446337578770673</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm5.static.flickr.com/4007/4259833093_558644f96e_t.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-120527653504992986.post-5375987691626951212</id><published>2010-01-10T00:31:00.000-08:00</published><updated>2010-01-10T02:20:45.937-08:00</updated><title type='text'>HTML5 and all that</title><content type='html'>So..&lt;br /&gt;&lt;br /&gt;Firstly a quick update re: clojure.  I'm still using it, productively and occasionally frustraitedly.   Most frustration comes from my lack of available time and the relative newness of the language.  Now Clojure is 2 years old there are often libraries are available to do things in a way idiomatic to Clojure rather than just using Java libraries directly, however there's no a great deal of documentation of examples for these libraries.   I suspect these frustrations will only disapear with time.  XML parsing and processing in particular seems a little trickier than it should be given the good built in support and the given that XML is almost a LISP datastructure to start with.   Ho hum..&lt;br /&gt;&lt;br /&gt;Anyhow, right now I am taking some time to make myself familiar with HTML5.  So far so good - it seems a sensible, pragmatic and useful upgrade to the the markup and API standards, with several intreging operunities to move away from annoying plugin technology (Flash and Google Gears spring to mind).   I come more from the XHTML camp than the HTML 4 camp (though I have been writing HTML since the mid 1990s) so I am a little disappointed that HTML5 seems to move us to a situation where HTML as valid XML is seen a backwards compatibility issue (please let me know if that's a false impression!).&lt;br /&gt;&lt;br /&gt;Naturally when looking into these things I am working on small example files, and by extension that means I am using nxml mode in Emacs.   That means I need to get a relax-ng setup for HTML5, I started doing this hit a bump in the first few seconds and in the first google search I hit a ready made solution.  Edward O'Connor has put together &lt;a href="http://github.com/hober/html5-el"&gt;html5-el&lt;/a&gt; for which I am extremely grateful.   Thanks Edward!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/120527653504992986-5375987691626951212?l=tealeg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tealeg.blogspot.com/feeds/5375987691626951212/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=120527653504992986&amp;postID=5375987691626951212' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/120527653504992986/posts/default/5375987691626951212'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/120527653504992986/posts/default/5375987691626951212'/><link rel='alternate' type='text/html' href='http://tealeg.blogspot.com/2010/01/html5-and-all-that.html' title='HTML5 and all that'/><author><name>Geoff Teale</name><uri>http://www.blogger.com/profile/15745446337578770673</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-120527653504992986.post-5192175950574849153</id><published>2009-03-27T03:37:00.000-07:00</published><updated>2009-03-27T03:40:09.791-07:00</updated><title type='text'>Mac foo I learned today</title><content type='html'>Long time no post! Ho hum, been busy as ever. &lt;br /&gt;&lt;br /&gt;Anyhow, for my own benefit just wanted to write down some Mac foo I learned today.&lt;br /&gt;&lt;br /&gt;I was searching for the Mac equivalent of the Linux "eject" command.  Lots of people online are spouting off about needing to reboot their macs and hold down keys to eject disks that aren't recognised, but what you really need is:&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;hdiutil eject /dev/disk1&lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/120527653504992986-5192175950574849153?l=tealeg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tealeg.blogspot.com/feeds/5192175950574849153/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=120527653504992986&amp;postID=5192175950574849153' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/120527653504992986/posts/default/5192175950574849153'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/120527653504992986/posts/default/5192175950574849153'/><link rel='alternate' type='text/html' href='http://tealeg.blogspot.com/2009/03/mac-foo-i-learned-today.html' title='Mac foo I learned today'/><author><name>Geoff Teale</name><uri>http://www.blogger.com/profile/15745446337578770673</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-120527653504992986.post-5568580777113798868</id><published>2009-01-13T13:43:00.000-08:00</published><updated>2009-01-13T13:52:30.862-08:00</updated><title type='text'>Some good Clojure news, some bad Clojure news</title><content type='html'>So...  first the bad news.&lt;br /&gt;&lt;br /&gt;I've had to drop the Qt port of my little Clojure recruitment database.  I was just hitting too many problems using Qt-Jambi and it was taking too long.   The client needed a working database ASAP and I wasn't gonna get there.  At the same time I also learned to use Apple's Core Data on Mac Os X 10.5 (which my client is running) and I managed to turn the bulk of the project around in an evening.   It was one of those evenings where I couldn't sleep and in a way I am just glad to get the database out there and running - especially as "the client" is also my girlfrend :-)&lt;br /&gt;&lt;br /&gt;The good news comes in two forms.  One, getting the DB off my plate means I have more evening time to play with more interesting Clojure projects; two another Beta version of &lt;a href="http://blog.thinkrelevance.com/2009/1/13/programming-clojure-beta-5-is-out"&gt;Stuart Halloway's book "Programming Clojure" came out.&lt;/a&gt;   I intend to read some of the new chapters, particularly the one on Swing (which until now I have found clunky).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/120527653504992986-5568580777113798868?l=tealeg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tealeg.blogspot.com/feeds/5568580777113798868/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=120527653504992986&amp;postID=5568580777113798868' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/120527653504992986/posts/default/5568580777113798868'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/120527653504992986/posts/default/5568580777113798868'/><link rel='alternate' type='text/html' href='http://tealeg.blogspot.com/2009/01/some-good-clojure-news-some-bad-clojure.html' title='Some good Clojure news, some bad Clojure news'/><author><name>Geoff Teale</name><uri>http://www.blogger.com/profile/15745446337578770673</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-120527653504992986.post-5962029607811434044</id><published>2009-01-09T09:29:00.000-08:00</published><updated>2009-01-09T09:31:03.705-08:00</updated><title type='text'></title><content type='html'>So, for fun, I did this little quiz:&lt;br /&gt;&lt;br /&gt;http://www.gotoquiz.com/do_you_have_biblical_morals&lt;br /&gt;&lt;br /&gt;Here are the results, I am sure you'll agree, shocking results.   Who knew :-)&lt;br /&gt;&lt;br /&gt;&lt;div style="width: 320px; border: 1px solid gray; padding: 6px; font: normal 12px arial, verdana, sans-serif; color: black; background-color: white;"&gt;&lt;b style="color: black; font: bold 20px 'Times New Roman', serif; display: block; margin-bottom: 8px;"&gt;Your morality is 0% in line with that of the bible.&lt;/b&gt; &lt;div style="width: 200px; background: white; border: 1px solid black; text-align: left;"&gt;&lt;div style="width: 0%; background: red; font-size: 8px; line-height: 8px;"&gt;&amp;nbsp;&lt;/div&gt;&lt;/div&gt;&lt;p style="margin: 10px; border: none; background: white; color: black;"&gt;Damn you heathen!  Your book learnin' has done warped your mind.  You shall not be invited next time I sacrifice a goat.&lt;br&gt;&lt;br&gt;&lt;b&gt;&lt;a href="http://www.gotoquiz.com/do_you_have_biblical_morals" style="color: blue;"&gt;Do You Have Biblical Morals?&lt;/a&gt;&lt;br&gt;&lt;a href="http://www.gotoquiz.com/" style="color: blue;"&gt;Take More Quizzes&lt;/a&gt;&lt;/b&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/120527653504992986-5962029607811434044?l=tealeg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tealeg.blogspot.com/feeds/5962029607811434044/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=120527653504992986&amp;postID=5962029607811434044' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/120527653504992986/posts/default/5962029607811434044'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/120527653504992986/posts/default/5962029607811434044'/><link rel='alternate' type='text/html' href='http://tealeg.blogspot.com/2009/01/so-for-fun-i-did-this-little-quiz.html' title=''/><author><name>Geoff Teale</name><uri>http://www.blogger.com/profile/15745446337578770673</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-120527653504992986.post-5497010917884349193</id><published>2008-11-30T03:00:00.000-08:00</published><updated>2008-11-30T03:15:47.797-08:00</updated><title type='text'>AOT problem solved</title><content type='html'>Thanks to the swift responses of the Clojure google group I have got past my little problem.  It was, of course, deceptively simple, but not clear to someone who doesn't do Java programming much.&lt;br /&gt;&lt;br /&gt;The problem was basically that whatever I did I could not get Clojure to recognise that the source files existed in the classpath.&lt;br /&gt;&lt;br /&gt;When you invoke java with the &lt;pre&gt;-jar&lt;/pre&gt; command line option it completely ignores the classpath (both the environment variable, or the &lt;pre&gt;-cp&lt;/pre&gt; argument.&lt;br /&gt;&lt;br /&gt;So, when compiling my code I simply switch this:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;    java -cp ./classes:./src -jar ${HOME}/src/clojure/clojure.jar ./compile.clj&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;.. to this ...&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;    java -cp ./classes:./src:${HOME}/src/clojure/clojure/jar clojure.lang.Script ./compile.clj&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;For the record the contents of &lt;pre&gt;compile.clj&lt;/pre&gt; are as follows:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;    (binding [*compile-path* "/home/gteale/src/aot_test/classes"]&lt;br /&gt;             (compile 'de.teale.test))&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;I plan to replace that with either ant or lancet shortly.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/120527653504992986-5497010917884349193?l=tealeg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tealeg.blogspot.com/feeds/5497010917884349193/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=120527653504992986&amp;postID=5497010917884349193' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/120527653504992986/posts/default/5497010917884349193'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/120527653504992986/posts/default/5497010917884349193'/><link rel='alternate' type='text/html' href='http://tealeg.blogspot.com/2008/11/aot-problem-solved.html' title='AOT problem solved'/><author><name>Geoff Teale</name><uri>http://www.blogger.com/profile/15745446337578770673</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-120527653504992986.post-7980490135396235299</id><published>2008-11-30T00:52:00.000-08:00</published><updated>2008-11-30T00:56:01.145-08:00</updated><title type='text'>Caught on a Clojure roller coaster</title><content type='html'>I was hoping to make some decent progress this weekend with my Clojure code.  The plan was to port it to the new AOT model of compilation.&lt;br /&gt;&lt;br /&gt;However, my efforts have been frustrated by me not being able to get AOT working.   I have posted my problem to the group, so hopefully there will be some solution soon.&lt;br /&gt;&lt;br /&gt;Clojure is developing so rapidly it's hard to keep up, I think that's how I got into this mess with AOT.  However, for every new problem people are finding solutions that blow me away.   This blog post details a really elegant solution to the lack of tail call optimisation for mutually recursive functions:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.windley.com/archives/2008/11/tail_optimized_mutual_recursion_in_clojure.shtml"&gt;http://www.windley.com/archives/2008/11/tail_optimized_mutual_recursion_in_clojure.shtml&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/120527653504992986-7980490135396235299?l=tealeg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tealeg.blogspot.com/feeds/7980490135396235299/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=120527653504992986&amp;postID=7980490135396235299' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/120527653504992986/posts/default/7980490135396235299'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/120527653504992986/posts/default/7980490135396235299'/><link rel='alternate' type='text/html' href='http://tealeg.blogspot.com/2008/11/caught-on-clojure-roller-coaster.html' title='Caught on a Clojure roller coaster'/><author><name>Geoff Teale</name><uri>http://www.blogger.com/profile/15745446337578770673</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-120527653504992986.post-5026297236460927504</id><published>2008-11-27T00:22:00.001-08:00</published><updated>2008-11-27T00:26:15.384-08:00</updated><title type='text'>AOT is cool, but it breaks some of the below content.</title><content type='html'>Clojure is a young language, and as such it's developing fast.   It's an exhilarating ride to be on, but sometime it means things I've written change.&lt;br /&gt;&lt;br /&gt;So, when reading the below posts, please note that the latest revisions to Clojure include the provision of Ahead-Of-Time (AOT) compilation.   This will break the compilation mechanisms I used in some of the content below.   When I get round to fixing up my programs I'll try an post revised instructions for Jar creation, till then I suggest you check out the docs &lt;a href="http://clojure.org/compilation"&gt;here&lt;/a&gt; for compilation notes.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/120527653504992986-5026297236460927504?l=tealeg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tealeg.blogspot.com/feeds/5026297236460927504/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=120527653504992986&amp;postID=5026297236460927504' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/120527653504992986/posts/default/5026297236460927504'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/120527653504992986/posts/default/5026297236460927504'/><link rel='alternate' type='text/html' href='http://tealeg.blogspot.com/2008/11/clojure-is-young-language-and-as-such.html' title='AOT is cool, but it breaks some of the below content.'/><author><name>Geoff Teale</name><uri>http://www.blogger.com/profile/15745446337578770673</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-120527653504992986.post-8705223028849992755</id><published>2008-11-09T11:29:00.000-08:00</published><updated>2008-11-09T23:21:06.551-08:00</updated><title type='text'>On Clojure - part 3 - Qt Designer files and custom slots.</title><content type='html'>So, as promised, here's a few notes on how I am using Qt Designer with Clojure.&lt;br /&gt;Some important things to remember:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;You must use Qt Designer with the QtJambi plugins installed.   The easiest way to do this is to run designer.sh (Linux / UNIX / Mac OS X) or designer.bat (Windows) from the distribution folder that QtJambi came in.   If you've got QtJambi installed as a package under Linux then you may need to check that the QtJambi plugins are correctly installed , they weren't in my case.&lt;/li&gt; &lt;br /&gt;&lt;li&gt;If you have the QtJambi plugins installed designer should be able to save .jui files instead of .ui files.&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;I don't intend to tell you how to use Qt Designer, there's a good user manual available.&lt;br /&gt;Once you've put together a UI in Designer plugging it into a clojure application is relatively simple, though there are some subtleties that took me a while to work out (along with a large chunk of time trawling #clojure logs, the wiki and various blog post - thanks to all who share their work!)&lt;br /&gt;What follows is the full source code for an incredibly simple app that uses a single QMainWindow with a Designer derived layout, I'll explain some more after the code:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;(gen-and-load-class "foo.gen.Slot"&lt;br /&gt;      :methods [["slot" [] Void]])&lt;br /&gt;&lt;br /&gt;(ns foo&lt;br /&gt;  (:import (foo Ui_MainWindow))&lt;br /&gt;  (:import (com.trolltech.qt.gui QApplication QMainWindow))&lt;br /&gt;  (:import (com.trolltech.qt.core QCoreApplication))&lt;br /&gt;  (:import (foo.gen Slot)))&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;(def slots &lt;br /&gt;     (proxy [Slot] []&lt;br /&gt;  (slot [] (prn "Slot Called"))))&lt;br /&gt;&lt;br /&gt;(defn init []&lt;br /&gt;  (QApplication/initialize (make-array String 0)))&lt;br /&gt;&lt;br /&gt;(defn exec []&lt;br /&gt;  (QApplication/exec))&lt;br /&gt;&lt;br /&gt;(defmacro qt4 [&amp; rest]&lt;br /&gt;  `(do&lt;br /&gt;     (try (init) (catch RuntimeException e# (println e#)))&lt;br /&gt;     ~@rest&lt;br /&gt;     (exec)))&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;(def Foo-main&lt;br /&gt;  (fn [&amp; args]&lt;br /&gt;    (qt4&lt;br /&gt;     (let [ui_main (new Ui_MainWindow)&lt;br /&gt;    mainWindow (new QMainWindow)]&lt;br /&gt;       (. ui_main (setupUi mainWindow))&lt;br /&gt;       (let [pushButton (. ui_main pushButton)]&lt;br /&gt;  (.. pushButton clicked (connect slots "slot()")))&lt;br /&gt;       (. mainWindow (show))))))&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;This code lives in the package "foo", in the file "Foo.clj".   If you're familiar &lt;a href="http://rpdillon.googlepages.com/creatingexecutablejarswithclojure"&gt;R.P. Dillon's guide to with making Jar's from clojure&lt;/a&gt; you'll know that Foo-main is the Main function of the resulting JAR. Notice that we also import Ui_MainWindow from the same package.  This is the generated Java code from the Designer file Ui_MainWindow.jui.  In order to generate the java code you simply run:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;    juic Ui_MainWindow.jui&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;As I want the resulting code to live in a package, "foo", I need to manually add the following line to the top of the resulting file, Ui_MainWindow.java:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;    package foo;&lt;br /&gt;&lt;/pre&gt;  &lt;br /&gt;&lt;br /&gt;We also need to arrange for this .java file to be compiled before we can use it.  How you use this depends on your build system, but you can choose to just compile it by hand when it changes (as this should be comparitevly rare).   I guess you know how, but just for completeness:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;    javac foo/Ui_MainWindow.java&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Now, the qt4 macro I've defined there is directly lifted from &lt;a href="http://briancarper.net/2008/10/31/qt4-in-lisp/"&gt;Brian Carper's blog posting on using Qt4 in Clojure&lt;/a&gt;, and again I won't go into that here.  Instead lets look at Foo-main.   Note that we create instances of both the Ui_MainWindow class from the generated java code and the QMainWindow class.  We call the setupUI method of the Ui_MainWindow class with the QMainWindow class as it's arguement (this essentially fills out the QMainWindow with the layout you put together in designer).  Note also that I reference the pushButton widget inside the Ui_MainWindow class.  &lt;br /&gt;&lt;br /&gt;The remaining interesting thing about this file is that it defines a custom slot.  Signals and Slots are fundemental to the way that Qt hangs together.  Wiring together the prexisting signals and slots is very easy and can be done either in Designer or in code (as R.P. Dillon's example shows).  Making a custom slot turns out to be rather more difficult.  I naively assumed that I could just use a proxy around the QMainWindow class and add a slot function there, but this simply doesn't work.   Instead I need to use (gen-class) to make a real class and bind a clojure function to it.  For convenience I use (gen-and-load-class) - this call generates the bytecode and loads it.  You have to pass it a fully qualifed class name - I've found it better to make it a subpackage, so I place it in foo.gen, and therefore the classname is foo.gen.Slot.  I also have to give a place holder for the slot method.  Confusingly enough I've chosen to call it "slot" here.  We pass a vector containing a vector for each method, which in turn contains a method name, a vector of arguements and a return type.   The method name will get bound to a function in the current namespace (not foo.gen, but foo) with the name &lt;ClassName&gt;-&lt;methodname&gt;.  In my example code this is contained in the proxy "slots" as the "slot" method.  It's possible to just use a normal (defn) for this mapped method, in which case the function name would be "Slot-slot", I just find the proxy cleaner.   Lastly you'll see that, back in Foo-main, I connect the pushButton's clicked signal to the custom slot, "slot" in the proxy, "slots".   I hope that's clear!&lt;br /&gt;&lt;br /&gt;Now all things being equal you should be able to make your JAR and execute the code.   I hope that helps someone avoid spending a lot of time trying to work this out.&lt;br /&gt;&lt;br /&gt;When I need to implement a custom signal I'll try and write that up too.  Till then, ta ta!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/120527653504992986-8705223028849992755?l=tealeg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tealeg.blogspot.com/feeds/8705223028849992755/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=120527653504992986&amp;postID=8705223028849992755' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/120527653504992986/posts/default/8705223028849992755'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/120527653504992986/posts/default/8705223028849992755'/><link rel='alternate' type='text/html' href='http://tealeg.blogspot.com/2008/11/on-clojure-part-3-designer-uis-and.html' title='On Clojure - part 3 - Qt Designer files and custom slots.'/><author><name>Geoff Teale</name><uri>http://www.blogger.com/profile/15745446337578770673</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-120527653504992986.post-4613791935002500068</id><published>2008-11-08T06:54:00.000-08:00</published><updated>2008-11-09T11:33:07.924-08:00</updated><title type='text'></title><content type='html'>On Clojure - part 2 - Distributing QtJambi with Clojure.&lt;br /&gt;&lt;p&gt;One of the questions I've seen coming up a few times is how to distribute clojure programs.   The obvious answer is to build executable JAR files.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;I while ago I produced a simple database application for my girlfriends recruitment business, &lt;a href="www.nrecruit.com"&gt;NRecruit&lt;/a&gt;.   I developed this using Clojure on my Arch Linux based laptop, and deployed to her MacBook running OS X Leopard.   The underlying database is sqlite3, but it could just as well be MySQL or anything else that is supported by JDBC.   For simplicity I unzip the required JAR files in the root directory of the project and then rebundle them into a single distributable JAR following &lt;a href="http://rpdillon.googlepages.com/creatingexecutablejarswithclojure"&gt;this guide.&lt;/a&gt;   &lt;/p&gt;&lt;p&gt;&lt;br /&gt;That application is in production use right now, but there have been a number of problems with the Swing based GUI.  I have been trying to address them, but I find Swing an unnecessarily painful toolkit to use.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;Several years back (circa KDE 2, and early KDE 3) I used to do some development with Qt in C++ and Ruby.   I have looked at Qt4 a couple of time before and I still feel that Qt is one of the nicest GUI toolkits out there.   So I read  &lt;a href="http://briancarper.net/2008/10/31/qt4-in-lisp/"&gt;this blog entry on using Qt4 with clojure&lt;/a&gt; with great excitement I started porting the &lt;a href="http://www.nrecruit.com"&gt;NRecruit&lt;/a&gt; database UI over to Qt.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;So far I've hit two issues.  The first one (using Qt Designer files from within Clojure) I'll address in a later post; the second one is more fundemental.  Distributing QtJambi in your jar has a few gotchas.  The most succesful approach I've found is this:&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;ul&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;li&gt; unzip the  qtjambi-4.4.3_01.jar and qtjambi-linux32-gcc-4.4.3_01.jar files in your projects root directory (where the version number and platform name vary based on the version of QtJambi you're using and the platform you're targetting).&lt;/li&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt; &lt;li&gt;When you make your jar file make sure you include the "com" and "lib" directories and the file "qtjambi-deployment.xml"&lt;/li&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/ul&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;That leaves me with what I'd describe as a "statically linked" executable (it isn't in any sense statically linked, but the effect is the same).&lt;/p&gt;&lt;p&gt;&lt;br /&gt;More later...&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/120527653504992986-4613791935002500068?l=tealeg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tealeg.blogspot.com/feeds/4613791935002500068/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=120527653504992986&amp;postID=4613791935002500068' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/120527653504992986/posts/default/4613791935002500068'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/120527653504992986/posts/default/4613791935002500068'/><link rel='alternate' type='text/html' href='http://tealeg.blogspot.com/2008/11/on-clojure-part-2-distributing-qtjambi.html' title=''/><author><name>Geoff Teale</name><uri>http://www.blogger.com/profile/15745446337578770673</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-120527653504992986.post-1995716210722232998</id><published>2008-11-08T06:31:00.000-08:00</published><updated>2008-11-09T11:33:07.931-08:00</updated><title type='text'></title><content type='html'>On Clojure - part 1.&lt;br /&gt;&lt;p&gt;After many a dalliance with R6RS compliant(ish) Scheme implementations I have found myself inevitably drawn towards as new Lisp dialect instead.   While I'm pleased to see Ikarus maturing to the state where it really is a very usable it's not what I've been using to get stuff done.   No, instead, I (like everyone else it seems) have fallen for Clojure.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;I won't harp on about Clojure - you can read about it everywhere, instead I'll just make some practical notes in the following posts.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/120527653504992986-1995716210722232998?l=tealeg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tealeg.blogspot.com/feeds/1995716210722232998/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=120527653504992986&amp;postID=1995716210722232998' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/120527653504992986/posts/default/1995716210722232998'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/120527653504992986/posts/default/1995716210722232998'/><link rel='alternate' type='text/html' href='http://tealeg.blogspot.com/2008/11/on-clojure-part-1.html' title=''/><author><name>Geoff Teale</name><uri>http://www.blogger.com/profile/15745446337578770673</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-120527653504992986.post-4331699336256694306</id><published>2008-10-09T13:04:00.001-07:00</published><updated>2008-10-09T13:04:32.888-07:00</updated><title type='text'>There is no way to peace; peace is the way. --A.J. Muste</title><content type='html'>&lt;style type="text/css"&gt;.flickr-photo { border: solid 2px #000000; }.flickr-yourcomment { }.flickr-frame { text-align: left; padding: 3px; }.flickr-caption { font-size: 0.8em; margin-top: 0px; }&lt;/style&gt;&lt;div class="flickr-frame"&gt;	&lt;a href="http://www.flickr.com/photos/tanzbar/2926886739/" title="photo sharing"&gt;&lt;img src="http://farm4.static.flickr.com/3257/2926886739_9cc6c03e2e.jpg" class="flickr-photo" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;	&lt;span class="flickr-caption"&gt;&lt;a href="http://www.flickr.com/photos/tanzbar/2926886739/"&gt;Day24 Year2&lt;/a&gt;, originally uploaded by &lt;a href="http://www.flickr.com/people/tanzbar/"&gt;Tanzbar&lt;/a&gt;.&lt;/span&gt;&lt;/div&gt;				&lt;p class="flickr-yourcomment"&gt;	Nic is not usually one for politics, but she's doing some interesting things in her second year of dayshots.  I like this a lot.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/120527653504992986-4331699336256694306?l=tealeg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tealeg.blogspot.com/feeds/4331699336256694306/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=120527653504992986&amp;postID=4331699336256694306' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/120527653504992986/posts/default/4331699336256694306'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/120527653504992986/posts/default/4331699336256694306'/><link rel='alternate' type='text/html' href='http://tealeg.blogspot.com/2008/10/there-is-no-way-to-peace-peace-is-way.html' title='There is no way to peace; peace is the way. --A.J. Muste'/><author><name>Geoff Teale</name><uri>http://www.blogger.com/profile/15745446337578770673</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm4.static.flickr.com/3257/2926886739_9cc6c03e2e_t.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-120527653504992986.post-2725916294307155570</id><published>2008-09-25T01:51:00.001-07:00</published><updated>2008-09-25T01:51:31.172-07:00</updated><title type='text'>Cool Clock</title><content type='html'>&lt;style type="text/css"&gt;.flickr-photo { border: solid 2px #000000; }.flickr-yourcomment { }.flickr-frame { text-align: left; padding: 3px; }.flickr-caption { font-size: 0.8em; margin-top: 0px; }&lt;/style&gt;&lt;div class="flickr-frame"&gt;	&lt;a href="http://www.flickr.com/photos/tanzbar/2884843543/" title="photo sharing"&gt;&lt;img src="http://farm4.static.flickr.com/3282/2884843543_827d26508b.jpg" class="flickr-photo" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;	&lt;span class="flickr-caption"&gt;&lt;a href="http://www.flickr.com/photos/tanzbar/2884843543/"&gt;Day10 Year2&lt;/a&gt;, originally uploaded by &lt;a href="http://www.flickr.com/people/tanzbar/"&gt;Tanzbar&lt;/a&gt;.&lt;/span&gt;&lt;/div&gt;				&lt;p class="flickr-yourcomment"&gt;	Long time no post.  &lt;br /&gt;&lt;br /&gt;I don't have much to say right now, but Nic made this wonderful clock picture, and I think we should make it :)&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/120527653504992986-2725916294307155570?l=tealeg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tealeg.blogspot.com/feeds/2725916294307155570/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=120527653504992986&amp;postID=2725916294307155570' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/120527653504992986/posts/default/2725916294307155570'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/120527653504992986/posts/default/2725916294307155570'/><link rel='alternate' type='text/html' href='http://tealeg.blogspot.com/2008/09/cool-clock.html' title='Cool Clock'/><author><name>Geoff Teale</name><uri>http://www.blogger.com/profile/15745446337578770673</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm4.static.flickr.com/3282/2884843543_827d26508b_t.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-120527653504992986.post-3080896418984475549</id><published>2008-08-26T01:18:00.000-07:00</published><updated>2008-08-26T01:28:47.898-07:00</updated><title type='text'>What's next?  Ypsilon</title><content type='html'>So...&lt;br /&gt;&lt;br /&gt;For a good long while I have been tracking the &lt;a href="http://www.cs.indiana.edu/~aghuloum/ikarus/"&gt;Ikarus&lt;/a&gt; Scheme implementation.  I like it because it tries to comply with &lt;a href="http://www.r6rs.org/"&gt;R&lt;sup&gt;6&lt;/sup&gt;RS&lt;/a&gt;, compiles to some pretty quick code and recently added 64bit support.  I like it so much that I even package &lt;a href="http://aur.archlinux.org/packages.php?SeB=m&amp;K=tealeg"&gt;it and a number of related libraries&lt;/a&gt; for &lt;a href="http://www.archlinux.org"&gt;Arch Linux&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;However, Ikarus has a single annoyance for me - it is not easy to extend it with C libraries.  You can of course do this by running a C program that allows calls to the library in question via socket or pipe communication - but I don't really like that model.    For this reason I am quite excited to come across &lt;a href="http://code.google.com/p/ypsilon/"&gt;Ypsilon&lt;/a&gt;, an &lt;a href="http://www.r6rs.org/"&gt;R&lt;sup&gt;6&lt;/sup&gt;RS&lt;/a&gt; compliant Scheme implementation with a Multi-Core optomised garbage collection routine, simple FFI and support for Linux, Mac OS X and Windows.&lt;br /&gt;&lt;br /&gt;As soon as I have found time to have a play I will write more!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/120527653504992986-3080896418984475549?l=tealeg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tealeg.blogspot.com/feeds/3080896418984475549/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=120527653504992986&amp;postID=3080896418984475549' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/120527653504992986/posts/default/3080896418984475549'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/120527653504992986/posts/default/3080896418984475549'/><link rel='alternate' type='text/html' href='http://tealeg.blogspot.com/2008/08/whats-next-ypsilon.html' title='What&apos;s next?  Ypsilon'/><author><name>Geoff Teale</name><uri>http://www.blogger.com/profile/15745446337578770673</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-120527653504992986.post-2867843434702219386</id><published>2008-08-21T07:28:00.000-07:00</published><updated>2008-08-21T07:29:23.275-07:00</updated><title type='text'>GPL Compliance Guide</title><content type='html'>This is a very useful document!&lt;br /&gt;&lt;a href=" http://www.softwarefreedom.org/resources/2008/compliance-guide.html"&gt;&lt;br /&gt;http://www.softwarefreedom.org/resources/2008/compliance-guide.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/120527653504992986-2867843434702219386?l=tealeg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tealeg.blogspot.com/feeds/2867843434702219386/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=120527653504992986&amp;postID=2867843434702219386' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/120527653504992986/posts/default/2867843434702219386'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/120527653504992986/posts/default/2867843434702219386'/><link rel='alternate' type='text/html' href='http://tealeg.blogspot.com/2008/08/gpl-compliance-guide.html' title='GPL Compliance Guide'/><author><name>Geoff Teale</name><uri>http://www.blogger.com/profile/15745446337578770673</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-120527653504992986.post-7556289035307494209</id><published>2008-08-14T01:02:00.000-07:00</published><updated>2008-08-14T01:19:40.356-07:00</updated><title type='text'>The danger of superfluity</title><content type='html'>There is an application that I have been working as an employee and a consultant for five years now.   In the course of development I routinely run into a dialog in this application that handles errors at a global (or at least global to the GUI) level.&lt;br /&gt;&lt;br /&gt;This dialog is very useful, it stops the GUI bombing out totally and presents the user with the sad news that something has gone wrong and allows them to report such an error.  If you are a developer it even lets you enter debugging land.   Today however I came across a subtle issue with this dialog that I believe has been there for several years.   The dialog is headlined with the phrase "Unknown Error".&lt;br /&gt;&lt;br /&gt;"Unknown Error?"  "What's wrong with that?" I hear you cry.  Well, we're all accustomed to seeing such messages, indeed I believe this text appears in this dialog because someone (possibly even me) saw it in other examples, and I wouldn't bother to post here if this problem wasn't one that extended beyond the domain of a commercial app in a very limited market.   My issue is this, what is the value of the word "Unknown"?&lt;br /&gt;&lt;br /&gt;Does it reassure the user?  No, quite the opposite.&lt;br /&gt;&lt;br /&gt;Does it distinguish the error case?  No, if it were a known error then we should either have handled it of at least linked the user back to some information about the bug (for various reasons this isn't possible in the real world scenario for this application).  In practice if a user reports this bug however they will often find out that this really is a "known error" from the support staff.    &lt;br /&gt;&lt;br /&gt;So what does the word "Unknown" get us?  At best it adds nothing, at worst it scares the users and can even be plain wrong.   Perhaps we would all do well to think a little more about what we say to the users&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/120527653504992986-7556289035307494209?l=tealeg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tealeg.blogspot.com/feeds/7556289035307494209/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=120527653504992986&amp;postID=7556289035307494209' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/120527653504992986/posts/default/7556289035307494209'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/120527653504992986/posts/default/7556289035307494209'/><link rel='alternate' type='text/html' href='http://tealeg.blogspot.com/2008/08/danger-of-superfluity.html' title='The danger of superfluity'/><author><name>Geoff Teale</name><uri>http://www.blogger.com/profile/15745446337578770673</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-120527653504992986.post-8409039401374526540</id><published>2008-07-04T00:56:00.000-07:00</published><updated>2008-07-04T01:07:54.350-07:00</updated><title type='text'>On the subject of Bill Gates retirement</title><content type='html'>I've waited a long time to talk about this.  I was all ready to rant and rave about the torrent of lies that the media would put out.  As it turned out, however, one of the nice things over the last couple of weeks is that there have been pockets of journalists who've have taken the time to actually accurately portray Bill Gates career in the computer industry.   In the past journalists and news outlets have seen fit to repeat the myths that Bill and Microsoft have propagated.   On his retirement though they seem happy to point out that Microsoft is not responsible for most of the innovations it gives it self credit for, and even fewer that the general public give it credit for, and contrary to popular belief Bill Gates is not one of the greatest technical minds of his generation.   What he is a great business man, and his company has succeeded by putting business  first, often at the direct expense of innovation and technical improvement.&lt;br /&gt;&lt;br /&gt;However you feel about the man however he is one of the defining figures of his generation and as an economic entity he has the power to change the world, and I'm glad to say in his retirement he intends to spend more time using his fortune to rid the world of some of it's real problems through the Gates Foundation.&lt;br /&gt;&lt;br /&gt;As for the computer industry, well the era of Microsoft's domination is slowly ebbing away, but I'll leave it to Richard Stallman as ever to present the ethical compass for the industry in this rather nice piece at the BBC:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://news.bbc.co.uk/1/hi/technology/7487060.stm"&gt;http://news.bbc.co.uk/1/hi/technology/7487060.stm&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/120527653504992986-8409039401374526540?l=tealeg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tealeg.blogspot.com/feeds/8409039401374526540/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=120527653504992986&amp;postID=8409039401374526540' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/120527653504992986/posts/default/8409039401374526540'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/120527653504992986/posts/default/8409039401374526540'/><link rel='alternate' type='text/html' href='http://tealeg.blogspot.com/2008/07/on-subject-of-bill-gates-retirement.html' title='On the subject of Bill Gates retirement'/><author><name>Geoff Teale</name><uri>http://www.blogger.com/profile/15745446337578770673</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-120527653504992986.post-4363001759337340943</id><published>2008-07-03T14:32:00.000-07:00</published><updated>2008-07-03T14:53:33.013-07:00</updated><title type='text'></title><content type='html'>In this new fangled age of TrueType support in Emacs it's really useful to know the names of the Monospace fonts installed on your system in the format that Emacs understands.  If you are on a Linux/UNIX system running Xorg with fontconfig installed then add this function to your .emacs file &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="hl"&gt;&lt;span class="sym"&gt;(&lt;/span&gt;&lt;span class="kwa"&gt;defun list&lt;/span&gt;-monospace-truetype-fonts &lt;span class="sym"&gt;()&lt;/span&gt;&lt;br /&gt;  &lt;span class="str"&gt;&amp;quot;Provide a list of available monospaced truetype fonts on this&lt;/span&gt;&lt;br /&gt;&lt;span class="str"&gt;   machine&amp;quot;&lt;/span&gt;&lt;br /&gt;  &lt;span class="sym"&gt;(&lt;/span&gt;interactive&lt;span class="sym"&gt;)&lt;/span&gt;&lt;br /&gt;  &lt;span class="sym"&gt;(&lt;/span&gt;&lt;span class="kwa"&gt;set&lt;/span&gt;-buffer &lt;span class="sym"&gt;(&lt;/span&gt;get-buffer-create &lt;span class="str"&gt;&amp;quot;Monospaced Fonts&amp;quot;&lt;/span&gt;&lt;span class="sym"&gt;))&lt;/span&gt;&lt;br /&gt;  &lt;span class="sym"&gt;(&lt;/span&gt;call-process-shell-&lt;span class="kwa"&gt;command&lt;/span&gt; &lt;span class="str"&gt;&amp;quot;fc-list :spacing=mono:scalable=true family | sort&amp;quot;&lt;/span&gt; nil t&lt;span class="sym"&gt;)&lt;/span&gt;&lt;br /&gt;  &lt;span class="sym"&gt;(&lt;/span&gt;&lt;span class="kwa"&gt;setq&lt;/span&gt; buffer-&lt;span class="kwa"&gt;read&lt;/span&gt;-only t&lt;span class="sym"&gt;)&lt;/span&gt;&lt;br /&gt;  &lt;span class="sym"&gt;(&lt;/span&gt;switch-to-buffer-other-window &lt;span class="sym"&gt;(&lt;/span&gt;current-buffer&lt;span class="sym"&gt;)))&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;You can set these fonts in a number of ways, currently I am getting the most joy using this form:&lt;br /&gt;&lt;br /&gt;&lt;pre class="hl"&gt;&lt;span class="sym"&gt;(&lt;/span&gt;&lt;span class="kwa"&gt;defun&lt;/span&gt; safe-&lt;span class="kwa"&gt;set&lt;/span&gt;-initial-font &lt;span class="sym"&gt;(&lt;/span&gt;fontstring&lt;span class="sym"&gt;)&lt;/span&gt;&lt;br /&gt;  &lt;span class="str"&gt;&amp;quot;Set the default frame font&amp;quot;&lt;/span&gt;&lt;br /&gt;  &lt;span class="sym"&gt;(&lt;/span&gt;interactive &lt;span class="str"&gt;&amp;quot;s&amp;quot;&lt;/span&gt;&lt;span class="sym"&gt;)&lt;/span&gt;&lt;br /&gt;  &lt;span class="sym"&gt;(&lt;/span&gt;&lt;span class="kwa"&gt;setq&lt;/span&gt; initial-frame-alist&lt;br /&gt; `&lt;span class="sym"&gt;((&lt;/span&gt;font . &lt;span class="sym"&gt;,&lt;/span&gt;fontstring&lt;span class="sym"&gt;)&lt;/span&gt;&lt;br /&gt;   &lt;span class="sym"&gt;(&lt;/span&gt;background-color . &lt;span class="sym"&gt;,(&lt;/span&gt;face-background &lt;span class="sym"&gt;'&lt;/span&gt;default&lt;span class="sym"&gt;))&lt;/span&gt;&lt;br /&gt;   &lt;span class="sym"&gt;(&lt;/span&gt;foreground-color . &lt;span class="sym"&gt;,(&lt;/span&gt;face-foreground &lt;span class="sym"&gt;'&lt;/span&gt;default&lt;span class="sym"&gt;))&lt;/span&gt;&lt;br /&gt;   &lt;span class="sym"&gt;(&lt;/span&gt;horizontal-scroll-bars . nil&lt;span class="sym"&gt;)&lt;/span&gt;&lt;br /&gt;   &lt;span class="sym"&gt;(&lt;/span&gt;vertical-scroll-bars . nil&lt;span class="sym"&gt;)&lt;/span&gt;&lt;br /&gt;   &lt;span class="sym"&gt;(&lt;/span&gt;menu-bar-lines . &lt;span class="num"&gt;0&lt;/span&gt;&lt;span class="sym"&gt;)&lt;/span&gt;&lt;br /&gt;   &lt;span class="sym"&gt;(&lt;/span&gt;height . &lt;span class="num"&gt;40&lt;/span&gt;&lt;span class="sym"&gt;)&lt;/span&gt;&lt;br /&gt;   &lt;span class="sym"&gt;(&lt;/span&gt;width . &lt;span class="num"&gt;80&lt;/span&gt;&lt;span class="sym"&gt;)&lt;/span&gt;&lt;br /&gt;   &lt;span class="sym"&gt;(&lt;/span&gt;cursor-color . &lt;span class="str"&gt;&amp;quot;red&amp;quot;&lt;/span&gt;&lt;span class="sym"&gt;)&lt;/span&gt;&lt;br /&gt;   &lt;span class="sym"&gt;(&lt;/span&gt;mouse-color . &lt;span class="str"&gt;&amp;quot;green&amp;quot;&lt;/span&gt;&lt;span class="sym"&gt;)))&lt;/span&gt;&lt;br /&gt;  &lt;span class="sym"&gt;(&lt;/span&gt;&lt;span class="kwa"&gt;setq&lt;/span&gt; default-frame-alist &lt;span class="sym"&gt;(&lt;/span&gt;copy-alist initial-frame-alist&lt;span class="sym"&gt;)))&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;That's pretty nasty, but it gets round a bug where opening a new frame results in a different font being used.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/120527653504992986-4363001759337340943?l=tealeg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tealeg.blogspot.com/feeds/4363001759337340943/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=120527653504992986&amp;postID=4363001759337340943' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/120527653504992986/posts/default/4363001759337340943'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/120527653504992986/posts/default/4363001759337340943'/><link rel='alternate' type='text/html' href='http://tealeg.blogspot.com/2008/07/in-this-new-fangled-age-of-truetype.html' title=''/><author><name>Geoff Teale</name><uri>http://www.blogger.com/profile/15745446337578770673</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-120527653504992986.post-4242739633260731544</id><published>2008-07-02T01:13:00.000-07:00</published><updated>2008-07-02T01:35:19.062-07:00</updated><title type='text'>Things that happened yesterday</title><content type='html'>&lt;span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://farm4.static.flickr.com/3085/2447245514_2f4c6a85a0_b.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 160px;" src="http://farm4.static.flickr.com/3085/2447245514_2f4c6a85a0_b.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://farm3.static.flickr.com/2092/2277581681_0f7367f2ff_b.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 160px;" src="http://farm3.static.flickr.com/2092/2277581681_0f7367f2ff_b.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;Hmmm   I am aware that I should put more technical content here, trouble is I don't have much to say at the moment.   Work is dragging on with the same old problems with different hardware.   Outside work I am actively working on something  (smallish) using Erlang to get my skills in that area up to scratch before starting something else (still smallish, but bigger).&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;In the mean time here are a couple of things that happened yesterday.   Firstly, Nicole and I both had pictures shortlisted by &lt;a href="http://www.schmap.com"&gt;http://www.schmap.com&lt;/a&gt; for their new Munich city guide.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Nic's photo is a day-shot she took in Karstadt, a department store in the center of Munich, it's a really cool shot.   Mine is a more typical, boring tourist shot of the Olympic centre.    We have no idea if they'll make it into the guide, but it is nice to be picked.    &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Having been shortlisted I downloaded the current guide to have a look.   It's sort of a an offline google maps with tourist guide data for the points of interest.   It's OK, and handy to have on your laptop/PDA/Smart Phone when you travel I guess.    I imagine that this sort of thing will get a lot smarter with widespread adoption of always connected, location aware devices like the iPhone 3G.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;In the evening we went t &lt;a href="http://www.tollwood.de/"&gt;Tollwood&lt;/a&gt;, which sounds like a sleepy village in Surrey, but is in fact a culture festival in Munich.   To me it looked a little bit like the medieval festival a few months earlier, but with fewer silly costumes and more cultural diversity.   Still, it was fun and their was a good selection of food to choose from.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/120527653504992986-4242739633260731544?l=tealeg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tealeg.blogspot.com/feeds/4242739633260731544/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=120527653504992986&amp;postID=4242739633260731544' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/120527653504992986/posts/default/4242739633260731544'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/120527653504992986/posts/default/4242739633260731544'/><link rel='alternate' type='text/html' href='http://tealeg.blogspot.com/2008/07/things-that-happened-yesterday.html' title='Things that happened yesterday'/><author><name>Geoff Teale</name><uri>http://www.blogger.com/profile/15745446337578770673</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm4.static.flickr.com/3085/2447245514_2f4c6a85a0_t.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-120527653504992986.post-4075441773197377635</id><published>2008-06-30T08:37:00.001-07:00</published><updated>2008-06-30T08:37:44.425-07:00</updated><title type='text'>The defiant one.</title><content type='html'>&lt;style type="text/css"&gt;.flickr-photo { border: solid 2px #000000; }.flickr-yourcomment { }.flickr-frame { text-align: left; padding: 3px; }.flickr-caption { font-size: 0.8em; margin-top: 0px; }&lt;/style&gt;&lt;div class="flickr-frame"&gt;	&lt;a href="http://www.flickr.com/photos/tealeg/2620553319/" title="photo sharing"&gt;&lt;img src="http://farm4.static.flickr.com/3206/2620553319_edc0ef7456.jpg" class="flickr-photo" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;	&lt;span class="flickr-caption"&gt;&lt;a href="http://www.flickr.com/photos/tealeg/2620553319/"&gt;The defiant one. - 2008-06-28 at 21-14-04&lt;/a&gt;, originally uploaded by &lt;a href="http://www.flickr.com/people/tealeg/"&gt;tealeg&lt;/a&gt;.&lt;/span&gt;&lt;/div&gt;				&lt;p class="flickr-yourcomment"&gt;	This weekend was Silke's birthday.&lt;br /&gt;&lt;br /&gt;I took time out from writing webstore code in Erlang using YAWS to take some photos.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/120527653504992986-4075441773197377635?l=tealeg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tealeg.blogspot.com/feeds/4075441773197377635/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=120527653504992986&amp;postID=4075441773197377635' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/120527653504992986/posts/default/4075441773197377635'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/120527653504992986/posts/default/4075441773197377635'/><link rel='alternate' type='text/html' href='http://tealeg.blogspot.com/2008/06/defiant-one.html' title='The defiant one.'/><author><name>Geoff Teale</name><uri>http://www.blogger.com/profile/15745446337578770673</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm4.static.flickr.com/3206/2620553319_edc0ef7456_t.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-120527653504992986.post-5432199825622253009</id><published>2008-06-24T09:04:00.001-07:00</published><updated>2008-06-24T09:04:15.302-07:00</updated><title type='text'>A bug's life</title><content type='html'>&lt;style type="text/css"&gt;.flickr-photo { border: solid 2px #000000; }.flickr-yourcomment { }.flickr-frame { text-align: left; padding: 3px; }.flickr-caption { font-size: 0.8em; margin-top: 0px; }&lt;/style&gt;&lt;div class="flickr-frame"&gt;	&lt;a href="http://www.flickr.com/photos/tealeg/2608043222/" title="photo sharing"&gt;&lt;img src="http://farm4.static.flickr.com/3096/2608043222_eab7298bc4.jpg" class="flickr-photo" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;	&lt;span class="flickr-caption"&gt;&lt;a href="http://www.flickr.com/photos/tealeg/2608043222/"&gt;A bug's life&lt;/a&gt;, originally uploaded by &lt;a href="http://www.flickr.com/people/tealeg/"&gt;tealeg&lt;/a&gt;.&lt;/span&gt;&lt;/div&gt;				&lt;p class="flickr-yourcomment"&gt;	It starts with the Aphids.  When we put our plants on the balcony this year those dastardly greenfly hit them with a vengance.&lt;br /&gt;&lt;br /&gt;We tried a natural remedy, based on soaked nettles.. but without success we were left with no other option but to pray for ladybird or hover fly lavae.   Just when we thought we would never get any luck we spotted the first ladybird lavae.  They're ugly little critters but with plenty of aphids to munch on they soon grew big and strong.&lt;br /&gt;&lt;br /&gt;One day they were looking very sleepy and hanging out on the leaves of a lavendar bush.  The next morning they had turned into little pupae stuck to the undersides of the leaves.   Just over a day later the world had some brand new ladybirds, ready to build a new generation of aphid munching predators.   Hooray ladybirds!&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/120527653504992986-5432199825622253009?l=tealeg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tealeg.blogspot.com/feeds/5432199825622253009/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=120527653504992986&amp;postID=5432199825622253009' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/120527653504992986/posts/default/5432199825622253009'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/120527653504992986/posts/default/5432199825622253009'/><link rel='alternate' type='text/html' href='http://tealeg.blogspot.com/2008/06/bug-life.html' title='A bug&amp;#39;s life'/><author><name>Geoff Teale</name><uri>http://www.blogger.com/profile/15745446337578770673</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm4.static.flickr.com/3096/2608043222_eab7298bc4_t.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-120527653504992986.post-7495999813844282314</id><published>2008-06-23T14:13:00.001-07:00</published><updated>2008-06-23T14:13:23.402-07:00</updated><title type='text'>Geoff embraces his new life</title><content type='html'>&lt;style type="text/css"&gt;.flickr-photo { border: solid 2px #000000; }.flickr-yourcomment { }.flickr-frame { text-align: left; padding: 3px; }.flickr-caption { font-size: 0.8em; margin-top: 0px; }&lt;/style&gt;&lt;div class="flickr-frame"&gt;	&lt;a href="http://www.flickr.com/photos/tanzbar/2604962084/" title="photo sharing"&gt;&lt;img src="http://farm4.static.flickr.com/3092/2604962084_f7aa72ddaa.jpg" class="flickr-photo" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;	&lt;span class="flickr-caption"&gt;&lt;a href="http://www.flickr.com/photos/tanzbar/2604962084/"&gt;Geoff embrasses his new life&lt;/a&gt;, originally uploaded by &lt;a href="http://www.flickr.com/people/tanzbar/"&gt;Tanzbar&lt;/a&gt;.&lt;/span&gt;&lt;/div&gt;				&lt;p class="flickr-yourcomment"&gt;	Nic seems to specialise in taking shots of me in compromising positions.&lt;br /&gt;&lt;br /&gt;Here I am at the local Biergarten (Lochham) , drinking König Lüdwig dunkels bier (my favourite German beer) and supporting Germany in the match against Portugal.&lt;br /&gt;&lt;br /&gt;For some reason it looks like my ear was bleeding, it wasn't.&lt;br /&gt;&lt;br /&gt;Role on Turkey.. probably not one to be in the center of München for given the reaction of the Turkish population here following their victory the following night.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/120527653504992986-7495999813844282314?l=tealeg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tealeg.blogspot.com/feeds/7495999813844282314/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=120527653504992986&amp;postID=7495999813844282314' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/120527653504992986/posts/default/7495999813844282314'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/120527653504992986/posts/default/7495999813844282314'/><link rel='alternate' type='text/html' href='http://tealeg.blogspot.com/2008/06/geoff-embraces-his-new-life.html' title='Geoff embraces his new life'/><author><name>Geoff Teale</name><uri>http://www.blogger.com/profile/15745446337578770673</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm4.static.flickr.com/3092/2604962084_f7aa72ddaa_t.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-120527653504992986.post-1591574310453280078</id><published>2008-05-26T23:01:00.000-07:00</published><updated>2008-05-26T23:03:08.500-07:00</updated><title type='text'>Science is interesting.</title><content type='html'>&lt;a href="http://www.youtube.com/watch?v=-_2xGIwQfik"&gt;Science is interesting.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Now the above just made my morning.  Thank you YouTube.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/120527653504992986-1591574310453280078?l=tealeg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tealeg.blogspot.com/feeds/1591574310453280078/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=120527653504992986&amp;postID=1591574310453280078' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/120527653504992986/posts/default/1591574310453280078'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/120527653504992986/posts/default/1591574310453280078'/><link rel='alternate' type='text/html' href='http://tealeg.blogspot.com/2008/05/science-is-interesting.html' title='Science is interesting.'/><author><name>Geoff Teale</name><uri>http://www.blogger.com/profile/15745446337578770673</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-120527653504992986.post-3923094706650586453</id><published>2008-05-16T23:07:00.000-07:00</published><updated>2008-05-16T23:19:23.072-07:00</updated><title type='text'>OpenVPN and solaris</title><content type='html'>A little more solaris joy.   Mainly as a note for myself here is how to setup an OpenVPN client on OpenSolaris 2008.05:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;&lt;li&gt;&lt;br /&gt;&lt;p&gt;Add Blastwave and SunFreeWare IPS repositories to the Image Packaging System:&lt;/p&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;-bash-2.05b# pkg set-authority -O http://pkg.sunfreeware.com:9000/ Companion&lt;br /&gt;-bash-2.05b# pkg set-authority -O http://blastwave.network.com:10000/ Blastwave&lt;br /&gt;-bash-2.05b# pkg refresh&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;br /&gt;&lt;p&gt;Install and setup the TUN device:&lt;/p&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;-bash-2.05b# pkg install IPStun&lt;br /&gt;-bash-2.05b# add_drv tun&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;br /&gt;&lt;p&gt;Install openvpn:&lt;/p&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;-bash-2.05b# pkg install IPSopenvpn&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;... and now you're ready to put your &lt;span style="font-style: italic;"&gt;openvpn.conf &lt;/span&gt;file in &lt;span style="font-style: italic;"&gt;/etc/csw/openvpn/&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;You start and stop the daemon using:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;-bash-2.05b# /etc/init.d/openvpn start&lt;br /&gt;-bash-2.05b# /etc/init.d/openvpn stop&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;... which is nice and familiar, but I'd rather have it set up for use with &lt;i&gt;svcadm&lt;/i&gt;.  Ah well, can't have everything.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/120527653504992986-3923094706650586453?l=tealeg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tealeg.blogspot.com/feeds/3923094706650586453/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=120527653504992986&amp;postID=3923094706650586453' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/120527653504992986/posts/default/3923094706650586453'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/120527653504992986/posts/default/3923094706650586453'/><link rel='alternate' type='text/html' href='http://tealeg.blogspot.com/2008/05/openvpn-and-solaris.html' title='OpenVPN and solaris'/><author><name>Geoff Teale</name><uri>http://www.blogger.com/profile/15745446337578770673</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-120527653504992986.post-6005537678161002945</id><published>2008-05-16T21:42:00.000-07:00</published><updated>2008-05-16T23:20:25.614-07:00</updated><title type='text'>Brandz Spanking New</title><content type='html'>So, long time no Solaris talk.&lt;br /&gt;&lt;br /&gt;I've not been sleeping well this last couple of weeks (ironically this seems to have a lot to do with exhausting myself during my recent trip to England), but that inevitably leads to lots of mucking around with computers in the wee  hours of the morning.&lt;br /&gt;&lt;br /&gt;So OpenSolaris 2008.05 is on my laptop right now, and it's a bit of surprise to find it there as I am trying to hack on some code that is destined to run on Linux.  The crux of the biscuit is this: I need a contained environment to much around with different Python implementations, it needs to be Linux and it needs to have network access from my laptop.     Previously I'd been trying to achieve this on Linux using:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Plain old chroots&lt;/li&gt;&lt;li&gt;VMWare&lt;/li&gt;&lt;li&gt;VirtualBox&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;All of the above turned out to be failures.   Chroots just don't cut it (the interaction between the chroot and the host is too strong - debootstrapping tends to lead to all sorts of issues with network services (sorry dbus didn't install correctly because it was already running..?!?!).&lt;br /&gt;&lt;br /&gt;VM's seem like an obvious solution.   The problem?  My network access is predominantly wireless.  Wireless and network bridging don't play well in Linux - you can do it, but it tends to screw up in all sorts of odd ways when the wireless card renegotiates with the AP.   This isn't helped by the fact that my laptops wireless card (an Intel 4965ABG) is fairly new and the linux drivers are only just stabilising (Kudos to Ubuntu Hardy Heron for being the only Linux distro I've tried that made this card "just work" out of the box).  Another factor is that same wireless card is also the only physical interface available to bind a tun to for my OpenVPN connection to my clients network.   The reality of working with this setup for bridged interfaces is a series of hacks and, unfortunately, rebooting every 40 minutes or so.   So I have made do with NAT'd and local networking in VMWare and switched between them based on my networking needs.   Frustrating doesn't even begin to capture it!&lt;br /&gt;&lt;br /&gt;Of course, I could plug in some cat 5 to the router, but the router is hidden in a cabinet in the front room, no where near a sensible location for doing work, so I've been living with NAT'd VM's for a couple of months now.&lt;br /&gt;&lt;br /&gt;So where does OpenSolaris come into all of this?  Well, I've been tracking OpenSolaris for a long time now -  I've used Solaris several times over the past decade, but it's always been a fringe thing for me, Linux has always given me more bang for less effort.   OpenSolaris 2008.05 is a pretty polished distribution and it's starting to address some of the issues.   I don't want to write about that here, but one key thing is that the re-emergance of the iwk wireless driver and the immature, but suprisingly reliable Network Auto Magic Daemon (nwam - a sort of NetworkManager, sans braindamage, for OpenSolaris) combine to make my goddamn tricky wireless card work out of the box.&lt;br /&gt;&lt;br /&gt;OK, that's nice, but what does that give me that Hardy Heron doesn't?   Well, whilst OpenSolaris may only just be maturing into an operating system that a sane human being would want to use in the day to day, it does have some seriously powerful and reliable toolsets built in for large scale (if I ever say "Enterprise" just shoot me..) computing:  ZFS, Containers/Zones and by extension Branz - a special kind of zone that can masquerade as something else, i.e. Linux.&lt;br /&gt;&lt;br /&gt;So I have set up a lx branded solaris zone on my laptop.   What does this give me, well, it gives me something that's more isolated than a chroot, but more lightweight than a VM.   It looks like Linux (like CentOS specifically).  It has it's own IP Address on the wireless network, bound to the same card as the global zone (the host) and both the global zone and the lx zone can see each other as first class peers on the same network as well as talking to the outside world.   It has it's own ZFS filesystem (linux with ZFS?  w00t!).  I can choose to access that filesystem from the global zone (just like a chroot), which saves some tedious mucking around with network file transfer protocols to relatively simple things (security is not my prime concern in this case).  I believe I can also dtrace this environment.. a unexpected benefit.&lt;br /&gt;&lt;br /&gt;So what hoops did I have to jump through to set up such a marvel?   Here's the transcript:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;-bash-2.05b# zonecfg -z timaeuszone1&lt;br /&gt;zonecfg:timaeuszone1&gt; create -t SUNWlx&lt;br /&gt;zonecfg:timaeuszone1&gt; set zonepath=/export/timaeuszone1&lt;br /&gt;zonecfg:timaeuszone1&gt; add net&lt;br /&gt;zonecfg:timaeuszone1:net&gt; set address=192.168.0.3/24&lt;br /&gt;zonecfg:timaeuszone1:net&gt; set physical=iwk0&lt;br /&gt;zonecfg:timaeuszone1:net&gt; end&lt;br /&gt;zonecfg:timaeuszone1&gt; commit&lt;br /&gt;zonecfg:timaeuszone1&gt; exit&lt;br /&gt;-bash-2.05b# zoneadm -z timaeuszone1 install -d /export/home/gteale/Desktop/Centos_fs_image.tar.bz2&lt;br /&gt;-bash-2.05b# zoneadm -z timaeuszone1 boot&lt;br /&gt;-bash-2.05b# zlogin timaeuszone1&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;Not too shabby!  Now let the hacking commence.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/120527653504992986-6005537678161002945?l=tealeg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tealeg.blogspot.com/feeds/6005537678161002945/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=120527653504992986&amp;postID=6005537678161002945' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/120527653504992986/posts/default/6005537678161002945'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/120527653504992986/posts/default/6005537678161002945'/><link rel='alternate' type='text/html' href='http://tealeg.blogspot.com/2008/05/so-long-time-no-solaris-talk.html' title='Brandz Spanking New'/><author><name>Geoff Teale</name><uri>http://www.blogger.com/profile/15745446337578770673</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-120527653504992986.post-5264995874459965261</id><published>2008-04-18T15:44:00.001-07:00</published><updated>2008-04-18T15:44:12.094-07:00</updated><title type='text'>the bavarian builder</title><content type='html'>&lt;style type="text/css"&gt;.flickr-photo { border: solid 2px #000000; }.flickr-yourcomment { }.flickr-frame { text-align: left; padding: 3px; }.flickr-caption { font-size: 0.8em; margin-top: 0px; }&lt;/style&gt;&lt;div class="flickr-frame"&gt;	&lt;a href="http://www.flickr.com/photos/tanzbar/2423938284/" title="photo sharing"&gt;&lt;img src="http://farm3.static.flickr.com/2011/2423938284_3bcf4567af.jpg" class="flickr-photo" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;	&lt;span class="flickr-caption"&gt;&lt;a href="http://www.flickr.com/photos/tanzbar/2423938284/"&gt;the bavarian builder&lt;/a&gt;, originally uploaded by &lt;a href="http://www.flickr.com/people/tanzbar/"&gt;Tanzbar&lt;/a&gt;.&lt;/span&gt;&lt;/div&gt;				&lt;p class="flickr-yourcomment"&gt;	I love this photo and I just had to share it.&lt;br /&gt;&lt;br /&gt;BTW,  Paul Graham's Arc rocks, but the anarki modifications rock even more...&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/120527653504992986-5264995874459965261?l=tealeg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tealeg.blogspot.com/feeds/5264995874459965261/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=120527653504992986&amp;postID=5264995874459965261' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/120527653504992986/posts/default/5264995874459965261'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/120527653504992986/posts/default/5264995874459965261'/><link rel='alternate' type='text/html' href='http://tealeg.blogspot.com/2008/04/bavarian-builder.html' title='the bavarian builder'/><author><name>Geoff Teale</name><uri>http://www.blogger.com/profile/15745446337578770673</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm3.static.flickr.com/2011/2423938284_3bcf4567af_t.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-120527653504992986.post-2644720605387436206</id><published>2008-04-16T03:50:00.001-07:00</published><updated>2008-04-16T03:56:14.936-07:00</updated><title type='text'>Story of stuff</title><content type='html'>&lt;style type="text/css"&gt;.flickr-photo { border: solid 2px #000000; }.flickr-yourcomment { }.flickr-frame { text-align: left; padding: 3px; }.flickr-caption { font-size: 0.8em; margin-top: 0px; }&lt;/style&gt;&lt;div class="flickr-frame"&gt; &lt;a href="http://www.flickr.com/photos/fluffierworld/2158248550/" title="photo sharing"&gt;&lt;img src="http://farm3.static.flickr.com/2142/2158248550_c4ced4548b.jpg" class="flickr-photo" alt="" /&gt;&lt;/a&gt;&lt;br /&gt; &lt;span class="flickr-caption"&gt;&lt;a href="http://www.flickr.com/photos/fluffierworld/2158248550/"&gt;tardigrade&lt;/a&gt;, originally uploaded by &lt;a href="http://www.flickr.com/people/fluffierworld/"&gt;fluffierworld&lt;/a&gt;.&lt;/span&gt;&lt;/div&gt;    &lt;p class="flickr-yourcomment"&gt; So firstly, please, please take the time to go and watch:&lt;br /&gt;&lt;a href="http://www.storyofstuff.com"&gt;&lt;br /&gt;http://www.storyofstuff.com&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;.. some of it everyone knows, but it's still worth understanding *all* of it.&lt;br /&gt;&lt;br /&gt;Once that's given you the picture you need to get an idea of how it's going to get fixed.  Here's a good source:&lt;br /&gt;&lt;a href="http://www.ted.com/index.php/talks/view/id/18"&gt;&lt;br /&gt;http://www.ted.com/index.php/talks/view/id/18&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;.. there you'll learn how the little fella pictured (A tardigrade, or "little water bear") is helping prevent killer diseases in Africa without using up the earths resources (amongst other things).&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/120527653504992986-2644720605387436206?l=tealeg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tealeg.blogspot.com/feeds/2644720605387436206/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=120527653504992986&amp;postID=2644720605387436206' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/120527653504992986/posts/default/2644720605387436206'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/120527653504992986/posts/default/2644720605387436206'/><link rel='alternate' type='text/html' href='http://tealeg.blogspot.com/2008/04/story-of-stuff.html' title='Story of stuff'/><author><name>Geoff Teale</name><uri>http://www.blogger.com/profile/15745446337578770673</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm3.static.flickr.com/2142/2158248550_c4ced4548b_t.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-120527653504992986.post-4646811116953302204</id><published>2008-04-13T12:11:00.001-07:00</published><updated>2008-04-13T12:11:49.586-07:00</updated><title type='text'>dude</title><content type='html'>&lt;style type="text/css"&gt;.flickr-photo { border: solid 2px #000000; }.flickr-yourcomment { }.flickr-frame { text-align: left; padding: 3px; }.flickr-caption { font-size: 0.8em; margin-top: 0px; }&lt;/style&gt;&lt;div class="flickr-frame"&gt;	&lt;a href="http://www.flickr.com/photos/tanzbar/2409984579/" title="photo sharing"&gt;&lt;img src="http://farm3.static.flickr.com/2031/2409984579_7121337cec.jpg" class="flickr-photo" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;	&lt;span class="flickr-caption"&gt;&lt;a href="http://www.flickr.com/photos/tanzbar/2409984579/"&gt;dude&lt;/a&gt;, originally uploaded by &lt;a href="http://www.flickr.com/people/tanzbar/"&gt;Tanzbar&lt;/a&gt;.&lt;/span&gt;&lt;/div&gt;				&lt;p class="flickr-yourcomment"&gt;	So, this weekend we found ourselves in the Thereisen fair ground looking for a new lens (long story - we ended up buying a dining table instead of a lens, such is life!).   Whilst in this area of Munich, where Oktoberfest takes place, we got to see the young and trendy types and I realised that I was not as "down" with the young people as I imagined (I mean, can you even imagine me not being cool?).&lt;br /&gt;&lt;br /&gt;So here is my attempt to reproduce the predominant style of dress amongst the young folk on that portion of Munich.&lt;br /&gt;&lt;br /&gt;Clearly all men are jealous and all women will find this irresistable.&lt;br /&gt;&lt;br /&gt;I thank you for you interest, but I am Nicole's sorry, better luck next time.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/120527653504992986-4646811116953302204?l=tealeg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tealeg.blogspot.com/feeds/4646811116953302204/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=120527653504992986&amp;postID=4646811116953302204' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/120527653504992986/posts/default/4646811116953302204'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/120527653504992986/posts/default/4646811116953302204'/><link rel='alternate' type='text/html' href='http://tealeg.blogspot.com/2008/04/dude.html' title='dude'/><author><name>Geoff Teale</name><uri>http://www.blogger.com/profile/15745446337578770673</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm3.static.flickr.com/2031/2409984579_7121337cec_t.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-120527653504992986.post-3619846113116647437</id><published>2008-04-05T05:51:00.001-07:00</published><updated>2008-04-05T05:51:11.834-07:00</updated><title type='text'>Guest appearance</title><content type='html'>&lt;style type="text/css"&gt;.flickr-photo { border: solid 2px #000000; }.flickr-yourcomment { }.flickr-frame { text-align: left; padding: 3px; }.flickr-caption { font-size: 0.8em; margin-top: 0px; }&lt;/style&gt;&lt;div class="flickr-frame"&gt;	&lt;a href="http://www.flickr.com/photos/tanzbar/2389768084/" title="photo sharing"&gt;&lt;img src="http://farm4.static.flickr.com/3157/2389768084_3294a7e64f.jpg" class="flickr-photo" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;	&lt;span class="flickr-caption"&gt;&lt;a href="http://www.flickr.com/photos/tanzbar/2389768084/"&gt;Day234&lt;/a&gt;, originally uploaded by &lt;a href="http://www.flickr.com/people/tanzbar/"&gt;Tanzbar&lt;/a&gt;.&lt;/span&gt;&lt;/div&gt;				&lt;p class="flickr-yourcomment"&gt;	I made a guest appearance in Nic's day-shot the other day.  We were sitting having drinks on our balcony for the first time.&lt;br /&gt;&lt;br /&gt;Very nice.   I was actually pulling this expression on purpose but I do look like I've got something way too hot in that mug :-)&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/120527653504992986-3619846113116647437?l=tealeg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tealeg.blogspot.com/feeds/3619846113116647437/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=120527653504992986&amp;postID=3619846113116647437' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/120527653504992986/posts/default/3619846113116647437'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/120527653504992986/posts/default/3619846113116647437'/><link rel='alternate' type='text/html' href='http://tealeg.blogspot.com/2008/04/guest-appearance.html' title='Guest appearance'/><author><name>Geoff Teale</name><uri>http://www.blogger.com/profile/15745446337578770673</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm4.static.flickr.com/3157/2389768084_3294a7e64f_t.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-120527653504992986.post-1844129565007585688</id><published>2008-04-01T11:33:00.001-07:00</published><updated>2008-04-01T11:33:56.499-07:00</updated><title type='text'>They can only break my heart</title><content type='html'>&lt;style type="text/css"&gt;.flickr-photo { border: solid 2px #000000; }.flickr-yourcomment { }.flickr-frame { text-align: left; padding: 3px; }.flickr-caption { font-size: 0.8em; margin-top: 0px; }&lt;/style&gt;&lt;div class="flickr-frame"&gt;	&lt;a href="http://www.flickr.com/photos/tealeg/2374271545/" title="photo sharing"&gt;&lt;img src="http://farm3.static.flickr.com/2289/2374271545_20f3bb4c51.jpg" class="flickr-photo" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;	&lt;span class="flickr-caption"&gt;&lt;a href="http://www.flickr.com/photos/tealeg/2374271545/"&gt;They can only break my heart&lt;/a&gt;, originally uploaded by &lt;a href="http://www.flickr.com/people/tealeg/"&gt;tealeg&lt;/a&gt;.&lt;/span&gt;&lt;/div&gt;				&lt;p class="flickr-yourcomment"&gt;	Probably my favorite shot so far at 800mm focal length.  It takes a really sunny day to get the best out of my £30 combination of Tokina 80-200mm  f4 zoom, clubman 2x converter (costing me another 2 stops), OM-&gt;4/3 adapter and an E410...but when it comes off it's nice to have all that zoom.. :-)&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/120527653504992986-1844129565007585688?l=tealeg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tealeg.blogspot.com/feeds/1844129565007585688/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=120527653504992986&amp;postID=1844129565007585688' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/120527653504992986/posts/default/1844129565007585688'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/120527653504992986/posts/default/1844129565007585688'/><link rel='alternate' type='text/html' href='http://tealeg.blogspot.com/2008/04/they-can-only-break-my-heart.html' title='They can only break my heart'/><author><name>Geoff Teale</name><uri>http://www.blogger.com/profile/15745446337578770673</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm3.static.flickr.com/2289/2374271545_20f3bb4c51_t.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-120527653504992986.post-6667905176507810160</id><published>2008-03-28T01:46:00.001-07:00</published><updated>2008-03-28T01:46:53.683-07:00</updated><title type='text'>Most intersting photo of mine on flickr.</title><content type='html'>&lt;style type="text/css"&gt;.flickr-photo { border: solid 2px #000000; }.flickr-yourcomment { }.flickr-frame { text-align: left; padding: 3px; }.flickr-caption { font-size: 0.8em; margin-top: 0px; }&lt;/style&gt;&lt;div class="flickr-frame"&gt;	&lt;a href="http://www.flickr.com/photos/tealeg/356332448/" title="photo sharing"&gt;&lt;img src="http://farm1.static.flickr.com/137/356332448_9a25a1d437.jpg" class="flickr-photo" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;	&lt;span class="flickr-caption"&gt;&lt;a href="http://www.flickr.com/photos/tealeg/356332448/"&gt;Attention&lt;/a&gt;, originally uploaded by &lt;a href="http://www.flickr.com/people/tealeg/"&gt;tealeg&lt;/a&gt;.&lt;/span&gt;&lt;/div&gt;				&lt;p class="flickr-yourcomment"&gt;	OK, I love this photo.  It's from my old E1 with a Sigma 55-200mm lens.  Still if I had a badger shot I'd have expected that to win.. this is a good substitute though :-)&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/120527653504992986-6667905176507810160?l=tealeg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tealeg.blogspot.com/feeds/6667905176507810160/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=120527653504992986&amp;postID=6667905176507810160' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/120527653504992986/posts/default/6667905176507810160'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/120527653504992986/posts/default/6667905176507810160'/><link rel='alternate' type='text/html' href='http://tealeg.blogspot.com/2008/03/most-intersting-photo-of-mine-on-flickr.html' title='Most intersting photo of mine on flickr.'/><author><name>Geoff Teale</name><uri>http://www.blogger.com/profile/15745446337578770673</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm1.static.flickr.com/137/356332448_9a25a1d437_t.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-120527653504992986.post-1999116724183605850</id><published>2008-03-28T01:45:00.001-07:00</published><updated>2008-03-28T01:45:32.637-07:00</updated><title type='text'>2nd most intersting.</title><content type='html'>&lt;style type="text/css"&gt;.flickr-photo { border: solid 2px #000000; }.flickr-yourcomment { }.flickr-frame { text-align: left; padding: 3px; }.flickr-caption { font-size: 0.8em; margin-top: 0px; }&lt;/style&gt;&lt;div class="flickr-frame"&gt;	&lt;a href="http://www.flickr.com/photos/tealeg/2081582460/" title="photo sharing"&gt;&lt;img src="http://farm3.static.flickr.com/2216/2081582460_14e181a81b.jpg" class="flickr-photo" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;	&lt;span class="flickr-caption"&gt;&lt;a href="http://www.flickr.com/photos/tealeg/2081582460/"&gt;Blue water&lt;/a&gt;, originally uploaded by &lt;a href="http://www.flickr.com/people/tealeg/"&gt;tealeg&lt;/a&gt;.&lt;/span&gt;&lt;/div&gt;				&lt;p class="flickr-yourcomment"&gt;	I guess..  though I wouldn't pick it.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/120527653504992986-1999116724183605850?l=tealeg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tealeg.blogspot.com/feeds/1999116724183605850/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=120527653504992986&amp;postID=1999116724183605850' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/120527653504992986/posts/default/1999116724183605850'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/120527653504992986/posts/default/1999116724183605850'/><link rel='alternate' type='text/html' href='http://tealeg.blogspot.com/2008/03/2nd-most-intersting.html' title='2nd most intersting.'/><author><name>Geoff Teale</name><uri>http://www.blogger.com/profile/15745446337578770673</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm3.static.flickr.com/2216/2081582460_14e181a81b_t.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-120527653504992986.post-5447503469327467988</id><published>2008-03-28T01:44:00.001-07:00</published><updated>2008-03-28T01:44:52.144-07:00</updated><title type='text'>3rd most interesting</title><content type='html'>&lt;style type="text/css"&gt;.flickr-photo { border: solid 2px #000000; }.flickr-yourcomment { }.flickr-frame { text-align: left; padding: 3px; }.flickr-caption { font-size: 0.8em; margin-top: 0px; }&lt;/style&gt;&lt;div class="flickr-frame"&gt;	&lt;a href="http://www.flickr.com/photos/tealeg/2252382855/" title="photo sharing"&gt;&lt;img src="http://farm3.static.flickr.com/2200/2252382855_ced20c8e7f.jpg" class="flickr-photo" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;	&lt;span class="flickr-caption"&gt;&lt;a href="http://www.flickr.com/photos/tealeg/2252382855/"&gt;Lens Time&lt;/a&gt;, originally uploaded by &lt;a href="http://www.flickr.com/people/tealeg/"&gt;tealeg&lt;/a&gt;.&lt;/span&gt;&lt;/div&gt;				&lt;p class="flickr-yourcomment"&gt;	Rubbish - it's awful.  Posting anything to the Canon G9 groups get's it a large number of hits, this happens to be interesing to Oly 410 users and users of legacy lenses as well, so it gets a lot of attention, but really this is not and interesting photo.  Boooo.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/120527653504992986-5447503469327467988?l=tealeg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tealeg.blogspot.com/feeds/5447503469327467988/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=120527653504992986&amp;postID=5447503469327467988' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/120527653504992986/posts/default/5447503469327467988'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/120527653504992986/posts/default/5447503469327467988'/><link rel='alternate' type='text/html' href='http://tealeg.blogspot.com/2008/03/3rd-most-interesting.html' title='3rd most interesting'/><author><name>Geoff Teale</name><uri>http://www.blogger.com/profile/15745446337578770673</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm3.static.flickr.com/2200/2252382855_ced20c8e7f_t.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-120527653504992986.post-4892352653293927587</id><published>2008-03-28T01:43:00.001-07:00</published><updated>2008-03-28T01:43:14.286-07:00</updated><title type='text'>4th most interesting</title><content type='html'>&lt;style type="text/css"&gt;.flickr-photo { border: solid 2px #000000; }.flickr-yourcomment { }.flickr-frame { text-align: left; padding: 3px; }.flickr-caption { font-size: 0.8em; margin-top: 0px; }&lt;/style&gt;&lt;div class="flickr-frame"&gt;	&lt;a href="http://www.flickr.com/photos/tealeg/1347241247/" title="photo sharing"&gt;&lt;img src="http://farm2.static.flickr.com/1231/1347241247_817aee2e44.jpg" class="flickr-photo" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;	&lt;span class="flickr-caption"&gt;&lt;a href="http://www.flickr.com/photos/tealeg/1347241247/"&gt;seagull_lampost&lt;/a&gt;, originally uploaded by &lt;a href="http://www.flickr.com/people/tealeg/"&gt;tealeg&lt;/a&gt;.&lt;/span&gt;&lt;/div&gt;				&lt;p class="flickr-yourcomment"&gt;	A travesty - this isn't even a very good shot.  It's here purely on the basis that is met the criteria required of several fairly active flickr groups.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/120527653504992986-4892352653293927587?l=tealeg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tealeg.blogspot.com/feeds/4892352653293927587/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=120527653504992986&amp;postID=4892352653293927587' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/120527653504992986/posts/default/4892352653293927587'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/120527653504992986/posts/default/4892352653293927587'/><link rel='alternate' type='text/html' href='http://tealeg.blogspot.com/2008/03/4th-most-interesting.html' title='4th most interesting'/><author><name>Geoff Teale</name><uri>http://www.blogger.com/profile/15745446337578770673</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm2.static.flickr.com/1231/1347241247_817aee2e44_t.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-120527653504992986.post-9196009115215595754</id><published>2008-03-28T01:41:00.001-07:00</published><updated>2008-03-28T01:41:51.840-07:00</updated><title type='text'>5th most intersting</title><content type='html'>&lt;style type="text/css"&gt;.flickr-photo { border: solid 2px #000000; }.flickr-yourcomment { }.flickr-frame { text-align: left; padding: 3px; }.flickr-caption { font-size: 0.8em; margin-top: 0px; }&lt;/style&gt;&lt;div class="flickr-frame"&gt;	&lt;a href="http://www.flickr.com/photos/tealeg/2266252175/" title="photo sharing"&gt;&lt;img src="http://farm3.static.flickr.com/2091/2266252175_768580c277.jpg" class="flickr-photo" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;	&lt;span class="flickr-caption"&gt;&lt;a href="http://www.flickr.com/photos/tealeg/2266252175/"&gt;Somewhere to call home&lt;/a&gt;, originally uploaded by &lt;a href="http://www.flickr.com/people/tealeg/"&gt;tealeg&lt;/a&gt;.&lt;/span&gt;&lt;/div&gt;				&lt;p class="flickr-yourcomment"&gt;	Suddenly became intersting when it was invited to be part of the a spinoff group from "the Blues" called "Best of the blues".  I'm surpirsed but pleased that they like it so much.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/120527653504992986-9196009115215595754?l=tealeg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tealeg.blogspot.com/feeds/9196009115215595754/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=120527653504992986&amp;postID=9196009115215595754' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/120527653504992986/posts/default/9196009115215595754'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/120527653504992986/posts/default/9196009115215595754'/><link rel='alternate' type='text/html' href='http://tealeg.blogspot.com/2008/03/5th-most-intersting.html' title='5th most intersting'/><author><name>Geoff Teale</name><uri>http://www.blogger.com/profile/15745446337578770673</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm3.static.flickr.com/2091/2266252175_768580c277_t.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-120527653504992986.post-6970159037452451157</id><published>2008-03-28T01:40:00.001-07:00</published><updated>2008-03-28T01:40:12.691-07:00</updated><title type='text'>6th most intersting</title><content type='html'>&lt;style type="text/css"&gt;.flickr-photo { border: solid 2px #000000; }.flickr-yourcomment { }.flickr-frame { text-align: left; padding: 3px; }.flickr-caption { font-size: 0.8em; margin-top: 0px; }&lt;/style&gt;&lt;div class="flickr-frame"&gt;	&lt;a href="http://www.flickr.com/photos/tealeg/2354795701/" title="photo sharing"&gt;&lt;img src="http://farm3.static.flickr.com/2105/2354795701_392b614764.jpg" class="flickr-photo" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;	&lt;span class="flickr-caption"&gt;&lt;a href="http://www.flickr.com/photos/tealeg/2354795701/"&gt;serious 4&lt;/a&gt;, originally uploaded by &lt;a href="http://www.flickr.com/people/tealeg/"&gt;tealeg&lt;/a&gt;.&lt;/span&gt;&lt;/div&gt;				&lt;p class="flickr-yourcomment"&gt;	Actually I think this is one of the best shots I've taken recently, although there is one better one taken a second or too later that doesn't even register on Flickr's "interesting" scale - of course that seems to be down to it not matching the criteria required to post it to various groups - interestingness seems to have something to do with the broadness of attention a photo gets, not just the number of hits.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/120527653504992986-6970159037452451157?l=tealeg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tealeg.blogspot.com/feeds/6970159037452451157/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=120527653504992986&amp;postID=6970159037452451157' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/120527653504992986/posts/default/6970159037452451157'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/120527653504992986/posts/default/6970159037452451157'/><link rel='alternate' type='text/html' href='http://tealeg.blogspot.com/2008/03/6th-most-intersting.html' title='6th most intersting'/><author><name>Geoff Teale</name><uri>http://www.blogger.com/profile/15745446337578770673</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm3.static.flickr.com/2105/2354795701_392b614764_t.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-120527653504992986.post-3300787768552305618</id><published>2008-03-28T01:37:00.001-07:00</published><updated>2008-03-28T01:37:21.100-07:00</updated><title type='text'>7th most intersting</title><content type='html'>&lt;style type="text/css"&gt;.flickr-photo { border: solid 2px #000000; }.flickr-yourcomment { }.flickr-frame { text-align: left; padding: 3px; }.flickr-caption { font-size: 0.8em; margin-top: 0px; }&lt;/style&gt;&lt;div class="flickr-frame"&gt;	&lt;a href="http://www.flickr.com/photos/tealeg/2275082598/" title="photo sharing"&gt;&lt;img src="http://farm3.static.flickr.com/2105/2275082598_74d48f2108.jpg" class="flickr-photo" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;	&lt;span class="flickr-caption"&gt;&lt;a href="http://www.flickr.com/photos/tealeg/2275082598/"&gt;You saw me standing alone&lt;/a&gt;, originally uploaded by &lt;a href="http://www.flickr.com/people/tealeg/"&gt;tealeg&lt;/a&gt;.&lt;/span&gt;&lt;/div&gt;				&lt;p class="flickr-yourcomment"&gt;	Hmmm, maybe...&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/120527653504992986-3300787768552305618?l=tealeg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tealeg.blogspot.com/feeds/3300787768552305618/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=120527653504992986&amp;postID=3300787768552305618' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/120527653504992986/posts/default/3300787768552305618'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/120527653504992986/posts/default/3300787768552305618'/><link rel='alternate' type='text/html' href='http://tealeg.blogspot.com/2008/03/7th-most-intersting.html' title='7th most intersting'/><author><name>Geoff Teale</name><uri>http://www.blogger.com/profile/15745446337578770673</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm3.static.flickr.com/2105/2275082598_74d48f2108_t.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-120527653504992986.post-8196392313961758056</id><published>2008-03-28T01:36:00.001-07:00</published><updated>2008-03-28T01:36:44.048-07:00</updated><title type='text'>8th most ineresting</title><content type='html'>&lt;style type="text/css"&gt;.flickr-photo { border: solid 2px #000000; }.flickr-yourcomment { }.flickr-frame { text-align: left; padding: 3px; }.flickr-caption { font-size: 0.8em; margin-top: 0px; }&lt;/style&gt;&lt;div class="flickr-frame"&gt;	&lt;a href="http://www.flickr.com/photos/tealeg/1990440394/" title="photo sharing"&gt;&lt;img src="http://farm3.static.flickr.com/2146/1990440394_0d34d9e5e6.jpg" class="flickr-photo" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;	&lt;span class="flickr-caption"&gt;&lt;a href="http://www.flickr.com/photos/tealeg/1990440394/"&gt;Schokolade&lt;/a&gt;, originally uploaded by &lt;a href="http://www.flickr.com/people/tealeg/"&gt;tealeg&lt;/a&gt;.&lt;/span&gt;&lt;/div&gt;				&lt;p class="flickr-yourcomment"&gt;	Certainly not a better photo than the 9th..&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/120527653504992986-8196392313961758056?l=tealeg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tealeg.blogspot.com/feeds/8196392313961758056/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=120527653504992986&amp;postID=8196392313961758056' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/120527653504992986/posts/default/8196392313961758056'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/120527653504992986/posts/default/8196392313961758056'/><link rel='alternate' type='text/html' href='http://tealeg.blogspot.com/2008/03/8th-most-ineresting.html' title='8th most ineresting'/><author><name>Geoff Teale</name><uri>http://www.blogger.com/profile/15745446337578770673</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm3.static.flickr.com/2146/1990440394_0d34d9e5e6_t.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-120527653504992986.post-4879867417581477080</id><published>2008-03-28T01:30:00.001-07:00</published><updated>2008-03-28T01:30:30.499-07:00</updated><title type='text'>9th Most intersting flickr photo</title><content type='html'>&lt;style type="text/css"&gt;.flickr-photo { border: solid 2px #000000; }.flickr-yourcomment { }.flickr-frame { text-align: left; padding: 3px; }.flickr-caption { font-size: 0.8em; margin-top: 0px; }&lt;/style&gt;&lt;div class="flickr-frame"&gt;	&lt;a href="http://www.flickr.com/photos/tealeg/2047525431/" title="photo sharing"&gt;&lt;img src="http://farm3.static.flickr.com/2414/2047525431_8f55add675.jpg" class="flickr-photo" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;	&lt;span class="flickr-caption"&gt;&lt;a href="http://www.flickr.com/photos/tealeg/2047525431/"&gt;I cannot sleep here&lt;/a&gt;, originally uploaded by &lt;a href="http://www.flickr.com/people/tealeg/"&gt;tealeg&lt;/a&gt;.&lt;/span&gt;&lt;/div&gt;				&lt;p class="flickr-yourcomment"&gt;	What makes this more interesting that the 10th?  I dunno.  I like this one better though so maybe they're on to something.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/120527653504992986-4879867417581477080?l=tealeg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tealeg.blogspot.com/feeds/4879867417581477080/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=120527653504992986&amp;postID=4879867417581477080' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/120527653504992986/posts/default/4879867417581477080'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/120527653504992986/posts/default/4879867417581477080'/><link rel='alternate' type='text/html' href='http://tealeg.blogspot.com/2008/03/9th-most-intersting-flickr-photo.html' title='9th Most intersting flickr photo'/><author><name>Geoff Teale</name><uri>http://www.blogger.com/profile/15745446337578770673</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm3.static.flickr.com/2414/2047525431_8f55add675_t.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-120527653504992986.post-3715160234172379896</id><published>2008-03-28T01:28:00.001-07:00</published><updated>2008-03-28T01:28:45.188-07:00</updated><title type='text'>10th most interesting flickr picture</title><content type='html'>&lt;style type="text/css"&gt;.flickr-photo { border: solid 2px #000000; }.flickr-yourcomment { }.flickr-frame { text-align: left; padding: 3px; }.flickr-caption { font-size: 0.8em; margin-top: 0px; }&lt;/style&gt;&lt;div class="flickr-frame"&gt;	&lt;a href="http://www.flickr.com/photos/tealeg/2059689896/" title="photo sharing"&gt;&lt;img src="http://farm3.static.flickr.com/2087/2059689896_ada447ca4e.jpg" class="flickr-photo" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;	&lt;span class="flickr-caption"&gt;&lt;a href="http://www.flickr.com/photos/tealeg/2059689896/"&gt;Meltdown&lt;/a&gt;, originally uploaded by &lt;a href="http://www.flickr.com/people/tealeg/"&gt;tealeg&lt;/a&gt;.&lt;/span&gt;&lt;/div&gt;				&lt;p class="flickr-yourcomment"&gt;	I don't understand it but Flickr considers this to be my 10th most intersting picture.  More to follow.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/120527653504992986-3715160234172379896?l=tealeg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tealeg.blogspot.com/feeds/3715160234172379896/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=120527653504992986&amp;postID=3715160234172379896' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/120527653504992986/posts/default/3715160234172379896'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/120527653504992986/posts/default/3715160234172379896'/><link rel='alternate' type='text/html' href='http://tealeg.blogspot.com/2008/03/10th-most-interesting-flickr-picture.html' title='10th most interesting flickr picture'/><author><name>Geoff Teale</name><uri>http://www.blogger.com/profile/15745446337578770673</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm3.static.flickr.com/2087/2059689896_ada447ca4e_t.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-120527653504992986.post-7404474791314411672</id><published>2008-02-22T08:16:00.000-08:00</published><updated>2008-02-22T08:26:21.864-08:00</updated><title type='text'>Two to the five minus one</title><content type='html'>It was my birthday two days ago.  At this age they tend to go with less of a bang.  I think this pretty much sums it up:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.dieselsweeties.com/archive/1955"&gt;http://www.dieselsweeties.com/archive/1955&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Thank quantum theory (in the absence of God) then for my wonderful girlfriend who tried to make my day more interesting from 700 miles away by setting me this little puzzle:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/tanzbar/sets/72157603945426840/"&gt;http://www.flickr.com/photos/tanzbar/sets/72157603945426840/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;... and in doing that proving herself once again to be a very inventive photographer :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/120527653504992986-7404474791314411672?l=tealeg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tealeg.blogspot.com/feeds/7404474791314411672/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=120527653504992986&amp;postID=7404474791314411672' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/120527653504992986/posts/default/7404474791314411672'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/120527653504992986/posts/default/7404474791314411672'/><link rel='alternate' type='text/html' href='http://tealeg.blogspot.com/2008/02/two-to-five-minus-one.html' title='Two to the five minus one'/><author><name>Geoff Teale</name><uri>http://www.blogger.com/profile/15745446337578770673</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-120527653504992986.post-1776405492680475365</id><published>2008-01-01T15:17:00.000-08:00</published><updated>2008-01-01T15:29:16.741-08:00</updated><title type='text'>Guten Morgen 2008</title><content type='html'>So... a new year.. the 30th new year of my life.&lt;br /&gt;&lt;br /&gt;A big year for me.  Firstly I am now just two months away from moving to Munich with my girlfriend Nicole and I'm both terrified and excited at the same time.  I'm not worried about moving to Germany  - strangely I just "know" that this will be OK - I'm worried about the future.   I like working for my current employer, and I'd like to carry on working for them, but that may not be compatible with living in Munich in the long term.  We will see...&lt;br /&gt;&lt;br /&gt;Over the Christmas break I've been re-learning Java.  It's been 8 years since I really spent any time looking at it.  That's odd, because for a lot of the programming world java is the very air they breathe.  For me it's just a language that my various employers have never needed me to use, so I haven't got any commercial experience with it.  I am perhaps in the odd position of having far more Ruby, Python and Scheme experience than Java!  Still I make it a rule to learn a language a year (at least), so Java it is (for the 2nd time!).&lt;br /&gt;&lt;br /&gt;... I need Java for a work project, and I guess it will be useful in the job hunt that may await me  - it's less boring than I'd imagined, but after years of Python, LISP and Scheme I find it very long winded.  Oh well - maybe that's the price I pay for the vast library base Java provides.&lt;br /&gt;&lt;br /&gt;Oh.. and I got an Olympus e410 over christmas... can't recommend it enough - the closest thing to a pocket DSLR in existance.. I love it already.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/120527653504992986-1776405492680475365?l=tealeg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tealeg.blogspot.com/feeds/1776405492680475365/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=120527653504992986&amp;postID=1776405492680475365' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/120527653504992986/posts/default/1776405492680475365'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/120527653504992986/posts/default/1776405492680475365'/><link rel='alternate' type='text/html' href='http://tealeg.blogspot.com/2008/01/guten-morgen-2008.html' title='Guten Morgen 2008'/><author><name>Geoff Teale</name><uri>http://www.blogger.com/profile/15745446337578770673</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-120527653504992986.post-1668437462736721362</id><published>2007-12-23T08:33:00.000-08:00</published><updated>2007-12-23T08:47:27.582-08:00</updated><title type='text'>A surprise</title><content type='html'>Playing around on &lt;a href="http://www.flickr.com/tealeg"&gt;my flickr account&lt;/a&gt; today I found about flickr stats.  Now these stats to turn out to be mostly quite lame and predictable, but the one that caught my eye was the referal sources.  In amongst a large number of hits from flickr itself and the main search engines there was a surprising 48 hits direct from &lt;a href="http://realadultsex.com"&gt;realadultsex.com&lt;/a&gt; (&lt;span style="font-weight: bold;"&gt;NSFW&lt;/span&gt; - stupid!).  So, I do the honorable thing and visit the referencing page: &lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;(NSFW!)&lt;/span&gt;&lt;br /&gt;&lt;a href="http://realadultsex.com/archives/2007/12/hottest_sex_tip_ever.html"&gt;http://realadultsex.com/archives/2007/12/hottest_sex_tip_ever.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;.. to see that low and behold one of my photos is indeed heading the blog entry and has infact been correctly attributed to me, but unfortunately they have suggested that they are using the image under the Creative Commons license.&lt;br /&gt;&lt;br /&gt;So  I'm a pretty liberal guy, and I really don't mind that they're using this image (that's sort of what the web's all about) - but it does slightly annoy me that they go to the extent of attributing the image to me and then claiming that it's under a license that it has never been issued under. &lt;br /&gt;&lt;br /&gt;Still.. I wasn't expecting my name or work to turn up on a sex blog any time soon, so the world still has some surprises!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/120527653504992986-1668437462736721362?l=tealeg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tealeg.blogspot.com/feeds/1668437462736721362/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=120527653504992986&amp;postID=1668437462736721362' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/120527653504992986/posts/default/1668437462736721362'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/120527653504992986/posts/default/1668437462736721362'/><link rel='alternate' type='text/html' href='http://tealeg.blogspot.com/2007/12/surprise.html' title='A surprise'/><author><name>Geoff Teale</name><uri>http://www.blogger.com/profile/15745446337578770673</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-120527653504992986.post-2740583033346577398</id><published>2007-12-17T14:25:00.000-08:00</published><updated>2007-12-17T14:36:08.058-08:00</updated><title type='text'>ikarus ascends</title><content type='html'>If you follow scheme or lisp news in even a passing fashion you can't have failed to notice the arrival of &lt;a href="http://www.cs.indiana.edu/%7Eaghuloum/ikarus/"&gt;Ikarus Scheme&lt;/a&gt;, the nifty incremental, native scheme code compiler.  It's an lovely new version of scheme based around &lt;a href="http://www.r6rs.org"&gt;R6RS&lt;/a&gt;.  That means it supports a nice clean library system (standardised!) and scripting in the manner of Perl, Python and Ruby. &lt;br /&gt;&lt;br /&gt;Though it lacks the maturity and library base you'd find in &lt;a href="http://www.call-with-current-continuation.org"&gt;chicken &lt;/a&gt;or &lt;a href="http://www.plt-scheme.org"&gt;PLT&lt;/a&gt;, it's still a very attractive proposition, and the quality of the product thus far, combined with the nascent community feel around it has certainly got my spider sense tingling.  As such I've done the noble thing and packaged it for my favourtite &lt;a href="http://www.gnu.org"&gt;GNU&lt;/a&gt;/&lt;a href="http://www.kernel.org"&gt;Linux &lt;/a&gt;distribution -&lt;a href="http://www.archlinux.org"&gt; Arch&lt;/a&gt; Linux.  &lt;br /&gt;&lt;br /&gt;You can find my package here: &lt;a href="http://aur.archlinux.org/packages.php?do_Details=1&amp;amp;ID=14228"&gt;http://aur.archlinux.org/packages.php?do_Details=1&amp;amp;ID=14228&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Happy Hacking!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/120527653504992986-2740583033346577398?l=tealeg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tealeg.blogspot.com/feeds/2740583033346577398/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=120527653504992986&amp;postID=2740583033346577398' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/120527653504992986/posts/default/2740583033346577398'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/120527653504992986/posts/default/2740583033346577398'/><link rel='alternate' type='text/html' href='http://tealeg.blogspot.com/2007/12/ikarus-ascends.html' title='ikarus ascends'/><author><name>Geoff Teale</name><uri>http://www.blogger.com/profile/15745446337578770673</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-120527653504992986.post-4074867741097975055</id><published>2007-11-25T11:32:00.001-08:00</published><updated>2007-11-25T11:32:24.742-08:00</updated><title type='text'>Auf Deutsch</title><content type='html'>&lt;style type="text/css"&gt;.flickr-photo { border: solid 2px #000000; }.flickr-yourcomment { }.flickr-frame { text-align: left; padding: 3px; }.flickr-caption { font-size: 0.8em; margin-top: 0px; }&lt;/style&gt;&lt;div class="flickr-frame"&gt;	&lt;a href="http://www.flickr.com/photos/tealeg/2058906151/" title="photo sharing"&gt;&lt;img src="http://farm3.static.flickr.com/2097/2058906151_46d0aa0277.jpg" class="flickr-photo" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;	&lt;span class="flickr-caption"&gt;&lt;a href="http://www.flickr.com/photos/tealeg/2058906151/"&gt;Auf Deutsch&lt;/a&gt;, originally uploaded by &lt;a href="http://www.flickr.com/people/tealeg/"&gt;tealeg&lt;/a&gt;.&lt;/span&gt;&lt;/div&gt;				&lt;p class="flickr-yourcomment"&gt;	A little Danish elefant embraces his future in Germany.&lt;br /&gt;&lt;br /&gt;I guess everyone knows now that Nic and I are moving to Munich next year.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/120527653504992986-4074867741097975055?l=tealeg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tealeg.blogspot.com/feeds/4074867741097975055/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=120527653504992986&amp;postID=4074867741097975055' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/120527653504992986/posts/default/4074867741097975055'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/120527653504992986/posts/default/4074867741097975055'/><link rel='alternate' type='text/html' href='http://tealeg.blogspot.com/2007/11/auf-deutsch.html' title='Auf Deutsch'/><author><name>Geoff Teale</name><uri>http://www.blogger.com/profile/15745446337578770673</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm3.static.flickr.com/2097/2058906151_46d0aa0277_t.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-120527653504992986.post-3606286367526282184</id><published>2007-11-12T15:00:00.001-08:00</published><updated>2007-11-12T15:00:43.465-08:00</updated><title type='text'>Schokolade</title><content type='html'>&lt;style type="text/css"&gt;.flickr-photo { border: solid 2px #000000; }.flickr-yourcomment { }.flickr-frame { text-align: left; padding: 3px; }.flickr-caption { font-size: 0.8em; margin-top: 0px; }&lt;/style&gt;&lt;div class="flickr-frame"&gt;	&lt;a href="http://www.flickr.com/photos/tealeg/1990440394/" title="photo sharing"&gt;&lt;img src="http://farm3.static.flickr.com/2146/1990440394_0d34d9e5e6.jpg" class="flickr-photo" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;	&lt;span class="flickr-caption"&gt;&lt;a href="http://www.flickr.com/photos/tealeg/1990440394/"&gt;Schokolade&lt;/a&gt;, originally uploaded by &lt;a href="http://www.flickr.com/people/tealeg/"&gt;tealeg&lt;/a&gt;.&lt;/span&gt;&lt;/div&gt;				&lt;p class="flickr-yourcomment"&gt;	Nic and I went to Windsor on Sunday on a whim.   I took Nic to Carluccio's for the first time.  She was very pleased with the ciocolatte Fiorentina - it's nice that little things make her so happy.  :-)&lt;br /&gt;&lt;br /&gt;We also wandered round the castle for a bit and took at quick trip to the shops to buy my mums birthday present.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/120527653504992986-3606286367526282184?l=tealeg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tealeg.blogspot.com/feeds/3606286367526282184/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=120527653504992986&amp;postID=3606286367526282184' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/120527653504992986/posts/default/3606286367526282184'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/120527653504992986/posts/default/3606286367526282184'/><link rel='alternate' type='text/html' href='http://tealeg.blogspot.com/2007/11/schokolade.html' title='Schokolade'/><author><name>Geoff Teale</name><uri>http://www.blogger.com/profile/15745446337578770673</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm3.static.flickr.com/2146/1990440394_0d34d9e5e6_t.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-120527653504992986.post-8031349678825589350</id><published>2007-08-28T07:21:00.000-07:00</published><updated>2007-08-28T07:26:35.846-07:00</updated><title type='text'>Printing on an HP OfficeJet 6310 from Solaris</title><content type='html'>I thought this would be hard but essentially it was very easy - I guess and seemed to get it right first time.&lt;br /&gt;&lt;br /&gt;You don't need to install CUPS as the SUNWhpijs package already supports Sun's own print system.    Simply run:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;/usr/sadm/admin/bin/printmgr&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;... as root, choose &lt;span style="font-style: italic;"&gt;&lt;span style="font-weight: bold;"&gt;PRINTER-&gt;NEW ATTACHED PRINTER&lt;/span&gt; &lt;/span&gt;from the menu and then add the printer.   I found it to be attached to &lt;span style="font-weight: bold;"&gt;/dev/usb/printer0 &lt;/span&gt;and I had to claim it was an OfficeJet 6110, but essentially everything worked perfectly and seconds later I was printing in colour on A4 paper.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/120527653504992986-8031349678825589350?l=tealeg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tealeg.blogspot.com/feeds/8031349678825589350/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=120527653504992986&amp;postID=8031349678825589350' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/120527653504992986/posts/default/8031349678825589350'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/120527653504992986/posts/default/8031349678825589350'/><link rel='alternate' type='text/html' href='http://tealeg.blogspot.com/2007/08/printing-on-hp-officejet-6310-from.html' title='Printing on an HP OfficeJet 6310 from Solaris'/><author><name>Geoff Teale</name><uri>http://www.blogger.com/profile/15745446337578770673</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-120527653504992986.post-6000607571546056373</id><published>2007-08-21T14:34:00.000-07:00</published><updated>2007-08-21T14:38:02.412-07:00</updated><title type='text'>Excellent beer!</title><content type='html'>Following on from my cider related shenanigans, I've just found a beer I haven't had before that's really improved my evening.&lt;br /&gt;&lt;br /&gt;Summer Lightning by the Hopback Brewery.  You can get it in Waitrose.  It's a nice light flavour with an excellent roundness.  Perfect for the glourious summer we're not having here in the UK.&lt;br /&gt;&lt;br /&gt;See &lt;a href="http://www.hopback.co.uk"&gt;http://www.hopback.co.uk&lt;/a&gt; for details.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/120527653504992986-6000607571546056373?l=tealeg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tealeg.blogspot.com/feeds/6000607571546056373/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=120527653504992986&amp;postID=6000607571546056373' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/120527653504992986/posts/default/6000607571546056373'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/120527653504992986/posts/default/6000607571546056373'/><link rel='alternate' type='text/html' href='http://tealeg.blogspot.com/2007/08/excellent-beer.html' title='Excellent beer!'/><author><name>Geoff Teale</name><uri>http://www.blogger.com/profile/15745446337578770673</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-120527653504992986.post-7330299005888648629</id><published>2007-08-04T15:00:00.001-07:00</published><updated>2007-08-04T15:00:23.919-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ML'/><category scheme='http://www.blogger.com/atom/ns#' term='Flock'/><category scheme='http://www.blogger.com/atom/ns#' term='Cider'/><category scheme='http://www.blogger.com/atom/ns#' term='Scheme'/><title type='text'>Flock...</title><content type='html'>&lt;span style="font-weight: bold;"&gt;Flock&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;So I'm trying flock out again.&lt;br /&gt;&lt;br /&gt;It's been a while since I last looked at it.&amp;nbsp; All I can say is it's improved massively.&amp;nbsp; It's actually just like Firefox with lots of lovelly extra interactions with my favourite web sites. So far so impressed.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Cider&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I haven't drunk cider since a University, but at the Walkabout bar in central Birmingham I was introducer to Kopperburg, Swedish cider (thank you GUADEC!) which was actually really nice.&amp;nbsp;&amp;nbsp;&amp;nbsp; Since then I've had no end of trouble getting hold of the stuff.&amp;nbsp; Every place I go either doesn't stock it or is out of stock.&amp;nbsp; It's a shame because it's lovelly.&lt;br /&gt;&lt;br /&gt;Worse than all that however is that I have resorted to trying other ciders to see if I'd just forgortten how good cider is.&amp;nbsp; I haven't.&amp;nbsp;&amp;nbsp; Every other cider I have tasted has been unreservedly shite.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;Unless I can find a supplier of Kopperburg in the immediate future I've a feeling cider will be off my menu for at least another decade.&lt;br /&gt;&lt;br style="font-weight: bold;" /&gt;&lt;span style="font-weight: bold;"&gt;Projects&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I've got too many projects to work on and that makes it hard to focus.&amp;nbsp; Right now I have:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Reading "purely functional data structure", which in turn requires me to learn Standard ML (can I just say,*yuck*).&lt;/li&gt;&lt;li&gt;Working on VonTeese, a DITA handling system in Scheme.&lt;/li&gt;&lt;li&gt;Learning about concurrent Scheme programming in Termite.&lt;/li&gt;&lt;li&gt;Writing a ELISP to allow me to edit item on a Twiki based Wiki directly.&lt;/li&gt;&lt;li&gt;Working out a good data acquisition UI strategy for mobile GNOME devices (via PokyLinux for the time being).&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;.. plus a whole load of other ideas floating around in my head.&lt;p style="text-align: right; font-size: 8px"&gt;Blogged with &lt;a href="http://www.flock.com/blogged-with-flock" title="Flock" target="_new"&gt;Flock&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/120527653504992986-7330299005888648629?l=tealeg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tealeg.blogspot.com/feeds/7330299005888648629/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=120527653504992986&amp;postID=7330299005888648629' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/120527653504992986/posts/default/7330299005888648629'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/120527653504992986/posts/default/7330299005888648629'/><link rel='alternate' type='text/html' href='http://tealeg.blogspot.com/2007/08/flock.html' title='Flock...'/><author><name>Geoff Teale</name><uri>http://www.blogger.com/profile/15745446337578770673</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-120527653504992986.post-3737057269169536154</id><published>2007-06-26T14:25:00.000-07:00</published><updated>2007-06-26T14:41:28.705-07:00</updated><title type='text'>It makes me mad!</title><content type='html'>If there's one thing in this world that makes me mad (and there isn't, there's loads of things) it's the portions of the Free/Libre/Open Source Software community who assume that anything to do with the law is inherently evil.&lt;br /&gt;&lt;br /&gt;Every time I see this is riles me - from the anti-GFDL people in the Debian community, through the "me too" boys who decry the GPL (and especially the GPL3) as being "less free" than BSD licenses without understanding the effect of either,  right down to those whom, even with the best of intentions, make statements like &lt;a href="http://mail.opensolaris.org/pipermail/indiana-discuss/2007-June/000566.html"&gt;this&lt;/a&gt;.   So often people make ludicrous assertions in areas where there is either no choice, or a serious ill effect to be incurred by slavishly sticking to a misinterpreted principle.&lt;br /&gt;&lt;br /&gt;I'm a serious supporter of free software, a member of the FSF, I care deeply about this and I'll say it clearly - simply choosing to ignore the practical application of the law, or choosing not to protect Free Software Developers from events over which they have no control to satisfy some ill-defined idea of "purity" in freedom is not the way to promote free software or freedom in general.&lt;br /&gt;&lt;br /&gt;If Richard Stallman, Eben Moglen, Larry Lessig and Theo de Raadt, all of whom are smarter and more passionate about free software than you are (I guarantee it),  can see this and accept it why can't you?&lt;br /&gt;&lt;br /&gt;Grrrrrrrrrrrrrrrrrr......&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/120527653504992986-3737057269169536154?l=tealeg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tealeg.blogspot.com/feeds/3737057269169536154/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=120527653504992986&amp;postID=3737057269169536154' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/120527653504992986/posts/default/3737057269169536154'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/120527653504992986/posts/default/3737057269169536154'/><link rel='alternate' type='text/html' href='http://tealeg.blogspot.com/2007/06/it-makes-me-mad.html' title='It makes me mad!'/><author><name>Geoff Teale</name><uri>http://www.blogger.com/profile/15745446337578770673</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-120527653504992986.post-6678034711646652337</id><published>2007-06-13T16:57:00.000-07:00</published><updated>2007-06-13T17:05:19.078-07:00</updated><title type='text'>ZFS,... again</title><content type='html'>I continue to be totally blown away with ZFS.   &lt;a href="http://blogs.sun.com/erickustarz/entry/zfs_on_a_laptop"&gt;This post&lt;/a&gt; covers a lot of the reasons why.   Every time I explore a feature it's better than I was expecting.  The fact that you can send incremental snapshots (essentially the binary different between two points in time) is exciting me currently.   There must be the basis of so many applications there - distributed version control and package management are just two ideas that spring to mind.&lt;br /&gt;&lt;br /&gt;To that end I've started looking a little at &lt;span style="font-family: courier new;"&gt;/usr/include/libzfs.h &lt;span style="font-family: arial;"&gt;with a view to maybe wrapping it for python and/or some kind of scheme.   Shouldn't be too onerous task so long as I can find a decent amount of free time.&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/120527653504992986-6678034711646652337?l=tealeg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tealeg.blogspot.com/feeds/6678034711646652337/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=120527653504992986&amp;postID=6678034711646652337' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/120527653504992986/posts/default/6678034711646652337'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/120527653504992986/posts/default/6678034711646652337'/><link rel='alternate' type='text/html' href='http://tealeg.blogspot.com/2007/06/zfs-again.html' title='ZFS,... again'/><author><name>Geoff Teale</name><uri>http://www.blogger.com/profile/15745446337578770673</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-120527653504992986.post-495843026606433443</id><published>2007-06-02T14:51:00.000-07:00</published><updated>2007-06-02T15:05:06.724-07:00</updated><title type='text'>Anaïs Mitchell house concert, Turners Hill</title><content type='html'>Wow.  This is turning out to be a good weekend.  I've just seen the best concert I've seen in quite some while and tomorrow I'm flying to Lisbon for a weeks holiday.&lt;br /&gt;&lt;br /&gt;House concerts are always so intimate that they can make anyone with anything reasonably intelligent to sing about sound like Joni, Dar or Ani.  Anaïs is something else though she writes songs that are both beautiful and cut to the heart of the great wrongness of the western world right now.  Put that in the context of a house concert and you've got something amazing.&lt;br /&gt;&lt;br /&gt;Sat in the front row, a matter of inches from a singer who is so totally absorbed in the act of making music that her whole body writhes around the guitar, or marches on the spot, is an experience unmatched in the world of music.   It takes me back to the days when I made music with talented people and we sat and talked and played all night.&lt;br /&gt;&lt;br /&gt;Anaïs is on tour in the UK for a while more, you can see her tour dates &lt;a href="http://www.anaismitchell.com/tour.html"&gt;here.&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/120527653504992986-495843026606433443?l=tealeg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tealeg.blogspot.com/feeds/495843026606433443/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=120527653504992986&amp;postID=495843026606433443' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/120527653504992986/posts/default/495843026606433443'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/120527653504992986/posts/default/495843026606433443'/><link rel='alternate' type='text/html' href='http://tealeg.blogspot.com/2007/06/anas-mitchell-house-concert-turners.html' title='Anaïs Mitchell house concert, Turners Hill'/><author><name>Geoff Teale</name><uri>http://www.blogger.com/profile/15745446337578770673</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-120527653504992986.post-2156552320075858526</id><published>2007-05-19T15:34:00.000-07:00</published><updated>2007-05-19T15:59:18.592-07:00</updated><title type='text'>Project Indiana Wishlist</title><content type='html'>OK, so many, many people will be saying many things about project Indiana before we ever see anything concrete, and then many more people will inevitably form two camps - the "Indianaphiles" and the "Indianaphobes".&lt;br /&gt;&lt;br /&gt;All of that is inevitable and I guess we should just enjoy the ride.   However, given the scope for Indiana thus far expressed is "Make a Sun branded Solaris distribution that's a lot more like Linux", and that the top man is Ian Murdoch, I have exactly one wish for this project.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;Please, for the love of God, don't make it like, or derive it from, Debian or anything like Debian.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-weight: bold;"&gt;Why?  Well, I have a list:&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;ol&gt;&lt;li&gt;Once upon a time .deb was a great new packaging system.  People loved it (it was better than RPM!) and started improving it.  Trouble is, everybody had their own ideas and added lots of distinct script to help you do everything you could every want to do.  The result is a complex mess of tools with no common design and a steep learning curve for packagers.   I've made Debian packages, it's even been part of my paid work.   I've also made RPMs, ebuilds, Arch pacman packages and rPath conary packages.  Of all of those systems I'd  take pacman and the Arch Build System as a preference.  This is infact the major reason that I always return to Arch Linux despite enjoying playing with various other distros.   It's no more, or less powerful than the Debian system, but it's benefited from being designed from the ground up to do all the things  you &lt;span style="font-style: italic;"&gt;can&lt;/span&gt; do with a myriad of scripts for .deb with a small, clearly defined, well documented set of programs.    It's very simple to use (you can learn enough to do 99% of packaging from a single, short man page), and that's led to a strong community building packages to share with each other as well as the primary Arch repositories (see &lt;a href="http://aur.archlinux.org"&gt;http://aur.archlinux.org&lt;/a&gt; for the Arch User Repository).&lt;/li&gt;&lt;li&gt;We already have a perfectly good Ubuntu derived Solaris distribution.  I've used Nexenta GNU/Linux.  It's good and as OpenSolaris develops I'm sure it'll be familiar enough to pull over a few Ubuntu and Debian users.&lt;/li&gt;&lt;li&gt;The temptation to pick up ready made Debian packages is too great.  Probably the worst things in Ubuntu are where something that's been badly packaged for Debian appears, verbatim in Ubuntu.    There are, of course, many things that are packaged excellently by the Debian community, but there are a few shining examples of utter ineptitude.  These packages tend not to be the mainstream applications, but some more esoteric things - mzscheme springs to mind.  The general populous probably never notices (which is probably a factor in why they remain this way), but if they are applications that you care about then this situation is intensely annoying.   If I pick up Solaris with Sun's name on it I want some assurance that it has been put together with the thought and attention of a team of professionals, even if it includes lots of community contribution (I certainly hope it will!).&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;OK, rant over :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/120527653504992986-2156552320075858526?l=tealeg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tealeg.blogspot.com/feeds/2156552320075858526/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=120527653504992986&amp;postID=2156552320075858526' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/120527653504992986/posts/default/2156552320075858526'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/120527653504992986/posts/default/2156552320075858526'/><link rel='alternate' type='text/html' href='http://tealeg.blogspot.com/2007/05/project-indiana-wishlist.html' title='Project Indiana Wishlist'/><author><name>Geoff Teale</name><uri>http://www.blogger.com/profile/15745446337578770673</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-120527653504992986.post-5117006916637241644</id><published>2007-05-06T12:26:00.000-07:00</published><updated>2007-05-06T12:33:18.145-07:00</updated><title type='text'>Intel HDA working under OpenSolaris</title><content type='html'>Another minor victory in my quest to get more familiar with OpenSolaris.   I've upgraded to Nexenta unstable, and I noticed a package called &lt;span style="font-family:courier new;"&gt;sunwaudiohd&lt;/span&gt; being installed.   That looked like a promising solution to the lack of audio on my OpenSolaris machine - the Intel HDA soundcard has never worked under any version I've used.&lt;br /&gt;&lt;br /&gt;Sadly, the mere presence of this driver didn't seem to fix things (it's &lt;span style="font-style: italic;"&gt;never&lt;/span&gt; that simple).  A little research confirmed that it was the right driver, but that &lt;a href="http://bugs.opensolaris.org/bugdatabase/view_bug.do?bug_id=6513196"&gt;this&lt;/a&gt; bug had been discovered.  The workaround noted:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;update_drv -a -i '"pci8086,27d8"' audiohd&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;...seemed to do the trick and now I have excellent sound coming from my machine again.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/120527653504992986-5117006916637241644?l=tealeg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tealeg.blogspot.com/feeds/5117006916637241644/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=120527653504992986&amp;postID=5117006916637241644' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/120527653504992986/posts/default/5117006916637241644'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/120527653504992986/posts/default/5117006916637241644'/><link rel='alternate' type='text/html' href='http://tealeg.blogspot.com/2007/05/intel-hda-working-under-opensolaris.html' title='Intel HDA working under OpenSolaris'/><author><name>Geoff Teale</name><uri>http://www.blogger.com/profile/15745446337578770673</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-120527653504992986.post-5349432705236871235</id><published>2007-05-01T17:44:00.000-07:00</published><updated>2007-05-01T17:59:21.962-07:00</updated><title type='text'>Making ZFS work on removable media</title><content type='html'>&lt;span style="font-family:arial;"&gt;I've been playing around with &lt;/span&gt;&lt;a style="font-family: arial;" href="http://www.opensolaris.org/os/community/zfs/"&gt;ZFS&lt;/a&gt;&lt;span style="font-family:arial;"&gt; for quite a while now and I'm very impressed.  Everything that's claimed of it holds up under my limited investigation.  I've been working with both the OpenSolaris native version (thank you &lt;/span&gt;&lt;a style="font-family: arial;" href="http://www.gnusolaris.org/"&gt;Nexenta&lt;/a&gt;&lt;span style="font-family:arial;"&gt;!) and the &lt;/span&gt;&lt;a style="font-family: arial;" href="http://www.wizy.org/wiki/ZFS_on_FUSE"&gt;ZFS-FUSE&lt;/a&gt;&lt;span style="font-family:arial;"&gt; implementation for Linux.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-family:arial;"&gt;The one thing that proved hard to do was to build a ZFS pool on my USB2 hard drive and move that pool between machines.  For a couple of days I struggled in vane to see why I couldn't ZFS export from my linux box and ZFS import on my OpenSolaris box (or visa versa).&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;It turns out the answer is simple:  ZFS-FUSE doesn't recognise that Linux doesn't use /dev/dsk (it even goes so far as to error because of this for some commands).  The solution is to tell zpool that you want it to look elsewhere by adding the -d option to each zpool import/export command, eg.:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-family:courier new;"&gt;    $ zpool import -d /dev mypool&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;... suddenly it all works beautifully. Now if only there were better docs for ZFS-FUSE!  After all my struggling I word this out based on a comment against someone elses blog entry.&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/120527653504992986-5349432705236871235?l=tealeg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tealeg.blogspot.com/feeds/5349432705236871235/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=120527653504992986&amp;postID=5349432705236871235' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/120527653504992986/posts/default/5349432705236871235'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/120527653504992986/posts/default/5349432705236871235'/><link rel='alternate' type='text/html' href='http://tealeg.blogspot.com/2007/05/making-zfs-work-on-removable-media.html' title='Making ZFS work on removable media'/><author><name>Geoff Teale</name><uri>http://www.blogger.com/profile/15745446337578770673</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
