<?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-3146715479304210434</id><updated>2011-11-21T20:38:43.858+10:00</updated><title type='text'>NoPrivateParts</title><subtitle type='html'>Your private parts (and privacy): you can't hide them, you can't protect them and most of the time they are blowing in the wind for others to see without you even realising it. (Oh, and everyone is out to get you - to complete the paranoia). Musings by Simon.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://noprivateparts.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3146715479304210434/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://noprivateparts.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Simon</name><uri>http://www.blogger.com/profile/03508362113620473623</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>19</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-3146715479304210434.post-5404293602350918998</id><published>2011-07-28T22:32:00.000+10:00</published><updated>2011-07-28T22:32:01.955+10:00</updated><title type='text'>The Scrum Guide 2011... snap!</title><content type='html'>During a 30 minute spike today on UI blocks, the discussion wound around to...&lt;br /&gt;&lt;blockquote&gt;Couldn't the "developers" implement some of the BDD steps?&lt;/blockquote&gt;&lt;blockquote&gt;&lt;i&gt;Well the "testers" do that.&lt;/i&gt;&lt;/blockquote&gt;&lt;blockquote&gt;Oh... Well we're accruing quite a bit of debt from the rough UI we have at the moment. Couldn't the "developers" work on the UI/UX?&lt;/blockquote&gt;&lt;blockquote&gt;&lt;i&gt;Well the "business analysts" and "UI experts" do that.&amp;nbsp;&lt;/i&gt;&lt;/blockquote&gt;It seems very, very odd when you think about it. It also seems to run counter to some pretty basic scrum principals. I was going to let it slide, but then I saw there's been an update to &lt;a href="http://www.scrum.org/scrumguides/"&gt;The Scrum Guide (2011)&lt;/a&gt;.There have been a few refinements made to the document, they are &lt;a href="http://www.scrum.org/storage/Scrum%20Update%202011.pdf"&gt;listed in the summary page&lt;/a&gt;.&amp;nbsp;Have a read, it's very easy to follow. There's a few gem's on page 6 (some paragraphs removed)...&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;b&gt;The Development Team&lt;/b&gt;&lt;br /&gt;Development Teams are structured and empowered by the organization to organize and&amp;nbsp;manage their own work. The resulting synergy optimizes the Development Team’s overall&amp;nbsp;efficiency and effectiveness. Development Teams have the following characteristics:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;They are self-organizing. &lt;b&gt;&lt;i&gt;No one&lt;/i&gt;&lt;/b&gt; (not even the Scrum Master)&lt;b&gt;&lt;i&gt; tells the Development Team&amp;nbsp;how to turn Product Backlog into Increments of potentially releasable functionality&lt;/i&gt;&lt;/b&gt;;&amp;nbsp;&lt;/li&gt;&lt;li&gt;Development Teams are cross-functional, with all of the skills as a team necessary to create&amp;nbsp;a product Increment;&amp;nbsp;&lt;/li&gt;&lt;li&gt;Scrum recognizes &lt;b&gt;&lt;i&gt;no titles for Development Team members other than Developer&lt;/i&gt;&lt;/b&gt;.&amp;nbsp;Regardless of the work being performed by the person, &lt;b&gt;&lt;i&gt;there are no exceptions to this rule&lt;/i&gt;&lt;/b&gt;;&lt;/li&gt;&lt;li&gt;Individual Development Team members may have specialized skills and areas of focus, but&amp;nbsp;accountability belongs to the Development Team as a whole; and,&lt;/li&gt;&lt;li&gt;Development Teams&lt;b&gt;&lt;i&gt; do not contain sub-teams dedicated to particular domains like testing&amp;nbsp;or business analysis&lt;/i&gt;&lt;/b&gt;.&lt;/li&gt;&lt;/ul&gt;&lt;/blockquote&gt;At the risk of getting all high and mighty, shouting "you're doing it all wrong!" or "the book says you're not allowed to do that!"; which obviously&amp;nbsp;achieves&amp;nbsp;nothing, and irritates a lot. I've been trying the gentler "as part of improvements for next sprint, what could we do to become a more &lt;i&gt;cross functional&lt;/i&gt; team?" approach in our sprint retro.&lt;br /&gt;&lt;br /&gt;We shall see...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3146715479304210434-5404293602350918998?l=noprivateparts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://noprivateparts.blogspot.com/feeds/5404293602350918998/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3146715479304210434&amp;postID=5404293602350918998' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3146715479304210434/posts/default/5404293602350918998'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3146715479304210434/posts/default/5404293602350918998'/><link rel='alternate' type='text/html' href='http://noprivateparts.blogspot.com/2011/07/scrum-guide-2011-snap.html' title='The Scrum Guide 2011... snap!'/><author><name>Simon</name><uri>http://www.blogger.com/profile/03508362113620473623</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-3146715479304210434.post-630399926737773889</id><published>2011-07-14T21:17:00.000+10:00</published><updated>2011-07-14T21:17:46.157+10:00</updated><title type='text'>He said: "What do you think of my manifesto?"</title><content type='html'>&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-gycNZatLwAk/Th7Puh3amOI/AAAAAAAAADs/3nfrHTjLfLM/s1600/agile-manifesto1.gif" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="240" src="http://4.bp.blogspot.com/-gycNZatLwAk/Th7Puh3amOI/AAAAAAAAADs/3nfrHTjLfLM/s400/agile-manifesto1.gif" width="400" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;&lt;a href="http://en.wikipedia.org/wiki/Agile_Manifesto#Agile_Manifesto"&gt;Agile Manifesto&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;I said:&lt;br /&gt;&lt;blockquote&gt;&lt;b&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;"I like your manifesto, I'll put it to the testo"&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;/blockquote&gt;&lt;br /&gt;Alas, the room fell silent when I said that. There might have also been a&amp;nbsp;tumble weed, I'm not sure.&lt;br /&gt;&lt;br /&gt;Apparently&amp;nbsp;agile project management frameworks are a little more popular than old Irish punk bands. Oh well...&lt;br /&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-IpgXt9kZRc8/Th7PqDgUQ6I/AAAAAAAAADo/LhjcTUFjnmA/s1600/sultans-of-ping-fc-wheres-me-jumper-divine.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="315" src="http://1.bp.blogspot.com/-IpgXt9kZRc8/Th7PqDgUQ6I/AAAAAAAAADo/LhjcTUFjnmA/s320/sultans-of-ping-fc-wheres-me-jumper-divine.jpg" width="320" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;&lt;a href="http://en.wikipedia.org/wiki/The_Sultans_of_Ping_FC"&gt;Sultans of Ping FC&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3146715479304210434-630399926737773889?l=noprivateparts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://noprivateparts.blogspot.com/feeds/630399926737773889/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3146715479304210434&amp;postID=630399926737773889' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3146715479304210434/posts/default/630399926737773889'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3146715479304210434/posts/default/630399926737773889'/><link rel='alternate' type='text/html' href='http://noprivateparts.blogspot.com/2011/07/he-said-what-do-you-think-of-my.html' title='He said: &quot;What do you think of my manifesto?&quot;'/><author><name>Simon</name><uri>http://www.blogger.com/profile/03508362113620473623</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://4.bp.blogspot.com/-gycNZatLwAk/Th7Puh3amOI/AAAAAAAAADs/3nfrHTjLfLM/s72-c/agile-manifesto1.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3146715479304210434.post-6221942810994536277</id><published>2011-07-13T22:23:00.000+10:00</published><updated>2011-07-13T22:23:13.720+10:00</updated><title type='text'>Samba server is easy... Samba domain login is, err, tedious...</title><content type='html'>&lt;b&gt;Server = easy&lt;/b&gt;&lt;br /&gt;To get a samba server up and running (as a PDC or just a file share), is easy peasy...&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="https://help.ubuntu.com/10.04/serverguide/C/samba-fileserver.html"&gt;https://help.ubuntu.com/10.04/serverguide/C/samba-fileserver.html&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;Four steps - two really, since you are really just:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;editing &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;/etc/smb.conf&lt;/span&gt;&lt;/li&gt;&lt;li&gt;restarting the daemons&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;b&gt;Client = hard&lt;/b&gt;&lt;/div&gt;&lt;div&gt;Ahh, but getting another Ubuntu desktop to authenticate to the Samba PDC like a regular dumb Windows box -- now that's a pain in the ass. If you are using &lt;a href="http://en.wikipedia.org/wiki/Active_directory"&gt;Active Directory&lt;/a&gt;, you can cheat and use &lt;a href="http://www.likewise.com/products/likewise_open"&gt;Likewise Open&lt;/a&gt;. But I'm not, so I have to wade through&amp;nbsp;&lt;a href="http://www.clearfoundation.com/docs/howtos/add_linux_workstation_to_the_samba_domain"&gt;http://www.clearfoundation.com/docs/howtos/add_linux_workstation_to_the_samba_domain&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I mean it works and all, and I'm grateful for the help -- but really:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;editing &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;/etc/smb.conf&lt;/span&gt;&lt;/li&gt;&lt;li&gt;manually creating &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;/home&lt;/span&gt; folders&lt;/li&gt;&lt;li&gt;editing &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;/etc/nsswitch.conf&lt;/span&gt;&lt;/li&gt;&lt;li&gt;blowing away (yikes!) &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;/etc/pam.d/common-account&lt;/span&gt;&lt;/li&gt;&lt;li&gt;blowing away &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;/etc/pam.d/common-auth&lt;/span&gt;&lt;/li&gt;&lt;li&gt;editing &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;/etc/pam.d/common-password&lt;/span&gt;&lt;/li&gt;&lt;li&gt;editing&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt; /etc/pam.d/common-session&lt;/span&gt;&lt;/li&gt;&lt;li&gt;reboots&lt;/li&gt;&lt;li&gt;editing &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;/etc/sudoers&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;Come on, really, couldn't that be a &lt;i&gt;little&lt;/i&gt;&amp;nbsp;easier?&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Even the pretty "Ubuntu Software Center" was less than helpful...&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-m7KJCeKQN4w/Th2NOMzEhuI/AAAAAAAAADk/4b2V8LrvNZc/s1600/Capture.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="435" src="http://4.bp.blogspot.com/-m7KJCeKQN4w/Th2NOMzEhuI/AAAAAAAAADk/4b2V8LrvNZc/s640/Capture.PNG" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Which to the novice end users pretty much means:&lt;/div&gt;&lt;blockquote&gt;Well we installed it like you asked -- but you're on your own from here. Go wade through &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;man&lt;/span&gt; pages why&amp;nbsp;don't&amp;nbsp;you...&lt;/blockquote&gt;&lt;br /&gt;Oh well, on the plus side -- the (lengthy) steps outlined above do result in domain+single-sign-on goodness for my Ubuntu desktops. So I'll probably forget the installation experience sucked.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3146715479304210434-6221942810994536277?l=noprivateparts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://noprivateparts.blogspot.com/feeds/6221942810994536277/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3146715479304210434&amp;postID=6221942810994536277' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3146715479304210434/posts/default/6221942810994536277'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3146715479304210434/posts/default/6221942810994536277'/><link rel='alternate' type='text/html' href='http://noprivateparts.blogspot.com/2011/07/samba-server-is-easy-samba-domain-login.html' title='Samba server is easy... Samba domain login is, err, tedious...'/><author><name>Simon</name><uri>http://www.blogger.com/profile/03508362113620473623</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://4.bp.blogspot.com/-m7KJCeKQN4w/Th2NOMzEhuI/AAAAAAAAADk/4b2V8LrvNZc/s72-c/Capture.PNG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3146715479304210434.post-1358586659571891781</id><published>2011-06-01T22:07:00.000+10:00</published><updated>2011-06-01T22:07:10.681+10:00</updated><title type='text'>Linker? What's a linker?</title><content type='html'>For better or worse (mainly worse), I had to dip back into some "retro" development recently.&lt;br /&gt;&lt;br /&gt;I'm talkin' 1998...&lt;br /&gt;&lt;br /&gt;I'm talkin'...&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Cher - &lt;a href="http://en.wikipedia.org/wiki/Believe_(Cher_song)"&gt;Believe&lt;/a&gt;&amp;nbsp;- &lt;b&gt;yikes!&lt;/b&gt;&lt;/li&gt;&lt;li&gt;Aerosmith - &lt;a href="http://en.wikipedia.org/wiki/I_Don%27t_Want_to_Miss_a_Thing"&gt;I Don't Want to Miss a Thing&lt;/a&gt;&amp;nbsp;- &lt;b&gt;ewwwwww!&lt;/b&gt;&lt;/li&gt;&lt;li&gt;Celine Dion - &lt;a href="http://en.wikipedia.org/wiki/My_Heart_Will_Go_On"&gt;My Heart Will Go On&lt;/a&gt;&amp;nbsp;- &lt;b&gt;my ears! they burn! they burn!&lt;/b&gt;&lt;/li&gt;&lt;li&gt;Run DMC vs Jason Nevins - &lt;a href="http://en.wikipedia.org/wiki/It%27s_Like_That_(Run-D.M.C._song)"&gt;It's Like That&lt;/a&gt; - actually, that one's not bad I suppose...&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;I'm talkin'.... &lt;a href="http://en.wikipedia.org/wiki/Visual_Basic"&gt;Visual Basic 6&lt;/a&gt;...&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So wallowing in the fun that ensues from supporting 12 year old technology, a&amp;nbsp;colleague&amp;nbsp;asked about a particular build error spat out of the command line:&lt;/div&gt;&lt;blockquote&gt;&lt;span class="Apple-style-span" style="color: #666666; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px;"&gt;LINK : fatal error LNK1104: cannot open file&amp;nbsp;xxxx.lib&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;div&gt;and then, shortly after...&lt;/div&gt;&lt;blockquote&gt;Linker? What's a linker?&lt;/blockquote&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Oh dear. I have been using the .&lt;a href="http://en.wikipedia.org/wiki/Common_Language_Runtime"&gt;Net CLR&lt;/a&gt; for way too long. It's been around for over 10 years now, and the idea of having to manually resolve external symbols, reallocate addresses and "bake" libraries into a single executable is now totally foreign.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Oh well, at least I can enjoy some sweet '98 tunes while I lament the loss of static linking...&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;FYI: a linker &lt;a href="http://en.wikipedia.org/wiki/Linker_(computing)"&gt;is like that&lt;/a&gt; and that's the way it is...&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-lUJCiEuMdRA/TeYqkg9Dh9I/AAAAAAAAADg/ILOWpKjkeZc/s1600/200px-Linker.svg.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/-lUJCiEuMdRA/TeYqkg9Dh9I/AAAAAAAAADg/ILOWpKjkeZc/s1600/200px-Linker.svg.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3146715479304210434-1358586659571891781?l=noprivateparts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://noprivateparts.blogspot.com/feeds/1358586659571891781/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3146715479304210434&amp;postID=1358586659571891781' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3146715479304210434/posts/default/1358586659571891781'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3146715479304210434/posts/default/1358586659571891781'/><link rel='alternate' type='text/html' href='http://noprivateparts.blogspot.com/2011/06/linker-whats-linker.html' title='Linker? What&apos;s a linker?'/><author><name>Simon</name><uri>http://www.blogger.com/profile/03508362113620473623</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://4.bp.blogspot.com/-lUJCiEuMdRA/TeYqkg9Dh9I/AAAAAAAAADg/ILOWpKjkeZc/s72-c/200px-Linker.svg.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3146715479304210434.post-2497354139419376996</id><published>2011-06-01T21:32:00.000+10:00</published><updated>2011-06-17T01:46:09.813+10:00</updated><title type='text'>BDD?</title><content type='html'>&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;Feature: Acceptance Testing&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;In order to spend more time doing the things I enjoy&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp; &amp;nbsp; As a developer&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp; &amp;nbsp; I want to spend less time remembering to run a set of tedious manual tests&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp; &amp;nbsp; Scenario: Feature Testing&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Given I have worked out how to test a new feature&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;When I complete the new feature, passing the test&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Then I should be able to move on to something more interesting, safe in the knowledge the feature is tested, correct and complete&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp; &amp;nbsp; Scenario: Regression Testing&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Given I have implemented a feature&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;When I complete testing the first time&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Then I should never have to do it again, via dull tests for regressions&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-1eLbyatuvxA/TeYi00Az-nI/AAAAAAAAADc/VIJGVk7PdTg/s1600/gherkin.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="200" src="http://4.bp.blogspot.com/-1eLbyatuvxA/TeYi00Az-nI/AAAAAAAAADc/VIJGVk7PdTg/s200/gherkin.jpg" width="153" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3146715479304210434-2497354139419376996?l=noprivateparts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://noprivateparts.blogspot.com/feeds/2497354139419376996/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3146715479304210434&amp;postID=2497354139419376996' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3146715479304210434/posts/default/2497354139419376996'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3146715479304210434/posts/default/2497354139419376996'/><link rel='alternate' type='text/html' href='http://noprivateparts.blogspot.com/2011/06/bdd.html' title='BDD?'/><author><name>Simon</name><uri>http://www.blogger.com/profile/03508362113620473623</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://4.bp.blogspot.com/-1eLbyatuvxA/TeYi00Az-nI/AAAAAAAAADc/VIJGVk7PdTg/s72-c/gherkin.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3146715479304210434.post-8334159803158028405</id><published>2011-05-20T17:52:00.000+10:00</published><updated>2011-05-20T17:52:30.007+10:00</updated><title type='text'>Ubuntu 11.04 install is, err, quick...</title><content type='html'>&lt;a href="http://4.bp.blogspot.com/-vXabAxmwKgQ/TdYZ-UDOazI/AAAAAAAAADU/HnS_N-9rfEw/s1600/Install+the+operating+system.jpg" imageanchor="1" style="clear: left; display: inline !important; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="240" src="http://4.bp.blogspot.com/-vXabAxmwKgQ/TdYZ-UDOazI/AAAAAAAAADU/HnS_N-9rfEw/s320/Install+the+operating+system.jpg" width="320" /&gt;&lt;/a&gt;Kind of a follow up to my &lt;a href="http://noprivateparts.blogspot.com/2010/11/after-month-living-with-gnome-i-dont.html"&gt;last post on using a VM to run Ubuntu &lt;/a&gt;for all my desktop stuff. I freshened it up to 11.04, and the installer required all of (and I did actually count them) 6 clicks. It's been a while since I've done a Windows install, but I'm pretty sure even Win7 (which is nice) -- needs 14 or more.&lt;br /&gt;&lt;br /&gt;I wonder how long an OSX install takes? I guess I'll never know... :-)&lt;br /&gt;&lt;br /&gt;Well I thought it was nice at least. 6 clicks, and I have a full install, sensible partitioning, admin accounts setup, all the post-release updates installed, and a minty fresh install -- ready for me to destroy! Plus, with all my account data synced across machines -- it's instantly got all the goodies I need to make use of it.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-qGUINl3hNoA/TdYbfsiK1nI/AAAAAAAAADY/qgMdRs_EV4w/s1600/dvdflick_tetris.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="320" src="http://2.bp.blogspot.com/-qGUINl3hNoA/TdYbfsiK1nI/AAAAAAAAADY/qgMdRs_EV4w/s320/dvdflick_tetris.jpg" width="214" /&gt;&lt;/a&gt;About the only improvement I could suggest is adding a Tetris game while you install -- ala &lt;a href="http://www.dvdflick.net/"&gt;DVDFlick&lt;/a&gt;...&lt;br /&gt;&lt;br /&gt;Actually, maybe a tower defence clone would be better?&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;The install took 3 hours! -- 5 minutes for the file copy, and 2:55h for me to&amp;nbsp;battle the hordes in stage 11 of tower defence!&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3146715479304210434-8334159803158028405?l=noprivateparts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://noprivateparts.blogspot.com/feeds/8334159803158028405/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3146715479304210434&amp;postID=8334159803158028405' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3146715479304210434/posts/default/8334159803158028405'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3146715479304210434/posts/default/8334159803158028405'/><link rel='alternate' type='text/html' href='http://noprivateparts.blogspot.com/2011/05/ubuntu-1104-install-is-err-quick.html' title='Ubuntu 11.04 install is, err, quick...'/><author><name>Simon</name><uri>http://www.blogger.com/profile/03508362113620473623</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://4.bp.blogspot.com/-vXabAxmwKgQ/TdYZ-UDOazI/AAAAAAAAADU/HnS_N-9rfEw/s72-c/Install+the+operating+system.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3146715479304210434.post-2329587102862903625</id><published>2010-11-18T21:21:00.000+10:00</published><updated>2010-11-18T21:21:56.792+10:00</updated><title type='text'>After a month living with a GNOME, I don't feel any taller</title><content type='html'>In an experiment to see what it would be like to take a full plunge into Windows-free-living on the desktop, I put myself on &lt;a href="http://en.wikipedia.org/wiki/National_Lampoon's_Animal_House"&gt;double secret probation&lt;/a&gt; to see if I could live without my Windows trinkets for 30 days, and 60 if I could stretch it. (At home though - at work would be a whole new challenge)&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_XvEwlDYC4M4/TOULxH9Ug7I/AAAAAAAAADA/58lPfnU94Vk/s1600/win7-ubuntu.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_XvEwlDYC4M4/TOULxH9Ug7I/AAAAAAAAADA/58lPfnU94Vk/s1600/win7-ubuntu.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;So in through the window comes the penguin...&lt;br /&gt;&lt;br /&gt;The highlights so far are:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.ubuntu.com/"&gt;Ubuntu &lt;/a&gt;10.10 installer (for the desktop) is a &lt;i&gt;very&amp;nbsp;&lt;/i&gt;neat bit of kit. While I haven't actually tried it - I think it stands an excellent chance of passing the "even my mother could install it" test. I wouldn't dare let her try a Windows install.&lt;/li&gt;&lt;li&gt;The baked in s&lt;a href="http://www.google.com/support/chrome/bin/answer.py?hl=en&amp;amp;answer=165139"&gt;ync features of Chrome&lt;/a&gt; make it easy peasy to keep all your browsers at work and home in step. With the added&amp;nbsp;benefit&amp;nbsp;that I can expose all my personal details to Google to harvest for fun and profit (ho hum).&lt;/li&gt;&lt;li&gt;A &lt;a href="http://www.virtualbox.org/"&gt;VirtualBox&lt;/a&gt;&amp;nbsp;install of &lt;a href="http://www.ubuntu.com/desktop"&gt;Ubuntu Desktop&lt;/a&gt; is hands down, the fastest, snappiest desktop VM I've &amp;nbsp;used. Windows XP was usable, Windows 7 was better, but it's waaaaaay faster than that.&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;So far, so good...&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3146715479304210434-2329587102862903625?l=noprivateparts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://noprivateparts.blogspot.com/feeds/2329587102862903625/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3146715479304210434&amp;postID=2329587102862903625' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3146715479304210434/posts/default/2329587102862903625'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3146715479304210434/posts/default/2329587102862903625'/><link rel='alternate' type='text/html' href='http://noprivateparts.blogspot.com/2010/11/after-month-living-with-gnome-i-dont.html' title='After a month living with a GNOME, I don&apos;t feel any taller'/><author><name>Simon</name><uri>http://www.blogger.com/profile/03508362113620473623</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://1.bp.blogspot.com/_XvEwlDYC4M4/TOULxH9Ug7I/AAAAAAAAADA/58lPfnU94Vk/s72-c/win7-ubuntu.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3146715479304210434.post-6506150952995682286</id><published>2010-09-25T21:07:00.000+10:00</published><updated>2010-09-25T21:07:13.945+10:00</updated><title type='text'>"p" is for "please don't sue me"</title><content type='html'>&lt;blockquote&gt;Duck! Duck!&lt;/blockquote&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;...minutes pass...&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;blockquote&gt;Cat! Cat! (giggles)&lt;/blockquote&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;...a little while later...&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;blockquote&gt;Bee! (squeals)&lt;/blockquote&gt;&lt;br /&gt;I thought I had picked up all the kids picture books lying around the floor. I double checked - yup - no picture books. Yet our daughter was making all the fun noises that usually following a reading of picture books.&lt;br /&gt;&lt;br /&gt;A little&amp;nbsp;further&amp;nbsp;investigation reveals she has got hold of a Linux magazine I bought on a whim.&lt;br /&gt;&lt;br /&gt;Turns out this is a &lt;b&gt;Duck&lt;/b&gt;...&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_XvEwlDYC4M4/TJ3StX1WMMI/AAAAAAAAAC0/m56VRpIM6aM/s1600/Tux_small.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_XvEwlDYC4M4/TJ3StX1WMMI/AAAAAAAAAC0/m56VRpIM6aM/s1600/Tux_small.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;a fair mistake - any bird is classified as "duck" at the moment.&lt;br /&gt;&lt;br /&gt;This is a &lt;b&gt;Cat&lt;/b&gt;...&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_XvEwlDYC4M4/TJ3VojtAemI/AAAAAAAAAC4/pcu2VjwCq-g/s1600/open-suse-logo.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="206" src="http://1.bp.blogspot.com/_XvEwlDYC4M4/TJ3VojtAemI/AAAAAAAAAC4/pcu2VjwCq-g/s320/open-suse-logo.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;getting a little harder to see the association now.&lt;br /&gt;&lt;br /&gt;And this is a &lt;b&gt;Bee&lt;/b&gt;...&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_XvEwlDYC4M4/TJ3Vu4oGrCI/AAAAAAAAAC8/VB-vddwkHS8/s1600/android-logo.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_XvEwlDYC4M4/TJ3Vu4oGrCI/AAAAAAAAAC8/VB-vddwkHS8/s1600/android-logo.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Turns out these mags are great for kids (and cheaper than most picture books). I was thinking of trying a Mac magazine next. So she can go for the traditional "a is for apple" - but I'm worried of copyright or trademark&amp;nbsp;infringement.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3146715479304210434-6506150952995682286?l=noprivateparts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://noprivateparts.blogspot.com/feeds/6506150952995682286/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3146715479304210434&amp;postID=6506150952995682286' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3146715479304210434/posts/default/6506150952995682286'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3146715479304210434/posts/default/6506150952995682286'/><link rel='alternate' type='text/html' href='http://noprivateparts.blogspot.com/2010/09/p-is-for-please-dont-sue-me.html' title='&quot;p&quot; is for &quot;please don&apos;t sue me&quot;'/><author><name>Simon</name><uri>http://www.blogger.com/profile/03508362113620473623</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://4.bp.blogspot.com/_XvEwlDYC4M4/TJ3StX1WMMI/AAAAAAAAAC0/m56VRpIM6aM/s72-c/Tux_small.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3146715479304210434.post-2670428246250638002</id><published>2010-02-10T23:01:00.001+10:00</published><updated>2010-02-10T23:02:32.203+10:00</updated><title type='text'>A belated link-blog lament</title><content type='html'>A few weeks ago, &lt;a href="http://www.arjansworld.com/2009/12/31/waving-goodbye-to-the-old-embracing-the-new/"&gt;Arjan Zuidhof officially shutdown operations&lt;/a&gt; on his great .NET (and development in general) link-blog. It was not a huge&amp;nbsp;surprise;&amp;nbsp;it was alluded to it back in &lt;a href="http://www.arjansworld.com/2009/08/27/no-linkblog-for-aug-27-2009/"&gt;August&lt;/a&gt;. He's now concentrating solely on productivity, gtd and lifehacking. While these are also great topics (and still hold a personal interest for me), I will miss the great development content and ideas the posts inspired.&lt;br /&gt;&lt;br /&gt;From the back row: &lt;i&gt;"Gee, that's sad. Blogs come and go, get over it man!"&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;True enough, but... I couldn't help make a loose connection between this and a fairly hot topic raised on DNR - &lt;a href="http://www.dotnetrocks.com/default.aspx?ShowNum=476"&gt;Is software development too complex?&lt;/a&gt;&amp;nbsp;back in November. It spawned a huge series of follow ups and comments (both for and against). But it's hard to argue that the number of CLI languages, data access choices, logging frameworks, etc, etc (ad&amp;nbsp;infinitum) are reducing.&amp;nbsp;When you start a new project, which one to do you choose? Which one is "right"? Which one will still be a good choice in 2 years? In 2 minutes?&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;Q: There's a huge amount of choice out there, and it's constantly increasing! What are we to do?&lt;/blockquote&gt;&lt;blockquote&gt;A: (That guy from the back row is still here) &lt;i&gt;"Get over it man!"&lt;/i&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_XvEwlDYC4M4/S3KtsZPscOI/AAAAAAAAACY/hHRptCw0Wpw/s1600-h/Haemoglobin50.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_XvEwlDYC4M4/S3KtsZPscOI/AAAAAAAAACY/hHRptCw0Wpw/s320/Haemoglobin50.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;This is a great time for .NET development. The platform is mature, popular and stable. The huge variety of technologies available within that platform are a sign of this. Sure you will pick technological dead-ends, or the next-shiny-thing will seem so much better. But perhaps this helps focus the effort on design - being able to back out of dead-ends, or support switching to the next-shiny-thing.&lt;br /&gt;&lt;br /&gt;I just hope the (seemingly) overwhelming choice is not driving&amp;nbsp;talented&amp;nbsp;people (like Arjan) away from the .NET platform. I honestly don't think so - but for a brief moment the connection was made in my addled mind.&lt;br /&gt;&lt;br /&gt;Maybe a fitting salute to Arjan's contributions is to select some of the gems (there's&amp;nbsp;plenty&amp;nbsp;more):&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://codebucket.org/archive/2009/11/15/it-doesnrsquot-matter-if-you-know-what-yoursquore-doing.aspx"&gt;It Doesn’t Matter If You Know What You’re Doing&lt;/a&gt;&lt;br /&gt;&lt;i&gt;Doesn't matter who you are, or what you are doing, or even if you (think you) did it well. A review will always help...&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;&lt;a href="http://highscalability.com/blog/2009/10/26/facebooks-memcached-multiget-hole-more-machines-more-capacit.html"&gt;&lt;span class="Apple-style-span" style="font-style: normal;"&gt;FACEBOOK'S MEMCACHED MULTIGET HOLE: MORE MACHINES != MORE CAPACITY&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;Don't you wish you had that sort of problem. Adding the 801st server makes things worse...&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-style: normal;"&gt;&lt;a href="http://blogs.msdn.com/somasegar/archive/2009/10/26/spec-explorer-a-model-based-testing-tool.aspx"&gt;Spec Explorer: A Model-Based Testing tool&lt;/a&gt;&lt;/span&gt;Kind of "research QA team" crowd, but an interesting way to try and solve state-explosion...&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-style: normal;"&gt;&lt;a href="http://www.pseale.com/blog/WebsiteBackgroundServicesAreHot.aspx"&gt;Website Background Services Are Hot&lt;/a&gt;&lt;/span&gt;Getting your webserver to do something else it was not designed to do (but still needs to do). Personally I prefer &lt;a href="http://website%20background%20services%20are%20hot/"&gt;Jeff Atwood's cache depndency version&lt;/a&gt;, but I'm easily swayed by the next-shiny-thing...&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;&lt;a href="http://www.caffeinatedcoder.com/writing-an-svn-precommit-hook-in-net-that-integrates-with-jira/"&gt;&lt;span class="Apple-style-span" style="font-style: normal;"&gt;Writing an SVN PreCommit Hook in .NET that integrates with Jira&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;Very simple example of how to integrate the hooks and avoid some of the pain with SharpSVN.&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-style: normal;"&gt;&lt;a href="http://blog.jonasbandi.net/2009/09/passionate-developer-i-do-like-my.html"&gt;The passionate developer: I do like my profession, I don't like my job&lt;/a&gt;&lt;/span&gt;Passionate about something you know is imperfect. Those zany developers, what were they thinking...&lt;/i&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;i&gt;Dammit! - Now I've started a link-blog!&lt;/i&gt;&lt;/b&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3146715479304210434-2670428246250638002?l=noprivateparts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://noprivateparts.blogspot.com/feeds/2670428246250638002/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3146715479304210434&amp;postID=2670428246250638002' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3146715479304210434/posts/default/2670428246250638002'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3146715479304210434/posts/default/2670428246250638002'/><link rel='alternate' type='text/html' href='http://noprivateparts.blogspot.com/2010/02/belated-link-blog-lament.html' title='A belated link-blog lament'/><author><name>Simon</name><uri>http://www.blogger.com/profile/03508362113620473623</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/_XvEwlDYC4M4/S3KtsZPscOI/AAAAAAAAACY/hHRptCw0Wpw/s72-c/Haemoglobin50.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3146715479304210434.post-3553645328981678582</id><published>2009-08-05T21:29:00.004+10:00</published><updated>2009-08-05T21:54:53.377+10:00</updated><title type='text'>There's a bear in there, people with games, stories to tell and box of balloons with a featherlight touch</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_XvEwlDYC4M4/SnlzABmsFqI/AAAAAAAAACQ/xhk7VHfaOog/s1600-h/LITTLETED.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 200px; height: 300px;" src="http://4.bp.blogspot.com/_XvEwlDYC4M4/SnlzABmsFqI/AAAAAAAAACQ/xhk7VHfaOog/s400/LITTLETED.jpg" alt="" id="BLOGGER_PHOTO_ID_5366446875256559266" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;I was watching &lt;a href="http://www.abc.net.au/children/play/default.htm"&gt;Play School&lt;/a&gt; today with my daughter - enjoying the crowd favorites: Incy Wincy Spider, Clap your Hands, Sing a Rainbow. For the finale, we got a piano accompanied sing-a-long version of &lt;a href="http://www.madness.co.uk/"&gt;Madness&lt;/a&gt;'s &lt;a href="http://en.wikipedia.org/wiki/House_of_Fun"&gt;House of Fun&lt;/a&gt;. Perhaps not entirely appropriate (not that she can understand the lyrics yet); more of a gentle reminder that I'm old and out of touch, and things aren't going to change :-).&lt;br /&gt;&lt;br /&gt;I'm trying to recall if they had anything similar when I was watching it as a kid? I think I remember Little Ted and Humpty Dumpty on a cardboard barge floating down a crepe paper river chanting "no future". Then again, maybe it's my shoddy memory...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3146715479304210434-3553645328981678582?l=noprivateparts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://noprivateparts.blogspot.com/feeds/3553645328981678582/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3146715479304210434&amp;postID=3553645328981678582' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3146715479304210434/posts/default/3553645328981678582'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3146715479304210434/posts/default/3553645328981678582'/><link rel='alternate' type='text/html' href='http://noprivateparts.blogspot.com/2009/08/theres-bear-in-there-people-with-games.html' title='There&apos;s a bear in there, people with games, stories to tell and box of balloons with a featherlight touch'/><author><name>Simon</name><uri>http://www.blogger.com/profile/03508362113620473623</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://4.bp.blogspot.com/_XvEwlDYC4M4/SnlzABmsFqI/AAAAAAAAACQ/xhk7VHfaOog/s72-c/LITTLETED.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3146715479304210434.post-5422112024730333331</id><published>2008-08-19T06:15:00.003+10:00</published><updated>2011-06-17T01:16:09.367+10:00</updated><title type='text'></title><content type='html'>&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_XvEwlDYC4M4/SKnYilHBmdI/AAAAAAAAABs/AHu3UiluInA/s1600-h/20013.strip.print.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_XvEwlDYC4M4/SKnYilHBmdI/AAAAAAAAABs/AHu3UiluInA/s400/20013.strip.print.gif" alt="" id="BLOGGER_PHOTO_ID_5235954130383641042" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;(sigh) It just made so much sense today...&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3146715479304210434-5422112024730333331?l=noprivateparts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://noprivateparts.blogspot.com/feeds/5422112024730333331/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3146715479304210434&amp;postID=5422112024730333331' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3146715479304210434/posts/default/5422112024730333331'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3146715479304210434/posts/default/5422112024730333331'/><link rel='alternate' type='text/html' href='http://noprivateparts.blogspot.com/2008/08/sigh-it-just-made-so-much-sense-today.html' title=''/><author><name>Simon</name><uri>http://www.blogger.com/profile/03508362113620473623</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://3.bp.blogspot.com/_XvEwlDYC4M4/SKnYilHBmdI/AAAAAAAAABs/AHu3UiluInA/s72-c/20013.strip.print.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3146715479304210434.post-6829057340270926773</id><published>2008-02-05T21:05:00.000+10:00</published><updated>2008-02-05T23:22:58.358+10:00</updated><title type='text'>Vista reparse shenanigans with rsync</title><content type='html'>As part of my backup script overhaul, I have switched to using &lt;a href="http://en.wikipedia.org/wiki/Rsync"&gt;rsync&lt;/a&gt;. The main reason is I now have to support Windows XP, Vista, Linux and maybe Mac in future; and I don't fancy re-doing all this backup stuff each time.&lt;br /&gt;&lt;br /&gt;The good news first: rsync works a treat on Linux (well duh!) and XP (via &lt;a href="http://www.cygwin.com/"&gt;cygwin&lt;/a&gt;). I was extremely happy with how easy to configure and quick to run the Linux and XP backup's were. But it seems I was fooled into a false sense of security...&lt;br /&gt;&lt;br /&gt;I tried running exactly the same rsync script (that worked on XP) on Vista and was greeted with a slew of errors, the most confusing being:&lt;br /&gt;&lt;pre&gt;rsync: /cygdrive/X/your-file-here: Permission denied (13)&lt;/pre&gt;Initially I thought it was the old &lt;a href="http://en.wikipedia.org/wiki/User_Account_Control"&gt;Vista UAC &lt;/a&gt;playing up. But I confirmed that I had disabled UAC. The "permission denied" in this case, was a red herring. The real problem was the &lt;a href="http://msdn2.microsoft.com/en-us/library/aa365503%28VS.85%29.aspx"&gt;reparse points&lt;/a&gt;. These little symbolic links are available in XP, but not used much. But in Vista they really went to town, and scattered them all about the file system like the Easter Bunny hiding eggs.&lt;br /&gt;&lt;br /&gt;rsync (well more likely the way it works with cygwin) is not too happy about reparse points, and after more careful inspection of my "Permission denied" errors, it turns out they were all on reparse points.&lt;br /&gt;&lt;br /&gt;My hack to get around this is pretty simple. The backup script, just before running rsync, generates a list of all the reparse points and tells rsync to exclude them. Thus rsync never encounters a scary directory it doesn't know how to deal with.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);font-family:courier new;font-size:85%;"  &gt;VER | findstr /i "6.0.6000" &gt; nul&lt;/span&gt;&lt;span style="font-size:85%;"&gt; &lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);font-family:courier new;font-size:85%;"  &gt;&lt;br /&gt;IF %ERRORLEVEL% EQU 0 GOTO backup_vista&lt;/span&gt;&lt;span style="font-size:85%;"&gt; &lt;/span&gt;&lt;span style="font-style: italic; color: rgb(102, 102, 102);font-family:courier new;font-size:85%;"  &gt;&lt;br /&gt;...rest of script...&lt;/span&gt;&lt;span style="font-size:85%;"&gt; &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);font-family:courier new;font-size:85%;"  &gt;backup_vista:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 102, 102);font-family:courier new;font-size:85%;"  &gt;REM (dir) build a list of all the reparse directories&lt;/span&gt;&lt;span style="font-size:85%;"&gt; &lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);font-family:courier new;font-size:85%;"  &gt;&lt;br /&gt;REM (sed) swap around the path separators&lt;/span&gt;&lt;span style="font-size:85%;"&gt; &lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);font-family:courier new;font-size:85%;"  &gt;&lt;br /&gt;REM append to a file to use in rsync&lt;/span&gt;&lt;span style="font-size:85%;"&gt; &lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);font-family:courier new;font-size:85%;"  &gt;&lt;br /&gt;dir c:\Users /A:LD /S /B | sed "s/c\:\\/\//;s/\\/\//g" &gt;&gt; exclude.local.list&lt;/span&gt;&lt;span style="font-size:85%;"&gt; &lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);font-family:courier new;font-size:85%;"  &gt;&lt;br /&gt;dir c:\ProgramData /A:LD /S /B | sed "s/c\:\\/\//;s/\\/\//g" &gt;&gt; exclude.local.list&lt;/span&gt;  &lt;span style="color: rgb(102, 102, 102);font-family:courier new;font-size:85%;"  &gt;rsync &lt;/span&gt;&lt;span style="font-style: italic; color: rgb(102, 102, 102);font-family:courier new;font-size:85%;"  &gt;options&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);font-family:courier new;font-size:85%;"  &gt; --exclude-from=exclude.local.list /cygdrive/c/ &lt;/span&gt;&lt;span style="font-style: italic; color: rgb(102, 102, 102);font-family:courier new;font-size:85%;"  &gt;destination&lt;/span&gt;&lt;span style="font-size:85%;"&gt; &lt;/span&gt;&lt;span style="font-style: italic; color: rgb(102, 102, 102);font-family:courier new;font-size:85%;"  &gt;&lt;br /&gt;...rest of script...&lt;/span&gt;&lt;br /&gt;&lt;pre&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_XvEwlDYC4M4/R6hh0h0UjII/AAAAAAAAABc/w-Ztka66tNY/s1600-h/cookiemonster.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://bp0.blogger.com/_XvEwlDYC4M4/R6hh0h0UjII/AAAAAAAAABc/w-Ztka66tNY/s200/cookiemonster.jpg" alt="" id="BLOGGER_PHOTO_ID_5163484527839186050" border="0" /&gt;&lt;/a&gt;&lt;/pre&gt;&lt;br /&gt;It's not pretty, but (to quote Mr C. Monster) "it's good enough for me".&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;For bonus points, you could keep a copy of the reparse point list, and for a restore resurrect them all. I don't need this.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3146715479304210434-6829057340270926773?l=noprivateparts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://noprivateparts.blogspot.com/feeds/6829057340270926773/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3146715479304210434&amp;postID=6829057340270926773' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3146715479304210434/posts/default/6829057340270926773'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3146715479304210434/posts/default/6829057340270926773'/><link rel='alternate' type='text/html' href='http://noprivateparts.blogspot.com/2008/02/vista-reparse-shenanigans-with-rsync.html' title='Vista reparse shenanigans with rsync'/><author><name>Simon</name><uri>http://www.blogger.com/profile/03508362113620473623</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://bp0.blogger.com/_XvEwlDYC4M4/R6hh0h0UjII/AAAAAAAAABc/w-Ztka66tNY/s72-c/cookiemonster.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3146715479304210434.post-6793711081845948811</id><published>2008-01-25T06:39:00.000+10:00</published><updated>2008-01-25T07:04:57.888+10:00</updated><title type='text'>readynas is smokin' hot</title><content type='html'>I bought an &lt;a href="http://www.infrant.com/"&gt;Infrant ReadyNAS NV+&lt;/a&gt; a little while back to "delay" (I dare not say "solve") some of our storage problems. It has worked perfectly for over 10 months and was, without doubt, the simplest computer equipment I have ever set up.&lt;br /&gt;&lt;br /&gt;Unfortunately last weekend (after being out of the house all day, on a hot day) the expensive scent of burning plastic started to waft through the office. A brief nasal inspection of all the computer equipment revealed the fault was with the ReadyNAS. The stench of death lasted another 10 minutes before the unit switched off, never to return.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_XvEwlDYC4M4/R5j8QR0UjHI/AAAAAAAAABU/oCDj8NxU4hI/s1600-h/ReadyNAS.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 187px; height: 187px;" src="http://bp3.blogger.com/_XvEwlDYC4M4/R5j8QR0UjHI/AAAAAAAAABU/oCDj8NxU4hI/s320/ReadyNAS.jpg" alt="" id="BLOGGER_PHOTO_ID_5159150729743862898" border="0" /&gt;&lt;/a&gt;Fortunately it's still under warranty and should be RMA'd within the week, but it made me question my choice of the ReadyNAS. When I bought it, I was under the impression it was one of the most full featured and reliable home NAS devices you could get (I'm not a fan of &lt;a href="http://www.buffalotech.com/products/network-storage/terastation/"&gt;Buffalo&lt;/a&gt; - dunno why).&lt;br /&gt;&lt;br /&gt;After calming down, I remembered I was &lt;a href="http://www.infrant.com/forum/viewtopic.php?t=10259"&gt;warned about this situation&lt;/a&gt; (and emailed) from Infrant way back in the cool of winter. I remember thinking "yeah - that's a good idea, I will do that..."&lt;br /&gt;&lt;br /&gt;(so you know what that means)&lt;br /&gt;&lt;br /&gt;I didn't, and now it's toast.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;So tip of the day: If you have a ReadyNAS that needs the temperature patch and is not in an air conditioned office, apply the patch &lt;/span&gt;&lt;span style="font-weight: bold; font-style: italic; color: rgb(153, 0, 0);"&gt;now&lt;/span&gt;&lt;span style="font-style: italic;"&gt;.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span&gt;It's still a great home NAS box and I would recommend it. But it's not quite as bullet-proof (when it comes to heat) as I hoped.&lt;/span&gt;&lt;span style="font-style: italic;"&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/3146715479304210434-6793711081845948811?l=noprivateparts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://noprivateparts.blogspot.com/feeds/6793711081845948811/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3146715479304210434&amp;postID=6793711081845948811' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3146715479304210434/posts/default/6793711081845948811'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3146715479304210434/posts/default/6793711081845948811'/><link rel='alternate' type='text/html' href='http://noprivateparts.blogspot.com/2008/01/readynas-is-smokin-hot.html' title='readynas is smokin&apos; hot'/><author><name>Simon</name><uri>http://www.blogger.com/profile/03508362113620473623</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://bp3.blogger.com/_XvEwlDYC4M4/R5j8QR0UjHI/AAAAAAAAABU/oCDj8NxU4hI/s72-c/ReadyNAS.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3146715479304210434.post-4055922137527822393</id><published>2008-01-24T08:22:00.000+10:00</published><updated>2008-01-24T09:05:21.036+10:00</updated><title type='text'>(song ends)  ... Mono!</title><content type='html'>&lt;b&gt;&lt;/b&gt;&lt;blockquote style="font-style: italic;"&gt;&lt;b&gt;Lanley&lt;/b&gt;: And so, "mono" means "one." And "rail" means "rail." And that concludes our intensive three week course. [&lt;a href="http://en.wikipedia.org/wiki/Marge_vs._the_Monorail"&gt;Marge vs. the Monorail&lt;/a&gt;]&lt;/blockquote&gt;Recently, I've been trying to offload a lot of scheduled processing from my desktop computer to a &lt;a href="http://en.wikipedia.org/wiki/Linux"&gt;Linux&lt;/a&gt; (&lt;a href="http://en.wikipedia.org/wiki/Ubuntu_%28Linux_distribution%29"&gt;ubuntu&lt;/a&gt; in this case) server. One task that I thought might cause me some pain was &lt;a href="http://en.wikipedia.org/wiki/XMLTV"&gt;XMLTV&lt;/a&gt; generation.&lt;br /&gt;&lt;br /&gt;The general idea of the daily XMLTV task is:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Suck down the latest program listings with (the excellent) &lt;a href="http://svn.whuffy.com/wiki"&gt;shepherd&lt;/a&gt; script. Unfortunately this is a necessary evil, since &lt;a href="http://www.cse.unsw.edu.au/%7Ewillu/xmltv/index.html#Legal"&gt;Australian copyright laws are pretty strange for television programming&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;Augment the&lt;description&gt; &lt;span style="font-family: courier new;"&gt;description&lt;/span&gt; field for each programme with the extra information shepherd provides. These are things like release year, episode name, d&lt;/description&gt;&lt;description&gt;irector, actors, user ratings, etc. &lt;a href="http://www.mythtv.org/"&gt;MythTV&lt;/a&gt; shows these extra details in the UI, but the &lt;a href="http://www.team-mediaportal.com/"&gt;MediaPortal&lt;/a&gt; UI does not currently show all this extra info. So the workaround is to cram it all into the&lt;description&gt; &lt;span style="font-family: courier new;"&gt;description &lt;/span&gt;element (which is shown in the UI).&lt;/description&gt;&lt;/description&gt;&lt;/li&gt;&lt;/ol&gt;The old way to achieve this was to perform (1) on a ubuntu virtual machine (now no longer required as I have a real machine), and perform (2) on my desktop computer (Windows) via a little .Net 2.0 console program I cobbled together. Now that little program (or the logic it contained) needs to run on a real ubuntu machine.&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_XvEwlDYC4M4/R5fHRR0UjGI/AAAAAAAAAAs/nHAmf3Sds3M/s1600-h/200px-9f10.png"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://bp2.blogger.com/_XvEwlDYC4M4/R5fHRR0UjGI/AAAAAAAAAAs/nHAmf3Sds3M/s320/200px-9f10.png" alt="" id="BLOGGER_PHOTO_ID_5158810997830749282" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;I knew about the &lt;a href="http://www.mono-project.com/"&gt;mono project&lt;/a&gt; already, but I had never actually tried to run it from scratch on existing code. The end result, after an easy 5 minutes was my existing code working perfectly on ubuntu.&lt;br /&gt;&lt;/div&gt;&lt;ol&gt;&lt;li&gt;Install the core mono package (mono) and the .Net 2.0 compiler (mono-gmcs)&lt;br /&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;sudo apt-get install mono mono-gmcs&lt;/span&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Run my existing (compiled in Visual Studio on Windows) executable on ubuntu with no recompilation or any other screwing around.&lt;br /&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;mono xmltvAugment.exe&lt;/span&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;So easy.&lt;br /&gt;&lt;br /&gt;This example was of course with a trivial .Net 2.0 console program. The program only used standard assemblies. But regardless, I was still impressed.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3146715479304210434-4055922137527822393?l=noprivateparts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://noprivateparts.blogspot.com/feeds/4055922137527822393/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3146715479304210434&amp;postID=4055922137527822393' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3146715479304210434/posts/default/4055922137527822393'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3146715479304210434/posts/default/4055922137527822393'/><link rel='alternate' type='text/html' href='http://noprivateparts.blogspot.com/2008/01/song-ends-mono.html' title='(song ends)  ... Mono!'/><author><name>Simon</name><uri>http://www.blogger.com/profile/03508362113620473623</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://bp2.blogger.com/_XvEwlDYC4M4/R5fHRR0UjGI/AAAAAAAAAAs/nHAmf3Sds3M/s72-c/200px-9f10.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3146715479304210434.post-2645095090272108237</id><published>2008-01-23T10:38:00.000+10:00</published><updated>2008-01-23T11:02:48.735+10:00</updated><title type='text'>Ubuntu bits : System shutdown by power button</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_XvEwlDYC4M4/R5aPF816k2I/AAAAAAAAAAc/NHfRme7DjIY/s1600-h/powerbutton.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://bp1.blogger.com/_XvEwlDYC4M4/R5aPF816k2I/AAAAAAAAAAc/NHfRme7DjIY/s400/powerbutton.jpg" alt="" id="BLOGGER_PHOTO_ID_5158467755593864034" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Simple enough problem: the headless server is sitting under the desk, the electricity needs to go off &lt;span style="font-style: italic;"&gt;now&lt;/span&gt; (and you forgot to plug in the ups). You press the power button, nothing happens (as is normal).&lt;br /&gt;&lt;br /&gt;Sure, you could just hold down the power button (or pull the plug). the file system will likely survive. Or you could fire up an ssh client and do a graceful shutdown. But if only that power button worked.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Well turns out the solution (for the next time it happens) is simple:&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Make sure your &lt;a href="http://en.wikipedia.org/wiki/Advanced_Configuration_and_Power_Interface"&gt;ACPI&lt;/a&gt; support is all happy.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;dmesg | grep 'ACPI:'&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;If it's not - then you need to enable it in the kernel.&lt;/li&gt;&lt;li&gt;Make sure ACPI has detected your power button.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;dmesg | grep 'ACPI: Power Button'&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;If you have no luck, there's a kernel module you can load easily enough. Load it up, and check that it actually got loaded.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;sudo modprobe button&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;lsmod | grep button&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Assuming all is well, add it to the boot time module list in &lt;span style="font-weight: bold;font-family:courier new;" &gt;/etc/modules&lt;/span&gt;&lt;/li&gt;&lt;li&gt;Use acpid to monitor ACPI events and shutdown when the power button is pressed.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;sudo apt-get install acpid&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;That's it. The default acpid scripts will intercept the power button and force an immediate halt.&lt;/li&gt;&lt;li&gt;Optional : If you are really keen. Reboot, then:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;tail -f /var/log/syslog&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Then press the power button and enjoy the graceful shutdown.&lt;/li&gt;&lt;li&gt;Bonus Points: If you don't the default event handler, tweak &lt;span style="font-weight: bold;font-family:courier new;" &gt;/etc/acpi/powerbtn.sh&lt;/span&gt; till your content.&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3146715479304210434-2645095090272108237?l=noprivateparts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://noprivateparts.blogspot.com/feeds/2645095090272108237/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3146715479304210434&amp;postID=2645095090272108237' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3146715479304210434/posts/default/2645095090272108237'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3146715479304210434/posts/default/2645095090272108237'/><link rel='alternate' type='text/html' href='http://noprivateparts.blogspot.com/2008/01/ubuntu-bits-system-shutdown-by-power.html' title='Ubuntu bits : System shutdown by power button'/><author><name>Simon</name><uri>http://www.blogger.com/profile/03508362113620473623</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://bp1.blogger.com/_XvEwlDYC4M4/R5aPF816k2I/AAAAAAAAAAc/NHfRme7DjIY/s72-c/powerbutton.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3146715479304210434.post-7808651422900886398</id><published>2007-09-21T11:22:00.000+10:00</published><updated>2007-09-21T11:40:23.797+10:00</updated><title type='text'>Visual Studio Auto-Attach Macro</title><content type='html'>Although using the debugger to attach to your running code to inspect things can be considered "a bad thing" in some circumstances (i.e.: why aren't you using Debug.Assert() to enforce the internal state you are examining with the debugger? why aren't you using unit tests to enforce the exit state you are examining with the debugger?); sometimes you just got to do it. Well I do at least.&lt;br /&gt;&lt;br /&gt;For ASP.NET development (IIS, Development Server, Cassini, or whatever) this can be a pain. You need to:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Open the "Attach to..." window.&lt;/li&gt;&lt;li&gt;Find the process (web server) you are interested in.&lt;/li&gt;&lt;li&gt;Attach, wait and close the window.&lt;/li&gt;&lt;/ol&gt;As an alternative, I've been using a small macro to do these three steps and bound it to a little icon in the toolbar. Very easy: click the gears icon  (my personal choice)  and you're attached. Click the detach icon (default) and you're out of debug mode.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_XvEwlDYC4M4/RvMfoA-MsuI/AAAAAAAAAAM/-TbM7rAT6fM/s1600-h/CropperCapture%5B7%5D.Png"&gt;&lt;img style="cursor: pointer;" src="http://bp1.blogger.com/_XvEwlDYC4M4/RvMfoA-MsuI/AAAAAAAAAAM/-TbM7rAT6fM/s400/CropperCapture%5B7%5D.Png" alt="" id="BLOGGER_PHOTO_ID_5112464774311752418" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Of course you will need to alter the name of the process to look for depending on your web server (IIS 5 will typically need "aspnet_wp.exe", IIS 6 depends on the process mode you choose to run in).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;I must apologise, the idea for this macro was taken from a source I can't locate anymore. The code is slightly modified, but the idea is the same.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt; &lt;span style="color: rgb(51, 51, 255);font-family:courier new;" &gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:78%;"&gt;&lt;span style="color: rgb(51, 51, 255);font-family:courier new;" &gt;&lt;br /&gt;    ' This subroutine attaches to the first Development Web Server found.&lt;br /&gt;    Sub AttachToFirstDevWebServer()&lt;br /&gt;        Dim process As EnvDTE.Process&lt;br /&gt;&lt;br /&gt;        For Each process In DTE.Debugger.LocalProcesses&lt;br /&gt;            If (Path.GetFileName(process.Name) = "UltiDevCassinWebServer2a.exe") Then&lt;br /&gt;                process.Attach()&lt;br /&gt;                Exit Sub&lt;br /&gt;            End If&lt;br /&gt;        Next&lt;br /&gt;&lt;br /&gt;        MsgBox("No ASP.NET Development Server found")&lt;br /&gt;    End Sub&lt;br /&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/3146715479304210434-7808651422900886398?l=noprivateparts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://noprivateparts.blogspot.com/feeds/7808651422900886398/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3146715479304210434&amp;postID=7808651422900886398' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3146715479304210434/posts/default/7808651422900886398'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3146715479304210434/posts/default/7808651422900886398'/><link rel='alternate' type='text/html' href='http://noprivateparts.blogspot.com/2007/09/visual-studio-auto-attach-macro.html' title='Visual Studio Auto-Attach Macro'/><author><name>Simon</name><uri>http://www.blogger.com/profile/03508362113620473623</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://bp1.blogger.com/_XvEwlDYC4M4/RvMfoA-MsuI/AAAAAAAAAAM/-TbM7rAT6fM/s72-c/CropperCapture%5B7%5D.Png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3146715479304210434.post-2433914962251717986</id><published>2007-09-18T08:53:00.000+10:00</published><updated>2008-01-15T16:20:08.204+10:00</updated><title type='text'>It just made sense at the time...</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_XvEwlDYC4M4/R4xQhM16k1I/AAAAAAAAAAU/M9yvKtoUs58/s1600-h/dilbert2007203690913.gif"&gt;&lt;img style="cursor: pointer;" src="http://bp0.blogger.com/_XvEwlDYC4M4/R4xQhM16k1I/AAAAAAAAAAU/M9yvKtoUs58/s400/dilbert2007203690913.gif" alt="" id="BLOGGER_PHOTO_ID_5155584204745642834" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;After several weeks of ignoring Google Reader, I was playing catchup, and this one stuck a chord. It's so easy to pay out on advertising or marketing; but this one just seems right.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3146715479304210434-2433914962251717986?l=noprivateparts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://noprivateparts.blogspot.com/feeds/2433914962251717986/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3146715479304210434&amp;postID=2433914962251717986' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3146715479304210434/posts/default/2433914962251717986'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3146715479304210434/posts/default/2433914962251717986'/><link rel='alternate' type='text/html' href='http://noprivateparts.blogspot.com/2007/09/it-just-made-sense-at-time.html' title='It just made sense at the time...'/><author><name>Simon</name><uri>http://www.blogger.com/profile/03508362113620473623</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://bp0.blogger.com/_XvEwlDYC4M4/R4xQhM16k1I/AAAAAAAAAAU/M9yvKtoUs58/s72-c/dilbert2007203690913.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3146715479304210434.post-6929670965312707212</id><published>2007-04-24T09:50:00.000+10:00</published><updated>2007-04-24T10:08:56.552+10:00</updated><title type='text'>My friends and co-workers are just smurfs</title><content type='html'>I can remember back when I was young, having a fascination with collecting &lt;a href="http://en.wikipedia.org/wiki/Smurfs"&gt;Smurfs&lt;/a&gt;. I don't remember the exact details, but I think you collected them at petrol/gas/service stations (maybe BP?). I had a fair amount (about 20+ I recall). I'd try and force my parents to constantly stop at the service station so I could get more. More, more, MORE!&lt;br /&gt;&lt;br /&gt;Then one day (maybe a year or two later), I was sitting around looking at my box full of small blue bits of plastic, and I realised: I never really liked Smurfs anyway. Sure it was something to collect. But there were better things to collect. Things that I actually &lt;span style="font-style: italic;"&gt;liked&lt;/span&gt;. &lt;a href="http://en.wikipedia.org/wiki/Transformers_%28toy_line%29"&gt;Transformers&lt;/a&gt; comes to mind. :-)&lt;br /&gt;&lt;br /&gt;So I had one of my first experiences of feeling tricked into collecting something that I didn't actually like, by clever marketing and snappy logos.&lt;br /&gt;&lt;br /&gt;Time moves on, and now I'm starting to get the same feeling with &lt;a href="http://www.linkedin.com"&gt;LinkedIn&lt;/a&gt;. At the start, it seemed like a good idea (join a network of my friends and colleagues, find old workmates, get access to the "inside" job offerings). Inside the website you notice little "meters" that let you know "if you invite x more people, you will reach 90% complete". Mini-nags to remind you that you should spread LinkedIn to all your friends. Which is fine - it's viral marketing, I should know - I work for a company that does the same sort of thing.&lt;br /&gt;&lt;br /&gt;But today I had a similar epiphany to the Smurfs (does that make it &lt;span style="font-style: italic;"&gt;smurf-tacular&lt;/span&gt;?): I hate receiving emails along the lines of "join this website so you can do x". I get enough in spam, I don't want to receive the same thing from my friends. Yet here I am, sending emails to some of my closest friends, asking them to join a website they may never have heard of, just so I can get an extra little mark on my progress meter.&lt;br /&gt;&lt;br /&gt;I'm not so disgruntled that I will immediately quit LinkedIn, and ask all my friends to do that same (besides, that's up to them). But I think I might leave it alone for a while (say a month or two) and see if I still feel as annoyed with myself (after all, it's me that sends the invites, not LinkedIn) as I do today.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3146715479304210434-6929670965312707212?l=noprivateparts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://noprivateparts.blogspot.com/feeds/6929670965312707212/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3146715479304210434&amp;postID=6929670965312707212' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3146715479304210434/posts/default/6929670965312707212'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3146715479304210434/posts/default/6929670965312707212'/><link rel='alternate' type='text/html' href='http://noprivateparts.blogspot.com/2007/04/my-friends-and-co-workers-are-just.html' title='My friends and co-workers are just smurfs'/><author><name>Simon</name><uri>http://www.blogger.com/profile/03508362113620473623</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-3146715479304210434.post-959527797793478895</id><published>2007-03-06T20:15:00.000+10:00</published><updated>2007-03-06T20:18:48.678+10:00</updated><title type='text'>So what is it?</title><content type='html'>This is simply a demo blog to compare features of blogger with my corporate (well who I work for currently) blog offering. I want to see if blogger is any easier, or has any decent feature to steal, err I mean  "inspire".&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3146715479304210434-959527797793478895?l=noprivateparts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://noprivateparts.blogspot.com/feeds/959527797793478895/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3146715479304210434&amp;postID=959527797793478895' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3146715479304210434/posts/default/959527797793478895'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3146715479304210434/posts/default/959527797793478895'/><link rel='alternate' type='text/html' href='http://noprivateparts.blogspot.com/2007/03/so-what-is-it.html' title='So what is it?'/><author><name>Simon</name><uri>http://www.blogger.com/profile/03508362113620473623</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>
