<?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:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-12784757</id><updated>2010-05-26T13:55:39.221Z</updated><title type='text'>Ben Lobo</title><subtitle type='html'>Freelance Web Developer</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://blog.benlobo.co.uk/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12784757/posts/default'/><link rel='alternate' type='text/html' href='http://blog.benlobo.co.uk/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/12784757/posts/default?start-index=26&amp;max-results=25'/><author><name>Ben Lobo</name><uri>http://www.blogger.com/profile/00943840192119222645</uri><email>noreply@blogger.com</email></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>37</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-12784757.post-6129672421240174657</id><published>2009-04-09T07:46:00.002Z</published><updated>2009-04-09T07:59:47.602Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='conveyor'/><title type='text'>Conveyor article on Culture 24</title><content type='html'>As lead developer of &lt;a href="http://getconveyor.org"&gt;Conveyor&lt;/a&gt;, a web service to enable small museums and galleries to develop kiosk-based presentations, I feel justified in plugging a &lt;a href="http://www.culture24.org.uk/spliced/online+collections/art67335"&gt;Culture24 article about the project&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12784757-6129672421240174657?l=blog.benlobo.co.uk' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.benlobo.co.uk/feeds/6129672421240174657/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=12784757&amp;postID=6129672421240174657' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12784757/posts/default/6129672421240174657'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12784757/posts/default/6129672421240174657'/><link rel='alternate' type='text/html' href='http://blog.benlobo.co.uk/2009/04/conveyor-article-on-culture-24.html' title='Conveyor article on Culture 24'/><author><name>Ben Lobo</name><uri>http://www.blogger.com/profile/00943840192119222645</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17969130812603100303'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12784757.post-1182622476143327693</id><published>2009-03-26T09:19:00.003Z</published><updated>2009-03-26T09:48:53.632Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='ehive culture-geeks'/><title type='text'>eHive - Odd name for a Collections Management System</title><content type='html'>Last night I went to a &lt;a href="http://www.culturegeeks.org.uk/"&gt;Culture Geeks&lt;/a&gt; talk about &lt;a href="http://ehive.com/"&gt;eHive&lt;/a&gt;, a collections management system (CMS) which the makers say is the first web based system of its kind. It was designed with small museums and galleries in mind as they often find themselves unable to use other CMSs because they're too expensive and/or they don't have the resources to manage and maintain it.&lt;div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I can see the potential of this service for small museums and galleries but I'm not sure if eHive has got it right just yet. It's got a reduced set of the features that would be available in a full blown CMS, and this is a deliberate move to make the product more easy to use, but it still seems quite complex to me and this puts it somewhere in between being easy to use and being a good CMS.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Perhaps more CMS features could be sacrificed for the benefit of usability but I know how much importance museums give to correctly cataloguing their objects so I think I can understand eHive's predicament.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I would certainly recommend giving eHive a try out if you have a collection of objects that you want to catalogue and make available on the web. It's free for the first 200 objects.&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;I'm not sure I would have called it 'eHive' though.&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12784757-1182622476143327693?l=blog.benlobo.co.uk' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.benlobo.co.uk/feeds/1182622476143327693/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=12784757&amp;postID=1182622476143327693' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12784757/posts/default/1182622476143327693'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12784757/posts/default/1182622476143327693'/><link rel='alternate' type='text/html' href='http://blog.benlobo.co.uk/2009/03/ehive-odd-name-for-collections.html' title='eHive - Odd name for a Collections Management System'/><author><name>Ben Lobo</name><uri>http://www.blogger.com/profile/00943840192119222645</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17969130812603100303'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12784757.post-6307519604980762548</id><published>2009-03-24T06:17:00.003Z</published><updated>2009-03-24T06:22:39.795Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='plone'/><title type='text'>Practical Plone 3 (pre review)</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.packtpub.com/practical-plone-3-beginners-guide-to-building-powerful-websites"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 240px; height: 240px;" src="http://1.bp.blogspot.com/_XRaFEHFsIzo/Sch3jd4loHI/AAAAAAAAACA/I7rSktnkC00/s320/practical_plone_3_book_cover.jpg" alt="" id="BLOGGER_PHOTO_ID_5316630811311972466" border="0" /&gt;&lt;/a&gt;I've just started reading &lt;a href="http://www.packtpub.com/practical-plone-3-beginners-guide-to-building-powerful-websites"&gt;Practical Plone 3&lt;/a&gt; which touts itself as a beginners' guide which teaches you how to get a working &lt;a href="http://plone.org"&gt;Plone&lt;/a&gt; site up and running quickly if you don't want to get involved in programming.&lt;br /&gt;&lt;br /&gt;It's got an impressively long list of 13 authors including Martin Aspeli and Jon Stahl, with each author being responsible for individual chapters.&lt;br /&gt;&lt;br /&gt;This seems like a good idea on the face of it as the combined knowledge and experience of that many people has got to be broader than that of a single author. But will it suffer from a lack of consistency as a result and will that affect the message?&lt;br /&gt;&lt;br /&gt;I don't know yet but I'll post the answers here as soon as I do.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12784757-6307519604980762548?l=blog.benlobo.co.uk' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.benlobo.co.uk/feeds/6307519604980762548/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=12784757&amp;postID=6307519604980762548' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12784757/posts/default/6307519604980762548'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12784757/posts/default/6307519604980762548'/><link rel='alternate' type='text/html' href='http://blog.benlobo.co.uk/2009/03/practical-plone-3-pre-review.html' title='Practical Plone 3 (pre review)'/><author><name>Ben Lobo</name><uri>http://www.blogger.com/profile/00943840192119222645</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17969130812603100303'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_XRaFEHFsIzo/Sch3jd4loHI/AAAAAAAAACA/I7rSktnkC00/s72-c/practical_plone_3_book_cover.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12784757.post-1732186272295132631</id><published>2009-03-20T16:13:00.003Z</published><updated>2009-03-24T06:19:55.189Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='ted'/><category scheme='http://www.blogger.com/atom/ns#' term='tedtalks'/><title type='text'>Tim Berners Lee on "The Next Web"</title><content type='html'>&lt;object width="446" height="326"&gt;&lt;param name="movie" value="http://video.ted.com/assets/player/swf/EmbedPlayer.swf"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="wmode" value="transparent"&gt;&lt;param name="bgColor" value="#ffffff"&gt; &lt;param name="flashvars" value="vu=http://video.ted.com/talks/embed/TimBerners-Lee_2009-embed_high.flv&amp;amp;su=http://images.ted.com/images/ted/tedindex/embed-posters/TimBerners-Lee-2009.embed_thumbnail.jpg&amp;amp;vw=432&amp;amp;vh=240&amp;amp;ap=0&amp;amp;ti=484"&gt;&lt;embed src="http://video.ted.com/assets/player/swf/EmbedPlayer.swf" pluginspace="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" wmode="transparent" bgcolor="#ffffff" allowfullscreen="true" flashvars="vu=http://video.ted.com/talks/embed/TimBerners-Lee_2009-embed_high.flv&amp;amp;su=http://images.ted.com/images/ted/tedindex/embed-posters/TimBerners-Lee-2009.embed_thumbnail.jpg&amp;amp;vw=432&amp;amp;vh=240&amp;amp;ap=0&amp;amp;ti=484" width="446" height="326"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12784757-1732186272295132631?l=blog.benlobo.co.uk' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.benlobo.co.uk/feeds/1732186272295132631/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=12784757&amp;postID=1732186272295132631' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12784757/posts/default/1732186272295132631'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12784757/posts/default/1732186272295132631'/><link rel='alternate' type='text/html' href='http://blog.benlobo.co.uk/2009/03/tim-berners-lee-on-next-web.html' title='Tim Berners Lee on &quot;The Next Web&quot;'/><author><name>Ben Lobo</name><uri>http://www.blogger.com/profile/00943840192119222645</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17969130812603100303'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12784757.post-231489422288584780</id><published>2007-06-28T09:50:00.000Z</published><updated>2007-06-28T08:56:30.038Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='plone'/><title type='text'>Plone workshop, London, August 2007</title><content type='html'>For anyone interested in learning how to develop &lt;a href="http://plone.org"&gt;Plone&lt;/a&gt; sites there's a 5-day &lt;a href="http://www.sharkbyte.co.uk/solutions/plone-workshop"&gt;Plone workshop&lt;/a&gt; in London on 13-17th August 2007.&lt;br /&gt;&lt;br /&gt;There's a fairly steep initial learning curve when it comes to developing and extending Plone.  Although there's a lot of support available in the form of mailing lists, chat rooms, books and documentation on the Plone website itself, it takes quite a while on your own to get your head around such a large content management system.&lt;br /&gt;&lt;br /&gt;That's why this workshop sounds like it would be useful to anyone with not much prior knowledge of Plone but who wants to get up to speed quickly. At nearly £1000 it's a significant investment. but I reckon it's worth it for the time it's likely to save doing it by yourself.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12784757-231489422288584780?l=blog.benlobo.co.uk' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.benlobo.co.uk/feeds/231489422288584780/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=12784757&amp;postID=231489422288584780' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12784757/posts/default/231489422288584780'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12784757/posts/default/231489422288584780'/><link rel='alternate' type='text/html' href='http://blog.benlobo.co.uk/2007/06/plone-workshop-london-august-2007.html' title='Plone workshop, London, August 2007'/><author><name>Ben Lobo</name><uri>http://www.blogger.com/profile/00943840192119222645</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17969130812603100303'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12784757.post-4095403263285222131</id><published>2007-06-28T09:32:00.000Z</published><updated>2007-06-28T08:33:09.414Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='plone'/><title type='text'>Plone used by Friends of the Earth</title><content type='html'>&lt;a href="http://www.foei.org/"&gt;Friends of the Earth International&lt;/a&gt; (FOEI) unveiled their new &lt;a href="http://plone.org"&gt;Plone&lt;/a&gt; site back in April and I'm just getting round to having a look at it now. Visually it's quite plain, a little bit too blocky and it feels very flat on the page to me. I'm not a visual designer, but I probably would have at least thrown the odd gradient in there to soften it a bit.&lt;br /&gt;&lt;br /&gt;One of the good things about Plone is the speed at which a fully functional content-managed site can be deployed but I think more effort should be put into skinning the public appearance. If nothing else, this would at least show others that it can be done. See the &lt;a href="http://postalheritage.org.uk"&gt;British Postal Museum and Archive&lt;/a&gt; site&lt;a href="http://postalheritage.org.uk"&gt;&lt;/a&gt; for example.&lt;br /&gt;&lt;br /&gt;Interestingly, the FOEI site uses &lt;a href="http://plone.org/products/plone-multisite"&gt;PloneMultisite&lt;/a&gt; to deploy content from a single editing base to multiple sites. I'm not up to speed on exactly how this product works but it sounds like something that's worth further investigation.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12784757-4095403263285222131?l=blog.benlobo.co.uk' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.benlobo.co.uk/feeds/4095403263285222131/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=12784757&amp;postID=4095403263285222131' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12784757/posts/default/4095403263285222131'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12784757/posts/default/4095403263285222131'/><link rel='alternate' type='text/html' href='http://blog.benlobo.co.uk/2007/06/plone-used-by-friends-of-earth.html' title='Plone used by Friends of the Earth'/><author><name>Ben Lobo</name><uri>http://www.blogger.com/profile/00943840192119222645</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17969130812603100303'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12784757.post-8355045484813163457</id><published>2007-06-07T17:24:00.000Z</published><updated>2007-06-07T17:33:39.299Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='readspeaker'/><title type='text'>ReadSpeaker in action</title><content type='html'>Following on from my &lt;a href="http://benlobo.hobointernet.com/2007/05/readspeaker-without-nasty-page-reloads.html"&gt;ReadSpeaker without nasty page reloads&lt;/a&gt; post, the nice way of implementing ReadSpeaker that we developed has now gone live on the &lt;a href="http://postalheritage.org.uk/"&gt;British Postal Museum and Archive's website&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Comments and suggestions about how to make it better are welcomed.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12784757-8355045484813163457?l=blog.benlobo.co.uk' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.benlobo.co.uk/feeds/8355045484813163457/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=12784757&amp;postID=8355045484813163457' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12784757/posts/default/8355045484813163457'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12784757/posts/default/8355045484813163457'/><link rel='alternate' type='text/html' href='http://blog.benlobo.co.uk/2007/06/readspeaker-in-action.html' title='ReadSpeaker in action'/><author><name>Ben Lobo</name><uri>http://www.blogger.com/profile/00943840192119222645</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17969130812603100303'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12784757.post-3442706688239869140</id><published>2007-05-29T23:33:00.000Z</published><updated>2007-05-29T22:38:07.199Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='web-standards'/><title type='text'>Demand Led Standards-based Development</title><content type='html'>I think Peter-Paul Koch's recent article on &lt;a href="http://www.alistapart.com/"&gt;A List Apart&lt;/a&gt; –&lt;br /&gt;&lt;a href="http://www.alistapart.com/articles/standardsandcompanies"&gt;Evangelizing Outside the Box: Web Standards and Large Companies&lt;/a&gt; – ought to make more of the power that clients have in steering the progress of web standards.&lt;br /&gt;&lt;br /&gt;The main thrust of the article, that high profile employees of large companies could and should be highly vocal evangelists for web standards in order to add momentum to the movement in general, is totally valid and I certainly wouldn't argue against it. Such evangelism is bound to have an influence on a significant number of developers who are yet to recognise the benefits of web standards.&lt;br /&gt;&lt;br /&gt;But the incentives to adopt the good practices of their peers may not be strong enough to enduce most late adopters to put in the work to make the jump to web standards. Why should they bother if they can maintain a viable business using the same methods as they've always used?&lt;br /&gt;&lt;br /&gt;However, if their clients demand the use of web standards, these same developers will have to adapt their methods or risk going out of business.&lt;br /&gt;&lt;br /&gt;So its down to the larger companies (and everyone else) to educate their clients about the benefits of web standards so that, eventually, there'll be no demand for non-standards based development and anyone who doesn't adapt will become extinct.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12784757-3442706688239869140?l=blog.benlobo.co.uk' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.benlobo.co.uk/feeds/3442706688239869140/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=12784757&amp;postID=3442706688239869140' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12784757/posts/default/3442706688239869140'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12784757/posts/default/3442706688239869140'/><link rel='alternate' type='text/html' href='http://blog.benlobo.co.uk/2007/05/demand-led-standards-based-development.html' title='Demand Led Standards-based Development'/><author><name>Ben Lobo</name><uri>http://www.blogger.com/profile/00943840192119222645</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17969130812603100303'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12784757.post-8641416954729959547</id><published>2007-05-29T11:00:00.001Z</published><updated>2007-05-31T17:01:53.869Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='readspeaker'/><title type='text'>ReadSpeaker without nasty page reloads</title><content type='html'>&lt;p&gt;&lt;a href="http://www.readspeaker.com/"&gt;Readspeaker's&lt;/a&gt; a great service that makes it easy for any website owners to provide audio versions of their content on the fly. This is clearly preferable to re-recording content manually every time a couple of words get changed and the quality of the synthesized voice is actually very natural and lifelike.&lt;/p&gt;&lt;p&gt;Every implemetation of ReadSpeaker that I've seen works by providing a link near the text which, when clicked, either forces a page reload so that an audio player can be embedded or - and this is my personal anti favourite - opens a new page containing only the audio player and shrinks the browser window to the size of the player. Take a look at the &lt;a href="http://radar.oreilly.com/archives/2007/05/listen_to_oreil.html"&gt;O'Reilly Radar&lt;/a&gt; (click on the 'listen' link) or any number of &lt;a href="http://www.readspeaker.com/templates/Page____1340.aspx"&gt;examples on ReadSpeaker's site&lt;/a&gt; to see what I mean.&lt;/p&gt;&lt;p&gt;While in most cases it's probably true that having a badly implemented audio version of a page is better than no audio version, it is possible to &lt;a href="http://yandleblog.com/2007/05/ben-and-i-have-recently-been-working-on.html"&gt;implement ReadSpeaker in a nice, elegant and accessible way&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;The reason why it's difficult to find any examples is that the ReadSpeaker documentation doesn't make it very clear that it's possible. However, it is possible to retrieve the URL of the generated mp3 file.&lt;/p&gt;&lt;p&gt;This means that it's possible to pass the mp3 url to an audio player that's embedded in the page when it first loads. If this is implemented with a suitable Flash mp3 player, the mp3 won't be downloaded unless the user decides to play the audio.&lt;/p&gt;&lt;p&gt;The way to retrieve the un-encoded URL of the mp3 is to make the following call to ReadSpeaker (if you want the URL to be encoded, set the 'type' parameter to 101):&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;http://asp.readspeaker.net/cgi-bin/[CUSTOMER_NAME]rsone?customerid=[CUSTOMER_ID]&amp;url=[URL_OF_PAGE_TO_READ]&amp;amp;type=100&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;where CUSTOMER_NAME and CUSTOMER_ID are supplied to you by ReadSpeaker when you open an account.&lt;/p&gt;&lt;p&gt;Your Flash player may be capable of using this URL as it is but if you need to pass the player an actual mp3 URL, you'll need to write a script to retrieve the URL of the mp3 up front.&lt;/p&gt;&lt;p&gt;Here's a Python script that I wrote for use with Plone but it should be easy to adapt to any other platform:&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;# Python script to retrieve the URL of an MP3 audio file from readspeaker.com.&lt;br /&gt;&lt;br /&gt;# Import required functions&lt;br /&gt;from urllib import urlopen, quote&lt;br /&gt;&lt;br /&gt;def getReadSpeakerURL(customer_name, customer_id, page_to_read_url):&lt;br /&gt;  url_to_open = "http://asp.readspeaker.net/cgi-bin/%srsone?customerid=%s&amp;url=%s&amp;amp;type=100" % (customer_name, customer_id, page_to_read_url)&lt;br /&gt;  mp3file = ''&lt;br /&gt;&lt;br /&gt;  try:&lt;br /&gt;      fp = urlopen(url_to_open) # this retrieves a page containing the url of the mp3 file&lt;br /&gt;      mp3file = fp.readline() # this retrieves the mp3 url itself&lt;br /&gt;&lt;br /&gt;  # check for errors&lt;br /&gt;  except IOError:&lt;br /&gt;      mp3file = ''&lt;br /&gt;&lt;br /&gt;# return two versions of the mp3 url, one with the URL encoded and one without&lt;br /&gt;return (mp3file, quote(mp3file))&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;Then place the following HTML into any pages that you want to be ReadSpeaker-ed (this example is written for Plone so uses Template Attribute Language (TAL) syntax. Sorry if you're not familiar with this but I hope you can still follow it):&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;&amp;lt;div class="readspeaker" define="customer_name string:[CUSTOMER_NAME]; customer_id string:[CUSTOMER_ID]; rs_url_array python: here.getReadSpeakerURL(customer_name, customer_id, here.absolute_url() + '?hidereadspeaker=1'); rs_url_unquoted python:rs_url_array[0]; rs_url_quoted python:rs_url_array[1];"&amp;gt;&lt;br /&gt; &amp;lt;h2&amp;gt;Hear this page read out loud&amp;lt;/h2&amp;gt;&lt;br /&gt; &amp;lt;object type="application/x-shockwave-flash" define="flashplayer string:/flash/emff_comments.swf?src=${rs_url_quoted}" attributes="data flashplayer" align="middle" height="28" width="200"&amp;gt;&lt;br /&gt;   &amp;lt;param value="" name="movie" attributes="value flashplayer"&amp;gt;&lt;br /&gt;   &amp;lt;p&amp;gt;To hear this page read aloud, get the Flash Player from &amp;lt;a href="www.adobe.com"&amp;gt;Adobe's web site&amp;lt;/a&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt; &amp;lt;/object&amp;gt;&lt;br /&gt; &amp;lt;p&amp;gt;&amp;lt;a href="" attributes="href rs_url_unquoted"&amp;gt;Download&amp;lt;/a&amp;gt; - &amp;lt;a href="" attributes="href string:${here/portal_url}/help/index_html#readspeaker-help"&amp;gt;Help&amp;lt;/a&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;&amp;lt;/div&amp;gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;This way you can have an accessible method of providing audio content without nasty page reloads.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12784757-8641416954729959547?l=blog.benlobo.co.uk' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.benlobo.co.uk/feeds/8641416954729959547/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=12784757&amp;postID=8641416954729959547' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12784757/posts/default/8641416954729959547'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12784757/posts/default/8641416954729959547'/><link rel='alternate' type='text/html' href='http://blog.benlobo.co.uk/2007/05/readspeaker-without-nasty-page-reloads.html' title='ReadSpeaker without nasty page reloads'/><author><name>Ben Lobo</name><uri>http://www.blogger.com/profile/00943840192119222645</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17969130812603100303'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12784757.post-6051424299718861034</id><published>2007-05-23T14:00:00.000Z</published><updated>2007-05-23T13:25:48.413Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='rewrite'/><category scheme='http://www.blogger.com/atom/ns#' term='apache'/><title type='text'>Apache rewrite recipe for usable URLs</title><content type='html'>Here's a little mod_rewrite recipe for Apache  that might be useful if you're developing a web app like &lt;a href="http://stripme.org/"&gt;StripMe&lt;/a&gt; which is a very simple service that takes a CSS file and returns a version of the file with all the comments and white space stripped out.&lt;br /&gt;&lt;br /&gt;The location of the CSS file to be stripped is passed to the service in the query string of the URL. Normally, this URL would look something like this:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;http://stripme.org/index.php?cssfile=http://mysite.com/style.css&lt;/li&gt;&lt;/ul&gt;We wanted to make the service easy to use by letting users pass the URL of their CSS files like this:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;http://stripme.org/http://mysite.com/style.css&lt;/li&gt;&lt;/ul&gt;To do this, I ended up using the following rewrites in Apache:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;RewriteCond %{REQUEST_URI} "http:\/\/"&lt;/li&gt;&lt;li&gt;RewriteRule "(.*)http:\/\/(.*)" "$1index.php?http:\/\/$2" [PT]&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;It's probably not the most elegant solution, but as long as there's a script in your root directory called index.php that knows what parameters to expect, it should work.&lt;br /&gt;&lt;br /&gt;Please let me know if it doesn't work or if there's a nicer way of doing it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12784757-6051424299718861034?l=blog.benlobo.co.uk' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.benlobo.co.uk/feeds/6051424299718861034/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=12784757&amp;postID=6051424299718861034' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12784757/posts/default/6051424299718861034'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12784757/posts/default/6051424299718861034'/><link rel='alternate' type='text/html' href='http://blog.benlobo.co.uk/2007/05/apache-rewrite-recipe-for-usable-urls.html' title='Apache rewrite recipe for usable URLs'/><author><name>Ben Lobo</name><uri>http://www.blogger.com/profile/00943840192119222645</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17969130812603100303'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12784757.post-9033886956019139956</id><published>2007-05-21T14:10:00.000Z</published><updated>2007-05-21T13:14:25.003Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='plone'/><category scheme='http://www.blogger.com/atom/ns#' term='zope'/><title type='text'>One way to fix POSKeyErrors in Zope on Windows</title><content type='html'>I just spent much longer than should have been necessary trying to fix a Zope problem so I'm going to document it just in case anyone else has the same problem in the future.&lt;br /&gt;&lt;br /&gt;The problem started with Zope raising a &lt;strong&gt;POSKeyError&lt;/strong&gt; exception whenever a certain object was accessed in the Zope Management Interface (ZMI). The object could not be removed from Zope using the ZMI in any way.&lt;br /&gt;&lt;br /&gt;Investigation revealed that this exception signifies corruption of the Zope Database (ZODB) due to an object that has become browkn in some way.&lt;br /&gt;&lt;br /&gt;We have backups (of course), but this worried me because it happened on our development server and we do so much development that even restoring a half a day old backup means losing a significant amount of work. So I looked for a way of fixing the problem without restoring a backup.&lt;br /&gt;&lt;br /&gt;Further investigation revealed that this can be achieved using 'zopectl debug' to interact directly with the ZODB in a Python shell and delete the broken object.&lt;br /&gt;&lt;br /&gt;The next hurdle was that zopectl doesn't work on Windows and no prizes for guessing what we use.&lt;br /&gt;&lt;br /&gt;The solution was to use &lt;a href="http://plone.org/products/ploneshell"&gt;PloneShell&lt;/a&gt;, which does the same thing as zopectl but also works on Windows.&lt;br /&gt;&lt;br /&gt;The final solution once I had my interactive PloneShell shell running and attached to the ZODB, was to replace the corrupt object with a new object:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;   container._setOb(idOfBrokenObject, someNewObject)&lt;/li&gt;&lt;/ul&gt;then delete the broken object:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;container._delObject(idOfBrokenObject)&lt;/li&gt;&lt;/ul&gt;and then commit the changes to the ZODB:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;   get_transaction().commit()&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12784757-9033886956019139956?l=blog.benlobo.co.uk' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.benlobo.co.uk/feeds/9033886956019139956/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=12784757&amp;postID=9033886956019139956' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12784757/posts/default/9033886956019139956'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12784757/posts/default/9033886956019139956'/><link rel='alternate' type='text/html' href='http://blog.benlobo.co.uk/2007/05/one-way-to-fix-poskeyerrors-in-zope-on.html' title='One way to fix POSKeyErrors in Zope on Windows'/><author><name>Ben Lobo</name><uri>http://www.blogger.com/profile/00943840192119222645</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17969130812603100303'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12784757.post-3655335060068240773</id><published>2007-05-20T10:52:00.000Z</published><updated>2007-05-21T12:35:42.591Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='zeo'/><category scheme='http://www.blogger.com/atom/ns#' term='plone'/><category scheme='http://www.blogger.com/atom/ns#' term='zope'/><title type='text'>Upscaling Zope with ZEO on Windows</title><content type='html'>If you're using &lt;a href="http://plone.org/"&gt;Plone&lt;/a&gt; for production level business applications and you're not yet using Zope Enterprise Objects (ZEO) I'd highly recommend switching over at your earliest opportunity.&lt;br /&gt;&lt;br /&gt;If you've got a single server system with multiple CPUs or you want to be able to balance the application load over two or more servers, ZEO is the way to go.&lt;br /&gt;&lt;br /&gt;I've recently switched over our Windows-based installation of Zope 2.7 (with Plone 2.0.5). The performance gains are easily worth the effort and I found a couple of resources on the Plone site that made the whole process easy to implement (see links below)&lt;br /&gt;&lt;br /&gt;The added bonus is that new servers can now be added easily to the configuration as demand on the server increases making it a great long term solution for a production environment.&lt;br /&gt;&lt;br /&gt;Here are the documents I found useful:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://plone.org/documentation/tutorial/robust-installation"&gt;Create, configure, and maintain a robust Plone and Zope installation&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.zope.org/Documentation/Books/ZopeBook/2_6Edition/ZEO.stx"&gt;Scalability and ZEO&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://plone.org/documentation/how-to/install-zeo-on-windows"&gt;Install ZEO on Window&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12784757-3655335060068240773?l=blog.benlobo.co.uk' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.benlobo.co.uk/feeds/3655335060068240773/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=12784757&amp;postID=3655335060068240773' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12784757/posts/default/3655335060068240773'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12784757/posts/default/3655335060068240773'/><link rel='alternate' type='text/html' href='http://blog.benlobo.co.uk/2007/05/scaling-up-with-zeo-on-windows.html' title='Upscaling Zope with ZEO on Windows'/><author><name>Ben Lobo</name><uri>http://www.blogger.com/profile/00943840192119222645</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17969130812603100303'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12784757.post-6140229645445915010</id><published>2007-05-15T15:32:00.000Z</published><updated>2007-05-15T14:39:47.760Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='feisty fawn'/><category scheme='http://www.blogger.com/atom/ns#' term='plone'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><category scheme='http://www.blogger.com/atom/ns#' term='zope'/><title type='text'>Setting up Plone on Ubuntu Feisty Fawn</title><content type='html'>Recently I needed to set up Plone on an Ubuntu server. I wanted to run Plone behind Apache and I needed to be able to remotely administer the server on a Windows machine.&lt;br /&gt;&lt;br /&gt;I don't have very much experience with linux so I was expecting all sorts of command line stumbling blocks but I was amazed at how easy everything was to set up, barring a couple of hiccups.&lt;br /&gt;&lt;br /&gt;I thought I'd post a log of what I did to get the server working (mostly for my own benefit so I've got a permanent record in case I need to do it again). It's not massively detailed so don't expect a breakdown on how to install and configure things like the secure FTP client WinSCP.&lt;br /&gt;&lt;br /&gt;I'm absolutely certain that there are better ways of doing it, and I welcome any comments about how I could have done things differently.&lt;br /&gt;&lt;h4&gt;Install Log&lt;/h4&gt;&lt;h5&gt;On the windows machine&lt;/h5&gt;&lt;ul&gt;&lt;li&gt;Download and install these useful remote administration tools:&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.blogger.com/o%20http://www.chiark.greenend.org.uk/%7Esgtatham/putty/"&gt;Putty&lt;/a&gt; - For remote login to linux&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://winscp.net/eng/index.php"&gt;WinSCP&lt;/a&gt; - For secure file transfer to and from linux&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;h5&gt;On the linux machine&lt;/h5&gt;&lt;ul&gt;&lt;li&gt;Install &lt;a href="http://www.ubuntu.com/products/WhatIsUbuntu/desktopedition"&gt;Ubuntu desktop edition&lt;/a&gt; (I used a Pentium III, 1GHz CPU with 512MB RAM)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Install SSH server - sudo apt-get install openssh-server&lt;/li&gt;&lt;li&gt;Install Apache - sudo apt-get install apache2&lt;/li&gt;&lt;li&gt;Install Zope (see &lt;a href="http://plone.org/documentation/how-to/setup-from-source"&gt;How to setup Plone from source&lt;/a&gt; for some pointers on this) - sudo apt-get install zope2.9 (if you leave off the 2.9 bit it will probably find the package containing the latest version)&lt;/li&gt;&lt;li&gt;Make a Zope instance - sudo /usr/lib/zope2.9/bin/mkzopeinstance.py&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Provide the information requested:&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Directory: /var/zope/instance001&lt;/li&gt;&lt;li&gt;Username: user&lt;/li&gt;&lt;li&gt;Password: pass&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;If necessary edit zope.conf to specify port number, etc (it may be necessary to use a terminal to change the owner of zope.conf before you can save the changes to files that you edit)&lt;/li&gt;&lt;ul&gt;&lt;li&gt;sudo chown user /var/zope/instance001/etc/zope.conf&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;and then back again when you have finished&lt;br /&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;sudo chown zope  /var/zope/instance001/etc/zope.conf&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;li&gt;Run zope - sudo /var/zope/instance001/bin/runzope (or, to run it in debug mode: sudo /var/zope/instance001/bin/runzope -X "debug-mode=on")&lt;/li&gt;&lt;ul&gt;&lt;li&gt;or:&lt;/li&gt;&lt;li&gt;sudo /var/zope/instance001/bin/zopectl start&lt;/li&gt;&lt;ul&gt;&lt;li&gt;sudo /var/zope/instance001/bin/zopectl stop&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;li&gt;Install PIL - sudo apt-get install python-imaging&lt;/li&gt;&lt;li&gt;Download and install Plone 2.5.2 (you may have to change ownership on the Products folder before you can transfer the Plone files to the Products directory)&lt;/li&gt;&lt;/ul&gt;&lt;h5&gt;Apache setup - See &lt;a href="https://help.ubuntu.com/6.10/ubuntu/serverguide/C/httpd.html"&gt;HTTPD - Apache2 Web Server&lt;/a&gt; to see how Apache is configured in Ubuntu&lt;/h5&gt;&lt;ul&gt;&lt;li&gt;to create a new virtual host, make a copy of the default site and then - sudo a2ensite site-name&lt;/li&gt;&lt;li&gt;To enable a module - sudo a2enmod module-name&lt;/li&gt;&lt;li&gt;Enable mod_proxy and mod_rewrite&lt;/li&gt;&lt;ul&gt;&lt;li&gt;sudo a2enmod proxy&lt;/li&gt;&lt;li&gt;sudo a2enmod proxy_http&lt;/li&gt;&lt;li&gt;sudo a2enmod rewrite&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Edit proxy.conf to allow proxying (I could only do this by enabling proxying from the specific client I was accessing the site from but I need to find a better way as this opens up the server to general proxying which is bad)&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Change 'Proxyrequests Off' to 'Proxyrequests On'&lt;/li&gt;&lt;li&gt;Add 'Allow from all' in  tag&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;To restart apache:&lt;/li&gt;&lt;ul&gt;&lt;li&gt;sudo /etc/init.d/apache2 reload&lt;/li&gt;&lt;li&gt;or:&lt;/li&gt;&lt;li&gt;sudo /etc/init.d/apache2 force-reload&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;h5&gt;For accessing the ubuntu server using a remote windows environment:&lt;/h5&gt;&lt;ul&gt;&lt;li&gt;On the Ubuntu machine, log in locally to the desktop and open System -&gt; Adminstration -&gt; Login Window&lt;/li&gt;&lt;ul&gt;&lt;li&gt;In the 'Remote' tab, select 'Same as Local' from the 'Style' drop down list&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;On the Windows machine, Install &lt;a href="http://www.cygwin.com/"&gt;Cygwin&lt;/a&gt; and the X11 components&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Edit [CYGWIN_INSTALL_DRIVE]:\cygwin\usr\X11R6\bin\startxdmcp.bat setting the IP address of the REMOTE_HOST to the IP address of the Ubuntu server&lt;/li&gt;&lt;li&gt;Launch [CYGWIN_INSTALL_DRIVE]:\cygwin\usr\X11R6\bin\startxdmcp.bat&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Note &lt;/span&gt;- By default, this will only allow you to have one session running simultaneously but this can be configured in the Login Window settings in Ubuntu&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;For further help, see:&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://software.newsforge.com/article.pl?sid=06/06/23/1858221&amp;tid=130&amp;amp;tid=92"&gt;Connect to remote Unix desktops with Cygwin&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://mparise.wordpress.com/2006/03/01/using-xdmcp-with-ubuntu-or-any-other-gdm-running-distro/"&gt;Using XDMCP with Ubuntu (or any other GDM running distro)&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12784757-6140229645445915010?l=blog.benlobo.co.uk' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.benlobo.co.uk/feeds/6140229645445915010/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=12784757&amp;postID=6140229645445915010' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12784757/posts/default/6140229645445915010'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12784757/posts/default/6140229645445915010'/><link rel='alternate' type='text/html' href='http://blog.benlobo.co.uk/2007/05/setting-up-plone-on-ubuntu-feisty-fawn.html' title='Setting up Plone on Ubuntu Feisty Fawn'/><author><name>Ben Lobo</name><uri>http://www.blogger.com/profile/00943840192119222645</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17969130812603100303'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12784757.post-4697111959866067648</id><published>2007-02-08T00:07:00.000Z</published><updated>2007-02-08T00:44:55.897Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='dojo'/><title type='text'>Brighton coding dojo</title><content type='html'>I went along to the &lt;a href="http://codingdojo.futureplatforms.com/friki/view"&gt;Brighton Coding Dojo&lt;/a&gt; for the first time today. I didn't really know what to expect so was nervous as a kitten and it turned out to be just as scary as I imagined. Well, almost.&lt;br /&gt;&lt;br /&gt;&lt;div style="margin: auto; width: 240px;"&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/benlobo/383193969/" title="righton coding dojo"&gt;&lt;img src="http://farm1.static.flickr.com/158/383193969_3da13e18b1_m.jpg" alt="Brighton coding dojo" height="159" width="240" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;p&gt;Above: Coders going at it at the Brighton coding dojo&lt;/p&gt;&lt;/div&gt;&lt;br /&gt;I'm not at all used to standing in front of a group of people and verbalising a programming problem while simultaneously trying to code the solution to the problem (and we were coding in Ruby using Eclipse, neither of which I had any experience of).&lt;br /&gt;&lt;br /&gt;My usual methodology is to take my time, on my own, thinking about a problem, sometimes making notes and drawing diagrams and then coding in a not altogether best practice kind of way which gradually gets me to the end goal.&lt;br /&gt;&lt;br /&gt;But that's exactly why I went - to learn about new techniques, improve my skills, share my (limited) knowledge - and it all took place in a relaxed, friendly kind of way (although someone did suggest that it seemed like a kind of geeky fight club).&lt;br /&gt;&lt;br /&gt;So I'll definitely be going along to another dojo (if they'll have me).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12784757-4697111959866067648?l=blog.benlobo.co.uk' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.benlobo.co.uk/feeds/4697111959866067648/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=12784757&amp;postID=4697111959866067648' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12784757/posts/default/4697111959866067648'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12784757/posts/default/4697111959866067648'/><link rel='alternate' type='text/html' href='http://blog.benlobo.co.uk/2007/02/brighton-coding-dojo.html' title='Brighton coding dojo'/><author><name>Ben Lobo</name><uri>http://www.blogger.com/profile/00943840192119222645</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17969130812603100303'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12784757.post-6728821485287483873</id><published>2007-01-30T22:39:00.000Z</published><updated>2007-05-29T22:27:34.700Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='firebug'/><title type='text'>I found it useful. You could too! - Firebug</title><content type='html'>Today's useful thing is the &lt;a href="http://getfirebug.com/"&gt;Firebug extension for Firefox&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;If you're a web developer Firebug's an absolute must have. It's like a mechanic's pit for web pages. It lets you get right underneath and have a good tinker with all the elements that make up the page.&lt;br /&gt;&lt;br /&gt;Any one of its features would make a great tool in its own right. Like being able to edit the html code of a page in the browser and see immediately what effect the changes are going to have without even refreshing the page. But it's does so much more than that. You can edit, monitor and debug all the html, css and javascript that makes up any page - including data returned by Ajax calls. Take a look at &lt;a href="http://soylentfoo.jnewland.com/articles/2006/12/08/firebug-10-screencast"&gt;Jesse Newland's Firebug 1.0 screencast&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;If it's not already in your &lt;a href="http://benlobo.blogspot.com/2006/08/my-developers-toolkit.html"&gt;developer's toolkit&lt;/a&gt;, add it.&lt;br /&gt;&lt;br /&gt;One little hiccup: Firebug 1.0 has recently been released but a lot of users are experiencing a bug which prevents the styles from being displayed and can only be fixed by uninstalling Firefox and reinstalling it in a new directory. There's a &lt;a href="http://groups.google.com/group/firebug/browse_thread/thread/00b6a530059a7d1e/79a9fd41629ec0f9#79a9fd41629ec0f9"&gt;discussion about this on the Firebug blog&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I haven't done this yet as I'm hoping a better fix will be found and released soon and I don't fancy reinstalling Firefox.&lt;br /&gt;&lt;br /&gt;&lt;div style="margin: auto; width: 331px; text-align: center;"&gt;&lt;a href="http://www.flickr.com/photos/benlobo/374878539/" title="Firebug"&gt;&lt;img src="http://farm1.static.flickr.com/153/374894863_745690369c.jpg" alt="Screenshot showing a bug in Firebug 1.0" height="231" width="331" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;p&gt;Above: Screenshot showing Firebug 1.0's styles bug in the right hand pane.&lt;br /&gt;&lt;/p&gt;&lt;/div&gt;Despite this, I'd still recommend upgrading if you're still using version 0.4.&lt;br /&gt;&lt;br /&gt;Previous post in this series: &lt;a href="http://benlobo.blogspot.com/2007/01/i-found-it-useful-you-could-too-pilot.html"&gt;Enlarge TextArea&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12784757-6728821485287483873?l=blog.benlobo.co.uk' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.benlobo.co.uk/feeds/6728821485287483873/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=12784757&amp;postID=6728821485287483873' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12784757/posts/default/6728821485287483873'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12784757/posts/default/6728821485287483873'/><link rel='alternate' type='text/html' href='http://blog.benlobo.co.uk/2007/01/i-found-it-useful-you-could-too-firebug.html' title='I found it useful. You could too! - Firebug'/><author><name>Ben Lobo</name><uri>http://www.blogger.com/profile/00943840192119222645</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17969130812603100303'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12784757.post-3987897423364022963</id><published>2007-01-29T21:32:00.000Z</published><updated>2007-05-17T10:19:33.266Z</updated><title type='text'>Collaboration with Google Docs</title><content type='html'>Following a recent &lt;a href="http://hobointernet.com/ux/heuristic-evaluation"&gt;heuristic evaluation&lt;/a&gt;, &lt;a href="http://yandleblog.com/"&gt;Yandle&lt;/a&gt; and myself put &lt;a href="http://docs.google.com/"&gt;Google Docs&lt;/a&gt; collaboration capabilities to the test to write the report.&lt;br /&gt;&lt;br /&gt;&lt;div style="margin: auto; width: 250px;"&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/yandle/372104778/" title="Danny collaborating"&gt;&lt;img src="http://farm1.static.flickr.com/151/372104778_623f28b849_m.jpg" alt="Photo of Danny in front of his computer while editing a Google Docs documment" height="160" width="240" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/yandle/372104010/" title="Ben collaborating"&gt;&lt;img src="http://farm1.static.flickr.com/156/372104010_4b82493d49_m.jpg" alt="Photo of Ben in front of his computer while editing a Google Docs documment" height="160" width="240" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;p align="center"&gt;Above: Collaborating with silly faces.&lt;/p&gt;&lt;/div&gt;We were working in the same room on separate workstations so we could easily communicate and in the beginning we were being really careful about making sure that we weren't working on the same part of the document at the same time in case one of us accidentally wiped out something that the other was working on.&lt;br /&gt;&lt;br /&gt;However we quickly found that we didn't need to worry about this at all because the document was being autosaved so frequently. Every time it was saved the changes made by the other writer would be merged in seamlessly with our own changes. So in fact it was very rare for there to be any conflicts in what we were doing which gave us more time to shut up and get on with the task itself.&lt;br /&gt;&lt;br /&gt;Even when there was a rare conflict and the most recent changes were lost, the amount of changes that had been made between autosaves were so few that it was very easy to recover from.&lt;br /&gt;&lt;br /&gt;Additionally, if there had been a more serious loss of work, it would also probably have been easy to recover from as Google keeps multiple revisions of a document allowing you to go back and compare documents over time.&lt;br /&gt;&lt;br /&gt;Possibly the most difficult part of working with Google Docs was learning to trust the system and remembering not to press Control-S to save the document every ten seconds in case the application crashed.&lt;br /&gt;&lt;br /&gt;When one of the computers did crash there was no panic and we felt safe in the knowledge that, being an online application, the document wouldn't be lost even if the computer was dead forever.&lt;br /&gt;&lt;br /&gt;I'd definitely recommend using Google Docs as a collaboration tool and even as a plain old non-collaborative word processor (although I'd like to test it out with a few more simultaneous collaborators in different rooms to see whether it would deserve such a glowing report under those conditions).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12784757-3987897423364022963?l=blog.benlobo.co.uk' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.benlobo.co.uk/feeds/3987897423364022963/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=12784757&amp;postID=3987897423364022963' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12784757/posts/default/3987897423364022963'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12784757/posts/default/3987897423364022963'/><link rel='alternate' type='text/html' href='http://blog.benlobo.co.uk/2007/01/collaboration-with-google-docs.html' title='Collaboration with Google Docs'/><author><name>Ben Lobo</name><uri>http://www.blogger.com/profile/00943840192119222645</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17969130812603100303'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12784757.post-1712189342499457525</id><published>2007-01-24T23:27:00.000Z</published><updated>2007-01-25T00:01:29.589Z</updated><title type='text'>I found it useful. You could too!. (Pilot)</title><content type='html'>This is a pilot for a series of posts I'm calling "I found it useful. You could too!". The ratings will decide its future. Or if there's no ratings I'll decide cos I rule.&lt;br /&gt;&lt;br /&gt;Today's useful thing was introduced to me by &lt;a href="http://yandleblog.blogspot.com/"&gt;Yandle&lt;/a&gt;. It's a simple &lt;a href="http://en.wikipedia.org/wiki/Bookmarklet"&gt;bookmarklet&lt;/a&gt; that just increases the height of all the text area fields in a form on a web page. As most text areas in web forms are way too short for what you want to put in them, I found it useful. You could too! (now do you see where the title comes from?)&lt;br /&gt;&lt;br /&gt;To use it, just drag the link below into your bookmarks toolbar:&lt;br /&gt;&lt;br /&gt;&lt;a href="javascript:(function(){var i,x; for(i=0;x=document.getElementsByTagName(%22textarea%22)[i];++i) x.rows += 5; })()"&gt;Enlarge textarea&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Now find a page with text areas in a form, click on the bookmarklet and hey presto!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12784757-1712189342499457525?l=blog.benlobo.co.uk' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.benlobo.co.uk/feeds/1712189342499457525/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=12784757&amp;postID=1712189342499457525' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12784757/posts/default/1712189342499457525'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12784757/posts/default/1712189342499457525'/><link rel='alternate' type='text/html' href='http://blog.benlobo.co.uk/2007/01/i-found-it-useful-you-could-too-pilot.html' title='I found it useful. You could too!. (Pilot)'/><author><name>Ben Lobo</name><uri>http://www.blogger.com/profile/00943840192119222645</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17969130812603100303'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12784757.post-8172484438585317791</id><published>2007-01-24T23:05:00.000Z</published><updated>2007-01-25T09:42:56.181Z</updated><title type='text'>Jump on the snowwagon</title><content type='html'>Snow today in Brighton sent most of us into some kind of mental weather frenzy, including me. Use your eyes on these pics.&lt;br /&gt;&lt;br /&gt;&lt;div style="margin: auto; width: 240px;"&gt;&lt;a href="http://www.flickr.com/photos/benlobo/368488693/" title="Snowy Seagull"&gt;&lt;img src="http://farm1.static.flickr.com/169/368488693_e28bc1e93d_m.jpg" alt="Photo of the view from my balcony on a snowy day" height="159" width="240" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="margin: auto; width: 159px;"&gt;&lt;a href="http://www.flickr.com/photos/benlobo/368488695/" title="Snowy stairs"&gt;&lt;img src="http://farm1.static.flickr.com/149/368488695_313507a4e4_m.jpg" alt="Photo of stairs covered in snow" height="240" width="159" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12784757-8172484438585317791?l=blog.benlobo.co.uk' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.benlobo.co.uk/feeds/8172484438585317791/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=12784757&amp;postID=8172484438585317791' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12784757/posts/default/8172484438585317791'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12784757/posts/default/8172484438585317791'/><link rel='alternate' type='text/html' href='http://blog.benlobo.co.uk/2007/01/jump-on-snowwagon.html' title='Jump on the snowwagon'/><author><name>Ben Lobo</name><uri>http://www.blogger.com/profile/00943840192119222645</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17969130812603100303'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12784757.post-2199617456953065704</id><published>2007-01-22T09:29:00.000Z</published><updated>2007-01-22T09:44:46.552Z</updated><title type='text'>Postage to the BBC</title><content type='html'>If you don't have your own blog (or even if you do) and you feel like airing an opinion or just chewing the fat with a chance of it being read out to millions of listeners worldwide, go and post an entry on the &lt;a href="http://www.bbc.co.uk/blogs/fivelivebreakfast/2007/01/first_post.html"&gt;BBC Five Live radio's First Post site&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Yeah, it might just be a very cheap way for the BBC to get fresh content onto their site and keep it up in the search rankings but this is the BBC. It's not likely to be short of visitors, is it?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12784757-2199617456953065704?l=blog.benlobo.co.uk' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.benlobo.co.uk/feeds/2199617456953065704/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=12784757&amp;postID=2199617456953065704' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12784757/posts/default/2199617456953065704'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12784757/posts/default/2199617456953065704'/><link rel='alternate' type='text/html' href='http://blog.benlobo.co.uk/2007/01/postage-to-bbc.html' title='Postage to the BBC'/><author><name>Ben Lobo</name><uri>http://www.blogger.com/profile/00943840192119222645</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17969130812603100303'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12784757.post-2461166156423138322</id><published>2006-12-05T21:11:00.000Z</published><updated>2006-12-05T22:08:49.582Z</updated><title type='text'>Virtual embarrassment for a Second Life virgin</title><content type='html'>Today I created my first Second Life account. After five minutes I was floating in the clouds with no idea how to get back down. Hit the fly button - up, up and away.&lt;br /&gt;&lt;br /&gt;Well, isn't that what every newbie does (right after stripping all your clothes off, turning yourself into a woman and running around in the nod like a nutter)?&lt;br /&gt;&lt;br /&gt;So I logged out and in again (after waiting four minutes before it would let me back in for some reason) and found myself in some strange land full of non-newbies who all seemed to know what they were doing.&lt;br /&gt;&lt;br /&gt;Gone was the safety of the learning island where everyone was stumbling around with the same carefree ignorance as me. It wasn't that I was frightened or worried, but I did feel physically uncomfortable in that place surrounded by all those knowledgeable strangers.&lt;br /&gt;&lt;br /&gt;On reflection I put this emotional response down to real embarrassment and the need to fit in with the crowd. I didn't want others to see me for what I really was - an inadequate newbie.&lt;br /&gt;&lt;br /&gt;Given that, at the time, "I" was Charlie Lupino, an androgenous, vaguely humanoid avatar with a blue mohican, white underpants and the power of flight, that's a pretty powerful emotion.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12784757-2461166156423138322?l=blog.benlobo.co.uk' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.benlobo.co.uk/feeds/2461166156423138322/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=12784757&amp;postID=2461166156423138322' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12784757/posts/default/2461166156423138322'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12784757/posts/default/2461166156423138322'/><link rel='alternate' type='text/html' href='http://blog.benlobo.co.uk/2006/12/virtual-embarrassment-for-second-life.html' title='Virtual embarrassment for a Second Life virgin'/><author><name>Ben Lobo</name><uri>http://www.blogger.com/profile/00943840192119222645</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17969130812603100303'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12784757.post-115563114631371826</id><published>2006-08-15T09:30:00.000Z</published><updated>2006-08-15T08:39:06.326Z</updated><title type='text'>Movements towards web patterns</title><content type='html'>This is an &lt;a href="http://code.google.com/webstats/2005-12/classes.html"&gt;interesting set of statistics collected by Google&lt;/a&gt; that shows the most commonly used classes in web pages.&lt;br /&gt;&lt;br /&gt;Apart from the fact that 'footer', the most common class, and quite a few of the others should  probably be ids and not classes as you're not likely to have more than one occurrence in a page, this makes me think that perhaps we're not that far away from the types of &lt;a href="http://webstandardsgroup.org/audio/mp3/melbourne-060525-1.mp3"&gt;web patterns that John Allsopp is talking about&lt;/a&gt; (mp3).&lt;br /&gt;&lt;br /&gt;If most pages that use classes are already unknowingly using very similar naming conventions, maybe it wouldn't be too difficult to encourage and educate developers to adhere more closely to recognised and reusable patterns in their markup.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12784757-115563114631371826?l=blog.benlobo.co.uk' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.benlobo.co.uk/feeds/115563114631371826/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=12784757&amp;postID=115563114631371826' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12784757/posts/default/115563114631371826'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12784757/posts/default/115563114631371826'/><link rel='alternate' type='text/html' href='http://blog.benlobo.co.uk/2006/08/movements-towards-web-patterns.html' title='Movements towards web patterns'/><author><name>Ben Lobo</name><uri>http://www.blogger.com/profile/00943840192119222645</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17969130812603100303'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12784757.post-115502610542255715</id><published>2006-08-08T09:30:00.000Z</published><updated>2006-08-08T08:35:36.290Z</updated><title type='text'>My developer's toolkit</title><content type='html'>These are the tools that I currently use to develop websites. With the exception of Dreamweaver (which I'll be trying to migrate away from in favour of Nvu as soon as possible), they're all either open source or freely available services&lt;br /&gt;&lt;br /&gt;&lt;a href="https://addons.mozilla.org/firefox/60/"&gt;Firefox web developer's extension&lt;/a&gt; -  loads of tools for inspecting and testing web pages (Firefox extension)&lt;br /&gt;&lt;a href="http://subversion.tigris.org/"&gt;Subversion&lt;/a&gt; - Source file versioning system&lt;br /&gt;&lt;a href="http://tortoisesvn.tigris.org/"&gt;Tortoise SVN&lt;/a&gt; - Client for Subversion (Win)&lt;br /&gt;&lt;a href="http://www.adobe.com/products/dreamweaver/"&gt;Dreamweaver&lt;/a&gt; - Web authoring (not open source)&lt;br /&gt;&lt;a href="http://www.gimp.org"&gt; Gimp&lt;/a&gt; - Image editor&lt;br /&gt;&lt;a href="http://www.htmlkit.com/"&gt;HTML-Kit&lt;/a&gt; - Text editor&lt;br /&gt;&lt;a href="http://validator.w3.org/"&gt;HTML validator&lt;/a&gt; - HTML validation&lt;br /&gt;&lt;a href="http://jigsaw.w3.org/css-validator/"&gt;CSS validator&lt;/a&gt; - CSS validation&lt;br /&gt;&lt;a href="http://www.w3schools.com/"&gt;W3Schools&lt;/a&gt; - Reference resource for CSS, XHTML, Javascript, etc)&lt;br /&gt;&lt;a href="https://addons.mozilla.org/firefox/1843/"&gt;Firebug&lt;/a&gt; - DOM inspector with great tools for debugging AJAX development (Firefox extension)&lt;br /&gt;&lt;a href="https://addons.mozilla.org/firefox/655/"&gt;View Source Chart&lt;/a&gt; - Very accessible HTML source viewer&lt;br /&gt;&lt;br /&gt;The following aren't really tools but incredibly useful open source applications that make life a whole lot easier:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://apache.org/"&gt;Apache&lt;/a&gt; - Web server&lt;br /&gt;&lt;a href="http://www.squid-cache.org/"&gt;Squid&lt;/a&gt; - Caching server&lt;br /&gt;&lt;a href="http://zope.org/"&gt;Zope&lt;/a&gt; - Application server&lt;br /&gt;&lt;a href="http://plone.org"&gt;Plone&lt;/a&gt; - Content Management System (built on Zope)&lt;br /&gt;&lt;a href="http://www.python.org/"&gt;Python&lt;/a&gt; - Object oriented programming language&lt;br /&gt;&lt;br /&gt;The following are tools that I don't currently use but that I've heard good things about:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.nvu.com"&gt;Nvu&lt;/a&gt; - Website authoring&lt;br /&gt;&lt;a href="http://audacity.sourceforge.net/"&gt;Audacity&lt;/a&gt; - Audio editor&lt;br /&gt;&lt;a href="http://www.viksoe.dk/code/gmail.htm"&gt;GMail Drive&lt;/a&gt; - Virtual hard drive using GMail (Win)&lt;br /&gt;&lt;a href="http://gdisk.sourceforge.net"&gt;gDisk&lt;/a&gt; - Virtual hard drive using GMail (Mac) -&lt;br /&gt;&lt;a href="http://www.openrico.org"&gt;Rico&lt;/a&gt; - AJAX library&lt;br /&gt;&lt;a href="http://prototype.conio.net"&gt;Prototype&lt;/a&gt; - AJAX library&lt;br /&gt;&lt;a href="http://www.inkscape.org"&gt;Inkscape&lt;/a&gt; - Vector graphics&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12784757-115502610542255715?l=blog.benlobo.co.uk' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.benlobo.co.uk/feeds/115502610542255715/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=12784757&amp;postID=115502610542255715' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12784757/posts/default/115502610542255715'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12784757/posts/default/115502610542255715'/><link rel='alternate' type='text/html' href='http://blog.benlobo.co.uk/2006/08/my-developers-toolkit.html' title='My developer&apos;s toolkit'/><author><name>Ben Lobo</name><uri>http://www.blogger.com/profile/00943840192119222645</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17969130812603100303'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12784757.post-115265191010171318</id><published>2006-07-12T09:00:00.000Z</published><updated>2006-07-12T08:42:59.973Z</updated><title type='text'>d.Construct schedule announced</title><content type='html'>Following on from my geekish excitement about the news that &lt;a href="http://benlobo.blogspot.com/2006/06/dconstruct-2006-stays-in-brighton.html"&gt;dConstruct conference was staying in Brighton&lt;/a&gt;, imagine how happy I am now that the &lt;a href="http://2006.dconstruct.org/schedule/"&gt;conference schedule's been announced&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I'm exaggerating of course, but I am looking forward to it - just hope I get a ticket.&lt;br /&gt;&lt;br /&gt;Most notable for me about the schedule was the lack of a mention of "Web 2.0". It seems it's become pretty uncool to refer to it these days.&lt;br /&gt;&lt;br /&gt;Perhaps it's because the "Web 2.0" buzzword has done its job and has become too restrictive for what is now "Web 2.1" (although to call it that would be even less cool than Web 2.0).&lt;br /&gt;&lt;br /&gt;Maybe there are other reasons. I'd be interested to hear them.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12784757-115265191010171318?l=blog.benlobo.co.uk' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.benlobo.co.uk/feeds/115265191010171318/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=12784757&amp;postID=115265191010171318' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12784757/posts/default/115265191010171318'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12784757/posts/default/115265191010171318'/><link rel='alternate' type='text/html' href='http://blog.benlobo.co.uk/2006/07/dconstruct-schedule-announced.html' title='d.Construct schedule announced'/><author><name>Ben Lobo</name><uri>http://www.blogger.com/profile/00943840192119222645</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17969130812603100303'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12784757.post-115225544441378325</id><published>2006-07-07T07:50:00.001Z</published><updated>2006-07-09T09:47:24.596Z</updated><title type='text'>Free the PAS 78 guide!</title><content type='html'>Up until now, &lt;a href="http://www.bsi-global.com/ICT/PAS78/index.xalter"&gt;PAS 78&lt;/a&gt; (Publicly Available Specification), a guide to good practice in commissioning accessible websites, should have been called PASTAWCAI 78 (Pubclicly Available Specification To Anyone Who Can Afford It) because you had to pay £35 to download it.&lt;br /&gt;&lt;br /&gt;Fair enough - an honest day's pay for an honest day's work.&lt;br /&gt;&lt;br /&gt;Anyway, I guess that the authors of the guide have now recouped their costs and maybe a little bit of profit on top and they've now made it &lt;a href="http://www.drc.org.uk/pas"&gt;free to download&lt;/a&gt; (although when I tried the link it was unavailable).&lt;br /&gt;&lt;br /&gt;So if you're planning to commission a website and have any interest in &lt;a href="http://en.wikipedia.org/wiki/Web_accessibility"&gt;web accessibility&lt;/a&gt; (which you should) or if you're involved in &lt;a href="http://en.wikipedia.org/wiki/Web_development"&gt;web development&lt;/a&gt; in any way, go and get it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12784757-115225544441378325?l=blog.benlobo.co.uk' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.benlobo.co.uk/feeds/115225544441378325/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=12784757&amp;postID=115225544441378325' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12784757/posts/default/115225544441378325'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12784757/posts/default/115225544441378325'/><link rel='alternate' type='text/html' href='http://blog.benlobo.co.uk/2006/07/free-pas-78-guide.html' title='Free the PAS 78 guide!'/><author><name>Ben Lobo</name><uri>http://www.blogger.com/profile/00943840192119222645</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17969130812603100303'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12784757.post-115131159711460496</id><published>2006-06-27T09:30:00.000Z</published><updated>2006-06-27T08:37:16.333Z</updated><title type='text'>Choosing an open source CMS</title><content type='html'>Personally, I'd recommend &lt;a href="http://plone.org"&gt;Plone&lt;/a&gt; to anybody looking for an open source content management system (CMS). But perhaps I'm a little biased towards it because I've done a lot of work with Plone and I know how good it is. So here's an unbiased article about &lt;a href="http://internet.newsforge.com/internet/06/06/02/185227.shtml?tid=48&amp;tid=138&amp;amp;tid=13"&gt;how to choose an open source CMS&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Some argue that Plone is less suitable for small businesses and organisations but I disagree. Out of the box, Plone may be a little overblown for those who just need to get a small site up and running and want to be able to edit their own content.&lt;br /&gt;&lt;br /&gt;But Plone's flexibility means that it can be customized to remove or hide a lot of it's features until they become necessary, making it very easy to use.&lt;br /&gt;&lt;br /&gt;And, when the time comes to expand the site and add features and functionality (which it will), Plone can handle it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12784757-115131159711460496?l=blog.benlobo.co.uk' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.benlobo.co.uk/feeds/115131159711460496/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=12784757&amp;postID=115131159711460496' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12784757/posts/default/115131159711460496'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12784757/posts/default/115131159711460496'/><link rel='alternate' type='text/html' href='http://blog.benlobo.co.uk/2006/06/choosing-open-source-cms.html' title='Choosing an open source CMS'/><author><name>Ben Lobo</name><uri>http://www.blogger.com/profile/00943840192119222645</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='17969130812603100303'/></author><thr:total>0</thr:total></entry></feed>