<?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-178146493687263214</id><updated>2011-04-22T00:01:24.293+01:00</updated><title type='text'>Technical Inspirations</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://technical-inspirations.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/178146493687263214/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://technical-inspirations.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Glen</name><uri>http://www.blogger.com/profile/13873806269837388050</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://farm1.static.flickr.com/112/302779563_b030b687e8_m.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>12</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-178146493687263214.post-5239657017086113719</id><published>2008-04-21T10:38:00.015+01:00</published><updated>2008-04-25T11:55:52.518+01:00</updated><title type='text'>Reading RSS (XML) feeds in PHP5 - Part 2</title><content type='html'>&lt;div style="text-align: left;"&gt;After adding my blog as a news feed last week, I decided it would be much tidier to restrict the number of blog entries on each page . This should reduce time to render the page, and most blog entries that are read will be the more recent ones anyway. The inclusion of Next/Previous buttons would still allow the reader to navigate through other blog posts.&lt;br /&gt;&lt;br /&gt;Clearly, the page request would have to be processed seperately for each batch of posts, so this requires some changes to the page that calls the underlying function. The new inline page PHP code looks like this:&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: ‘Courier New’, Courier, monospace;white-space: pre;line-height: 1.4em;margin: 1em 0;border: 1px dashed #aaa8a8;padding: 0.5em 0 0.3em 0.5em;font-size: 100%;color: #ffffff;background-color: #000000;overflow: auto;max-width: 100%;"&gt;$nEntriesPerPage = 5;&lt;br /&gt;$blogIndex = (int) $_GET["index"];&lt;br /&gt;$foo = doShowBlogSections($blogs[0], $blogIndex, $nEntriesPerPage); &lt;/div&gt;&lt;br /&gt;The number of entries to be show per page is 5 and by casting the index to an integer, if it isnt passed through by the page, we default it to zero.&lt;br /&gt;Next Up is the function itself, the doShowBlogSections call does this:&lt;br /&gt;&lt;div style="font-family: ‘Courier New’, Courier, monospace;white-space: pre;line-height: 1.4em;margin: 1em 0;border: 1px dashed #aaa8a8;padding: 0.5em 0 0.3em 0.5em;font-size: 100%;color: #ffffff;background-color: #000000;overflow: auto;max-width: 100%;"&gt;&lt;br /&gt;function doShowBlogSections($blogURL, $blogEntryIndex, $nBlogEntries) {&lt;br /&gt; // get rss feed contents&lt;br /&gt; $library = @simplexml_load_file($blogURL);&lt;br /&gt; $i=0;&lt;br /&gt;&lt;br /&gt; // loop over each entry and output if relevant and possible&lt;br /&gt; $needNextButton = false;&lt;br /&gt; foreach ($library-&gt;entry as $entry) {&lt;br /&gt;  // only show nBlogEntries...if we exit the loop normally, no next button required&lt;br /&gt;  if ( ($i) == ($nBlogEntries+$blogEntryIndex) ) {&lt;br /&gt;     $needNextButton = true; // having to bail - there are more entries available&lt;br /&gt;     break;&lt;br /&gt;  }&lt;br /&gt;  // only output blog entries from blogEntryIndex onwards&lt;br /&gt;  if ($i &gt;= $blogEntryIndex ) {&lt;br /&gt;     echo "&amp;lt;p&amp;gt;";&lt;br /&gt;     echo "Title: ".$entry-&gt;title."&amp;lt;br /&amp;gt;\n";&lt;br /&gt;     $pubDate = $entry-&gt;published;&lt;br /&gt;     // sort out obscure date format used by blogger.com&lt;br /&gt;     if ( $pubDate = strtotime($pubDate) ) {&lt;br /&gt;        // we have a valid unix timestamp value from the date string&lt;br /&gt;        $pubDate = date("F j, Y, g:i a", $pubDate);&lt;br /&gt;        echo "Published on ".$pubDate."&amp;lt;/p&amp;gt;\n";&lt;br /&gt;        }&lt;br /&gt;        else {&lt;br /&gt;        // give up and just output in whatever format the date/time is in&lt;br /&gt;        echo "Published on ".$entry-&gt;published."&amp;lt;/p&amp;gt;\n";&lt;br /&gt;        }&lt;br /&gt;        echo "&amp;lt;div&amp;gt;".$entry-&gt;content."&amp;lt;/div&amp;gt;\n";&lt;br /&gt;  }&lt;br /&gt;  $i++;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; // Provide suitable Next and Previous buttons&lt;br /&gt; if ( $blogEntryIndex == 0 ) $needPreviousButton = false;&lt;br /&gt; else $needPreviousButton = true;&lt;br /&gt; $blogPreviousIndex = $blogEntryIndex - 5;&lt;br /&gt; if ($blogPreviousIndex &lt; 0 ) $blogPreviousIndex = 0;&lt;br /&gt; $blogNextIndex = $i;&lt;br /&gt; &lt;br /&gt; $thisPage =  $_SERVER['PHP_SELF']; // need to be self referencing for page name&lt;br /&gt; echo "&amp;lt;p&amp;gt;";&lt;br /&gt; if ($needPreviousButton) echo "&amp;lt;a href=".$thisPage."?index=".$blogPreviousIndex."&amp;gt;&amp;lt;&amp;lt;&amp;lt; Previous&amp;lt;/a&amp;gt;";&lt;br /&gt; if ($needPreviousButton &amp;&amp; $needNextButton) echo '&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;';&lt;br /&gt; if ($needNextButton) echo "&amp;lt;a href=".$thisPage."?index=".$blogNextIndex."&amp;gt;Next &amp;gt;&amp;gt;&amp;gt;&amp;lt;/a&amp;gt;";&lt;br /&gt; echo "&amp;lt;/p&amp;gt;";&lt;br /&gt; &lt;br /&gt;}&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;It should be fairly self explanatory as the code has a liberal sprinkling of comments. Other enhancements that I may add at a a later date include:&lt;br /&gt;&lt;/div&gt;&lt;ul style="text-align: left;"&gt;&lt;br /&gt;&lt;li&gt;First and Last buttons&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Some indication of total number of log entries and where you are in that list&lt;/li&gt;&lt;br /&gt;&lt;li&gt;a list of blog entry titles and dates as clickable links&lt;/li&gt;&lt;br /&gt;&lt;li&gt;a link to the comment page&lt;br /&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/178146493687263214-5239657017086113719?l=technical-inspirations.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technical-inspirations.blogspot.com/feeds/5239657017086113719/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=178146493687263214&amp;postID=5239657017086113719' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/178146493687263214/posts/default/5239657017086113719'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/178146493687263214/posts/default/5239657017086113719'/><link rel='alternate' type='text/html' href='http://technical-inspirations.blogspot.com/2008/04/reading-rss-xml-feeds-in-php5-part-2_21.html' title='Reading RSS (XML) feeds in PHP5 - Part 2'/><author><name>Glen</name><uri>http://www.blogger.com/profile/13873806269837388050</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://farm1.static.flickr.com/112/302779563_b030b687e8_m.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-178146493687263214.post-6628812193348521554</id><published>2008-04-18T11:07:00.006+01:00</published><updated>2008-04-25T11:56:06.765+01:00</updated><title type='text'>Reading RSS (XML) feeds in PHP5 - Part 1</title><content type='html'>&lt;div style="text-align: left;"&gt;Another new addition to the website, is the reading in of RSS feeds from my blogs. This seemed much harder than it actually was, especially was I got my head around the built in PHP5 XML functions. In essence, you just call @simplexml_load_file("the_xml_url") and the loop over each entry. The hardest part is working out what the section names are within the xml file, and you can just load the XML into a text editor to find out. The code I am using goes as follows:&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: ‘Courier New’, Courier, monospace;white-space: pre;line-height: 1.4em;margin: 1em 0;border: 1px dashed #aaa8a8;padding: 0.5em 0 0.3em 0.5em;font-size: 100%;color: #ffffff;background-color: #000000;overflow: auto;max-width: 100%;"&gt;&lt;br /&gt;function doSimpleShowBlog($blogURL) {&lt;br /&gt;  // get rss feed contents&lt;br /&gt;  $library = @simplexml_load_file($blogURL);&lt;br /&gt;  // loop over each entry&lt;br /&gt;  foreach ($library-&gt;entry as $entry) { &lt;br /&gt;   echo "&amp;lt;p&amp;gt;";&lt;br /&gt;   echo "Title: ".$entry-&gt;title."&amp;lt;br /&amp;gt;\n";&lt;br /&gt;   echo "Published: ".$entry-&gt;published."&amp;lt;/p&amp;gt;\n";&lt;br /&gt;   echo "&amp;lt;div&amp;gt;".$entry-&gt;content."&amp;lt;/div&amp;gt;\n";&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Simple huh! Some error checking and so on is recommended but this works for me. An example can be found here.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/178146493687263214-6628812193348521554?l=technical-inspirations.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technical-inspirations.blogspot.com/feeds/6628812193348521554/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=178146493687263214&amp;postID=6628812193348521554' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/178146493687263214/posts/default/6628812193348521554'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/178146493687263214/posts/default/6628812193348521554'/><link rel='alternate' type='text/html' href='http://technical-inspirations.blogspot.com/2008/04/reading-rss-xml-feeds-in-php5.html' title='Reading RSS (XML) feeds in PHP5 - Part 1'/><author><name>Glen</name><uri>http://www.blogger.com/profile/13873806269837388050</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://farm1.static.flickr.com/112/302779563_b030b687e8_m.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-178146493687263214.post-5222402244149586730</id><published>2008-04-15T19:58:00.001+01:00</published><updated>2008-04-25T11:59:49.982+01:00</updated><title type='text'>New website</title><content type='html'>&lt;div style="text-align: left;"&gt;Well, my new website is up and running (&lt;a href="http://www.blogger.com/www.birkbeck.org.uk"&gt;www.birkbeck.org.uk&lt;/a&gt;) using a modified version of the &lt;a href="http://design.tedforbes.com/"&gt;Satellite&lt;/a&gt; v1.5 PHP scripts. As time goes on, I will be adding functionality - including feeds from this and other blogs of mine - and finally taking some time out to learn some PHP.&lt;br /&gt;&lt;br /&gt;Most recently,  I have been working to get a Flickr Tag Cloud working in a way I like. The original scaled the font according to the number of occurrences of each tag, but the distribution of occurrences was very wide - for instance, most images are tagged with England, Britain and UK. The order of magnitude difference between the most used tags and the majority of tags is very large and the way it had been coded meant that only those tags used in approx 70% or more of the photos in my stream were shown in anything other than the smallest font. The code below is a snippet I have added to calculate font sizes based on a normalised distribution of occurrences.&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: ‘Courier New’, Courier, monospace;white-space: pre;line-height: 1.4em;margin: 1em 0;border: 1px dashed #aaa8a8;padding: 0.5em 0 0.3em 0.5em;font-size: 100%;color: #ffffff;background-color: #000000;overflow: auto;max-width: 100%;"&gt;&lt;br /&gt;// Calc font size for a normalised distribution........&lt;br /&gt;// First build array of total counts for each tag count&lt;br /&gt;$i = 0;&lt;br /&gt;foreach ($theCount as $count) { $tagCounter[$i] = $count; $i++; }&lt;br /&gt;// sort array of counts&lt;br /&gt;sort($tagCounter);&lt;br /&gt;// Remove duplicates&lt;br /&gt;$sortedTagCounts = array_unique($tagCounter);&lt;br /&gt;// create an array of preset font sizes determine by tag count&lt;br /&gt;$totalTags = count($sortedTagCounts);&lt;br /&gt;$fontRange = $maxFontSize - $minFontSize;&lt;br /&gt;$fontSizeMultiplier = (($fontRange-$minFontSize+1)/$totalTags);&lt;br /&gt;$i=0;&lt;br /&gt;foreach ($sortedTagCounts as $tagOccurrence) {&lt;br /&gt; $tagOccurrencesMappedToFontSizes[$tagOccurrence] = $i*$fontSizeMultiplier)+$minFontSize;&lt;br /&gt; $i++;&lt;br /&gt;}&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;In essence, I create a sorted list of tag occurrence frequencies, e.g. one tag may occur 8 times, another may be used over 1000 times. In all, there may be 50 different occurrence numbers. If two different tags are used 10 times each, then this is one entry in the list. Then, I created an array based on each number of occurrences that holds the font size.&lt;br /&gt;&lt;br /&gt;Later in the code (not shown here), when I loop  through the tags I just use the occurrence frequency as an index into the array of font sizes. There may be easier ways to accomplish this, but I am reasonable happy with it, particularly given my lack of knowledge regarding PHP syntax and built-in functions.&lt;br /&gt;&lt;br /&gt;I am working on a revised version of the code and plan to release the full source code, once I have added integral blog pages, but first need to write some PHP to feed that in via XML and RSS. In the meantime, if you want a copy of the code, drop me an email.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/178146493687263214-5222402244149586730?l=technical-inspirations.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technical-inspirations.blogspot.com/feeds/5222402244149586730/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=178146493687263214&amp;postID=5222402244149586730' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/178146493687263214/posts/default/5222402244149586730'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/178146493687263214/posts/default/5222402244149586730'/><link rel='alternate' type='text/html' href='http://technical-inspirations.blogspot.com/2008/04/new-website.html' title='New website'/><author><name>Glen</name><uri>http://www.blogger.com/profile/13873806269837388050</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://farm1.static.flickr.com/112/302779563_b030b687e8_m.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-178146493687263214.post-6756688967577271710</id><published>2007-07-28T19:29:00.000+01:00</published><updated>2008-04-20T19:35:11.289+01:00</updated><title type='text'>Xorg config for Iiyama Vision Master 1451 under Ubuntu</title><content type='html'>&lt;div style="text-align: left;"&gt;As Ubuntu did not recognise this by default, it requires some jiggery pokery with the X config. Before editing, it is recommended that you make a backup of the file /etc/X11/xorg.conf, then modify the Monitor section as follows:&lt;br /&gt;&lt;br /&gt;Section "Monitor"&lt;br /&gt;Identifier "iiyama Vision Master 1451"&lt;br /&gt;Option "DPMS"&lt;br /&gt;HorizSync 28-80&lt;br /&gt;VertRefresh 75-75&lt;br /&gt;EndSection&lt;br /&gt;&lt;br /&gt;...and also change the Monitor value in the Screen section to match the Identifier, in this case to be "iiyama Vision Master 1451"&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/178146493687263214-6756688967577271710?l=technical-inspirations.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technical-inspirations.blogspot.com/feeds/6756688967577271710/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=178146493687263214&amp;postID=6756688967577271710' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/178146493687263214/posts/default/6756688967577271710'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/178146493687263214/posts/default/6756688967577271710'/><link rel='alternate' type='text/html' href='http://technical-inspirations.blogspot.com/2007/07/xorg-config-for-iiyama-vision-master.html' title='Xorg config for Iiyama Vision Master 1451 under Ubuntu'/><author><name>Glen</name><uri>http://www.blogger.com/profile/13873806269837388050</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://farm1.static.flickr.com/112/302779563_b030b687e8_m.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-178146493687263214.post-7205263540059495643</id><published>2007-07-25T18:31:00.000+01:00</published><updated>2008-04-20T19:35:42.007+01:00</updated><title type='text'>Ubuntu performance improvements</title><content type='html'>&lt;div style="text-align: left;"&gt;If you have 1GB of memory of more, reduce the virtual memory usage....&lt;br /&gt;$ sudo cat /proc/sys/vm/swappiness&lt;br /&gt;60&lt;br /&gt;$ sudo sysctl -w vm.swappiness=10&lt;br /&gt;vm.swappiness = 10&lt;br /&gt;&lt;br /&gt;To make the change permanent&lt;br /&gt;sudo gedit /etc/sysctl.conf&lt;br /&gt;Add the above line (vm.swap...) to the end of the file and save&lt;br /&gt;&lt;br /&gt;More useful performance stuff can be found at the &lt;a href="http://ubuntuforums.org/showthread.php?t=189192/"&gt;Ubuntu Forums&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Details on how to update your kernel to ensure you have one optimised for your processor can be found &lt;a href="http://ubuntuforums.org/showthread.php?t=85917"&gt;here&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/178146493687263214-7205263540059495643?l=technical-inspirations.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technical-inspirations.blogspot.com/feeds/7205263540059495643/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=178146493687263214&amp;postID=7205263540059495643' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/178146493687263214/posts/default/7205263540059495643'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/178146493687263214/posts/default/7205263540059495643'/><link rel='alternate' type='text/html' href='http://technical-inspirations.blogspot.com/2007/07/ubuntu-performance-improvements.html' title='Ubuntu performance improvements'/><author><name>Glen</name><uri>http://www.blogger.com/profile/13873806269837388050</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://farm1.static.flickr.com/112/302779563_b030b687e8_m.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-178146493687263214.post-7226245462519210513</id><published>2007-07-23T05:04:00.000+01:00</published><updated>2008-04-20T19:35:53.947+01:00</updated><title type='text'>Digital Image Management - and the winner is.......digiKam</title><content type='html'>&lt;div style="text-align: left;"&gt;Nothing so far meets all my requirements. Picasa is a shade too slow and unwieldy running under WINE (admirable though it is to work at all!). F-Photo is even slower handling my RAW Nikon NEF files.&lt;br /&gt;&lt;br /&gt;After lots of searching around I have settled on using &lt;a href="http://www.digikam.org/"&gt;digiKam&lt;/a&gt;, though it is touted as being for KDE, it seems to run fine under Gnome. There are a few niggles, including the viewer not rotating portrait orientation images when you zoom in and the built in image editor is a little quirky in comparison to Picasa (though it is more powerful). For any proper image editing I will fall back on using GIMP.&lt;br /&gt;&lt;br /&gt;The package has a built in LightTable that I am still trying to understand and has the facility for exporting to jpg and uploading to Flickr (via jUploadr). It allows the images to be organised as they are found on disk - for me this means YYYY/YYYY-MM-DD-place-or-event, includes tagging, but seemingly doesnt allow images to be stacked.&lt;br /&gt;&lt;br /&gt;Some of the above may be due to my lack of understanding as I am still on the beginning of the learning curve - it has quite a wealth of features.&lt;br /&gt;&lt;br /&gt;Other required functions I will either script or knock something together using MonoDevelop - a good excuse to get up to speed on c# and the GTK# toolkit.&lt;br /&gt;&lt;br /&gt;If you feel like installing it, follow instructions at &lt;a href="http://www.digikam.org/?q=download/binary/"&gt;http://www.digikam.org/?q=download/binary/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Note: To get the "Archive to CD" function working, I needed to "sudo apt-get k3b" - A CD/DVD burning packing (although I could possibly have changed the default burning application)&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/178146493687263214-7226245462519210513?l=technical-inspirations.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technical-inspirations.blogspot.com/feeds/7226245462519210513/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=178146493687263214&amp;postID=7226245462519210513' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/178146493687263214/posts/default/7226245462519210513'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/178146493687263214/posts/default/7226245462519210513'/><link rel='alternate' type='text/html' href='http://technical-inspirations.blogspot.com/2007/07/digital-image-management-and-winner.html' title='Digital Image Management - and the winner is.......digiKam'/><author><name>Glen</name><uri>http://www.blogger.com/profile/13873806269837388050</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://farm1.static.flickr.com/112/302779563_b030b687e8_m.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-178146493687263214.post-6562468820344374143</id><published>2007-07-19T21:09:00.000+01:00</published><updated>2008-04-20T19:36:05.859+01:00</updated><title type='text'>Image workflow and management</title><content type='html'>&lt;div style="text-align: left;"&gt;Ok, USB problems resolved (kind of - in USB1.1 mode), it is time to start thinking about my digital image workflow and management. This will not be a quick fix, there is not a single solution that meets all of my requirements, but that is part of the motivation for moving to Ubuntu/Linux - to find the tools that do meet individual requirements if possible and then glue them all together somehow.&lt;br /&gt;&lt;br /&gt;So, what do I need? Some of the things on my wishlist include...&lt;br /&gt;1 - Automation of copying from USB device (camera or card reader) to main photo directory&lt;br /&gt;- user defined parent location&lt;br /&gt;- directory name from date time of import or shooting with optional location suffix&lt;br /&gt;- bulk rename&lt;br /&gt;2 - Quick Review&lt;br /&gt;- ala picasa - an opportunity to quickly review and remove and "duds"&lt;br /&gt;- permanent deletion&lt;br /&gt;3 - Tagging&lt;br /&gt;- of the full set or partial set, perhaps location names etc&lt;br /&gt;- Rating system?&lt;br /&gt;4 - Archive new photoset&lt;br /&gt;- To CD/DVD, multiple copies&lt;br /&gt;- Split across media?&lt;br /&gt;- serialised numbering system for restoring?&lt;br /&gt;- offsite/onsite copies&lt;br /&gt;5 - Review and basic changes&lt;br /&gt;- ala picasa, changes stored as text files&lt;br /&gt;- more tagging?&lt;br /&gt;- deletions - stored thumbs and changes if archive has been created otherwise warn&lt;br /&gt;6 - Backup/Archive&lt;br /&gt;- to network or usb attached storage&lt;br /&gt;7 - Uploads to photosite&lt;br /&gt;- plug in interface for different sites&lt;br /&gt;- autotag ref number to allow location of original from photosite&lt;br /&gt;- name - description - groups - tags&lt;br /&gt;8 - Advanced editing&lt;br /&gt;- start 3rd party app&lt;br /&gt;- somehow track changes (stacked photos?)&lt;br /&gt;9 - Storing changes&lt;br /&gt;- .myapp sub directory inside each photo folder&lt;br /&gt;- individual text files for each set and for each image&lt;br /&gt;- thumbs - 160x100 jpgs - even of archived&lt;br /&gt;- ability to access work from multiple machines&lt;br /&gt;- ability to work on either local or network copy and two way sync the changes&lt;br /&gt;&lt;br /&gt;Hmmm, I dont want much then! There are some apps out there already, such as F-Spot, but having tried it, it is slow and doesnt really meet many of my requirements, though F-Spot is written in C# so there may be some opportunity to extend or change its behaviour and functionality.&lt;br /&gt;&lt;br /&gt;I need to think about each part of the above in depth!&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/178146493687263214-6562468820344374143?l=technical-inspirations.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technical-inspirations.blogspot.com/feeds/6562468820344374143/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=178146493687263214&amp;postID=6562468820344374143' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/178146493687263214/posts/default/6562468820344374143'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/178146493687263214/posts/default/6562468820344374143'/><link rel='alternate' type='text/html' href='http://technical-inspirations.blogspot.com/2007/07/image-workflow-and-management.html' title='Image workflow and management'/><author><name>Glen</name><uri>http://www.blogger.com/profile/13873806269837388050</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://farm1.static.flickr.com/112/302779563_b030b687e8_m.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-178146493687263214.post-171754373401678060</id><published>2007-07-18T07:13:00.000+01:00</published><updated>2008-04-20T19:36:17.992+01:00</updated><title type='text'>USB 2 bug?</title><content type='html'>&lt;div style="text-align: left;"&gt;Damn and blast, just when I thought it was safe....copying bulk amounts of data to my external USB2 disk seems to be problematic. It seems that copying large files (meaning in the 5-100MB range) works ok but copying alot of smaller files causes some kind of buffer overrun and the drive disconnects. It looks like some kind of caching problem, not all drives or USB controllers are affected, obviously mine is.&lt;br /&gt;&lt;br /&gt;Reports and dissection can be found &lt;a href="https://bugs.launchpad.net/ubuntu/+source/linux-source-2.6.20/+bug/61235" target="_parent"&gt;here&lt;/a&gt; and a more recent bug report &lt;a href="https://bugs.launchpad.net/ubuntu/+source/linux-source-2.6.20/+bug/117138"&gt;here&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Useful commands:&lt;br /&gt;&lt;/div&gt;&lt;ul style="text-align: left;"&gt;&lt;li&gt;dmesg | tail -20&lt;/li&gt;&lt;br /&gt;&lt;li&gt;lsusb&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;One workaround is to run the command "sudo modprobe -r ehci_hcd" to drop down to USB1.1 - so I will give that a try. There are a couple of other suggestions, such as hacking max_sectors or altering kernel details and recompiling, but if the modprobe works I will add it to my login script until an official fix becomes available.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/178146493687263214-171754373401678060?l=technical-inspirations.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technical-inspirations.blogspot.com/feeds/171754373401678060/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=178146493687263214&amp;postID=171754373401678060' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/178146493687263214/posts/default/171754373401678060'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/178146493687263214/posts/default/171754373401678060'/><link rel='alternate' type='text/html' href='http://technical-inspirations.blogspot.com/2007/07/usb-2-bug.html' title='USB 2 bug?'/><author><name>Glen</name><uri>http://www.blogger.com/profile/13873806269837388050</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://farm1.static.flickr.com/112/302779563_b030b687e8_m.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-178146493687263214.post-2162547030451623227</id><published>2007-07-17T19:28:00.000+01:00</published><updated>2008-04-20T19:36:28.559+01:00</updated><title type='text'>Mounting NFS server at boot time</title><content type='html'>&lt;div style="text-align: left;"&gt;Working on being able to access all my data from initial Ubuntu boot without any command line jiggery pokery. A quick edit of the disks to mount at boot time:&lt;br /&gt;&lt;em&gt; sudo vi /etc/fstab&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;Adding the following line at the bottom of the file&lt;br /&gt;&lt;em&gt;tux:/home       /net  nfs     rw,soft,intr,rsize=8192 0       0&lt;/em&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/178146493687263214-2162547030451623227?l=technical-inspirations.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technical-inspirations.blogspot.com/feeds/2162547030451623227/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=178146493687263214&amp;postID=2162547030451623227' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/178146493687263214/posts/default/2162547030451623227'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/178146493687263214/posts/default/2162547030451623227'/><link rel='alternate' type='text/html' href='http://technical-inspirations.blogspot.com/2007/07/mounting-nfs-server-at-boot-time.html' title='Mounting NFS server at boot time'/><author><name>Glen</name><uri>http://www.blogger.com/profile/13873806269837388050</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://farm1.static.flickr.com/112/302779563_b030b687e8_m.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-178146493687263214.post-1495223969305956121</id><published>2007-07-17T17:18:00.000+01:00</published><updated>2008-04-20T19:37:06.105+01:00</updated><title type='text'>Firefox Addons</title><content type='html'>Continuing the theme of configuring my new Ubuntu/Linux environment I find myself missing those Firefox addons that make life easier. A quick wander across to the &lt;a href="https://addons.mozilla.org/en-US/firefox/" target="_parent"&gt;official addon page&lt;/a&gt; yields&lt;br /&gt;&lt;ul style="text-align: left;"&gt;&lt;li&gt;British dictionary (my spelling is actually pretty good, even if I do say so myself, but my typing is appalling)&lt;/li&gt;&lt;li&gt;GreaseMonkey - for all those handy flickr hacks&lt;/li&gt;&lt;li&gt;Del.icio.us - as I am hoping to have my bookmarks/favourites accessible anywhere&lt;/li&gt;&lt;/ul&gt;Next up is the &lt;a href="http://www.flickr.com/groups/flickrhacks/" target="_parent"&gt;Flickr Greasemonkey Hacks&lt;/a&gt;. This is a real pain, as whenever I setup a new PC, I have to go and grub around for the ones I use, even thought there isnt that many, at least if I list them here, I have something to refer to in the future....&lt;br /&gt;&lt;ul style="text-align: left;"&gt;&lt;li&gt;&lt;a href="http://6v8.gamboni.org/Flickr-Add-referer-into-comments.html" target="_parent"&gt;Flickr Referer into Comments&lt;/a&gt; - adds the seen in text to your comments&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.flickr.com/photos/steeev/164069585/" target="_parent"&gt;Group Pool Admin: Warn + Delete&lt;/a&gt; - does pretty much what it says on the tin&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.flickr.com/groups/flickrhacks/discuss/72157594482547285/?search=best+scripts" target="_parent"&gt;Flickr Buddy Icon Reply v3&lt;/a&gt; - to add the graphic of people you are replying to in comments and threads&lt;/li&gt;&lt;/ul&gt;If you have come across any other really useful stuff like this, let me know.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/178146493687263214-1495223969305956121?l=technical-inspirations.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technical-inspirations.blogspot.com/feeds/1495223969305956121/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=178146493687263214&amp;postID=1495223969305956121' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/178146493687263214/posts/default/1495223969305956121'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/178146493687263214/posts/default/1495223969305956121'/><link rel='alternate' type='text/html' href='http://technical-inspirations.blogspot.com/2007/07/firefox-addons.html' title='Firefox Addons'/><author><name>Glen</name><uri>http://www.blogger.com/profile/13873806269837388050</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://farm1.static.flickr.com/112/302779563_b030b687e8_m.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-178146493687263214.post-4745715806687534258</id><published>2007-07-17T04:12:00.000+01:00</published><updated>2008-04-20T19:37:15.528+01:00</updated><title type='text'>Useful unix command....so I dont forget...cp</title><content type='html'>&lt;div style="text-align: left;"&gt;cp -uvr /home/photos/2007/* /media/EXTDISK/photos/2007/&lt;br /&gt;&lt;br /&gt;I'm always forgetting the optimum syntax, must be my memory in my old age, but this one is likely to be used fairly frequently&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/178146493687263214-4745715806687534258?l=technical-inspirations.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technical-inspirations.blogspot.com/feeds/4745715806687534258/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=178146493687263214&amp;postID=4745715806687534258' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/178146493687263214/posts/default/4745715806687534258'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/178146493687263214/posts/default/4745715806687534258'/><link rel='alternate' type='text/html' href='http://technical-inspirations.blogspot.com/2007/07/useful-unix-commandso-i-dont-forgetcp.html' title='Useful unix command....so I dont forget...cp'/><author><name>Glen</name><uri>http://www.blogger.com/profile/13873806269837388050</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://farm1.static.flickr.com/112/302779563_b030b687e8_m.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-178146493687263214.post-2717795062175428926</id><published>2007-07-17T01:20:00.000+01:00</published><updated>2008-04-20T19:37:24.506+01:00</updated><title type='text'>Goodbye M$ Windows</title><content type='html'>&lt;div style="text-align: left;"&gt;&lt;span style="text-decoration: underline;"&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/span&gt;&lt;strong&gt;But Why?&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Having given it some thought over several weeks about wiping my hard disk and installing a Linux variant, I had just about decided on Ubuntu when I received a USB2 external disk and PCI card which I failed miserably to get working under Windows XP, no matter how much shuffling of existing cards and resources that I did.&lt;br /&gt;&lt;br /&gt;Not good timing though, with the local Middlesbrough Mela a day away. I had previously shot all photos in NEF (Nikon's RAW file format) and had a workflow that was fairly quick and simple based around Google's Picasa.&lt;br /&gt;&lt;br /&gt;Yet I am getting ahead of myself. Why would I want to do this, really I mean. I have a legit installation of XP Pro, but certain things frustrate me, its time for a change and I really want something I can extend myself with scripts, tools, etc. My software development skills have fallen out of date and it is time to get up to speed with some of the more recent developments of the last few years. I also want better integration, from my desktop, internet, 3G mobile, of all the tools I use, email, calendering, contacts, bookmarks, the whole shebang. Maybe its a pipe dream? With all my data backed up on my Fedora Core 4 Linux server, email exported and bookmarks consigned to the bin, it is time to take the plunge.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Ubuntu Linux&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Downloading and burning a copy of &lt;a href="http://www.ubuntu.com/" target="_parent"&gt;Ubuntu&lt;/a&gt; Feisty is fairly easy and straight forward. Installing should have been - a minimal set of questions, going with the defaults for most things, but life wasnt that simple. The partitioning was done within minutes, but make filesystem sat and hung at 5%, grrrrr. Several attempts later, I gave up on ext3 and changed the settings for an ext2 filesystem. Damn it is slow to create the filesystem, if you are doing this - allow several hours.&lt;br /&gt;&lt;br /&gt;The good news is that the sound drivers, network card, USB interfaces and external disks all worked straight off the bat.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Nvidia Graphics Drivers&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Slight problem-ette - screen resolution is poor, the install didnt seem to recognise my Nvidia GeForce3 card. No amount of "sudo apt-get install" seemed to bear fruit, but the light at the end of the tunnel was &lt;a href="http://www.ubuntu.com/" target="_parent"&gt;AutoMatix&lt;/a&gt; - which installed and configured the drivers for me as "Restricted Drivers" - phew! Without a decent screen resolution it would have been goodbye Ubuntu.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Other applications&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;I followed a few blog entries from others and installed additional applications with the built in Add/Remove tool where the packages where I could - trying to follow the rules as much as possible. For the rest, I turned to AutoMatix. What did I want that wasnt in the default install? Hmmm, things like - Opera, gFTP, BloGTK, Vmware Server, GnuCash, MonoDevelop, MP3 player (including codecs), SAMBA (for sharing disks and printers with other Windows machines like the kids), etc.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Photo Manipulation Stuff&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Having been to the Mela (did I mention the install took a while), I had a bunch of pictures to process and the available in tools were just way too slow and tedious to use. This is no different to XP, but on Windows, there was always Picasa. I grubbed around a little and discovered that Picasa runs under WINE, so I could have the best of both worlds. I installed both and lo and behold, performance is about on par with XP. Excellent.&lt;br /&gt;&lt;br /&gt;And for more in depth RAW file manipulation - I could use GIMP which comes preinstalled - right - erm - wrong actually, yes it comes preinstalled, but by default it doesnt handle raw files. Something about Tiff file errors and unrecognized tags! More grubbing around yielded a write up of UFRAW and the GIMP plugin. A magic incantation at a command line (terminal window) of "sudo apt-get install gimp-ufraw" fixed the problem.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;I had read reports of Ubuntu that said that finally here is a version of Linux that is ready for the mainstream. I beg to differ. It is probably fine if it comes preinstalled and you dont need any extra applications or you are prepared to read up alot and get your head around some of the techie stuff (or have someone else to do this for you), but I wouldnt recommend it to non techie friends - I would probably spend half my life getting it working for them. Most people will have specific uses for their PC, and I dont believe it is simple enough to configure for most users.&lt;br /&gt;&lt;br /&gt;I also havent found any preinstalled AntiVirus solution, but ClamAV is meant to be good so I will give that a look.&lt;br /&gt;&lt;br /&gt;For me, it looks like it might fit the bill, time will tell, but I will try and post updates here.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/178146493687263214-2717795062175428926?l=technical-inspirations.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technical-inspirations.blogspot.com/feeds/2717795062175428926/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=178146493687263214&amp;postID=2717795062175428926' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/178146493687263214/posts/default/2717795062175428926'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/178146493687263214/posts/default/2717795062175428926'/><link rel='alternate' type='text/html' href='http://technical-inspirations.blogspot.com/2007/07/goodbye-m-windows.html' title='Goodbye M$ Windows'/><author><name>Glen</name><uri>http://www.blogger.com/profile/13873806269837388050</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://farm1.static.flickr.com/112/302779563_b030b687e8_m.jpg'/></author><thr:total>0</thr:total></entry></feed>
