<?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-8824277</id><updated>2012-02-16T10:11:19.170Z</updated><category term='space'/><category term='mootools'/><category term='javascript'/><category term='personal'/><category term='mysql'/><category term='iis7'/><category term='politics'/><category term='web development'/><category term='music'/><category term='geek'/><category term='open source'/><category term='seo'/><category term='beforeyoubuy'/><category term='css'/><category term='computer vision'/><category term='secret project'/><category term='book review'/><category term='politics humor'/><category term='.net'/><category term='physics'/><category term='ubuntu'/><category term='mono'/><category term='futurist'/><category term='spring.net'/><category term='monodevelop'/><category term='nhibernate'/><category term='vista'/><category term='startups'/><title type='text'>Random thoughts and a dash of .NET</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://jamesfitzsimons.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://jamesfitzsimons.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default?start-index=101&amp;max-results=100'/><author><name>James Fitzsimons</name><uri>http://www.blogger.com/profile/17804628717934024610</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>130</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-8824277.post-814419300247410186</id><published>2009-03-20T14:05:00.003Z</published><updated>2009-03-20T14:13:47.389Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='personal'/><title type='text'>Time for a change</title><content type='html'>Well, I am now in the closing hours of my last day of work at my current job. It's been a challenging role and I have learnt a huge amount about the finance industry. &lt;br /&gt;&lt;br /&gt;Looking forward to the future fills me with a huge amount of excitement mixed with a little bit of nervousness. It's not every day you give up a well paying job, pack up your life and move country. I have no doubt that the next year will be full of challenges, but I am really looking forward to it all. I can't wait to build my business into &lt;a href="http://www.beforeyoubuy.co.nz"&gt;New Zealands best shopping comparison site&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;But first, before anything else, I think it's time for a holiday!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8824277-814419300247410186?l=jamesfitzsimons.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jamesfitzsimons.blogspot.com/feeds/814419300247410186/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8824277&amp;postID=814419300247410186' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/814419300247410186'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/814419300247410186'/><link rel='alternate' type='text/html' href='http://jamesfitzsimons.blogspot.com/2009/03/time-for-change.html' title='Time for a change'/><author><name>James Fitzsimons</name><uri>http://www.blogger.com/profile/17804628717934024610</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8824277.post-4924941889328230475</id><published>2009-03-16T15:00:00.000Z</published><updated>2009-03-16T15:00:00.925Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='.net'/><category scheme='http://www.blogger.com/atom/ns#' term='geek'/><title type='text'>Be careful where you get your information</title><content type='html'>The internet is rife with misinformation. &lt;br /&gt;&lt;br /&gt;As a developer you tend to depend heavily on searching for examples of how to solve a particular problem such as code snippets, and patterns and practices. There is very little ground breaking work and it is almost certain that someone has been there, done that, and blogged the solution to your problem already.&lt;br /&gt;&lt;br /&gt;Problems arise when you choose the wrong source to trust. For example, today I was trying to figure out how to get ASP.NET not to render a name attribute for the form element as we are starting to target XHTML 1.1 compliance for &lt;a href="http://www.beforeyoubuy.co.nz"&gt;BeforeYouBuy&lt;/a&gt;. A quick google came up with &lt;a href="http://forums.asp.net/t/1152605.aspx"&gt;this&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Certainly the answer that is proposed is "a solution", but it's certainly not "the solution". A slight modification to my search turned up &lt;a href="http://msdn.microsoft.com/en-us/library/ms178159.aspx"&gt;this how to on the msdn site&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;It's really down to knowing where to look.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8824277-4924941889328230475?l=jamesfitzsimons.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jamesfitzsimons.blogspot.com/feeds/4924941889328230475/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8824277&amp;postID=4924941889328230475' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/4924941889328230475'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/4924941889328230475'/><link rel='alternate' type='text/html' href='http://jamesfitzsimons.blogspot.com/2009/03/be-careful-where-you-get-your.html' title='Be careful where you get your information'/><author><name>James Fitzsimons</name><uri>http://www.blogger.com/profile/17804628717934024610</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8824277.post-5558283238790119998</id><published>2009-03-12T21:07:00.003Z</published><updated>2009-03-12T21:31:08.978Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='personal'/><category scheme='http://www.blogger.com/atom/ns#' term='beforeyoubuy'/><category scheme='http://www.blogger.com/atom/ns#' term='.net'/><category scheme='http://www.blogger.com/atom/ns#' term='startups'/><category scheme='http://www.blogger.com/atom/ns#' term='secret project'/><category scheme='http://www.blogger.com/atom/ns#' term='geek'/><title type='text'>BeforeYouBuy is online!</title><content type='html'>After a long time and a huge amount of hard work &lt;a href="http://www.beforeyoubuy.co.nz"&gt;BeforeYouBuy&lt;/a&gt; is finally live! I'm very proud of what we've achieved and excited about what the future holds. &lt;br /&gt;&lt;br /&gt;We've got an almost endless list of enhancements and improvements already, but the site is pretty usable and functional already. &lt;br /&gt;&lt;br /&gt;It's been a great journey, learned a lot of new tricks, tackled a fair bit of new technology and hit more than our fair share of challenges. Now that we're finally online expect to see a few more posts. We're always interested in any feedback you might have too!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8824277-5558283238790119998?l=jamesfitzsimons.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jamesfitzsimons.blogspot.com/feeds/5558283238790119998/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8824277&amp;postID=5558283238790119998' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/5558283238790119998'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/5558283238790119998'/><link rel='alternate' type='text/html' href='http://jamesfitzsimons.blogspot.com/2009/03/beforeyoubuy-is-online.html' title='BeforeYouBuy is online!'/><author><name>James Fitzsimons</name><uri>http://www.blogger.com/profile/17804628717934024610</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8824277.post-9045428136419013221</id><published>2009-01-30T13:00:00.000Z</published><updated>2009-01-30T13:00:00.600Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='mysql'/><category scheme='http://www.blogger.com/atom/ns#' term='.net'/><title type='text'>MySql "Nested transactions are not supported" exception</title><content type='html'>If you are getting an unexpected "Nested transactions are not supported" exception from your MySql database then you may have hit &lt;a href="http://bugs.mysql.com/bug.php?id=36326"&gt;this bug&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I firstly suspected Spring.NET, then the MySql ADO.NET driver. We scratched our heads for a couple of days on this one before I found that bug report. &lt;br /&gt;&lt;br /&gt;To make a long story short, simply commenting out the query_cache_size option in the my.ini file solved it. What effect this will have on performance I haven't determined yet.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8824277-9045428136419013221?l=jamesfitzsimons.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jamesfitzsimons.blogspot.com/feeds/9045428136419013221/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8824277&amp;postID=9045428136419013221' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/9045428136419013221'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/9045428136419013221'/><link rel='alternate' type='text/html' href='http://jamesfitzsimons.blogspot.com/2009/01/mysql-nested-transactions-are-not.html' title='MySql &quot;Nested transactions are not supported&quot; exception'/><author><name>James Fitzsimons</name><uri>http://www.blogger.com/profile/17804628717934024610</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8824277.post-3157601674595609199</id><published>2009-01-28T16:00:00.001Z</published><updated>2009-01-28T16:19:21.317Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='personal'/><category scheme='http://www.blogger.com/atom/ns#' term='politics humor'/><title type='text'>World continues to go mad but at least retains a sense of humor</title><content type='html'>A friend pointed this out to me the other day. &lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.amazon.com/gp/product/B0002CYTL2?ie=UTF8&amp;tag=ranthoandadas-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=B0002CYTL2"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_mvd112GYs3U/SYCFVqb5eAI/AAAAAAAAABE/JG6EMnp2SCI/s320/41G9WA5NRDL._SL160_.jpg"&gt;&lt;/a&gt;&lt;img src="http://www.assoc-amazon.com/e/ir?t=ranthoandadas-20&amp;l=as2&amp;o=1&amp;a=B0002CYTL2" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /&gt;&lt;br /&gt;&lt;br /&gt;At first glance you'd either be inclined to shake your head at the depressing state of childrens toys today, or more likely dismiss it out of hand.&lt;br /&gt;&lt;br /&gt;Instead head over to Amazon and check out the tags and reviews people have added to this product.&lt;br /&gt;&lt;br /&gt;Absolutely priceless.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8824277-3157601674595609199?l=jamesfitzsimons.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jamesfitzsimons.blogspot.com/feeds/3157601674595609199/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8824277&amp;postID=3157601674595609199' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/3157601674595609199'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/3157601674595609199'/><link rel='alternate' type='text/html' href='http://jamesfitzsimons.blogspot.com/2009/01/world-continues-to-go-mad-but-at-least.html' title='World continues to go mad but at least retains a sense of humor'/><author><name>James Fitzsimons</name><uri>http://www.blogger.com/profile/17804628717934024610</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_mvd112GYs3U/SYCFVqb5eAI/AAAAAAAAABE/JG6EMnp2SCI/s72-c/41G9WA5NRDL._SL160_.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8824277.post-9062295953642082630</id><published>2009-01-26T15:05:00.004Z</published><updated>2009-01-30T09:46:16.786Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='web development'/><category scheme='http://www.blogger.com/atom/ns#' term='css'/><title type='text'>A:Hover and IE - a trap for young players</title><content type='html'>If you're having trouble getting your a:hover effect to work in IE you might want to make sure you have an href attribute on the anchor element. The hover effect won't work in IE unless it does.&lt;br /&gt;&lt;br /&gt;I had something like the following:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;span style="color:#666666;"&gt;&lt;span style="font-family:courier new;"&gt;&amp;lt;a onclick="somejavascriptfunction()"&amp;gt;Anchor text&amp;lt;/a&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;Changing to this solved the issue:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;span style="color:#666666;"&gt;&lt;span style="font-family:courier new;"&gt;&amp;lt;a onclick="somejavascriptfunction()" href='#'&amp;gt;Anchor text&amp;lt;/a&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;p&gt;It's a bit embarrassing and I should know better. I hope this post helps other people avoid wasting time like I did.&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8824277-9062295953642082630?l=jamesfitzsimons.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jamesfitzsimons.blogspot.com/feeds/9062295953642082630/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8824277&amp;postID=9062295953642082630' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/9062295953642082630'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/9062295953642082630'/><link rel='alternate' type='text/html' href='http://jamesfitzsimons.blogspot.com/2009/01/ahover-and-ie-trap-for-young-players.html' title='A:Hover and IE - a trap for young players'/><author><name>James Fitzsimons</name><uri>http://www.blogger.com/profile/17804628717934024610</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8824277.post-3766012619075788368</id><published>2008-12-19T14:30:00.002Z</published><updated>2008-12-19T14:34:30.430Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='personal'/><category scheme='http://www.blogger.com/atom/ns#' term='music'/><title type='text'>Amazons DRM free MP3s</title><content type='html'>A couple of nights ago I finally found some time to check out Amazon's new MP3 service and so far I'm pretty impressed.&lt;br /&gt;&lt;br /&gt;&lt;h4&gt;No DRM&lt;/h4&gt;&lt;br /&gt;My interest in the Amazon MP3 service was piqued when I discovered all their tracks are DRM free (&lt;a href="http://www.apple.com/itunes"&gt;unlike some other crippled offerings&lt;/a&gt;). The songs are encoded at 256 kbps which is a pretty respectable bit rate.&lt;br /&gt;&lt;br /&gt;&lt;h4&gt;Linux support!&lt;/h4&gt;&lt;br /&gt;I got even more excited when I went to the &lt;a href="http://www.amazon.co.uk/gp/dmusic/help/faq.html/ref=sv_dmusic_0"&gt;getting started page&lt;/a&gt; and in the "Buy and Download" section they mention they have a Linux version of their Amazon MP3 Downloader application. And they haven't gone for some budget "one size fits all" Linux solution, but they have binaries for most of the major distros.&lt;br /&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5280905002449134994" style="margin: 0px auto 10px; display: block; text-align: center;" alt="" src="http://2.bp.blogspot.com/_mvd112GYs3U/SUmLHsuQZZI/AAAAAAAAAAU/BBje_EuTbIA/s400/distros.jpg" border="0"&gt;&lt;br /&gt;&lt;br /&gt;It's really encouraging to see this sort of first class support for Linux by companies like Amazon.&lt;br /&gt;&lt;br /&gt;&lt;h4&gt;What if I'm running 64 bit linux?&lt;/h4&gt;&lt;br /&gt;If like me you are running the amd64 build of your distro you will need to convince Amazons MP3 Downloader to run against 32 bit libraries. If you use Ubuntu then I suggest the excellent &lt;a href="http://ubuntuforums.org/showthread.php?t=474790"&gt;getlibs tool&lt;/a&gt; for installing your 32 bit dependencies. After you've downloaded the Ubuntu deb file, install it using:&lt;br /&gt;&lt;blockquote&gt;&lt;font style="color: rgb(102, 102, 102);" face="courier new"&gt;sudo dpkg -i --force-all amazon*.deb&lt;/font&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Then install the 32 bit dependencies with getlibs:&lt;br /&gt;&lt;blockquote&gt;&lt;font style="color: rgb(102, 102, 102);" face="courier new"&gt;getlibs /usr/bin/amazonmp3&lt;/font&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;h4&gt;It's dangerously easy to use&lt;/h4&gt;&lt;br /&gt;Amazon certainly seem to have a great range of music on offer. To test things out I purchased &lt;div id="ukShaka"&gt;&lt;a href="http://www.amazon.co.uk/gp/product/B001HDN7QS?ie=UTF8&amp;amp;tag=ranthoandadas-21&amp;amp;linkCode=as2&amp;amp;camp=1634&amp;amp;creative=19450&amp;amp;creativeASIN=B001HDN7QS"&gt;Shakatakadoodub&lt;/a&gt;&lt;img src="http://www.assoc-amazon.co.uk/e/ir?t=ranthoandadas-21&amp;amp;l=as2&amp;amp;o=2&amp;amp;a=B001HDN7QS" alt="" style="border: medium none  ! important; margin: 0px ! important;" border="0" width="1" height="1"&gt;&lt;/div&gt;&lt;div id="usShaka"&gt;&lt;a href="http://www.amazon.com/gp/redirect.html?ie=UTF8&amp;location=http%3A%2F%2Fwww.amazon.com%2Fs%3Fie%3DUTF8%26x%3D17%26ref%255F%3Dnb%255Fss%255Fgw%26y%3D20%26field-keywords%3DShakatakadoodub%2520%26url%3Dsearch-alias%253Ddigital-music&amp;tag=ranthoandadas-20&amp;linkCode=ur2&amp;camp=1789&amp;creative=390957"&gt;Shakatakadoodub&lt;/a&gt;&lt;img src="https://www.assoc-amazon.com/e/ir?t=ranthoandadas-20&amp;l=ur2&amp;o=1" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /&gt;&lt;/div&gt;&lt;script language="JavaScript"&gt;var country_code = geoip_country_code();if (country_code != "GB"){ document.getElementById('ukShaka').style.display = 'none';}else{document.getElementById('usShaka').style.display = 'none';}&lt;/script&gt; by Kruder &amp;amp; Dorfmeister using 1-click. The 3 track EP cost me £2.37, you can get full albums for around £6-7 (or $9-11 US). The Amazon MP3 Downloader is a simple but effective app downloading Shakatakadoodub to my machine in a matter of seconds. From there it was a simple job to import into Banshee. One mouse click was all it took to purchase and download a DRM free EP!&lt;br /&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5280906315701078290" style="margin: 0px auto 10px; display: block; text-align: center;" alt="" src="http://2.bp.blogspot.com/_mvd112GYs3U/SUmMUI96yRI/AAAAAAAAAAc/KwcCpcDBKmM/s320/mp3download.jpg" border="0"&gt;&lt;br /&gt;&lt;br /&gt;&lt;h4&gt;I'm a happy camper&lt;/h4&gt;&lt;br /&gt;Overall I'm really impressed with this offering and can't understand why it hasn't had more press. It amazes me that people stick with crippled solutions like the iTunes store when you have a DRM free alternative like this available. I know where I'll be buy my music from now...&lt;br /&gt;&lt;br /&gt;&lt;div id="usmp3"&gt;&lt;iframe src="http://rcm.amazon.com/e/cm?t=ranthoandadas-20&amp;amp;o=1&amp;amp;p=13&amp;amp;l=ur1&amp;amp;category=mp3&amp;amp;banner=049KFEESVHAF56XHD5R2&amp;amp;f=ifr" border="0" marginwidth="0" style="border: medium none ;" scrolling="no" width="468" frameborder="0" height="60"&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;br /&gt;&lt;div id="ukmp3"&gt;&lt;a href="http://www.amazon.co.uk/gp/redirect.html?ie=UTF8&amp;amp;location=http%3A%2F%2Fwww.amazon.co.uk%2FMP3-Music-Download%2Fb%3Fie%3DUTF8%26node%3D77197031%26ref%255F%3Dtopnav%255Fstoretab%255Fdmusic&amp;amp;tag=ranthoandadas-21&amp;amp;linkCode=ur2&amp;amp;camp=1634&amp;amp;creative=19450"&gt;Amazon MP3 Downloads&lt;/a&gt;&lt;img src="https://www.assoc-amazon.co.uk/e/ir?t=ranthoandadas-21&amp;amp;l=ur2&amp;amp;o=2" alt="" style="border: medium none  ! important; margin: 0px ! important;" border="0" width="1" height="1"&gt;&lt;/div&gt;&lt;script language="JavaScript"&gt;var country_code = geoip_country_code();if (country_code != "GB"){document.getElementById('ukmp3').style.display = 'none';}else{document.getElementById('usmp3').style.display = 'none';}&lt;/script&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8824277-3766012619075788368?l=jamesfitzsimons.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jamesfitzsimons.blogspot.com/feeds/3766012619075788368/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8824277&amp;postID=3766012619075788368' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/3766012619075788368'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/3766012619075788368'/><link rel='alternate' type='text/html' href='http://jamesfitzsimons.blogspot.com/2008/12/amazons-drm-free-mp3s.html' title='Amazons DRM free MP3s'/><author><name>James Fitzsimons</name><uri>http://www.blogger.com/profile/17804628717934024610</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_mvd112GYs3U/SUmLHsuQZZI/AAAAAAAAAAU/BBje_EuTbIA/s72-c/distros.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8824277.post-7973756233110380790</id><published>2008-12-11T16:51:00.000Z</published><updated>2008-12-11T16:50:37.898Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='open source'/><category scheme='http://www.blogger.com/atom/ns#' term='vista'/><title type='text'>Tomboy for windows</title><content type='html'>When working in Windows I like to use as much Open Source software as possible to make my environment as familiar to my Linux desktop as I can. I have many of the popular applications installed such as Firefox, Thunderbird, Gimp, MySql, and XEmacs (who said XEmacs wasn't popular?!).&lt;br /&gt;&lt;br /&gt;Recently a &lt;a href="http://automorphic.blogspot.com/2008/10/tomboy-preview-for-windows-and-mac.html"&gt;Tomboy preview for windows&lt;/a&gt; became available and a few nights ago I finally got round to installing on my laptop. Tomboy is a great application and works the way a note taking application should work.&lt;br /&gt;&lt;br /&gt;The install is a little fiddly if you are running Vista due to a bug in the Gtk runtime installer, but it's not too challenging to get running.&lt;br /&gt;&lt;br /&gt;If you've ever wanted an application to quickly jot notes into I throughly recommend you give Tomboy a try.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8824277-7973756233110380790?l=jamesfitzsimons.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://automorphic.blogspot.com/2008/10/tomboy-preview-for-windows-and-mac.html' title='Tomboy for windows'/><link rel='replies' type='application/atom+xml' href='http://jamesfitzsimons.blogspot.com/feeds/7973756233110380790/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8824277&amp;postID=7973756233110380790' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/7973756233110380790'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/7973756233110380790'/><link rel='alternate' type='text/html' href='http://jamesfitzsimons.blogspot.com/2008/12/tomboy-for-windows.html' title='Tomboy for windows'/><author><name>James Fitzsimons</name><uri>http://www.blogger.com/profile/17804628717934024610</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8824277.post-9211990674779712650</id><published>2008-12-09T14:30:00.002Z</published><updated>2008-12-10T09:59:00.097Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='vista'/><title type='text'>Vista performance and Aero</title><content type='html'>&lt;h4&gt;Misinformation everywhere&lt;/h4&gt;&lt;br /&gt;Do a search for Vista performance tips and you will get dozens of hits, most of which will be espousing the same advice - if you want better performance on your Vista machine turn off Aero.&lt;br /&gt;&lt;br /&gt;I have a Lenovo Thinkpad T61 with Vista Business installed. It's a fairly high spec machine and should be pretty snappy, however coming from using XP at work and Ubuntu at home I found Vista very slow. I followed the advice of a number of different sites and (among other things) switched of Aero. I noticed a marginal performance improvement (probably due to switching off search indexing) but still wasn't happy.&lt;br /&gt;&lt;br /&gt;&lt;h4&gt;Switching Aero on improves performance&lt;/h4&gt;&lt;br /&gt;Just the other day I decided to switch Aero back on. It was like I'd found the turbo button. My machine was much more responsive and Visual Studio went from taking around 30 seconds to load to starting in 1-2 seconds.&lt;br /&gt;&lt;br /&gt;In retrospec it kinda makes sense. Vista has support for offloading the rendering tasks to the GPU so why would you force all this work back onto the CPU by switching Aero off?&lt;br /&gt;&lt;br /&gt;&lt;h4&gt;It worked for me...&lt;/h4&gt;&lt;br /&gt;Turning Aero on improves performance (at least in my experience) so if you've previously switched it off, try turning it on again - you might be in for a plesant surprise!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8824277-9211990674779712650?l=jamesfitzsimons.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jamesfitzsimons.blogspot.com/feeds/9211990674779712650/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8824277&amp;postID=9211990674779712650' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/9211990674779712650'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/9211990674779712650'/><link rel='alternate' type='text/html' href='http://jamesfitzsimons.blogspot.com/2008/12/vista-performance-and-aero.html' title='Vista performance and Aero'/><author><name>James Fitzsimons</name><uri>http://www.blogger.com/profile/17804628717934024610</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8824277.post-8812246046822334064</id><published>2008-12-01T14:30:00.006Z</published><updated>2008-12-01T16:06:51.068Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='physics'/><category scheme='http://www.blogger.com/atom/ns#' term='geek'/><title type='text'>Superstring theory 101</title><content type='html'>I thought I'd post this presentation Brian Greene did at &lt;a href="http://www.ted.com/"&gt;TED&lt;/a&gt; in 2005 given that it seems a few people are interested in the book I'm currently reading: &lt;div id="ukteulink"&gt;&lt;a href="http://www.amazon.co.uk/gp/product/009928992X?ie=UTF8&amp;tag=ranthoandadas-21&amp;linkCode=as2&amp;camp=1634&amp;creative=6738&amp;creativeASIN=009928992X"&gt;The Elegant Universe: Superstrings, Hidden Dimensions and the Quest for the Ultimate Theory&lt;/a&gt;&lt;img src="http://www.assoc-amazon.co.uk/e/ir?t=ranthoandadas-21&amp;l=as2&amp;o=2&amp;a=009928992X" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /&gt;&lt;/div&gt;&lt;div id="usteulink"&gt;&lt;a href="http://www.amazon.com/gp/product/0375708111?ie=UTF8&amp;tag=ranthoandadas-20&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=0375708111"&gt;The Elegant Universe: Superstrings, Hidden Dimensions, and the Quest for the Ultimate Theory&lt;/a&gt;&lt;img src="http://www.assoc-amazon.com/e/ir?t=ranthoandadas-20&amp;l=as2&amp;o=1&amp;a=0375708111" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /&gt;&lt;/div&gt;. &lt;br /&gt;&lt;script language="JavaScript"&gt;var country_code = geoip_country_code();if (country_code != "GB"){document.getElementById('ukteulink').style.display = 'none';}else{document.getElementById('usteulink').style.display = 'none';}&lt;/script&gt;&lt;br /&gt;&lt;br /&gt;The presentation is a fantastic primer on Superstring theory and, should it wet your appetite, the book will certainly appeal.&lt;br /&gt;&lt;br /&gt;&lt;object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0" width="320" height="285" id="VE_Player" align="middle"&gt;&lt;param name="movie" value="http://static.videoegg.com/ted2/flash/loader.swf"&gt;&lt;PARAM NAME="FlashVars" VALUE="bgColor=FFFFFF&amp;file=http://static.videoegg.com/ted/movies/BrianGreene_2005_high.flv&amp;autoPlay=false&amp;fullscreenURL=http://static.videoegg.com/ted/flash/fullscreen.html&amp;forcePlay=false&amp;logo=&amp;allowFullscreen=true"&gt;&lt;param name="quality" value="high"&gt;&lt;param name="allowScriptAccess" value="always"&gt;&lt;param name="bgcolor" value="#FFFFFF"&gt;&lt;param name="scale" value="noscale"&gt;&lt;param name="wmode" value="window"&gt;&lt;embed src="http://static.videoegg.com/ted2/flash/loader.swf" FlashVars="bgColor=FFFFFF&amp;file=http://static.videoegg.com/ted/movies/BrianGreene_2005_high.flv&amp;autoPlay=false&amp;fullscreenURL=http://static.videoegg.com/ted/flash/fullscreen.html&amp;forcePlay=false&amp;logo=&amp;allowFullscreen=true" quality="high" allowScriptAccess="always" bgcolor="#FFFFFF" scale="noscale" wmode="window" width="320" height="285" name="VE_Player" align="middle" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer"&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8824277-8812246046822334064?l=jamesfitzsimons.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jamesfitzsimons.blogspot.com/feeds/8812246046822334064/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8824277&amp;postID=8812246046822334064' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/8812246046822334064'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/8812246046822334064'/><link rel='alternate' type='text/html' href='http://jamesfitzsimons.blogspot.com/2008/12/superstring-theory-101.html' title='Superstring theory 101'/><author><name>James Fitzsimons</name><uri>http://www.blogger.com/profile/17804628717934024610</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8824277.post-9121445482848573323</id><published>2008-11-28T17:20:00.000Z</published><updated>2008-11-28T17:21:23.982Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='personal'/><category scheme='http://www.blogger.com/atom/ns#' term='space'/><category scheme='http://www.blogger.com/atom/ns#' term='geek'/><title type='text'>SpaceX Falcon 9 progress</title><content type='html'>Very excited to see SpaceX's progress on the &lt;a href="http://spacex.com/updates.php"&gt;assembly of their Falcon 9&lt;/a&gt;. Let's hope they enjoy as much success with the Falcon 9 as they have recently had with the Falcon 1.&lt;br /&gt;&lt;br /&gt;Just for fun, here's the highlights of launch 4 again:&lt;br /&gt;&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/eWtfE1GHNjg&amp;hl=en&amp;fs=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/eWtfE1GHNjg&amp;hl=en&amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8824277-9121445482848573323?l=jamesfitzsimons.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.spacex.com/updates.php' title='SpaceX Falcon 9 progress'/><link rel='replies' type='application/atom+xml' href='http://jamesfitzsimons.blogspot.com/feeds/9121445482848573323/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8824277&amp;postID=9121445482848573323' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/9121445482848573323'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/9121445482848573323'/><link rel='alternate' type='text/html' href='http://jamesfitzsimons.blogspot.com/2008/11/spacex-falcon-9-progress.html' title='SpaceX Falcon 9 progress'/><author><name>James Fitzsimons</name><uri>http://www.blogger.com/profile/17804628717934024610</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8824277.post-9016683605653636737</id><published>2008-11-26T09:00:00.000Z</published><updated>2008-11-26T09:00:02.021Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='open source'/><category scheme='http://www.blogger.com/atom/ns#' term='.net'/><category scheme='http://www.blogger.com/atom/ns#' term='mono'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><category scheme='http://www.blogger.com/atom/ns#' term='geek'/><title type='text'>Mono gets some first class love in Ubuntu!</title><content type='html'>I was pretty excited to see this article on &lt;a href="http://arstechnica.com/news.ars/post/20081124-first-jaunty-jackalope-ubuntu-9-04-alpha-hops-into-view.html"&gt;mono in Jaunty Jackalope&lt;/a&gt; over at arstechnica today.&lt;br /&gt;&lt;br /&gt;It looks like there is going to be a real effort to improve Mono support in Ubuntu and migrate &lt;span style="font-weight:bold;"&gt;all applications&lt;/span&gt; and the CLR to the 2.0 profile.&lt;br /&gt;&lt;br /&gt;This is fantastic news - great work Ubuntu devs!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8824277-9016683605653636737?l=jamesfitzsimons.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://arstechnica.com/news.ars/post/20081124-first-jaunty-jackalope-ubuntu-9-04-alpha-hops-into-view.html' title='Mono gets some first class love in Ubuntu!'/><link rel='replies' type='application/atom+xml' href='http://jamesfitzsimons.blogspot.com/feeds/9016683605653636737/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8824277&amp;postID=9016683605653636737' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/9016683605653636737'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/9016683605653636737'/><link rel='alternate' type='text/html' href='http://jamesfitzsimons.blogspot.com/2008/11/mono-gets-some-first-class-love-in.html' title='Mono gets some first class love in Ubuntu!'/><author><name>James Fitzsimons</name><uri>http://www.blogger.com/profile/17804628717934024610</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8824277.post-5130285740714253710</id><published>2008-11-25T14:30:00.000Z</published><updated>2008-11-25T14:30:00.731Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='web development'/><category scheme='http://www.blogger.com/atom/ns#' term='iis7'/><category scheme='http://www.blogger.com/atom/ns#' term='.net'/><title type='text'>IIS gzip compression: the missing link</title><content type='html'>I've been wanting to enable gzip compression for our static content (javascript and css files) for a while but just haven't been able to get IIS 7 to comply. Apparently static compression is enabled by default in IIS 7 but when inspecting traffic using fiddler I wasn't seeing my static content compressed.&lt;br /&gt;&lt;br /&gt;&lt;h4&gt;Solution at last&lt;/h4&gt;&lt;br /&gt;After several hours of googling and trying various unsuccessful solutions I finally found the answer! Buried in the comments of a post on &lt;a href="http://www.west-wind.com/Weblog/posts/98538.aspx" rel="nofollow"&gt;Rick Strahl's blog&lt;/a&gt;, Imad Jureidini had pointed out the following:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;em&gt;I've been running into the same issues. Ultimately, the solution was to change the following config setting:&lt;br /&gt;&lt;br /&gt;&amp;lt;serverruntime frequenthitthreshold="1"&amp;gt;&lt;br /&gt;&lt;br /&gt;The default value here is "2", which means that even static content does not get compressed if it isn't requested twice within a 10 seconds period (frequentHitTimePeriod). Switching to "1" means that the file gets compressed right away.&lt;br /&gt;&lt;br /&gt;Hopefully this will fix your problems too :)&lt;br /&gt;&lt;br /&gt;- Imad &lt;/em&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;To confirm that this was in fact the problem I was experiencing I did a control refresh of my website several times in very quick succession. Sure enough the css and javascript files suddenly started coming through compressed.&lt;br /&gt;&lt;br /&gt;I then used the following command to change the setting in my servers config:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-family:courier new;color:#666666;"&gt;%windir%\system32\inetsrv\appcmd.exe set config&lt;br /&gt;-section:system.webServer/serverRuntime -frequentHitThreshold:1&lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;After restarting IIS I tried a control refresh of the website again. As expected the css and javascript files were delivered compressed on the first request.&lt;br /&gt;&lt;br /&gt;&lt;h4&gt;Why?&lt;/h4&gt;&lt;br /&gt;This begs the question - why would Microsoft do such a thing? Surely the point of compression of static resources is to reduce delivery time to the browser. Why should my users care if anyone else has recently requested the particular resource they are interested in? They aren't and shouldn't be. These static resources should be compressed first, time everytime. (The only exception to this would be where compression is straining the servers ability to serve content).&lt;br /&gt;&lt;br /&gt;&lt;h4&gt;Where is the documentation?&lt;/h4&gt;&lt;br /&gt;I've got to say my experiences with IIS 7 to date have been one frustration after the next. Microsoft appears to have put a lot of work into this product and at first glance a lot of the new features look to offer real value. What I don't understand is why there is so little documentation on this new product. So much has changed from IIS 6 there really needs to be a comprehensive set of documentation available somewhere - if it does exist I have yet to find it...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8824277-5130285740714253710?l=jamesfitzsimons.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jamesfitzsimons.blogspot.com/feeds/5130285740714253710/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8824277&amp;postID=5130285740714253710' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/5130285740714253710'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/5130285740714253710'/><link rel='alternate' type='text/html' href='http://jamesfitzsimons.blogspot.com/2008/11/iis-gzip-compression-missing-link.html' title='IIS gzip compression: the missing link'/><author><name>James Fitzsimons</name><uri>http://www.blogger.com/profile/17804628717934024610</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8824277.post-7486558677410910001</id><published>2008-11-24T09:30:00.001Z</published><updated>2008-11-24T09:30:00.701Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='personal'/><category scheme='http://www.blogger.com/atom/ns#' term='geek'/><title type='text'>We're typists first... really?</title><content type='html'>I read Coding Horror on a semi regular basis, and generally Jeff has a pretty engaging writing style and his posts are fairly interesting. I was really surprised when I read &lt;a href="http://www.blogger.com/%20http://www.codinghorror.com/blog/archives/001188.html%20"&gt;this one&lt;/a&gt; though.&lt;br /&gt;&lt;br /&gt;Jeff ascertains that &lt;span style="font-style: italic;"&gt;"We are typists first, and programmers second"&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Well, I vehemently disagree. While typing ability is obviously important in the job and a necessary skill, saying that we are typists first places very little value on the technical skills required of programmers to do their job well (not to mention the years at university most of us have spent earning our Computer Science degrees, Masters and in some cases PhD's!).&lt;br /&gt;&lt;br /&gt;Personally I don't even like the label "Programmer". I feel it undervalues the skills I have. Software Engineer is far more accurate description of the job most of us do. Writing a non-trivial application these days requires an understanding of many challenging concepts.&lt;br /&gt;&lt;br /&gt;Todays Software Engineers need to consider concurrency issues, network theory, efficient persistence mechanisms, efficient search algorithms (the volume of data we are dealing with is growing exponentially), but to name a few.&lt;br /&gt;&lt;br /&gt;Let's not sell ourselves short by calling ourselves programmers.&lt;br /&gt;&lt;br /&gt;Returning to Jeffs' typists first allegation though, one comment on his post summed it up nicely for me:&lt;br /&gt;&lt;br /&gt;&lt;blockquote style="font-weight: bold;"&gt;I’ve always really liked your blog Jeff, but this is a BS post&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Thoughts?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8824277-7486558677410910001?l=jamesfitzsimons.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.codinghorror.com/blog/archives/001188.html' title='We&apos;re typists first... really?'/><link rel='replies' type='application/atom+xml' href='http://jamesfitzsimons.blogspot.com/feeds/7486558677410910001/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8824277&amp;postID=7486558677410910001' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/7486558677410910001'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/7486558677410910001'/><link rel='alternate' type='text/html' href='http://jamesfitzsimons.blogspot.com/2008/11/were-typists-first-really.html' title='We&apos;re typists first... really?'/><author><name>James Fitzsimons</name><uri>http://www.blogger.com/profile/17804628717934024610</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8824277.post-7670681696418854024</id><published>2008-11-21T14:30:00.001Z</published><updated>2008-11-21T14:30:01.100Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='web development'/><category scheme='http://www.blogger.com/atom/ns#' term='mootools'/><category scheme='http://www.blogger.com/atom/ns#' term='css'/><title type='text'>MooTools slide effect and Internet Explorer CSS</title><content type='html'>Have you struck a problem with MooTools slide transition and CSS styles not appearing correctly in IE? I ran into this exact issue the other day where I was trying to slide a DIV element up and down based on a click event elsewhere on the page. The CSS style applied to the DIV looked something like this:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-family:courier new;color:#666666;"&gt;&lt;pre&gt;#slidingDiv {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;padding-bottom: 10px;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;background: white url(../images/box_bottom.gif) bottom no-repeat;&lt;br /&gt;}&lt;/pre&gt;&lt;/span&gt;&lt;/blockquote&gt;The problem seems to be that IE can't calculate the height of content in the dynamically resized DIV correctly and thus the padding-bottom and hence my background image (nice rounded corners in this case) wasn' showing.&lt;br /&gt;&lt;br /&gt;&lt;h4&gt;The solution&lt;/h4&gt;&lt;br /&gt;The fix turned out to be simple enough, I just made the height of the DIV fixed in the CSS. Once IE knew how big the inner content was supposed to be everything started working correctly.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8824277-7670681696418854024?l=jamesfitzsimons.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jamesfitzsimons.blogspot.com/feeds/7670681696418854024/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8824277&amp;postID=7670681696418854024' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/7670681696418854024'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/7670681696418854024'/><link rel='alternate' type='text/html' href='http://jamesfitzsimons.blogspot.com/2008/11/mootools-slide-effect-and-internet.html' title='MooTools slide effect and Internet Explorer CSS'/><author><name>James Fitzsimons</name><uri>http://www.blogger.com/profile/17804628717934024610</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8824277.post-3032191725962845010</id><published>2008-11-20T17:39:00.008Z</published><updated>2008-11-25T19:03:26.162Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='personal'/><category scheme='http://www.blogger.com/atom/ns#' term='geek'/><title type='text'>The Big Bang Theory, the best thing on TV right now?</title><content type='html'>If you haven't yet seen The Big Bang Theory you should make an effort to rectify the situation immediately. It really is an excellent show based around intelligent witty humor rather than cheap laughs and tremendously funny.&lt;br /&gt;&lt;br /&gt;The story focuses around two ubergeeks, Leonard and Sheldon and how their life changes when they meet Penny their new "normal" (and very pretty) neighbor. I love the fact that the show celebrates the geeky, ultra intelligent side of their characters and although most of the laughs come from their lack of ability to deal with normal every day social situations, the writers do it in such a way that is funny without making Leonard and Sheldon the butt of every joke.&lt;br /&gt;&lt;br /&gt;The Big Bang Theory manages to mix in enough scientific content and references to keep us geeks happy while still being incredibly watchable and entertaining for those with less of a penchant for things science.&lt;br /&gt;&lt;br /&gt;Check out a few snippets from the first show of season one:&lt;br /&gt;&lt;br /&gt;&lt;object height="344" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/a8P0YmgQTbA&amp;amp;hl=en&amp;amp;fs=1"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/a8P0YmgQTbA&amp;hl=en&amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;If you haven't seen season one it's already out on DVD, grab your copy now, you won't be disappointed!&lt;br /&gt;&lt;br /&gt;&lt;script language="JavaScript"&gt;var country_code = geoip_country_code();if (country_code != "GB"){ document.write("&lt;iframe src='http://rcm.amazon.com/e/cm?t=ranthoandadas-20&amp;o=1&amp;p=8&amp;l=as1&amp;asins=B000W91RUG&amp;fc1=000000&amp;IS2=1&amp;lt1=_blank&amp;m=amazon&amp;lc1=0000FF&amp;bc1=000000&amp;bg1=FFFFFF&amp;f=ifr' style='width:120px;height:240px;' scrolling='no' marginwidth='0' marginheight='0' frameborder='0'&gt;&lt;/iframe&gt;");}else{document.write("&lt;iframe style='WIDTH: 120px; HEIGHT: 240px' marginwidth='0' marginheight='0' src='http://rcm-uk.amazon.co.uk/e/cm?t=ranthoandadas-21&amp;amp;o=2&amp;amp;p=8&amp;amp;l=as1&amp;amp;asins=B001I45PCK&amp;amp;fc1=000000&amp;amp;IS2=1&amp;amp;lt1=_blank&amp;amp;m=amazon&amp;amp;lc1=0000FF&amp;amp;bc1=000000&amp;amp;bg1=FFFFFF&amp;amp;f=ifr' frameborder='0' scrolling='no'&gt;&lt;/iframe&gt;");}&lt;/script&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8824277-3032191725962845010?l=jamesfitzsimons.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jamesfitzsimons.blogspot.com/feeds/3032191725962845010/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8824277&amp;postID=3032191725962845010' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/3032191725962845010'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/3032191725962845010'/><link rel='alternate' type='text/html' href='http://jamesfitzsimons.blogspot.com/2008/11/big-bang-theory-best-thing-on-tv-right.html' title='The Big Bang Theory, the best thing on TV right now?'/><author><name>James Fitzsimons</name><uri>http://www.blogger.com/profile/17804628717934024610</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8824277.post-5062226528139419576</id><published>2008-11-19T17:26:00.003Z</published><updated>2008-11-19T17:49:32.552Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='web development'/><category scheme='http://www.blogger.com/atom/ns#' term='spring.net'/><category scheme='http://www.blogger.com/atom/ns#' term='.net'/><title type='text'>RowUpdating event and UpdateRow method of a GridView not firing</title><content type='html'>We struck a bit of an odd problem today. We had an older ASP.NET 2.0 website we were migrating to ASP.NET 3.5 and one of the pages has a GridView on it. As we use Spring.NET and NHibernated Microsofts new objectdatasource approach for binding the GridView won't fly so we were using old school databinding. This meant we needed to be able to handle the RowUpdating event in order to persist our changes. The problem was that the RowUpdating event just wasn't firing.&lt;br /&gt;&lt;br /&gt;Eventually we tracked it down to a weird interaction between Spring.NET and the GridView where if we wrapped the GridView in a spring:panel and suppressed dependency injection the event started firing. Of course the new and old values that are supposed to be available in that event handler were still null...&lt;br /&gt;&lt;br /&gt;There is obviously a bug with the databinding in the GridView somewhere and it seems &lt;a href="http://www.tech-archive.net/Archive/DotNet/microsoft.public.dotnet.framework.aspnet.webcontrols/2006-12/msg00179.html"&gt;Microsoft is aware of the issue&lt;/a&gt;, however I wouldn't hold my breath for a fix to be forthcoming.&lt;br /&gt;&lt;br /&gt;Personally I think the new objectdatasource model has some serious drawbacks and the fact that Microsoft haven't made the effort to ensure that custom databinding still works is a real shame to say the very least!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8824277-5062226528139419576?l=jamesfitzsimons.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jamesfitzsimons.blogspot.com/feeds/5062226528139419576/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8824277&amp;postID=5062226528139419576' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/5062226528139419576'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/5062226528139419576'/><link rel='alternate' type='text/html' href='http://jamesfitzsimons.blogspot.com/2008/11/rowupdating-event-and-updaterow-method.html' title='RowUpdating event and UpdateRow method of a GridView not firing'/><author><name>James Fitzsimons</name><uri>http://www.blogger.com/profile/17804628717934024610</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8824277.post-6983478250135659965</id><published>2008-11-12T14:30:00.000Z</published><updated>2008-11-12T14:30:01.098Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='open source'/><category scheme='http://www.blogger.com/atom/ns#' term='.net'/><category scheme='http://www.blogger.com/atom/ns#' term='nhibernate'/><title type='text'>NHibernate onFlushDirty has null previousState</title><content type='html'>&lt;h3&gt;The problem&lt;/h3&gt;&lt;br /&gt;We use an Entity interceptor to create audit records when we update most tables. We also do a lot of our data access through .NET remoting. This means that we open a session to load the object, the object is detached, serialized, modified, then reattached to the session when we want to persist the changes.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;We noticed that in the cases where we are updating detached objects, although the update was being applied correctly there were no audit records appearing in the database. On investigation we realised that the previousState parameter passed into the onFlushDirty method of our interceptor was null.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Why&lt;/h3&gt;&lt;br /&gt;In the Save method of our data access class we were using the SaveOrUpdate method of the NHibernate session to persist the changes. &lt;a href="http://www.hibernate.org/hib_docs/reference/en/html_single/#objectstate-saveorupdate"&gt;Section 10.7 of the documentation&lt;/a&gt; states:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;p&gt;saveOrUpdate() does the following: &lt;/p&gt;&lt;ul&gt;&lt;li&gt;if the object is already persistent in this session, do nothing&lt;/li&gt;&lt;li&gt;if another object associated with the session has the same identifier, throw&lt;br /&gt;an exception &lt;/li&gt;&lt;li&gt;if the object has no identifier property, save() it &lt;/li&gt;&lt;li&gt;if the object's identifier has the value assigned to a newly instantiated&lt;br /&gt;object, save() it &lt;/li&gt;&lt;li&gt;if the object is versioned (by a &lt;version&gt;or &lt;timestamp&gt;), and&lt;br /&gt;the version property value is the same value assigned to a newly instantiated&lt;br /&gt;object, save() it otherwise update() the object &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;br /&gt;and merge() is very different: &lt;/p&gt;&lt;ul&gt;&lt;li&gt;if there is a persistent instance with the same identifier currently&lt;br /&gt;associated with the session, copy the state of the given object onto the&lt;br /&gt;persistent instance&lt;/li&gt;&lt;li&gt;if there is no persistent instance currently associated with the session,&lt;br /&gt;try to load it from the database, or create a new persistent instance &lt;/li&gt;&lt;li&gt;the persistent instance is returned &lt;/li&gt;&lt;li&gt;the given instance does not become associated with the session, it remains&lt;br /&gt;detached&lt;/li&gt;&lt;/ul&gt;&lt;/blockquote&gt;&lt;p&gt;As our detached objects had an Id and version when we called SaveOrUpdate() they were being updated, and seeing as all update() does is reattach an object to the session, the session had no record of the changes that had been made to that object since it was loaded.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;The solution&lt;/h3&gt;&lt;br /&gt;The solution was to use the merge() method (new in NHibernate 2.0). Merge() checks the first level cache to see if an object with the given identifier has previously been loaded. If so it loads that object out of the first level cache and updates it's properties using the detached object. This means that the session is now able to track the changes made to the object so that when the flush occurs the previousState is no longer null.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8824277-6983478250135659965?l=jamesfitzsimons.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jamesfitzsimons.blogspot.com/feeds/6983478250135659965/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8824277&amp;postID=6983478250135659965' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/6983478250135659965'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/6983478250135659965'/><link rel='alternate' type='text/html' href='http://jamesfitzsimons.blogspot.com/2008/11/nhibernate-onflushdirty-has-null.html' title='NHibernate onFlushDirty has null previousState'/><author><name>James Fitzsimons</name><uri>http://www.blogger.com/profile/17804628717934024610</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8824277.post-7264247417392122991</id><published>2008-11-11T14:30:00.000Z</published><updated>2008-11-11T14:30:01.086Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='web development'/><category scheme='http://www.blogger.com/atom/ns#' term='.net'/><category scheme='http://www.blogger.com/atom/ns#' term='mootools'/><category scheme='http://www.blogger.com/atom/ns#' term='geek'/><title type='text'>MooTools ASP.NET Webservice Ajax calls.</title><content type='html'>I had some trouble trying to find an example of how to call an ASP.NET webservice from MooTools. I eventually pieced the bits together from a couple of forum posts and thought I'd post an example here in case anyone else was having the same problems.&lt;br /&gt;&lt;br /&gt;If I have an ASP.NET webservice that has a GetById method that takes a single int parameter and returns an object I can call it with the following code:&lt;br /&gt;&lt;br /&gt;&lt;blockquote style="color: rgb(102, 102, 102); font-family: courier new;"&gt;function doAjaxWebServiceRequest (id) {&lt;br /&gt;        var completeDelegate = Function.createDelegate(this, this.callback);&lt;br /&gt;        var failureDelegate =  Function.createDelegate(this, this.error);&lt;br /&gt;        var request = new Request.JSON({url: 'http://hostname/MyWebService.asmx/GetById',&lt;br /&gt;                                 onComplete: completeDelegate,&lt;br /&gt;                                 onFailure: failureDelegate,&lt;br /&gt;                                 urlEncoded: false,&lt;br /&gt;                                 headers: {"Content-type": "application/json"}&lt;br /&gt;                                 });&lt;br /&gt;        request.send(JSON.encode({'id': id}));&lt;br /&gt;    },&lt;/blockquote&gt;The returned object will be in JSON format. The lines where I create my callback delegates using the Function.createDelegate method allow me to set the scope of 'this' in my call backs to be the object I making the request from.&lt;br /&gt;&lt;br /&gt;Hope that helps someone out!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8824277-7264247417392122991?l=jamesfitzsimons.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jamesfitzsimons.blogspot.com/feeds/7264247417392122991/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8824277&amp;postID=7264247417392122991' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/7264247417392122991'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/7264247417392122991'/><link rel='alternate' type='text/html' href='http://jamesfitzsimons.blogspot.com/2008/11/mootools-aspnet-webservice-ajax-calls.html' title='MooTools ASP.NET Webservice Ajax calls.'/><author><name>James Fitzsimons</name><uri>http://www.blogger.com/profile/17804628717934024610</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8824277.post-7926784984068551741</id><published>2008-11-10T14:30:00.000Z</published><updated>2008-11-10T14:30:01.160Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='web development'/><category scheme='http://www.blogger.com/atom/ns#' term='.net'/><category scheme='http://www.blogger.com/atom/ns#' term='mootools'/><category scheme='http://www.blogger.com/atom/ns#' term='geek'/><title type='text'>Mootools differences in IE and Firefox</title><content type='html'>We're using the MooTools scripting framework on our site and today I discovered a strange difference between Firefox and IE. I was creating an element and injecting it into the DOM and then trying to change its CSS class and styles.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;addClass and setStyle&lt;/span&gt;&lt;br /&gt;MooTools provides methods on it's Element class that allow you to manipulate the CSS styling of an element. You can do things like:&lt;br /&gt;&lt;blockquote style="color: rgb(102, 102, 102); font-family: courier new;"&gt;// Add a css class to the element with the id foo&lt;br /&gt;$('foo').addClass('fooStyle');&lt;br /&gt;&lt;br /&gt;// Set the width of the foo element&lt;br /&gt;$('foo').setStyle('width', '100px');&lt;/blockquote&gt;Unfortunately when viewing an ASP.NET page in IE that includes a script that uses these functions you get a script error saying that the "Object doesn't support this property or method"&lt;br /&gt;&lt;br /&gt;At first I thought the solution was to go back to basics:&lt;br /&gt;&lt;blockquote style="color: rgb(102, 102, 102); font-family: courier new;"&gt;// Add a css class to the element with the id foo&lt;br /&gt;$('foo').className = 'fooStyle';&lt;br /&gt;&lt;br /&gt;// Set the width of the foo element&lt;br /&gt;$('foo').style.width = '100px';&lt;br /&gt;&lt;/blockquote&gt;However I then realised that I was trying to call the MooTools Element methods on a vanilla element object rather than a MooTools one. The second line below solved the problems in IE and meant I could go back to the first way of applying the styling.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span style="color: rgb(102, 102, 102); font-family: courier new;"&gt;var myelement = document.createElement("a");&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 102, 102); font-family: courier new;"&gt;myelement = $(myelement);&lt;/span&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;span style="font-weight: bold;"&gt;IE vs Firefox&lt;/span&gt;&lt;br /&gt;In retrospect it seems strange that this worked in Firefox, I guess Firefox must be able to do some sort of implicit conversion to a MooTools element in order to resolve the method call.&lt;br /&gt;&lt;br /&gt;MooTools seems really great, it's lightweight and easy to use. The learning curve seems much lower than some of the other more complicated offering available.&lt;br /&gt;&lt;br /&gt;The only reservation I have at this point is that from what I've read on the forums it doesn't play nicely with any other scripting framework due to it's lack of namespaces and the maintainers seem &lt;a href="http://forum.mootools.net/viewtopic.php?id=9467"&gt;quite&lt;/a&gt; &lt;a href="http://forum.mootools.net/viewtopic.php?id=6657"&gt;hostile&lt;/a&gt; to anyone who suggests that would be a good thing.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8824277-7926784984068551741?l=jamesfitzsimons.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jamesfitzsimons.blogspot.com/feeds/7926784984068551741/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8824277&amp;postID=7926784984068551741' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/7926784984068551741'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/7926784984068551741'/><link rel='alternate' type='text/html' href='http://jamesfitzsimons.blogspot.com/2008/11/mootools-differences-in-ie-and-firefox.html' title='Mootools differences in IE and Firefox'/><author><name>James Fitzsimons</name><uri>http://www.blogger.com/profile/17804628717934024610</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8824277.post-3528126045818112559</id><published>2008-11-06T17:36:00.002Z</published><updated>2008-11-07T17:47:30.851Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='open source'/><category scheme='http://www.blogger.com/atom/ns#' term='.net'/><category scheme='http://www.blogger.com/atom/ns#' term='geek'/><title type='text'>NMock and out parameters</title><content type='html'>While trying to create a unit test the other day I came across the situation where my mock object needed to return a value via an Out parameter. A quick google turned up this post over at &lt;a href="http://www.mindthe.net/devices/2008/06/26/nmock-out-parameters/"&gt;dev:ices&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I thought that had answered all my questions but when I tried it I kept getting a very unhelpful error:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;p&gt;&lt;span style="font-family:courier new;color:#666666;"&gt;------ Test started: Assembly: Tests.dll ------&lt;br /&gt;&lt;br /&gt;TestCase 'Tests.BatchOrderMessageHandlerTests.TestNMock'&lt;br /&gt;failed: NMock2.Internal.ExpectationException : unexpected invocation of foo.DoFoo(&lt;1&gt;, &lt;1&gt;, out)&lt;br /&gt;Expected:&lt;br /&gt;1 time: foo.DoFoo(equal to &lt;1&gt;, equal to &lt;1&gt;, equal to &lt;out&gt;), will set c=&lt;2&gt;, return &lt;1&gt; [called 0 times]&lt;br /&gt;at NMock2.Mockery.FailUnexpectedInvocation(Invocation invocation)&lt;br /&gt;at NMock2.Mockery.Dispatch(Invocation invocation)&lt;br /&gt;at NMock2.Mockery.MockObject.Invoke(Invocation invocation)&lt;br /&gt;at NMock2.Monitoring.Invoker.Invoke(Invocation invocation)&lt;br /&gt;at NMock2.Monitoring.ProxiedObjectIdentity.Invoke(Invocation invocation)&lt;br /&gt;at NMock2.Monitoring.ProxyInvokableAdapter.Invoke(IMessage msg)&lt;br /&gt;at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData&amp;amp; msgData, Int32 type)&lt;br /&gt;at Tests.BatchOrderMessageHandlerTests.IFoo.DoFoo(Int32 a, Int32 b, Int32&amp;amp; c)&lt;br /&gt;C:\svn\GLGParnters.TradeIdeas\PositionManager\src\Tests\BatchOrderMessageHandlerTests.cs(136,0): at Tests.BatchOrderMessageHandlerTests.TestNMock()&lt;br /&gt;&lt;br /&gt;0 passed, 1 failed, 0 skipped, took 0.77 seconds.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Courier New;color:#666666;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;A bit confused I quickly whipped up a trivial test as my unit test was a bit complicated and returned an enum as the Out parameter. My hypothesis was that NMocks couldn't return an enum as an Out parameter.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span style="color:#666666;"&gt;public interface IFoo&lt;br /&gt;{&lt;br /&gt;int DoFoo(int a, int b, out int c);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;[Test]&lt;br /&gt;public void TestNMock()&lt;br /&gt;{&lt;br /&gt;IFoo foo = _mockery.NewMock&lt;ifoo&gt;();&lt;br /&gt;&lt;br /&gt;Expect.Once.On(foo).Method("DoFoo")&lt;br /&gt;.With(1, 1, Is.Out)&lt;br /&gt;.Will(new SetNamedParameterAction("c", 2), Return.Value(1));&lt;br /&gt;&lt;br /&gt;int result = 0;&lt;br /&gt;int a = foo.DoFoo(1, 1, out result);&lt;br /&gt;&lt;br /&gt;_mockery.VerifyAllExpectationsHaveBeenMet();&lt;br /&gt;Assert.AreEqual(2, result);&lt;br /&gt;}&lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;This also failed so I checked what version of NMocks I was using. My NMock2.dll assembly had a revision number of 1.0.2313.18049. I downloaded the latest binaries from the &lt;a href="http://www.nmock.org/download.html"&gt;NMock website&lt;/a&gt;. Checking the version number of the latest build shows it to be 2.0.0.44.&lt;br /&gt;&lt;br /&gt;Rerunning the unit tests against this version of the NMock library everything now works!&lt;br /&gt;&lt;br /&gt;So, if you're having trouble with out parameters in your NMock mocks, upgrade your build version.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8824277-3528126045818112559?l=jamesfitzsimons.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jamesfitzsimons.blogspot.com/feeds/3528126045818112559/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8824277&amp;postID=3528126045818112559' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/3528126045818112559'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/3528126045818112559'/><link rel='alternate' type='text/html' href='http://jamesfitzsimons.blogspot.com/2008/11/nmock-and-out-parameters.html' title='NMock and out parameters'/><author><name>James Fitzsimons</name><uri>http://www.blogger.com/profile/17804628717934024610</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8824277.post-8126841917932802547</id><published>2008-11-05T12:50:00.000Z</published><updated>2008-11-05T13:43:33.224Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='open source'/><category scheme='http://www.blogger.com/atom/ns#' term='.net'/><category scheme='http://www.blogger.com/atom/ns#' term='nhibernate'/><category scheme='http://www.blogger.com/atom/ns#' term='geek'/><title type='text'>NHibernate 2.0 and the join table syntax</title><content type='html'>I've noticed my post on &lt;a href="http://jamesfitzsimons.blogspot.com/2008/04/mapping-view-with-nhibernate.html"&gt;Mapping a view with NHibernate&lt;/a&gt; is always quite popular. Resorting to mapping from a view has worked fine in the past as long as you only required read access, but if you wanted to build a complex object relational mapping that you could update you were in trouble...&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Until Now&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;With NHibernate 2.0 recently being released we now have access to the join table syntax in our mapping documents. This means we can now build more sophisticated domain objects that map on to more than one table. NHibernate takes care of the multi-table inserts and updates behind the scenes making your life easier.&lt;br /&gt;&lt;br /&gt;This has to be one of the most underrated features of NHibernate 2.0 as it finally allows you to break away from the one to one mapping between domain objects and your relational model which has ultimately caused compromises in the past.&lt;br /&gt;&lt;br /&gt;I urge you to check out this and the other fantastic new features available in the latest NHibernate release.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8824277-8126841917932802547?l=jamesfitzsimons.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jamesfitzsimons.blogspot.com/feeds/8126841917932802547/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8824277&amp;postID=8126841917932802547' title='11 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/8126841917932802547'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/8126841917932802547'/><link rel='alternate' type='text/html' href='http://jamesfitzsimons.blogspot.com/2008/11/nhibernate-20-and-join-table-syntax.html' title='NHibernate 2.0 and the join table syntax'/><author><name>James Fitzsimons</name><uri>http://www.blogger.com/profile/17804628717934024610</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>11</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8824277.post-3061297156221942622</id><published>2008-07-30T14:14:00.009Z</published><updated>2008-07-31T10:14:14.598Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='spring.net'/><category scheme='http://www.blogger.com/atom/ns#' term='.net'/><title type='text'>Avoid cryptic errors with Setter injection and Spring.Net</title><content type='html'>Today I found out about a really neat feature in the Spring.Net framework that can help enormously with debugging Spring.Net configuration problems.&lt;br /&gt;&lt;br /&gt;If you are using setter injection and have properties that need to be set (why aren't you using constructor injection?) then you should decorate those properties with the [Required] attribute. You then need to add a built in post processor to your application configuration like so:&lt;br /&gt;&lt;span style="color: rgb(102, 102, 102);font-family:courier new;" &gt;&amp;lt;object type="Spring.Objects.Factory.Attributes.RequiredAttributeObjectPostProcessor, Spring.Core"&amp;gt;&amp;lt;object/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Now if you forget to configure one of your required properties instead of getting a cryptic dependancy error like this:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;Spring.Objects.Factory.ObjectCreationException: Error thrown by a dependency of object 'myWidget' defined in 'assembly [Widgets, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null], resource [Widgets.application-config.xml]' : Initialization of object failed : Object reference not set to an instance of an object.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 102, 102);"&gt; while resolving 'constructor argument' to 'otherWidget' defined in 'assembly [Widgets, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null], resource [Widgets.application-config.xml]&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;You get a nice helpful error like this:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 102, 102);font-family:courier new;" &gt;Spring.Objects.Factory.ObjectInitializationException: Property 'OtherWidget' required for object 'myWidget'&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Much more helpful!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8824277-3061297156221942622?l=jamesfitzsimons.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jamesfitzsimons.blogspot.com/feeds/3061297156221942622/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8824277&amp;postID=3061297156221942622' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/3061297156221942622'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/3061297156221942622'/><link rel='alternate' type='text/html' href='http://jamesfitzsimons.blogspot.com/2008/07/avoid-cryptic-errors-with-setter.html' title='Avoid cryptic errors with Setter injection and Spring.Net'/><author><name>James Fitzsimons</name><uri>http://www.blogger.com/profile/17804628717934024610</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8824277.post-6018370664641480185</id><published>2008-07-28T22:45:00.005Z</published><updated>2008-11-25T19:02:53.832Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='web development'/><category scheme='http://www.blogger.com/atom/ns#' term='book review'/><category scheme='http://www.blogger.com/atom/ns#' term='geek'/><category scheme='http://www.blogger.com/atom/ns#' term='css'/><title type='text'>Book Review: CSS Mastery</title><content type='html'>&lt;script language="JavaScript"&gt;var country_code = geoip_country_code();if (country_code != "GB"){document.write("&lt;iframe src='http://rcm.amazon.com/e/cm?t=ranthoandadas-20&amp;o=1&amp;p=8&amp;l=as1&amp;asins=1590596145&amp;fc1=FFFFFF&amp;IS2=1&amp;lt1=_blank&amp;m=amazon&amp;lc1=AADD99&amp;bc1=000000&amp;bg1=000000&amp;f=ifr' style='width:120px;height:240px;float: left; margin-right: 15px; margin-bottom: 15px; background-color: black;' scrolling='no' marginwidth='0' marginheight='0' frameborder='0'&gt;&lt;/iframe&gt;");}else{document.write("&lt;iframe src='http://rcm-uk.amazon.co.uk/e/cm?t=ranthoandadas-21&amp;o=2&amp;p=8&amp;l=as1&amp;asins=1590596145&amp;fc1=F9F5F5&amp;IS2=1&amp;lt1=_blank&amp;m=amazon&amp;lc1=AADD99&amp;bc1=000000&amp;bg1=060000&amp;f=ifr' style='width:120px;height:240px;float: left; margin-right: 15px; margin-bottom: 15px; background-color: black;' scrolling='no' marginwidth='0' marginheight='0' frameborder='0'&gt;&lt;/iframe&gt;");}&lt;/script&gt;&lt;br /&gt;As a web developer I've had to do a certain amount of CSS development over the years but never really felt like I &lt;span style="font-weight:bold;"&gt;understood &lt;/span&gt;it. CSS can be a bit of an esoteric beast and I wanted something to clear the fuzz away.&lt;br /&gt;&lt;br /&gt;CSS Mastery was the solution I had been looking for. Andy Budd writes in a clear and engaging manner and the book is extremely readable for a technical text. Andy starts by getting right back to basics covering the Cascade and the Box model in the first two chapters. &lt;br /&gt;&lt;br /&gt;The book covers most aspects of CSS with concise and easy to understand examples used through out. Andy also spends a good amount of time on cross browser compatibility issues where appropriate, as well as including a whole chapter of hints and hacks on this topic at the end.&lt;br /&gt;&lt;br /&gt;If you are just starting out with CSS, or like me have used it for years but never really understood it at a visceral level then I urge you to give CSS Mastery a try.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8824277-6018370664641480185?l=jamesfitzsimons.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jamesfitzsimons.blogspot.com/feeds/6018370664641480185/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8824277&amp;postID=6018370664641480185' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/6018370664641480185'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/6018370664641480185'/><link rel='alternate' type='text/html' href='http://jamesfitzsimons.blogspot.com/2008/07/book-review-css-mastery.html' title='Book Review: CSS Mastery'/><author><name>James Fitzsimons</name><uri>http://www.blogger.com/profile/17804628717934024610</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8824277.post-6203520342130495665</id><published>2008-07-24T20:05:00.002Z</published><updated>2008-07-24T22:28:10.824Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='web development'/><category scheme='http://www.blogger.com/atom/ns#' term='personal'/><category scheme='http://www.blogger.com/atom/ns#' term='startups'/><category scheme='http://www.blogger.com/atom/ns#' term='secret project'/><title type='text'>Why new website startups fail?</title><content type='html'>I've been under an enormous amount of self induced stress lately due to the fact that my startup business still isn't online. This is due to a number of contributing factors of course, but it got me thinking about some of the reasons why it's taken so long.&lt;br /&gt;&lt;h4&gt;Manage Scope: Trying to do to much too soon&lt;/h4&gt;It would be my guess that a large number of failed business (particularly online ventures) are guilty of this one. If nothing else this experience has taught me that you need ensure your initial offering constitutes a realistic amount of work. You can then build on that by making small incremental improvements adding features and new offerings to your business over time with much less effort than trying to do it all in one go.&lt;br /&gt;&lt;br /&gt;By all means, have a grand  all encompassing vision, in fact I'd almost consider this a prerequisite, but break it down into realistic bite size deliverables. To make a software analogy; you want to take a rapid iterative development approach rather than attempt a huge waterfall model project.&lt;br /&gt;&lt;h4&gt;It doesn't have to be perfect&lt;/h4&gt;There is always a tendency with geeks (myself included) to try and engineer the best, most flexible, and high performance solution first time round. Unfortunately this flies in the face of getting a new business off the ground. As a new start up you have limited time and money and you can't afford to waste either trying to come up with the "ultimate solution".&lt;br /&gt;&lt;br /&gt;Any coder worth their salt is going to try and anticipate performance bottle necks and design and develop their software to avoid potential pitfalls. However you've got to keep your focus on the goal of delivery at all times and not get trapped in refining and improving your product without delivering. It doesn't matter if you have the best website in the world if no-one can use it because it isn't online yet!&lt;br /&gt;&lt;h4&gt;Don't forget the business&lt;br /&gt;&lt;/h4&gt;Project planning, it's not fun and certainly not something most geeks enjoy. Unfortunately it is absolutely necessary to make your new business a success. You need to have a clear idea of what your deliverables and deadlines are, and what your outstanding tasks are at all times. There isn't much point getting to the end of development, having built an outstanding best of breed product and suddenly realising you don't have a company set up, bank accounts, tax registration, contracts, lawyers, accountants and all the other mundane things that are prerequisites to running a business.&lt;br /&gt;&lt;br /&gt;Are you trying to get a tech startup off the ground? Do you have any advice for other would be entrepreneurs?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8824277-6203520342130495665?l=jamesfitzsimons.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jamesfitzsimons.blogspot.com/feeds/6203520342130495665/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8824277&amp;postID=6203520342130495665' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/6203520342130495665'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/6203520342130495665'/><link rel='alternate' type='text/html' href='http://jamesfitzsimons.blogspot.com/2008/07/why-new-website-startups-fail.html' title='Why new website startups fail?'/><author><name>James Fitzsimons</name><uri>http://www.blogger.com/profile/17804628717934024610</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8824277.post-8206014524044020668</id><published>2008-07-24T08:12:00.000Z</published><updated>2008-07-24T08:09:46.473Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='open source'/><category scheme='http://www.blogger.com/atom/ns#' term='web development'/><category scheme='http://www.blogger.com/atom/ns#' term='spring.net'/><category scheme='http://www.blogger.com/atom/ns#' term='.net'/><category scheme='http://www.blogger.com/atom/ns#' term='mono'/><title type='text'>Mono bugs fixed; Spring.Net support coming soon!</title><content type='html'>I've managed to get all my Mono patches committed in time for 2.0 which be &lt;a href="http://www.mono-project.com/Mono_Project_Roadmap"&gt;released very soon&lt;/a&gt;. Bugs I've fixed are:&lt;br /&gt;&lt;br /&gt;&lt;a href="https://bugzilla.novell.com/show_bug.cgi?id=325128"&gt;#325128 ConfigurationSection.GetRuntimeObject&lt;/a&gt;&lt;br /&gt;&lt;a href="https://bugzilla.novell.com/show_bug.cgi?id=395209"&gt;#395209 Fix incompatibility in the HierarchicaDataBoundControl&lt;/a&gt;&lt;br /&gt;&lt;a href="https://bugzilla.novell.com/show_bug.cgi?id=397612"&gt;#397612 Mutually exclusive behaviour between Mono and MS.NET for xs:import&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;As well as a couple of other fixes I didn't create bugzilla bugs for:&lt;br /&gt;The &lt;a href="http://jamesfitzsimons.blogspot.com/2008/05/patching-mono.html"&gt;TypeDescriptor bug&lt;/a&gt; which I blogged about a while ago, and another XmlSchema bug where &lt;span style="COLOR: rgb(102,102,102);font-family:courier new;" &gt;Uri.OriginalString&lt;/span&gt; wasn't being returned in the correct case.&lt;br /&gt;&lt;br /&gt;Hopefully with these Mono bugs fixed in the latest release the major barriers to getting Spring.Net support finished and committed in will be removed. I'm in the process of working through my patch with Mark Pollack, so all going well we may see some Mono support in the next Spring.Net release.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8824277-8206014524044020668?l=jamesfitzsimons.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jamesfitzsimons.blogspot.com/feeds/8206014524044020668/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8824277&amp;postID=8206014524044020668' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/8206014524044020668'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/8206014524044020668'/><link rel='alternate' type='text/html' href='http://jamesfitzsimons.blogspot.com/2008/07/mono-bugs-fixed-springnet-support.html' title='Mono bugs fixed; Spring.Net support coming soon!'/><author><name>James Fitzsimons</name><uri>http://www.blogger.com/profile/17804628717934024610</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8824277.post-2665342612171230534</id><published>2008-07-19T16:51:00.005Z</published><updated>2008-07-19T16:57:31.175Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='web development'/><category scheme='http://www.blogger.com/atom/ns#' term='css'/><title type='text'>background-image position in IE6 with png images doesn't work!</title><content type='html'>After spending about three hours hacking CSS and searching the web today I've discovered that IE6 doesn't respect the positioning of your background-image if you are using png's. Both gif and jpg images work as expected.&lt;br /&gt;&lt;br /&gt;So if you're wondering why something like this:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(153, 153, 153);"&gt;background: White url(../Images/promobox_bottom.png) no-repeat center bottom;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;isn't rendering correctly in IE6, try a different image type.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8824277-2665342612171230534?l=jamesfitzsimons.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jamesfitzsimons.blogspot.com/feeds/2665342612171230534/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8824277&amp;postID=2665342612171230534' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/2665342612171230534'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/2665342612171230534'/><link rel='alternate' type='text/html' href='http://jamesfitzsimons.blogspot.com/2008/07/background-image-position-in-ie6-with.html' title='background-image position in IE6 with png images doesn&apos;t work!'/><author><name>James Fitzsimons</name><uri>http://www.blogger.com/profile/17804628717934024610</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8824277.post-8471367013962576994</id><published>2008-07-17T19:05:00.005Z</published><updated>2008-07-18T17:01:18.624Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='book review'/><category scheme='http://www.blogger.com/atom/ns#' term='geek'/><title type='text'>Book Review: Iron Man: Extremis</title><content type='html'>&lt;iframe src="http://rcm-uk.amazon.co.uk/e/cm?t=ranthoandadas-21&amp;o=2&amp;p=8&amp;l=as1&amp;asins=0785122583&amp;fc1=FDF9F9&amp;IS2=1&amp;lt1=_blank&amp;lc1=AADD99&amp;bc1=000000&amp;bg1=0A0101&amp;f=ifr&amp;nou=1" style="width:120px;height:240px; float: left; margin-right: 15px; margin-bottom: 15px; background-color: black;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"&gt;&lt;/iframe&gt;This is the first Iron man comic I've read (Extremis is actually a 6 part series grouped into a single volume) but I absolutely loved it. I got inspired to give Iron man a go after seeing the recent movie which I also really enjoyed.&lt;br /&gt;&lt;br /&gt;Extremis covers the genesis of the modern Iron Man character, although it is slightly different to the movie version. The comic doesn't dwell on the back story but drip feeds the reader with a series of flashbacks. This makes it interesting without feeling contrived.&lt;br /&gt;&lt;br /&gt;The artwork is simply excellent; the storyline is compelling and well written with the exception of a couple of pieces of weak and slightly mellow dramatic dialogue.&lt;br /&gt;&lt;br /&gt;I particularly like the modern references to both technology (Bluetooth, WI-FI, 3G phones) and people (Dean Karmen, Edward Teller and Clive Sinclair). It helps to anchor the story in a contemporary setting and prevents the dated feeling you get from some comics (although that will go against it in years to come!).&lt;br /&gt;&lt;br /&gt;All in all I really enjoyed Extremis and am looking forward to reading "Iron Man: Execute Program v. 2" next!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8824277-8471367013962576994?l=jamesfitzsimons.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jamesfitzsimons.blogspot.com/feeds/8471367013962576994/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8824277&amp;postID=8471367013962576994' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/8471367013962576994'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/8471367013962576994'/><link rel='alternate' type='text/html' href='http://jamesfitzsimons.blogspot.com/2008/07/book-review-iron-man-extremis.html' title='Book Review: Iron Man: Extremis'/><author><name>James Fitzsimons</name><uri>http://www.blogger.com/profile/17804628717934024610</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8824277.post-1517617817401911473</id><published>2008-05-23T08:55:00.004Z</published><updated>2008-05-23T12:00:05.545Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='open source'/><category scheme='http://www.blogger.com/atom/ns#' term='spring.net'/><category scheme='http://www.blogger.com/atom/ns#' term='.net'/><category scheme='http://www.blogger.com/atom/ns#' term='secret project'/><category scheme='http://www.blogger.com/atom/ns#' term='mono'/><title type='text'>Patching Mono</title><content type='html'>I submitted a fix for bug &lt;a href="https://bugzilla.novell.com/show_bug.cgi?id=MONO82461"&gt;#325128&lt;/a&gt; last night which was the last of the four patches needed get Spring.Net working on the Mono runtime. So far I've submitted patches for:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;TypeDescriptor&lt;/li&gt;&lt;br /&gt;&lt;li&gt;XmlSchema&lt;/li&gt;&lt;br /&gt;&lt;li&gt;HierarchicalDataBoundControl&lt;/li&gt;&lt;br /&gt;&lt;li&gt;ConigurationSection&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;So far only the TypeDescriptor patch has been accepted and committed to the repository, but hopefully the other three won't be far behind. It's quite important to us that these patches make it into the 2.0 release so we can just use the official builds rather than having to build from source ourselves.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8824277-1517617817401911473?l=jamesfitzsimons.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jamesfitzsimons.blogspot.com/feeds/1517617817401911473/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8824277&amp;postID=1517617817401911473' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/1517617817401911473'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/1517617817401911473'/><link rel='alternate' type='text/html' href='http://jamesfitzsimons.blogspot.com/2008/05/patching-mono.html' title='Patching Mono'/><author><name>James Fitzsimons</name><uri>http://www.blogger.com/profile/17804628717934024610</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8824277.post-5283698994664214443</id><published>2008-05-21T08:02:00.004Z</published><updated>2008-05-22T18:58:33.642Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='open source'/><category scheme='http://www.blogger.com/atom/ns#' term='mysql'/><title type='text'>Using MySQL in heterogeneous environments.</title><content type='html'>If like us you have a requirement to run MySQL in a mixed Windows and Linux environment and you want your database to be portable you will need to change the default case sensitive table name behaviour of MySQL on one of the operating systems. On Windows the default behaviour is case insensitive, on Linux the default behaviour is case sensitive. &lt;br /&gt;&lt;br /&gt;I like my table names to stay in the same case I scripted them in so we chose to change Windows to be case sensitive. The fix is pretty simple - you just need to add the following line to your my.ini after [mysqld] and restart your mysql service.&lt;br /&gt;&lt;br /&gt;lower_case_table_names = 0&lt;br /&gt;&lt;br /&gt;Existing objects won't suddenly change case, but any new tables you add to your database will appear in the same case you scripted it in. See the &lt;a href="http://dev.mysql.com/doc/refman/5.0/en/identifier-case-sensitivity.html"&gt;mysql documentation&lt;/a&gt; for more details.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8824277-5283698994664214443?l=jamesfitzsimons.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jamesfitzsimons.blogspot.com/feeds/5283698994664214443/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8824277&amp;postID=5283698994664214443' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/5283698994664214443'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/5283698994664214443'/><link rel='alternate' type='text/html' href='http://jamesfitzsimons.blogspot.com/2008/05/using-mysql-in-heterogeneous.html' title='Using MySQL in heterogeneous environments.'/><author><name>James Fitzsimons</name><uri>http://www.blogger.com/profile/17804628717934024610</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8824277.post-3832250319531573947</id><published>2008-05-20T12:20:00.000Z</published><updated>2008-05-20T12:20:00.967Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='personal'/><category scheme='http://www.blogger.com/atom/ns#' term='startups'/><category scheme='http://www.blogger.com/atom/ns#' term='secret project'/><title type='text'>Starting your own business is hard</title><content type='html'>&lt;strong&gt;No one said it would be easy&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Along the way you will encounter all sorts of barriers, obstacles and challenges and you are going to have to dig deep to find the drive to carry on. &lt;br /&gt;&lt;br /&gt;So when your server blows up, someone you were planning to partner with vanishes of the face of the Internet without warning, a new competitor beats you market, you're working ridiculous hours, and everything looks like it's going pear shaped - remember why you are doing it.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Why are you doing it?&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;That is a really important question. Be honest with yourself before you start, if your only motivation is money then you probably going to struggle. There are all sorts of reasons people have for wanting to start their own business, change of lifestyle, want to prove they can, the desire to share a really good idea. &lt;br /&gt;&lt;br /&gt;I'm still on the journey, but if all I had to pull me through was the desire to make a buck I'd probably have given up by now.&lt;br /&gt;&lt;br /&gt;Still, I plan on making plenty of bucks!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8824277-3832250319531573947?l=jamesfitzsimons.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jamesfitzsimons.blogspot.com/feeds/3832250319531573947/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8824277&amp;postID=3832250319531573947' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/3832250319531573947'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/3832250319531573947'/><link rel='alternate' type='text/html' href='http://jamesfitzsimons.blogspot.com/2008/05/starting-your-own-business-is-hard.html' title='Starting your own business is hard'/><author><name>James Fitzsimons</name><uri>http://www.blogger.com/profile/17804628717934024610</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8824277.post-8840602185252902437</id><published>2008-05-16T11:02:00.005Z</published><updated>2008-05-16T14:08:24.772Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='personal'/><category scheme='http://www.blogger.com/atom/ns#' term='futurist'/><category scheme='http://www.blogger.com/atom/ns#' term='geek'/><title type='text'>Who wouldn't want to be Iron Man?</title><content type='html'>Or more specifically Tony Stark, I mean come on - the guy has everything a geek could dream of!&lt;br /&gt;&lt;br /&gt;I saw the movie last night and although the super hero story and the wow factor of the suit definitely captured my imagination, my slightly geekier side couldn't help but be almost equally impressed by stuff that would have slipped into the background for most of the audience.&lt;br /&gt;&lt;br /&gt;Take Tony's bachelor pad for example, how cool is that bedroom? Wake up in the morning and as you step out of bed, your room senses that you're getting up and throws up the news, weather, your daily calendar on transparent screens built into massive windows while simultaneously filling you in verbally on the really important stuff - that's cool. In fact, I thought it was so cool I did a little research thinking maybe there's a fun project there, but alas it seems that transparent display technology is still a few years away yet.&lt;br /&gt;&lt;br /&gt;But wait, what about that workshop? It was rammed full of enough hi-tech toys to make any geek wet their pants. A robotic arm that you can give verbal commands to - awesome. A holographic 3d modelling tool - yikes!&lt;br /&gt;&lt;br /&gt;The really neat thing is that some of this stuff really isn't that far off at all. Of course we are going to be waiting a wee while before we have a fully integrated AI in our homes...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8824277-8840602185252902437?l=jamesfitzsimons.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jamesfitzsimons.blogspot.com/feeds/8840602185252902437/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8824277&amp;postID=8840602185252902437' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/8840602185252902437'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/8840602185252902437'/><link rel='alternate' type='text/html' href='http://jamesfitzsimons.blogspot.com/2008/05/who-wouldnt-want-to-be-iron-man.html' title='Who wouldn&apos;t want to be Iron Man?'/><author><name>James Fitzsimons</name><uri>http://www.blogger.com/profile/17804628717934024610</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8824277.post-7997573139105122533</id><published>2008-04-28T09:56:00.003Z</published><updated>2008-05-15T10:49:42.177Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='open source'/><category scheme='http://www.blogger.com/atom/ns#' term='spring.net'/><category scheme='http://www.blogger.com/atom/ns#' term='.net'/><category scheme='http://www.blogger.com/atom/ns#' term='secret project'/><title type='text'>Spring.NET on Mono</title><content type='html'>It's been a while since my last post because I've been extremely busy hacking away to get Spring.NET working on Mono. I've basically got a working solution now so we should hopefully get the changes committed back into the Spring.NET repositories in the next couple of weeks.&lt;br /&gt;&lt;br /&gt;It's been a bit of an interesting road so far - transistioning our application onto Mono - and I am a bit surprised at how many framework bugs I've discovered. I've submitted one patch so far for a very minor bug in the TypeDescriptor class, however I still have three more patches to write and submit at this point. I wouldn't have thought that the parts of the framework we are using were especially esoteric but perhaps I'm wrong.&lt;br /&gt;&lt;br /&gt;Now all I need is stepping debugger integration in MonoDevelop and I won't have to boot into Vista ever again!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8824277-7997573139105122533?l=jamesfitzsimons.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jamesfitzsimons.blogspot.com/feeds/7997573139105122533/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8824277&amp;postID=7997573139105122533' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/7997573139105122533'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/7997573139105122533'/><link rel='alternate' type='text/html' href='http://jamesfitzsimons.blogspot.com/2008/04/springnet-on-mono.html' title='Spring.NET on Mono'/><author><name>James Fitzsimons</name><uri>http://www.blogger.com/profile/17804628717934024610</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8824277.post-817222019721916936</id><published>2008-04-21T08:22:00.002Z</published><updated>2008-05-16T14:52:29.948Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='.net'/><title type='text'>Compiling for .net 1.1 framework without VS 2003</title><content type='html'>I got asked about this by a collegue the other day and it amazed me how many people seemed to be asking the same question on the internet with no helpful answers. The standard response seems to be you need some thing called MsBee!?&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;No you don't&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;You have the only tool you require already installed on your workstation, specificlly csc.exe aka the C# compiler.&lt;br /&gt;&lt;br /&gt;All you need to do is open a command prompt and set your path:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;path=%path%;c:\WINDOWS\Microsoft.NET\Framework\v1.1.4322&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;and then compile your project:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;csc /target:exe out:myprogram.exe *.cs&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;If your project structure is too complex for a simple command line compile then I suggest you learn a &lt;a href="http://nant.sourceforge.net/"&gt;decent .NET build tool&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8824277-817222019721916936?l=jamesfitzsimons.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jamesfitzsimons.blogspot.com/feeds/817222019721916936/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8824277&amp;postID=817222019721916936' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/817222019721916936'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/817222019721916936'/><link rel='alternate' type='text/html' href='http://jamesfitzsimons.blogspot.com/2008/04/compiling-for-net-11-framework-without.html' title='Compiling for .net 1.1 framework without VS 2003'/><author><name>James Fitzsimons</name><uri>http://www.blogger.com/profile/17804628717934024610</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8824277.post-3335793657725585952</id><published>2008-04-14T11:08:00.004Z</published><updated>2008-04-14T11:32:42.433Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='.net'/><category scheme='http://www.blogger.com/atom/ns#' term='nhibernate'/><title type='text'>Mapping a view with Nhibernate</title><content type='html'>&lt;p&gt;Something we've come up against in the last week is a need to map a view in Nhibernate. We have a reasonably complex data model with a hierarchical structure involving about four different tables that we wanted to represent as a single mapped entity in our object model. The obvious approach was to define the appropriate view and map that.&lt;/p&gt;&lt;strong&gt;No joined tables in Nhibernate:&lt;/strong&gt;&lt;br /&gt;&lt;p&gt;There seems to be some confusion on the web with a lot of people complaining that Nhibernate doesn't yet support the joined tables syntax that is available in Hibernate 3.0. While this is true, it doesn't prevent you from working with a database view as long as you don't need to update the underlying tables via Nhibernate.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;strong&gt;The solution:&lt;/strong&gt;&lt;br /&gt;&lt;p&gt;Map the view just as you would map any other table in your data model with the standard syntax:&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;span style="font-family:courier new;color:#666666;"&gt;&amp;lt;class name="MyEntity" table="MyView"/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;The only other change you need to make is in your property mapping. Add the update and insert attributes to ensure Nhibernate doesn't try and generate insert and update statements for your view.&lt;/p&gt;&lt;br /&gt;&lt;span style="font-family:courier new;color:#666666;"&gt;&amp;lt;property name="MyProperty" type="String" column name="MyColumn" length="300" sql-type="varchar" not-null="true"update="false" insert="false"/&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;That is probably obvious to most people, but there seemed to be enough confusion when I was searching about it that it seems worth stating it again here.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8824277-3335793657725585952?l=jamesfitzsimons.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jamesfitzsimons.blogspot.com/feeds/3335793657725585952/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8824277&amp;postID=3335793657725585952' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/3335793657725585952'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/3335793657725585952'/><link rel='alternate' type='text/html' href='http://jamesfitzsimons.blogspot.com/2008/04/mapping-view-with-nhibernate.html' title='Mapping a view with Nhibernate'/><author><name>James Fitzsimons</name><uri>http://www.blogger.com/profile/17804628717934024610</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8824277.post-3281960307545541090</id><published>2008-04-10T12:56:00.001Z</published><updated>2008-04-10T15:23:51.146Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='seo'/><title type='text'>Great SEO newbie checklist</title><content type='html'>The great content just keeps coming over at &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;SEOmoz&lt;/span&gt;. &lt;a href="http://www.seomoz.org/users/view/49007"&gt;Danny Dover&lt;/a&gt; just posted &lt;a href="http://www.seomoz.org/blog/the-beginners-checklist-for-learning-seo"&gt;The Beginner's Checklist for Learning &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;SEO&lt;/span&gt;&lt;/a&gt;. It looks like a fantastic resource for people new to &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;SEO&lt;/span&gt; and, as one of those people myself, I will be utilising it to it's full potential!&lt;br /&gt;&lt;br /&gt;Great work, keep it coming guys!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8824277-3281960307545541090?l=jamesfitzsimons.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jamesfitzsimons.blogspot.com/feeds/3281960307545541090/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8824277&amp;postID=3281960307545541090' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/3281960307545541090'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/3281960307545541090'/><link rel='alternate' type='text/html' href='http://jamesfitzsimons.blogspot.com/2008/04/great-seo-newbie-checklist.html' title='Great SEO newbie checklist'/><author><name>James Fitzsimons</name><uri>http://www.blogger.com/profile/17804628717934024610</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8824277.post-3775978726759203464</id><published>2008-04-08T22:32:00.003Z</published><updated>2008-04-09T19:30:31.273Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='.net'/><title type='text'>The zen of problem solving.</title><content type='html'>Sometimes I can be an angry coder. I get stuck on a problem I convince myself ought to be trivial and I get extremely worked up to the point where I feel like breaking something.  This happened to me tonight when I was trying to figure out why a custom ASP.NET server control wasn't working as expected.&lt;br /&gt;&lt;br /&gt;Long story short - I spent an embarrassing amount of time thrashing around on the net trying to find answers to a non existent problem. Two minutes, literally two minutes after I'd given up and had packed up for the night I realised what the problem was!&lt;br /&gt;&lt;br /&gt;The answer was to simply step back a bit from the problem and relax. The lesson: Bring a little zen to your problem solving and you're likely to be a far more productive and stress free programmer.&lt;br /&gt;&lt;br /&gt;And no, I'm not going to tell you what the problem was - it's simply too embarrassing.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8824277-3775978726759203464?l=jamesfitzsimons.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jamesfitzsimons.blogspot.com/feeds/3775978726759203464/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8824277&amp;postID=3775978726759203464' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/3775978726759203464'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/3775978726759203464'/><link rel='alternate' type='text/html' href='http://jamesfitzsimons.blogspot.com/2008/04/zen-of-problem-solving.html' title='The zen of problem solving.'/><author><name>James Fitzsimons</name><uri>http://www.blogger.com/profile/17804628717934024610</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8824277.post-1750855986595795627</id><published>2008-04-06T13:55:00.004Z</published><updated>2008-04-06T15:50:58.966Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='open source'/><category scheme='http://www.blogger.com/atom/ns#' term='.net'/><category scheme='http://www.blogger.com/atom/ns#' term='secret project'/><title type='text'>Url Rewriting and the dreaded "Cannot use a leading .. to exit above the top directory"</title><content type='html'>I've just had a fun couple of hours trying to figure out why my site suddenly starting giving me this exception:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 102, 102);font-family:courier new;" &gt;Exception type: HttpException&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 102, 102);font-family:courier new;" &gt;Exception message: Cannot use a leading .. to exit above the top directory.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;It turns out that ASP.NET 2.0 doesn't like playing nicely with Url Rewriters. The problem occurs when the rewriting rebases the form action path. e.g instead of having your form tag look something like this:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 102, 102);font-family:courier new;" &gt;&amp;lt;form id=form1 method="post" action="page.aspx?id=whatever" name="form1"&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;After rewriting it ends up looking like this:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 102, 102);font-family:courier new;" &gt;&amp;lt;form id=form1 method="post" action="../page.aspx?id=whatever" name="form1"&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;This obviously is not a good thing. For a detailed breakdown of the problem I suggest you read sgerz's post &lt;a id="viewpost.ascx_TitleUrl" href="http://todotnet.com/archive/2006/07/01/7472.aspx"&gt;Get GoogleBot to crash your .NET 2.0 site&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;In my particular case I am using an open source url rewriter solution from &lt;a href="http://urlrewriter.net/"&gt;http://urlrewriter.net&lt;/a&gt;. Of course the beauty of it being open source is that you can fix the problem! So a one line change on line 80 of HttpContextFacade.cs from:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 102, 102);font-family:courier new;" &gt;            HttpContext.Current.RewritePath(url, false);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;to&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 102, 102);font-family:courier new;" &gt;            HttpContext.Current.RewritePath(url, true);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;solved the problem.&lt;br /&gt;&lt;br /&gt;So why did this start happening all of a sudden? I can only surmise that it had something to do with the fact that I had just installed Vista SP1 and that caused cassini to start behaving as IIS 6.0 does.&lt;br /&gt;&lt;br /&gt;I'll be emailing the maintainers of the project to see if they want to make the change to the main repository.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8824277-1750855986595795627?l=jamesfitzsimons.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jamesfitzsimons.blogspot.com/feeds/1750855986595795627/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8824277&amp;postID=1750855986595795627' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/1750855986595795627'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/1750855986595795627'/><link rel='alternate' type='text/html' href='http://jamesfitzsimons.blogspot.com/2008/04/url-rewriting-and-dreaded-cannot-use.html' title='Url Rewriting and the dreaded &quot;Cannot use a leading .. to exit above the top directory&quot;'/><author><name>James Fitzsimons</name><uri>http://www.blogger.com/profile/17804628717934024610</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8824277.post-5930740061023876280</id><published>2008-04-05T22:33:00.005Z</published><updated>2008-04-05T22:43:24.231Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='.net'/><category scheme='http://www.blogger.com/atom/ns#' term='secret project'/><title type='text'>Png images and ASP.NET... Getting a "A generic error occurred in GDI+"?</title><content type='html'>Another one I would have spent hours on was solved in two minutes by the wonder that is the internet. More specifically Chris Garrett over at ASPAlliance explains the &lt;a href="http://aspalliance.com/319"&gt;solution to the  png generic error in GDI+ exception&lt;/a&gt; .&lt;br /&gt;&lt;br /&gt;The short story is you can't use the Bitmap Save() method with a non-seekable stream. So, instead of just doing this:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 102, 102);font-family:courier new;" &gt;img.Save(context.Response.OutputStream, ImageFormat.Png);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;You have to do something like this:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;MemoryStream memoryStream = new MemoryStream();&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;img.Save(memoryStream, ImageFormat.Png);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;memoryStream.WriteTo(context.Response.OutputStream);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Cheers Chris, you saved me hours of work!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8824277-5930740061023876280?l=jamesfitzsimons.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jamesfitzsimons.blogspot.com/feeds/5930740061023876280/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8824277&amp;postID=5930740061023876280' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/5930740061023876280'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/5930740061023876280'/><link rel='alternate' type='text/html' href='http://jamesfitzsimons.blogspot.com/2008/04/png-images-and-aspnet-getting-a-generic.html' title='Png images and ASP.NET... Getting a &quot;A generic error occurred in GDI+&quot;?'/><author><name>James Fitzsimons</name><uri>http://www.blogger.com/profile/17804628717934024610</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8824277.post-702227297783540738</id><published>2008-04-02T22:47:00.002Z</published><updated>2008-04-02T21:47:13.584Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='seo'/><title type='text'>Where's the SEO advice for startups?</title><content type='html'>I read a blog post today that really resonated with me. &lt;a href="http://www.seomoz.org/users/view/63"&gt;Rand&lt;/a&gt; points out that a lot of &lt;a href="http://www.seomoz.org/blog/im-getting-pretty-tired-of-startup-advice-that-doesnt-include-any-mention-of-seo"&gt;startup advice doesn't mention SEO&lt;/a&gt;. As someone trying to get a new startup off the ground I've been giving a lot of thought to how best to market it. Now we don't have much money to spend on traditional marketing, and as we are a web based business it makes sense to do most of our marketing on the web. How come others don't consider SEO when planning their marketing campaigns?&lt;br /&gt;&lt;br /&gt;I've seen other online businesses cover every bus stop around with expensive advertising, plough money into radio and print, and still not rank on first page in google.&lt;br /&gt;&lt;br /&gt;In the world of internet where there are such low barriers to entry (building a website is comparatively cheap compared to starting up a bricks and mortar business) and you are going to be playing in a crowded market place - what are your differentiators?&lt;br /&gt;&lt;br /&gt;Will you be ignoring SEO?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8824277-702227297783540738?l=jamesfitzsimons.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jamesfitzsimons.blogspot.com/feeds/702227297783540738/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8824277&amp;postID=702227297783540738' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/702227297783540738'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/702227297783540738'/><link rel='alternate' type='text/html' href='http://jamesfitzsimons.blogspot.com/2008/04/i-read-blog-post-today-that-really.html' title='Where&apos;s the SEO advice for startups?'/><author><name>James Fitzsimons</name><uri>http://www.blogger.com/profile/17804628717934024610</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8824277.post-5231521143443000269</id><published>2008-03-26T12:42:00.001Z</published><updated>2008-03-26T13:51:54.734Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='open source'/><category scheme='http://www.blogger.com/atom/ns#' term='monodevelop'/><category scheme='http://www.blogger.com/atom/ns#' term='.net'/><title type='text'>MonoDevelop 1.0 Released</title><content type='html'>I've been pretty slow in blogging about this but it's still worth pointing out that &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;MonoDevelop&lt;/span&gt; 1.0 has &lt;a href="http://www.monodevelop.com/MonoDevelop_1.0_Released"&gt;officially been released&lt;/a&gt;. It's becoming a really feature rich and mature piece of software now and is &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_1"&gt;definitely&lt;/span&gt; worth investigation if you do any development on a Linux platform.&lt;br /&gt;&lt;br /&gt;Roll on 1.1 in six months time!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8824277-5231521143443000269?l=jamesfitzsimons.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jamesfitzsimons.blogspot.com/feeds/5231521143443000269/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8824277&amp;postID=5231521143443000269' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/5231521143443000269'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/5231521143443000269'/><link rel='alternate' type='text/html' href='http://jamesfitzsimons.blogspot.com/2008/03/monodevelop-10-released.html' title='MonoDevelop 1.0 Released'/><author><name>James Fitzsimons</name><uri>http://www.blogger.com/profile/17804628717934024610</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8824277.post-5439501951618866818</id><published>2008-03-25T12:45:00.001Z</published><updated>2008-03-25T12:46:24.889Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='space'/><category scheme='http://www.blogger.com/atom/ns#' term='politics'/><title type='text'>The death of Spirit?</title><content type='html'>In yet another example of mixed up priorities "NASA officials have directed the Mars Exploration Rover (MER) program to cut $4 million dollars from its approximately 20 million dollar budget this year" as reported &lt;a href="http://scitech.blogs.cnn.com/2008/03/24/budget-woes-at-nasa-to-impact-mars-rovers/"&gt;here&lt;/a&gt;. The implications of this to program run on such a tight budget is that there will be staff cuts resulting in one of the rovers (Spirit) having to discontinue science operations and be put into hibernation mode.&lt;br /&gt;&lt;br /&gt;Now I don't know about you, but this makes me incredibly angry. The fact that such a valuable program will be so dramatically reduced because of such a paltry sum makes no sense at all. These two rovers have taught us enormous amounts about our one of our nearest planetary neighbours, not to mention the lessons learned in the development and running of such advanced robotic explorers.&lt;br /&gt;&lt;br /&gt;Now, I'm not an American so these aren't my tax dollars, but surely the average American can see that there are some real problems with the way their money is being spent. The Iraq war has cost &lt;a href="http://www.nationalpriorities.org/costofwar_home"&gt;$505.5 billion and change&lt;/a&gt; so far and what has it got the American people apart from &lt;a href="http://www.antiwar.com/casualties/"&gt;4000 dead soldiers and nearly 30,000 wounded&lt;/a&gt;?&lt;br /&gt;&lt;br /&gt;I appreciate that maybe your average Joe in the street doesn't feel as strongly about space exploration as I do, but wouldn't you rather your money was spent on advancing human knowledge than killing other people?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8824277-5439501951618866818?l=jamesfitzsimons.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jamesfitzsimons.blogspot.com/feeds/5439501951618866818/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8824277&amp;postID=5439501951618866818' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/5439501951618866818'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/5439501951618866818'/><link rel='alternate' type='text/html' href='http://jamesfitzsimons.blogspot.com/2008/03/death-of-spirit.html' title='The death of Spirit?'/><author><name>James Fitzsimons</name><uri>http://www.blogger.com/profile/17804628717934024610</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8824277.post-5650121550163369416</id><published>2008-03-14T16:00:00.003Z</published><updated>2008-04-05T22:41:28.319Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='seo'/><category scheme='http://www.blogger.com/atom/ns#' term='.net'/><title type='text'>Simple ASP.NET SEO Enhancement</title><content type='html'>&lt;div&gt;&lt;div&gt;As many &lt;a href="http://www.seomoz.org/article/search-ranking-factors"&gt;people&lt;/a&gt; &lt;a href="http://tropicalseo.com/2007/how-to-escape-googles-supplemental-index/"&gt;have&lt;/a&gt; &lt;a href="http://www.seobook.com/archives/002030.shtml"&gt;mentioned&lt;/a&gt; one of the most important (and easy) SEO related enhancements you can make to your site is to use a unique title and meta description on each page.&lt;br /&gt;&lt;br /&gt;In ASP.NET 2.0 the page title is easily set either via either the title attribute of the page directive in the markup, or by setting it directly in code e.g&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 102, 102);font-family:courier new;" &gt;this.Title = "my unique title";&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Creating a unique meta description is slightly more involved but still pretty straight forward.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 102, 102);font-family:courier new;" &gt;HtmlMeta metaDescription = new HtmlMeta();&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 102, 102);font-family:courier new;" &gt;metaDescription.Name = "description";&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 102, 102);font-family:courier new;" &gt;metaDescription.Content = "my unique description";&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 102, 102);font-family:courier new;" &gt;this.Header.Controls.Add(metaDescription);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;These are two of the simplest and quickest SEO related enhancements you can make to your ASP.NET site - you've really got no excuse not to!&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt; &lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8824277-5650121550163369416?l=jamesfitzsimons.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jamesfitzsimons.blogspot.com/feeds/5650121550163369416/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8824277&amp;postID=5650121550163369416' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/5650121550163369416'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/5650121550163369416'/><link rel='alternate' type='text/html' href='http://jamesfitzsimons.blogspot.com/2008/03/simple-aspnet-seo-enhancement.html' title='Simple ASP.NET SEO Enhancement'/><author><name>James Fitzsimons</name><uri>http://www.blogger.com/profile/17804628717934024610</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8824277.post-4100111678675761522</id><published>2008-03-06T22:26:00.001Z</published><updated>2008-03-07T10:29:33.233Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='seo'/><category scheme='http://www.blogger.com/atom/ns#' term='secret project'/><title type='text'>How good is your content?</title><content type='html'>The market I am planning to play in is geographically constrained. Because of this there aren't many competitors at this stage in the game which, initially you would think is a good thing.  However this particular market can only support a small number of players, and because there are already established businesses operating and building brand recognition it will make my job as an SEO all that more difficult, but subsequently much more important.&lt;br /&gt;&lt;br /&gt;I firmly believe that the defining factor will be the quality of the content provided. The value the customer perceives they are receiving by using one site vs another will ultimately dictate where their brand loyalty lies. &lt;a href="http://www.seomoz.org/users/view/63"&gt;Rand&lt;/a&gt; covers this quite well in &lt;a href="http://www.seomoz.org/blog/whiteboard-friday-creating-great-online-content"&gt;this video&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Something web users are slowly coming to realise is that most markets are flooded with poor quality copies and once you find a site that produces quality content in the area you are interested in you stick with it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8824277-4100111678675761522?l=jamesfitzsimons.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jamesfitzsimons.blogspot.com/feeds/4100111678675761522/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8824277&amp;postID=4100111678675761522' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/4100111678675761522'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/4100111678675761522'/><link rel='alternate' type='text/html' href='http://jamesfitzsimons.blogspot.com/2008/03/how-good-is-your-content.html' title='How good is your content?'/><author><name>James Fitzsimons</name><uri>http://www.blogger.com/profile/17804628717934024610</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8824277.post-3126846938238956555</id><published>2008-03-05T22:46:00.000Z</published><updated>2008-03-05T22:47:32.224Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='seo'/><category scheme='http://www.blogger.com/atom/ns#' term='secret project'/><title type='text'>SEO Newbie</title><content type='html'>&lt;div&gt;I have a new super secret project I am working on and as a result I am learning a great deal of new skills. It is a web based project and to that end I have started reading up on SEO (Search Engine Optimisation) with a view to applying these new skills in the near future.&lt;br /&gt;&lt;br /&gt;The first thing that strikes you as a SEO newbie is where do I start? There seems to be a mountain of information out on the web, but as always sorting the wheat from the chaff is not easy. Also, a lot of the blogs assume quite a bit of domain knowledge. There don't seem to be too many people answering the really simple questions like "what exactly is a keyword?" and what does SERP stand for? (Search Engine Results Page by the way).&lt;br /&gt;&lt;br /&gt;To that end I am going to start posting any little tid bits of information that I think might be useful to a real SEO newbie in the hope that I might help someone short cut the whole process somewhat. To start off with, here is a list of blogs that I've found to be really useful and contain well written and insightful content:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.seomoz.org"&gt;seomoz&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.seobook.com/"&gt;seobook&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.copyblogger.com/"&gt;copyblogger&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.scoreboard-media.com/"&gt;scoreboard-media&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://tropicalseo.com/"&gt;tropicalseo&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;Lots more to come on this topic, and hopefully I'll be able to provide some insight on SEO considerations specific to ASP.NET development soon.&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8824277-3126846938238956555?l=jamesfitzsimons.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jamesfitzsimons.blogspot.com/feeds/3126846938238956555/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8824277&amp;postID=3126846938238956555' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/3126846938238956555'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/3126846938238956555'/><link rel='alternate' type='text/html' href='http://jamesfitzsimons.blogspot.com/2008/03/seo-newbie.html' title='SEO Newbie'/><author><name>James Fitzsimons</name><uri>http://www.blogger.com/profile/17804628717934024610</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8824277.post-3611061231917619113</id><published>2007-06-23T10:47:00.000Z</published><updated>2008-03-06T15:10:48.997Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='open source'/><category scheme='http://www.blogger.com/atom/ns#' term='monodevelop'/><title type='text'>Finally got my patch committed!</title><content type='html'>I'm stoked. With the release of MonoDevelop 0.14 my class and member selectors are finally in the core MonoDevelop. I know it's only a small contribution, but personally it's a feature I find very useful so I hope other people are deriving some benefit from that work too. I do notice that most of the screen shots of MD I see have them enabled so I guess it's not annoying people enough to turn it off!&lt;br /&gt;&lt;br /&gt;Anyway, here is my little claim to fame:&lt;br /&gt;&lt;a href="http://www.monodevelop.com/Release_notes_for_MonoDevelop_0.14"&gt;http://www.monodevelop.com/Release_notes_for_MonoDevelop_0.14&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8824277-3611061231917619113?l=jamesfitzsimons.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jamesfitzsimons.blogspot.com/feeds/3611061231917619113/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8824277&amp;postID=3611061231917619113' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/3611061231917619113'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/3611061231917619113'/><link rel='alternate' type='text/html' href='http://jamesfitzsimons.blogspot.com/2007/06/finally-got-my-patch-committed.html' title='Finally got my patch committed!'/><author><name>James Fitzsimons</name><uri>http://www.blogger.com/profile/17804628717934024610</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8824277.post-5962883137210899363</id><published>2007-04-24T16:34:00.000Z</published><updated>2008-03-06T15:10:48.998Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='open source'/><category scheme='http://www.blogger.com/atom/ns#' term='.net'/><title type='text'>Ndbunit is great - once you get past the pain</title><content type='html'>Over the last few days I've been setting up my latest project to use Ndbunit to initialise the database to known state prior to running each of my unit tests. It has been a bit of painful process as the documentation is fairly minmal and non-existant for some features, but I think I've got there now.&lt;br /&gt;&lt;br /&gt;A couple of things I wanted to put down here in case I ever forget them and start banging my head on the desk again!&lt;br /&gt;&lt;br /&gt;Firstly if you want to use the InsertIdentity method you need to make sure your xsd sets the AutoIncrement attribute to true for your identity column. eg.&lt;br /&gt;&lt;br /&gt;&amp;lt;xs:element autoincrement="true" type="xs:int" name="PERSON_ID"&amp;gt;&lt;br /&gt;&lt;br /&gt;Secondly if you want to insert more than one row into a table you need to make sure your xsd sets the IsDataSet attribute to true e.g&lt;br /&gt;&lt;br /&gt;&amp;lt;xs:element name="PERSON" isdataset="true"&amp;gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8824277-5962883137210899363?l=jamesfitzsimons.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jamesfitzsimons.blogspot.com/feeds/5962883137210899363/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8824277&amp;postID=5962883137210899363' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/5962883137210899363'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/5962883137210899363'/><link rel='alternate' type='text/html' href='http://jamesfitzsimons.blogspot.com/2007/04/ndbunit-is-great-once-you-get-past-pain.html' title='Ndbunit is great - once you get past the pain'/><author><name>James Fitzsimons</name><uri>http://www.blogger.com/profile/17804628717934024610</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8824277.post-8243591866682262721</id><published>2007-03-21T21:49:00.000Z</published><updated>2008-03-06T15:10:48.998Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='open source'/><title type='text'>subversion 1.4.3 on ubuntu Edgy amd64</title><content type='html'>Just went through a few dramas tonight to upgrade svn on my system from the old 1.3.2 version that is in the ubuntu repos to the latest 1.4.3.&lt;br /&gt;&lt;br /&gt;I found this  &lt;a href="http://ubuntuforums.org/showthread.php?p=2269078"&gt;howto&lt;/a&gt; which gets you almost all the way there. Unfortunately amd64 uses will get a link error complaining that libneon.a needs to be compiled with the fPIC flag. This is easily fixed by changing the following line in neon/src/Makefile (line 28) &lt;span style="font-weight: bold;"&gt;after&lt;/span&gt; the configure step from this&lt;br /&gt;CFLAGS = -g -O2&lt;br /&gt;to&lt;br /&gt;CFLAGS = -g -O2 -fPIC&lt;br /&gt;&lt;br /&gt;then you make and install as per the howto.&lt;br /&gt;&lt;br /&gt;HTH!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8824277-8243591866682262721?l=jamesfitzsimons.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jamesfitzsimons.blogspot.com/feeds/8243591866682262721/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8824277&amp;postID=8243591866682262721' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/8243591866682262721'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/8243591866682262721'/><link rel='alternate' type='text/html' href='http://jamesfitzsimons.blogspot.com/2007/03/subversion-143-on-ubuntu-edgy-amd64.html' title='subversion 1.4.3 on ubuntu Edgy amd64'/><author><name>James Fitzsimons</name><uri>http://www.blogger.com/profile/17804628717934024610</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8824277.post-2788523960733932464</id><published>2007-02-26T13:25:00.000Z</published><updated>2008-03-06T15:10:48.999Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='open source'/><title type='text'>Cool open source .NET charting component</title><content type='html'>I've been looking around for a decent free (as in beer) .NET charting component that I can use from ASP.NET for my current website project. At first I tried &lt;a href="http://www.carlosag.net/Tools/WebChart/Default.aspx"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;WebChart&lt;/span&gt;&lt;/a&gt;, but it didn't seem to want to work under &lt;a href="http://www.go-mono.com/"&gt;mono&lt;/a&gt;. I could have probably figured out the problem with a little bit of effort, but I've got better things to spend my time on at the moment. So a little more digging and a search of the &lt;a href="http://www.go-mono.com/"&gt;Mono&lt;/a&gt; mailing list uncovered &lt;a href="http://zedgraph.org/"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;zedgraph&lt;/span&gt;&lt;/a&gt;. This component is awesome. Take a look at some of the sample graphs - it produces really professional looking results.&lt;br /&gt;&lt;br /&gt;Now I haven't delved into the guts of it yet, that's &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_2"&gt;tonight's&lt;/span&gt; task, but I just wanted to let people know it's out there.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8824277-2788523960733932464?l=jamesfitzsimons.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jamesfitzsimons.blogspot.com/feeds/2788523960733932464/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8824277&amp;postID=2788523960733932464' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/2788523960733932464'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/2788523960733932464'/><link rel='alternate' type='text/html' href='http://jamesfitzsimons.blogspot.com/2007/02/cool-open-source-net-charting-component.html' title='Cool open source .NET charting component'/><author><name>James Fitzsimons</name><uri>http://www.blogger.com/profile/17804628717934024610</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8824277.post-4315062493337844275</id><published>2007-02-26T13:01:00.000Z</published><updated>2008-03-06T15:13:03.549Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='personal'/><title type='text'>A fun weekend.</title><content type='html'>Well another work week has begun but I had quite a fun weekend so am OK about getting stuck back into it at work. On Friday night Bruce and I watched Alien and Aliens back to back. These are possibly two of the greatest Sci-fi movies ever made. We did Aliens 3 on Saturday night, but didn't quite manage to complete the set. Well, I guess there's always next weekend for the Resurrection!&lt;br /&gt;&lt;br /&gt;On Sunday afternoon Anthea and I visited the London Zoo. Now I'm a firm believer that Zoo's not only have their place but are absolutely essential to the continued existence of so many of the wonderful creatures on this planet. It was great to see the breding programmes are having a positive impact and are literally bring a number of the species that I saw back from the very edge of extinction. Hopefully one day those species will thrive in the wild again, but for that to happen their natural habitats must first be protected from deforestation and poaching. I took a few photos although I didn't have time to look at any of them last night. I might post a couple here if any of them turned out OK.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8824277-4315062493337844275?l=jamesfitzsimons.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jamesfitzsimons.blogspot.com/feeds/4315062493337844275/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8824277&amp;postID=4315062493337844275' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/4315062493337844275'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/4315062493337844275'/><link rel='alternate' type='text/html' href='http://jamesfitzsimons.blogspot.com/2007/02/fun-weekend.html' title='A fun weekend.'/><author><name>James Fitzsimons</name><uri>http://www.blogger.com/profile/17804628717934024610</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8824277.post-3403032104241772518</id><published>2007-02-23T13:06:00.000Z</published><updated>2008-03-06T15:09:01.291Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='.net'/><title type='text'>HttpHandlers and session state</title><content type='html'>While hacking on my website the other night I found a need to build an HttpHandler (actually a page would have worked fine, but a httphandler was more elegant). I got part way through debugging when I found that session state wasn't available in an HttpHandler! This caused me some consternation as I have an HttpModule which I use to retrieve my nhibernate session during the execution of a request and it stores the nhibernate session in the HttpContext session (hopefully that's not too many sessions and you're still with me).&lt;br /&gt;&lt;br /&gt;Anyway I almost re-engineered the handler to work another way when a search of google groups revealed this simple solution, your handler simply has to "implement" the empty IRequiresSessionState interface (you'll need to be using the System.Web.WebSessionState namespace.) e.g.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;public class VerificationHttpHandler : IHttpHandler, IRequiresSessionState&lt;/span&gt;&lt;br /&gt;&lt;span &gt;&lt;/span&gt;&lt;br /&gt;That's it, you now have http session available in your handler.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8824277-3403032104241772518?l=jamesfitzsimons.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jamesfitzsimons.blogspot.com/feeds/3403032104241772518/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8824277&amp;postID=3403032104241772518' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/3403032104241772518'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/3403032104241772518'/><link rel='alternate' type='text/html' href='http://jamesfitzsimons.blogspot.com/2007/02/httphandlers-and-session-state.html' title='HttpHandlers and session state'/><author><name>James Fitzsimons</name><uri>http://www.blogger.com/profile/17804628717934024610</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8824277.post-3614336264825229029</id><published>2007-02-16T08:50:00.000Z</published><updated>2008-03-06T15:10:48.999Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='open source'/><category scheme='http://www.blogger.com/atom/ns#' term='.net'/><title type='text'>nhibernate - a complex beast</title><content type='html'>I am beginning to discover that nHibernate is a far more complex beast than I realised. Over the last couple of days I've spent some more time reading the documentation (out of necessity rather than pure interest) and it is capable of some amazing things, however this flexiblity comes at the cost of complexity (as is often the case).&lt;br /&gt;&lt;br /&gt;Here's an example of a trap for young players that caught me the other night. I have two entities A &amp; B that map two two underlying tables tableA and tableB. The primary key of tableA is a foreign key in tableB. tableA contains a property Rating1Count which is the count of a column in tableB. I had code similar to the following:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;ISession session = NHibernateHttpModule.CurrentSession;&lt;br /&gt;ITransaction transaction = session.BeginTransaction();&lt;br /&gt;try&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;log.Debug("Saving new B");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;session.SaveOrUpdate(b);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;log.Debug("saved new B");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ICriteria crit = session.CreateCriteria(typeof(A));&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;crit.Add( Expression.Eq("AId", a.AId) );&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;log.Debug("Executing query");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;IList As = crit.List();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (As.Count == 1) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;a = As[0] as A;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;log.Debug(string.Format("Count of 1s in tableB {0}",    a.Rating1Count));&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}  &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;transaction.Commit&lt;br /&gt;}&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;After testing this I found that even though my changes were being persisted to tableB (verified by querying mysql directly) they weren't reflected in my tableA object.&lt;br /&gt;&lt;br /&gt;Then it dawned on me, at what point does nhibernate write the changes to the database? I moved the transaction.Commit line up to be directly below the call to SaveOrUpdate and lowe and behold it works!&lt;br /&gt;&lt;br /&gt;In hindsight it's obvious, but it had me scratching my head for a while (and it was late - at least that's my story and I'm sticking to it!).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8824277-3614336264825229029?l=jamesfitzsimons.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jamesfitzsimons.blogspot.com/feeds/3614336264825229029/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8824277&amp;postID=3614336264825229029' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/3614336264825229029'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/3614336264825229029'/><link rel='alternate' type='text/html' href='http://jamesfitzsimons.blogspot.com/2007/02/nhibernate-complex-beast.html' title='nhibernate - a complex beast'/><author><name>James Fitzsimons</name><uri>http://www.blogger.com/profile/17804628717934024610</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8824277.post-3561498733730121049</id><published>2007-02-14T12:45:00.000Z</published><updated>2008-03-06T15:13:03.550Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='personal'/><title type='text'>Been a busy boy</title><content type='html'>&lt;p&gt;Well, so much for my good intentions to start blogging again pre Christmas. Life has been crazy busy as usual and this always seems to be one of the first things to drop off the list. I am hopefully on my way to being more productive now thanks to my new strategy for &lt;a href="http://www.amazon.co.uk/Getting-Things-Done-Stress-free-Productivity/dp/0749922648/sr=8-1/qid=1171457244/ref=pd_ka_1/202-2164133-8483844?ie=UTF8&amp;s=books"&gt;Getting Things Done&lt;/a&gt;. I'm only really part way towards fully implementing this program but I do feel that it's already helping me keep more on top of things.&lt;/p&gt;&lt;p&gt;We had a great trip around Paris, Rome, and the Amalfi Coast with my folks for Christmas. I am hoping to get the photos up on &lt;a href="http://www.jamesfitzsimons.com/"&gt;www.jamesfitzsimons.com&lt;/a&gt; soon.&lt;/p&gt;&lt;p&gt;I've been concentrating hard on my secret website project of late. I'll let you know more about the purpose of the site in the future when it's ready to launch, but for now lets just say it's great to get back into web development. I've been really enjoying playing with some of the new features of ASP.NET 2.0 (using &lt;a href="http://www.go-mono.com/"&gt;Mono&lt;/a&gt; of course) and have also been discovering the magic of &lt;a href="http://www.nhibernate.org/"&gt;nHibernate&lt;/a&gt;. I hope to make more posts about the specifics of that in the future.&lt;/p&gt;&lt;p&gt;One of my recent discoveries while searching for information on some aspect of web development has been &lt;a href="http://tropicalseo.com/"&gt;http://tropicalseo.com&lt;/a&gt;. This guy has some really interesting points to make about Search Engine Optimisation, but also about aspects of web site management in general. Oh, and it probably helps that I "share the dream"!&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8824277-3561498733730121049?l=jamesfitzsimons.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jamesfitzsimons.blogspot.com/feeds/3561498733730121049/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8824277&amp;postID=3561498733730121049' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/3561498733730121049'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/3561498733730121049'/><link rel='alternate' type='text/html' href='http://jamesfitzsimons.blogspot.com/2007/02/been-busy-boy.html' title='Been a busy boy'/><author><name>James Fitzsimons</name><uri>http://www.blogger.com/profile/17804628717934024610</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8824277.post-2656290965524585908</id><published>2006-12-10T15:54:00.000Z</published><updated>2008-03-06T15:14:23.483Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='personal'/><category scheme='http://www.blogger.com/atom/ns#' term='computer vision'/><title type='text'>After a short break</title><content type='html'>On the train on the way back from a weekend in Stratford-upon-Avon and decided I have been remiss in neglecting my blog for so long. I often get overwhelmed by the pace of life in London and things like blogging seem to quickly drop of the list of priorities, however the other day while reading back over  some of my past entries I realised that it is an important record for me as well as a way of keeping in contact with distant friends and family.&lt;br /&gt;&lt;br /&gt;Anthea and I have certainly been very busy this year, and when I reflect back on what we have done this year I realise it has probably been the most social year of our lives, combined with the most travelling we have ever done - and for me at least - one of the most challenging working years of my career. I am very proud of what we have achieved this year and although I am very tired and desperately looking forward to our Christmas break I wouldn't have had it any other way. My goal now is to try and figure out how to fit more into next year!&lt;br /&gt;&lt;br /&gt;I have been neglecting my vision project over the last few months. Making small progress by picking at it whenever I've had some spare time. What hasn't helped is that a couple of months ago I decided to build a Mythtv box to record the hockey (since most of it is screened in the middle of the night). This has turned out to be a far far more challenging task than I anticipated and has consequently stolen time from my other projects. The good news is that the end is finally in sight and I will hopefully have a stable system running in the next week or two.&lt;br /&gt;&lt;br /&gt;I have spent some of this weekend reading the chapter on Structure Computation in my computer vision text. Essentially working out how to reconstruct a 3D scene from stereoscopic information. I think I understood most of it on first reading - which testifies to the fact that a lot of the revision work I have been doing on linear algebra has paid off. My plan is to implement a naive algorthim first, and once that is working refine it with an optimal (and much more challenging) solution. It is still my hope that once I have the reconstruction phase working the rest of the project will progress along very quickly. I am still amazed at how difficult the elementary concepts of computer vision are. I really had no idea of what I was getting myself into when I started this project.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8824277-2656290965524585908?l=jamesfitzsimons.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jamesfitzsimons.blogspot.com/feeds/2656290965524585908/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8824277&amp;postID=2656290965524585908' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/2656290965524585908'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/2656290965524585908'/><link rel='alternate' type='text/html' href='http://jamesfitzsimons.blogspot.com/2006/12/after-short-break.html' title='After a short break'/><author><name>James Fitzsimons</name><uri>http://www.blogger.com/profile/17804628717934024610</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8824277.post-115823704650123247</id><published>2006-09-14T12:20:00.000Z</published><updated>2008-03-06T15:14:23.483Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='computer vision'/><title type='text'>The worlds most inconsistent blogger</title><content type='html'>That's me! I just can't seem to get into the habit of blogging on a regular basis. Quite a bit has happened since my last post. I've just delivered a pretty major project at work which went well I think. It was a massive amount of work though, and really draining long days which has left me desperately in need of a holiday. Luckily Anthea and I have the next two weeks off to trip around northern Italy! We are both really looking forward to it and have been hearing amazing stories from our friends about places to visit.&lt;br /&gt;&lt;br /&gt;I have also returned to my computer vision project. I got talking about it to a mate a few weeks back and found myself getting really enthused again. Of course the reality of the situation is that it is still bloody hard work, but I am taking a much more systematic approach this time and taking more time to try and fully understand the math before coding. My first goal is to reliably find the fundamental matrix. Once I have that nailed, 3d reconstruction shouldn't be too hard.&lt;br /&gt;&lt;br /&gt;I got another LG 19" monitor this week so I now have a cool dual head setup. I'll take a pic and post it sometime soon.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8824277-115823704650123247?l=jamesfitzsimons.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jamesfitzsimons.blogspot.com/feeds/115823704650123247/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8824277&amp;postID=115823704650123247' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/115823704650123247'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/115823704650123247'/><link rel='alternate' type='text/html' href='http://jamesfitzsimons.blogspot.com/2006/09/worlds-most-inconsistent-blogger.html' title='The worlds most inconsistent blogger'/><author><name>James Fitzsimons</name><uri>http://www.blogger.com/profile/17804628717934024610</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8824277.post-115400335469190477</id><published>2006-07-27T12:21:00.000Z</published><updated>2008-03-06T15:13:03.551Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='personal'/><title type='text'>bring on the weekend</title><content type='html'>I think I've just about hit the wall. I am feeling really run down at the moment and the last couple of days I've been sick with a nasty head cold - which is odd when you consider it's about 30 degrees outside. I think this is my bodies way of telling me I need some time out. This weekend Anthea and I are planning a very quiet weekend in London. I'll probably just sit down with my book and take it easy. I might do some hacking - I'll see how I feel. I should really get my monodevelop patch finished and submitted soon.&lt;br /&gt;&lt;br /&gt;Over the last couple of days I installed a fresh copy of Ubuntu dapper on my laptop and configured xgl. Man it is really cool! I'm loving the eye candy and am thinking about how some of that cairo/opengl goodness could be used in some other apps like f-spot for example. Maybe one of these days I'll have a chance to play with it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8824277-115400335469190477?l=jamesfitzsimons.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jamesfitzsimons.blogspot.com/feeds/115400335469190477/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8824277&amp;postID=115400335469190477' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/115400335469190477'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/115400335469190477'/><link rel='alternate' type='text/html' href='http://jamesfitzsimons.blogspot.com/2006/07/bring-on-weekend.html' title='bring on the weekend'/><author><name>James Fitzsimons</name><uri>http://www.blogger.com/profile/17804628717934024610</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8824277.post-115279394179241425</id><published>2006-07-13T12:24:00.000Z</published><updated>2008-03-06T15:15:41.986Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='monodevelop'/><category scheme='http://www.blogger.com/atom/ns#' term='personal'/><title type='text'>life in the fast lane</title><content type='html'>Been a busy week so far and Anthea and I are off to Porto for the weekend tomorrow. Really looking forward to what will hopefully be a relaxing trip out of London. I'm planning on bringing back more than a couple of bottles of port as well ;-)&lt;br /&gt;&lt;br /&gt;We went to Ben Harper on Tuesday night. It was a really amazing gig and he played for 2 1/2hrs which is pretty much unheard of these days. I would definately see him again if I have the opportunity.&lt;br /&gt;&lt;br /&gt;I got some really good feed back on my MonoDevelop patch from Lluis. I got most of the bugs fixes finished on Monday evening, but he also suggested a couple of cool new features so I probably won't get the next version of the patch ready until next week now. I'm still hoping to have it submitted before I go to LugRadio live the following weekend. There's no hope of doing any work on f-spot in the near term though.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8824277-115279394179241425?l=jamesfitzsimons.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jamesfitzsimons.blogspot.com/feeds/115279394179241425/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8824277&amp;postID=115279394179241425' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/115279394179241425'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/115279394179241425'/><link rel='alternate' type='text/html' href='http://jamesfitzsimons.blogspot.com/2006/07/life-in-fast-lane.html' title='life in the fast lane'/><author><name>James Fitzsimons</name><uri>http://www.blogger.com/profile/17804628717934024610</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8824277.post-115253385457156960</id><published>2006-07-10T12:04:00.000Z</published><updated>2008-03-06T15:15:41.987Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='monodevelop'/><title type='text'>The weekends over</title><content type='html'>And all to quickly. Managed to cram a lot into the last couple of days however. Got up early on Saturday morning to watch New Zealand crush Australia in the rugby. Go the AB's! It was fun as we had a bunch of friends around and cooked up a massive feed of bacon, banana and maple syrup on French toast. &lt;br /&gt;&lt;br /&gt;Saturday afternoon I did some hacking on MonoDevelop and managed to finish my &lt;a href="http://lists.ximian.com/pipermail/monodevelop-list/attachments/20060709/d4a0b66d/attachment.bin"&gt;patch&lt;/a&gt; to add the class and method combos. I submitted that last night so will be interested to see what people think.&lt;br /&gt;&lt;br /&gt;Sunday we went to Box for the day to visit Anthea's Aunt and Uncle. It was a nice day out and good to see them. I did some hacking on f-spot on the bus on the way up and back, but all I managed to do was frustrate myself immensely. I think I need to jump on to #f-spot tonight and try and catch llewing to see if he can help.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8824277-115253385457156960?l=jamesfitzsimons.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jamesfitzsimons.blogspot.com/feeds/115253385457156960/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8824277&amp;postID=115253385457156960' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/115253385457156960'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/115253385457156960'/><link rel='alternate' type='text/html' href='http://jamesfitzsimons.blogspot.com/2006/07/weekends-over.html' title='The weekends over'/><author><name>James Fitzsimons</name><uri>http://www.blogger.com/profile/17804628717934024610</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8824277.post-115227512931525621</id><published>2006-07-07T12:10:00.000Z</published><updated>2008-03-06T15:10:56.829Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='open source'/><category scheme='http://www.blogger.com/atom/ns#' term='monodevelop'/><title type='text'>MonoDevelop hacking</title><content type='html'>Spent the last couple of evenings updating &lt;a href="http://jamesfitzsimons.blogspot.com/2005/07/its-been-while.html"&gt;some work&lt;/a&gt; I did on MonoDevelop ages ago but never got round to submitting. The internals of MonoDevelop have really changed since I first wrote my code so I had to spend a couple of hours updating it to work with the new version of MonoDevelop from SVN.&lt;br /&gt;&lt;br /&gt;I then realised that I hadn't quite got it right last time as the method combo would only show the methods the class had when the file was opened. i.e. if you added a new method it wouldn't show up in the combo until you closed and reopened the file. With some helpful pointers from &lt;a href="http://primates.ximian.com/~lluis/blog/index.php"&gt;Lluis&lt;/a&gt; on #monodevelop last night I think I have just about solved that problem by hooking into the IParseInformationChanged event. This event fires with every key stroke. With a bit of GLib.Timeout goodness to stop the combos being rebound every time the event fires we are almost there...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8824277-115227512931525621?l=jamesfitzsimons.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jamesfitzsimons.blogspot.com/feeds/115227512931525621/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8824277&amp;postID=115227512931525621' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/115227512931525621'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/115227512931525621'/><link rel='alternate' type='text/html' href='http://jamesfitzsimons.blogspot.com/2006/07/monodevelop-hacking.html' title='MonoDevelop hacking'/><author><name>James Fitzsimons</name><uri>http://www.blogger.com/profile/17804628717934024610</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8824277.post-115225866118975996</id><published>2006-07-07T07:47:00.000Z</published><updated>2006-07-07T07:51:01.246Z</updated><title type='text'>Woohoo!</title><content type='html'>&lt;a href="http://www.lugradio.org/live/2006"&gt;&lt;img src="http://lugradio.org/live/2006/siteimages/badge_imgoing1.png" alt="I'm going to LugRadio Live 2006"&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8824277-115225866118975996?l=jamesfitzsimons.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jamesfitzsimons.blogspot.com/feeds/115225866118975996/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8824277&amp;postID=115225866118975996' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/115225866118975996'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/115225866118975996'/><link rel='alternate' type='text/html' href='http://jamesfitzsimons.blogspot.com/2006/07/woohoo.html' title='Woohoo!'/><author><name>James Fitzsimons</name><uri>http://www.blogger.com/profile/17804628717934024610</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8824277.post-115201470513174445</id><published>2006-07-04T11:54:00.000Z</published><updated>2008-03-06T15:13:03.552Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='personal'/><title type='text'>ask a busy man?</title><content type='html'>Well I managed to get some hacking done over the weekend. Spent the most of the time working on my website project. I have almost finished the user management stuff now. Took me a while to get my head around getting Mono, MySql and NHibernate all playing nice togeather but I am there now. I will probably do a post on that sometime soon as there are a couple of gotchas that would have been nice to know before I started so I figure I might be able to save someone else some time. I really need to get hacking on f-spot and monodevelop though. I wanted to get the features I'm working on for those two projects submitted before I go to &lt;a href="http://www.lugradio.org/live/2006/index.php/Main_Page"&gt;Lugradio live&lt;/a&gt; and I am fast running out of time.&lt;br /&gt;&lt;br /&gt;We managed to find a new housemate over the weekend which is great. It's one less thing to worry about and she seems like a really cool person.&lt;br /&gt;&lt;br /&gt;Off to see Jet Li in Fearless tonight so I'm hoping that will be good. Anything's got to be better than the &lt;a href="http://www.sonypictures.com/homevideo/ultraviolet/index.html"&gt;worst movie ever&lt;/a&gt; which I saw last week.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8824277-115201470513174445?l=jamesfitzsimons.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jamesfitzsimons.blogspot.com/feeds/115201470513174445/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8824277&amp;postID=115201470513174445' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/115201470513174445'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/115201470513174445'/><link rel='alternate' type='text/html' href='http://jamesfitzsimons.blogspot.com/2006/07/ask-busy-man.html' title='ask a busy man?'/><author><name>James Fitzsimons</name><uri>http://www.blogger.com/profile/17804628717934024610</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8824277.post-115166980239662910</id><published>2006-06-30T12:10:00.000Z</published><updated>2008-03-06T15:13:03.552Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='personal'/><title type='text'>Looking forward to a quiet weekend</title><content type='html'>This will be the first weekend in ages that Anthea and I haven't been going away. I am really looking forward to chilling out, watching a bit of the football and maybe doing some hacking on the various projects I find myself working on these days. I also have nearly 1,000 photos from our recent trips to sort and label so that will certainly keep me busy. Perhaps it won't be such a quite weekend after all!&lt;br /&gt;&lt;br /&gt;We are in the midst of interviewing prospective new housemates at the moment. Unfortunately (for us) Kirsty has been offered an amazing job back in South Africa and so will be leaving us at the end of July. Hopefully the next person we get will be as cool and friendly as all the previous inhabitants of that room!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8824277-115166980239662910?l=jamesfitzsimons.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jamesfitzsimons.blogspot.com/feeds/115166980239662910/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8824277&amp;postID=115166980239662910' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/115166980239662910'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/115166980239662910'/><link rel='alternate' type='text/html' href='http://jamesfitzsimons.blogspot.com/2006/06/looking-forward-to-quiet-weekend.html' title='Looking forward to a quiet weekend'/><author><name>James Fitzsimons</name><uri>http://www.blogger.com/profile/17804628717934024610</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8824277.post-115138949841115974</id><published>2006-06-27T06:23:00.000Z</published><updated>2008-03-06T15:13:03.553Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='personal'/><title type='text'>back to blogging?</title><content type='html'>&lt;span style="font-size:100%;"&gt;So it's been a long time since I blogged my last entry here. If I ever did have any readers I guess they are all long gone... Life has just been sooo busy over the last few months that I haven't had time to even think about blogging let alone actually put aside 5 mins to write an entry. In fact I've done almost no hacking over that time either. Summer arrived in London with a vengence and Anthea and I have been taking full advantage with the busiest social schedule I can recall us having since we were students. We have also been doing loads of travelling with trips to Morocco, Isle of Wight, Amsterdam, Brussels, and this weekend Leeds. In fact I am actually writing this entry on the train on the way back to London. GNER have wifi on their trains now and I took full advantage of a free trial on the way up. It was very cool to be able to hack on f-spot and download a bunch of ubuntu updates for my laptop while sitting on the train to Leeds!&lt;br /&gt;&lt;br /&gt;Hopefully over the next few weeks I'll be able to find a few hours to do some hacking. I have a bunch of things on my todo list. I still want to get my compare view for f-spot finished. I have changed track on that one a little bit so hopefully with have some screen shots and a patch ready soon. I also want to rewrite my class browser patch for Monodevelop and get that submitted. I think it will be really useful and as I use Monodevelop a bunch myself these days it would be cool to be able to say that I contributed something useful to that project. I also have a website which I am building. That has a bit of a timeline but it's still a bit top secret so no more details on that just yet. Finally just for kicks I downloaded the latest version of dashboard from CVS on Saturday and built that on the train on the way up to Leeds. I really like what they are trying to do there so I might try and get involved in that project at some stage too.&lt;br /&gt;&lt;br /&gt;Not too much planned this week other than a gig on Saturday night and some friends for dinner Wednesday so we'll see, might even catch up on some sleep!&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8824277-115138949841115974?l=jamesfitzsimons.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jamesfitzsimons.blogspot.com/feeds/115138949841115974/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8824277&amp;postID=115138949841115974' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/115138949841115974'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/115138949841115974'/><link rel='alternate' type='text/html' href='http://jamesfitzsimons.blogspot.com/2006/06/back-to-blogging.html' title='back to blogging?'/><author><name>James Fitzsimons</name><uri>http://www.blogger.com/profile/17804628717934024610</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8824277.post-114391406388964856</id><published>2006-04-01T17:49:00.000Z</published><updated>2008-03-06T15:10:49.000Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='open source'/><title type='text'>Gtk# woes</title><content type='html'>Well, I have spent a decent amount of time hacking on f-spot today and have achieved exactly nothing. I have two problems to fix before the first cut of the Compare view for f-spot will be ready for review. One is a nasty problem with scroll bars not rendering correctly. I have a feeling that this is to do with the underlying ImageView class and so not something I can fix without talking to Larry Ewing about it. The second problem is I can't seem to get any events firing of the those same scroll bars so I suppose it could be somewhat related. Hopefully I will be able to catch Larry on IRC next week and sort it out.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8824277-114391406388964856?l=jamesfitzsimons.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jamesfitzsimons.blogspot.com/feeds/114391406388964856/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8824277&amp;postID=114391406388964856' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/114391406388964856'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/114391406388964856'/><link rel='alternate' type='text/html' href='http://jamesfitzsimons.blogspot.com/2006/04/gtk-woes.html' title='Gtk# woes'/><author><name>James Fitzsimons</name><uri>http://www.blogger.com/profile/17804628717934024610</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8824277.post-114354803694969708</id><published>2006-03-28T12:13:00.000Z</published><updated>2008-03-06T15:10:49.000Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='open source'/><title type='text'>f-spot compare view</title><content type='html'>&lt;a href="http://www.flickr.com/photos/93856064@N00/119002826/" title="photo sharing"&gt;&lt;img src="http://static.flickr.com/41/119002826_b9e1d15aa7_m.jpg" alt="" style="border: solid 2px #000000;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-size: 0.9em; margin-top: 0px;"&gt;&lt;a href="http://www.flickr.com/photos/93856064@N00/119002826/"&gt;f-spot compare view&lt;/a&gt; &lt;br /&gt;Originally uploaded by &lt;a href="http://www.flickr.com/people/93856064@N00/"&gt;roboguy&lt;/a&gt;.&lt;/span&gt;&lt;br clear="all" /&gt;&lt;p style=""&gt;A quick screenie of some early work on the compare view in f-spot.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8824277-114354803694969708?l=jamesfitzsimons.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jamesfitzsimons.blogspot.com/feeds/114354803694969708/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8824277&amp;postID=114354803694969708' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/114354803694969708'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/114354803694969708'/><link rel='alternate' type='text/html' href='http://jamesfitzsimons.blogspot.com/2006/03/f-spot-compare-view.html' title='f-spot compare view'/><author><name>James Fitzsimons</name><uri>http://www.blogger.com/profile/17804628717934024610</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8824277.post-114354797364271826</id><published>2006-03-28T11:39:00.000Z</published><updated>2006-03-28T12:12:53.706Z</updated><title type='text'>Hello world!</title><content type='html'>Well it's been an age since my last post and I thought it was about time I got back to blogging.&lt;br /&gt;&lt;br /&gt;The Saturday before last was the scariest day of my life as Anthea was hit by a car while out running. She is fine now, and was incredibly lucky to escape with only a serious concussion and bruising. Three days in hospital did nothing for my nerves however and needless to say I will be running with her from now on!&lt;br /&gt;&lt;br /&gt;In more geek related news I have put the vision project on hold for a bit. I just found it had got to a point where I wasn't really enjoying it anymore. I think a bit of time out and I will be in a much better frame of mind to tackle it again. Instead I have started hacking on &lt;a href="http://f-spot.org"&gt;f-spot&lt;/a&gt;. For those not in the know it is a wicked photo management application for the Gnome desktop written in C#/Gtk# and running on the mono framework. I have already submitted three small patches which have all been committed to CVS and am currently hacking on my first major piece of work implementing a "compare view" where the user can compare two or more photos. This is useful if you take a bunch of photos in burst mode, or perhaps a series of bracketed shots. I am hoping to be come a regular contributor to this project as I think it is one of the projects that will add real value to the Gnome desktop and Linux in general.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8824277-114354797364271826?l=jamesfitzsimons.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jamesfitzsimons.blogspot.com/feeds/114354797364271826/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8824277&amp;postID=114354797364271826' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/114354797364271826'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/114354797364271826'/><link rel='alternate' type='text/html' href='http://jamesfitzsimons.blogspot.com/2006/03/hello-world.html' title='Hello world!'/><author><name>James Fitzsimons</name><uri>http://www.blogger.com/profile/17804628717934024610</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8824277.post-114064348221050406</id><published>2006-02-22T21:19:00.000Z</published><updated>2008-03-06T15:14:23.484Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='computer vision'/><title type='text'>Tricky stuff</title><content type='html'>So it turns out this 3d reconstruction stuff is a lot more complicated than I initially thought. I am trying to get the essential matrix for my camera system, however I am having real trouble getting something that makes sense. I have code that produces an output, it's just wrong.&lt;br /&gt;&lt;br /&gt;It would help if I had a really good text that explained this stuff in baby language so a math retard like me could understand it but unfortunately I don't at the moment so I am doing a lot of googling. I have ordered &lt;a href="http://www.amazon.co.uk/exec/obidos/ASIN/0521540518/qid=1140643156/sr=8-1/ref=sr_8_xs_ap_i1_xgl/026-3069876-9302043"&gt;Multiple View Geometry in Computer Vision&lt;/a&gt; from Amazon as this seems to be the authoritative text, however its got a 4-6 week delivery time.&lt;br /&gt;&lt;br /&gt;Looks like this could take a while.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8824277-114064348221050406?l=jamesfitzsimons.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jamesfitzsimons.blogspot.com/feeds/114064348221050406/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8824277&amp;postID=114064348221050406' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/114064348221050406'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/114064348221050406'/><link rel='alternate' type='text/html' href='http://jamesfitzsimons.blogspot.com/2006/02/tricky-stuff.html' title='Tricky stuff'/><author><name>James Fitzsimons</name><uri>http://www.blogger.com/profile/17804628717934024610</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8824277.post-113976488684112501</id><published>2006-02-12T17:02:00.000Z</published><updated>2006-02-12T17:21:26.900Z</updated><title type='text'>A bug in the matrix - the essential matrix that is.</title><content type='html'>Well, I was really hoping that my next post regarding the my vision project would be to announce that I have phase one working correctly. Alas that is not the case. After some hard debugging over the last couple of weeks I found and fixed a number of bugs and problems.&lt;br /&gt;&lt;br /&gt;I am now much more confident in my matching between stereo images, and also in my interframe matching. I rewrote this stuff to be much more in line with the work of &lt;a href="http://citeseer.ist.psu.edu/se02mobile.html"&gt;Se et al&lt;/a&gt;. During the testing process I found a major bug in my kd-tree range search implementation which must have been having a major impact on the number of good quality matches I was getting.&lt;br /&gt;&lt;br /&gt;I find it quite difficult to test this stuff as I can't think of a good way of automating the testing of the quality of matching between images. At the moment I simply annotate the images with the SIFT feature locations and then check for matches by eye.&lt;br /&gt;&lt;br /&gt;I got really excited about a week ago when I thought I have finally cracked it and was getting reliable interframe matching and ego motion estimation. In fact I still think that for the most part it is working correctly. However, when I checked the 3d world coordinates the system was calculating for the observed features I realised they were completely wrong. Something that was in  reality 1 meter away from the center of the camera system was registering as being nearly 3 meters away, and something that was in fact over 2m away came back less than a meter. I think the problem is in the way I am calculating the disparity and I am not taking all the camera intrinsic and extrinsic parameters into account properly.&lt;br /&gt;&lt;br /&gt;To that end I am now working on calculating the essential matrix from the fundamental matrix, and then I should be able to much more accurately calculate the relative position of the observed features.&lt;br /&gt;&lt;br /&gt;Time will tell.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8824277-113976488684112501?l=jamesfitzsimons.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jamesfitzsimons.blogspot.com/feeds/113976488684112501/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8824277&amp;postID=113976488684112501' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/113976488684112501'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/113976488684112501'/><link rel='alternate' type='text/html' href='http://jamesfitzsimons.blogspot.com/2006/02/bug-in-matrix-essential-matrix-that-is.html' title='A bug in the matrix - the essential matrix that is.'/><author><name>James Fitzsimons</name><uri>http://www.blogger.com/profile/17804628717934024610</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8824277.post-113871296952062972</id><published>2006-01-31T12:52:00.000Z</published><updated>2006-01-31T13:09:29.586Z</updated><title type='text'>Update</title><content type='html'>Over a month since I last blogged and a lot has happened. Anthea and I went for a weekend in Germany just prior to Christmas which was great. We had a fantastic time with great hospitality and interesting Christmas markets to explore. &lt;br /&gt;&lt;br /&gt;Christmas day we left for our 2 week trip in India. India is an experience more than a holiday. We had a great time but it was hard work at times as well. I'm not looking forward to sorting and naming the 500 odd photos we took while we were there but as soon as it's done I'll put them up on my site and post a link from here.&lt;br /&gt;&lt;br /&gt;I was sick for the first week back after our trip. Delhi belly strikes again! I have almost fully recovered now, but still feel a little off colour now and again.&lt;br /&gt;&lt;br /&gt;I finally managed to get some time to return to my vision project in the last week or so and have made some progress, although I think I will save that for another post.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8824277-113871296952062972?l=jamesfitzsimons.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jamesfitzsimons.blogspot.com/feeds/113871296952062972/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8824277&amp;postID=113871296952062972' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/113871296952062972'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/113871296952062972'/><link rel='alternate' type='text/html' href='http://jamesfitzsimons.blogspot.com/2006/01/update.html' title='Update'/><author><name>James Fitzsimons</name><uri>http://www.blogger.com/profile/17804628717934024610</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8824277.post-113468518107332214</id><published>2005-12-15T22:02:00.000Z</published><updated>2005-12-15T22:26:51.643Z</updated><title type='text'>A screen shot for your viewing pleasure</title><content type='html'>Tonight I managed to get a clunky little UI working. It took a bit of work as it calls out to a C library I wrote via interop. The UI was designed using Glade and uses the Gtk widget set. It's so easy to build decent GUI applications using the Glade/Gtk/mono combination in no time at all. If I had a choice I would love to develop in Gtk instead of winforms in professional life too! &lt;br /&gt;&lt;br /&gt;So, here's the screen shot:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.jamesfitzsimons.com/images/SiftSlam.jpg"&gt;&lt;img src="http://www.jamesfitzsimons.com/images/SiftSlam.jpg" width="400" height="200"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The text you can see next to the buttons is the Fundamental matrix calculated for the chess board points found in the stereo image pair. The UI needs a bunch more work, but it's really only a test harness and a debugging tool for me while I get the application working properly. Once the system is put on a real mobile platform it won't have any GUI interface.&lt;br /&gt;&lt;br /&gt;The next step is to test if the epipolar constraints I was talking about in my last post actually improved the accuracy of the matching process.&lt;br /&gt;&lt;br /&gt;Anthea and I are off to Germany tomorrow to visit some friends and see some Christmas markets. Should be a great time and hopefully I might find some good photo opportunities too.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8824277-113468518107332214?l=jamesfitzsimons.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jamesfitzsimons.blogspot.com/feeds/113468518107332214/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8824277&amp;postID=113468518107332214' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/113468518107332214'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/113468518107332214'/><link rel='alternate' type='text/html' href='http://jamesfitzsimons.blogspot.com/2005/12/screen-shot-for-your-viewing-pleasure.html' title='A screen shot for your viewing pleasure'/><author><name>James Fitzsimons</name><uri>http://www.blogger.com/profile/17804628717934024610</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8824277.post-113447946171845855</id><published>2005-12-13T12:32:00.000Z</published><updated>2005-12-13T13:11:01.763Z</updated><title type='text'>Slow progress</title><content type='html'>The epipolar geometry turned out to be much harder than I anticipated. I now have enough of it done to be able to check the epipolar constraint successfully. I am now in the process of reworking my stereo matching algorithm to include the epipolar constraint along with disparity, orientation, scale and uniqueness constraints. I'm hoping this will improve my matching algorithm and reduce any false positives. That in turn should improve my localisation accuracy as there will be fewer outliers and less error to minimise.&lt;br /&gt;&lt;br /&gt;It's been pretty hard to find time to work on this stuff recently as we have been so busy socially. I guess it's that time of year with Christmas parties, catching up with friends etc. We are going to Germany this weekend and are off to India for two weeks from the 25th of Dec so I won't really get time to do any decent hacking on this for the next month or so. I am really hoping that I have enough of the pieces in place that I'll be able to make some good progress in the new year and actually be able to report some reasonable results.&lt;br /&gt;&lt;br /&gt;I have been doing a little bit of reading about FPGA design lately and am getting quite excited about that stage of the project. I expect that will be immensely difficult but should be quite interesting too.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8824277-113447946171845855?l=jamesfitzsimons.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jamesfitzsimons.blogspot.com/feeds/113447946171845855/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8824277&amp;postID=113447946171845855' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/113447946171845855'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/113447946171845855'/><link rel='alternate' type='text/html' href='http://jamesfitzsimons.blogspot.com/2005/12/slow-progress.html' title='Slow progress'/><author><name>James Fitzsimons</name><uri>http://www.blogger.com/profile/17804628717934024610</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8824277.post-113326826481151092</id><published>2005-11-29T12:27:00.000Z</published><updated>2005-11-29T12:44:24.866Z</updated><title type='text'>Moving forward again</title><content type='html'>I'm finally making progress on my Vision project again. After spending a couple of months trying to figure out how to do nonlinear least squares minimisation I think it is now working. I still have quite a bit of testing to do before I am sure it is giving sensible results but so far it looks good. I couldn't have gotten this working without the tireless help of Robin Hewitt who (via the Seattle Robotics Society mailing list) coached me through the process.&lt;br /&gt;&lt;br /&gt;I have now returned to the beginning of the project again. Before I go any further I have decided to rework what I have done so far. My understand of computer vision concepts has come a long way since I started this project and I am sure I can improve my original code.&lt;br /&gt;&lt;br /&gt;To that end I am writing a camera calibration application that will more accurately calibrate my camera system. This program will be able to calculate the intrinsic parameters of each camera and save and load these parameters from file. It will also be able to calculate the essential matrix of the stereo system and hence will be enable me to far more accurately match SIFT features as I will be able to include the epipolar constraint which I am currently not using. &lt;br /&gt;&lt;br /&gt;I am hoping this calibration work will have a drastic improvement on the accuracy of the system, but only time will tell I guess.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8824277-113326826481151092?l=jamesfitzsimons.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jamesfitzsimons.blogspot.com/feeds/113326826481151092/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8824277&amp;postID=113326826481151092' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/113326826481151092'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/113326826481151092'/><link rel='alternate' type='text/html' href='http://jamesfitzsimons.blogspot.com/2005/11/moving-forward-again.html' title='Moving forward again'/><author><name>James Fitzsimons</name><uri>http://www.blogger.com/profile/17804628717934024610</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8824277.post-113105766790588625</id><published>2005-11-03T22:36:00.000Z</published><updated>2005-11-03T22:41:07.906Z</updated><title type='text'>Finally back to hacking</title><content type='html'>Finally managed to get an hour or so of hacking in tonight. I'm trying to figure out how to use the nonlinear least squares minimisation in the GNU Scientific Library. It's pretty tricky and I think it may take a while before I get it sussed out.&lt;br /&gt;&lt;br /&gt;I'm hoping to get some time to finish hacking on my changes to the SourceEditorDisplayBinding class in MonoDevelop. This will add the drop down select boxes for jumping to a method definition in code.&lt;br /&gt;Maybe I might get some time for this on Sunday...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8824277-113105766790588625?l=jamesfitzsimons.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jamesfitzsimons.blogspot.com/feeds/113105766790588625/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8824277&amp;postID=113105766790588625' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/113105766790588625'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/113105766790588625'/><link rel='alternate' type='text/html' href='http://jamesfitzsimons.blogspot.com/2005/11/finally-back-to-hacking.html' title='Finally back to hacking'/><author><name>James Fitzsimons</name><uri>http://www.blogger.com/profile/17804628717934024610</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8824277.post-113084993896273815</id><published>2005-11-01T19:15:00.000Z</published><updated>2005-11-03T22:36:14.536Z</updated><title type='text'>So very busy</title><content type='html'>Had a great time in Berlin last weekend. It wasn't really what I expected and the really famous sites (check point charlie, Brandenburg gate) left me a bit disappointed. We did see a lot of neat stuff though and we really lucky with the weather. The highlight of the weekend was probably the Berlin Dom which was very cool. &lt;br /&gt;&lt;br /&gt;The trip was also the first time I had used my new Sigma 28-200mm lens for my SLR. I found it a real pleasure to use and am really looking forward to seeing what the photos are like. The films should be developed this week so I hope to get some photos up on the website by early next week.&lt;br /&gt;&lt;br /&gt;Life is still extremely busy and I haven't had a chance to do any hacking for ages. Doesn't look like this week will provide too many opportunites with me busy nearly every night!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8824277-113084993896273815?l=jamesfitzsimons.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jamesfitzsimons.blogspot.com/feeds/113084993896273815/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8824277&amp;postID=113084993896273815' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/113084993896273815'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/113084993896273815'/><link rel='alternate' type='text/html' href='http://jamesfitzsimons.blogspot.com/2005/11/so-very-busy.html' title='So very busy'/><author><name>James Fitzsimons</name><uri>http://www.blogger.com/profile/17804628717934024610</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8824277.post-113010033754709284</id><published>2005-10-23T20:02:00.000Z</published><updated>2005-10-24T07:47:09.600Z</updated><title type='text'>Photograpy is hard</title><content type='html'>I got my first lot of photos developed to day since I started using my Canon SLR again. I have been doing heaps of reading and trying to learn as much as I can about photography in the last few weeks. I've decided to finally get serious about something that I have had a bit of a side interest in for years. It turns out that taking good photographs is a lot more difficult than I thought!&lt;br /&gt;&lt;br /&gt;I shot a couple of rolls of film over the last couple of weekends playing around with exposure priority, apeture priority, and various other settings on my camera. Pretty much every photo sucks. It has been a lesson in humility and I can see that this will take some practice!&lt;br /&gt;&lt;br /&gt;I've put a couple of photos up on my web site, mostly so people will have something to refer back to in time to come and be able to see how much I have improved ;-)&lt;br /&gt;&lt;br /&gt;Here they are:&lt;br /&gt;&lt;a href="http://www.jamesfitzsimons.com/bmx.html"&gt;&lt;img src="http://www.jamesfitzsimons.com/images/photography/bike.jpg" width="200" height="150" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.jamesfitzsimons.com/bubbles.html"&gt;&lt;img src="http://www.jamesfitzsimons.com/images/photography/bubbles.jpg" width="200" height="150" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.jamesfitzsimons.com/train.html"&gt;&lt;img src="http://www.jamesfitzsimons.com/images/photography/train.jpg" width="200" height="150" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;There are various things wrong with all of them. The most obvious being the photo of the underground train being very blurry but I like it anyway. I intend to retake that shot once I have my new tripod in a month or so. &lt;br /&gt;&lt;br /&gt;I got the films processed and digitally scanned at Jessops and am not very happy with the results. I realise these aren't the greatest photos, but the quality is quite grainy and I know my camera and the kodak film I was using produce better results than this. Next time I think I'll try Snappy Snaps as I hear they are pretty good.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8824277-113010033754709284?l=jamesfitzsimons.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jamesfitzsimons.blogspot.com/feeds/113010033754709284/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8824277&amp;postID=113010033754709284' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/113010033754709284'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/113010033754709284'/><link rel='alternate' type='text/html' href='http://jamesfitzsimons.blogspot.com/2005/10/photograpy-is-hard.html' title='Photograpy is hard'/><author><name>James Fitzsimons</name><uri>http://www.blogger.com/profile/17804628717934024610</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8824277.post-112997099778552614</id><published>2005-10-22T08:28:00.000Z</published><updated>2005-10-22T08:49:57.856Z</updated><title type='text'>My blog is stale - but the website's updated</title><content type='html'>&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:verdana;"&gt;Well, I haven't written anything now for over a month. I very occasionally get technology overload. It's funny when it happens as it is the thing that I am probably most passionate about, but like all good things it is possible to have too much of it. I just find that after coming home from work the last thing I feel like doing is more coding or tinkering with photos in the &lt;a style="font-family: verdana;" href="http://www.gimp.org/"&gt;Gimp&lt;/a&gt;&lt;span style="font-family:verdana;"&gt; or anything that requires too much thinking. I pretty much revert to couch potato status and watch lots of TV, or surf the web as that can be pretty brainless as well ;-)&lt;br /&gt;&lt;br /&gt;Anyway, the latest bout is over and I am gaining enthusiasm to get started again on some of my projects. I have been well and truly stuck on my vision project for a while so it's time to sit down and nut out this problem and start moving forward again. There's also been a new release of &lt;a style="font-family: verdana;" href="http://www.monodevelop.com/"&gt;MonoDevelop&lt;/a&gt; and I am pretty keen to tidy up some work I did a while back and get it submitted.&lt;br /&gt;&lt;br /&gt;I have finally managed to update the website with our Scotland photos (many months after our actual trip!). So head over to &lt;a style="font-family: verdana;" href="http://www.jamesfitzsimons.com/"&gt;www.jamesfitzsimons.com&lt;/a&gt; and check them out.&lt;br /&gt;&lt;br /&gt;We are off to Berlin next Friday so I'll probably have more photos to post soon. I dug my Canon SLR out while I was at home and finally learning how to use it properly. So, the next lot of photos will be a little different as they will have been taken on film using a much more sophisticated camera, and hopefully with slightly better technique!&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8824277-112997099778552614?l=jamesfitzsimons.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jamesfitzsimons.blogspot.com/feeds/112997099778552614/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8824277&amp;postID=112997099778552614' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/112997099778552614'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/112997099778552614'/><link rel='alternate' type='text/html' href='http://jamesfitzsimons.blogspot.com/2005/10/my-blog-is-stale-but-websites-updated.html' title='My blog is stale - but the website&apos;s updated'/><author><name>James Fitzsimons</name><uri>http://www.blogger.com/profile/17804628717934024610</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8824277.post-112655892825810356</id><published>2005-09-12T20:44:00.000Z</published><updated>2005-09-12T21:02:08.263Z</updated><title type='text'>All packed and ready to go!</title><content type='html'>&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:verdana;"&gt;Well, looks like we are all packed for our trip back to New Zealand. I reckon it will take us about 36hrs door to door so am already looking forward to getting there. I have all the important things like my laptop sorted so I can do some hacking on the plane on the way over. This is when I wish I had one of those laptops with a 5-6 hr battery life instead of the measly 2hrs I'll probably get from mine.&lt;br /&gt;&lt;br /&gt;I can't wait to get home now!&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8824277-112655892825810356?l=jamesfitzsimons.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jamesfitzsimons.blogspot.com/feeds/112655892825810356/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8824277&amp;postID=112655892825810356' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/112655892825810356'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/112655892825810356'/><link rel='alternate' type='text/html' href='http://jamesfitzsimons.blogspot.com/2005/09/all-packed-and-ready-to-go.html' title='All packed and ready to go!'/><author><name>James Fitzsimons</name><uri>http://www.blogger.com/profile/17804628717934024610</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8824277.post-112601181563309083</id><published>2005-09-06T12:17:00.000Z</published><updated>2005-09-06T14:34:55.270Z</updated><title type='text'>Loads more work and a good weekend</title><content type='html'>&lt;span style="font-family:verdana;font-size:85%;"&gt;I really need to post more often! &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;I now think I understand where the errors come from that I discussed in my last post. From what I have read, I am trying to use SVD as if I am doing a rigid body transformation - which I'm not. The fact that I am using a linear method to try and find errors in a nonlinear system means that I am getting a less exact answer than I would like.&lt;br /&gt;&lt;br /&gt;As a result I've spent the last week trying to understand how nonlinear least squares minimisation works. With the help of some great people on the Seattle Robotics Society mailing list I think I am now getting a handle on it. The next step is trying to figure out the practical application of the mathematical theory to my work. This mostly entails trying to decipher how to call the appropriate functions in the GNU Scientific Library.&lt;br /&gt;&lt;br /&gt;I also figured out that there should be no error accumulation. That was due to my misunderstanding of how the ego motion is calculated. I was transforming my SIFT feature coordinates to world coordinates one step too early and was accidentally cumulating the error over each subsequent frame.&lt;br /&gt;&lt;br /&gt;Hopefully with the fix to the latter problem and the incorporation of a nonlinear method to calculate the ego motion I should be getting much more accurate results.&lt;br /&gt;&lt;br /&gt;In other news, I had a great weekend watching NZ win the Tri-nations with an exciting win over Australia. Had a great BBQ at our place on Saturday night. And to top it all off, watched my Hockey team gain a convincing win in their first game of the season (GO RACERS!) ;-) &lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8824277-112601181563309083?l=jamesfitzsimons.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jamesfitzsimons.blogspot.com/feeds/112601181563309083/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8824277&amp;postID=112601181563309083' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/112601181563309083'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/112601181563309083'/><link rel='alternate' type='text/html' href='http://jamesfitzsimons.blogspot.com/2005/09/loads-more-work-and-good-weekend.html' title='Loads more work and a good weekend'/><author><name>James Fitzsimons</name><uri>http://www.blogger.com/profile/17804628717934024610</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8824277.post-112492100840027263</id><published>2005-08-24T21:45:00.000Z</published><updated>2005-08-25T13:45:51.763Z</updated><title type='text'>Tantalizingly close</title><content type='html'>&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:verdana;"&gt;So close and yet so far. That is how it feels at the moment. I found the bug I mentioned in the last post, and had hoped would be the last piece of the puzzle before I had camera ego motion calculations working, but it wasn't to be.&lt;br /&gt;&lt;br /&gt;I now have a problem with the build up of error over consecutive frames. My sanity check to see if ego motion calculation is working is to run the system completely stationary ( the only option at the moment anyway ). Therefore the ego motion calculation between frames should render a 0, 0, 0, 0 result. i.e No movement in any of the 3 spatial dimensions and no rotation. Unfortunately I am getting results that look more like this after one iteration:&lt;br /&gt;-----------------------------------------&lt;br /&gt;New position after ego motion estimation:&lt;br /&gt;X = -0.044358336825996&lt;br /&gt;Y = 0.025654321647698&lt;br /&gt;Z = -0.003337081060976&lt;br /&gt;Theta = 0.431281320335258&lt;br /&gt;&lt;br /&gt;Obviously subsequent iterations compound this error and it quickly spirals out of control.&lt;br /&gt;&lt;br /&gt;Now I realise in the real system there will be the odometery feeding into this and the odometery and ego motion will be combined in a kalman filter to get the actual estimated motion. In this way the accumulative error won't matter so much as it will be dampened by the odometery each iteration.&lt;br /&gt;&lt;br /&gt;My concern is that this error is far too big to start off with. I can accept (and was expecting) some error between frames, but in the above example the system believes it has moved 4cm to the left. 4cm is too much. What I have to do now is identify the source of this error. I suspect it may be something to do with excessive accuracy in the SIFT feature 3d position calculations. Any error between calculated feature locations could be being exacerbated by the least squares minimisation. That at least is my uneducated guess at this point. More investigation will hopefully shed some light on this issue. &lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8824277-112492100840027263?l=jamesfitzsimons.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jamesfitzsimons.blogspot.com/feeds/112492100840027263/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8824277&amp;postID=112492100840027263' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/112492100840027263'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/112492100840027263'/><link rel='alternate' type='text/html' href='http://jamesfitzsimons.blogspot.com/2005/08/tantalizingly-close.html' title='Tantalizingly close'/><author><name>James Fitzsimons</name><uri>http://www.blogger.com/profile/17804628717934024610</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8824277.post-112471194661871115</id><published>2005-08-22T11:21:00.000Z</published><updated>2005-08-22T11:59:06.636Z</updated><title type='text'>Nearly there ?</title><content type='html'>&lt;span style="font-family:verdana;font-size:85%;"&gt;At the risk of jinxing myself completely I think I am nearly at the point where my vision system is correctly calculating camera ego motion! Now if that didn't make you excited it should because it is very very cool.&lt;br /&gt;&lt;br /&gt;I managed to spend a bit of time hacking on the weekend and made a huge amount of progress. Now that I have identified what I suspect (but haven't yet confirmed) are libsifts short comings and moved to using Lowe's example binary to extract SIFT features things are starting to work. The matching algorithm I was using to match features between stereo images and between frames was also a bit broken, so I ported Lowe's example matching algorithm from C to C# and that greatly improved matching performance. So now I have one bug to squash and ego motion calculations will be working. I'm pretty sure I know where the problem lies so hopefully I'll get that nailed in the next day or two.&lt;br /&gt;&lt;br /&gt;At that point I will have one remaining task before I can declare phase one complete. I still have to figure out how to use the camera extrinsic parameters to give more accuracy to the stereo triangulation calculations. At that point the system will be able to accurately build a map of SIFT features observed in it's environment, and simultaneously localise itself within that environment.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8824277-112471194661871115?l=jamesfitzsimons.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jamesfitzsimons.blogspot.com/feeds/112471194661871115/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8824277&amp;postID=112471194661871115' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/112471194661871115'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/112471194661871115'/><link rel='alternate' type='text/html' href='http://jamesfitzsimons.blogspot.com/2005/08/nearly-there.html' title='Nearly there ?'/><author><name>James Fitzsimons</name><uri>http://www.blogger.com/profile/17804628717934024610</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8824277.post-112448896217913359</id><published>2005-08-19T21:48:00.000Z</published><updated>2005-08-19T22:02:42.186Z</updated><title type='text'>Break through! ...Sort of</title><content type='html'>&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:verdana;"&gt;Well, about Wednesday night I was looking at the output of one of the sift annotated images from my vision system and I finally snapped. It just looked wrong. It had been bothering me for a while that it didn't seem to be selecting very interesting features and taking an unreasonable amount of interest in the bedroom wall, so I broke out the example binary provided by Professor Lowe himself (the inventor of the SIFT algorithm) for comparison.&lt;br /&gt;&lt;br /&gt;As I suspected running the two SIFT implementations against identical images yielded completely different results. Lowe's implementation finding many more and far more interesting features than the version I had been using for months.&lt;br /&gt;&lt;br /&gt;This discovery was simultaneously bad and good news. Bad in that it meant I had a bunch of work to do, but good in that I had finally discovered the source of all my frustration.&lt;br /&gt;&lt;br /&gt;My new plan of attack has been to write a bunch of C# code to invoke Lowe's binary out of process and parse the resulting key file back into my program. It's all a bit messy really but this whole project is still just a proof of concept so I'm not too stressed about performance at the moment. There is no doubt in my mind at all that C# is magnitudes slower than C for this sort of work, but development time is significantly less and for a prototype that's what matters.&lt;br /&gt;&lt;br /&gt;I still have a bunch of work to do before I fully understand stereo vision and the associated camera calibration requirements but I am getting there. &lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8824277-112448896217913359?l=jamesfitzsimons.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jamesfitzsimons.blogspot.com/feeds/112448896217913359/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8824277&amp;postID=112448896217913359' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/112448896217913359'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/112448896217913359'/><link rel='alternate' type='text/html' href='http://jamesfitzsimons.blogspot.com/2005/08/break-through-sort-of.html' title='Break through! ...Sort of'/><author><name>James Fitzsimons</name><uri>http://www.blogger.com/profile/17804628717934024610</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8824277.post-112404315984989526</id><published>2005-08-14T17:40:00.000Z</published><updated>2005-08-14T18:12:42.450Z</updated><title type='text'>Trying to find the motivation...</title><content type='html'>&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: verdana;"&gt;It's been ages since I did any work on my vision project and I find myself struggling to find the motivation. I have been stuck on a tricky problem for a while now and I think I need a breakthrough to get some interest back. The problem is that the calculations I am using to calculate the real world 3d coordinates of features are giving completely nonsensical answers. I am having trouble establishing whether the formulas I am using are wrong, or if the feature matching isn't working properly and I am trying to work out pose information for a bad stereo feature match...&lt;br /&gt;&lt;br /&gt;If only I could find a site on the web somewhere that had a definitive discussion of calculating real world 3d coordinates from stereo images that would at least help discount the first option.&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8824277-112404315984989526?l=jamesfitzsimons.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jamesfitzsimons.blogspot.com/feeds/112404315984989526/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8824277&amp;postID=112404315984989526' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/112404315984989526'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/112404315984989526'/><link rel='alternate' type='text/html' href='http://jamesfitzsimons.blogspot.com/2005/08/trying-to-find-motivation.html' title='Trying to find the motivation...'/><author><name>James Fitzsimons</name><uri>http://www.blogger.com/profile/17804628717934024610</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8824277.post-112358877509092788</id><published>2005-08-09T11:46:00.000Z</published><updated>2005-08-09T20:41:50.226Z</updated><title type='text'>Back from holiday and Go NASA!</title><content type='html'>&lt;span style="font-family:verdana;font-size:85%;"&gt;Well, I have just returned from the most fantastic holiday in the Scottish highlands. If anyone is thinking of heading up there and doing a tour I can definitely recommend MacBackpackers and if you can get on a tour lead by Colin even better! I will try an get photos up on&lt;br /&gt;&lt;a href="http://www.jamesfitzsimons.com"&gt;http://www.jamesfitzsimons.com&lt;/a&gt; as soon as possible.&lt;br /&gt;&lt;br /&gt;I have been following the Discovery return to flight mission with great interest. I have always been a bit of a space nut, but this mission really caught my attention partly because of the test flight nature of it I guess. I think NASA are absolutely fantastic and don't get anywhere near the recognition or funding the deserve in spite of the rubbish the media would have you believe. To prove a point, here are a few interesting figures I found with a quick bit of googling:&lt;br /&gt;&lt;br /&gt;2005 NASA budget $16.2 billion&lt;br /&gt;2005 military budget $400.1 billion&lt;br /&gt;Cost (to US) of war in Iraq $314 billion&lt;br /&gt;US GDP 2005 $11,750 billion&lt;br /&gt;&lt;br /&gt;So, NASA gets 0.14 % of the US GDP or put another way, 4% of what the US spends on it's military.&lt;br /&gt;&lt;br /&gt;Pretty sad.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8824277-112358877509092788?l=jamesfitzsimons.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jamesfitzsimons.blogspot.com/feeds/112358877509092788/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8824277&amp;postID=112358877509092788' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/112358877509092788'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/112358877509092788'/><link rel='alternate' type='text/html' href='http://jamesfitzsimons.blogspot.com/2005/08/back-from-holiday-and-go-nasa.html' title='Back from holiday and Go NASA!'/><author><name>James Fitzsimons</name><uri>http://www.blogger.com/profile/17804628717934024610</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8824277.post-112189370461204343</id><published>2005-07-20T20:53:00.000Z</published><updated>2005-07-20T21:08:24.616Z</updated><title type='text'>It's been a while</title><content type='html'>&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: verdana;"&gt;So it's been a while since I posted. I've been pretty busy with life and work over the last few weeks. A lot has happened since the bombings here in London, but I still find myself thinking about them alot.&lt;br /&gt;&lt;br /&gt;We had a great weekend in the sunshine last weekend. London put on a great day on Saturday and we had an awesome picnic in Battersea park as a bit of a farewell to a couple of our housemates who are moving on.&lt;br /&gt;&lt;br /&gt;I've been busy hacking too. I have been working on some new functionality for MonoDevelop and hope to get that incorporated into the next release. I have more ideas but lack the time. You can see some of the efforts of my recent hacking in this picture. The drop down on the left above the source window displays all the classes in the current file, the expanded drop down on the right displays all the members, properties and methods. Selecting one of these will jump you to the appropriate location in source.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.jamesfitzsimons.com/images/monodevelop.jpg"&gt;&lt;img src="http://www.jamesfitzsimons.com/images/monodevelop.jpg" height="150" width="200" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I'm also hoping to get some time to get back to hacking on my vision project which I have neglected for far to long now.&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8824277-112189370461204343?l=jamesfitzsimons.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jamesfitzsimons.blogspot.com/feeds/112189370461204343/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8824277&amp;postID=112189370461204343' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/112189370461204343'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/112189370461204343'/><link rel='alternate' type='text/html' href='http://jamesfitzsimons.blogspot.com/2005/07/its-been-while.html' title='It&apos;s been a while'/><author><name>James Fitzsimons</name><uri>http://www.blogger.com/profile/17804628717934024610</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8824277.post-112073066352169971</id><published>2005-07-07T10:02:00.000Z</published><updated>2005-07-07T10:04:23.526Z</updated><title type='text'>I am scared but ok.</title><content type='html'>&lt;span style="font-family:verdana;font-size:85%;"&gt;If any of my family are checking this blog, I am fine. &lt;br /&gt;&lt;br /&gt;No phone contact right now. Will call as soon as the lines start working again.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8824277-112073066352169971?l=jamesfitzsimons.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jamesfitzsimons.blogspot.com/feeds/112073066352169971/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8824277&amp;postID=112073066352169971' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/112073066352169971'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/112073066352169971'/><link rel='alternate' type='text/html' href='http://jamesfitzsimons.blogspot.com/2005/07/i-am-scared-but-ok.html' title='I am scared but ok.'/><author><name>James Fitzsimons</name><uri>http://www.blogger.com/profile/17804628717934024610</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8824277.post-111995756722037999</id><published>2005-06-28T11:01:00.000Z</published><updated>2005-06-28T11:19:27.236Z</updated><title type='text'>Website updated!</title><content type='html'>&lt;span style="font-family:verdana;font-size:85%;"&gt;It would appear hell must have frozen over because I have finally managed to update &lt;a href="http://www.jamesfitzsimons.com"&gt;www.jamesfitzsimons.com&lt;/a&gt; with our last few trips worth of travel photos!&lt;br /&gt;&lt;br /&gt;While I was at it I decided to pretty it up a little bit, and add slightly more functionality around viewing the photos. I also tried reducing the size and quality of the "large" versions of the photos in an effort to get the pages a little lighter for those on slow connections. It's still not flash but it works ;-)&lt;br /&gt;&lt;br /&gt;Any comments or suggestions let me know!&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8824277-111995756722037999?l=jamesfitzsimons.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jamesfitzsimons.blogspot.com/feeds/111995756722037999/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8824277&amp;postID=111995756722037999' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/111995756722037999'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/111995756722037999'/><link rel='alternate' type='text/html' href='http://jamesfitzsimons.blogspot.com/2005/06/website-updated.html' title='Website updated!'/><author><name>James Fitzsimons</name><uri>http://www.blogger.com/profile/17804628717934024610</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8824277.post-111893130907451752</id><published>2005-06-16T13:49:00.000Z</published><updated>2005-06-17T17:46:05.703Z</updated><title type='text'>Cause I'm impatient</title><content type='html'>&lt;span style="font-family:verdana;font-size:85%;"&gt;I thought I'd post a few links to some panoramic photos I have made of our trip to Seville. I haven't had the time to update the traveling section on &lt;a href="http://www.jamesfitzsimons.com"&gt;www.jamesfitzsimons.com&lt;/a&gt; yet, so these are just a bit of a teaser.&lt;br /&gt;&lt;br /&gt;I'm actually pretty impressed by how well these panoramas turned out. There are some bad color matches which are due to the source photos being taken in automatic mode on our camera. I have since learned you need to take the source photos in manual mode so you can get consistent lighting across all the images. I had to manually re-color them for these panoramas so that's why they aren't matched very well.&lt;br /&gt;&lt;br /&gt;Anyway, here they are (click on the image below for the full size version)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.jamesfitzsimons.com/temp/bullring.jpg"&gt;&lt;img src="http://www.jamesfitzsimons.com/temp/bullring.jpg" width="256" height="66"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.jamesfitzsimons.com/temp/zahara.jpg"&gt;&lt;img src="http://www.jamesfitzsimons.com/temp/zahara.jpg" width="256" height="77"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.jamesfitzsimons.com/temp/plaza-de-espana.jpg"&gt;&lt;img src="http://www.jamesfitzsimons.com/temp/plaza-de-espana.jpg" width="256" height="74"&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8824277-111893130907451752?l=jamesfitzsimons.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jamesfitzsimons.blogspot.com/feeds/111893130907451752/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8824277&amp;postID=111893130907451752' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/111893130907451752'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/111893130907451752'/><link rel='alternate' type='text/html' href='http://jamesfitzsimons.blogspot.com/2005/06/cause-im-impatient.html' title='Cause I&apos;m impatient'/><author><name>James Fitzsimons</name><uri>http://www.blogger.com/profile/17804628717934024610</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8824277.post-111886968900985916</id><published>2005-06-15T20:32:00.000Z</published><updated>2005-06-15T21:08:09.036Z</updated><title type='text'>It's the debugging that's the killer</title><content type='html'>&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:verdana;"&gt;I've tons of fun over the last few days trying to debug my vision system. To be fair I haven't really spent that much time on it yet, but it is a fairly complicated system and trying to guess which features in the image the computer is interested in and why is a bit of a challenge. To make things easier I have been trying to annotate the images as the feature detection process runs and save them to disk so I can analyse them later. It's required the wrapping of more functionality of the opencv library so yet more fun with marshalling and P/Invoke!&lt;br /&gt;&lt;br /&gt;The other thing that maybe complicating matters is that I'm not sure how well the SIFT detection works in low light conditions and since I do all my hacking in the evening...&lt;br /&gt;&lt;br /&gt;Maybe a bit of dedicated hacking this weekend will help.&lt;br /&gt;&lt;br /&gt;In other news I am off to see Billy Corgan tomorrow night so am getting really amped for that!&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8824277-111886968900985916?l=jamesfitzsimons.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jamesfitzsimons.blogspot.com/feeds/111886968900985916/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8824277&amp;postID=111886968900985916' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/111886968900985916'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/111886968900985916'/><link rel='alternate' type='text/html' href='http://jamesfitzsimons.blogspot.com/2005/06/its-debugging-thats-killer.html' title='It&apos;s the debugging that&apos;s the killer'/><author><name>James Fitzsimons</name><uri>http://www.blogger.com/profile/17804628717934024610</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8824277.post-111798204229616336</id><published>2005-06-05T14:06:00.000Z</published><updated>2005-06-06T11:38:10.866Z</updated><title type='text'>Adiós Gentoo... Hello Ubuntu!</title><content type='html'>&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:verdana;"&gt;Well, I my computers are now a gentoo free zone. I had an epiphany of sorts a week or two ago when I did an emerge sync and saw a million updates (amongst which was kde for about the billionth time in only a few weeks) and I found myself letting out a rather large sigh. I suddenly realised I was spending far longer on administrative tasks on my computer than I was actually using them! This could not go on, it was time for action and so I decided to try out a new distro with a binary update mechanism - no more compiling everything from source for me!&lt;br /&gt;&lt;br /&gt;I looked at Novel Linux Desktop, and if it hadn't been for the 50USD price tag I would have tried it, but instead I decided to give Ubuntu a go. I thought I would try installing the new distro on my laptop first, as the laptop install is the acid test of any distro, and I didn't want to nuke my desktop (my primary machine) until I was really sure about my choice.&lt;br /&gt;&lt;br /&gt;While trying to backup my gentoo install for my laptop I accidentally deleted /etc ...well no going back now! I stuck in the Ubuntu cd and in about 1/2 an hour I had a beautiful new ubuntu/gnome desktop. Within one evening of use I realised I had to make the upgrade to my desktop as soon as possible.&lt;br /&gt;&lt;br /&gt;The upgrade to my desktop went pretty smoothly. I was trying to be too smart for my own good to start off with, fearing that because of my complicated software RAID setup the installer wouldn't cope, but after messing round for a couple of hours I finally gave up and in frustration just stuck the install cd in and the ubuntu installer sailed through, auto detecting all my RAID partitions correctly and the install was very straight forward.&lt;br /&gt;&lt;br /&gt;I can't recommend Ubuntu enough. Everything just works, installing new software is a snap, and most ironically of all even when packages aren't available installing software from source seems to be less problematic than Gentoo!&lt;br /&gt;&lt;br /&gt;Don't get me wrong now. I'm not bashing Gentoo here. I like that distro, and have learnt so much about linux in the last couple of years while using it, but now I am basking in the happy glow that my ubuntu is giving me and I won't be looking back!&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8824277-111798204229616336?l=jamesfitzsimons.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jamesfitzsimons.blogspot.com/feeds/111798204229616336/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8824277&amp;postID=111798204229616336' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/111798204229616336'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/111798204229616336'/><link rel='alternate' type='text/html' href='http://jamesfitzsimons.blogspot.com/2005/06/adis-gentoo-hello-ubuntu.html' title='Adiós Gentoo... Hello Ubuntu!'/><author><name>James Fitzsimons</name><uri>http://www.blogger.com/profile/17804628717934024610</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8824277.post-111688271978050076</id><published>2005-05-23T21:08:00.000Z</published><updated>2005-05-23T21:12:56.496Z</updated><title type='text'>Website updates</title><content type='html'>&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: verdana;"&gt;Just uploaded a bunch of updates to &lt;/span&gt;&lt;a style="font-family: verdana;" href="http://www.jamesfitzsimons.com/"&gt;www.jamesfitzsimons.com&lt;/a&gt;&lt;span style="font-family: verdana;"&gt; tonight. There are a few new travelling pages including our trips to Wales, Oxford and Oslo. I will be putting up our Prague photos soon (once I label them!) and will no doubt be taking a bunch of pics this weekend in Seville so keep an eye out for more updates in the near future.&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8824277-111688271978050076?l=jamesfitzsimons.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jamesfitzsimons.blogspot.com/feeds/111688271978050076/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8824277&amp;postID=111688271978050076' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/111688271978050076'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/111688271978050076'/><link rel='alternate' type='text/html' href='http://jamesfitzsimons.blogspot.com/2005/05/website-updates.html' title='Website updates'/><author><name>James Fitzsimons</name><uri>http://www.blogger.com/profile/17804628717934024610</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8824277.post-111679641532441019</id><published>2005-05-22T21:00:00.000Z</published><updated>2005-05-22T21:13:35.330Z</updated><title type='text'>Episode III and ... Success!</title><content type='html'>&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: verdana;"&gt;Well, it's been a pretty good weekend and I've just got home from Episode III - Revenge of the Sith, which I can report is actually quite good and grateful departure from the rubbish that has been Episodes I and II. Hayden Christensen manages to display slightly more emotion than a block of wood in this movie, and the final scenes as he makes his transition to become Lord Vader are really quite cool.&lt;br /&gt;&lt;br /&gt;I can happily report that I have finally cracked the rotation problem that has been holding me up on the vision system. I can now estimate camera ego motion between frames which is a vital part of the SLAM process. Hopefully some time this week I will have the system actually running properly with the two cameras and prove that it all works.&lt;br /&gt;&lt;br /&gt;Anthea and I are off to Seville this coming weekend so I should go start learning some spanish... adiós!&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8824277-111679641532441019?l=jamesfitzsimons.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jamesfitzsimons.blogspot.com/feeds/111679641532441019/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8824277&amp;postID=111679641532441019' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/111679641532441019'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/111679641532441019'/><link rel='alternate' type='text/html' href='http://jamesfitzsimons.blogspot.com/2005/05/episode-iii-and-success.html' title='Episode III and ... Success!'/><author><name>James Fitzsimons</name><uri>http://www.blogger.com/profile/17804628717934024610</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8824277.post-111627844031512744</id><published>2005-05-16T21:06:00.000Z</published><updated>2005-05-16T21:20:40.320Z</updated><title type='text'>Fun weekend but still stuck</title><content type='html'>&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:verdana;"&gt;Anthea and I had a fun weekend with a trip to Leads castle and some wine tasting at the oldest winery in Kent (yeah, apparently the English make wine ;-) leads castle was great. It has really beautiful grounds and the castle itself is very pretty and we managed to conquer the maze which was fun. They also had about 20 or so birds of prey sitting out on their perches waiting for the falconry display at 1:30 (which we missed unfortunately) and it was really cool to see some of these magnificent birds up close.&lt;br /&gt;&lt;br /&gt;I received a little parcel from Amazon on Friday. I've finally got my second camera so should be doing real stereo vision soon. I am still COMPLETELY stuck on deriving the rotation from two sets of points using least squares however. I have a set of 3d co-ordinates which represent a set of features observed at time t1, and then I have another set of 3d co-ordinates which represent the same features at time t2. What I am trying to do is establish the translation and rotation of the camera platform between time t1 and t2. The translation is easy, but the rotation is giving me a real headache! I know I need to use a least squares minimisation, but the actual implementation escapes me. It is getting pretty annoying now too as this has held me up for a couple of weeks now. In the unlikely event that anyone reading this knows how to do this can you please contact me!&lt;br /&gt;&lt;br /&gt;Ah well, back to reading Math world and my perpetual state of confusion :-/&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8824277-111627844031512744?l=jamesfitzsimons.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jamesfitzsimons.blogspot.com/feeds/111627844031512744/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8824277&amp;postID=111627844031512744' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/111627844031512744'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/111627844031512744'/><link rel='alternate' type='text/html' href='http://jamesfitzsimons.blogspot.com/2005/05/fun-weekend-but-still-stuck.html' title='Fun weekend but still stuck'/><author><name>James Fitzsimons</name><uri>http://www.blogger.com/profile/17804628717934024610</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8824277.post-111537958586007886</id><published>2005-05-06T11:39:00.000Z</published><updated>2005-05-10T20:53:28.833Z</updated><title type='text'>What a nice greyling you've got!</title><content type='html'>&lt;a title="photo sharing" href="http://www.flickr.com/photos/93856064@N00/12540520/"&gt;&lt;img style="border: 2px solid rgb(0, 0, 0);" alt="" src="http://photos8.flickr.com/12540520_e7dd64eb09_m.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;span style=";font-family:verdana;font-size:85%;"  &gt;Just thought I'd post this one for the folks at home to prove that we are getting outdoors occationally ;-)&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8824277-111537958586007886?l=jamesfitzsimons.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jamesfitzsimons.blogspot.com/feeds/111537958586007886/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8824277&amp;postID=111537958586007886' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/111537958586007886'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/111537958586007886'/><link rel='alternate' type='text/html' href='http://jamesfitzsimons.blogspot.com/2005/05/what-nice-greyling-youve-got.html' title='What a nice greyling you&apos;ve got!'/><author><name>James Fitzsimons</name><uri>http://www.blogger.com/profile/17804628717934024610</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8824277.post-111532980546539683</id><published>2005-05-05T21:48:00.000Z</published><updated>2005-05-05T21:50:05.476Z</updated><title type='text'>Interesting article on online extortion</title><content type='html'>&lt;a href="http://www.csoonline.com/read/050105/extortion.html"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: verdana;"&gt;http://www.csoonline.com/read/050105/extortion.html&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: verdana;"&gt;It's long, but really interesting...&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8824277-111532980546539683?l=jamesfitzsimons.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jamesfitzsimons.blogspot.com/feeds/111532980546539683/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8824277&amp;postID=111532980546539683' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/111532980546539683'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/111532980546539683'/><link rel='alternate' type='text/html' href='http://jamesfitzsimons.blogspot.com/2005/05/interesting-article-on-online.html' title='Interesting article on online extortion'/><author><name>James Fitzsimons</name><uri>http://www.blogger.com/profile/17804628717934024610</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8824277.post-111479071418115798</id><published>2005-04-29T11:10:00.000Z</published><updated>2005-05-03T15:53:26.716Z</updated><title type='text'>Nasty little ASP.NET 401 problem</title><content type='html'>&lt;span style="font-family:verdana;font-size:85%;"&gt;I discovered this nasty little problem the other day while building a couple of simple little pages and I thought I should post it so I don't forget and waste ages on it again!&lt;br /&gt;&lt;br /&gt;Essentially the issue is that if you have custom error pages for different types of http status codes such as 401, 403 or 404 then you will have be prepared to do a little bit coding for your 401 page to be displayed unlike your other error pages which you can automatically redirect to by turning on customErrors in the web.config file like so:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&amp;lt;customErrors mode="Off" defaultRedirect="Error.htm" &amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;error statusCode="403" redirect="AccessDenied.htm"/&amp;gt;&lt;br /&gt;&amp;lt;/customErrors&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;The problem with 401 is that if you are using the web.config authorisation section as well, and you have explicitly denied the user permission then their request will be authenticated but not authorised and appears to be terminated before the ASP.NET custom error handler can run. For example:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&amp;lt;location path="MySecurePage.aspx"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;system.web&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;authorization&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;allow users="james" /&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;deny users="*" /&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/authorization&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/system.web&amp;gt;&lt;br /&gt;&amp;lt;/location&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;Here the only way to redirect your user to your custom error page will be to check for this condition in the application_end event in the global.asax like so:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;protected void Application_EndRequest(Object sender, EventArgs e)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (Response.StatusCode == 401 &amp;&amp;amp; Request.IsAuthenticated == true)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Response.ClearContent();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Response.Redirect("AccessDenied.htm");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;Note: trying to set your custom 401 page in IIS won't work either as user is authenticated by IIS, but their authorisation fails at the ASP.NET level&lt;br /&gt;&lt;br /&gt;Nasty!&lt;br /&gt;&lt;br /&gt;Thanks to &lt;a href="http://moollan.net/blog/archive/2005/04/08/4.aspx"&gt;Ashraf Moollan&lt;/a&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8824277-111479071418115798?l=jamesfitzsimons.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jamesfitzsimons.blogspot.com/feeds/111479071418115798/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8824277&amp;postID=111479071418115798' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/111479071418115798'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/111479071418115798'/><link rel='alternate' type='text/html' href='http://jamesfitzsimons.blogspot.com/2005/04/nasty-little-aspnet-401-problem.html' title='Nasty little ASP.NET 401 problem'/><author><name>James Fitzsimons</name><uri>http://www.blogger.com/profile/17804628717934024610</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8824277.post-111435645018916787</id><published>2005-04-24T15:03:00.000Z</published><updated>2005-04-24T15:27:30.190Z</updated><title type='text'>Some productive hacking</title><content type='html'>&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:verdana;"&gt;Over the weekend I have made a pretty decent amount of progress with my vision project. I have created a simulated stereo system by taking images with the camera on the left hand side, moving the camera and then taking images of the same scene from the right hand side. I then load these images from disk simultaneously to simulate the effect of having two cameras. Hopefully I will get my other camera soon as this solution won't work for long.&lt;br /&gt;&lt;br /&gt;I am now at the point where I can match features between the stereo images and extract depth information from the stereo nature of the images. I have also completed the matrix mathematics that will give an estimate of the image coordinates of a given feature in the next frame given the camera translation between frames. This last bit of work was a bit challenging as it required me to relearn a bunch of linear algebra and trigonometry which I hadn't used since University.&lt;br /&gt;&lt;br /&gt;My next challenge is to use least squares minimisation on the features successfully matched between frames to find the error between the projected feature location and the actual feature location. This will then feed back into the camera location calculations as a sort of error term. I am thinking I may even use a kalman filter to integrate the robot odometry and calculated camera ego motion.&lt;br /&gt;&lt;br /&gt;I still have a long way to go before this prototype is finished and I know whether the system will even work or not, but it is pretty exciting to be able to do what I have already accomplished!&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8824277-111435645018916787?l=jamesfitzsimons.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jamesfitzsimons.blogspot.com/feeds/111435645018916787/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8824277&amp;postID=111435645018916787' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/111435645018916787'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/111435645018916787'/><link rel='alternate' type='text/html' href='http://jamesfitzsimons.blogspot.com/2005/04/some-productive-hacking.html' title='Some productive hacking'/><author><name>James Fitzsimons</name><uri>http://www.blogger.com/profile/17804628717934024610</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8824277.post-111391282186810660</id><published>2005-04-19T11:41:00.000Z</published><updated>2005-04-20T07:52:36.626Z</updated><title type='text'>Mono and Monodevelop - state of the nation</title><content type='html'>&lt;span style="font-family:verdana;font-size:85%;"&gt;I installed the new builds of mono and monodevelop last week and having used them a little over the last couple of days I can say they are pretty neat so far.&lt;br /&gt;&lt;br /&gt;I haven't used any of the new features in mono (since 1.1.4) but it does seem to be a little faster, and also fixed a nagging problem I had where everytime I rebooted my machine I had to delete my ~/.wapi directory before I could build/run any mono application.&lt;br /&gt;&lt;br /&gt;Monodevelop is looking a little more polished since the 5.1 release. It also runs on 64bit native mono at last which I am totally stoked about! I also installed a (experimental) plugin for svn integration that had been posted to the monodevelop mailing list and this looks promising, although the history functionality crashes monodevelop on my machine (I suspect this may be to do with the version of svnlib I have installed). My only complaints at the moment are that it is a little unstable and seems to crash unexpectly (I'm planning to figure this out and submit a bug report at some stage), and the lack of C# 2.0 syntax support. I am using generics pretty heavily in my current project and including this syntax totally breaks code completion. &lt;br /&gt;&lt;br /&gt;Monodevelop is a pretty promising IDE and a great project which I would love to contribute to, if only I had a little more time!&lt;br /&gt;&lt;br /&gt;In slightly unrelated geekage, I finally got round to setting up some samba shares on my home network last weekend. So now my house mates can all stream mp3s, video etc from my machine via the wifi network. It's pretty cool having Linux, Mac and Windows machines all interoperating nicely togeather!&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8824277-111391282186810660?l=jamesfitzsimons.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jamesfitzsimons.blogspot.com/feeds/111391282186810660/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8824277&amp;postID=111391282186810660' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/111391282186810660'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/111391282186810660'/><link rel='alternate' type='text/html' href='http://jamesfitzsimons.blogspot.com/2005/04/mono-and-monodevelop-state-of-nation.html' title='Mono and Monodevelop - state of the nation'/><author><name>James Fitzsimons</name><uri>http://www.blogger.com/profile/17804628717934024610</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8824277.post-111377647064205669</id><published>2005-04-17T22:03:00.000Z</published><updated>2005-04-17T22:21:10.643Z</updated><title type='text'>I wish weekends were three days long...</title><content type='html'>&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:verdana;"&gt;Well, it's Sunday night and I really wish that weekends were three days long. I could really do with just one more day off this weekend. I feel like I haven't had a decent break in ages and need a bit of relaxing and unwinding time. Most of the travelling Anthea and I do is pretty full on and not much time for relaxing so I haven't really had a break since Christmas and beginning to feel a bit flat.&lt;br /&gt;&lt;br /&gt;Had a few little wins over the weekend and am feeling pretty happy about it. I finally seem to have my xdaIIi syncing with Evolution properly. I am using SynCE and multisync to sync my Evo contacts, task list and calendar. It seems like a pretty solid setup now. I think my initial problems were down to some faulty partnerships I created while trying to set everything up.&lt;br /&gt;&lt;br /&gt;I also managed to get a bit of solid hacking done on my Vision project this weekend. I don't really have any visable results to show for my efforts, but I know I am making progress. Hard to explain to your significant other that you are really excited because you've finally figured out how to calculate the intrinsic matrix for your camera and undistort images ;-)&lt;br /&gt;&lt;br /&gt;I also managed to get some of the translation and rotation matrix multiplication working. Well actually it's still untested as of yet, but it compiles and runs. I am rapidly approaching the point where I am going to need to get the other camera now so I can do proper stereo. I was holding off purchasing until I was sure I was going to be able to get the first one working correctly with opencv and mono and have now reached the point where I am pretty happy with it.&lt;br /&gt;&lt;br /&gt;Anthea and I went for a huge walk around Hyde park in the sun today. It's amazing the change in Londoners when spring rolls round and the sun comes out. I'm sure half of London was in the park playing frisbee or walking the dog or playing with the kids, and it's really nice to see so many people out and enjoying themselves.&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8824277-111377647064205669?l=jamesfitzsimons.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jamesfitzsimons.blogspot.com/feeds/111377647064205669/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8824277&amp;postID=111377647064205669' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/111377647064205669'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/111377647064205669'/><link rel='alternate' type='text/html' href='http://jamesfitzsimons.blogspot.com/2005/04/i-wish-weekends-were-three-days-long.html' title='I wish weekends were three days long...'/><author><name>James Fitzsimons</name><uri>http://www.blogger.com/profile/17804628717934024610</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8824277.post-111296800875574013</id><published>2005-04-08T12:57:00.000Z</published><updated>2005-04-08T13:46:48.756Z</updated><title type='text'>Gmail is cool</title><content type='html'>&lt;span style="font-family:verdana;font-size:85%;"&gt;Ok, I have to say it, &lt;/span&gt;&lt;a href="http://gmail.google.com"&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;gmail&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt; is really great. I wasn't a big fan of the whole conversation thing when I first started using it but now I love it to bits.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8824277-111296800875574013?l=jamesfitzsimons.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jamesfitzsimons.blogspot.com/feeds/111296800875574013/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8824277&amp;postID=111296800875574013' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/111296800875574013'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/111296800875574013'/><link rel='alternate' type='text/html' href='http://jamesfitzsimons.blogspot.com/2005/04/gmail-is-cool.html' title='Gmail is cool'/><author><name>James Fitzsimons</name><uri>http://www.blogger.com/profile/17804628717934024610</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8824277.post-111218839179371422</id><published>2005-03-30T12:08:00.000Z</published><updated>2005-03-30T13:13:11.796Z</updated><title type='text'>Never enough time</title><content type='html'>&lt;span style="font-family:verdana;font-size:85%;"&gt;So I haven't blogged in ages. I have been pretty busy with various things, but unfortunately haven't been able to make much progress on my Vision system lately.&lt;br /&gt;&lt;br /&gt;Anthea and I spent 4 days in Prague over the Easter break which was cool. It is a really beautiful city if you can get past the hordes of tourists. Also not quite as cheap as people make out either. I am planning to put photos up on the website soon (I know, you've heard that before!).&lt;br /&gt;&lt;br /&gt;Finally got my new phone last week, an &lt;a href="http://www.my-xda.com/xda2i.html"&gt;xdaIIi&lt;/a&gt;. Very cool device and I'm loving it so far. Had a bit of fun last night trying to build synce to get it syncing with linux. Unfortunately synce and all its dependancies are hard masked for amd64 on Gentoo, so I had to build it all in my 32bit chroot and am going to try running all the 32bit binaries with linux32 from my 64bit environment. I got as far as creating a serial connection last night and that worked so I think this strategy might just succeed.&lt;br /&gt;&lt;br /&gt;Am going to see Neil and Tim Finn in concert at the Royal Albert hall tonight, so won't have a chance to push on any further with the vision system. I am struggling with the opencv calibration routines at the moment. I need to use these to extract my cameras intrinsic parameters, focal length etc, but it is proving very difficult so far. Hopefully some dedicated hacking this week/weekend will see some progress.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8824277-111218839179371422?l=jamesfitzsimons.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jamesfitzsimons.blogspot.com/feeds/111218839179371422/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8824277&amp;postID=111218839179371422' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/111218839179371422'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8824277/posts/default/111218839179371422'/><link rel='alternate' type='text/html' href='http://jamesfitzsimons.blogspot.com/2005/03/never-enough-time.html' title='Never enough time'/><author><name>James Fitzsimons</name><uri>http://www.blogger.com/profile/17804628717934024610</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
