<?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-10368130</id><updated>2012-01-06T12:45:13.832Z</updated><category term='ruby'/><category term='boards.ie'/><category term='xml'/><category term='citations'/><category term='soccer'/><category term='research'/><category term='javascript'/><category term='finance'/><category term='web'/><category term='motion denied'/><category term='politics'/><category term='latex'/><category term='realnetworks'/><category term='mac os x'/><category term='lucene'/><category term='printing'/><category term='games'/><category term='blazeds'/><category term='dog'/><category term='book'/><category term='rinse'/><category term='flex'/><category term='cloudbrain'/><category term='jquery'/><category term='commodore'/><category term='citeseer'/><category term='storm'/><category term='algorithm2e'/><category term='EU'/><category term='hustle'/><category term='energy conservation'/><category term='tidysongs'/><category term='physics'/><category term='tv'/><category term='eclipse'/><category term='caching'/><category term='soc'/><category term='hyperref'/><category term='game of life'/><category term='subversion'/><title type='text'>Cromulent Postings</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://martinharrigan.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10368130/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://martinharrigan.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Martin Harrigan</name><uri>https://profiles.google.com/114327324633274245375</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-IqA6RwqAVss/AAAAAAAAAAI/AAAAAAAAUZg/sdannd8nmnM/s512-c/photo.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>27</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-10368130.post-3090738778610297899</id><published>2011-11-30T17:41:00.001Z</published><updated>2011-11-30T20:14:39.103Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='game of life'/><category scheme='http://www.blogger.com/atom/ns#' term='storm'/><title type='text'>Conway's Game of Life in the Cloud</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;br /&gt;&lt;a href="http://en.wikipedia.org/wiki/Conway's_Game_of_Life"&gt;Conway's Game of Life&lt;/a&gt; is a cellular automaton consisting of a 2-dimensional grid of cells each of which is either dead or alive. Each cell undergoes state transitions according to its own state and the states of its eight neighboring cells. When a cell is alive, it remains alive if two or three of its neighboring cells are also alive, otherwise it dies. When a cell is dead, it changes to alive if three of its neighboring cells are alive, otherwise it remains dead. Though an individual cell is quite simple, the aggregate behavior of many cells can be quite complex. For example, the &lt;a href="http://www.conwaylife.com/wiki/Spaceship"&gt;lightweight spaceship&lt;/a&gt; is an example of a configuration of cells that essentially moves across the grid.&lt;br /&gt;&lt;br /&gt;Although the Game of Life is a synchronous model it can be simulated using an asynchronous model (see, for example,&amp;nbsp;&lt;a href="http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=1029886"&gt;Nehaniv '02&lt;/a&gt; for details). The basic idea is to keep the cells nearly-synchronized at a local level by recording a local time at each cell. The system must ensure that the local times of neighboring cells differ by at most one unit of time. Each cell also records its previous state so that neighboring cells that lag behind a cell can catch-up. This removes the need for a global clock. It also removes the need for any global state&amp;nbsp;&lt;b style="background-color: white; font-family: sans-serif; font-size: 13px; line-height: 20px; text-align: -webkit-auto;"&gt;–&lt;/b&gt;&amp;nbsp;each cell can record its own state and its (most recent) view of the state of its neighboring cells.&lt;br /&gt;&lt;br /&gt;&lt;iframe allowfullscreen="" frameborder="0" height="343" mozallowfullscreen="" src="http://player.vimeo.com/video/32915668?title=0&amp;amp;byline=0&amp;amp;portrait=0" webkitallowfullscreen="" width="610"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;The &lt;a href="http://vimeo.com/32915668"&gt;embedded video&lt;/a&gt; shows a lightweight spaceship moving across a 14x7 toroidal grid. The black, white and gray cells are alive, dead and recently-dead respectively. The interesting part is how this visualization was generated. The asynchronous transitions were performed using &lt;a href="http://github.com/nathanmarz/storm"&gt;Storm&lt;/a&gt;, a distributed and fault-tolerant real-time computation system, running on &lt;a href="http://aws.amazon.com/"&gt;Amazon Web Services&lt;/a&gt;. The definitions for the spout, the component that generates the lightweight spaceship in the first place, and the bolts, the components that perform the transitions and propagate the changes to the neighboring cells, were written using &lt;a href="http://github.com/colinsurprenant/redstorm"&gt;RedStorm&lt;/a&gt;. RedStorm integrates &lt;a href="http://jruby.org/"&gt;JRuby&lt;/a&gt; with Storm and provides a DSL for defining spouts and bolts. A subset of the changes were further propagated to &lt;a href="http://pusher.com/"&gt;Pusher&lt;/a&gt; using a &lt;a href="http://rubygems.org/gems/pusher"&gt;Ruby client&lt;/a&gt;. A HTML5 application subscribed to these updates using Pusher's &lt;a href="http://pusher.com/docs/client_libraries#js"&gt;JavaScript client&lt;/a&gt;. It rendered the grid using a HTML5 Canvas and &lt;a href="http://documentcloud.github.com/backbone"&gt;Backbone.js&lt;/a&gt;&amp;nbsp;and updated the cells as necessary.&lt;br /&gt;&lt;br /&gt;The code for the Storm topology is available on &lt;a href="http://github.com/harrigan/gof-in-the-cloud"&gt;GitHub&lt;/a&gt;. I will add the code for the HTML5 application soon.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10368130-3090738778610297899?l=martinharrigan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://martinharrigan.blogspot.com/feeds/3090738778610297899/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10368130&amp;postID=3090738778610297899' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10368130/posts/default/3090738778610297899'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10368130/posts/default/3090738778610297899'/><link rel='alternate' type='text/html' href='http://martinharrigan.blogspot.com/2011/11/conways-game-of-life-in-cloud.html' title='Conway&apos;s Game of Life in the Cloud'/><author><name>Martin Harrigan</name><uri>https://profiles.google.com/114327324633274245375</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-IqA6RwqAVss/AAAAAAAAAAI/AAAAAAAAUZg/sdannd8nmnM/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10368130.post-1452472777202073946</id><published>2011-05-24T20:34:00.012+01:00</published><updated>2011-05-25T09:06:04.990+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='cloudbrain'/><category scheme='http://www.blogger.com/atom/ns#' term='realnetworks'/><category scheme='http://www.blogger.com/atom/ns#' term='rinse'/><category scheme='http://www.blogger.com/atom/ns#' term='hustle'/><category scheme='http://www.blogger.com/atom/ns#' term='tidysongs'/><title type='text'>The TidySongs Hustle</title><content type='html'>&lt;b&gt;The hustle:&lt;/b&gt;&lt;ol&gt;&lt;li&gt;Company A sells software product for once-off fee. The product requires access to Company A's servers in order to operate.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Company B acquires Company A.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Company B discontinues Company A's product and shuts down their servers thereby rendering the product useless to all existing customers.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Company B releases a "new" product whose functionality and interface are suspiciously similar to that of the discontinued product.&lt;/li&gt;&lt;/ol&gt;&lt;b&gt;The hustlers:&lt;/b&gt;&lt;ul&gt;&lt;li&gt;Company A: &lt;a href="http://www.cloudbrain.com/"&gt;CloudBrain&lt;/a&gt; and their product &lt;a href="http://www.tidysongs.com/"&gt;TidySongs&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Company B: &lt;a href="http://www.realnetworks.com/"&gt;RealNetworks&lt;/a&gt; and their "new" product &lt;a href="http://www.rinsemymusic.com/"&gt;Rinse&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-WxhyazOkvns/TdwVmc3SIVI/AAAAAAAATXY/f2lVqkeWuV8/s1600/tidysongs_exhibit_a.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 293px;" src="http://2.bp.blogspot.com/-WxhyazOkvns/TdwVmc3SIVI/AAAAAAAATXY/f2lVqkeWuV8/s320/tidysongs_exhibit_a.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5610382986124075346" /&gt;&lt;/a&gt;&lt;br /&gt;In November 2010 I bought TidySongs from CloudBrain for EUR35.68. TidySongs automatically organizes your iTunes library by removing duplicates, fixing spellings, filling in blank fields and adding missing album art. It had received &lt;a href="http://mashable.com/2009/08/04/music-apps"&gt;mostly&lt;/a&gt; &lt;a href="http://www.squidoo.com/tidysongs-review"&gt;favorable&lt;/a&gt; &lt;a href="http://lifehacker.com/5330784/tidysongs-cleans-up-your-music-genres"&gt;reviews&lt;/a&gt;. Now, when I open TidySongs I get an error stating that it cannot connect to TidySongs' server.&lt;br&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-LlvDPBirq5A/TdwVmp2dzmI/AAAAAAAATXg/IZrnkVjcZF0/s1600/tidysongs_exhibit_b.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 295px;" src="http://2.bp.blogspot.com/-LlvDPBirq5A/TdwVmp2dzmI/AAAAAAAATXg/IZrnkVjcZF0/s320/tidysongs_exhibit_b.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5610382989610307170" /&gt;&lt;/a&gt;&lt;br /&gt;Their &lt;a href="http://www.tidysongs.com/"&gt;website&lt;/a&gt; states that TidySongs has been discontinued. They link to a product called &lt;a href="http://www.rinsemymusic.com/"&gt;Rinse from RealNetworks&lt;/a&gt; that sells for $39. It too organizes your iTunes library by removing duplicates, fixing spellings, filling in blank fields and adding missing album art. They could at least have changed the interface a little.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10368130-1452472777202073946?l=martinharrigan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://martinharrigan.blogspot.com/feeds/1452472777202073946/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10368130&amp;postID=1452472777202073946' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10368130/posts/default/1452472777202073946'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10368130/posts/default/1452472777202073946'/><link rel='alternate' type='text/html' href='http://martinharrigan.blogspot.com/2011/05/tidysongs-hustle.html' title='The TidySongs Hustle'/><author><name>Martin Harrigan</name><uri>https://profiles.google.com/114327324633274245375</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-IqA6RwqAVss/AAAAAAAAAAI/AAAAAAAAUZg/sdannd8nmnM/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-WxhyazOkvns/TdwVmc3SIVI/AAAAAAAATXY/f2lVqkeWuV8/s72-c/tidysongs_exhibit_a.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10368130.post-1416305996912036524</id><published>2011-03-03T21:43:00.003Z</published><updated>2011-03-03T21:56:02.311Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='jquery'/><category scheme='http://www.blogger.com/atom/ns#' term='web'/><title type='text'>Renaming Tabs in jQuery UI</title><content type='html'>&lt;a href="http://jqueryui.com"&gt;jQuery UI&lt;/a&gt; has a very nice &lt;a href="http://jqueryui.com/demos/tabs"&gt;tab system&lt;/a&gt;. However, as of version 1.8.10, there isn't an easy method of dynamically renaming tabs. The main difficulty is that the tab names are stored in an unnumbered list that is parallel to the contents of the tabs. There are a number of hacks and extensions on the web but no one-liners. So here is mine:&lt;br /&gt;&lt;br /&gt;&lt;script src="http://gist.github.com/853661.js?file=renaming_tabs.html"&gt;&lt;/script&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10368130-1416305996912036524?l=martinharrigan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://martinharrigan.blogspot.com/feeds/1416305996912036524/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10368130&amp;postID=1416305996912036524' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10368130/posts/default/1416305996912036524'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10368130/posts/default/1416305996912036524'/><link rel='alternate' type='text/html' href='http://martinharrigan.blogspot.com/2011/03/renaming-tabs-in-jquery-ui.html' title='Renaming Tabs in jQuery UI'/><author><name>Martin Harrigan</name><uri>https://profiles.google.com/114327324633274245375</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-IqA6RwqAVss/AAAAAAAAAAI/AAAAAAAAUZg/sdannd8nmnM/s512-c/photo.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10368130.post-8434597145256499362</id><published>2010-03-16T19:39:00.004Z</published><updated>2010-03-16T20:27:29.437Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='caching'/><category scheme='http://www.blogger.com/atom/ns#' term='web'/><title type='text'>Unblogging</title><content type='html'>&lt;a href="http://www.google.com/reader"&gt;Google Reader&lt;/a&gt; is more than just a feed reader. It's a cache and an archive: http://www.google.com/reader/atom/feed/FEED_URL?r=n&amp;n=X displays the last X posts from FEED_URL even if FEED_URL itself does not contain all of its last X posts. If the author of FEED_URL deletes an old post it will not be removed from the cache. This is nothing strange, caching and archiving are &lt;a href="http://web.archive.org"&gt;part and parcel&lt;/a&gt; of the Internet.&lt;br /&gt;&lt;br /&gt;However, there are a number of issues with this type of caching. Firstly, many authors try a number of "test" posts after creating a blog. If they check the posts in Google Reader, they become difficult to delete. Secondly, there is no indication when browsing Google Reader that a post may have been deleted and that the author no longer wishes the post to be public. Thirdly, there is no &lt;a href="http://www.robotstxt.org"&gt;robots.txt&lt;/a&gt; mechanism to restrict caching. Fourthly, Google does not delete posts from the cache by request.&lt;br /&gt;&lt;br /&gt;In Google's &lt;a href="http://www.google.com/support/reader/bin/static.py?page=known_issues.cs"&gt;own words&lt;/a&gt;: "Reader caches all entries in your feed as your feed most likely only contains your most recent entries. Unfortunately, there isn't a way for Reader to tell which items have been deliberately removed from your site as opposed to having just fallen off the end of your feed. You can create a blank item with the same GUID tag as the original item to at least remove the content from Reader and other feed readers. Contact your blogging software provider for more help with this issue."&lt;br /&gt;&lt;br /&gt;So, how do you find the GUIDs of your deleted posts? Assuming you have a Google Account and an account with Blogger, the following &lt;a href="http://gist.github.com/334389"&gt;Ruby script&lt;/a&gt; will output the GUIDs of your deleted posts:&lt;br /&gt;&lt;br /&gt;&lt;script src="http://gist.github.com/334389.js?file=unblogger.rb"&gt;&lt;/script&gt;&lt;br /&gt;&lt;br /&gt;Next, you need to edit the contents of each post using http://www.blogger.com/post-edit.g?blogID=12345&amp;postID=67890. You may also have to bring the post dates forward so that Google Reader will notice the changes.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10368130-8434597145256499362?l=martinharrigan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://martinharrigan.blogspot.com/feeds/8434597145256499362/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10368130&amp;postID=8434597145256499362' title='9 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10368130/posts/default/8434597145256499362'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10368130/posts/default/8434597145256499362'/><link rel='alternate' type='text/html' href='http://martinharrigan.blogspot.com/2010/03/unblogging.html' title='Unblogging'/><author><name>Martin Harrigan</name><uri>https://profiles.google.com/114327324633274245375</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-IqA6RwqAVss/AAAAAAAAAAI/AAAAAAAAUZg/sdannd8nmnM/s512-c/photo.jpg'/></author><thr:total>9</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10368130.post-2055572899191815185</id><published>2009-11-27T15:05:00.000Z</published><updated>2009-11-27T15:06:10.811Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='finance'/><category scheme='http://www.blogger.com/atom/ns#' term='web'/><title type='text'>The Electronic Campfire</title><content type='html'>"What is wrong? Why is mere opinion so dominating discussions held on the easiest medium there has ever been that can provide substantiations with just a little curiosity and work? Is the world completely reverting to an oral culture of assertions held around an electronic campfire?" (Alan Kay, 2009)&lt;br /&gt;&lt;br /&gt;Two days ago, &lt;a href="http://www.standardandpoors.com/prot/ratings/articles/en/us/?assetID=1245195349049"&gt;Standard &amp; Poor's&lt;/a&gt; declared &lt;a href="http://www.dubaiworld.ae"&gt;Dubai World&lt;/a&gt;'s &lt;a href="http://www.ft.com/cms/s/0/8a7a78e6-d9b9-11de-ad94-00144feabdc0.html"&gt;decision&lt;/a&gt; to delay their debt repayments a default. For the last two days, Dubai is trending on &lt;a href="http://search.twitter.com"&gt;Twitter&lt;/a&gt; and blogs are awash with links to various financial reports and news items. All of these are secondary sources with more or less the same information. Although I have no interest in these developments, I have tried to locate the actual text of Dubai World's statement and failed. There has been a flurry of "they-don't-owe-us-anything" statements from financial institutions. However, there is no accessible list of creditors, authoritative or suspected. A &lt;a href="http://www.google.com/search?q=dubai+world+creditors&amp;hl=en&amp;safe=off&amp;tbo=1&amp;site=mbd&amp;tbs=cdr%3A1%2Ccd_min%3A1%2F1%2F2000%2Ccd_max%3A12%2F31%2F2006"&gt;Google search&lt;/a&gt; with the date range restricted to 2000-2007 is littered with news reports and blog posts from the last two days. It is unfortunate that the social and "in-the-news" aspects of the Internet can over-shadow its ability to provide substantive information when uncertainty arises.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10368130-2055572899191815185?l=martinharrigan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://martinharrigan.blogspot.com/feeds/2055572899191815185/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10368130&amp;postID=2055572899191815185' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10368130/posts/default/2055572899191815185'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10368130/posts/default/2055572899191815185'/><link rel='alternate' type='text/html' href='http://martinharrigan.blogspot.com/2009/11/electronic-campfire.html' title='The Electronic Campfire'/><author><name>Martin Harrigan</name><uri>https://profiles.google.com/114327324633274245375</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-IqA6RwqAVss/AAAAAAAAAAI/AAAAAAAAUZg/sdannd8nmnM/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10368130.post-5790721729680397389</id><published>2009-10-22T10:48:00.007+01:00</published><updated>2009-11-09T21:10:54.323Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='flex'/><category scheme='http://www.blogger.com/atom/ns#' term='boards.ie'/><category scheme='http://www.blogger.com/atom/ns#' term='lucene'/><title type='text'>Irish Discussion Trends</title><content type='html'>Inspired by an analysis of &lt;a href="http://youinfinitesnake.blogspot.com/2008/08/computer-science-research-trends.html"&gt;computer science research trends&lt;/a&gt;, I wrote a simple application using &lt;a href="http://www.adobe.com/products/flex"&gt;Adobe Flex&lt;/a&gt; and &lt;a href="http://lucene.apache.org"&gt;Apache Lucene&lt;/a&gt; to analyze trends on the Irish discussion website &lt;a href="http://www.boards.ie/"&gt;boards.ie&lt;/a&gt; from 1998 to mid-2008. For example, computing only term frequencies within posts, one can observe the rise and fall of Ireland's mobile phone networks:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_GSCeoDzxEu4/SuA82-ZhxCI/AAAAAAAAMEE/-lyITklA-xo/s1600-h/boards_01.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 218px;" src="http://3.bp.blogspot.com/_GSCeoDzxEu4/SuA82-ZhxCI/AAAAAAAAMEE/-lyITklA-xo/s320/boards_01.png" alt="" id="BLOGGER_PHOTO_ID_5395379268750525474" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_GSCeoDzxEu4/SuA88J8TRnI/AAAAAAAAMEM/b-7CjYmSApk/s1600-h/boards_02.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 218px;" src="http://2.bp.blogspot.com/_GSCeoDzxEu4/SuA88J8TRnI/AAAAAAAAMEM/b-7CjYmSApk/s320/boards_02.png" alt="" id="BLOGGER_PHOTO_ID_5395379357748512370" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Please note that the 2008 dataset is incomplete, and so the results trail off for this year.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10368130-5790721729680397389?l=martinharrigan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://martinharrigan.blogspot.com/feeds/5790721729680397389/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10368130&amp;postID=5790721729680397389' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10368130/posts/default/5790721729680397389'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10368130/posts/default/5790721729680397389'/><link rel='alternate' type='text/html' href='http://martinharrigan.blogspot.com/2009/10/irish-discussion-trends.html' title='Irish Discussion Trends'/><author><name>Martin Harrigan</name><uri>https://profiles.google.com/114327324633274245375</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-IqA6RwqAVss/AAAAAAAAAAI/AAAAAAAAUZg/sdannd8nmnM/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_GSCeoDzxEu4/SuA82-ZhxCI/AAAAAAAAMEE/-lyITklA-xo/s72-c/boards_01.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10368130.post-2819434855594492113</id><published>2009-09-19T12:13:00.004+01:00</published><updated>2009-09-19T12:26:15.852+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='physics'/><title type='text'>A Book for Dummies</title><content type='html'>While leafing through &lt;a href="http://eu.wiley.com/WileyCDA/WileyTitle/productCd-0470510153.html"&gt;Twentieth Century History For Dummies&lt;/a&gt; (don't ask), I came across the following dubious description (pg. 50) of Albert Einstein's contribution to twentieth century physics:&lt;br /&gt;&lt;br /&gt;"Albert Einstein (1879-1955) sought to use quantum theory in his work on the nature of matter. Taking the tram to his work in Z&amp;uuml;rich each day, the German-born Einstein noticed that the buildings he passed appeared tall and thin when the tram was moving but settled into their old shape when the tram stopped. Were his eyes deceiving him, or perhaps did those houses actually change shape? And why didn't they change shape for the people inside them? The answer was that, unlike the people in the houses, Einstein was moving past at speed, so to him, the houses didn't just &lt;i&gt;look&lt;/i&gt; thin. They actually &lt;i&gt;were&lt;/i&gt; thin. Because of the speed and the direction of the tram, Einstein was looking at the houses in a different combination of space and time from people outside the tram; or, to put it another way, the nature of space and time depend on where you are. Einstein put his ideas into his &lt;i&gt;Special Theory of Relativity&lt;/i&gt; in 1905, followed in 1907 by his &lt;i&gt;General Theory of Relativity&lt;/i&gt;, arguing that space and time change and as they do so, they affect matter - hence the thin houses. The only thing that doesn't change, Einstein said, is the speed of light."&lt;br /&gt;&lt;br /&gt;Trams in the early twentieth century must have traveled &lt;i&gt;really&lt;/i&gt; fast ;-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10368130-2819434855594492113?l=martinharrigan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://martinharrigan.blogspot.com/feeds/2819434855594492113/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10368130&amp;postID=2819434855594492113' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10368130/posts/default/2819434855594492113'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10368130/posts/default/2819434855594492113'/><link rel='alternate' type='text/html' href='http://martinharrigan.blogspot.com/2009/09/book-for-dummies.html' title='A Book for Dummies'/><author><name>Martin Harrigan</name><uri>https://profiles.google.com/114327324633274245375</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-IqA6RwqAVss/AAAAAAAAAAI/AAAAAAAAUZg/sdannd8nmnM/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10368130.post-6543474818860916818</id><published>2009-09-03T16:15:00.004+01:00</published><updated>2009-09-03T16:25:52.136+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='flex'/><category scheme='http://www.blogger.com/atom/ns#' term='blazeds'/><title type='text'>It's Not a Feature, It's a Bug</title><content type='html'>The &lt;a href="http://www.adobe.com/products/flex"&gt;Flex&lt;/a&gt; compiler (mxmlc) has the following feature: It will only include classes in the output swf that are explicitly referenced either within the .mxml files or any explicitly referenced .as files. There is a &lt;a href="http://bugs.adobe.com/jira/browse/SDK-19460"&gt;request&lt;/a&gt; for a compiler option to support the inclusion of all classes, but it's still in the works.&lt;br /&gt;&lt;br /&gt;The following is one such example where this feature causes difficulties. Suppose I have a Flex client that uses BlazeDS to make an RPC. The RPC returns a Java object that is &lt;a href="http://livedocs.adobe.com/blazeds/1/blazeds_devguide/help.html?content=serialize_data_3.html"&gt;explicitly mapped&lt;/a&gt; to an ActionScript object using [RemoteClass(alias="...")] above the definition of the ActionScript class. This ActionScript class may never be referenced within the Flex code yet is needed to de-serialize the response! The end result is an "Server.Acknowledge.Failed" fault code:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;[RPC Fault faultString="Didn't receive an acknowledge message"&lt;br /&gt;faultCode="Server.Acknowledge.Failed" faultDetail="Was expecting&lt;br /&gt;mx.messaging.messages.AcknowledgeMessage, but received null"]&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10368130-6543474818860916818?l=martinharrigan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://martinharrigan.blogspot.com/feeds/6543474818860916818/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10368130&amp;postID=6543474818860916818' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10368130/posts/default/6543474818860916818'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10368130/posts/default/6543474818860916818'/><link rel='alternate' type='text/html' href='http://martinharrigan.blogspot.com/2009/09/its-not-feature-its-bug.html' title='It&apos;s Not a Feature, It&apos;s a Bug'/><author><name>Martin Harrigan</name><uri>https://profiles.google.com/114327324633274245375</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-IqA6RwqAVss/AAAAAAAAAAI/AAAAAAAAUZg/sdannd8nmnM/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10368130.post-2935203812138818632</id><published>2009-04-04T17:56:00.003+01:00</published><updated>2009-11-09T21:11:13.261Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='commodore'/><category scheme='http://www.blogger.com/atom/ns#' term='book'/><title type='text'>The Third Horse</title><content type='html'>Over two years ago I read a &lt;a href="http://books.slashdot.org/article.pl?sid=06/11/15/1457205"&gt;review&lt;/a&gt; for Brian Bagnall's &lt;a href="http://www.amazon.com/Edge-Spectacular-Rise-Fall-Commodore/dp/0973864907"&gt;On the Edge: The Spectacular Rise and Fall of Commodore&lt;/a&gt;. Being a former owner of a Commodore 64 (1992-1994) and a Commodore Amiga 600 (1994-1997), the title interested me. I bought it but only recently found the time to read it.&lt;br /&gt;&lt;br /&gt;The "popularized" history of the personal computer (e.g. &lt;a href="http://en.wikipedia.org/wiki/Pirates_of_Silicon_Valley"&gt;Pirates of Silicon Valley&lt;/a&gt;) describes a two-horse race between the IBM PC and the Apple Macintosh. However, I didn't own my first IBM PC compatible (or Wintel) until 1997 nor my first Apple Macintosh until 2007. I had backed a third horse. The book presents the history of this third horse - from their origins as a calculator manufacturer to their bankruptcy in 1994 (spoiler?). It covers the technology nicely but also tells of the eclectic mix of characters behind the company, e.g. &lt;a href="http://en.wikipedia.org/wiki/Jack_Tramiel"&gt;Jack Tramiel&lt;/a&gt;, &lt;a href="http://en.wikipedia.org/wiki/Irving_Gould"&gt;Irving Gould&lt;/a&gt;, &lt;a href="http://en.wikipedia.org/wiki/Chuck_Peddle"&gt;Chuck Peddle&lt;/a&gt;, &lt;a href="http://en.wikipedia.org/wiki/Bill_Mensch"&gt;Bill Mensch&lt;/a&gt;, Al Charpentier, Bob Russell, Bob Yannes, &lt;a href="http://en.wikipedia.org/wiki/Bil_Herd"&gt;Bil Herd&lt;/a&gt;, Thomas Rattigan, &lt;a href="http://en.wikipedia.org/wiki/Jay_Miner"&gt;Jay Miner&lt;/a&gt;, and &lt;a href="http://en.wikipedia.org/wiki/Dave_Haynie"&gt;Dave Haynie&lt;/a&gt;. Nice story!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10368130-2935203812138818632?l=martinharrigan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://martinharrigan.blogspot.com/feeds/2935203812138818632/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10368130&amp;postID=2935203812138818632' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10368130/posts/default/2935203812138818632'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10368130/posts/default/2935203812138818632'/><link rel='alternate' type='text/html' href='http://martinharrigan.blogspot.com/2009/04/third-horse.html' title='The Third Horse'/><author><name>Martin Harrigan</name><uri>https://profiles.google.com/114327324633274245375</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-IqA6RwqAVss/AAAAAAAAAAI/AAAAAAAAUZg/sdannd8nmnM/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10368130.post-939127314400267673</id><published>2009-03-30T20:09:00.005+01:00</published><updated>2009-03-31T15:46:42.210+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='web'/><title type='text'>dotTel</title><content type='html'>Today I registered a &lt;a href="http://www.telnic.org"&gt;dotTel&lt;/a&gt; domain, &lt;a href="http://martinharrigan.tel"&gt;martinharrigan.tel&lt;/a&gt;. dotTel is a global &lt;a href="http://en.wikipedia.org/wiki/Directory_service"&gt;directory service&lt;/a&gt;, operating over &lt;a href="http://en.wikipedia.org/wiki/Domain_name_system"&gt;DNS&lt;/a&gt;, with a &lt;a href="http://en.wikipedia.org/wiki/Gopher_(protocol)"&gt;Gopher-esque&lt;/a&gt; interface! However, what I find most interesting about dotTel is not what it is, but what it could be: an "authority" for identity management (is this blog really mine?), friend management (e.g. &lt;a href="http://telfriends.tel"&gt;telfriends.tel&lt;/a&gt;), single sign-on, user profiling, etc. Many believe the idea is &lt;a href="http://domainnamewire.com/2008/11/10/telnic-a-35-million-investment-gone-awry"&gt;too&lt;/a&gt; &lt;a href="http://usefularts.us/2008/11/17/the-tel-domain-launches-in-december-is-it-years-too-late"&gt;late&lt;/a&gt;. I admit that the odds against the project are great and I don't think their business model is quite right (why should I, as an individual, pay &amp;euro;15 for the privilege of being in their directory?), but I would like to see it succeed.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10368130-939127314400267673?l=martinharrigan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://martinharrigan.blogspot.com/feeds/939127314400267673/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10368130&amp;postID=939127314400267673' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10368130/posts/default/939127314400267673'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10368130/posts/default/939127314400267673'/><link rel='alternate' type='text/html' href='http://martinharrigan.blogspot.com/2009/03/dottel.html' title='dotTel'/><author><name>Martin Harrigan</name><uri>https://profiles.google.com/114327324633274245375</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-IqA6RwqAVss/AAAAAAAAAAI/AAAAAAAAUZg/sdannd8nmnM/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10368130.post-542435145721676066</id><published>2009-03-05T13:30:00.003Z</published><updated>2009-03-30T20:09:21.223+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='politics'/><title type='text'>Armchair Politics</title><content type='html'>The &lt;a href="http://en.wikipedia.org/wiki/Left-right_politics"&gt;left-right political spectrum&lt;/a&gt; classifies political positions as being either left (liberal) or right (conservative). Although an individual may take a "left stance" on some matters and a "right stance" on others, many individuals (including myself) find themselves taking the same-sided stance on many different matters. For example, I favor secular government, economic planning and hold the belief that law dictates culture. These are classical "left stances".&lt;br /&gt;&lt;br /&gt;Lately, I've been reading. And as &lt;a href="http://www.amazon.com/Vernon-God-Little-Century-Presence/dp/1841954608"&gt;Vernon Gregory Little&lt;/a&gt; remarked, "You're cursed when you realize true things, because then you can't act with the full confidence of dumbness anymore." &lt;a href="http://www.amazon.com/Conflict-Visions-Thomas-Sowell/dp/0688079512"&gt;Thomas Sowell&lt;/a&gt; proposed that the "&lt;a href="http://en.wikipedia.org/wiki/Nature_versus_nurture"&gt;nature vs. nurture&lt;/a&gt;" argument underlies the left-right dichotomy. Rightists believe in a "Tragic Vision": individuals are bound by their nature. Leftists believe in a "Utopian Vision": a better society can nurture better individuals. This makes sense. However, I also find myself in agreement with, amongst others, &lt;a href="http://www.amazon.com/Blank-Slate-Modern-Denial-Nature/dp/0670031518"&gt;Steven Pinker&lt;/a&gt; (who I discovered through &lt;a href="http://www.ted.com/index.php/talks/steven_pinker_chalks_it_up_to_the_blank_slate.html"&gt;TED&lt;/a&gt;), that we are not blank slates; there is a human nature. So, is my &lt;a href="http://scottaaronson.com/blog/?p=362"&gt;world-view inconsistent&lt;/a&gt;? Hopefully not, but it certainly needs &lt;a href="http://www.amazon.com/Chomsky-Foucault-Debate-Human-Nature/dp/1595581340"&gt;refinement&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10368130-542435145721676066?l=martinharrigan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://martinharrigan.blogspot.com/feeds/542435145721676066/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10368130&amp;postID=542435145721676066' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10368130/posts/default/542435145721676066'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10368130/posts/default/542435145721676066'/><link rel='alternate' type='text/html' href='http://martinharrigan.blogspot.com/2009/03/armchair-politics.html' title='Armchair Politics'/><author><name>Martin Harrigan</name><uri>https://profiles.google.com/114327324633274245375</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-IqA6RwqAVss/AAAAAAAAAAI/AAAAAAAAUZg/sdannd8nmnM/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10368130.post-1648148336803842666</id><published>2009-01-14T12:18:00.001Z</published><updated>2009-01-14T12:21:25.717Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='mac os x'/><category scheme='http://www.blogger.com/atom/ns#' term='printing'/><title type='text'>Duplex Printing with the Lexmark T640 and Mac OS X 10.4 (Tiger)</title><content type='html'>Mac OS X 10.4 &lt;a href="http://support.apple.com/kb/HT1788"&gt;includes&lt;/a&gt; a driver for the Lexmark T640. However, even with the duplex option installed (System Preferences &gt; Print &amp; Fax &gt; [printer name] &gt; Printer Setup &gt; Installable Options) and either "long-edged binding" or "short-edged binding" selected (Print &gt; Layout), pages come out one-sided! The "Generic PostScript Printer" driver doesn't appear to support duplex printing either.&lt;br /&gt;&lt;br /&gt;As a work around, you can install &lt;a href="http://gimp-print.sourceforge.net/MacOSX.php"&gt;Gutenprint and Gimp-Print for Mac OS X&lt;/a&gt; and use, for example, the "Generic PCL 6/PCL XL Printer - CUPS+Gutenprint v5.2.3" driver.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10368130-1648148336803842666?l=martinharrigan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://martinharrigan.blogspot.com/feeds/1648148336803842666/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10368130&amp;postID=1648148336803842666' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10368130/posts/default/1648148336803842666'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10368130/posts/default/1648148336803842666'/><link rel='alternate' type='text/html' href='http://martinharrigan.blogspot.com/2009/01/duplex-printing-with-lexmark-t640-and.html' title='Duplex Printing with the Lexmark T640 and Mac OS X 10.4 (Tiger)'/><author><name>Martin Harrigan</name><uri>https://profiles.google.com/114327324633274245375</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-IqA6RwqAVss/AAAAAAAAAAI/AAAAAAAAUZg/sdannd8nmnM/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10368130.post-6728280129706347578</id><published>2009-01-12T16:37:00.006Z</published><updated>2009-01-14T12:21:51.496Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='energy conservation'/><category scheme='http://www.blogger.com/atom/ns#' term='tv'/><title type='text'>Is One More Powerful Than We Think?</title><content type='html'>&lt;a href="http://www.powerofone.ie/"&gt;The Power of One&lt;/a&gt; is an initiative by the &lt;a href="http://www.dcenr.gov.ie/"&gt;Department of Communications, Energy and Natural Resources&lt;/a&gt; to promote energy efficiency in Ireland. One of their &lt;a href="http://www.powerofonestreet.ie/media-centre"&gt;TV ads&lt;/a&gt;, centered around the Heffernan Family, appears to have the following logic:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;The Heffernans reduce their energy consumption by, for example, switching their thermostat setting from 23 to 21 degrees.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Through these efforts they save €320 annually on their heating costs.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;They save this money in their "holiday fund" allowing the five of them, in the closing scene, to head off into the sun with their surfboards and bags packed.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Any problem here? Does saving €320 on annual heating costs, only to spend it on a foreign holiday (&lt;a href="http://www.met.ie/"&gt;I presume that's what the sun represents&lt;/a&gt;), make sense? Suppose they travel by air? Technically, it promotes energy efficiency in Ireland, but does it increase energy use somewhere else?&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_GSCeoDzxEu4/SWt0Gfi6mII/AAAAAAAAIP4/if8AOMB5fb4/s1600-h/power_of_one.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 174px;" src="http://1.bp.blogspot.com/_GSCeoDzxEu4/SWt0Gfi6mII/AAAAAAAAIP4/if8AOMB5fb4/s320/power_of_one.png" alt="" id="BLOGGER_PHOTO_ID_5290449842172762242" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Did I mention &lt;a href="http://en.wikipedia.org/wiki/Jevons_paradox"&gt;Jevons Paradox&lt;/a&gt;? As we increase the efficiency with which we use a resource (through technological progress), we increase (rather than decrease) the rate of consumption of that resource. We are dealing with something similar here. If the Heffernans improve the efficiency with which they can heat their home, they may actually use the savings to consume more energy elsewhere. What's worse, the ad appears to promote this.&lt;br /&gt;&lt;br /&gt;I will say that the paradox is not universally accepted. The general argument against it is that, in a mature market, the savings made will be greater than the amount used due to the rebound effect. However, I think the ad's advice is counter to this argument.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10368130-6728280129706347578?l=martinharrigan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://martinharrigan.blogspot.com/feeds/6728280129706347578/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10368130&amp;postID=6728280129706347578' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10368130/posts/default/6728280129706347578'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10368130/posts/default/6728280129706347578'/><link rel='alternate' type='text/html' href='http://martinharrigan.blogspot.com/2009/01/is-one-more-powerful-than-we-thank.html' title='Is One More Powerful Than We Think?'/><author><name>Martin Harrigan</name><uri>https://profiles.google.com/114327324633274245375</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-IqA6RwqAVss/AAAAAAAAAAI/AAAAAAAAUZg/sdannd8nmnM/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_GSCeoDzxEu4/SWt0Gfi6mII/AAAAAAAAIP4/if8AOMB5fb4/s72-c/power_of_one.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10368130.post-2349030710459311635</id><published>2008-12-07T02:32:00.005Z</published><updated>2008-12-07T02:40:07.776Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='subversion'/><title type='text'>The 'Branches/Tags/Trunk' Convention</title><content type='html'>&lt;b&gt;Q.&lt;/b&gt; I have several projects under Subversion which do not adhere to the &lt;a href="http://stackoverflow.com/questions/16142/what-does-branch-tag-and-trunk-really-mean"&gt;branches/tags/trunk convention&lt;/a&gt;. How do I move to this convention?&lt;br /&gt;&lt;br /&gt;&lt;b&gt;A.&lt;/b&gt; Check out each project and 'cd' to the local copy. Then:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;mkdir branches tags trunk; svn add branches tags trunk&lt;br /&gt;ls -A | egrep -v '\.svn|branches|tags|trunk' | xargs -I X svn move X trunk&lt;br /&gt;svn commit -m "Moved to the 'branches/tags/trunk' convention."&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10368130-2349030710459311635?l=martinharrigan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://martinharrigan.blogspot.com/feeds/2349030710459311635/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10368130&amp;postID=2349030710459311635' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10368130/posts/default/2349030710459311635'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10368130/posts/default/2349030710459311635'/><link rel='alternate' type='text/html' href='http://martinharrigan.blogspot.com/2008/12/branchestagstrunk-convention.html' title='The &apos;Branches/Tags/Trunk&apos; Convention'/><author><name>Martin Harrigan</name><uri>https://profiles.google.com/114327324633274245375</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-IqA6RwqAVss/AAAAAAAAAAI/AAAAAAAAUZg/sdannd8nmnM/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10368130.post-2935427039821198060</id><published>2008-09-03T20:36:00.004+01:00</published><updated>2008-09-04T09:55:34.867+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='eclipse'/><title type='text'>Europa to Ganymede</title><content type='html'>I recently upgraded my version of Eclipse from Europa (v3.3) to Ganymede (v3.4) on Mac OS X. I wanted to install the following plug-ins: Subclipse (for Subversion), M2Eclipse (for Maven), WTP (for various editors, e.g. XML, XSD, etc.), and PDT (for PHP).&lt;br /&gt;&lt;br /&gt;First up, Subclipse. I added the &lt;a href="http://subclipse.tigris.org/update_1.4.x"&gt;update site&lt;/a&gt; and installed it without a hitch. Eclipse required a restart; an annoyance I was hoping Ganymede would have fixed.&lt;br /&gt;&lt;br /&gt;On to M2Eclipse. I added the &lt;a href="http://m2eclipse.sonatype.org/update"&gt;update site&lt;/a&gt;, tried an install and got the following cryptic error messages:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;Unsatisfied dependency: [org.maven.ide.eclipse.ajdt.feature.feature.group&lt;br /&gt;0.9.5.20080717-1821] requiredCapability:&lt;br /&gt;org.eclipse.equinox.p2.iu/org.eclipse.ajdt.core/0.0.0&lt;br /&gt;Unsatisfied dependency: [org.eclipse.jst.common.frameworks 1.1.102.v200709122200]&lt;br /&gt;requiredCapability: osgi.bundle/org.eclipse.emf.ecore.xmi/[2.2.0,2.4.0)&lt;br /&gt;... snip (many more lines of similar error messages) ...&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;After some Googling, I found out that M2Eclipse requires that the AspectJ Development Tools (AJDT) and the Web Tools Platform (WTP) are installed first. I added the AJDT &lt;a href="http://download.eclipse.org/tools/ajdt/334/update"&gt;update site&lt;/a&gt; and installed it with one peculiarity. Prior to the install, Eclipse complained that the http://md.pp.ru/~eu/12 website was unavailable. This website belongs to a &lt;a href="http://md.pp.ru/~eu"&gt;Eugene Kuleshov&lt;/a&gt;, a developer who is interested in, amongst other things, AspectJ. Perhaps he is an AJDT developer. Anyhow, the warning did not prevent the install from completing successfully. I added the WTP &lt;a href="http://download.eclipse.org/webtools/updates"&gt;update site&lt;/a&gt; and it (eventually) installed. I returned to M2Eclipse and it installed correctly.&lt;br /&gt;&lt;br /&gt;Finally, the PDT. I added the &lt;a href="http://download.eclipse.org/tools/pdt/updates"&gt;update site&lt;/a&gt;, tried an install, and got another error message:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;Cannot find a solution satisfying the following requirements Match[requiredCapability:&lt;br /&gt;org.eclipse.equinox.p2.iu/org.eclipse.wst.web_ui.feature.feature.group&lt;br /&gt;/[3.0.1.v200807220139-7R0ELZE8Ks-y8HYiQrw5ftEC3UBF,3.0.1.v200807220139-7R0ELZE8Ks-&lt;br /&gt;y8HYiQrw5ftEC3UBF]].&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;I have had problems with this plug-in before when using Europa. I followed the &lt;a href="http://wiki.eclipse.org/PDT/Installation#From_Update_Site"&gt;instructions&lt;/a&gt; on the PDT website, but to no avail. Three out of four plug-ins will have to suffice for now :-( Maybe Eclipse v3.5 will have an smoother plug-in system.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10368130-2935427039821198060?l=martinharrigan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://martinharrigan.blogspot.com/feeds/2935427039821198060/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10368130&amp;postID=2935427039821198060' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10368130/posts/default/2935427039821198060'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10368130/posts/default/2935427039821198060'/><link rel='alternate' type='text/html' href='http://martinharrigan.blogspot.com/2008/09/europa-to-ganymede.html' title='Europa to Ganymede'/><author><name>Martin Harrigan</name><uri>https://profiles.google.com/114327324633274245375</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-IqA6RwqAVss/AAAAAAAAAAI/AAAAAAAAUZg/sdannd8nmnM/s512-c/photo.jpg'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10368130.post-5985597597871594402</id><published>2008-08-13T10:35:00.009+01:00</published><updated>2009-11-09T21:13:47.553Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><title type='text'>MIT's Simile Timeline</title><content type='html'>&lt;a href='http://code.google.com/p/simile-widgets/'&gt;MIT's Simile Timeline&lt;/a&gt; is a DHTML-based AJAX widget for visualizing temporal information. Here it is trying to visualize my &lt;a href='http://www.martinharrigan.ie/go?o=travel.xml'&gt;travel.xml&lt;/a&gt; data (where I've been):&lt;br /&gt;&lt;br /&gt;&lt;div id="travelTimeline" style="height: 300px; border: 1px solid #aaa"&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Unfortunately, this won't display correctly in an RSS reader. The file &lt;a href='http://simile.mit.edu/timeline/api/timeline-api.js'&gt;timeline-api.js&lt;/a&gt; must (annoyingly) be included within the 'head' tags of a HTML page. So, I modified Blogger's template and my own &lt;a href='http://www.martinharrigan.ie/go?o=blog.html'&gt;mirror&lt;/a&gt;. However, you will also notice that &lt;a href='http://martinharrigan.blogspot.com/2008/08/mits-simile-timeline.html'&gt;Blogger&lt;/a&gt; fails to load &lt;a href='http://www.martinharrigan.ie/go?o=travel.xml'&gt;travel.xml&lt;/a&gt; (the timeline is empty), whereas my &lt;a href='http://www.martinharrigan.ie/go?o=blog.html'&gt;mirror&lt;/a&gt;, which is on the same server as &lt;a href='http://www.martinharrigan.ie/go?o=travel.xml'&gt;travel.xml&lt;/a&gt; and simply gets its feed from Blogger, loads it correctly. Ugh!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10368130-5985597597871594402?l=martinharrigan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://martinharrigan.blogspot.com/feeds/5985597597871594402/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10368130&amp;postID=5985597597871594402' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10368130/posts/default/5985597597871594402'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10368130/posts/default/5985597597871594402'/><link rel='alternate' type='text/html' href='http://martinharrigan.blogspot.com/2008/08/mits-simile-timeline.html' title='MIT&apos;s Simile Timeline'/><author><name>Martin Harrigan</name><uri>https://profiles.google.com/114327324633274245375</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-IqA6RwqAVss/AAAAAAAAAAI/AAAAAAAAUZg/sdannd8nmnM/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10368130.post-3375767681790121138</id><published>2008-07-31T16:28:00.003+01:00</published><updated>2009-11-09T21:12:09.047Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='citations'/><category scheme='http://www.blogger.com/atom/ns#' term='xml'/><category scheme='http://www.blogger.com/atom/ns#' term='citeseer'/><title type='text'>CiteSeer's Dataset</title><content type='html'>I am exploring the citation and co-authorship graphs of the documents (and contexts) indexed by &lt;a href="http://citeseer.ist.psu.edu/"&gt;CiteSeer&lt;/a&gt;. However, parsing their index has proved tricky. The good news is that CiteSeer provides an &lt;a href="http://www.openarchives.org/"&gt;OAI-PMH&lt;/a&gt; compliant dump of their index. I downloaded and unzipped the index as follows:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;$ wget http://cs1.ist.psu.edu/public/oai/oai_citeseer.tar.gz&lt;br /&gt;$ tar -zxf oai_citeseer.tar.gz&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;The file is based on the &lt;a href="http://dublincore.org/"&gt;Dublin Core&lt;/a&gt; standard with additional metadata fields, including citation relationships (References and IsReferencedBy), author affiliations, and author addresses. The index is split into many 'dump' files with no root XML tag. So:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;$ echo "&amp;lt;records&amp;gt;" `cat oai_citeseer/*` "&amp;lt;/records&amp;gt;" &amp;gt; cs.xml&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;The file is quite big: approximately 1.9GB with over 36 million lines. The bad news is that:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;$ xmllint --stream cs.xml&lt;br /&gt;&lt;br /&gt;cs.xml:92025: parser error : attributes construct error&lt;br /&gt; &amp;lt;oai_citeseer:author name="L. "j. Svensson"&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;The XML is not well-formed. I tried some quick repairs with sed:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;$ sed -e 's/L\.\ \"j\.\ Svensson/L\.\ J\.\ Svensson/g' cs.xml &amp;gt; csX.xml; mv csX.xml cs.xml&lt;br /&gt;$ xmllint --stream cs.xml&lt;br /&gt;&lt;br /&gt;cs.xml:168403: parser error : internal error&lt;br /&gt; &amp;lt;dc:title&amp;gt;Imagining CLP(^,= alpheta )&amp;lt;/dc:title&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;There also appears to be unprintable characters in the file. A &lt;a href="http://mail-archives.apache.org/mod_mbox/xml-xalan-dev/200012.mbox/%3CD5CE45D3889FD3118BFF00508B555AAC04A3E6BD@SCREAMMSG%3E"&gt;post&lt;/a&gt; from the &lt;a href="http://xml.apache.org/xalan-j"&gt;Xalan&lt;/a&gt; mailing list provides a solution:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;$ java XMLFix cs.xml &amp;gt; csX.xml; mv csX.xml cs.xml&lt;br /&gt;$ xmllint --stream cs.xml&lt;br /&gt;&lt;br /&gt;cs.xml:418791: parser error : attributes construct error&lt;br /&gt; &amp;lt;oai_citeseer:author name="Nitin "nick Sawhney"&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;A recurring problem concerns people who parenthesize some part of their name, e.g. &lt;a href="http://www.informatik.uni-trier.de/%7Eley/db/indices/a-tree/s/Sawhney:Nitin_=Nick=.html"&gt;Nitin "Nick" Sawhney's&lt;/a&gt;. To fix these errors in the name attribute of the oai_citeseer:author tag:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;$ sed -e 's/\(name\=\"[^\"]*\)\"\([^\"]*\"\&amp;gt;\)/\1\2/g' cs.xml &amp;gt; csX.xml; mv csX.xml cs.xml&lt;br /&gt;$ sed -e 's/\(name\=\"[^\"]*\)\"\([^\"]*\)\"\([^\"]*\"\&amp;gt;\)/\1\2\3/g' cs.xml &amp;gt; csX.xml; mv csX.xml cs.xml&lt;br /&gt;$ xmllint --stream cs.xml&lt;br /&gt;&lt;br /&gt;cs.xml:25857443: parser error : attributes construct error&lt;br /&gt; &amp;lt;oai_citeseer:author name="Kai Voy"""zy Massachusettsiassachu"&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;I manually edit this line with &lt;a href="http://www.vim.org/"&gt;vim&lt;/a&gt;, and I'm done! I have a well-formed XML file.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10368130-3375767681790121138?l=martinharrigan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://martinharrigan.blogspot.com/feeds/3375767681790121138/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10368130&amp;postID=3375767681790121138' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10368130/posts/default/3375767681790121138'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10368130/posts/default/3375767681790121138'/><link rel='alternate' type='text/html' href='http://martinharrigan.blogspot.com/2008/07/citeseers-dataset.html' title='CiteSeer&apos;s Dataset'/><author><name>Martin Harrigan</name><uri>https://profiles.google.com/114327324633274245375</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-IqA6RwqAVss/AAAAAAAAAAI/AAAAAAAAUZg/sdannd8nmnM/s512-c/photo.jpg'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10368130.post-5063374684758087878</id><published>2008-07-18T12:37:00.004+01:00</published><updated>2008-07-18T19:30:59.603+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='flex'/><category scheme='http://www.blogger.com/atom/ns#' term='web'/><title type='text'>Typos</title><content type='html'>I've been leafing through Charles E. Brown's &lt;a href="http://www.amazon.com/Essential-Guide-Flex/dp/1590599500"&gt;The Essential Guide to Flex 3&lt;/a&gt; lately. At the very start of the book is an 'About the Author' page. The page ends with 'Charles can be contacted through his website, a continuous work in progress, at www.charlesbrown.com'. However, &lt;a href="http://www.charlesbrown.com"&gt;www.charlesbrown.com&lt;/a&gt; does not look like the work of an author with expertise in Flex, Flash, Dreamweaver, ActionScript, etc. After some detective work I realized that &lt;a href="http://www.charlesebrown.net"&gt;http://www.charlesebrown.net&lt;/a&gt; is the true homepage of the book's author. I can only imagine the author's reaction when he noticed the typo.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10368130-5063374684758087878?l=martinharrigan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://martinharrigan.blogspot.com/feeds/5063374684758087878/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10368130&amp;postID=5063374684758087878' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10368130/posts/default/5063374684758087878'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10368130/posts/default/5063374684758087878'/><link rel='alternate' type='text/html' href='http://martinharrigan.blogspot.com/2008/07/typos.html' title='Typos'/><author><name>Martin Harrigan</name><uri>https://profiles.google.com/114327324633274245375</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-IqA6RwqAVss/AAAAAAAAAAI/AAAAAAAAUZg/sdannd8nmnM/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10368130.post-4573025148320692123</id><published>2008-06-30T10:59:00.003+01:00</published><updated>2008-12-08T22:21:48.272Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='games'/><category scheme='http://www.blogger.com/atom/ns#' term='soccer'/><title type='text'>Euro'08 Prediction League</title><content type='html'>Euro'08 has ended. Spain were crowned champions with a well-deserved victory in the final at Vienna and I finished a respectable joint-first in a prediction league at work (leader graph below). As you can see, most of the scores plateaued after the group stages.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_GSCeoDzxEu4/SGiu6dunDwI/AAAAAAAADsI/sKwHmFRN2sk/s1600-h/euro_08_prediction_league.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://3.bp.blogspot.com/_GSCeoDzxEu4/SGiu6dunDwI/AAAAAAAADsI/sKwHmFRN2sk/s320/euro_08_prediction_league.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5217612487744491266" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10368130-4573025148320692123?l=martinharrigan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://martinharrigan.blogspot.com/feeds/4573025148320692123/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10368130&amp;postID=4573025148320692123' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10368130/posts/default/4573025148320692123'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10368130/posts/default/4573025148320692123'/><link rel='alternate' type='text/html' href='http://martinharrigan.blogspot.com/2008/06/euro08-prediction-league.html' title='Euro&apos;08 Prediction League'/><author><name>Martin Harrigan</name><uri>https://profiles.google.com/114327324633274245375</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-IqA6RwqAVss/AAAAAAAAAAI/AAAAAAAAUZg/sdannd8nmnM/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_GSCeoDzxEu4/SGiu6dunDwI/AAAAAAAADsI/sKwHmFRN2sk/s72-c/euro_08_prediction_league.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10368130.post-2248609748994681970</id><published>2008-06-03T21:59:00.015+01:00</published><updated>2009-11-09T21:13:08.499Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='research'/><category scheme='http://www.blogger.com/atom/ns#' term='EU'/><title type='text'>An EU Research Acronym Nonprofileration Treaty (EU-RANT)?</title><content type='html'>STREPs, CORDIS, ERA, ERC, FPx where x = 1...7? This is my short guide to some of the terminology used by EU-funded research.&lt;br /&gt;&lt;br /&gt;The European Economic Community (EEC) was established by the Treaty of Rome in 1957. It was renamed the European Community (EC) in 1992. The &lt;a href="http://europa.eu/index_en.htm"&gt;European Union&lt;/a&gt; (EU) is a political and economic community established in 1993 by the Maastricht Treaty. It added new areas of policy to the existing EC. The EC will be completely absorbed into the EU if the Treaty of Lisbon is ratified.&lt;br /&gt;&lt;br /&gt;In 2007, 5% of the EU's annual budget (itself about 1% of the EU's combined GDP) was allocated to research. Scientific research is facilitated primarily through the EU's Framework Programmes (FPs). In addition, the &lt;a href="http://erc.europa.eu/"&gt;European Research Council&lt;/a&gt; (ERC) funds fundamental, or `blue skies', research, e.g. the ERC Starting Grants (ERC-StG) for independent researchers and the &lt;a href="http://ec.europa.eu/research/era/index_en.html"&gt;European Research Area&lt;/a&gt; (ERA) focuses on cooperation at the national level.&lt;br /&gt;&lt;br /&gt;We briefy outline the three most recent FPs.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;a href="http://cordis.europa.eu/fp5/"&gt;FP5 (1998-2002)&lt;/a&gt;:&lt;/span&gt; `to resolve the community issues and respond to the socioeconomic challenges in the wake of a growing EU'.&lt;br /&gt;&lt;br /&gt;It comprised:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;the Fifth European Community Framework Programme (Research, Training, Technological Development and Demonstration activities); and&lt;/li&gt;&lt;li&gt;the Fifth Euratom Framework Programme (nuclear sector).&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;It had 7 Specific Programmes:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;4 Thematic Programmes;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Quality of life and management of living resources (Quality of Life)&lt;/li&gt;&lt;li&gt;User-friendly information society (IST)&lt;/li&gt;&lt;li&gt;Competitive and sustainable growth (GROWTH)&lt;/li&gt;&lt;li&gt;Energy, environment and sustainable development (EESD)&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;3 Horizontal Programmes.&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Confirming the international role of community research (INCO 2)&lt;/li&gt;&lt;li&gt;Promotion of innovation and encouragement of SME participation (INNOVATION/SMEs)&lt;/li&gt;&lt;li&gt;Improving the human research potential and the socio-economic knowledge base (IMPROVING)&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;"&gt;&lt;a href="http://cordis.europa.eu/fp6/"&gt;FP6 (2002-2006)&lt;/a&gt;:&lt;/span&gt; `to contribute to the creation of the ERA by improving integration and co-ordination of research in Europe, which is so far largely fragmented'.&lt;br /&gt;&lt;br /&gt;Themes included:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Life Sciences, Genomics and Biotechnology for Health;&lt;/li&gt;&lt;li&gt;Information Society Technologies;&lt;/li&gt;&lt;li&gt;Nano-Technologies and Nano-Sciences, Knowledge-Based Multifunctional Materials, New Production Processes;&lt;/li&gt;&lt;li&gt;Aeronautics and Space;&lt;/li&gt;&lt;li&gt;Food Quality and Safety;&lt;/li&gt;&lt;li&gt;Sustainable Development, Global Change and Ecosystems;&lt;/li&gt;&lt;li&gt;Citizens and Governance in a Knowledge-Based Society.&lt;/li&gt;&lt;/ul&gt; Types of Projects: &lt;ul&gt;&lt;li&gt;Specific Targeted Research Projects (STREPs) are medium sized projects, with a minimum of 3 partners coming from 3 different countries. They are typically 2 to 3 years in duration.&lt;/li&gt;&lt;li&gt;Integrated Projects (IPs).&lt;/li&gt;&lt;li&gt;Networks of Excellence (NoEs).&lt;/li&gt;&lt;li&gt;Different projects dealing with the same domain can also coordinate their efforts through specific initiatives.&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;"&gt;&lt;a href="http://cordis.europa.eu/fp7"&gt;FP7 (2007-2013)&lt;/a&gt;:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;It comprises 4 Specific Programmes/Activities (each with a percentage of the total budget):&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Cooperation (64%);&lt;/li&gt;&lt;li&gt;Ideas (15%);&lt;/li&gt;&lt;li&gt;People (9%), e.g. Marie Curie Fellowships;&lt;/li&gt;&lt;li&gt;Capacities (9%).&lt;/li&gt;&lt;/ul&gt;The Cooperation Specific Programme has Thematic Areas. Each Thematic Area has Challenges and Work Programmes (what will be funded, when, etc.). Each Work Programme issues a Call for Proposals (CfP) (for single or joint Thematic Areas) and each CfP has many Tracks (the part of each proposal that (usually) address a particular challenge). FP7 x.y.z refers to Track z of the yth Call for Proposals in the xth Thematic Area under FP7.&lt;br /&gt;&lt;br /&gt;The ten Thematic Areas for the Cooperation Specific Programme are Health, Food, Agriculture and Fisheries, Biotechnology, Information and Communication Technologies, Nanosciences, Nanotechnologies, Materials and New Production Technologies, Energy, Environment (including Climate Change), Transport (including Aeronautics), Socio-Economic Sciences and Humanities, Security and Space.&lt;br /&gt;&lt;br /&gt;The Ideas Specific Programme is not linked to the Thematic Areas and includes engineering, social sciences and the humanities. It is managed by the ERC instead of the EC and focuses on fundamental research.&lt;br /&gt;&lt;br /&gt;The Project Types (Financial Instruments in FP6) of FP7 are:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Collaborative Research Projects, e.g. IPs and STREPs;&lt;/li&gt;&lt;li&gt;Networks of Excellence;&lt;/li&gt;&lt;li&gt;Support and Coordination Actions (SA and CA);&lt;/li&gt;&lt;li&gt;Marie Curie Actions, e.g. Marie Curie Fellowships (Intra-European, Incoming International and Outgoing International) and Marie Curie Networks.&lt;/li&gt;&lt;/ul&gt;The &lt;a href="http://cordis.europa.eu/"&gt;Community Research and Development Information Service&lt;/a&gt; (CORDIS) is a web portal for the FPs. Each member state also funds a National Contact Point (NCP) to provide non-commercial advice and help.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10368130-2248609748994681970?l=martinharrigan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://martinharrigan.blogspot.com/feeds/2248609748994681970/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10368130&amp;postID=2248609748994681970' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10368130/posts/default/2248609748994681970'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10368130/posts/default/2248609748994681970'/><link rel='alternate' type='text/html' href='http://martinharrigan.blogspot.com/2008/06/eu-research-acronym-nonprofileration.html' title='An EU Research Acronym Nonprofileration Treaty (EU-RANT)?'/><author><name>Martin Harrigan</name><uri>https://profiles.google.com/114327324633274245375</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-IqA6RwqAVss/AAAAAAAAAAI/AAAAAAAAUZg/sdannd8nmnM/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10368130.post-604327641661310286</id><published>2008-05-17T17:18:00.006+01:00</published><updated>2008-05-17T17:57:07.590+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='web'/><title type='text'>JavaScript: 1997 vs 2008</title><content type='html'>After buying a very early issue of &lt;a href="http://www.netmag.co.uk/"&gt;.net Magazine&lt;/a&gt; (1997?) that included the latest versions of both &lt;a href="http://en.wikipedia.org/wiki/Internet_Explorer"&gt;Internet Explorer&lt;/a&gt; (4.0?) and &lt;a href="http://en.wikipedia.org/wiki/Netscape_Navigator"&gt;Netscape Navigator&lt;/a&gt; (4.0?) on a bonus CD, I wrote my very first lines of &lt;a href="http://en.wikipedia.org/wiki/JavaScript"&gt;JavaScript&lt;/a&gt;. As far as I can remember, my script allowed a hyperlink to show/hide a block of text within the same page. The CD included many other &lt;a href="http://en.wikipedia.org/wiki/Dynamic_HTML"&gt;DHTML examples,&lt;/a&gt; some of which needed separate code for the two browsers.&lt;br /&gt;&lt;br /&gt;Recently, I've been using JavaScript to write something a little more complicated and I've been watching &lt;a href="http://www.crockford.com/"&gt;Douglas Crockford&lt;/a&gt; et al.'s JavaScript videos (&lt;a href="http://yuiblog.com/blog/2007/01/24/video-crockford-tjpl/"&gt;JavaScript&lt;/a&gt;, &lt;a href="http://yuiblog.com/blog/2006/10/20/video-crockford-domtheory/"&gt;The Theory of the DOM&lt;/a&gt;, &lt;a href="http://yuiblog.com/blog/2006/11/27/video-crockford-advjs/"&gt;Advanced JavaScript&lt;/a&gt;, &lt;a href="http://yuiblog.com/blog/2007/03/05/browserwars/"&gt;Browser Wars&lt;/a&gt;, &lt;a href="http://yuiblog.com/blog/2007/05/16/video-crockford-quality/"&gt;Quality&lt;/a&gt;, &lt;a href="http://yuiblog.com/blog/2007/06/08/video-crockford-goodstuff/"&gt;The Good Parts&lt;/a&gt;, &lt;a href="http://yuiblog.com/blog/2007/11/05/video-crockford/"&gt;The State of Ajax&lt;/a&gt;) to bring me up-to-date. JavaScript has changed alot: first-class functions, prototype-based inheritance, closures, variadic functions, etc. I have some catching up to do :-(&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10368130-604327641661310286?l=martinharrigan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://martinharrigan.blogspot.com/feeds/604327641661310286/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10368130&amp;postID=604327641661310286' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10368130/posts/default/604327641661310286'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10368130/posts/default/604327641661310286'/><link rel='alternate' type='text/html' href='http://martinharrigan.blogspot.com/2008/05/javascript-1997-vs-2008.html' title='JavaScript: 1997 vs 2008'/><author><name>Martin Harrigan</name><uri>https://profiles.google.com/114327324633274245375</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-IqA6RwqAVss/AAAAAAAAAAI/AAAAAAAAUZg/sdannd8nmnM/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10368130.post-7116392392313961881</id><published>2008-03-21T22:30:00.007Z</published><updated>2008-12-08T22:21:48.545Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='latex'/><category scheme='http://www.blogger.com/atom/ns#' term='hyperref'/><title type='text'>More hyperref woes</title><content type='html'>Following on from my last &lt;a href="http://martinharrigan.blogspot.com/2007/11/using-hyperref-and-algorithm2e-line.html"&gt;post&lt;/a&gt; on hyperref and algorithm2e, I have ran into difficulties with hyperref links and page breaks. Suppose I process the following with pdflatex:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;\documentclass[11pt,english]{article}&lt;br /&gt;\usepackage{hyperref}&lt;br /&gt;&lt;br /&gt;\begin{document}&lt;br /&gt;This is the top of the page!&lt;br /&gt;&lt;br /&gt;\vspace{18cm}&lt;br /&gt;&lt;br /&gt;This is the bottom of the page! Blah blah blah blah \url{http://www.martinharrigan.ie}?&lt;br /&gt;\end{document}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Then I get:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_GSCeoDzxEu4/R-Q5XowYErI/AAAAAAAADMA/5uynR8iDB6U/s1600-h/hyperref_with_page_break_1.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_GSCeoDzxEu4/R-Q5XowYErI/AAAAAAAADMA/5uynR8iDB6U/s320/hyperref_with_page_break_1.png" alt="" id="BLOGGER_PHOTO_ID_5180328549623009970" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;It looks like the header has become a link as well! With natbib links, the page number is also active. My quick fix is to avoid page breaks in the middle of links altogether by using \clubpenalty:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;\documentclass[11pt,english]{article}&lt;br /&gt;\usepackage{hyperref}&lt;br /&gt;&lt;br /&gt;\begin{document}&lt;br /&gt;This is the top of the page!!&lt;br /&gt;&lt;br /&gt;\vspace{17cm}&lt;br /&gt;&lt;br /&gt;This is the bottom of the page! Blah blah blah blah blah blah blah blah blah blah&lt;br /&gt;blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah&lt;br /&gt;blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah&lt;br /&gt;blah blah blah blah blah blah blah blah blah blah \clubpenalty10000\url{http://www.martinharrigan.ie}?&lt;br /&gt;\end{document}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;And then all is well in the world again:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_GSCeoDzxEu4/R-Q5q4wYEsI/AAAAAAAADMI/DfxVwXLN9Jc/s1600-h/hyperref_with_page_break_2.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://2.bp.blogspot.com/_GSCeoDzxEu4/R-Q5q4wYEsI/AAAAAAAADMI/DfxVwXLN9Jc/s320/hyperref_with_page_break_2.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5180328880335491778" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;By the way, the hopeful-sounding 'breaklinks' option of the hyperref package doesn't fix the problem.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10368130-7116392392313961881?l=martinharrigan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://martinharrigan.blogspot.com/feeds/7116392392313961881/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10368130&amp;postID=7116392392313961881' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10368130/posts/default/7116392392313961881'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10368130/posts/default/7116392392313961881'/><link rel='alternate' type='text/html' href='http://martinharrigan.blogspot.com/2008/03/more-hyperref-woes.html' title='More hyperref woes'/><author><name>Martin Harrigan</name><uri>https://profiles.google.com/114327324633274245375</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-IqA6RwqAVss/AAAAAAAAAAI/AAAAAAAAUZg/sdannd8nmnM/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_GSCeoDzxEu4/R-Q5XowYErI/AAAAAAAADMA/5uynR8iDB6U/s72-c/hyperref_with_page_break_1.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10368130.post-6307988452102328626</id><published>2008-03-15T15:55:00.006Z</published><updated>2008-05-18T20:43:00.971+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='motion denied'/><category scheme='http://www.blogger.com/atom/ns#' term='dog'/><title type='text'>Motion Denied</title><content type='html'>Next Thursday (20th March) at about 9:00PM at Clonmel dog track, &lt;a href="http://www.igb.ie/Upcoming-Events/Upcoming-Race-Cards/Upcoming-Race-Summary/greyhounds/?gid=BB3BA43E-0F50-4C23-861D-251BA4E2FED7"&gt;Motion Denied&lt;/a&gt; will make his debut. He is owned by &lt;a href="http://www.igb.ie/Upcoming-Events/Upcoming-Race-Cards/Upcoming-Race-Summary/owners/?oid=602404"&gt;The Committee Syndicate&lt;/a&gt;, of which I am a part. He's in &lt;a href="http://www.igb.ie/Upcoming-Events/Upcoming-Race-Cards/upcoming-race-summary/?track=CML&amp;amp;id=48731&amp;amp;date=20-Mar-2008"&gt;race five&lt;/a&gt; and running from trap number three. All bets welcome.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Update:&lt;/span&gt; He finished a middling third but has another &lt;a href="http://www.igb.ie/Upcoming-Events/Upcoming-Race-Cards/upcoming-race-summary/?track=CML&amp;amp;id=48753&amp;amp;date=27-Mar-2008"&gt;day out&lt;/a&gt; Thursday (27th March).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Update to the update:&lt;/span&gt; All his progress is reported &lt;a href="http://www.igb.ie/Trainers-Landing/Greyhounds/?gid=BB3BA43E-0F50-4C23-861D-251BA4E2FED7"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10368130-6307988452102328626?l=martinharrigan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://martinharrigan.blogspot.com/feeds/6307988452102328626/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10368130&amp;postID=6307988452102328626' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10368130/posts/default/6307988452102328626'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10368130/posts/default/6307988452102328626'/><link rel='alternate' type='text/html' href='http://martinharrigan.blogspot.com/2008/03/motion-denied.html' title='Motion Denied'/><author><name>Martin Harrigan</name><uri>https://profiles.google.com/114327324633274245375</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-IqA6RwqAVss/AAAAAAAAAAI/AAAAAAAAUZg/sdannd8nmnM/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10368130.post-2128559090285159246</id><published>2008-03-04T21:18:00.003Z</published><updated>2008-12-08T22:21:48.681Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='tv'/><title type='text'>The Late Late Show</title><content type='html'>Just last week I was a member of the audience for &lt;a href="http://www.rte.ie/tv/latelate/"&gt;The Late Late Show&lt;/a&gt;. You can see Deirdre and me in the still below in the right block of seats near the aisle.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_GSCeoDzxEu4/R829dQeSlVI/AAAAAAAADIQ/IKFcjmFPzZw/s1600-h/the_late_late_show.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://3.bp.blogspot.com/_GSCeoDzxEu4/R829dQeSlVI/AAAAAAAADIQ/IKFcjmFPzZw/s320/the_late_late_show.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5173999857254438226" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10368130-2128559090285159246?l=martinharrigan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://martinharrigan.blogspot.com/feeds/2128559090285159246/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10368130&amp;postID=2128559090285159246' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10368130/posts/default/2128559090285159246'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10368130/posts/default/2128559090285159246'/><link rel='alternate' type='text/html' href='http://martinharrigan.blogspot.com/2008/03/late-late-show.html' title='The Late Late Show'/><author><name>Martin Harrigan</name><uri>https://profiles.google.com/114327324633274245375</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-IqA6RwqAVss/AAAAAAAAAAI/AAAAAAAAUZg/sdannd8nmnM/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_GSCeoDzxEu4/R829dQeSlVI/AAAAAAAADIQ/IKFcjmFPzZw/s72-c/the_late_late_show.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10368130.post-3675728212151457020</id><published>2007-12-11T23:31:00.001Z</published><updated>2008-03-25T11:38:39.616Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='web'/><title type='text'>My First Domains</title><content type='html'>I registered &lt;a href="http://www.martinharrigan.ie"&gt;http://www.martinharrigan.ie&lt;/a&gt; today.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Update:&lt;/b&gt; To that I have since added &lt;a href="http://www.playr.ie"&gt;http://www.playr.ie&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10368130-3675728212151457020?l=martinharrigan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://martinharrigan.blogspot.com/feeds/3675728212151457020/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10368130&amp;postID=3675728212151457020' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10368130/posts/default/3675728212151457020'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10368130/posts/default/3675728212151457020'/><link rel='alternate' type='text/html' href='http://martinharrigan.blogspot.com/2007/12/my-first-domain.html' title='My First Domains'/><author><name>Martin Harrigan</name><uri>https://profiles.google.com/114327324633274245375</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-IqA6RwqAVss/AAAAAAAAAAI/AAAAAAAAUZg/sdannd8nmnM/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10368130.post-2662090943162144639</id><published>2007-11-20T14:50:00.000Z</published><updated>2008-12-08T22:21:49.232Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='latex'/><category scheme='http://www.blogger.com/atom/ns#' term='algorithm2e'/><category scheme='http://www.blogger.com/atom/ns#' term='hyperref'/><title type='text'>hyperref and algorithm2e line references</title><content type='html'>I like to use the &lt;a href="http://www.ctan.org/tex-archive/macros/latex/contrib/hyperref/"&gt;hyperref&lt;/a&gt; and &lt;a href="http://www.ctan.org/tex-archive/macros/latex/contrib/algorithm2e/"&gt;algorithm2e&lt;/a&gt; (Release 3.9) packages when creating documents with LaTeX. Unfortunately, there seems to be a slight incompatibility:&lt;br /&gt;&lt;br /&gt;Suppose I process the following with pdflatex:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;\documentclass{article}&lt;br /&gt;\usepackage[naturalnames]{hyperref}&lt;br /&gt;\usepackage[linesnumbered,boxed]{algorithm2e}&lt;br /&gt;\begin{document}&lt;br /&gt;\begin{algorithm}&lt;br /&gt;First\label{line_1}\;&lt;br /&gt;Second\label{line_2}\;&lt;br /&gt;Third\label{line_3}\;&lt;br /&gt;\end{algorithm}&lt;br /&gt;First is on Line~\ref{line_1}, second is on Line~\ref{line_2} and third is on Line~\ref{line_3}.&lt;br /&gt;\end{document}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Then I get:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_GSCeoDzxEu4/R0L2om5DXDI/AAAAAAAACxM/3gKNjucMIg0/s1600-h/hyperref_algorithm2e_problem.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_GSCeoDzxEu4/R0L2om5DXDI/AAAAAAAACxM/3gKNjucMIg0/s320/hyperref_algorithm2e_problem.png" alt="" id="BLOGGER_PHOTO_ID_5134937702650829874" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The line references don't work - even though they were meant to be fixed in Release 3.3 of algorithm2e according to the change log! A quick fix is to use the [naturalnames] option of hyperref package and comment out lines 845, 847, 849 and 850 of algorithm2e.sty to get (lines 844 to 853 shown below):&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;\newcommand{\nl}{%&lt;br /&gt;%  \@ifundefined{href}{% if not hyperref then do a simple refstepcounter&lt;br /&gt;    \refstepcounter{AlgoLine}%&lt;br /&gt;%  }{% else if hyperref, do the anchor so 2 lines in two differents algorithms cannot have the same href&lt;br /&gt;%    \stepcounter{AlgoLine}\Hy@raisedlink{\hyper@anchorstart{AlgoLine\thealgocfline.\theAlgoLine}\hyper@anchorend}%&lt;br /&gt;%    \stepcounter{AlgoLine}\Hy@raisedlink{\hyper@anchorstart{AlgoLine\thealgocfline.\theAlgoLine}\hyper@anchorend}%&lt;br /&gt;%  }% now we can do the line numbering&lt;br /&gt;  \strut\vadjust{\kern-\dp\strutbox\vtop to \dp\strutbox{%&lt;br /&gt;      \baselineskip\dp\strutbox\vss\llap{\scriptsize{\nlSty{\theAlgoLine}\hskip\skiptotal}}\null}}%&lt;br /&gt;}%&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;That is all.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10368130-2662090943162144639?l=martinharrigan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://martinharrigan.blogspot.com/feeds/2662090943162144639/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10368130&amp;postID=2662090943162144639' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10368130/posts/default/2662090943162144639'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10368130/posts/default/2662090943162144639'/><link rel='alternate' type='text/html' href='http://martinharrigan.blogspot.com/2007/11/using-hyperref-and-algorithm2e-line.html' title='hyperref and algorithm2e line references'/><author><name>Martin Harrigan</name><uri>https://profiles.google.com/114327324633274245375</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-IqA6RwqAVss/AAAAAAAAAAI/AAAAAAAAUZg/sdannd8nmnM/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_GSCeoDzxEu4/R0L2om5DXDI/AAAAAAAACxM/3gKNjucMIg0/s72-c/hyperref_algorithm2e_problem.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10368130.post-3700709831058817079</id><published>2006-05-01T00:00:00.002+01:00</published><updated>2008-04-07T22:22:51.150+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='soc'/><title type='text'>A Graph Layout Algorithm for GEF</title><content type='html'>&lt;span style="font-weight: bold;"&gt;Project Proposal for Google's Summer of Code 2006&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://gef.tigris.org/"&gt;GEF&lt;/a&gt; (Graph Editing Framework) is a library of Java classes for editing diagrams and graphs. It is used by &lt;a href="http://argouml.tigris.org/"&gt;ArgoUML&lt;/a&gt; for UML diagrams. For my SoC project I will implement a graph layout algorithm to automatically position the nodes and link bends of a graph in a way that is particularly suited to UML class diagrams.&lt;br /&gt;&lt;br /&gt;The algorithm will be a combination of the well-known Sugiyama algorithm with some orthogonal drawing techniques. A UML class diagram has two main types of links - the inheritance relationships and the associations. The inheritance relationships form a hierarchical structure. In computing a layout I will use the Sugiyama algorithm to draw the classes involved in the inheritance relationships. The algorithm has four steps; it temporarily removes any directed cycles by reversing a small number of links, places the nodes on horizontal levels so that all links are directed similarly, permutes the nodes on each level to minimize the number of link crossings, and balances the layout. Then I will add in the remaining classes and the association links while preserving the basic structure. UML class diagrams have additional requirements that are not handled by generic graph layout algorithms, for example, the nodes do not have fixed size and the association links are labelled in a very particular manner. See [1] for a much more detailed description of the entire algorithm.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Contributions&lt;/span&gt;&lt;br /&gt;My contributions will be:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;An implementation of the Sugiyama algorithm for drawing general directed graphs.&lt;/li&gt;&lt;li&gt;A combination of this algorithm with some other additions specifically tailored for UML class diagrams (see [1]).&lt;/li&gt;&lt;li&gt;    A demo application. &lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;An implementation of the Sugiyama algorithm with the additions described in [1] is a first-step to drawing UML class diagrams in ArgoUML. There are more advanced methods for the individual steps which may be looked at in the future. For example, it may be desirable to restrict the width of the drawing so that it 'fits' on a computer screen thus allowing a user to see everything by simply scrolling up and down.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;References&lt;/span&gt;&lt;br /&gt;[1] J. Seemann, Extending the Sugiyama Algorithm for Drawing UML Class Diagrams: Towards Automatic Layout of Object-Oriented Software Diagrams, Proceedings of Graph Drawing, 5th International Symposium, GD '97, Rome, Italy, September, 1997&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Update:&lt;/span&gt; This was accepted :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10368130-3700709831058817079?l=martinharrigan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://martinharrigan.blogspot.com/feeds/3700709831058817079/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10368130&amp;postID=3700709831058817079' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10368130/posts/default/3700709831058817079'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10368130/posts/default/3700709831058817079'/><link rel='alternate' type='text/html' href='http://martinharrigan.blogspot.com/2006/05/graph-layout-algorithm-for-gef.html' title='A Graph Layout Algorithm for GEF'/><author><name>Martin Harrigan</name><uri>https://profiles.google.com/114327324633274245375</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-IqA6RwqAVss/AAAAAAAAAAI/AAAAAAAAUZg/sdannd8nmnM/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry></feed>
