<?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-21172681</id><updated>2011-08-17T04:02:04.334+01:00</updated><category term='Signal'/><category term='StackOverflow'/><category term='LINQ'/><category term='Vista'/><category term='iPhone SDK'/><category term='VMWare'/><category term='debugging'/><category term='C'/><category term='List.Sort'/><category term='Cricket'/><category term='PSP'/><category term='Windows Update'/><category term='SP1'/><category term='Control Alt Delete'/><category term='Hundred Pushups'/><category term='Windows'/><category term='Remote Desktop'/><category term='OSX'/><category term='3G'/><category term='ASP.NET MVC'/><category term='VS2008'/><category term='ASP.NET'/><category term='C#'/><category term='n-tier'/><category term='Vs 2005'/><category term='iPhone'/><category term='WCF'/><category term='Linq to SQL'/><category term='Mac'/><category term='Switcher'/><category term='Keynote Predictions'/><category term='Update'/><category term='Compact Framework'/><category term='CF'/><category term='Design Patterns'/><category term='.NET'/><title type='text'>Software Development and stuff</title><subtitle type='html'>Discussions relating to Software Development, with a focus on C#. Other rants thrown in for free</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://softwarex-nz.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://softwarex-nz.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default?start-index=101&amp;max-results=100'/><author><name>James</name><uri>http://www.blogger.com/profile/17381337834045521837</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>237</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-21172681.post-4479670211203615178</id><published>2010-02-12T01:23:00.003Z</published><updated>2010-02-12T01:28:51.500Z</updated><title type='text'>Woah. Is that the time?</title><content type='html'>Haven't posted on here for almost a year.&lt;br /&gt;&lt;br /&gt;There are a few major reasons for this. They are in no particular order:&lt;br /&gt;&lt;br /&gt;-- I'm no longer doing .net only coding, I went fulltime iPhone coding in June 2009. It's been going really well. Thanks for asking!&lt;br /&gt;-- Twitter: I loveTwitter. I like the immediate feedback and the conversation style. I also don't have a lot of time because of above, so bigger formal posts are not as appealing. ( @kiwibastard )&lt;br /&gt;-- PC World: I now write a monthly programming column in NZ PC World, so that takes away a lot of my creative juices, as it were. I love doing the magazine stuff.&lt;br /&gt;&lt;br /&gt;So, I hope to come back here more often, but don't be surprised if I don't&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21172681-4479670211203615178?l=softwarex-nz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarex-nz.blogspot.com/feeds/4479670211203615178/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21172681&amp;postID=4479670211203615178' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/4479670211203615178'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/4479670211203615178'/><link rel='alternate' type='text/html' href='http://softwarex-nz.blogspot.com/2010/02/woah-is-that-time.html' title='Woah. Is that the time?'/><author><name>KiwiBastard</name><uri>http://www.blogger.com/profile/06464945422472093454</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-21172681.post-6510058881851528779</id><published>2009-01-12T23:48:00.002Z</published><updated>2009-01-12T23:50:04.448Z</updated><title type='text'>This one got through QA:</title><content type='html'>Hate to be a grammer Nazi, but check out this dialog:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_KYTD7b1k7ko/SWvXCcQKRMI/AAAAAAAAAFI/6_QwWydZUXY/s1600-h/ms_dialog.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 159px;" src="http://1.bp.blogspot.com/_KYTD7b1k7ko/SWvXCcQKRMI/AAAAAAAAAFI/6_QwWydZUXY/s400/ms_dialog.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5290558624220464322" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21172681-6510058881851528779?l=softwarex-nz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarex-nz.blogspot.com/feeds/6510058881851528779/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21172681&amp;postID=6510058881851528779' title='62 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/6510058881851528779'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/6510058881851528779'/><link rel='alternate' type='text/html' href='http://softwarex-nz.blogspot.com/2009/01/this-one-got-through-qa.html' title='This one got through QA:'/><author><name>KiwiBastard</name><uri>http://www.blogger.com/profile/06464945422472093454</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/_KYTD7b1k7ko/SWvXCcQKRMI/AAAAAAAAAFI/6_QwWydZUXY/s72-c/ms_dialog.png' height='72' width='72'/><thr:total>62</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21172681.post-3613941710211620611</id><published>2009-01-05T08:59:00.003Z</published><updated>2009-01-05T09:01:17.725Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Hundred Pushups'/><category scheme='http://www.blogger.com/atom/ns#' term='iPhone'/><title type='text'>Hundred Pushups iPhone App</title><content type='html'>The Hundred Pushups iPhone app has been released to the App Store.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=301174591&amp;mt=8"&gt;Link here&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Use the app to gain strength, lose weight and above all reach the goal of 100 push ups in 6 weeks. I can personally vouch for the program as I have done it myself and the iPhone app is the perfect companion.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21172681-3613941710211620611?l=softwarex-nz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarex-nz.blogspot.com/feeds/3613941710211620611/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21172681&amp;postID=3613941710211620611' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/3613941710211620611'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/3613941710211620611'/><link rel='alternate' type='text/html' href='http://softwarex-nz.blogspot.com/2009/01/hundred-pushups-iphone-app.html' title='Hundred Pushups iPhone App'/><author><name>KiwiBastard</name><uri>http://www.blogger.com/profile/06464945422472093454</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-21172681.post-8230148366711359137</id><published>2009-01-04T19:09:00.003Z</published><updated>2009-01-04T19:27:03.247Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Keynote Predictions'/><title type='text'>Macworld Expo Keynote Predictions</title><content type='html'>Prediction one: This will be the last time I predict what will be announced at Macworld Expo by Apple!&lt;br /&gt;&lt;br /&gt;I've been pretty busy with other things, including publishing an &lt;a href="http://www.retainrelease.com/page2/page2.html"&gt;app &lt;/a&gt;for the iPhone. (Note to self: change the urls for that...) and with the impending arrival of child number two, I haven't been keeping up with the rumours. So this year all of my predictions will be completely off the cuff. So here goes (in no particular order):&lt;br /&gt;&lt;br /&gt;1) Update to iLife and iWork - it's been almost a year and a half for iWork and at least a year for iLife so they are due&lt;br /&gt;2) Mac Mini / AppleTV refresh. Both are due for either a cut or a revamp. I can't see too much happening with the ATV as it's pretty much a hobby sideline for Apple. It would be nice to see a Mini upgrade with more ram and CPU bump. It would be great to see a mini with some kind of ATV integration, although again can't see it&lt;br /&gt;3) Refresh to iMac line up. This could just be a CPU and Video bump, but maybe a refinement of the design. Although, IMHO they are spot on as it is. I can guarantee this one because I bought a new iMac about 3 months ago!&lt;br /&gt;&lt;br /&gt;I think the above will happen in some shape or form. The next list is things that could happen, but probably won't, or ones I want to happen...&lt;br /&gt;&lt;br /&gt;1) iTablet. This would be computing nirvana for me if this happened. I can't see Apple announcing this outside of an Apple run event. The current financial climate might not be the place for this kind of device either&lt;br /&gt;2) Mac App Store: Like the iPhone app store but for Mac Apps. I want this as a (sometimes) indie developer rather than an end user, but it would be awesome for all concerned. The only issue would be the bottom dweller price trend could continue for Mac apps - apps selling for less than they should because some developers put their apps at too low a price&lt;br /&gt;3) Apple to announce an across the board dropping of prices by 20% due to current economic climate.  &lt;br /&gt;&lt;br /&gt;Well that's it. Will report back with my hit and miss rate.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21172681-8230148366711359137?l=softwarex-nz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarex-nz.blogspot.com/feeds/8230148366711359137/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21172681&amp;postID=8230148366711359137' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/8230148366711359137'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/8230148366711359137'/><link rel='alternate' type='text/html' href='http://softwarex-nz.blogspot.com/2009/01/macworld-expo-keynote-predictions.html' title='Macworld Expo Keynote Predictions'/><author><name>KiwiBastard</name><uri>http://www.blogger.com/profile/06464945422472093454</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-21172681.post-1296704303898748795</id><published>2008-12-30T21:36:00.002Z</published><updated>2008-12-30T22:08:30.971Z</updated><title type='text'>The Commuting Year in Review</title><content type='html'>I was listening to the &lt;a href="http://www.twit.tv"&gt;TWIT&lt;/a&gt; year in review on the way into work this morning. I listened to every episode this year while commuting. If totaled in miles it would be a long way.&lt;br /&gt;&lt;br /&gt;I started off the year traveling to Northampton by train from Rugby: &lt;iframe width="425" height="350" frameborder="0" scrolling="no" marginheight="0" marginwidth="0" src="http://maps.google.co.uk/maps?f=d&amp;amp;saddr=52.374761,-1.240082&amp;amp;daddr=Northampton,+Rail+Station+(E-bound)&amp;amp;hl=en&amp;amp;geocode=%3BCSILILoDnySRFTAUHQMdkivy_yGcTzLlsi8PlQ&amp;amp;mra=pe&amp;amp;mrcr=0&amp;amp;sll=52.214339,-0.918045&amp;amp;sspn=0.425341,1.057434&amp;amp;ie=UTF8&amp;amp;ll=52.308405,-1.07325&amp;amp;spn=0.15509,0.33384&amp;amp;output=embed&amp;amp;s=AARTsJqcseKHw83M5byHPQdDYE1KwzSoAg"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;small&gt;&lt;a href="http://maps.google.co.uk/maps?f=d&amp;amp;saddr=52.374761,-1.240082&amp;amp;daddr=Northampton,+Rail+Station+(E-bound)&amp;amp;hl=en&amp;amp;geocode=%3BCSILILoDnySRFTAUHQMdkivy_yGcTzLlsi8PlQ&amp;amp;mra=pe&amp;amp;mrcr=0&amp;amp;sll=52.214339,-0.918045&amp;amp;sspn=0.425341,1.057434&amp;amp;ie=UTF8&amp;amp;ll=52.308405,-1.07325&amp;amp;spn=0.15509,0.33384&amp;amp;source=embed" style="color:#0000FF;text-align:left"&gt;View Larger Map&lt;/a&gt;&lt;/small&gt;&lt;br /&gt;&lt;br /&gt;I did that until February. I was working for a marketing company making enhancements to a legacy Delphi based system. It was without a doubt the worst job ever. The people who worked there were idiots, the work environment sucked and it was the most miserable 3 months I have ever spent. Not a great way to start the year.&lt;br /&gt;&lt;br /&gt;From there I worked in Hammersmith in London and was taking the train from Rugby to London Euston:&lt;br /&gt;&lt;iframe width="425" height="350" frameborder="0" scrolling="no" marginheight="0" marginwidth="0" src="http://maps.google.co.uk/maps?f=d&amp;amp;saddr=Rugby&amp;amp;daddr=Euston+Rd,+London+NW1,+United+Kingdom&amp;amp;hl=en&amp;amp;geocode=&amp;amp;mra=pe&amp;amp;mrcr=0&amp;amp;sll=51.969901,-0.7298&amp;amp;sspn=1.710732,4.229736&amp;amp;ie=UTF8&amp;amp;ll=51.94768,-0.697285&amp;amp;spn=0.8552,1.12911&amp;amp;output=embed&amp;amp;s=AARTsJoZAgztHwPU5B4Q2AUwdUXDA5sjIg"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;small&gt;&lt;a href="http://maps.google.co.uk/maps?f=d&amp;amp;saddr=Rugby&amp;amp;daddr=Euston+Rd,+London+NW1,+United+Kingdom&amp;amp;hl=en&amp;amp;geocode=&amp;amp;mra=pe&amp;amp;mrcr=0&amp;amp;sll=51.969901,-0.7298&amp;amp;sspn=1.710732,4.229736&amp;amp;ie=UTF8&amp;amp;ll=51.94768,-0.697285&amp;amp;spn=0.8552,1.12911&amp;amp;source=embed" style="color:#0000FF;text-align:left"&gt;View Larger Map&lt;/a&gt;&lt;/small&gt;&lt;br /&gt;&lt;br /&gt;and then the underground from Euston to Hammersmith:&lt;br /&gt;&lt;br /&gt;&lt;iframe width="425" height="350" frameborder="0" scrolling="no" marginheight="0" marginwidth="0" src="http://maps.google.co.uk/maps?f=d&amp;amp;saddr=Euston+Station,+Camden,+London+NW1,+United+Kingdom&amp;amp;daddr=Ravenscourt+Park+Station,+London+Underground+Ltd.,+Ravenscourt+Rd,+London,+W6+0UG+(Ravenscourt+Park)&amp;amp;hl=en&amp;amp;geocode=%3BCUJrDXN9_IUPFfi8EQMdHmX8_yH33Td7TtGN6w&amp;amp;mra=pe&amp;amp;mrcr=0&amp;amp;sll=51.486193,-0.238953&amp;amp;sspn=0.10807,0.264359&amp;amp;ie=UTF8&amp;amp;ll=51.51081,-0.1841&amp;amp;spn=0.03584,0.10754&amp;amp;output=embed&amp;amp;s=AARTsJpliV5rfndkJeu2s2xOdACure7fgA"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;small&gt;&lt;a href="http://maps.google.co.uk/maps?f=d&amp;amp;saddr=Euston+Station,+Camden,+London+NW1,+United+Kingdom&amp;amp;daddr=Ravenscourt+Park+Station,+London+Underground+Ltd.,+Ravenscourt+Rd,+London,+W6+0UG+(Ravenscourt+Park)&amp;amp;hl=en&amp;amp;geocode=%3BCUJrDXN9_IUPFfi8EQMdHmX8_yH33Td7TtGN6w&amp;amp;mra=pe&amp;amp;mrcr=0&amp;amp;sll=51.486193,-0.238953&amp;amp;sspn=0.10807,0.264359&amp;amp;ie=UTF8&amp;amp;ll=51.51081,-0.1841&amp;amp;spn=0.03584,0.10754&amp;amp;source=embed" style="color:#0000FF;text-align:left"&gt;View Larger Map&lt;/a&gt;&lt;/small&gt;&lt;br /&gt;&lt;br /&gt;I worked there for a local authority creating a portal site for customers. It was done using ASP.NET and C#, with a Biztalk layer connecting the different systems. I was pretty much responsible for the front end which was great. It was a hell commute, but the job was interesting and the people I worked with were great. It was a great step up from the previous job. &lt;br /&gt;&lt;br /&gt;Commuting by train and tube was always interesting, sometimes frustrating, but glad I did it. It was a great "life" experience and took me way out of my comfort zone. Having to deal with 4 million other commuters was interesting for a boy from Temuka! I do feel sorry for the people that have to do it everyday for the rest of their working lives. We don't know how lucky we are here in New Zealand when it comes down to it.&lt;br /&gt;&lt;br /&gt;From there I worked in Corby which was about an hours drive from Rugby up the A14. The A14 is the road trucks use to get to the M1 and the M6. It was jammed with trucks and the Cathorpe junction where the M6 and M1 merge was always fun! Again it was a great experience and gave me plenty of time to listen to Twit...&lt;br /&gt;&lt;iframe width="425" height="350" frameborder="0" scrolling="no" marginheight="0" marginwidth="0" src="http://maps.google.co.uk/maps?f=d&amp;amp;saddr=cv225ln&amp;amp;daddr=valassis,+corby&amp;amp;hl=en&amp;amp;geocode=&amp;amp;mra=ls&amp;amp;sll=51.51081,-0.1841&amp;amp;sspn=0.108012,0.264359&amp;amp;ie=UTF8&amp;amp;ll=52.43265,-0.951345&amp;amp;spn=0.13278,0.60695&amp;amp;output=embed&amp;amp;s=AARTsJpY0uTVEadXI-QdY35Vdd_Qjmh1wg"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;small&gt;&lt;a href="http://maps.google.co.uk/maps?f=d&amp;amp;saddr=cv225ln&amp;amp;daddr=valassis,+corby&amp;amp;hl=en&amp;amp;geocode=&amp;amp;mra=ls&amp;amp;sll=51.51081,-0.1841&amp;amp;sspn=0.108012,0.264359&amp;amp;ie=UTF8&amp;amp;ll=52.43265,-0.951345&amp;amp;spn=0.13278,0.60695&amp;amp;source=embed" style="color:#0000FF;text-align:left"&gt;View Larger Map&lt;/a&gt;&lt;/small&gt;&lt;br /&gt;&lt;br /&gt;I was the lead architect for a freight management system written in C#, with a Sql Server backend. I also did some training - upskilling some AS400 developers to .NET - which I enjoyed. Again the people were great, but needed a better processes in place, which they were aware of so good luck to them for the future.&lt;br /&gt;&lt;br /&gt;I finished there in late August and we flew back to New Zealand and moved into our house in Timaru. (Sorry google doesn't do directions from Heathrow to NZ!)&lt;br /&gt;&lt;br /&gt;I now do a daily commute from Timaru to Ashburton which is about an hour.&lt;br /&gt;&lt;iframe width="425" height="350" frameborder="0" scrolling="no" marginheight="0" marginwidth="0" src="http://maps.google.co.nz/maps?f=d&amp;amp;saddr=King+St,+Timaru,+7910&amp;amp;daddr=Ashburton&amp;amp;hl=en&amp;amp;geocode=&amp;amp;mra=ls&amp;amp;sll=-41.244772,172.617188&amp;amp;sspn=65.529084,135.351562&amp;amp;ie=UTF8&amp;amp;ll=-44.152585,171.492865&amp;amp;spn=0.50017,0.51293&amp;amp;output=embed&amp;amp;s=AARTsJqU3rZZHELkoVQuShA22WEl_R9kiw"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;small&gt;&lt;a href="http://maps.google.co.nz/maps?f=d&amp;amp;saddr=King+St,+Timaru,+7910&amp;amp;daddr=Ashburton&amp;amp;hl=en&amp;amp;geocode=&amp;amp;mra=ls&amp;amp;sll=-41.244772,172.617188&amp;amp;sspn=65.529084,135.351562&amp;amp;ie=UTF8&amp;amp;ll=-44.152585,171.492865&amp;amp;spn=0.50017,0.51293&amp;amp;source=embed" style="color:#0000FF;text-align:left"&gt;View Larger Map&lt;/a&gt;&lt;/small&gt;&lt;br /&gt;&lt;br /&gt;I work for a Bank doing the teller systems (MFC/C++) and the Internet Banking Site (.NET). It is all interesting work and I look forward to being involved with the migration from MFC to C# which will be started sometime in 2009.&lt;br /&gt;&lt;br /&gt;So all in all I did a lot of commuting this year and will have more next.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21172681-1296704303898748795?l=softwarex-nz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarex-nz.blogspot.com/feeds/1296704303898748795/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21172681&amp;postID=1296704303898748795' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/1296704303898748795'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/1296704303898748795'/><link rel='alternate' type='text/html' href='http://softwarex-nz.blogspot.com/2008/12/commuting-year-in-review.html' title='The Commuting Year in Review'/><author><name>KiwiBastard</name><uri>http://www.blogger.com/profile/06464945422472093454</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-21172681.post-5369701205793767106</id><published>2008-12-17T08:24:00.002Z</published><updated>2008-12-17T08:30:15.123Z</updated><title type='text'>Remote desktop connection cannot verify the identity of the computer</title><content type='html'>If you get the following error: "Remote desktop connection cannot verify the identity of the computer that &lt;br /&gt;you want to connect to. try reconnecting to the windows-based computer or &lt;br /&gt;contatct your administrator." &lt;br /&gt;&lt;br /&gt;when trying to connect OS X to a Windows Machine via RDP then do the following:&lt;br /&gt;&lt;br /&gt;1) Delete all files in /user/{username}/Documents/RDC Connections&lt;br /&gt;2) Don't fill in the domain text box&lt;br /&gt;&lt;br /&gt;for some reason when using the Mac client if the domain text box is filled then the Windows machine at the other end can't authenticate the connection. Seems to be worse with Vista, but I have read of this happening with 2003 also.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21172681-5369701205793767106?l=softwarex-nz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarex-nz.blogspot.com/feeds/5369701205793767106/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21172681&amp;postID=5369701205793767106' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/5369701205793767106'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/5369701205793767106'/><link rel='alternate' type='text/html' href='http://softwarex-nz.blogspot.com/2008/12/remote-desktop-connection-cannot-verify.html' title='Remote desktop connection cannot verify the identity of the computer'/><author><name>KiwiBastard</name><uri>http://www.blogger.com/profile/06464945422472093454</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>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21172681.post-7974415878774123640</id><published>2008-10-29T10:08:00.003Z</published><updated>2008-10-29T10:14:36.199Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='iPhone'/><title type='text'>Linking iPhone/iPod Touch with Xcode</title><content type='html'>I just spent the last hour or so trying to get my iPod touch working with Xcode so I could debug on the device&lt;br /&gt;&lt;br /&gt;If you are having trouble after you have followed the instructions on Apples developer site, here's what to do:&lt;br /&gt;&lt;br /&gt;In Xcode, right click the info.plist file and select open as text file. This will open the bundle as a plain text Xml file. &lt;br /&gt;&lt;br /&gt;Find the Key:&lt;br /&gt;&lt;key&gt;CFBundleIdentifier&lt;/key&gt;&lt;br /&gt;and below it will be a string element. Change the text between the element to your AppId minus the 10 digit number and the dot.&lt;br /&gt;&lt;br /&gt;So for example if your appId is 1234567890.com.mycompany.myApp then change it to com.mycompany.myApp&lt;br /&gt;&lt;br /&gt;Easy thing to do, but hard thing to solve.&lt;br /&gt;&lt;br /&gt;Hope that saves someone the hours of frustration I had.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21172681-7974415878774123640?l=softwarex-nz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarex-nz.blogspot.com/feeds/7974415878774123640/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21172681&amp;postID=7974415878774123640' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/7974415878774123640'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/7974415878774123640'/><link rel='alternate' type='text/html' href='http://softwarex-nz.blogspot.com/2008/10/linking-iphoneipod-touch-with-xcode.html' title='Linking iPhone/iPod Touch with Xcode'/><author><name>KiwiBastard</name><uri>http://www.blogger.com/profile/06464945422472093454</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-21172681.post-4850119418660567661</id><published>2008-10-28T01:53:00.002Z</published><updated>2008-10-28T01:56:36.643Z</updated><title type='text'>20 Second SQL tip</title><content type='html'>If you restore from a backup with NORECOVERY from the GUI it sometimes doesn't bring the database back online, even if the restore succeeds.&lt;br /&gt;&lt;br /&gt;So if you are stuck with a database that no matter how long you give it, the status is restoring, or loading the following command should work:&lt;br /&gt;&lt;br /&gt;RESTORE DATABASE databaseName WITH RECOVERY&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21172681-4850119418660567661?l=softwarex-nz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarex-nz.blogspot.com/feeds/4850119418660567661/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21172681&amp;postID=4850119418660567661' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/4850119418660567661'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/4850119418660567661'/><link rel='alternate' type='text/html' href='http://softwarex-nz.blogspot.com/2008/10/20-second-sql-tip.html' title='20 Second SQL tip'/><author><name>KiwiBastard</name><uri>http://www.blogger.com/profile/06464945422472093454</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-21172681.post-573726209360494074</id><published>2008-10-23T00:18:00.003+01:00</published><updated>2008-10-23T00:48:46.842+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='StackOverflow'/><title type='text'>StackOverflow: the good, the bad, the ugly</title><content type='html'>The eternal dilemma for developers is finding the answer to their specific question. There are a number of sites on the web that try to help, some free, some not.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://stackoverflow.com"&gt;Stackoverflow&lt;/a&gt; is the latest attempt to create an ultimate resource for answers to programmers questions. It is the brain child of notable (or notorious depending on your view) doyens of the development community, Jeff Atwood and Joel Spolsky (who has Kiwi heritage).&lt;br /&gt;&lt;br /&gt;The actual site is a work of genius. It is clean, clear and crisp and is, without a shadow of doubt, the best website engine of it's kind. Period. &lt;br /&gt;&lt;br /&gt;I have been a member since the very early beta days. (User Tag is &lt;a href="http://stackoverflow.com/users/1075/kiwibastard"&gt;KiwiBastard&lt;/a&gt; BTW) In the early days there was a limited number of people on the site, but even so, questions where answered in quick time, and a question would stay on the front page a good amount of time, so that people had a chance to offer a reasoned answer.&lt;br /&gt;&lt;br /&gt;Since then the private beta has gone public, the noise to signal ratio has increased. Post are only on the front page for a limited time. The questions are generally still answered but because there is more traffic, people rush an answer. It also appears that people won't bother answering a question once it has had a few answers. The reason for this is both the pro and the con of the site. The site is driven by a points and badge system.&lt;br /&gt;&lt;br /&gt;Basically, you get points in a number of ways:&lt;br /&gt;&lt;br /&gt;- Getting your answer upvoted&lt;br /&gt;- Getting your question upvoted&lt;br /&gt;- Getting your answer accepted&lt;br /&gt;&lt;br /&gt;There are other subtle ways to get points, but it becomes addictive and like a game. So you find people don't bother answering a question that has been answered, because the chance of getting points is lower than answering a question that has no or few answers. While this is good because it means new questions get answered, it also means sometimes a question never gets a CORRECT answer. This is of course a problem.&lt;br /&gt;&lt;br /&gt;The argument is, with more people, then there should be more eyeballs on each question so the net is the same as when it was a smaller audience. This argument seems to work in theory, I am finding in implementation it doesn't. The turnover of question is such that, a question just doesn't stay on the front page very long.&lt;br /&gt;&lt;br /&gt;The other issue I am finding, is the tolerance for newbies is very low. People seem to get down voted if they ask a seemingly stupid question. Seemingly stupid to experienced developers, but we were all noobs once. I try to show tolerance to these people and answer their question the best I can, and maybe point them in the right direction. It's the fair thing to do, and I'm sure that Atwood and Spolsky would prefer this approach to down voting and alienating new developers.&lt;br /&gt;&lt;br /&gt;Aside from the minor gripes, it is a great site. It will become the go to site for developers. Of that there is no doubt. I just hope that over time, newbies become better accepted, and people get use their upvoting ability a little more.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21172681-573726209360494074?l=softwarex-nz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarex-nz.blogspot.com/feeds/573726209360494074/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21172681&amp;postID=573726209360494074' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/573726209360494074'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/573726209360494074'/><link rel='alternate' type='text/html' href='http://softwarex-nz.blogspot.com/2008/10/stackoverflow-good-bad-ugly.html' title='StackOverflow: the good, the bad, the ugly'/><author><name>KiwiBastard</name><uri>http://www.blogger.com/profile/06464945422472093454</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-21172681.post-8986046178699432668</id><published>2008-10-21T09:11:00.005+01:00</published><updated>2008-10-21T14:23:42.407+01:00</updated><title type='text'>Nice Gmail Tip: plus-addressing</title><content type='html'>I was digging around the Gmail docs just to see what new stuff they've been throwing in there and came across something useful that I hadn't come across before.&lt;br /&gt;&lt;br /&gt;A lot of people I know have multiple mail accounts some of which they use when signing up for stuff just in case for whatever reason that address gets "accidentally" sold to an organisation that will spam you silly. What Gmail does is provide a feature called "plus-addressing", which allows you to insert useful but ignored stuff into your Gmail address.&lt;br /&gt;&lt;br /&gt;As an example:&lt;br /&gt;&lt;br /&gt;If your mail address was myname@gmail.com (Apologies to Myna Me if you have an account) and you were signing up for something at "dodgysite.com" then you could supply the mail address in the subscription form as:&lt;br /&gt;&lt;br /&gt;myname+dodgysite@gmail.com&lt;br /&gt;&lt;br /&gt;The mails will still be routed to your account but if you start to get spammed and that address is being used then you have an idea of where they got your address from.&lt;br /&gt;&lt;br /&gt;It's quite a nice feature and when used with filters can also be used to manage mail too so you could possibly give plus-addressed addresses to everyone and include some identifiable word in the address.&lt;br /&gt;&lt;br /&gt;One thing to be aware of is that at some point if people start using this a lot then the spammers will start to circumvent it by striping out the +x part, but that doesn't seem to be the case at the moment.&lt;br /&gt;&lt;br /&gt;EDIT: Nic points out quite rightly that this isn't strictly a Gmail feature but is part of the mail specs such as &lt;a href="http://tools.ietf.org/html/rfc5233"&gt;RFC5233&lt;/a&gt; and yes, it is dependent on the site you're supplying the address to actually accepting a "+" (the latest version of Fring on iPhone doesn't even allow "."!!!!)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21172681-8986046178699432668?l=softwarex-nz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarex-nz.blogspot.com/feeds/8986046178699432668/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21172681&amp;postID=8986046178699432668' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/8986046178699432668'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/8986046178699432668'/><link rel='alternate' type='text/html' href='http://softwarex-nz.blogspot.com/2008/10/nice-gmail-tip-tracing-spammers.html' title='Nice Gmail Tip: plus-addressing'/><author><name>Shaun Austin</name><uri>http://www.blogger.com/profile/02260217349188216865</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_bD8NWacRq1E/SZQ_gbtLXVI/AAAAAAAAAFE/zRx2i4y9Frw/S220/dharma.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21172681.post-3315145554539630929</id><published>2008-10-08T20:28:00.002+01:00</published><updated>2008-10-08T20:38:04.730+01:00</updated><title type='text'>Useful Vista Tip: Open Command Window</title><content type='html'>Windows 2000 and XP had a bunch of power tools that had great, but little enhancements to Windows that made doing geeky things just a little easier. Unfortunately, there are no power tools for Vista. The most useful power toy I found was the ability to open a shell command window from an explorer window, by right clicking in the window and selecting the "Open Cmd Window" option.&lt;br /&gt;&lt;br /&gt;Well, it turns out this feature is baked into Vista, but hidden away behind the scenes. To get it to work you simply hold down SHIFT, while right clicking in the Explorer Window. &lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_KYTD7b1k7ko/SO0L-vNQdMI/AAAAAAAAAEg/x-jdWjlxFO8/s1600-h/cmdwindow.png"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://2.bp.blogspot.com/_KYTD7b1k7ko/SO0L-vNQdMI/AAAAAAAAAEg/x-jdWjlxFO8/s400/cmdwindow.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5254869512663102658" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21172681-3315145554539630929?l=softwarex-nz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarex-nz.blogspot.com/feeds/3315145554539630929/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21172681&amp;postID=3315145554539630929' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/3315145554539630929'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/3315145554539630929'/><link rel='alternate' type='text/html' href='http://softwarex-nz.blogspot.com/2008/10/useful-vista-tip-open-command-window.html' title='Useful Vista Tip: Open Command Window'/><author><name>KiwiBastard</name><uri>http://www.blogger.com/profile/06464945422472093454</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/_KYTD7b1k7ko/SO0L-vNQdMI/AAAAAAAAAEg/x-jdWjlxFO8/s72-c/cmdwindow.png' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21172681.post-3078251180620022044</id><published>2008-09-12T18:27:00.004+01:00</published><updated>2008-09-13T14:38:02.762+01:00</updated><title type='text'>iPhone 2.1 - Pointless!</title><content type='html'>I had really high expectations for the 2.1 update. Sadly it was always going to be a disappointment. Again I have been with a friend who owns a different phone on O2 and while his phone is showing 3 or 4 bars mine is showing No Service. Damn! Equally annoying is the fact that the phone apologists seem to fall back on the "number of bars does not mean the same thing across different phones" argument, but No Service is No fucking Service on any phone.&lt;br /&gt;&lt;br /&gt;Anyway, another thing (other than Genius, aka please buy music you don't want) the only real difference I've noticed is a new little circle icon at the top where the connection type is shown, as you can see in the following pic. I have no idea what it represents and have not seen it before.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_bD8NWacRq1E/SMqnp8MP0kI/AAAAAAAAADE/-Xyx4ug4HBI/s1600-h/photo.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_bD8NWacRq1E/SMqnp8MP0kI/AAAAAAAAADE/-Xyx4ug4HBI/s400/photo.jpg" alt="" id="BLOGGER_PHOTO_ID_5245189055000334914" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;What it isn't is:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;3G&lt;/li&gt;&lt;li&gt;Edge&lt;/li&gt;&lt;li&gt;GPRS (I don't think, that's a square with hollow circle)&lt;/li&gt;&lt;li&gt;Wireless&lt;/li&gt;&lt;/ul&gt;Be interested if anyone has any idea what it might be.&lt;br /&gt;&lt;br /&gt;EDIT:&lt;br /&gt;&lt;br /&gt;Looks like this post is as useless as the update. It appears that all of the icons for the various data modes have been changed.  3G is now just white text rather than black on a white square so I'm assuming that the circle above is the GPRS equivalent to that. Surely the change isn't intended to save some battery power by lighting up 5 fewer pixels!!!!&lt;br /&gt;&lt;br /&gt;Since 24 hours now I've been running 2.1 and none of my original gripes are fixed.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21172681-3078251180620022044?l=softwarex-nz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarex-nz.blogspot.com/feeds/3078251180620022044/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21172681&amp;postID=3078251180620022044' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/3078251180620022044'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/3078251180620022044'/><link rel='alternate' type='text/html' href='http://softwarex-nz.blogspot.com/2008/09/iphone-21-pointless.html' title='iPhone 2.1 - Pointless!'/><author><name>Shaun Austin</name><uri>http://www.blogger.com/profile/02260217349188216865</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_bD8NWacRq1E/SZQ_gbtLXVI/AAAAAAAAAFE/zRx2i4y9Frw/S220/dharma.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_bD8NWacRq1E/SMqnp8MP0kI/AAAAAAAAADE/-Xyx4ug4HBI/s72-c/photo.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21172681.post-4999212925383858656</id><published>2008-09-11T02:18:00.003+01:00</published><updated>2008-09-11T02:28:35.514+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET'/><title type='text'>Exclude CSS from Authentication in ASP.NET</title><content type='html'>This little thing has bugged me for a while. The CSS for authenticated sites where only showing once the user had logged in. This means that the Log On and Log Off pages are unstyled - although usually for me anyway, on my dev machine - seems to be ok live.&lt;br /&gt;&lt;br /&gt;Well, if this is the case, you need to exclude the CSS folder (or files) from Authentication. This is achieved by added the following code to the web.config file somewhere in the configuration section&lt;br /&gt;&lt;br /&gt;&amp;lt;location path="css"&amp;gt;&lt;br /&gt;   &amp;lt;system.web&amp;gt;&lt;br /&gt;     &amp;lt;authorization&amp;gt;&lt;br /&gt;       &amp;lt;allow users="*"&amp;gt;&amp;lt;/allow&amp;gt;&lt;br /&gt;     &amp;lt;/authorization&amp;gt;&lt;br /&gt;   &amp;lt;/system.web&amp;gt;&lt;br /&gt; &amp;lt;/location&amp;gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21172681-4999212925383858656?l=softwarex-nz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarex-nz.blogspot.com/feeds/4999212925383858656/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21172681&amp;postID=4999212925383858656' title='12 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/4999212925383858656'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/4999212925383858656'/><link rel='alternate' type='text/html' href='http://softwarex-nz.blogspot.com/2008/09/exclude-css-from-authentication-in.html' title='Exclude CSS from Authentication in ASP.NET'/><author><name>KiwiBastard</name><uri>http://www.blogger.com/profile/06464945422472093454</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>12</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21172681.post-5603277624744376169</id><published>2008-09-03T19:16:00.002+01:00</published><updated>2008-09-03T19:21:08.692+01:00</updated><title type='text'>The Tao Of Programming</title><content type='html'>This will put a smile on your dial.  Old but still funny.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.canonical.org/~kragen/tao-of-programming.html"&gt;http://www.canonical.org/~kragen/tao-of-programming.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;My favourite quote being:&lt;br /&gt;"Each language has its purpose, however humble. Each language expresses the Yin and Yang of software. Each language has its place within the Tao.&lt;br /&gt;&lt;br /&gt;But do not program in COBOL if you can avoid it. "&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21172681-5603277624744376169?l=softwarex-nz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarex-nz.blogspot.com/feeds/5603277624744376169/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21172681&amp;postID=5603277624744376169' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/5603277624744376169'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/5603277624744376169'/><link rel='alternate' type='text/html' href='http://softwarex-nz.blogspot.com/2008/09/tao-of-programming.html' title='The Tao Of Programming'/><author><name>Daniel Robinson</name><uri>http://www.blogger.com/profile/14804193273433447081</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-21172681.post-5756305114115899947</id><published>2008-08-28T16:01:00.002+01:00</published><updated>2008-08-28T16:02:48.068+01:00</updated><title type='text'>Do the hundred?</title><content type='html'>Can you do 100 press-ups? If not then follow this program &lt;a href="http://www.hundredpushups.com"&gt;one hundred push ups&lt;/a&gt; and you will be able to after 6 weeks.&lt;br /&gt;&lt;br /&gt;I start tomorrow and managed a feeble 17 on my initial test...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21172681-5756305114115899947?l=softwarex-nz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarex-nz.blogspot.com/feeds/5756305114115899947/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21172681&amp;postID=5756305114115899947' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/5756305114115899947'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/5756305114115899947'/><link rel='alternate' type='text/html' href='http://softwarex-nz.blogspot.com/2008/08/do-hundred.html' title='Do the hundred?'/><author><name>KiwiBastard</name><uri>http://www.blogger.com/profile/06464945422472093454</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-21172681.post-5529436546688749458</id><published>2008-08-28T12:53:00.003+01:00</published><updated>2008-08-28T13:04:03.648+01:00</updated><title type='text'>Is there a more diverse field than software development?</title><content type='html'>I've been on the &lt;a href="http://beta.stackoverflow.com"&gt;Stack Overflow&lt;/a&gt; for a couple of weeks. If you've been under a rock and don't know, Stack Overflow is a Q+A website for programmers, developed as a joint venture between industry luminaries &lt;a href="http://www.codinghorror.com"&gt;Jeff Atwood&lt;/a&gt; and &lt;a href="http://www.joelonsoftware.com"&gt;Joel Spolsky&lt;/a&gt;. &lt;br /&gt;&lt;br /&gt;From the questions that fellow developers have asked, it highlights that a lot of people are doing a lot of vastly different things. Everything from tracing the inner exception of a soap message in ASP.NET through to rendering a tree structure in Django through to wondering the performance implications of case insensitivity in Regular Expressions.&lt;br /&gt;&lt;br /&gt;This is why I love software development. There are so many fields to get into, and so many languages to learn and so many ways to do the same thing. If you get stale, you can just learn a new language or technology in your current language.&lt;br /&gt;&lt;br /&gt;So my question is - is there any other industry that is as diverse?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21172681-5529436546688749458?l=softwarex-nz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarex-nz.blogspot.com/feeds/5529436546688749458/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21172681&amp;postID=5529436546688749458' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/5529436546688749458'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/5529436546688749458'/><link rel='alternate' type='text/html' href='http://softwarex-nz.blogspot.com/2008/08/is-there-more-diverse-field-than.html' title='Is there a more diverse field than software development?'/><author><name>KiwiBastard</name><uri>http://www.blogger.com/profile/06464945422472093454</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-21172681.post-6002550251535006902</id><published>2008-08-27T13:48:00.003+01:00</published><updated>2008-08-27T13:54:13.233+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='List.Sort'/><title type='text'>Sorting a List using delegates</title><content type='html'>I have to sort Lists of Custom classes relatively frequently. Everytime I am about to write the Sort code, I always forget how to do it for a breif second. So as a reminder, I thought I would put a post on how to do it.&lt;br /&gt;&lt;br /&gt;Say you have a List of Customer classes. &lt;br /&gt;&lt;br /&gt;List&lt;Customers&gt; customerList = new List&lt;Customers&gt;();&lt;br /&gt;customerList.PopulateList();&lt;br /&gt;&lt;br /&gt;Now if you want to sort by a property in the list (for example BusinessName) you can do the following:&lt;br /&gt;&lt;br /&gt;customerList.Sort( delegate( Customer x, Customer y)&lt;br /&gt;{&lt;br /&gt;   return x.BusinessName.CompareTo(y.BusinessName);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;Done.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21172681-6002550251535006902?l=softwarex-nz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarex-nz.blogspot.com/feeds/6002550251535006902/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21172681&amp;postID=6002550251535006902' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/6002550251535006902'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/6002550251535006902'/><link rel='alternate' type='text/html' href='http://softwarex-nz.blogspot.com/2008/08/sorting-list-using-delegates.html' title='Sorting a List&lt;T&gt; using delegates'/><author><name>KiwiBastard</name><uri>http://www.blogger.com/profile/06464945422472093454</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>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21172681.post-566874135088454420</id><published>2008-08-22T10:03:00.004+01:00</published><updated>2008-08-22T10:27:08.991+01:00</updated><title type='text'>Jingoistic reporting of the truth?</title><content type='html'>&lt;p&gt;Olympic medal table from the BBC:&lt;br /&gt;&lt;table&gt;&lt;br /&gt;&lt;tbody&gt;&lt;tr&gt;&lt;th&gt;Rank&lt;/th&gt;&lt;th&gt;Country&lt;/th&gt;&lt;th&gt;Gold&lt;/th&gt;&lt;th&gt;Silver&lt;/th&gt;&lt;th&gt;Bronze&lt;/th&gt;&lt;th&gt;TOTAL&lt;/th&gt;&lt;br /&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;China&lt;/td&gt;&lt;td&gt;46&lt;/td&gt;&lt;td&gt;15&lt;/td&gt;&lt;td&gt;22&lt;/td&gt;&lt;td&gt;83&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;USA&lt;/td&gt;&lt;td&gt;30&lt;/td&gt; &lt;td&gt;35&lt;/td&gt;&lt;td&gt;34&lt;/td&gt;&lt;td&gt;99&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;3&lt;/td&gt;&lt;td&gt;Great Britain&lt;/td&gt;&lt;td&gt;18&lt;/td&gt;&lt;td&gt;12&lt;/td&gt;&lt;td&gt;11&lt;/td&gt;  &lt;td&gt;41&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;4&lt;/td&gt;&lt;td&gt;Russia&lt;/td&gt;  &lt;td&gt;16&lt;/td&gt;  &lt;td&gt;16&lt;/td&gt;  &lt;td&gt;20&lt;/td&gt;  &lt;td&gt;52&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;5&lt;/td&gt;&lt;td&gt;Germany&lt;/td&gt;  &lt;td&gt;13&lt;/td&gt;  &lt;td&gt;8&lt;/td&gt;  &lt;td&gt;12&lt;/td&gt;  &lt;td&gt;33&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;6&lt;/td&gt;&lt;td&gt;Australia&lt;/td&gt;  &lt;td&gt;11&lt;/td&gt;  &lt;td&gt;14&lt;/td&gt;  &lt;td&gt;16&lt;/td&gt; &lt;td&gt;41&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;/tbody&gt;&lt;/table&gt;As reported by NBC.com&lt;br /&gt;&lt;table&gt;&lt;br /&gt;&lt;tbody&gt;&lt;tr&gt;&lt;th&gt;Rank&lt;/th&gt;&lt;th&gt;Country&lt;/th&gt;&lt;th&gt;Gold&lt;/th&gt;&lt;th&gt;Silver&lt;/th&gt;&lt;th&gt;Bronze&lt;/th&gt;&lt;th&gt;TOTAL&lt;/th&gt;&lt;br /&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;China&lt;/td&gt;&lt;td&gt;46&lt;/td&gt;&lt;td&gt;15&lt;/td&gt;&lt;td&gt;22&lt;/td&gt;&lt;td&gt;83&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;USA&lt;/td&gt;&lt;td&gt;30&lt;/td&gt; &lt;td&gt;35&lt;/td&gt;&lt;td&gt;34&lt;/td&gt;&lt;td&gt;99&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;4&lt;/td&gt;&lt;td&gt;Russia&lt;/td&gt;  &lt;td&gt;16&lt;/td&gt;  &lt;td&gt;16&lt;/td&gt;  &lt;td&gt;20&lt;/td&gt;  &lt;td&gt;52&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;3&lt;/td&gt;&lt;td&gt;Great Britain&lt;/td&gt;&lt;td&gt;18&lt;/td&gt;&lt;td&gt;12&lt;/td&gt;&lt;td&gt;11&lt;/td&gt;  &lt;td&gt;41&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;6&lt;/td&gt;&lt;td&gt;Australia&lt;/td&gt;  &lt;td&gt;11&lt;/td&gt;  &lt;td&gt;14&lt;/td&gt;  &lt;td&gt;16&lt;/td&gt; &lt;td&gt;41&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;5&lt;/td&gt;&lt;td&gt;Germany&lt;/td&gt;  &lt;td&gt;13&lt;/td&gt;  &lt;td&gt;8&lt;/td&gt;  &lt;td&gt;12&lt;/td&gt;  &lt;td&gt;33&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/p&gt;Which one is correct?&lt;br /&gt;&lt;br /&gt;Well to me it is a MEDAL table, not a gold medal table. Either rename the table or repot the truth people!&lt;br /&gt;&lt;br /&gt;Just a bit of tongue in cheek fun, but it has been hard work being a Kiwi in the UK over the Olympics. The Brits are worse winners than the Australians. For what it's worth, the &lt;a href="http://www.nzherald.co.nz/section/4/story.cfm?c_id=4&amp;amp;objectid=10528184"&gt;per capita table&lt;/a&gt; is the real indication of success...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21172681-566874135088454420?l=softwarex-nz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarex-nz.blogspot.com/feeds/566874135088454420/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21172681&amp;postID=566874135088454420' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/566874135088454420'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/566874135088454420'/><link rel='alternate' type='text/html' href='http://softwarex-nz.blogspot.com/2008/08/jingoistic-reporting-of-truth.html' title='Jingoistic reporting of the truth?'/><author><name>KiwiBastard</name><uri>http://www.blogger.com/profile/06464945422472093454</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-21172681.post-228492997032538083</id><published>2008-08-21T09:05:00.005+01:00</published><updated>2008-08-21T09:41:32.171+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Signal'/><category scheme='http://www.blogger.com/atom/ns#' term='iPhone'/><category scheme='http://www.blogger.com/atom/ns#' term='Update'/><category scheme='http://www.blogger.com/atom/ns#' term='3G'/><title type='text'>iPhone 2.0.2 Update - admitting a problem?</title><content type='html'>I've had my iPhone now for a few weeks and as far as the device itself is concerned I'm really impressed. I've got another post queued up to add to the noise bascially discussing how I've found it and "good bits", "bad bits" etc. but the main issue I've had since it arrived is the really, really crappy reception.&lt;br /&gt;&lt;br /&gt;In the UK we are on O2, a company not renowned for having the best coverage (although I think they would dissagree.) On their website, they have a tool which lets you put in a postcode or town, and it shows a (crappy) map coloured to show what sort of service you should expect in that area. For my local area, the entire map is coloured to indicate full HSDPA. This means I should be getting a reasonably good 3G signal in most places. The sad reality has been that even in the MAIN street of the villiage of Bishop's Cleeve, where I should get max sig, all I see is "No Service".&lt;br /&gt;&lt;br /&gt;It's a bit lame, but I haven't bothered (read: summoned the patience) to talk to O2 about it yet, although that call is imminent. But what surprised me the other day was a friend of mine has an LG on O2 and both phones sat next to each other on a table, one was showing strong signal and 3G while my iPhone was a single bar with no data but more often "No Service" this leads me to suspect that it is more a problem with the phone itself.&lt;br /&gt;&lt;br /&gt;When the update came out the other day to 2.0.2 I dutifully upgraded and since then the behaviour of the phone has been... odd! Some stuff I can't really put my finger on, but the main one is that whereas in the past, when the phone was in range of a wireless network, it would be constantly connected (or rather would show itself to be.) But now, the wireless connection symbol only ever appears when the phone is actually trying to fetch data. This would be fine but on some occasions the connection isn't coming up quickly enough for Safari or Twinkle and I'm getting error messages about connection problems. This even happened in the mail app once which is quite worrying.&lt;br /&gt;&lt;br /&gt;So what's going on? I know Apple are shitty when it comes to revealing what is being fixed by an update, but I am wondering if this is some kind of attempt at a quick fix for what seems to be an emerging flaw in either the software or hardware on the phone. If it is, is this an admission however subtle that there is a real issue? And if it is, it's failed, and it has also damaged the useability of the phone.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21172681-228492997032538083?l=softwarex-nz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarex-nz.blogspot.com/feeds/228492997032538083/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21172681&amp;postID=228492997032538083' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/228492997032538083'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/228492997032538083'/><link rel='alternate' type='text/html' href='http://softwarex-nz.blogspot.com/2008/08/iphone-202-update-admitting-problem.html' title='iPhone 2.0.2 Update - admitting a problem?'/><author><name>Shaun Austin</name><uri>http://www.blogger.com/profile/02260217349188216865</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_bD8NWacRq1E/SZQ_gbtLXVI/AAAAAAAAAFE/zRx2i4y9Frw/S220/dharma.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21172681.post-2917104958545601211</id><published>2008-08-21T08:49:00.003+01:00</published><updated>2008-08-21T08:59:26.353+01:00</updated><title type='text'>Maybe the Aussies aren't stupid after all</title><content type='html'>It appears that Australians are switching to Mac faster than anyone else in the world.&lt;br /&gt;&lt;br /&gt;Article &lt;a href="http://www.news.com.au/couriermail/story/0,23739,24205071-8362,00.html"&gt;here&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Macs are still a little pricey in New Zealand I think personally. It doesn't help having a distributor in between Apple and the consumer. When I was an ISV a few years ago, I looked at selling a few Macs to some customers. The distributor would only talk to you if you signed a guarantee saying you would sell at least $50k worth of Apple products per year. &lt;br /&gt;&lt;br /&gt;Which I guess is why only the major retailers sell Apple stuff, although Harvey Norman for example, make no money from the sales of Apple computer equipment - the distributor buys shelf space. That is why in most stores, the Apple stuff is tucked away in a corner - and a commision based sales person is going to show you a PC first, because they don't get a bean from the Apple sale.&lt;br /&gt;&lt;br /&gt;That needs to change, and the sooner the better. A low to mid range price point would help too - say a mac mini bundled with Screen and keyboard etc for around $1500.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21172681-2917104958545601211?l=softwarex-nz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarex-nz.blogspot.com/feeds/2917104958545601211/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21172681&amp;postID=2917104958545601211' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/2917104958545601211'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/2917104958545601211'/><link rel='alternate' type='text/html' href='http://softwarex-nz.blogspot.com/2008/08/maybe-aussies-arent-stupid-after-all.html' title='Maybe the Aussies aren&apos;t stupid after all'/><author><name>KiwiBastard</name><uri>http://www.blogger.com/profile/06464945422472093454</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-21172681.post-1332625138115703995</id><published>2008-08-19T14:19:00.003+01:00</published><updated>2008-08-19T14:37:13.872+01:00</updated><title type='text'>Final thoughts on the UK</title><content type='html'>We have a couple of hectic weeks left in the UK. I finish on 29th Aug and we fly out 31st and I start in my new job on the 8th. Nothing like a fast turn around.&lt;br /&gt;&lt;br /&gt;We have enjoyed our time in the UK. We have had the opportunity to meet a lot of nice people, some officious prats and at least one Xenophobe! &lt;br /&gt;&lt;br /&gt;We have seen some awesome, awesome things and had plenty of great experiences.&lt;br /&gt;&lt;br /&gt;I would have to say my favourite place in England is Stonehenge without a doubt, and really enjoyed Easter in York. Paris is by far and away our favourite place to visit, but had good times in Slovenia, Holland, Ireland and Italy as well.&lt;br /&gt;&lt;br /&gt;Our daughter speaks with a (posh) Uk accent now, and has spent more time in the UK than NZ. It will be a regret to us and her in the future, that she probably won't remember too much if anything from her 19 months in the Northern Hemisphere, except the 6000+ pics we have taken!&lt;br /&gt;&lt;br /&gt;I thought I would list some pros and cons of life in the UK, as much as a future reference for myself as anything else.&lt;br /&gt;&lt;br /&gt;PROS:&lt;br /&gt; - ability to see and do things in UK and Europe is fantastic and relatively cheap&lt;br /&gt; - much maligned but generally good public transport system&lt;br /&gt; - excellent roading system&lt;br /&gt; - high quality of living - things like free healthcare, competition in utilities and cheap broadband and access to multimedia&lt;br /&gt; - excellent employment opportunities &lt;br /&gt;&lt;br /&gt;CONS:&lt;br /&gt; - Weather&lt;br /&gt; - Weather &lt;br /&gt; - Weather&lt;br /&gt; - cramming 60+ million people into a little island means things get crammed - sick of people everywhere&lt;br /&gt; - stupid little houses because of above&lt;br /&gt; - stupid narrow roads&lt;br /&gt; - red tape everywhere - "but we've always done it this way"&lt;br /&gt; - did I mention the weather?&lt;br /&gt; - tax - taxation in the UK is out of control - I feel for people trying to get ahead and the Govt cutting them down at every opportunity&lt;br /&gt; - oh yeah, the weather is rubbish&lt;br /&gt;&lt;br /&gt;There are a lot of things we will miss I suspect, and only realise once we are home. There are equally many things we won't miss. I can't wait to get back to the clean, crisp, open, friendly and spacious atmosphere of New Zealand.&lt;br /&gt;&lt;br /&gt;I will miss not getting Top Gear and Dr Who before everyone else and the good people we have met. &lt;br /&gt;&lt;br /&gt;Kia Ora UK, we wish you well, but it's time to go home...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21172681-1332625138115703995?l=softwarex-nz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarex-nz.blogspot.com/feeds/1332625138115703995/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21172681&amp;postID=1332625138115703995' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/1332625138115703995'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/1332625138115703995'/><link rel='alternate' type='text/html' href='http://softwarex-nz.blogspot.com/2008/08/final-thoughts-on-uk.html' title='Final thoughts on the UK'/><author><name>KiwiBastard</name><uri>http://www.blogger.com/profile/06464945422472093454</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-21172681.post-7558847801376639091</id><published>2008-08-07T13:26:00.002+01:00</published><updated>2008-08-07T13:35:12.668+01:00</updated><title type='text'>Newsgator RSS reader</title><content type='html'>I had previously been using Google Reader for web-based RSS reading. I don't run a desktop client because I am on far too many different computers to keep a desktop client in sync. I am also a contractor (for about another month) so don't want to have to install applications to keep track of the blogs I read.&lt;br /&gt;&lt;br /&gt;Google reader is ok. It's pretty fast, but there was one thing that really, REALLY, annoyed me about it. It kept loosing posts, or more correctly, marking old posts as read, even if I hadn't.&lt;br /&gt;&lt;br /&gt;Also, I have recently purchased an iPod Touch, and wasn't a fan of the GReader touch application. So looking for something better reader, &lt;a href="http://codeclimber.net.nz"&gt;Simone&lt;/a&gt; put me on to Newsgator. I've been using it a week and have become a bit of a fan. The web reader is a little slower than GReader, but has nicer features, such as the ability to tag posts, more powerful "Mark As" features and nicer rendering of blogs being read.&lt;br /&gt;&lt;br /&gt;The major winning point is that is seemlessly syncs to the desktop client and the free iPhone application, which is very good too.&lt;br /&gt;&lt;br /&gt;So, if you are looking for a replacement to GReader, then give &lt;a href="http://www.newsgator.com"&gt;Newsgator&lt;/a&gt; a try.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21172681-7558847801376639091?l=softwarex-nz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarex-nz.blogspot.com/feeds/7558847801376639091/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21172681&amp;postID=7558847801376639091' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/7558847801376639091'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/7558847801376639091'/><link rel='alternate' type='text/html' href='http://softwarex-nz.blogspot.com/2008/08/newsgator-rss-reader.html' title='Newsgator RSS reader'/><author><name>KiwiBastard</name><uri>http://www.blogger.com/profile/06464945422472093454</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-21172681.post-4736577403853228677</id><published>2008-08-06T01:01:00.002+01:00</published><updated>2008-08-06T01:07:40.258+01:00</updated><title type='text'>How I got started in Software Development (Daniel's Turn)</title><content type='html'>Here's my first post on the blog. Thanks for the invitation and introduction James, I'm glad to finally put aside the time to write.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;How old were you when you started programming?&lt;/span&gt;&lt;br /&gt;I typed my first program into a friend's Commodore 64 from a magazine at the tender age of ten. For some reason he was missing a drive, so it was painful to turn off the computer after that effort!&lt;br /&gt;&lt;br /&gt;When I was fourteen my family bought a Commodore 64, which was when I started designing my own games. &lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;How did you get started in programming?&lt;/span&gt;&lt;br /&gt;I have to thank my parents for introducing the concept of programming when I was a teenager.  They also supported me by allowed limitless access to the computer for programming (a time limit was enforced for computer games to stop me and my siblings from becoming zombies).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;What was your first language?&lt;/span&gt;&lt;br /&gt;I wrote a lot of little games in C64 Basic, the best of which was battleships.  After a while I became annoyed with the poor performance of the Commodore's interpreted Basic, so I switched to writing a game in machine code, which was blisteringly fast by comparison.  I had to use machine code because I didn't have an assembly editor, which meant looking up the hex code for commands in the C64 programmer's manual, and doing the odd decimal to hex conversion on paper!  What fun  :-)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;What languages have you used since you started programming?&lt;/span&gt;&lt;br /&gt;Without boring you with the specifics, it goes something like:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;BASIC&lt;/li&gt;&lt;li&gt;Assembly&lt;/li&gt;&lt;li&gt;C&lt;/li&gt;&lt;li&gt;C++&lt;/li&gt;&lt;li&gt;COBOL&lt;/li&gt;&lt;li&gt;Pascal&lt;/li&gt;&lt;li&gt;Jade&lt;/li&gt;&lt;li&gt;Delphi&lt;/li&gt;&lt;li&gt;VB .Net&lt;/li&gt;&lt;li&gt;C# .Net&lt;/li&gt;&lt;/ul&gt;I've also dabbled with other flavours of various languages, and I have a long list of other tools and technologies (especially web technologies) that look cool on the CV but would look like an acronym zoo if listed here...&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;What was your first professional programming gig?&lt;/span&gt;&lt;br /&gt;My 3rd year lecturer hired me to help out with his point of sale / accounting software. It was such a buzz to actually be paid for doing something I really enjoyed for the first time (as opposed to being paid for boring mindless jobs).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;If you knew then what you know now, would you have started programming?&lt;/span&gt;&lt;br /&gt;Definitely!  It is a profession that forces me to continue learning and improving myself in many ways, and I am very thankful for that.  The other career path I was interested in when I was a teenager was electronics, and with hindsight I still believe this was the best career for me.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;If there is one thing you learned along the way that you would tell new developers, what would it be?&lt;/span&gt;&lt;br /&gt;To any new developers who may stumble upon this post, I would like to emphasise that you should only embark on this career if you would be doing it for fun in your spare time regardless.  You have to enjoy being challenged mentally and emotionally, while at the same time producing consistent results.&lt;br /&gt;&lt;br /&gt;There is only one path that leads to success in computing, and that is a path that involves continuous improvement and learning.  Software developers who are not prepared to continually train themselves become less employable over time in such a rapidly changing industry.&lt;br /&gt;&lt;br /&gt;(At the risk of sounding really cheesy) It might sound daunting, but if you have a natural affinity with computing, you should not only be successful but have the opportunity to be a leader in your chosen field.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;What's the most fun you've ever had... programming?&lt;/span&gt;&lt;br /&gt;The most fun I've ever had has definitely been during overnighters, especially when I was studying. There's nothing more exciting than facing the evening with nothing but a problem and a whole lot of caffeinated beverages, and ending up with working software by the time the sun comes up. &lt;br /&gt;&lt;br /&gt;These days the challenge of delivering quality commercial software by the time expected during sensible hours is by far enough excitement for me!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21172681-4736577403853228677?l=softwarex-nz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarex-nz.blogspot.com/feeds/4736577403853228677/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21172681&amp;postID=4736577403853228677' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/4736577403853228677'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/4736577403853228677'/><link rel='alternate' type='text/html' href='http://softwarex-nz.blogspot.com/2008/08/how-i-got-started-in-software.html' title='How I got started in Software Development (Daniel&apos;s Turn)'/><author><name>Daniel Robinson</name><uri>http://www.blogger.com/profile/14804193273433447081</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-21172681.post-8058565780943986514</id><published>2008-07-31T09:56:00.002+01:00</published><updated>2008-07-31T09:58:08.573+01:00</updated><title type='text'>Server ' ' is not configured for RPC</title><content type='html'>Just a quicky I came across this morning:&lt;br /&gt;&lt;br /&gt;If you get the above message when trying to do a Remote Procedure Call across linked servers in SQL Server, your server is not configured to do so.&lt;br /&gt;&lt;br /&gt;To fix this execute the following commands:&lt;br /&gt;&lt;br /&gt;exec sp_serveroption @server='myserver', @optname='rpc', @optvalue='true'&lt;br /&gt;exec sp_serveroption @server='myserver', @optname='rpc out', @optvalue='true'&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21172681-8058565780943986514?l=softwarex-nz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarex-nz.blogspot.com/feeds/8058565780943986514/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21172681&amp;postID=8058565780943986514' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/8058565780943986514'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/8058565780943986514'/><link rel='alternate' type='text/html' href='http://softwarex-nz.blogspot.com/2008/07/server-is-not-configured-for-rpc.html' title='Server &apos; &apos; is not configured for RPC'/><author><name>KiwiBastard</name><uri>http://www.blogger.com/profile/06464945422472093454</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-21172681.post-2152154095761525865</id><published>2008-07-28T19:59:00.004+01:00</published><updated>2008-07-29T11:26:13.877+01:00</updated><title type='text'>Adding more noise to the "Code Comments" debate</title><content type='html'>For the record, before I get started I have to state that despite where Jeff Atwood has gone lately in editorial terms, I have a great amount of respect for his blog and the work he's put into it over the years. As a contractor, I move around different companies quite a bit, but one of the constants has always been the frequent, thought provoking team discussions which have arisen as a result of one of Jeff's posts. But ever since Jeff typed the now immortal phrase "strong opinions, weakly held" the majority of people I have spoken to think he is ever-so-slowly losing the plot. It does seem that a lot of his posts lately have been triggered by some experience he's encountered during his work on StackOverflow.com, and while there is obviously nothing necessarily wrong with that, I do wonder if the bubble he has found himself working in is skewing his perspective a little.&lt;br /&gt;&lt;br /&gt;The post which finally drove this blog to state its own position is this:&lt;br /&gt;&lt;a href="http://www.codinghorror.com/blog/archives/001150.html"&gt;&lt;br /&gt;Coding Without Comments&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Unlike some of his other posts, specifically the one about &lt;a href="http://www.codinghorror.com/blog/archives/001147.html"&gt;#regions&lt;/a&gt;, this one I've read all the way through several times, and made sure I read it through again before I writing this post. And basically the whole thing leaves me with such a bad taste in the mouth that I can barely believe what I've been reading.&lt;br /&gt;&lt;br /&gt;Like it or not, Jeff is read by many developers across the spectrum of ability and experience. Young and new devs are sent links to Jeff's posts and are over time gradually eased into the Atwood Cult.  I feel as though in this one post Jeff has potentially done some significant damage to the hard work that all of those people, like myself, who as part of my job try to encourage others to write clear code and write good comments. It has handed on a plate an excuse for those devs who are too lazy, or disenfranchised in their jobs (the job security excuse), to bother putting any comments in the code that they churn out.&lt;br /&gt;&lt;br /&gt;To try to keep the rest of this concise, I'll list my views on this as bullet points:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;I won't go too far into any of the examples in Jeff's posts as clearly they are carefully chosen to prove the point. What I will say though is that his refactoring of the SquareRootApproximation by extracting the method did not, as he says, make the code "perfectly understandable". He's made the &lt;span style="font-style: italic;"&gt;use&lt;/span&gt; of the code understandable, but not adding comments, or breaking up the string of operations, is creating code that is probably difficult to maintain.&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;We don't all work with our friends or with people we've worked with for years and so understand how they tick.&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Encouraging people to use better naming for variables and methods etc is an exceptionally good thing, and I think this is probably where the emphasis in Jeff's post should have been. The policy of this blog is that code reviews are king, and code that is written with a bias towards readability, and therefore more suited to review, should be encouraged even if this results occasionally in less than optimal implementation, and maybe produces slightly larger source files.&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;There is such a thing as too many comments. I have a running joke with a particular developer I have worked with a couple of times that he over-comments his code. Taken to an extreme, comments which mindlessly state in verbose English the simple to understand operations that follow, do harm the ability to read and review code, as they add unwanted noise. &lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;In terms of the argument for better naming of constructs and members rather than comments, I strongly believe that it should not be a case of either/or it should and must be BOTH.&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Maybe Jeff can be forgiven for being US-centric but the overriding notion you get from his recent posts kind of implies that every team can and must be occupied by top tier, highly experienced and capable coders. If a team member isn't up to the task then it's in the team's interests to drop them and find another. This is a fine and noble sentiment but for a few flaws: Not every developer can be the best of breed. In general, especially in the UK, we have a skills shortage and in particular a shortage of high quality, experienced software developers. (The reasons for this are largely political and mainly due to the current government's attempt to destroy our IT industry, in favour of promoting the agendas of the large consulting firms, but that is a post for another day.) The net result is that the industry is filled with developers wholly unsuited to software development and have moved to careers in IT as an easy route. They are everywhere, both contractors and permies, and are writing ream after ream of code, with barely a consideration about how that code will be maintained or supported. These are the people who will use Jeff's posts to argue that comments in code are pointless.&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;One of the big anti-comments arguments is that they can become out of date in relation to the code they comment. My response to this is that COMMENTS ARE AS IMPORTANT AS THE CODE and deserve the same level of attention during modification of code as the compilable stuff itself. The argument that comments quickly go out of date should not hold water.&lt;/li&gt;&lt;/ul&gt;I could go on, but won't. I'll end by saying that in the real world, real software is over-complex, over-engineered, written under time pressures, often by people who's skill in the art is below average. They are expected to hammer out the code, those with the inclination to refactor are often not working in an environment where such things are encouraged. After all this, other people will have to fix and maintain the code and without comments, of any kind, this type of software which is being created ALL OVER THE WORLD RIGHT NOW is made all the more substandard because of it.&lt;br /&gt;&lt;br /&gt;We can't all code in utopia.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21172681-2152154095761525865?l=softwarex-nz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarex-nz.blogspot.com/feeds/2152154095761525865/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21172681&amp;postID=2152154095761525865' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/2152154095761525865'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/2152154095761525865'/><link rel='alternate' type='text/html' href='http://softwarex-nz.blogspot.com/2008/07/adding-more-noise-to-code-comments.html' title='Adding more noise to the &quot;Code Comments&quot; debate'/><author><name>Shaun Austin</name><uri>http://www.blogger.com/profile/02260217349188216865</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_bD8NWacRq1E/SZQ_gbtLXVI/AAAAAAAAAFE/zRx2i4y9Frw/S220/dharma.jpg'/></author><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21172681.post-8046031368029667501</id><published>2008-07-25T12:45:00.004+01:00</published><updated>2008-07-25T13:09:25.490+01:00</updated><title type='text'>Apple v Windows - get over it</title><content type='html'>I like Apple products. They are well designed and engineered, and the user experience is second to none.&lt;br /&gt;&lt;br /&gt;Do I like them blindly. No. Apple make mistakes, just look at Mobile Me and the issues with iPhone activations, supply and crashing. The continuation of the iPhone SDK NDA reeks of typical Apple arrogance. It's a, "You'll do what we tell you, and if you don't like it we don't care" attitude.&lt;br /&gt;&lt;br /&gt;But in the fan bois eyes, Apple can do no wrong. It's starting to get annoying to me to be honest. Sure, enjoy Apple products, but don't turn a blind eye to their faults. Or worse, attack people who rightly point out the flaws.&lt;br /&gt;&lt;br /&gt;I'm sick of reading in places like Mac Daily News, pieces about how crap Windows is, how stupid Balmer is, how Vista is crap and driving customers to Apple, because Apple is the chosen platform and all who use it are the chosen ones. I mean read the drivel  &lt;a href="http://www.macdailynews.com/index.php/weblog/comments/microsoft_ceo_ballmer_on_why_apple_is_thriving/"&gt;in here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;OSX is a great platform - it's fast, responsive and a pleasure to use. But fan bois constantly running down Windows, feels a little like poor cousin syndrome to me. &lt;br /&gt;I can guarantee that if Apple had to write an OS to perform, with the user base and different hardware base that Windows has, it would be just as prone to bugs and crashes as Windows supposedly is.&lt;br /&gt;Just look at the iPhone. Great device, awesome hardware, but the new 2.0 software is buggy as hell. It crashes a lot. You could argue that it is the third party apps that are the problem - but surely if they are supposed to run in a sandbox mode, why would an app crash bring the system down? It's not 1995 after all.&lt;br /&gt;&lt;br /&gt;So guys, get over it. Windows isn't for you, we get it. It's not for me either, but constantly bagging it is making you look like a cock, and by association, the rest of us too.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21172681-8046031368029667501?l=softwarex-nz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarex-nz.blogspot.com/feeds/8046031368029667501/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21172681&amp;postID=8046031368029667501' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/8046031368029667501'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/8046031368029667501'/><link rel='alternate' type='text/html' href='http://softwarex-nz.blogspot.com/2008/07/apple-v-windows-get-over-it.html' title='Apple v Windows - get over it'/><author><name>KiwiBastard</name><uri>http://www.blogger.com/profile/06464945422472093454</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-21172681.post-6969316744164068984</id><published>2008-07-24T21:35:00.006+01:00</published><updated>2008-07-25T08:28:10.220+01:00</updated><title type='text'>Reflections from the UK part 1</title><content type='html'>Now we're down to our last month(ish) in the UK, I am in a reflective mood.&lt;br /&gt;&lt;br /&gt;I've enjoyed my time in the UK and Europe and the UK contracting scene has been kind to me so I have no real complaints. IT recruiters in the UK are about as trustworthy as a fox who has become self aware and started selling cars, but it's all part of the game and once you know the rules, it easy to play along.&lt;br /&gt;&lt;br /&gt;I have done five contracts in the 18 months or so since I've been here. All doing C# or C++ in various guises. Four have been based in the Midlands and one in London. Travel has been from 25 minutes to 2 hours (each way) and pay rate has differed by 100 quid a day from the low to the high rate. The longest I have been out of work is 3 weeks, which included a week holiday.&lt;br /&gt;&lt;br /&gt;So, like I said nothing to complain about really.&lt;br /&gt;&lt;br /&gt;The market for contractors has dried up a bit in the last 18 months, and rates have definitely come back. Still there is plenty of work for the right skills, but I'm glad we came when we did.&lt;br /&gt;&lt;br /&gt;I've met some tossers and some good bastards along the way. Some really good devs, some really shit devs and one freak (in terms of coding ability). I actually thought before I came that my skills might not cut the mustard, but save the freak and one maybe two others, I consider my skills to be superior to others I have worked with. I think that as Kiwi's we are early adopters and probably because of our smaller teams and budgets, have to get to know a lot more technologies and nuts and bolts than the guys here.&lt;br /&gt;&lt;br /&gt;Companies here seem to be a little more conservative, backward thinking, and resistant to change. The majority of the companies I worked for still used Source Safe, and had old C++, VB or 1.1 code lurking around. C# 2.0 is used more often than not, but 3.0 isn't even being considered.&lt;br /&gt;&lt;br /&gt;I was shocked at the lack of structure in a lot of places too. I'm not talking little companies here either, in a lot of cases we're talking large multi-nationals, or software used in high volume, mission critical places. Only one place had Unit testing, only one place had continuous integration and only one place used any sort of Agile practices. All of those were the same place! In my opinion a lot of the issues in companies like this is the middle management. To a company, the middle management are next to useless and create more problems than they solve. &lt;br /&gt;&lt;br /&gt;A NZ company just wouldn't have the budget for PM's and Middle Managers, so management tends to take a more hands on approach and from my experience, is the better for it.&lt;br /&gt;&lt;br /&gt;Next time on the muppet show I will discuss how I could fix roading issues in the UK in one easy step.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21172681-6969316744164068984?l=softwarex-nz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarex-nz.blogspot.com/feeds/6969316744164068984/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21172681&amp;postID=6969316744164068984' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/6969316744164068984'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/6969316744164068984'/><link rel='alternate' type='text/html' href='http://softwarex-nz.blogspot.com/2008/07/reflections-from-uk-part-1.html' title='Reflections from the UK part 1'/><author><name>KiwiBastard</name><uri>http://www.blogger.com/profile/06464945422472093454</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-21172681.post-8615681571754072265</id><published>2008-07-16T13:06:00.013+01:00</published><updated>2008-07-16T13:35:44.421+01:00</updated><title type='text'>Uninstalling Resharper causes VS2005 intellisense to stop working</title><content type='html'>How about that heading for SEO eh?&lt;br /&gt;&lt;br /&gt;Anyway, this appears to be a problem with those people who have uninstalled R# from 2005, but also have 2008 installed. In this case it appears R# leaves intellisense off when it uninstalls. To turn it back on again select Tools | Options menu and you will see this form:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_KYTD7b1k7ko/SH3qJJScgZI/AAAAAAAAAEA/wsiH8rXN640/s1600-h/vsoptions.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://bp3.blogger.com/_KYTD7b1k7ko/SH3qJJScgZI/AAAAAAAAAEA/wsiH8rXN640/s400/vsoptions.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5223588585652650386" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;(If you can't see the form (Blogspot was playing silly buggars when I checked this earlier) its under Text Editor | C# | General )&lt;br /&gt;&lt;br /&gt;Just put the ticks back into "Auto List Members" and "Parameter Info" and your intellisense will be back.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21172681-8615681571754072265?l=softwarex-nz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarex-nz.blogspot.com/feeds/8615681571754072265/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21172681&amp;postID=8615681571754072265' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/8615681571754072265'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/8615681571754072265'/><link rel='alternate' type='text/html' href='http://softwarex-nz.blogspot.com/2008/07/uninstalling-resharper-causes-vs2005.html' title='Uninstalling Resharper causes VS2005 intellisense to stop working'/><author><name>KiwiBastard</name><uri>http://www.blogger.com/profile/06464945422472093454</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/_KYTD7b1k7ko/SH3qJJScgZI/AAAAAAAAAEA/wsiH8rXN640/s72-c/vsoptions.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21172681.post-7657144001654298215</id><published>2008-07-16T08:30:00.002+01:00</published><updated>2008-07-16T08:34:41.785+01:00</updated><title type='text'>Introducing....</title><content type='html'>After me needling him in a previous post, I have managed to convince Daniel Robinson, that he needs to be blogging, and also to join us here on "Software Development and stuff". &lt;br /&gt;Dan will introduce himself properly later, but his specialist subjects include: ASP.NET, MVC and MVP patterns in Web applications, Biztalk and is always keen for frank and open discussions about software development!&lt;br /&gt;&lt;br /&gt;So welcome Dan and over to you...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21172681-7657144001654298215?l=softwarex-nz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarex-nz.blogspot.com/feeds/7657144001654298215/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21172681&amp;postID=7657144001654298215' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/7657144001654298215'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/7657144001654298215'/><link rel='alternate' type='text/html' href='http://softwarex-nz.blogspot.com/2008/07/introducing.html' title='Introducing....'/><author><name>KiwiBastard</name><uri>http://www.blogger.com/profile/06464945422472093454</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-21172681.post-3140268186211331887</id><published>2008-07-14T18:31:00.003+01:00</published><updated>2008-07-14T18:47:41.078+01:00</updated><title type='text'>Visual Studio: what does that mean?</title><content type='html'>Ok, so sometimes in life things are called something and they are so much a part of your life that you don't give it a second thought. Car model names are the perfect example of this. I mean wtf is a Integra? What is a Corolla, or a Prius? Stupid names indeed.&lt;br /&gt;&lt;br /&gt;I was looking at a retail box of Visual Studio on my desk today and a thought popped into my head. What a really really stupid name Visual Studio is.&lt;br /&gt;&lt;br /&gt;If someone told you that they used something called Visual Studio as their tool of the trade, you would think they were into digital compositing, or photography or perhaps painting. A programmers tool isn't instantly obvious from the name. I mean back in the day when we (well some of us) were poking away at Dos, then using the word Visual actually meant something, but everything is "Visual" these days. Actually Visual Studio wasn't even the original name back in 96 or 97. It was Developer Studio, which  event thought it may sound like something a camera tech would use, is a little better IMHO.&lt;br /&gt;&lt;br /&gt;It's wasted air talking about it. MS are more likely to outsource their OS operations to Apple as they are to change the name of Visual Studio, but what would you call the tool you use everyday?&lt;br /&gt;&lt;br /&gt;I've been trying to think while I have been writing this and I couldn't honestly come up with anything good, so with tongue in cheek, and using current Microsoft naming conventions, I think the new name should be "Microsoft Windows Development Studio for Microsoft Windows and Internet Information System 2008".&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21172681-3140268186211331887?l=softwarex-nz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarex-nz.blogspot.com/feeds/3140268186211331887/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21172681&amp;postID=3140268186211331887' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/3140268186211331887'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/3140268186211331887'/><link rel='alternate' type='text/html' href='http://softwarex-nz.blogspot.com/2008/07/visual-studio-what-does-that-mean.html' title='Visual Studio: what does that mean?'/><author><name>KiwiBastard</name><uri>http://www.blogger.com/profile/06464945422472093454</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-21172681.post-2555285855984093754</id><published>2008-07-14T15:12:00.005+01:00</published><updated>2008-07-14T18:27:50.378+01:00</updated><title type='text'>Carphone Warehouse: Technically inept or lying bastards?</title><content type='html'>OK, so I was going to wait a few weeks until the potential rush for iPhones eased off before I decided to take the plunge, but after realising that my contract with 3 whom I have had three problem free years of service was ending on 11th July it occured to me that it was the ideal time to switch.&lt;br /&gt;&lt;br /&gt;Anyway, it's the Thursday (1oth) and accepting that I'm probably in for a bit of a wait due to the stuff I'm reading on the net I say to myself, "I'll head over to the CPW website and see if they're still taking orders." I visit the site and to my surprise they have the 16Gb phone "IN STOCK"!&lt;br /&gt;&lt;br /&gt;OK there's a note saying that orders received after 3:30pm will not be delivered on the Friday, which is fine for me, so off I go, calling 3 asking for the PAC code so that I can transfer the number. This code is valid for 30 days so obviously the clock is now ticking. (Incidentally, the stuff that 3 were offering me to stay with them was mindbendingly stunning and if I hadn't already committed myself to the iPhone I would have jumped at it, no details but basically any phone I wanted for free, and the sort of tarrif that would make an O2 iPhone subscriber's eyes bleed, including unlimited data) Anyway, I go through the buying process, at each stage the words "In Stock" are there so I'm ploughing on thinking it just might happen.&lt;br /&gt;&lt;br /&gt;Finally I get to the last confirmation page still expecting the rug to get pulled and finally... I get a confirmation mail for the order. I do the order status page and it tells me that it will be delivered on the 12th (the Saturday) and I'm thinking "yay!"&lt;br /&gt;&lt;br /&gt;Then, later in the evening I get a mail telling me that, to paraphrase: "hey valued customer, you just ordered something on our site, we took your order but now we can't get you what you wanted. Don't worry though, now we have your details we'll be sure to get around to sorting you out at some unspecified time in the future, of our choosing, tosser!"&lt;br /&gt;&lt;br /&gt;Now I know how limited stock was, and I know how I'm not the only person to miss out, but the one thing, the ONLY thing that is pissing me off about this whole story is the fact that Carphone Fucking Warehouse had "IN STOCK" plastered all over the iPhone pages and were more than happy to accept my details and go through the charade of taking my order when in fact they in no way, shape or form had any capability or intention of matching up an ORDER with a fucking STOCK ITEM.&lt;br /&gt;&lt;br /&gt;Is it just me, or in this day and age with the software and computer capabilities we have available to us is to beyond a large company like CPW to be able to in real-time, match orders with specific items they have in stock? Is it?&lt;br /&gt;&lt;br /&gt;I don't fucking think so... although clearly that kind of service is either beyond them or they truly don't give a flying fuck about customers. Which is made self evident in the image below which is taken from their highly informative and useful order status page:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_bD8NWacRq1E/SHtmdYMAeDI/AAAAAAAAAC8/M4bniSSCNY4/s1600-h/OrderStatus.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp2.blogger.com/_bD8NWacRq1E/SHtmdYMAeDI/AAAAAAAAAC8/M4bniSSCNY4/s400/OrderStatus.png" alt="" id="BLOGGER_PHOTO_ID_5222880847761274930" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Translation: "You know when you ordered something and we told you it was in stock? Well we lied, but we know you'll sit around waiting so we'll try to do something about it when we can be arsed and you'll just have to guess when that might be. Oh yeah, and here's the date we lied about when we said we would get it to you, just so you can imagine what it would have been like to actually get the thing. Just to rub it in a little bit more!"&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21172681-2555285855984093754?l=softwarex-nz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarex-nz.blogspot.com/feeds/2555285855984093754/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21172681&amp;postID=2555285855984093754' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/2555285855984093754'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/2555285855984093754'/><link rel='alternate' type='text/html' href='http://softwarex-nz.blogspot.com/2008/07/carphone-warehouse-technically-inept-or.html' title='Carphone Warehouse: Technically inept or lying bastards?'/><author><name>Shaun Austin</name><uri>http://www.blogger.com/profile/02260217349188216865</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_bD8NWacRq1E/SZQ_gbtLXVI/AAAAAAAAAFE/zRx2i4y9Frw/S220/dharma.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp2.blogger.com/_bD8NWacRq1E/SHtmdYMAeDI/AAAAAAAAAC8/M4bniSSCNY4/s72-c/OrderStatus.png' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21172681.post-2336560676463845312</id><published>2008-07-14T11:52:00.005+01:00</published><updated>2008-09-19T15:59:32.872+01:00</updated><title type='text'>How I got started in Software Development (Shaun's Go)</title><content type='html'>&lt;span style="font-weight: bold;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;OK, OK, I don't usually do these sorts of things and apologies if I get take a few liberties and ramble on a bit but here are my answers:&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;How old were you when you started programming?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Like James, I'm a bit uncertain about dates with this stuff really but I know that the first computer I owned and did coding on was a &lt;a href="http://en.wikipedia.org/wiki/Commodore_Plus/4"&gt;Commodore Plus/4&lt;/a&gt;. I certainly didn't appreciate how unusual the +4 was at the time. It must have been around 1984 as they discontinued it a year later and I know it was a new machine at the time so that would make me 9-10.&lt;br /&gt;&lt;br /&gt;I don't think that was my earliest bit of coding though as I know that at least one of my friends had a new&lt;a href="http://en.wikipedia.org/wiki/Sinclair_ZX_Spectrum"&gt; ZX Spectrum&lt;/a&gt; and a girl who lived next door to me owned an &lt;a href="http://en.wikipedia.org/wiki/Acorn_Electron"&gt;Acorn Electron&lt;/a&gt;. I suppose my earliest memories of coding was basically boring those friends to death and getting into big fights as they wanted to play the games and all I wanted to do was sit there and type in the code listings at the back of the manuals. That will have been 82-83 so 8 -9 years old.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;How did you get started in programming?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;As I said above, it was all born from a fascination of the fact that rather than stick a tape in the deck and wait for 5 minutes while a game loaded then play the game. I was more interesting in the fact that you could type stuff in and make the computer do stuff that I'd told it to. Obviously, at this stage I think my childish fumblings were fairly rudimentary as, not knowing anyone else interested in programming rather than playing games, I didn't really have any other sources of information on programming available to me so I kind of had to work it all out for myself. I found myself wondering lately how someone like I was at that time would turn out if they had all the information and resources available to them that we have today on the internet, but I suppose that's a whole post in itself.&lt;br /&gt;&lt;br /&gt;I do seem to vaguely remember some magazines with code listings in them, but I can't remember any more details than that. What I do know is that the excercise of typing in seemingly endless lines of code and then typing "RUN" only to find that I had a "redimmed array" or other more difficult to track down bugs that were either my mistakes or typos in the mag almost killed off my desire to write code.&lt;br /&gt;&lt;br /&gt;A while later I remember a "computer club" in high school where they had BBC Model Bs and I think there was even an old Commodore Pet which I played with, writing rudimentary text adventure games for others to play. Also at that time the teacher who ran the club introduced us to the idea of connected computers as he used a modem with an honest-to-god acoustic coupler to dial up to some "online" BBS service (I forget the name) and download games and programs etc. Cool!&lt;br /&gt;&lt;br /&gt;It hung on in there though, through owning an Amstrad CPC464 then an Atari ST. I think I'd pretty much drifted away from the whole programming thing for a while until I got to 6th form college when I decided to do a computing A-Level, it was at this point where, using a DOS emulator on the Atari ST I would spend nights, going right into the early morning working on my course project application. This was probably the point at which I started to really get the buzz of putting in all-nighters to get projects done.&lt;br /&gt;&lt;br /&gt;The path as a coder was finally set in motion fully when the course teacher, Tom Threlfall, whom I respected greatly, commented on my report card that I had a "natural affinity with computers and programming".&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;What was your first language?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Probably the same as James, various flavours of BASIC. Then at 6th form, I dabbled with some C but with only a single textbook and no other sources of information, it frightened the life out of me and I would stay clear of C for some time. After that, it was Turbo Pascal, Turbo C and Microfocus COBOL 97 as they were the mandatory course languages for the first 2 years of my degree. Then while others went to Dephi I went to Borland C++ Builder having decided that C++ would be the best career move.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;What languages have you used since you started programming?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;BASIC&lt;/li&gt;&lt;li&gt;C&lt;/li&gt;&lt;li&gt;Turbo Pascal&lt;/li&gt;&lt;li&gt;Turbo C&lt;/li&gt;&lt;li&gt;COBOL&lt;/li&gt;&lt;li&gt;Borland C++(With OWL)&lt;/li&gt;&lt;li&gt;Delphi&lt;/li&gt;&lt;li&gt;C++ Builder&lt;/li&gt;&lt;li&gt;MS Visual C++ (Visual Studio 97/6)&lt;/li&gt;&lt;li&gt;VBA (I know!)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;C#&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;What was your first professional programming gig?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Hmm. During my "year out" before my final year at Uni, I spent some months at a measuring instrument servicing company owned by a friend's father. There I worked alone developing a new inventory management system based on Access and VBA. I managed to integrate this with their non-networked calibration software (the cal app used Access so I had no choice) I then got their machines networked and came up with some new processes to streamline their operation.&lt;br /&gt;&lt;br /&gt;I know it sounds corny, but the fact that something I had laboured over for months, sometimes battling against both technical and human obstacles and producing a system which although not perfect, dramatically increased throughput and reduced the company costs and allowed them to provide a much more seamless service for their customers really gave me a buzz. Up until that point everything I had done was abstract, theoretical stuff. But this was a real world system, which made a real quantifiable difference.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;If you knew then what you know now, would you have started programming?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;This is a tricky one for me. It's kind of what my brain is hardwired to do, it's what I'm damned good at (so I've been told) and given the right project with the right people I can still get that buzz about coding that I had when I was younger. If the question was "would you advise your son to become a programmer" I would say no. Personally, I feel that although technically the industry is heading for some exciting times, IT and software development as a career in the UK has been killed off.&lt;br /&gt;&lt;br /&gt;I think despite my reservations, I would still have to say yes, I've met some great people through this job and had some moments of pure joy when I've been part of a team that has managed to pull off the seemingly impossible just in the nick-of-time.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;If there is one thing you learned along the way that you would tell new developers, what would it be?&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;Hmm, one thing? Well I have to say that no one major thing jumps out at me so I suppose to get away from all the other cliched suggestions and hopefully pass on something insightful I'd probably say the following:&lt;br /&gt;&lt;br /&gt;The biggest and best thing I ever did was become a contractor, above and beyond the financial and other forms of independence what it has enabled me to do is to keep my enthusiasm for the job as fresh as possible. The very nature of what I do means that every few months or sometimes longer, I find myself at a new place with new challenges and new people.&lt;br /&gt;&lt;br /&gt;I know many people, very, very good, highly competent coders who have basically planted themselves in a company for years and years and have basically let themselves fester and rot their careers away to the point where only redundancy can offer them any salvation.&lt;br /&gt;&lt;br /&gt;If you stay at one place for too long, you basically end up being the "guy who knows about x" and you end up being the maintainer of legacy apps. I think the worst thing that could happen to a good coder is that they end up at a single place for so long that it's far easier to hang around and wait to retire than to go out and find new challenges. So the advice I would give to a new developer would be to keep moving, it doesn't have to be by leaving a company, but always be trying to work on new things because once you become "maintainer guy" it's very difficult to move.&lt;br /&gt;&lt;span style="font-weight: bold;"&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/21172681-2336560676463845312?l=softwarex-nz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarex-nz.blogspot.com/feeds/2336560676463845312/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21172681&amp;postID=2336560676463845312' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/2336560676463845312'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/2336560676463845312'/><link rel='alternate' type='text/html' href='http://softwarex-nz.blogspot.com/2008/07/how-i-got-started-in-software_14.html' title='How I got started in Software Development (Shaun&apos;s Go)'/><author><name>Shaun Austin</name><uri>http://www.blogger.com/profile/02260217349188216865</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_bD8NWacRq1E/SZQ_gbtLXVI/AAAAAAAAAFE/zRx2i4y9Frw/S220/dharma.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21172681.post-1339234353966983280</id><published>2008-07-12T06:15:00.002+01:00</published><updated>2008-07-14T10:04:50.773+01:00</updated><title type='text'>How I got started in Software Development</title><content type='html'>&lt;a href="http://www.fastchicken.co.nz/index.php/2008/07/11/how-i-got-started-in-software-development/"&gt;Nic tagged me&lt;/a&gt; from a &lt;a href="http://www.michaeleatonconsulting.com/blog/archive/2008/06/04/how-did-you-get-started-in-software-development.aspx"&gt;meme started asking about how people got started in software development&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;So here are my answers:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;How old were you when you started programming?&lt;/span&gt;&lt;br /&gt; &lt;br /&gt;Timelines are a little hard to remember exactly, but pretty young. I saw my first computer an Apple II at about 8 and was instantly captivated. My elderly neighbour had an &lt;a href="http://en.wikipedia.org/wiki/Acorn_Electron"&gt;Acorn Electron&lt;/a&gt; which he used to let my brother and I use from time to time. We started by tapping away at type-ins from magazines about that time. Not really programming per se but that sort of knowledge must have filtered through. I guess I would have been 10 or 11. &lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;How did you get started in programming?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;An excitement for computers grew from the introduction to home computers above. My brother bought an &lt;a href="http://en.wikipedia.org/wiki/Amstrad_CPC"&gt;Amstrad CPC 464&lt;/a&gt; maybe a year or two later. I started coding on Locomotive Basic, doing type-ins and generally experimenting with what BASIC could do. After that I went 50/50 with my brother and we bought an &lt;a href="http://en.wikipedia.org/wiki/Amiga_500"&gt;Amiga 500&lt;/a&gt; and I continued to hack away at Basic. My first introduction to real compiled languages was around 1991 when I bought my first PC at about 16. Rocking fast 386SX20!&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;What was your first language?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;As outlined above, I used various versions of Basic for a start, but my first "real" language was Turbo Pascal. Can't remember the exact version but 4.0 seems to ring a bell. From there I got a copy of Turbo C++ and stuck with C for a few years until I found Delphi in about 1995. The thing to remember about those days is that there was no internet, and books and programming information were really hard to come across - where I lived anyway. You pretty much learned programming by teaching yourself and pouring over the help files. It's much easier now to get up and running. Anyway, I digress.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;What languages have you used since you started programming?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;In roughly chronological order:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;BASIC&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Turbo Pascal&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Turbo C/C++&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Delphi&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Visual Basic&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Codewarrior C for Palm OS&lt;/li&gt;&lt;br /&gt;&lt;li&gt;ASP Classic in VBScript&lt;/li&gt;&lt;br /&gt;&lt;li&gt;C#&lt;/li&gt;&lt;br /&gt;&lt;li&gt;COBOL&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Objective-C / Cocoa&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;Most of my profession career has been using Delphi for the first 5 or so years, a couple of years in COBOL and the last 5 or so years in C#, and recently the last year or so dabbling with Objective-C on the side.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;What was your first professional programming gig?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I got hired to create some reservation tracking software on the Amiga 500 for a motel, but half way through the Amiga died, so I never got to finish it. I was about 17, after that I wrote some &lt;a href="http://www.softwarex.co.nz/products.html"&gt;Car Dealer Management software&lt;/a&gt; for my brother-in-law, again never got paid, so I guess my first commercial gig was straight out of tech coding software for Gym's in VB5.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;If you knew then what you know now, would you have started programming?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Yes. I can't imagine not programming. I sort of rebelled against it just after school - tried a few other jobs, but realised along the way I was best suited for software development as it was what I really wanted to do. &lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;If there is one thing you learned along the way that you would tell new developers, what would it be?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Never stop learning. Computing evolves over time, and you should too. I have seen so many programmers who can't find work because they stuck with language or tech X and it has died and they haven't taken the time or been too stubborn to learn something new.&lt;br /&gt;&lt;br /&gt;I know it says one thing, but I think the other bit of advice I can give new developers is this: there are NO EGOS IN SOFTWARE DEVELOPMENT.  Always be open to suggestions, comments and criticism. Take a step back from your code and ask is there a better way to do this, and admit when you are wrong.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;What’s the most fun you’ve ever had … programming?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Hmmm, that is an interesting question, one which I don't have an obvious answer. I've been involved with some interesting projects over the years, including writing and controlling automation gear for a Milking system, well before most people had heard about RFID. I also got to develop for the Palm OS early on in my career in the late 90's which was fun at the time - saw the first colour palm back then which we thought was ground breaking. Have been enjoying coding for the iPhone recently too.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Now, let’s tag someone else&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Well, most of the people I would tag, have been tagged already or don't blog (Dan R and Tordon this means you), but Shaun Austin, who also posts here occasionally, over to you.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21172681-1339234353966983280?l=softwarex-nz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarex-nz.blogspot.com/feeds/1339234353966983280/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21172681&amp;postID=1339234353966983280' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/1339234353966983280'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/1339234353966983280'/><link rel='alternate' type='text/html' href='http://softwarex-nz.blogspot.com/2008/07/how-i-got-started-in-software.html' title='How I got started in Software Development'/><author><name>KiwiBastard</name><uri>http://www.blogger.com/profile/06464945422472093454</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-21172681.post-4001487161188385224</id><published>2008-07-11T10:18:00.003+01:00</published><updated>2008-07-11T10:22:39.626+01:00</updated><title type='text'>Programmers Font worth trying</title><content type='html'>&lt;a href="http://www.ms-studio.com/FontSales/anonymous.html"&gt;Anonymous&lt;/a&gt; font is one I have switched to recently from &lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=22e69ae4-7e40-4807-8a86-b3d36fab68d3&amp;displaylang=en"&gt;Consolas&lt;/a&gt;. Give it a try - all personal preference of course. I find it slightly more legible than Consolas but either is a fine alternative to bleeding eyes caused by Courier New.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21172681-4001487161188385224?l=softwarex-nz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarex-nz.blogspot.com/feeds/4001487161188385224/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21172681&amp;postID=4001487161188385224' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/4001487161188385224'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/4001487161188385224'/><link rel='alternate' type='text/html' href='http://softwarex-nz.blogspot.com/2008/07/programmers-font-worth-trying.html' title='Programmers Font worth trying'/><author><name>KiwiBastard</name><uri>http://www.blogger.com/profile/06464945422472093454</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-21172681.post-4557621227456131914</id><published>2008-07-11T08:42:00.003+01:00</published><updated>2008-07-11T09:06:39.090+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linq to SQL'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='LINQ'/><title type='text'>Linq to SQL - Dynamic SQL vs Stored Procs</title><content type='html'>&lt;a href="http://msdn.microsoft.com/en-us/library/bb425822.aspx"&gt;Linq to SQL&lt;/a&gt; (L2S) is an exciting technlogy released with Visual Studio 2008. It is more or less an Object Relational Mapper (ORM) that easily integrates Sql Server databases to your C# object models. It can either create the database from a model, or the model from a database, or you can retrofit you existing Plain Old C# Objects (POCO).&lt;br /&gt;&lt;br /&gt;I intially rubbished it, but after revisting and doing some more reading, I have become a convert. Like most things in the software development world, it's not a magic bullet, but is a great tool to have on your belt.&lt;br /&gt;&lt;br /&gt;The interesting thing with L2S, is that it can generate the queries for you at runtime, or you can invoke Stored Procedures.&lt;br /&gt;&lt;br /&gt;Now, standard and historical rule of thumb states that Stored Procedures are the answer to almost any question, but with L2S this may not be the case.&lt;br /&gt;&lt;br /&gt;For a start, parameterised stored procedures are no faster than dynamic sql. Before you flame me, read &lt;a href="http://weblogs.asp.net/fbouma/archive/2003/11/18/38178.aspx"&gt;this&lt;/a&gt;. The other reason I beleive that L2S could be more efficient than SP's is that because it generates the queries on a per instance basis, it can retrieve only the data you need at that point in time. Take this scenario:&lt;br /&gt;&lt;br /&gt;You have some customer data you want to retrieve. In this case you only need, custId, custName and orderStatus. You already have a stored proc that retireves all of the customer columns. In my experience, given a pool of 100 developers, at least 75 of these will just reuse the original SP and filter at the C# end. Under L2S you are already prefiltering at the C# end and only hitting the fields in SQL Server you need.&lt;br /&gt;&lt;br /&gt;Updates are the same, L2S will only update the fields it needs to, whereas most of the time you will just use a generic update SP that will send back all the fields changed or not.&lt;br /&gt;&lt;br /&gt;I would not rule out SP's entirely. A lot of the time it is good, having a central repository for data interactions, especially for larger applications. Also, if you have a good DBA on team, then SP's would probably be a better option. &lt;br /&gt;&lt;br /&gt;The point is that with L2S you have options, and don't automatically rule out dynamic sql in your next application.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21172681-4557621227456131914?l=softwarex-nz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarex-nz.blogspot.com/feeds/4557621227456131914/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21172681&amp;postID=4557621227456131914' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/4557621227456131914'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/4557621227456131914'/><link rel='alternate' type='text/html' href='http://softwarex-nz.blogspot.com/2008/07/linq-to-sql-dynamic-sql-vs-stored-procs.html' title='Linq to SQL - Dynamic SQL vs Stored Procs'/><author><name>KiwiBastard</name><uri>http://www.blogger.com/profile/06464945422472093454</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-21172681.post-1385537842414007362</id><published>2008-07-09T21:52:00.004+01:00</published><updated>2008-07-09T21:57:04.774+01:00</updated><title type='text'>New Zealand yells, Vodafone answers</title><content type='html'>It seems that you can get a 1Gb plan with their YouChoose 20 plan for $69.99 a month. This of course means no subsidy for the phone or $1000 but it's a start. Personally I don't talk much on the phone, so this plan would be fine for me.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.geekzone.co.nz/forums.asp?ForumId=40&amp;TopicId=23810"&gt;Vodafone answers Q+A Here&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I think they have been genuinely surprised at the negative reaction to their plans, and are trying to fight fires. Any goodwill has been lost at this stage I'm afraid. Drop the price of the phone to $350 for a plan, and say $700 on the YouChoose and it will be a start.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21172681-1385537842414007362?l=softwarex-nz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarex-nz.blogspot.com/feeds/1385537842414007362/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21172681&amp;postID=1385537842414007362' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/1385537842414007362'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/1385537842414007362'/><link rel='alternate' type='text/html' href='http://softwarex-nz.blogspot.com/2008/07/new-zealand-yells-vodafone-answers.html' title='New Zealand yells, Vodafone answers'/><author><name>KiwiBastard</name><uri>http://www.blogger.com/profile/06464945422472093454</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-21172681.post-7937819016525675068</id><published>2008-07-08T08:44:00.003+01:00</published><updated>2008-07-08T08:53:29.843+01:00</updated><title type='text'>VODAFONE - YOU ARE A BUNCH OF ARSEHOLES</title><content type='html'>or, How to ruin a platform and golden opportunity in one step. The pricing for the iPhone in NZ is ridiculous. Actually it's worse than that, it's daylight robbery. Nothing short of that. $559 on a TWO YEAR PLAN. $80 per month for a measily 250Mb plan, or $130 for 500Mb. &lt;br /&gt;&lt;br /&gt;I'm glad I'm not back in NZ yet, because I would be very tempted to firebomb every Vodafone store I could find.&lt;br /&gt;&lt;br /&gt;Everyone out there, seriously. DONT. BUY. AN IPHONE. I desperately want one, and in reality need to get one to test the apps I create, but we have to make a stand.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21172681-7937819016525675068?l=softwarex-nz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarex-nz.blogspot.com/feeds/7937819016525675068/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21172681&amp;postID=7937819016525675068' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/7937819016525675068'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/7937819016525675068'/><link rel='alternate' type='text/html' href='http://softwarex-nz.blogspot.com/2008/07/vodafone-you-are-bunch-of-arseholes.html' title='VODAFONE - YOU ARE A BUNCH OF ARSEHOLES'/><author><name>KiwiBastard</name><uri>http://www.blogger.com/profile/06464945422472093454</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-21172681.post-2118381406871660534</id><published>2008-07-03T20:58:00.002+01:00</published><updated>2008-07-03T21:04:52.570+01:00</updated><title type='text'>I love fixing bugs</title><content type='html'>I might be the strangest developer out there, but I love fixing bugs. Give me a list of things wrong with an app, and I will happily go through the list and fix the bugs one by one.&lt;br /&gt;&lt;br /&gt;Most other developers I know, hate bug fixing. They grumble, moan and complain. I think the reason for this is, if their software comes back, then it is an afront to their skills as a developer. To them, a bug is like saying, "You're not as good as you think, here's the proof".&lt;br /&gt;&lt;br /&gt;I have been in this game far too long to have an ego. Infact in my opinion, there is no place for egos in the world of software development. Egos get in the way of correct decision making. Like being under the influence of alcohol, an ego can cloud your judgement and make you do things you shouldn't.&lt;br /&gt;&lt;br /&gt;To me a bug is as much a part of the game of software development as writing code. I get the same buzz with fixing a bug as I do when writing some gnarly code and getting it to work. Like I did today using DynamicMethods and IL to make use a faster way to get reflection info - more on that later. So don't fear bug fixing, just look at it as a problem solving exercise and start to enjoy killing those little bastards.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21172681-2118381406871660534?l=softwarex-nz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarex-nz.blogspot.com/feeds/2118381406871660534/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21172681&amp;postID=2118381406871660534' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/2118381406871660534'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/2118381406871660534'/><link rel='alternate' type='text/html' href='http://softwarex-nz.blogspot.com/2008/07/i-love-fixing-bugs.html' title='I love fixing bugs'/><author><name>KiwiBastard</name><uri>http://www.blogger.com/profile/06464945422472093454</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-21172681.post-4397061768374658569</id><published>2008-06-19T10:19:00.005+01:00</published><updated>2008-06-19T10:35:50.354+01:00</updated><title type='text'>Copy all files from a root dir to another directory</title><content type='html'>I had the need to copy all files of type .m4a from literally hundreds of subdirectories to a single directory. I tried and failed with XCopy so decided to roll my own utility.&lt;br /&gt;&lt;br /&gt;So 10 minutes and some C# hackery later, SubCopyX was born. Feel free to hack and slash the code to your hearts content. If you do use it in anger or have suggestions, then let me know at : james at softwarex dot co dot nz&lt;br /&gt;&lt;br /&gt;.NET 2.0 required to run.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.retainrelease.com/subcopyx/SubCopyX.zip"&gt;Source here&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.retainrelease.com/subcopyx/SubCopyX.exe"&gt;Binary here&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Usage:&lt;br /&gt;&lt;br /&gt;from the commandline type:&lt;br /&gt;SubCopyX &lt;sourcedir&gt; &lt;destdir&gt; &lt;searchpattern&gt;&lt;br /&gt;for example:&lt;br /&gt;SubCopyX c:\Music d:\Music *.mp3&lt;br /&gt;&lt;br /&gt;to copy all your mp3 files under the root dir c:\Music to a single directory called d:\Music&lt;br /&gt;&lt;br /&gt;The following wildcard specifiers are permitted in searchPattern.&lt;br /&gt;&lt;br /&gt;Wildcard character&lt;br /&gt;&lt;br /&gt;* Zero or more characters.&lt;br /&gt;&lt;br /&gt;? Exactly zero or one character.&lt;br /&gt;&lt;br /&gt;Characters other than the wildcard specifiers represent themselves. For example, the searchPattern string "*t" searches for all names in path ending with the letter "t". The searchPattern string "s*" searches for all names in path beginning with the letter "s".&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Note:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;When using the asterisk wildcard character in a searchPattern, such as "*.txt", the matching behavior when the extension is exactly three characters long is different than when the extension is more or less than three characters long. A searchPattern with a file extension of exactly three characters returns files having an extension of three or more characters, where the first three characters match the file extension specified in the searchPattern. A searchPattern with a file extension of one, two, or more than three characters returns only files having extensions of exactly that length that match the file extension specified in the searchPattern. When using the question mark wildcard character, this method returns only files that match the specified file extension. For example, given two files, "file1.txt" and "file1.txtother", in a directory, a search pattern of "file?.txt" returns just the first file, while a search pattern of "file*.txt" returns both files.&lt;br /&gt;&lt;br /&gt;The following list shows the behavior of different lengths for the searchPattern parameter:&lt;br /&gt;&lt;br /&gt;    * "*.abc" returns files having an extension of .abc, .abcd, .abcde, .abcdef, and so on.&lt;br /&gt;    * "*.abcd" returns only files having an extension of .abcd.&lt;br /&gt;    * "*.abcde" returns only files having an extension of .abcde.&lt;br /&gt;    * "*.abcdef" returns only files having an extension of .abcdef.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21172681-4397061768374658569?l=softwarex-nz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarex-nz.blogspot.com/feeds/4397061768374658569/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21172681&amp;postID=4397061768374658569' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/4397061768374658569'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/4397061768374658569'/><link rel='alternate' type='text/html' href='http://softwarex-nz.blogspot.com/2008/06/copy-all-files-from-root-dir-to-another.html' title='Copy all files from a root dir to another directory'/><author><name>KiwiBastard</name><uri>http://www.blogger.com/profile/06464945422472093454</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-21172681.post-5497333426091947806</id><published>2008-06-10T08:35:00.003+01:00</published><updated>2008-06-10T08:43:56.541+01:00</updated><title type='text'>Post Keynote coverage</title><content type='html'>If you've been living under a rock you won't know that Apple has announced a 3G iPhone to be released in 22 countries (including NZ) on July 11.&lt;br /&gt;&lt;br /&gt;It does have GPS and 3G, but otherwise it is fairly similar to the old one. The case is a little different and there is a white one available in the 16Gb model.&lt;br /&gt;&lt;br /&gt;Big news is the price. Each carrier it appears, has there own deal available, but the maximum the phone will be is $199US. Compared to $599 last year this is great news.&lt;br /&gt;&lt;br /&gt;In the UK for example, O2 has announced the tariffs. The maximum you will pay is £99 with the £30/month deal and it will be free for anything over the £45/month tariff. Oh, and they will be offering a Pay and Go iPhone also. It looks like 2008 will be the year of the iPhone. Big things ahead, especially with the AppStore opening soon.&lt;br /&gt;&lt;br /&gt;The only other thing of note announced was MobileMe, which is a rebranding of .Mac. I haven't looked into it too much yet, but info is available &lt;a href="http://www.apple.com/mobileme/guidedtour/"&gt;Here&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Also the next version of OSX was announced. 10.6 or Snow Leopard is to be available next year and is to concentrate on performance and reducing the foot print of the OS. I guess they are taking lession learnt from the iPhone and applying to the desktop OS. Hate the name, but like the idea of an even snappier OSX.&lt;br /&gt;&lt;br /&gt;I was hoping to see some kind of incentive for Windows devs to get a mac and develop for the iPhone, but nothing was announced. I guess going forward Apple believes there is enough interest already, and I guess they are right. The have over 4000 developers signed up for the program with over 250,000 applying.&lt;br /&gt;&lt;br /&gt;Intersting times to be an Apple developer I think...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21172681-5497333426091947806?l=softwarex-nz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarex-nz.blogspot.com/feeds/5497333426091947806/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21172681&amp;postID=5497333426091947806' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/5497333426091947806'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/5497333426091947806'/><link rel='alternate' type='text/html' href='http://softwarex-nz.blogspot.com/2008/06/post-keynote-coverage.html' title='Post Keynote coverage'/><author><name>KiwiBastard</name><uri>http://www.blogger.com/profile/06464945422472093454</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-21172681.post-4504231386886283567</id><published>2008-06-09T12:07:00.002+01:00</published><updated>2008-06-09T12:14:28.458+01:00</updated><title type='text'>WWDC Predictions</title><content type='html'>Another Apple event, another round of predictions. So without any further fanfare here they are:&lt;br /&gt;&lt;br /&gt;1) 3G iPhone - well duh! I am also predicting that the phone will be available as of tomorrow, or at worst in the next week or two. Not expecting a GPS to be in built - hoping for better camera.&lt;br /&gt;2) AppStore to be announced but not ready. I would expect it to be ready by the end of the month. I would be surprised if it will be ready today. The SDK is still not ready for primetime IMHO.&lt;br /&gt;3) Apple want people developing for iPhone - that is a given. The only way at the moment is via a Mac. So look for some reason for Windows devs to develop for the iPhone. Not 100% sure what, maybe a cheaper machine, or maybe XCode for Windows.&lt;br /&gt;4) A new range of iPhones. Am hoping for a bigger tablet style iPhone, but am thinking probably just different color ranges.&lt;br /&gt;&lt;br /&gt;So that's my list - lets see how it goes.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21172681-4504231386886283567?l=softwarex-nz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarex-nz.blogspot.com/feeds/4504231386886283567/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21172681&amp;postID=4504231386886283567' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/4504231386886283567'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/4504231386886283567'/><link rel='alternate' type='text/html' href='http://softwarex-nz.blogspot.com/2008/06/wwdc-predictions.html' title='WWDC Predictions'/><author><name>KiwiBastard</name><uri>http://www.blogger.com/profile/06464945422472093454</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-21172681.post-5851996870518104344</id><published>2008-06-07T20:05:00.002+01:00</published><updated>2008-06-07T20:12:32.982+01:00</updated><title type='text'>iStat Menu</title><content type='html'>I have just found out about &lt;a href="http://www.islayer.com/"&gt;iStat Menus&lt;/a&gt;. I used to have this sort of monitoring in the Windows days and it's great to have similar in OSX.&lt;br /&gt;&lt;br /&gt;It can monitoring all important system activities, such as CPU usage, CPU temp, CPU usage, network activity, to name a few.&lt;br /&gt;&lt;br /&gt;Also it makes you look like an uber geek with such a cramped menu bar!&lt;br /&gt;&lt;br /&gt;Donationware so just download and try&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21172681-5851996870518104344?l=softwarex-nz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarex-nz.blogspot.com/feeds/5851996870518104344/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21172681&amp;postID=5851996870518104344' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/5851996870518104344'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/5851996870518104344'/><link rel='alternate' type='text/html' href='http://softwarex-nz.blogspot.com/2008/06/istat-menu.html' title='iStat Menu'/><author><name>KiwiBastard</name><uri>http://www.blogger.com/profile/06464945422472093454</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-21172681.post-2080675122779889217</id><published>2008-05-28T19:57:00.002+01:00</published><updated>2008-05-28T20:03:24.181+01:00</updated><title type='text'>New Contract</title><content type='html'>Just a quick note to say I have secured a new contract. A bit down on rate, but the market is pretty slow at the moment. Still doing .NET - I had hoped in a dream world to be doing all freelance at this stage, but a couple of projects fell through last week so that wasn't to be.&lt;br /&gt;&lt;br /&gt;Still have a few things in the air, and things looking brighter on that front.&lt;br /&gt;&lt;br /&gt;Contract market in the UK is pretty slow at the moment, so if any SANZA's thinking of coming over, might pay to leave it a month or two and see how the market shakes up after the new financial years budgets have shaken out.&lt;br /&gt;&lt;br /&gt;BTW still looking for freelance work - no job to big or small - particularly in Rails or Cocoa as trying to get a commercial portfolio together. Something around $30/hr would be fine. &lt;br /&gt;&lt;br /&gt;My .NET rates would be a higher due to what I bring to the table, but still look at anything. &lt;br /&gt;&lt;br /&gt;james (at) softwarex (dot) co (dot) nz is first port of call.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21172681-2080675122779889217?l=softwarex-nz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarex-nz.blogspot.com/feeds/2080675122779889217/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21172681&amp;postID=2080675122779889217' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/2080675122779889217'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/2080675122779889217'/><link rel='alternate' type='text/html' href='http://softwarex-nz.blogspot.com/2008/05/new-contract.html' title='New Contract'/><author><name>KiwiBastard</name><uri>http://www.blogger.com/profile/06464945422472093454</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-21172681.post-7479355732088888637</id><published>2008-05-23T08:22:00.002+01:00</published><updated>2008-05-23T08:25:23.440+01:00</updated><title type='text'>Registered iPhone Development Company</title><content type='html'>&lt;a href="http://www.softwarex.co.nz"&gt;My Company&lt;/a&gt; is now registered for development with the iPhone. It's pretty exciting times in my opinion, almost like the start of the computer age.&lt;br /&gt;&lt;br /&gt;I have a few ideas for apps, but most of my time is currently taken doing work for other companies.&lt;br /&gt;&lt;br /&gt;If you want any iPhone apps developed then give me a shout at james at softwarex dot co dot nz. Happy to discuss any kind of terms including profit share etc.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21172681-7479355732088888637?l=softwarex-nz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarex-nz.blogspot.com/feeds/7479355732088888637/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21172681&amp;postID=7479355732088888637' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/7479355732088888637'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/7479355732088888637'/><link rel='alternate' type='text/html' href='http://softwarex-nz.blogspot.com/2008/05/registered-iphone-development-company.html' title='Registered iPhone Development Company'/><author><name>KiwiBastard</name><uri>http://www.blogger.com/profile/06464945422472093454</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-21172681.post-6111847112744182088</id><published>2008-05-09T09:48:00.003+01:00</published><updated>2008-05-09T09:59:39.394+01:00</updated><title type='text'>Shameless self promotion</title><content type='html'>As part of my push to become a telecommuting freelancer, I have to become a shameless self promoter and networker. Anyone who knows me will probably say that won't be much of a stretch.&lt;br /&gt;&lt;br /&gt;Anyway, with that in mind...&lt;br /&gt;&lt;br /&gt;I am finishing up my current gig soon (9/5) and am looking for more work. Preferably telecommutable, but can be on site in the UK.&lt;br /&gt;&lt;br /&gt;I can/will do any of the following:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;C# - ASP.NET/WinForms/WPF&lt;/li&gt;&lt;br /&gt;&lt;li&gt;anything database related&lt;/li&gt;&lt;br /&gt;&lt;li&gt;C/C++&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Cocoa/Cocoa Touch iPhone&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Ruby on Rails (just beginning that so rate will be lower!)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Delphi&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Cobol&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;I have also have been using .NET 3.5 for about 6 months since Beta 2 I think it was, and am becoming a big fan of the ASP.NET MVC framework.&lt;br /&gt;&lt;br /&gt;I can be contacted at james (at) softwarex (dot) co (dot) nz in the first instance.&lt;br /&gt;&lt;br /&gt;Thanks. Normal programming will resume.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21172681-6111847112744182088?l=softwarex-nz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarex-nz.blogspot.com/feeds/6111847112744182088/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21172681&amp;postID=6111847112744182088' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/6111847112744182088'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/6111847112744182088'/><link rel='alternate' type='text/html' href='http://softwarex-nz.blogspot.com/2008/05/shameless-self-promotion.html' title='Shameless self promotion'/><author><name>KiwiBastard</name><uri>http://www.blogger.com/profile/06464945422472093454</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-21172681.post-1040791644174084259</id><published>2008-05-06T14:39:00.002+01:00</published><updated>2008-05-06T14:40:21.970+01:00</updated><title type='text'>Vodafone gets iPhone in NZ (and others)</title><content type='html'>&lt;a href="http://www.vodafone.com/start/media_relations/news/group_press_releases/2007/vodafone_to_offer0.html"&gt;Announcement here&lt;/a&gt; doesn't say 3G iPhone, but take it as read...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21172681-1040791644174084259?l=softwarex-nz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarex-nz.blogspot.com/feeds/1040791644174084259/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21172681&amp;postID=1040791644174084259' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/1040791644174084259'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/1040791644174084259'/><link rel='alternate' type='text/html' href='http://softwarex-nz.blogspot.com/2008/05/vodafone-gets-iphone-in-nz-and-others.html' title='Vodafone gets iPhone in NZ (and others)'/><author><name>KiwiBastard</name><uri>http://www.blogger.com/profile/06464945422472093454</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-21172681.post-5655081826745664973</id><published>2008-05-02T13:24:00.001+01:00</published><updated>2008-05-02T13:27:08.414+01:00</updated><title type='text'>Best programming quote ever!</title><content type='html'>..."just not an actual problem, it's a fun programming exercise that you're doing because it's just hard enough to be interesting but not so hard that you can't figure it out"&lt;br /&gt;&lt;br /&gt;Comes from &lt;a href="http://www.joelonsoftware.com/items/2008/05/01.html"&gt;Joel talking about Mesh&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;It's funny cos it's true...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21172681-5655081826745664973?l=softwarex-nz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarex-nz.blogspot.com/feeds/5655081826745664973/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21172681&amp;postID=5655081826745664973' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/5655081826745664973'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/5655081826745664973'/><link rel='alternate' type='text/html' href='http://softwarex-nz.blogspot.com/2008/05/best-programming-quote-ever.html' title='Best programming quote ever!'/><author><name>KiwiBastard</name><uri>http://www.blogger.com/profile/06464945422472093454</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-21172681.post-5564565253865683156</id><published>2008-05-02T11:40:00.003+01:00</published><updated>2008-05-02T12:09:10.997+01:00</updated><title type='text'>Over complicating things</title><content type='html'>A few years ago when I wore a younger man clothes, I worked along side some COBOL programmers. They had been in the industry for ever and had seen it, tried it and done it. But still they used COBOL.&lt;br /&gt;&lt;br /&gt;At the time Delphi was the best tool for the job, so I spent a lot of my time trying to convince them of this. "That's alright son. We'll stick with COBOL. We know it inside out, and anyway what will we do when the next trick language comes along?"&lt;br /&gt;&lt;br /&gt;I would scoff at this, shake my head and go back to my programming.&lt;br /&gt;&lt;br /&gt;A couple of years later C# was the best tool for the job, so I spent a lot of my time trying to convince them of this. "That's alright son. We'll stick to COBOL. We know it inside out, it does Windows now, and what will we do when the next trick language comes along?"&lt;br /&gt;&lt;br /&gt;I would scoff at this, shake my head and go back to programming.&lt;br /&gt;&lt;br /&gt;Now I am learning Ruby/Rails and Objective-C and they are still using COBOL. I no longer work with them, so don't have the opportunity to tell them how great Rails is, but I know their answer already.&lt;br /&gt;&lt;br /&gt;What is the point of all this?&lt;br /&gt;&lt;br /&gt;Well, over the years the only true constant I have witnessed in the IT industry is a tendancy to over complicate and over engineer projects. &lt;br /&gt;&lt;br /&gt;Here is a real life example: A project I worked on once was a ASP.NET intranet Portal application. Different parts of the portal talked to different systems, coming from different places. All of these other systems either published web services, or were developed in house connecting to an in house SQL Server database.&lt;br /&gt;A Biztalk middle layer was introduced to "expose a common middle tier" to the front end. &lt;br /&gt;&lt;br /&gt;The real reason was because the Lead Architect of the system was a Biztalk guru. The only thing the Biztalk layer added to the system was an extra layer and slowed it down.&lt;br /&gt;&lt;br /&gt;This sort of things happens a lot. Ok, sometimes it's great to build redundancy into the system, but most of the time we over engineer because we want to add another buzzword to our C.V., or find a reason to try out some flash new tech.&lt;br /&gt;&lt;br /&gt;These days of agile and iterative processes, surely isn't it better to release for the now, get it out the door and add to it if the business needs change? Builders don't build a mansion when the clients ask for a 2 room apartment, just in case they have kids one day. Why do we?&lt;br /&gt;&lt;br /&gt;And anyway, like my COBOL mates would say, no point building a mansion. Something new and whizzy will come along making the mansion look old and tired so it will be bull dozed and started again. Hmmm, maybe they did know what they were talking about after all.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21172681-5564565253865683156?l=softwarex-nz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarex-nz.blogspot.com/feeds/5564565253865683156/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21172681&amp;postID=5564565253865683156' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/5564565253865683156'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/5564565253865683156'/><link rel='alternate' type='text/html' href='http://softwarex-nz.blogspot.com/2008/05/over-complicating-things.html' title='Over complicating things'/><author><name>KiwiBastard</name><uri>http://www.blogger.com/profile/06464945422472093454</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-21172681.post-2978336607256589860</id><published>2008-05-01T22:01:00.002+01:00</published><updated>2008-05-01T22:03:32.287+01:00</updated><title type='text'>The twitter effect</title><content type='html'>I track certain keywords in Twitter. One of them is Rails. Not long ago &lt;a href="http://www.techcrunch.com/2008/05/01/twitter-said-to-be-abandoning-ruby-on-rails/"&gt;this article&lt;/a&gt; was released. I know it was not long ago because twitter has just gone crazy with the story.&lt;br /&gt;&lt;br /&gt;It's amazing to see the word spread. Just shows some of the power of the social network.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21172681-2978336607256589860?l=softwarex-nz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarex-nz.blogspot.com/feeds/2978336607256589860/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21172681&amp;postID=2978336607256589860' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/2978336607256589860'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/2978336607256589860'/><link rel='alternate' type='text/html' href='http://softwarex-nz.blogspot.com/2008/05/twitter-effect.html' title='The twitter effect'/><author><name>KiwiBastard</name><uri>http://www.blogger.com/profile/06464945422472093454</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-21172681.post-803989175457915511</id><published>2008-04-28T08:57:00.002+01:00</published><updated>2008-04-28T09:00:44.993+01:00</updated><title type='text'>Race Results</title><content type='html'>&lt;a href="http://bp3.blogger.com/_KYTD7b1k7ko/SBWDpy6tGfI/AAAAAAAAACY/LVFIwxjvA00/s1600-h/The+team+before+the+race.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;" src="http://bp3.blogger.com/_KYTD7b1k7ko/SBWDpy6tGfI/AAAAAAAAACY/LVFIwxjvA00/s320/The+team+before+the+race.jpg" border="0" alt="Steve, Penny, Madison and James before the race"id="BLOGGER_PHOTO_ID_5194202499307608562" /&gt;&lt;/a&gt;&lt;br /&gt;I won't be winning any olympic medals, but I managed to finish in just over an hour. I had issues with my calf muscles leading up to the race so didn't manage as much training as I would have liked but I don't think it would have made much difference. I was reliably told that there was only one hill in the race, which was true, except for the fact that the "hill" was an undulating 8km mass! Anyway, whinging over. It was a lovely day and a well organized event, and the proceeds all went to a worthy cause.&lt;br /&gt; &lt;br /&gt;To all of you who sponsored, thank you very much. Your support made the difference and spurred me along up the steepest parts of the hills! The total is up to £140 so far, and the website stays up for another 90 days, for those of you who may have forgotten! (www.justgiving.com/jamessugrue)&lt;br /&gt; &lt;br /&gt;Anyway, it's something I will definitely do again (although maybe I'll pick a flatter course next time) and intend on keeping the training up so next time I can break the hour&lt;br /&gt;&lt;br /&gt;&lt;a href="http://bp0.blogger.com/_KYTD7b1k7ko/SBWDqC6tGgI/AAAAAAAAACg/00pzSwefd68/s1600-h/Finished!.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;" src="http://bp0.blogger.com/_KYTD7b1k7ko/SBWDqC6tGgI/AAAAAAAAACg/00pzSwefd68/s320/Finished!.jpg" border="0" alt="Made it. Trying to cool off"id="BLOGGER_PHOTO_ID_5194202503602575874" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21172681-803989175457915511?l=softwarex-nz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarex-nz.blogspot.com/feeds/803989175457915511/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21172681&amp;postID=803989175457915511' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/803989175457915511'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/803989175457915511'/><link rel='alternate' type='text/html' href='http://softwarex-nz.blogspot.com/2008/04/race-results.html' title='Race Results'/><author><name>KiwiBastard</name><uri>http://www.blogger.com/profile/06464945422472093454</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/_KYTD7b1k7ko/SBWDpy6tGfI/AAAAAAAAACY/LVFIwxjvA00/s72-c/The+team+before+the+race.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21172681.post-9067658102726784054</id><published>2008-04-24T14:47:00.004+01:00</published><updated>2008-04-24T15:03:05.525+01:00</updated><title type='text'>New Family Member</title><content type='html'>As a long time and dedicated Windows developer and user, it will probably come as a surprise to some of the people who know me to hear that a nice TNT delivery man called today and left the following package for me:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_bD8NWacRq1E/SBCQ9x0c4bI/AAAAAAAAAC0/NOlld9xvIBs/s1600-h/DSC00772_small.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp1.blogger.com/_bD8NWacRq1E/SBCQ9x0c4bI/AAAAAAAAAC0/NOlld9xvIBs/s400/DSC00772_small.jpg" alt="" id="BLOGGER_PHOTO_ID_5192809761377935794" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;I have decided that like James, I am also going to attempt a change in direction. For me though, I hoping to wean myself off the endless hamster wheel of software development and at long last delve into the equally challenging but for me potentially more rewarding career as a writer. My genre of choice will inevitably be SciFi and will be likely to span the range from near future dystopia to giga-epoch spanning space opera.&lt;br /&gt;&lt;br /&gt;For me, the biggest issue is the problem of being overloaded with little projects of which writing is usually only one. In situations like this I would sit at my HP laptop and be almost literally paralysed by the need to make progress on so many tasks that I don't actually do anything at all. The Air will help me as I intend to have that machine as a dedicated creative space.&lt;br /&gt;&lt;br /&gt;I will be posting the traditional "unboxing" article and first impressions soon.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21172681-9067658102726784054?l=softwarex-nz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarex-nz.blogspot.com/feeds/9067658102726784054/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21172681&amp;postID=9067658102726784054' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/9067658102726784054'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/9067658102726784054'/><link rel='alternate' type='text/html' href='http://softwarex-nz.blogspot.com/2008/04/new-family-member.html' title='New Family Member'/><author><name>Shaun Austin</name><uri>http://www.blogger.com/profile/02260217349188216865</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_bD8NWacRq1E/SZQ_gbtLXVI/AAAAAAAAAFE/zRx2i4y9Frw/S220/dharma.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp1.blogger.com/_bD8NWacRq1E/SBCQ9x0c4bI/AAAAAAAAAC0/NOlld9xvIBs/s72-c/DSC00772_small.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21172681.post-5215637156564151878</id><published>2008-04-23T08:32:00.002+01:00</published><updated>2008-04-23T08:39:24.198+01:00</updated><title type='text'>New blog. Change in focus for this one</title><content type='html'>As I have announced in a &lt;a href="http://www.blogger.com/post-edit.g?blogID=21172681&amp;postID=8363950649555733005"&gt;previous post&lt;/a&gt;, I am looking for a change in direction. As such, I am opening &lt;a href="http://www.retainrelease.com"&gt;a new blog&lt;/a&gt; which will concentrate more on things like Ruby on Rails, iPhone and Mac development and anything else that I encounter while trying to reach my goal.&lt;br /&gt;&lt;br /&gt;The new blog is currently under development, and I am writing it completely in Ruby on Rails as a test site and a showcase site all rolled into one. I will be posting my thoughts about the process on the other blog when I get something publishable.&lt;br /&gt;&lt;br /&gt;What does this mean for this blog? Well I still intend to post here, but it be more of a focus on .NET related topics, and general rants. If over time I succeed in my goal, then I would guess that poosting will slow down here and increase over on the other blog, but time will tell. In the meantime it will be transmission as usual.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21172681-5215637156564151878?l=softwarex-nz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarex-nz.blogspot.com/feeds/5215637156564151878/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21172681&amp;postID=5215637156564151878' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/5215637156564151878'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/5215637156564151878'/><link rel='alternate' type='text/html' href='http://softwarex-nz.blogspot.com/2008/04/new-blog-change-in-focus-for-this-one.html' title='New blog. Change in focus for this one'/><author><name>KiwiBastard</name><uri>http://www.blogger.com/profile/06464945422472093454</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-21172681.post-1515995451632885803</id><published>2008-04-21T08:03:00.001+01:00</published><updated>2008-04-21T08:06:16.584+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VMWare'/><category scheme='http://www.blogger.com/atom/ns#' term='Control Alt Delete'/><category scheme='http://www.blogger.com/atom/ns#' term='Remote Desktop'/><title type='text'>Using Control + Alt + Delete in a Remote Desktop Session</title><content type='html'>Just a note to self as much as anything else...&lt;br /&gt;&lt;br /&gt;If you are in a virtual remote desktop session you can't use Control Alt Delete to bring up the shut down / reboot dialog. In this case try Control + Alt + End to achieve the same result.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21172681-1515995451632885803?l=softwarex-nz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarex-nz.blogspot.com/feeds/1515995451632885803/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21172681&amp;postID=1515995451632885803' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/1515995451632885803'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/1515995451632885803'/><link rel='alternate' type='text/html' href='http://softwarex-nz.blogspot.com/2008/04/using-control-alt-delete-in-remote.html' title='Using Control + Alt + Delete in a Remote Desktop Session'/><author><name>KiwiBastard</name><uri>http://www.blogger.com/profile/06464945422472093454</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-21172681.post-3094715733782636226</id><published>2008-04-18T07:32:00.002+01:00</published><updated>2008-04-18T07:39:50.077+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OSX'/><category scheme='http://www.blogger.com/atom/ns#' term='Mac'/><category scheme='http://www.blogger.com/atom/ns#' term='Switcher'/><title type='text'>Mac tips for the switcher: Print Screen</title><content type='html'>I was in need of capturing the current window (for the last post actually) to store as an image. I went to press Alt + PrnScrn. Ah. Where's the print screen? So after doing a bit of research, here are all the ways you can do a screen capture in OSX.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Capture All&lt;/span&gt;&lt;br /&gt;Press Command + Shift + 3&lt;br /&gt;&lt;br /&gt;This will place a document in pdf format on the desktop. You can then open and Save As...&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Capture selected Window&lt;/span&gt;&lt;br /&gt;Press Command + Shift + 4 + Space. This will turn the cursor into a camera and you then click the window you want to capture. Again it will save to the desktop in PDF&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Select Area to Capture&lt;/span&gt;&lt;br /&gt;Press Command + Shift + 4. This will turn the cursor into cross hairs which you then select what you want captured.&lt;br /&gt;&lt;br /&gt;While these are useful, what if you want to save to the clipboard instead of saving to the desktop? Well Apple has thought of that too - just press the &lt;span style="font-weight:bold;"&gt;Cntrl&lt;/span&gt; key with all the combos above.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21172681-3094715733782636226?l=softwarex-nz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarex-nz.blogspot.com/feeds/3094715733782636226/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21172681&amp;postID=3094715733782636226' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/3094715733782636226'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/3094715733782636226'/><link rel='alternate' type='text/html' href='http://softwarex-nz.blogspot.com/2008/04/mac-tips-for-switcher-print-screen.html' title='Mac tips for the switcher: Print Screen'/><author><name>KiwiBastard</name><uri>http://www.blogger.com/profile/06464945422472093454</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-21172681.post-2997118121959820162</id><published>2008-04-18T07:00:00.003+01:00</published><updated>2008-04-18T07:20:07.425+01:00</updated><title type='text'>Firefox 3.0 b5</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_KYTD7b1k7ko/SAg8nY2OFTI/AAAAAAAAACQ/SyODkZndlJ4/s1600-h/ffbeta5.png"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;" src="http://bp1.blogger.com/_KYTD7b1k7ko/SAg8nY2OFTI/AAAAAAAAACQ/SyODkZndlJ4/s320/ffbeta5.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5190465217926927666" /&gt;&lt;/a&gt;&lt;br /&gt;I have been sipping from the Firefox firehose for a long time. Long enough to remember that it used to be called &lt;a href="http://www.mozilla.org/projects/firefox/firefox-name-faq.html"&gt;Firebird&lt;/a&gt;! (bet ya didn't know that!)&lt;br /&gt;&lt;br /&gt;Since moving to the Mac about a year ago, I have been pretty happy with the speed of Safari so have pretty much just used that. I use &lt;a href="http://caminobrowser.org/"&gt;Camino&lt;/a&gt; when I encounter sites that isn't Safari friendly - my bank for example. The reason I choose Camino over Firefox is purely aesthetics. Camino renders widgets natively, whereas Firefox 2.x doesn't.&lt;br /&gt;&lt;br /&gt;After reading a bit about the speed and memory improvements in the last FF3 beta, I decided to give it a try. Wow. They weren't kidding about the improvements. I like the new skin and it is noticeably quicker to load and render. FF3 now feels about as fast as Safari 3.x when rendering pages.&lt;br /&gt;&lt;br /&gt;The biggest new feature about FF3 is that is now renders widgets natively. Nice.&lt;br /&gt;&lt;br /&gt;I have been using FF3 for a week and haven't used Safari once. I think that says it all.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21172681-2997118121959820162?l=softwarex-nz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarex-nz.blogspot.com/feeds/2997118121959820162/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21172681&amp;postID=2997118121959820162' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/2997118121959820162'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/2997118121959820162'/><link rel='alternate' type='text/html' href='http://softwarex-nz.blogspot.com/2008/04/firefox-30-b5.html' title='Firefox 3.0 b5'/><author><name>KiwiBastard</name><uri>http://www.blogger.com/profile/06464945422472093454</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/_KYTD7b1k7ko/SAg8nY2OFTI/AAAAAAAAACQ/SyODkZndlJ4/s72-c/ffbeta5.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21172681.post-8363950649555733005</id><published>2008-04-17T09:46:00.002+01:00</published><updated>2008-04-17T10:30:02.170+01:00</updated><title type='text'>Looking to change direction...</title><content type='html'>A conversation on &lt;a href="http://www.twitter.com/kiwibastard"&gt;Twitter&lt;/a&gt; yesterday with &lt;a href="http://ims.co.nz/blog/default.aspx"&gt;Tim&lt;/a&gt; got me thinking.&lt;br /&gt;&lt;br /&gt;I have been getting a little bored with being a software developer of late. I'm not really sure if it is a general apathy toward software development in general, or just the stuff I have been doing.&lt;br /&gt;&lt;br /&gt;As any regular reader to the blog will know (all three of you), I am a born again Apple addict. I think my development boredom has come out of the fact that I sit in front of Windows for 8+ hours a day. Every time I fire up one of my Macs, my inner ten year old, open to the endless possibilities of computing returns, only to be beaten away by the 32 year old reality of being a commercial software developer when I sit back in front of a Windows box.&lt;br /&gt;&lt;br /&gt;So I have made a conscious decision to make a change. My end goal is to eschew Windows completey and make a living as a developer on the Apple platform. I have made a start on that front with a bit of iPhone consulting, but by the end of the year I am looking to either be a full time Mac developer/consultant - whether that be Cocoa or Cocoa Touch, and/or get more in to Ruby on Rails.&lt;br /&gt;&lt;br /&gt;I am also aiming to be getting 75%+ of my income from telecommuting gigs. Tim is showing me the way on that front, he has been completely freelance for the last 5 or so years and hasn't looked back.&lt;br /&gt;&lt;br /&gt;Of course commercial and financial pressures might mean I have to do a little .NET stuff here and there, but there's no point setting a goal if you don't set the bar high enough. (That's enough mixed metaphor's for one post)&lt;br /&gt;&lt;br /&gt;BTW if you are a Apple dev shop looking to offload some work I can be contacted at&lt;br /&gt;&lt;br /&gt;james at softwarex.co.nz&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21172681-8363950649555733005?l=softwarex-nz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarex-nz.blogspot.com/feeds/8363950649555733005/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21172681&amp;postID=8363950649555733005' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/8363950649555733005'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/8363950649555733005'/><link rel='alternate' type='text/html' href='http://softwarex-nz.blogspot.com/2008/04/looking-to-change-direction.html' title='Looking to change direction...'/><author><name>KiwiBastard</name><uri>http://www.blogger.com/profile/06464945422472093454</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-21172681.post-5515724436002855555</id><published>2008-04-14T11:53:00.002+01:00</published><updated>2008-04-14T12:02:57.391+01:00</updated><title type='text'>10km Charity Fun Run</title><content type='html'>I am participating in a 10km fun run for the Marie Curie Cancer Care organisation on April 27. From their blurb:&lt;br /&gt;&lt;blockquote&gt;Marie Curie Cancer Care provides high quality nursing totally free, to give terminally ill people the choice of dying at home supported by their families. Your local Marie Curie Hospice actively promotes quality of life for people with cancer and provides support for their families. The services are completely free to patients. World class scientists at the Marie Curie Research Institute are investigating how cancer develops to find better ways of treating the disease in the future. &lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;I really can't think of a better way to expend a few calories and raise a little money. My original target was £100 but through the generosity of friends and family we have reached that in under a day!&lt;br /&gt;&lt;br /&gt;But, you can never raise enough money so for anyone reading this with some spare cash &lt;a href="http://www.justgiving.com/jamessugrue"&gt;here is the link to my page&lt;/a&gt; and feel free to donate as much or as little as you can. As the old saying goes, It all helps.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21172681-5515724436002855555?l=softwarex-nz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarex-nz.blogspot.com/feeds/5515724436002855555/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21172681&amp;postID=5515724436002855555' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/5515724436002855555'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/5515724436002855555'/><link rel='alternate' type='text/html' href='http://softwarex-nz.blogspot.com/2008/04/10km-charity-fun-run.html' title='10km Charity Fun Run'/><author><name>KiwiBastard</name><uri>http://www.blogger.com/profile/06464945422472093454</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-21172681.post-1601785606374198435</id><published>2008-04-12T13:34:00.002+01:00</published><updated>2008-04-12T13:39:35.141+01:00</updated><title type='text'>.NET NZ (expat) catchup in London number 2.0</title><content type='html'>&lt;a href="http://www.fastchicken.co.nz"&gt;Nic&lt;/a&gt;, Dan, Tana, Vince, Shekhar and myself got together for a few drinks and a chat in Earl's Court recently. We have these catchup's roughly monthly - it's just a way for a bunch of Kiwi geeks to have a catch up, a few beers and a general chin wag.&lt;br /&gt;&lt;br /&gt;Topic of conversation was varied - from Rugby to Security concepts, but never strayed to far from Web development, and our thoughts on Microsoft, and where they are heading. We talked a bit about Apple, and Mac's in general - three of us run Mac's as our personal machines. The general consensus is that if you are running Windows, then Apple hardware is the fastest way to go!&lt;br /&gt;&lt;br /&gt;Anyway, any other Kiwi geeks in the UK drop me a line and I'll be sure to send you an invite next time it's held. To the other guys, cheers for a enjoyable evening and catch ya next time!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21172681-1601785606374198435?l=softwarex-nz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarex-nz.blogspot.com/feeds/1601785606374198435/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21172681&amp;postID=1601785606374198435' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/1601785606374198435'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/1601785606374198435'/><link rel='alternate' type='text/html' href='http://softwarex-nz.blogspot.com/2008/04/net-nz-expat-catchup-in-london-number.html' title='.NET NZ (expat) catchup in London number 2.0'/><author><name>KiwiBastard</name><uri>http://www.blogger.com/profile/06464945422472093454</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-21172681.post-2612975353582416066</id><published>2008-04-09T09:59:00.002+01:00</published><updated>2008-04-09T10:05:52.404+01:00</updated><title type='text'>Tips from the Frontline: null coalescing operator</title><content type='html'>I knew about this feature but for some reason thought it was new in .NET 3.5.&lt;br /&gt;It's not, the null coalescing operator has been available since 2.0.&lt;br /&gt;&lt;br /&gt;So what is it? It's hard to say but easy to use, so a code example might be easier:&lt;br /&gt;&lt;br /&gt;string name = Request.QueryString["name"] ?? "Please Supply a Name";&lt;br /&gt;&lt;br /&gt;Basically it allows you assign a value for the not null case and an alternate value for the null case.&lt;br /&gt;&lt;br /&gt;This used to be done using the conditional operator:&lt;br /&gt;&lt;br /&gt;string name = null != Request.QueryString["name"] ? Request.QueryString["name"] : "Please Supply a name";&lt;br /&gt;&lt;br /&gt;Very handy for example when populating C# Model Classes from a DataReader.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21172681-2612975353582416066?l=softwarex-nz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarex-nz.blogspot.com/feeds/2612975353582416066/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21172681&amp;postID=2612975353582416066' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/2612975353582416066'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/2612975353582416066'/><link rel='alternate' type='text/html' href='http://softwarex-nz.blogspot.com/2008/04/tips-from-frontline-null-coalescing.html' title='Tips from the Frontline: null coalescing operator'/><author><name>KiwiBastard</name><uri>http://www.blogger.com/profile/06464945422472093454</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-21172681.post-8359562663002085368</id><published>2008-04-03T15:46:00.001+01:00</published><updated>2008-04-03T15:47:54.747+01:00</updated><title type='text'>Who needs Ruby on Rails?</title><content type='html'>&lt;a href="http://www.coboloncogs.org/HOME.HTM"&gt;This&lt;/a&gt; is one of the funiest things I've seen in a long while. I guess it helps that I have maintained a few COBOL projects in the past.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21172681-8359562663002085368?l=softwarex-nz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarex-nz.blogspot.com/feeds/8359562663002085368/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21172681&amp;postID=8359562663002085368' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/8359562663002085368'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/8359562663002085368'/><link rel='alternate' type='text/html' href='http://softwarex-nz.blogspot.com/2008/04/who-needs-ruby-on-rails.html' title='Who needs Ruby on Rails?'/><author><name>KiwiBastard</name><uri>http://www.blogger.com/profile/06464945422472093454</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-21172681.post-7120812247328788937</id><published>2008-04-03T13:03:00.002+01:00</published><updated>2008-04-03T13:18:18.986+01:00</updated><title type='text'>For fsk sake.</title><content type='html'>http://news.bbc.co.uk/sport1/hi/motorsport/formula_one/7328018.stm&lt;br /&gt;&lt;br /&gt;Lets make this clear. Nothing Max Mosely has done is illegal, or infact remotely illegal. What people do in private, is their business. Period. The fact that something gets published and put into the public domain, does not make it public domain.&lt;br /&gt;&lt;br /&gt;Let me say that again. The paper in question posted a story and video of a private act and made it public. This in no way makes it public. &lt;br /&gt;&lt;br /&gt;Issuing statements like this doesn't distance Toyota, Honda, Mercedes or BMW from anything Mosely did. Because they were never implicated. To issue these sort of statements infact makes you look like a bunch twats. What they should have said was something like, "while we disagree with Mr Mosely's conduct, we find the posting of such material abbhorent and an invasion of privacy. Mr Mosely has our full support in this difficult time for him and his family"&lt;br /&gt;&lt;br /&gt;That's what a company with intergrity and balls would say. Or better yet, just say nothing. &lt;br /&gt;&lt;br /&gt;This comes from the PC society we have become. I for one am sick of it. Surely the out cry should be against the paper, not whether or not some old dude gets off on being spanked by someone dressed up in a Nazi uniform?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21172681-7120812247328788937?l=softwarex-nz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarex-nz.blogspot.com/feeds/7120812247328788937/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21172681&amp;postID=7120812247328788937' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/7120812247328788937'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/7120812247328788937'/><link rel='alternate' type='text/html' href='http://softwarex-nz.blogspot.com/2008/04/for-fsk-sake.html' title='For fsk sake.'/><author><name>KiwiBastard</name><uri>http://www.blogger.com/profile/06464945422472093454</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-21172681.post-2789727171516945421</id><published>2008-04-02T08:48:00.006+01:00</published><updated>2008-04-02T09:24:35.609+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET MVC'/><title type='text'>ASP.NET MVC Framework - First Look</title><content type='html'>I have been playing with the &lt;a href="http://quickstarts.asp.net/3-5-extensions/mvc/MVCOverview.aspx"&gt;ASP.NET MVC Framework (Preview 2)&lt;/a&gt; recently. For those of you who don't know what the MVC framework is about, then read the overview docs in the link above. (I'll wait). &lt;br /&gt;&lt;br /&gt;&lt;em&gt;Issues with ASP.NET&lt;/em&gt;&lt;br /&gt;While the ASP.NET framework is a huge improvement over classic ASP, it does have some pitfalls and downsides. The &lt;a href="http://msdn2.microsoft.com/en-us/library/ms972976.aspx"&gt;Postback and Viewstate &lt;/a&gt;pattern does add flexibility, it does also add bloat in the form of encrypted values to your page. This means slower download times and ugly HTML (Some designers really, really hate this. Good synopsis of Viewstate issues and work arounds &lt;a href="http://www.codinghorror.com/blog/archives/000415.html"&gt;Here&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;While ASP.NET goes some way into code seperation, by splitting the View from the Code, the Page_Load mechanism can promote lazy developers into stuffing alot of business logic into there.&lt;br /&gt;&lt;br /&gt;Also the current model makes unit testing ASp.NET pages difficult.&lt;br /&gt;&lt;br /&gt;&lt;em&gt;Alternatives&lt;/em&gt;&lt;br /&gt;There are alternative patterns already being used. The current project I am working on uses the &lt;a href="http://msdn2.microsoft.com/en-us/magazine/cc188690.aspx"&gt;Model View Presenter&lt;/a&gt; pattern. MVP adds more seperation from standard ASP.NET and allows for greater testability. I quite like MVP and is probably better suited to larger projects, due to extra initial coding. I will do a follow up post on my experiences with MVP, but there are &lt;a href="http://haacked.com/archive/2006/08/09/ASP.NETSupervisingControllerModelViewPresenterFromSchematicToUnitTestsToCode.aspx"&gt;quite&lt;/a&gt; a &lt;a href="http://www.codeproject.com/KB/architecture/ModelViewPresenter.aspx"&gt;few&lt;/a&gt; &lt;a href="http://www.eggheadcafe.com/tutorials/aspnet/3c7967cb-8b7d-4b1c-96f8-034993611626/aspnet-model-view-presen.aspx"&gt;resources &lt;/a&gt;available for a quick &lt;a href="http://www.google.co.uk/search?hl=en&amp;q=model+view+presenter+asp.net&amp;meta="&gt;grok&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;While I like the MVP pattern, I would strongly recommend people looking at the MVC pattern also before comitting to the MVP.&lt;br /&gt;&lt;br /&gt;&lt;em&gt;Model View Controller&lt;/em&gt;&lt;br /&gt;The MVC pattern is quite common in standard GUI apps. &lt;a href="http://developer.apple.com/documentation/Cocoa/Conceptual/CocoaFundamentals/CocoaDesignPatterns/chapter_5_section_4.html"&gt;Cocoa &lt;/a&gt; development on the Mac and iPhone actively promotes and enforces the pattern, and Java developers have been using it for a while. It is only in the last few years that web developers have embraced the technology.&lt;br /&gt;&lt;br /&gt;The ASP.NET MVC framework is still in beta, with Preview 2 being released &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=38CC4CF1-773A-47E1-8125-BA3369BF54A3&amp;displaylang=en"&gt;recently&lt;/a&gt;. The major benefits I can see are&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Greater Testability and Mockability&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Greater seperation of concerns - logically breaking down app into components&lt;/li&gt;&lt;br /&gt;&lt;li&gt;URL rerouting built in&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Elimination of PostBack and Viewstate&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;Along with these it enforces a logical project and solution layout, so going back to old code will be easier under MVC.&lt;br /&gt;&lt;br /&gt;I went off on a tangent on what I originally thought I would post about, but I will post some sample code about MVC in the future as I get to grips with it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21172681-2789727171516945421?l=softwarex-nz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarex-nz.blogspot.com/feeds/2789727171516945421/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21172681&amp;postID=2789727171516945421' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/2789727171516945421'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/2789727171516945421'/><link rel='alternate' type='text/html' href='http://softwarex-nz.blogspot.com/2008/04/aspnet-mvc-framework-first-look.html' title='ASP.NET MVC Framework - First Look'/><author><name>KiwiBastard</name><uri>http://www.blogger.com/profile/06464945422472093454</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-21172681.post-665028416863907783</id><published>2008-03-13T12:26:00.002Z</published><updated>2008-03-13T12:31:21.474Z</updated><title type='text'>Resetting Intellisense in VS 2005</title><content type='html'>For some reason or another (well possibly due to uninstalling R#) intellisense had stopped working in Visual Studio (2005).&lt;br /&gt;&lt;br /&gt;It's fairly easy to rest it. To do so enter the following commands into the console from the \progra files\Microsoft Visual Studio 8\Common7\IDE directory:&lt;br /&gt;&lt;br /&gt;1) devenv /setup&lt;br /&gt;2) devenv /resetuserdata&lt;br /&gt;3) devenv /resetsettings CSharp&lt;br /&gt;&lt;br /&gt;Restart VS after step 3 just in case.&lt;br /&gt;&lt;br /&gt;This will clobber any customised settings such as fonts or colors you may have installed. For me it killed the TextMate theme I had installed. Worth it to have intellisense back!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21172681-665028416863907783?l=softwarex-nz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarex-nz.blogspot.com/feeds/665028416863907783/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21172681&amp;postID=665028416863907783' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/665028416863907783'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/665028416863907783'/><link rel='alternate' type='text/html' href='http://softwarex-nz.blogspot.com/2008/03/resetting-intellisense-in-vs-2005.html' title='Resetting Intellisense in VS 2005'/><author><name>KiwiBastard</name><uri>http://www.blogger.com/profile/06464945422472093454</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-21172681.post-8998594687075638039</id><published>2008-03-13T08:37:00.002Z</published><updated>2008-03-13T08:42:05.182Z</updated><title type='text'>Twitter</title><content type='html'>So I've decided to experiment with Twitter.&lt;br /&gt;&lt;br /&gt;I am "KiwiBastard" - &lt;a href="http://www.twitter.com/kiwibastard"&gt;www.twitter.com/kiwibastard&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Feel free to follow me. Actually please do I only have one at the moment and that's my wife!&lt;br /&gt;&lt;br /&gt;For those of you that don't know, Twitter is a service where you can update what you are up to, keep in touch with people all in 140 character posts. Has the power of social networking like Facebook, without the app Spam.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21172681-8998594687075638039?l=softwarex-nz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarex-nz.blogspot.com/feeds/8998594687075638039/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21172681&amp;postID=8998594687075638039' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/8998594687075638039'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/8998594687075638039'/><link rel='alternate' type='text/html' href='http://softwarex-nz.blogspot.com/2008/03/twitter.html' title='Twitter'/><author><name>KiwiBastard</name><uri>http://www.blogger.com/profile/06464945422472093454</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-21172681.post-6508670460092105541</id><published>2008-03-12T08:24:00.004Z</published><updated>2008-03-12T08:50:44.305Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='OSX'/><category scheme='http://www.blogger.com/atom/ns#' term='iPhone SDK'/><category scheme='http://www.blogger.com/atom/ns#' term='Mac'/><title type='text'>iPhone SDK. Initial Impressions</title><content type='html'>I have been playing with the iPhone SDK over the past few days. BTW they need a better name than that I think, it's not just for the iPhone. I think there will be just as many iPod touch users. Anyway I digress.&lt;br /&gt;&lt;br /&gt;After the intial hiccup of the download server being over loaded, I managed to down the SDk a couple of days after the release. It's a whopping 2.1Gb which includes the actual SDK and other tools including an update to XCode to 3.1. That's a post in itself, but the code editor seems to be a lot nicer with inline error messages, code folding (that may have been in since 3.0 not sure) and little things like brace matching animations etc.&lt;br /&gt;&lt;br /&gt;The actual SDK is broken in 4 layers. They are: Core OS, Core Services, Media and Cocoa Touch. I won't go into detail here but the main layer is the Cocoa Touch layer which includes the UIKit framework which handles UI and UI events such as gestures etc.&lt;br /&gt;&lt;br /&gt;More info &lt;a href="http://developer.apple.com/iphone/gettingstarted/docs/iphoneosoverview.action"&gt;HERE&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;em&gt;Initial Thoughts&lt;/em&gt;&lt;br /&gt;First off, I am a hobbiest Objective-C programmer at best. While I am a very experienced C# developer, Objective-C is a little different. Having said that, I had an iPhone app running pretty quickly. Admittedly, the app only displayed a TableView and then on touch of a cell loaded another view, but it was easy. A few lines of code easy.&lt;br /&gt;The SDK would be an impressive effort on a full blown desktop, but packing all the animation and UI features into a device the size of a phone is nothing short of amazing. The features the iPhone exposes through the SDK is nothing short of game changing. As a long suffering Windows Mobile developer, to say the iPhone is a generation ahead from a developers point of view is an understatement.&lt;br /&gt;&lt;br /&gt;I think the clearest thing I can say is that a developer with a good idea isn't limited by the device. Except...&lt;br /&gt;&lt;br /&gt;&lt;em&gt;Issues&lt;/em&gt;&lt;br /&gt;There are a couple. First off, your iPhone app exists in a "sandbox" mode. It can't access resources from other applications or files from outside it's realm. &lt;br /&gt;Also, only one application can be running at once, and if the phone rings for example, your application will simply quit.&lt;br /&gt;The last issue is syncing. There isn't at this stage inbuilt syncing functionality. There are a couple of options to get over this mostly involving communicating with a network layer or webservice. So your desktop app will have to expose it's data either locally or over the internet via a webservice. This does give the option of having a Windows app serving the data, but it would be nice to have a desktop syncing mechanism ala Active Sync.&lt;br /&gt;&lt;br /&gt;The thing to remember is this is a Beta so hopefully some of the issues can be addressed before official release, but even so this is going to be big. I mean think of the games potiential alone. With the motion detection on the devices, it has the potiential to take hand held games to another level.&lt;br /&gt;&lt;br /&gt;So as a conclusion to this ramble, I had great hopes for the SDK, and they have been met in almost every way.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21172681-6508670460092105541?l=softwarex-nz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarex-nz.blogspot.com/feeds/6508670460092105541/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21172681&amp;postID=6508670460092105541' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/6508670460092105541'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/6508670460092105541'/><link rel='alternate' type='text/html' href='http://softwarex-nz.blogspot.com/2008/03/iphone-sdk-initial-impressions.html' title='iPhone SDK. Initial Impressions'/><author><name>KiwiBastard</name><uri>http://www.blogger.com/profile/06464945422472093454</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-21172681.post-7780114088344916746</id><published>2008-03-06T20:52:00.002Z</published><updated>2008-03-06T20:55:17.934Z</updated><title type='text'>iPhone SDK announced</title><content type='html'>The iPhone SDk has been announced by Apple. It is beta at the moment, with full release in June.&lt;br /&gt;&lt;br /&gt;All apps will be published through iTunes with the developer getting 70% of revenues. Pretty fair I think.&lt;br /&gt;&lt;br /&gt;This is going to be huge. If you don't believe me, try and download the SDK - the server is overloaded!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21172681-7780114088344916746?l=softwarex-nz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarex-nz.blogspot.com/feeds/7780114088344916746/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21172681&amp;postID=7780114088344916746' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/7780114088344916746'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/7780114088344916746'/><link rel='alternate' type='text/html' href='http://softwarex-nz.blogspot.com/2008/03/iphone-sdk-announced.html' title='iPhone SDK announced'/><author><name>KiwiBastard</name><uri>http://www.blogger.com/profile/06464945422472093454</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-21172681.post-2938673490845889706</id><published>2008-03-05T20:44:00.002Z</published><updated>2008-03-05T20:48:03.113Z</updated><title type='text'>Intoduction toExtension Method</title><content type='html'>One of the nice features in 3.5 is Extension Methods. Basically a side effect of LINQ, Extension methods offer the ability to create utility methods that are statically available to all classes. I'm not going to go into detail here, but there is plenty of information available on the net.&lt;br /&gt;&lt;br /&gt;One utility class that most developers will have in there virtual rucksack is for Encrypting and Decrypting. In most cases encryption/decryption is done at variable level, for example encrypting/decrypting passwords or logins.&lt;br /&gt;&lt;br /&gt;Creating an Extension Method to do this is a simple thing to do.&lt;br /&gt;&lt;br /&gt;There are a couple of criteria that an EM must adhere to. Out of the Visual Studio help file : "&lt;em&gt;Extension methods are defined as static methods but are called by using instance method syntax. Their first parameter specifies which type the method operates on, and the parameter is preceded by the this modifier. Extension methods are only in scope when you explicitly import the namespace into your source code with a using directive&lt;/em&gt;."&lt;br /&gt;&lt;br /&gt;To achieve our goal we will create two EM's. One for encrypting some plain text and one for decrypting an already encrypted value back to plain text.&lt;br /&gt;&lt;br /&gt;First we must create a new class. Make sure the class is marked static.&lt;br /&gt;&lt;br /&gt;Our encryption EM will take a string parameter and return an array of byte as below:&lt;br /&gt;&lt;br /&gt;        public static byte[] ToEncryptedValue(this String unEncryptedValue)&lt;br /&gt;        {&lt;br /&gt;         &amp;nbsp;&amp;nbsp;&amp;nbsp;return ProtectedData.Protect(Encoding.Default.GetBytes&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(unEncryptedValue), null, DataProtectionScope.LocalMachine);  &lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;All the hard work of encryption is handled by the ProtectedData class. The DataProtection class is a .NEt wrapper for the Data Protection API (DPAPI). The beauty of using the DPAPI class is it illeviates the neccessity of generating and storing an encryption key, which can be an issue when dealing with security. The protect method takes a string, and a protection scope and returns an encrypted array of bytes.&lt;br /&gt;&lt;br /&gt;Conversely, our decryption EM will take an array of bytes and return a string as below:&lt;br /&gt;&lt;br /&gt;        public static string ToUnEncryptedValue(this byte[] encryptedValue)&lt;br /&gt;        {&lt;br /&gt;        &amp;nbsp;&amp;nbsp;&amp;nbsp;return Encoding.Default.GetString(ProtectedData.Unprotect&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(encryptedValue, null, DataProtectionScope.LocalMachine));&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;again we use the ProtectedData class. The only caveat here is the data protection scope must be the same as the encryption scope.&lt;br /&gt;&lt;br /&gt;Also, the encryption is tied to a machine. You can't take a password encrypt it on one machine and then try and decrypt it on another machine.&lt;br /&gt;&lt;br /&gt;Extension Methods are called like any other class method, except they are called by variables themselves. For example to encrypt a variable called password:&lt;br /&gt;&lt;br /&gt;byte[] encrypted = password.ToEncryptedValue();&lt;br /&gt;&lt;br /&gt;and coversely to decrypt:&lt;br /&gt;&lt;br /&gt;string plainText = encryptedArray.ToUnEncryptedValue();&lt;br /&gt;&lt;br /&gt;Easy!&lt;br /&gt;&lt;br /&gt;Hopefully from this the potential of extension methods are evident.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21172681-2938673490845889706?l=softwarex-nz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarex-nz.blogspot.com/feeds/2938673490845889706/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21172681&amp;postID=2938673490845889706' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/2938673490845889706'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/2938673490845889706'/><link rel='alternate' type='text/html' href='http://softwarex-nz.blogspot.com/2008/03/intoduction-toextension-method.html' title='Intoduction toExtension Method'/><author><name>KiwiBastard</name><uri>http://www.blogger.com/profile/06464945422472093454</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-21172681.post-6245565242362445098</id><published>2008-03-05T11:06:00.003Z</published><updated>2008-03-05T11:11:55.176Z</updated><title type='text'>ASP.NET Tip #2 - Formatting a Caption on a GridView</title><content type='html'>This one is easy too, but also easy to overlook.&lt;br /&gt;&lt;br /&gt;To format the Caption of a GridView, just add CSS to the Caption element of the css of your GridView. For example if you want to set the caption font to bold do the following: &lt;br /&gt;&lt;br /&gt;.tipGrid Caption&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;font-weight:bold;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;[The above assumes you have set CssClass="tipGrid" on your GridView and you have a class called .tipGrid in your CSS file]&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21172681-6245565242362445098?l=softwarex-nz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarex-nz.blogspot.com/feeds/6245565242362445098/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21172681&amp;postID=6245565242362445098' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/6245565242362445098'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/6245565242362445098'/><link rel='alternate' type='text/html' href='http://softwarex-nz.blogspot.com/2008/03/aspnet-tip-2-formatting-caption-on.html' title='ASP.NET Tip #2 - Formatting a Caption on a GridView'/><author><name>James</name><uri>http://www.blogger.com/profile/17381337834045521837</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-21172681.post-4289230517864521939</id><published>2008-03-05T10:55:00.003Z</published><updated>2008-03-05T11:04:04.897Z</updated><title type='text'>ASP.NET Tips #1 - Formatting Bound Columns to short date</title><content type='html'>I am back doing web development with my current contract, so thought I would post some quick tips as I came across things that may not be obvious.&lt;br /&gt;&lt;br /&gt;This is fairly easy, but a good way to start. Say you have a date column that is displaying the time, but you only want to show the short date.&lt;br /&gt;&lt;br /&gt;On the column set the DataFormatString to "{0:d}" and set HtmlEncode="false". Job Done.&lt;br /&gt;&lt;br /&gt;Example:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://bp0.blogger.com/_UbZAMSunc48/R859-B84ZpI/AAAAAAAAAAM/2D8RxyCmP04/s1600-h/snippet-1.PNG"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://bp0.blogger.com/_UbZAMSunc48/R859-B84ZpI/AAAAAAAAAAM/2D8RxyCmP04/s320/snippet-1.PNG" border="0" alt=""id="BLOGGER_PHOTO_ID_5174211526524429970" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21172681-4289230517864521939?l=softwarex-nz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarex-nz.blogspot.com/feeds/4289230517864521939/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21172681&amp;postID=4289230517864521939' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/4289230517864521939'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/4289230517864521939'/><link rel='alternate' type='text/html' href='http://softwarex-nz.blogspot.com/2008/03/aspnet-tips-1-formatting-bound-columns.html' title='ASP.NET Tips #1 - Formatting Bound Columns to short date'/><author><name>James</name><uri>http://www.blogger.com/profile/17381337834045521837</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/_UbZAMSunc48/R859-B84ZpI/AAAAAAAAAAM/2D8RxyCmP04/s72-c/snippet-1.PNG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21172681.post-1462086931777930885</id><published>2008-02-28T11:22:00.001Z</published><updated>2008-02-28T11:23:13.010Z</updated><title type='text'>It's not just me...</title><content type='html'>&lt;a href="http://www.keanewzealand.com/news/article.html?componentid=7173612"&gt;Link Here&lt;/a&gt; that thinks the coffee is complete shite in Britain.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21172681-1462086931777930885?l=softwarex-nz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarex-nz.blogspot.com/feeds/1462086931777930885/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21172681&amp;postID=1462086931777930885' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/1462086931777930885'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/1462086931777930885'/><link rel='alternate' type='text/html' href='http://softwarex-nz.blogspot.com/2008/02/its-not-just-me.html' title='It&apos;s not just me...'/><author><name>KiwiBastard</name><uri>http://www.blogger.com/profile/06464945422472093454</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-21172681.post-747892298739565615</id><published>2008-02-12T13:54:00.001Z</published><updated>2008-02-12T13:54:26.688Z</updated><title type='text'>More Linq to SQL pondering's</title><content type='html'>&lt;p&gt;As has been noted on this blog before, I like the idea of Linq to SQL, but have some real reservations about it's use in an n-tier, real world way.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://west-wind.com/weblog/posts/246222.aspx"&gt;Rick Strahl&lt;/a&gt; has a good piece talking about the DataContext lifecycle. In a nutshell, the problem with the DataContext is that it is a persistent, connected object.&lt;/p&gt;  &lt;p&gt;Most other ORM's use a static management object that you connect and disconnect as needed.&lt;/p&gt;  &lt;p&gt;The issue with the Linq DataContext is knowing how/when to use it with your business layer. A single global DataContext is not a good idea as it doesn't allow enough flexibility in it's updating mechanism. The general consensus is to create a DataContext per Business Object, do its work and then dispose.&lt;/p&gt;  &lt;p&gt;What this means in practice is you will end up having plain old C# objects being populated by Linq to SQL and passed between tiers using collections perhaps. You probably could pass IQueryable&amp;lt;T&amp;gt; objects between tiers, but this has it's disadvantages too. &lt;/p&gt;  &lt;p&gt;So it's my conclusion that for real world, n-tier apps, Linq to SQL is far from the best approach, and in fact you shouldn't probably use it at all. I am going to stick to the collection based approach that I have always used, and maybe use Linq or Linq to SQL as purely a Data Layer and a nice querying language.&lt;/p&gt;  &lt;p&gt;Unfortunately, from what I have seen from the Entity Framework has the same problems as Linq to SQL. Hopefully it's something Microsoft can remedy in the future. I think if they listen to the community they will have to.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21172681-747892298739565615?l=softwarex-nz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarex-nz.blogspot.com/feeds/747892298739565615/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21172681&amp;postID=747892298739565615' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/747892298739565615'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/747892298739565615'/><link rel='alternate' type='text/html' href='http://softwarex-nz.blogspot.com/2008/02/more-linq-to-sql-pondering.html' title='More Linq to SQL pondering&amp;#39;s'/><author><name>KiwiBastard</name><uri>http://www.blogger.com/profile/06464945422472093454</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-21172681.post-7168410956568428038</id><published>2008-02-07T16:13:00.001Z</published><updated>2008-02-07T16:13:15.012Z</updated><title type='text'>C# Coding Standards</title><content type='html'>&lt;p&gt;I was looking through some oldish code of mine the other day. While most of the code was ok, it was clear I wasn't working to any coding standard at the time.&lt;/p&gt;  &lt;p&gt;Some variables are camel cased some Pascal. There were methods where the fields should have been and properties where the methods should have been. It wasn't a disaster, but it was a lot harder than finding stuff in my code these days.&lt;/p&gt;  &lt;p&gt;Without wanting to get religious, I thought I would post my coding standard. I'm not arrogant enough to assume everyone will like it, but I think the point of the post is that it is important that some standard is adhered to, and everyone developing on that code knows it, and sticks to it.&lt;/p&gt;  &lt;p&gt;I'm not going to go fully into every little feature, just the basics. There a couple of other documents on the net, and of course the &lt;a href="http://www.amazon.co.uk/Framework-Design-Guidelines-Conventions-Libraries/dp/0321246756/ref=pd_bbs_sr_1/203-2615884-8643958?ie=UTF8&amp;amp;s=gateway&amp;amp;qid=1202312835&amp;amp;sr=8-1"&gt;&amp;quot;Bible&amp;quot;&lt;/a&gt; which I base a lot of my coding standards on.&lt;/p&gt;  &lt;p&gt;&lt;u&gt;&lt;strong&gt;Code Specifics&lt;/strong&gt;&lt;/u&gt;&lt;/p&gt;  &lt;p&gt;1) Private fields should start with the _&lt;/p&gt;  &lt;p&gt;Example:&lt;/p&gt;  &lt;p&gt;&lt;em&gt;private int _classId;&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;2) Camel Casing.&lt;/p&gt;  &lt;p&gt;All variables and parameters should be camel cased. Abbreviations should be camel cased unless 2 letters or under. Id is a special case and should be camel cased.&lt;/p&gt;  &lt;p&gt;Examples:&lt;/p&gt;  &lt;p&gt;&lt;em&gt;private Node GetNextChild( Node startNode, Node currentNode)&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;private int _classId;&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;private string _memberITDepartmentName;&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;3) Pascal Casing&lt;/p&gt;  &lt;p&gt;All Properties and Methods should be Pascal Cased.&lt;/p&gt;  &lt;p&gt;Examples:&lt;/p&gt;  &lt;p&gt;&lt;em&gt;public string MemberName&lt;/em&gt;     &lt;br /&gt;&lt;em&gt;{&lt;/em&gt; &lt;/p&gt;  &lt;blockquote&gt;&lt;em&gt;get;&lt;/em&gt;     &lt;br /&gt;&lt;em&gt;set;&lt;/em&gt; &lt;/blockquote&gt; &lt;em&gt;}&lt;/em&gt;   &lt;p&gt;&lt;em&gt;public int GetMemberId(string memberName)&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;u&gt;Code Layout&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;1) Brace Layout&lt;/p&gt;  &lt;p&gt;All braces should be on their own line directly under the code they follow. This includes methods, control and looping statements.&lt;/p&gt;  &lt;p&gt;Example:&lt;/p&gt;  &lt;p&gt;&lt;em&gt;private void UpdateAll()&lt;/em&gt;     &lt;br /&gt;&lt;em&gt;{&lt;/em&gt;     &lt;br /&gt;&lt;/p&gt;  &lt;blockquote&gt;&lt;em&gt;for (int i = 0; i &amp;lt; 100; i++)&lt;/em&gt;     &lt;br /&gt;&lt;em&gt;{&lt;/em&gt;     &lt;br /&gt;&lt;em&gt;...&lt;/em&gt;     &lt;br /&gt;&lt;em&gt;}&lt;/em&gt;     &lt;br /&gt;&lt;/blockquote&gt; &lt;em&gt;}&lt;/em&gt;   &lt;br /&gt;&lt;em&gt;&amp;#160;&lt;/em&gt;   &lt;p&gt;2) Indentation&lt;/p&gt;  &lt;p&gt;All code should be indented where appropriate 4 spaces.&lt;/p&gt;  &lt;p&gt;3) Regions&lt;/p&gt;  &lt;p&gt;All code should be broken up into regions in this order&lt;/p&gt;  &lt;p&gt;Constants, Fields, Constructor(s), Properties, Methods, Delegates, Events&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;u&gt;Naming Conventions&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;1) Variable Naming&lt;/p&gt;  &lt;p&gt;Developers are free to name variables as they see fit, but Hungarian notation should not be used, although if agreed upon, HN can be used when naming GUI elements, eg btnOK, btnClose.&lt;/p&gt;  &lt;p&gt;Variables should not include the type name of that variable&lt;/p&gt;  &lt;p&gt;Example:&lt;/p&gt;  &lt;p&gt;&lt;em&gt;private string _connectionString;&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;2) File Naming&lt;/p&gt;  &lt;p&gt;File should be named of the type they are. Class files should start with cls, interfaces should start with I. Interface names should also start with a capital I, but class names should not include the cls.&lt;/p&gt;  &lt;p&gt;I'll stop there. I think all the bases are covered, like I said before I think it is important each team has there own standards that are agreed upon and used, but these ones could be a good place to start...&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21172681-7168410956568428038?l=softwarex-nz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarex-nz.blogspot.com/feeds/7168410956568428038/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21172681&amp;postID=7168410956568428038' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/7168410956568428038'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/7168410956568428038'/><link rel='alternate' type='text/html' href='http://softwarex-nz.blogspot.com/2008/02/c-coding-standards.html' title='C# Coding Standards'/><author><name>KiwiBastard</name><uri>http://www.blogger.com/profile/06464945422472093454</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-21172681.post-4283668138220458504</id><published>2008-01-31T09:33:00.000Z</published><updated>2008-01-31T09:38:20.556Z</updated><title type='text'>Webstock</title><content type='html'>Just a quick note to those in NZ and in the business of creating or designing Websites. &lt;a href="http://www.webstock.org.nz/"&gt;Webstock&lt;/a&gt; is on again from Feb 11-15 in Wellington. See the site for a full list of speakers.&lt;br /&gt;&lt;br /&gt;I haven't been before, but I believe it's a must go for those in the industry. Also my mate and former Boss, Hamish Fraser from &lt;a href="http://www.verb.co.nz"&gt;Verb&lt;/a&gt; is a co-sponsor, so keen for it to go well for them.&lt;br /&gt;&lt;br /&gt;I will get him to do a post conference write-up after the event.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21172681-4283668138220458504?l=softwarex-nz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarex-nz.blogspot.com/feeds/4283668138220458504/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21172681&amp;postID=4283668138220458504' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/4283668138220458504'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/4283668138220458504'/><link rel='alternate' type='text/html' href='http://softwarex-nz.blogspot.com/2008/01/webstock.html' title='Webstock'/><author><name>KiwiBastard</name><uri>http://www.blogger.com/profile/06464945422472093454</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-21172681.post-5176042740049783663</id><published>2008-01-21T12:39:00.000Z</published><updated>2008-01-21T13:06:53.431Z</updated><title type='text'>1st .NET NZ London meet up wrap</title><content type='html'>We held our inaugral meet up on Saturday. Daniel Robinson kindly offered his place as a venue, and even kindlier supplied Drinks and Nibbles. Present were Daniel, &lt;a href="http://www.fastchicken.co.nz/blog/"&gt;Nic&lt;/a&gt; and myself. Andrew Revell was in Iceland so couldn't come.&lt;br /&gt;&lt;br /&gt;It was nice to finally put faces to names, especially Nic, whom I have known (virtually) since the late 90's from the Delphi User Group.&lt;br /&gt;&lt;br /&gt;Topic's of conversation varied from non technical observations of the UK we had so far to Linq and WPF on the technical side. We were all in agreement at how backward a lot of systems are in the UK, and how getting things setup can be a nightmare. Oh and how quickly the cash we bought from NZ to live on gets burned!&lt;br /&gt;&lt;br /&gt;We are aiming to do this at least once a month, and hoping numbers to grow as people come over, or other Kiwi's in the UK find out. We should have at least two new faces next time, as Nick and Shekhar are landing in the next few weeks.&lt;br /&gt;&lt;br /&gt;If you are an antipodean in the UK of a technical bent, then feel free to get in touch by placing a comment and I will add you to the contact list. Otherwise, if you are heading over here from NZ in the coming weeks and months get in touch also - advice freely given also!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21172681-5176042740049783663?l=softwarex-nz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarex-nz.blogspot.com/feeds/5176042740049783663/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21172681&amp;postID=5176042740049783663' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/5176042740049783663'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/5176042740049783663'/><link rel='alternate' type='text/html' href='http://softwarex-nz.blogspot.com/2008/01/1st-net-nz-london-meet-up-wrap.html' title='1st .NET NZ London meet up wrap'/><author><name>KiwiBastard</name><uri>http://www.blogger.com/profile/06464945422472093454</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-21172681.post-3868419853684029917</id><published>2008-01-15T20:56:00.000Z</published><updated>2008-01-15T21:04:53.540Z</updated><title type='text'>Keynote prediction results</title><content type='html'>&lt;span class="Apple-style-span" style="font-size: small;"&gt;Here are the predictions I made with the results:&lt;/span&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style=" "&gt;&lt;span style="font-weight: bold; "&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;1) iPhone 2 or some sort of new iPhone.&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;Wrong. Just a software update.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold; "&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;2) "Touch" SDK&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;Yes, but had already been mentioned.  &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold; "&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;3) Sub-Notebook Mac&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;Yes, but it was fairly common knowledge&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold; "&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;4) iTunes video rentals&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;I Said:&lt;br /&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;This looks a certainty, although probably in the US only for a start, so not too worried about this announcement. If this is true, then an upgraded Apple TV might be needed to push videos from iTunes to the TV?&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: 13px; font-style: italic;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: 13px; "&gt;Got it in one with that one! I pat myself on the back for that one - no one else that I saw was predicting a refresh to the ATV&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style=" "&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold; "&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;5) Desktop between Mac Pro and iMac&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;No Sadly.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold; "&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;6) Refresh to Apple Cinema Displays&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;Again No.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold; "&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;My out of Left Field item: Newton like device&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: 13px; "&gt;No dammit&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: 13px; font-weight: bold;"&gt;.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: 13px; font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: 13px;"&gt;So 3/6 for 50%. Not too bad I guess for my first try.&lt;/span&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/21172681-3868419853684029917?l=softwarex-nz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarex-nz.blogspot.com/feeds/3868419853684029917/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21172681&amp;postID=3868419853684029917' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/3868419853684029917'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/3868419853684029917'/><link rel='alternate' type='text/html' href='http://softwarex-nz.blogspot.com/2008/01/keynote-prediction-results.html' title='Keynote prediction results'/><author><name>KiwiBastard</name><uri>http://www.blogger.com/profile/06464945422472093454</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-21172681.post-3851325498113283605</id><published>2008-01-15T19:34:00.000Z</published><updated>2008-01-15T19:44:42.208Z</updated><title type='text'>Highlights from the Keynote</title><content type='html'>The keynote is over and the highlights are iTunes rental and the updated Apple TV and of course the MacBook Air. Hate the name, love the computer. I can't wait to see one in person, but from the videos it's tiny.&lt;div&gt; &lt;/div&gt;&lt;div&gt;Go to the &lt;a href="http://www.apple.com/"&gt;Apple Website&lt;/a&gt; for all the video action.&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;They have just pushed out an update to iTunes, Front Row and QuickTime. Along with these updates, they have fixed the Dock and the menu, on the quiet too I might add. Well it appears to my eyes anyway. Pic below doesn't do justice, but the reflection is different - I can't put my hand on what exactly, but it's definitely been changed.&lt;/div&gt;&lt;div&gt;&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;div&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://bp3.blogger.com/_KYTD7b1k7ko/R40Mju5WwKI/AAAAAAAAABk/cNxKM9YLyus/s320/dock_fix.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5155790956432638114" /&gt;&lt;/div&gt;&lt;div&gt; &lt;/div&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/21172681-3851325498113283605?l=softwarex-nz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarex-nz.blogspot.com/feeds/3851325498113283605/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21172681&amp;postID=3851325498113283605' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/3851325498113283605'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/3851325498113283605'/><link rel='alternate' type='text/html' href='http://softwarex-nz.blogspot.com/2008/01/highlights-from-keynote.html' title='Highlights from the Keynote'/><author><name>KiwiBastard</name><uri>http://www.blogger.com/profile/06464945422472093454</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/_KYTD7b1k7ko/R40Mju5WwKI/AAAAAAAAABk/cNxKM9YLyus/s72-c/dock_fix.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21172681.post-470434235481878120</id><published>2008-01-14T11:32:00.000Z</published><updated>2008-01-14T11:42:00.158Z</updated><title type='text'>Why didn't I get the press release?</title><content type='html'>&lt;a href="http://www.leatherman.com/products/tools/p4/default.asp"&gt;Oh man I want one of these. &lt;/a&gt;&lt;br /&gt;&lt;br /&gt;It's a shame I only just found it now. Would have been a great Xmas present. It measures 5.5cm in length so it's tiny. They also do one with Scissors (S4), but the Knife would do everything the scissors would.&lt;br /&gt;&lt;br /&gt;I actually came across indirectly from &lt;a href="http://www.codinghorror.com/"&gt;Jeff Atwoods&lt;/a&gt; &lt;a href="http://www.codinghorror.com/blog/archives/001036.html"&gt;latest post &lt;/a&gt; about what is on his Keychain this year.&lt;br /&gt;&lt;br /&gt;For the record, my keychain is boring.&lt;br /&gt;&lt;br /&gt;It contains:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Keys&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Liverpool FC Badge&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.officialproducts.co.uk/product.php?xProd=7&amp;amp;xSec=3"&gt;The Stig&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;And soon to be a Leatherman Squirt P4&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21172681-470434235481878120?l=softwarex-nz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarex-nz.blogspot.com/feeds/470434235481878120/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21172681&amp;postID=470434235481878120' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/470434235481878120'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/470434235481878120'/><link rel='alternate' type='text/html' href='http://softwarex-nz.blogspot.com/2008/01/why-didnt-i-get-press-release.html' title='Why didn&apos;t I get the press release?'/><author><name>KiwiBastard</name><uri>http://www.blogger.com/profile/06464945422472093454</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-21172681.post-4188232319442670819</id><published>2008-01-14T09:05:00.000Z</published><updated>2008-01-14T12:50:10.816Z</updated><title type='text'>Keynote Predictions:</title><content type='html'>Steve Jobs will kick off 2008 at the MacWorld Expo tomorrow, giving the Keynote to conference, which he does every year.&lt;br /&gt;&lt;br /&gt;It's Apple fans favourite time of the year, with Jobs announcing new  products, or updates to old favourites. Last year for example, the iPhone was announced to great fanfare.&lt;br /&gt;&lt;br /&gt;The other favourite past-time for Apple pundits this time of year is predicting what will be announced. I have heard everything from a sub-notebook through to a docking station that includes monitor, looking a little like the iMac.&lt;br /&gt;&lt;br /&gt;Having read and studied the rumour sites and analysts predicitions, here is a list of the things I think we will see announced (in no particular order):&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;1) iPhone 2 or some sort of new iPhone.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Whether this be a 3G iPhone, or a rumoured iPhone Nano, there will definitely be an iPhone announcement.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;2) "Touch" SDK&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;This has already been announced, but I think the iPhone SDK will also include iPod Touch and other future touch enabled Apple Devices or computers. I also predict that all software will be released though iTunes, and have to be certified by Apple.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;3) Sub-Notebook Mac&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;There are various rumours about the form factor, and whether this would include a Touch Screen, but it looks certain some form of sub-notebook will be announced. Rumours have it that it will be called the Macbook Air. It would be great if this machine had touch, but I can't see. It would also be great if it had the docking machine I blogged about, but it probably won't.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;4) iTunes video rentals&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;This looks a certainty, although probably in the US only for a start, so not too worried about this announcement. If this is true, then an upgraded Apple TV might be needed to push videos from iTunes to the TV?&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;5) Desktop between Mac Pro and iMac&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;This would be great, a machine with iMac like specs, but not with built in monitor. Should be cheaper than an iMac, or if dearer then not much. So the line up would be MacMini, MacTower(? my name), iMac, MacPro.&lt;br /&gt;A price around $8-900 US would be great. Some analysts predict it come in between iMac and Mac Pro. I think it needs to come between Mini and iMac to be a real consumer item. Although, Apple have never been too concerned about being expensive.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;6) Refresh to Apple Cinema Displays&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;It's been a while since the Cinema Displays have been refreshed, so I expect a new range to be announced. Maybe with greater integration with Apple TV built in?&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;My out of Left Field item: Newton like device&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Ok, so this would be me dreaming, but a device bigger than an iPhone, but smaller than a tablet, with a 800x600 screen, Wifi and 3G would be amazing. With the iPhone interface, It would be the ultimate geek tool. Enough grunt to do most computer tasks (with Bluetooth Keyboard), and some sort of dock which allowed plugin to monitor when back at office/home. iPod built in, and almost HD screen it would be great for video too. Not going to happen, but if it did you would hear 1 million geeks cry out in ejaculatory unison.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21172681-4188232319442670819?l=softwarex-nz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarex-nz.blogspot.com/feeds/4188232319442670819/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21172681&amp;postID=4188232319442670819' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/4188232319442670819'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/4188232319442670819'/><link rel='alternate' type='text/html' href='http://softwarex-nz.blogspot.com/2008/01/keynote-predictions.html' title='Keynote Predictions:'/><author><name>KiwiBastard</name><uri>http://www.blogger.com/profile/06464945422472093454</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-21172681.post-7088354661554550188</id><published>2008-01-11T09:10:00.000Z</published><updated>2008-01-11T09:32:33.763Z</updated><title type='text'>Buggar</title><content type='html'>RIP Sir Edmund Hillary.&lt;br /&gt;&lt;br /&gt;It hard to express how I feel at this moment. Obviously sad, but more than that. When a nation loses an identity, an icon, a bloody legend how do you express that? The fact that the news of his passing has struck a chord worldwide, is a testament to the man.&lt;br /&gt;&lt;br /&gt;It's hard for anyone who isn't a Kiwi to understand the impact this will have on our country. Sir Ed was the epitome of a New Zealander: adventurous, brave yet humble and self effacing, and through all his success and problems, he remained down to earth and a nice bloke. He got out and did what was believed couldn't be done with the pioneering, number 8 wire mentality we believe is in all Kiwis. I'm not just talking Everest, but his expeditions to the Antartic and his work in Nepal.&lt;br /&gt;&lt;br /&gt;In the current media climate, where words like great and legend are bandied around so often they lose their meaning, this man truely deserved them. Helen Clarke called him, "the greatest person to ever be a New Zealander". It's pretty hard to disagree with that.&lt;br /&gt;&lt;br /&gt;It's a sad day, but in remembering Sir Ed and his achievements, it makes you bloody proud to be a New Zealander. As a Kiwi living in the Uk, I don't really need telling, but it's times like this that remind you, you come from the best country in the world.&lt;br /&gt;&lt;br /&gt;I thought I'd finish this post with a quote from Sir Ed that says it all really. On announcing he had reached the top of Everest, " We knocked the bastard off".&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21172681-7088354661554550188?l=softwarex-nz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarex-nz.blogspot.com/feeds/7088354661554550188/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21172681&amp;postID=7088354661554550188' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/7088354661554550188'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/7088354661554550188'/><link rel='alternate' type='text/html' href='http://softwarex-nz.blogspot.com/2008/01/buggar.html' title='Buggar'/><author><name>KiwiBastard</name><uri>http://www.blogger.com/profile/06464945422472093454</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-21172681.post-3096535262520188080</id><published>2008-01-10T21:51:00.000Z</published><updated>2008-01-10T22:14:26.669Z</updated><title type='text'>Cyclomatic complexity</title><content type='html'>&lt;a href="http://softwarex-nz.blogspot.com/2008/01/code-metrics-in-visual-studio-2008.html"&gt;In his last post&lt;/a&gt; , Shaun talked about the new Code Metrics feature in 2008, in particular Cyclomatic Complexity (CC).&lt;br /&gt;&lt;br /&gt;Many of you out there might not have come across the term before so I thought I'd give a readers digest definition.&lt;br /&gt;&lt;br /&gt;So what is CC? In a nutshell its a measure of complexity of some code. It is got by measuring the linearly independant paths in the measured code. What the hell does that mean?&lt;br /&gt;&lt;br /&gt;Basically its the amount of branching your code does, with control statements like &lt;em&gt;for&lt;/em&gt; or &lt;em&gt;if&lt;/em&gt;.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Example&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;a href="http://bp1.blogger.com/_KYTD7b1k7ko/R4aWO-5WwJI/AAAAAAAAABc/F-8YTIndA34/s1600-h/js1.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5153972007718011026" style="CURSOR: hand" alt="" src="http://bp1.blogger.com/_KYTD7b1k7ko/R4aWO-5WwJI/AAAAAAAAABc/F-8YTIndA34/s320/js1.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The above code has two branches. To do branch coverage, then two test cases are sufficient, to do path coverage then four test cases are needed. The cyclomatic complexity of this code is 3.&lt;br /&gt;&lt;br /&gt;This is achieved (there are a few ways to calculate) by the following formula:&lt;br /&gt;&lt;br /&gt;M = Number of Closed Loops + 1 (where M = CC)&lt;br /&gt;&lt;br /&gt;So to cut the post short, the higher the CC number the more rigid the unit testing needs to be.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.dotnetkicks.com/kick/?url=http://softwarex-nz.blogspot.com/2008/01/cyclomatic-complexity.html"&gt;&lt;img alt="kick it on DotNetKicks.com" src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http://softwarex-nz.blogspot.com/2008/01/cyclomatic-complexity.html" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21172681-3096535262520188080?l=softwarex-nz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarex-nz.blogspot.com/feeds/3096535262520188080/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21172681&amp;postID=3096535262520188080' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/3096535262520188080'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/3096535262520188080'/><link rel='alternate' type='text/html' href='http://softwarex-nz.blogspot.com/2008/01/cyclomatic-complexity.html' title='Cyclomatic complexity'/><author><name>KiwiBastard</name><uri>http://www.blogger.com/profile/06464945422472093454</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/_KYTD7b1k7ko/R4aWO-5WwJI/AAAAAAAAABc/F-8YTIndA34/s72-c/js1.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21172681.post-48855340977672708</id><published>2008-01-10T12:32:00.000Z</published><updated>2008-01-10T19:59:17.716Z</updated><title type='text'>Code Metrics in Visual Studio 2008</title><content type='html'>If there's one thing in a development project with which I have an almost unhealthy obsession it's statistics. I'm rarely happier than when I'm knee-deep in &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;profiler&lt;/span&gt; output or digging through build statistics trying to work out where in the code coverage levels the unit testing needs beefing up. So when I discovered that the Team Developer versions of Visual Studio 2008 includes some new Code Metrics functionality I must admit it got me quite excited.&lt;br /&gt;&lt;br /&gt;The metrics are available under the "Analyze" menu and allow you to scan selected projects or the whole solution. The results look like this:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_bD8NWacRq1E/R4Yb6cI0TYI/AAAAAAAAACk/Mp0LvJqlzaM/s1600-h/codemetrics.bmp"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp1.blogger.com/_bD8NWacRq1E/R4Yb6cI0TYI/AAAAAAAAACk/Mp0LvJqlzaM/s400/codemetrics.bmp" alt="" id="BLOGGER_PHOTO_ID_5153837514371648898" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;The five indicators that are calculated for each project are:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Maintainability Index&lt;br /&gt;&lt;/span&gt;This is basically a summary value which uses the results of the other calculations to produce a value from 0-100. The higher the value, the better the code is in terms of &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_1"&gt;maintainability&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;Cyclomatic&lt;/span&gt; Complexity&lt;/span&gt;&lt;br /&gt;This is an interesting measure which is effectively the number of code paths through all methods in the project. The idea here is that the higher the number of decision points in the code the greater the level of code coverage required in the form of unit tests.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Depth of Inheritance&lt;/span&gt;&lt;br /&gt;At the top level, the depth of inheritance is the maximum number of levels of inheritance for all types in the project. A high (and therefore deep) inheritance hierarchy can probably point to possible over-engineering of the class structure. It can also hinder &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_3"&gt;maintenance&lt;/span&gt; as the more layers of inheritance, the more difficult it can be for someone to understand exactly where code for particular members lives.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Class Coupling&lt;/span&gt;&lt;br /&gt;This metric is an indicator as to the level of coupling between classes in the module. This includes dependencies through properties, parameters, template instantiations, method return types etc. Obviously the current mantra with development, particularly in these times of TDD is that code should have high levels of cohesion and lower levels of coupling, this makes unit testing individual classes much easier to &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_4"&gt;achieve&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Lines of Code&lt;/span&gt;&lt;br /&gt;Finally, the lines of code count. I'm not entirely sure but I suspect that this is some approximation based on the IL generated for each method rather than a straight count of the physical lines of code in the source files. Obviously this is useful when drilling down through the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;namespaces&lt;/span&gt; and types to be able to see where there are methods that are possibly doing too much and could be good candidates for &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;refactoring&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The metric I'm most interested in at the moment, being a TDD acolyte, is the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;Cyclomatic&lt;/span&gt; Complexity (CC) value. I'm a big fan of using code coverage analysis tools such as &lt;a href="http://www.ncover.com/"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;NCover&lt;/span&gt;&lt;/a&gt;  as part of a continuous integration environment to keep an eye on the level of coverage that the current set of unit tests are providing and being able to target those parts of the project where &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_9"&gt;additional&lt;/span&gt; testing is required. CC is another tool to help with that as by drilling down into projects and &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_10"&gt;namespaces&lt;/span&gt; with high CC we can get down to the specific methods that have a high value and target those with extra unit tests.&lt;br /&gt;&lt;br /&gt;So how exactly is &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_11"&gt;Cyclomatic&lt;/span&gt; Complexity calculated? As a simple example have a look at the following code:&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color: rgb(51, 51, 255);font-size:100%;" &gt;&lt;br /&gt;public int&lt;/span&gt;&lt;span style="font-size:100%;"&gt; &lt;/span&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_12"  style="font-size:100%;"&gt;CountItemsWithStatus&lt;/span&gt;&lt;span style="font-size:100%;"&gt;(&lt;/span&gt;&lt;span style="color: rgb(102, 204, 204);font-size:100%;" &gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_13"&gt;IList&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&amp;amp;&lt;/span&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_14"  style="font-size:100%;"&gt;lt&lt;/span&gt;&lt;span style="font-size:100%;"&gt;;&lt;/span&gt;&lt;span style="color: rgb(102, 204, 204);font-size:100%;" &gt;Item&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&amp;gt; items, &lt;/span&gt;&lt;span style="color: rgb(102, 204, 204);font-size:100%;" &gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_15"&gt;StatusCode&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt; status)&lt;br /&gt;{&lt;br /&gt;  if(items == null)&lt;br /&gt;  {&lt;br /&gt;      &lt;/span&gt;&lt;span style="color: rgb(102, 51, 255);font-size:100%;" &gt;throw new&lt;/span&gt;&lt;span style="font-size:100%;"&gt; &lt;/span&gt;&lt;span style="color: rgb(102, 204, 204);font-size:100%;" &gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_16"&gt;ArgumentNullException&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;("items");&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt; &lt;/span&gt;&lt;span style="color: rgb(102, 51, 255);font-size:100%;" &gt; int&lt;/span&gt;&lt;span style="font-size:100%;"&gt; count = 0;&lt;br /&gt;&lt;br /&gt;  &lt;/span&gt;&lt;span style="color: rgb(102, 51, 255);font-size:100%;" &gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_17"&gt;foreach&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;(&lt;/span&gt;&lt;span style="color: rgb(102, 204, 204);font-size:100%;" &gt;Item&lt;/span&gt;&lt;span style="font-size:100%;"&gt; item &lt;/span&gt;&lt;span style="color: rgb(102, 51, 255);font-size:100%;" &gt;in&lt;/span&gt;&lt;span style="font-size:100%;"&gt; items)&lt;br /&gt;  {&lt;br /&gt;      &lt;/span&gt;&lt;span style="color: rgb(102, 51, 255);font-size:100%;" &gt;if&lt;/span&gt;&lt;span style="font-size:100%;"&gt;(item.Status == status)&lt;br /&gt;      {&lt;br /&gt;          count++;&lt;br /&gt;      }&lt;br /&gt;  }&lt;br /&gt;  &lt;/span&gt;&lt;span style="color: rgb(102, 51, 255);font-size:100%;" &gt;return&lt;/span&gt;&lt;span style="font-size:100%;"&gt; count;&lt;br /&gt;}&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/span&gt;&lt;br /&gt;Obviously this is pretty standard stuff., but we're looking to count the number of possible paths through the method so here we go:&lt;br /&gt;&lt;br /&gt;1) If the "list" parameter is null, the code will throw an exception.&lt;br /&gt;2) The parameter contains an empty list. The code will skip the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_18"&gt;foreach&lt;/span&gt; and return 0.&lt;br /&gt;3) The list is non-empty but none of the items have the required status so returns 0.&lt;br /&gt;4) The list is non-empty one or more are the required status so the count++ is executed and the method returns the count.&lt;br /&gt;&lt;br /&gt;So by my reckoning, we have a &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_19"&gt;Cyclomatic&lt;/span&gt; Complexity here of 4, in a method which contains approximately 7 lines (so a high ratio.) And in theory, we would need our unit tests to cover these four scenarios in order to completely cover all code in the method.&lt;br /&gt;&lt;br /&gt;One of the nice things about this method of analysis is that by using the decision points (&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_20"&gt;foreach&lt;/span&gt;, if, for, while etc) as a basis for complexity we could use tools to automatically generate a lot of the unit tests for us.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21172681-48855340977672708?l=softwarex-nz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarex-nz.blogspot.com/feeds/48855340977672708/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21172681&amp;postID=48855340977672708' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/48855340977672708'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/48855340977672708'/><link rel='alternate' type='text/html' href='http://softwarex-nz.blogspot.com/2008/01/code-metrics-in-visual-studio-2008.html' title='Code Metrics in Visual Studio 2008'/><author><name>Shaun Austin</name><uri>http://www.blogger.com/profile/02260217349188216865</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_bD8NWacRq1E/SZQ_gbtLXVI/AAAAAAAAAFE/zRx2i4y9Frw/S220/dharma.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp1.blogger.com/_bD8NWacRq1E/R4Yb6cI0TYI/AAAAAAAAACk/Mp0LvJqlzaM/s72-c/codemetrics.bmp' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21172681.post-3618667697838337769</id><published>2008-01-10T08:40:00.000Z</published><updated>2008-01-10T09:50:10.682Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='n-tier'/><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='VS2008'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='LINQ'/><category scheme='http://www.blogger.com/atom/ns#' term='WCF'/><title type='text'>Working with LINQ to SQL and WCF Services (Part 1)</title><content type='html'>As James has already posted &lt;a href="http://softwarex-nz.blogspot.com/2007/12/linq-to-sql-where-are-n-tier-examples.html"&gt;here&lt;/a&gt; there are concerns circulating around the web about the lack of any coherent guidance in terms of a good approach to using LINQ to SQL (or Entities for that matter) in an n-tier architecture. One of the issues I've been fretting over is what I refer to as the "types and references" issue, namely that with the approaches described in the &lt;a href="http://msdn2.microsoft.com/en-us/library/bb882661%28VS.90%29.aspx"&gt;MSDN&lt;/a&gt; articles covering the topic there's no real explanation as to how the entity types generated by the IDE from the dbml file can be consumed as deserialised entities on the client side without creating some kind of code "disconnect" between LINQ entities which are generated automatically from the DB schema and a different set of definitions which can be used by the client.&lt;br /&gt;&lt;br /&gt;There are various possible solutions to this, many of which look promising at the start but ultimately end up being dead ends or not really practical. One approach that I have been able to get to work is outlined below. What we're going to do in this first part is simply create aWCF Service component which will return a list of Customers from the Northwind database and consume that component in a simple client.&lt;br /&gt;&lt;br /&gt;&lt;span style="text-decoration: underline;"&gt;The Data Component&lt;/span&gt;&lt;br /&gt;1. To start, we fire up Visual Studio 2008 and create an empty Solution. To that we want to add a Class Library project which we'll call &lt;b&gt;Northwi&lt;/b&gt;&lt;b&gt;ndData.&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;2. Next, we add a dbml file to the project by going to "Add New" and selecting the "LINQ to SQL Classes" entry and call it Northwind.dbml. Then use Server Explorer to navigate or connect to your SQL Server and drag the Customers table onto the dbml designer surface from the Northwind database.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_bD8NWacRq1E/R2v-wyccfjI/AAAAAAAAAAU/4didVr1IHj4/s1600-h/1.jpg"&gt;&lt;img style="cursor: pointer;" src="http://bp0.blogger.com/_bD8NWacRq1E/R2v-wyccfjI/AAAAAAAAAAU/4didVr1IHj4/s320/1.jpg" alt="" id="BLOGGER_PHOTO_ID_5146487113329180210" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;pic 1=""&gt;&lt;br /&gt;3. We now want to add a partial class so that we can add our own code to the generated DataContext. So add a new Class file and add the following code which will provide a method which returns all customers.&lt;br /&gt;&lt;br /&gt;&lt;pic2&gt;&lt;/pic2&gt;&lt;/pic&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_bD8NWacRq1E/R2v_dSccflI/AAAAAAAAAAk/MJ4DnLuObNI/s1600-h/2.jpg"&gt;&lt;img style="cursor: pointer;" src="http://bp2.blogger.com/_bD8NWacRq1E/R2v_dSccflI/AAAAAAAAAAk/MJ4DnLuObNI/s400/2.jpg" alt="" id="BLOGGER_PHOTO_ID_5146487877833358930" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;pic 1=""&gt;&lt;pic2&gt;&lt;br /&gt;&lt;span style="text-decoration: underline;"&gt;The WCF Service&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;4. So far so good. But now it's time to create our WCF Service component. So add a New Project to the solution and select WCF Service Library, we'll call it &lt;span style="font-weight: bold;"&gt;NorthwindService&lt;/span&gt;. We now need to make a few changes to the service framework that VS has created for us. First we need to add references to the NorthwindData project and to System.Data.Linq. Then we need to change the default Interface and Service names etc so that they are a bit more meaningful for our purposes. To do this we first rename the IService1.cs file to INorthwindService.cs (when you are asked to rename all references say Yes otherwise you will have to change the name of the actual interface yourself too.)&lt;br /&gt;&lt;br /&gt;In WCF, Service interfaces are defined as "Service Contracts" and are marked with the ServiceContractAttribute, the methods on those interfaces are marked with the OperationContractAttribute. What this basically does is specify that the interfaces and marked operations define a contract that is upheld by any service which advertises itself as implementing that interface. If you've done much work with web services then you'll be quite at home with this concept as what it is effectively doing is decorating the interface so that our service can advertise and describe itself in a way synonymous with the WSDL approach. At the moment we're only interested in returning one list of Customers so our contract is relatively simple. The interface should be defined as follows:&lt;br /&gt;&lt;br /&gt;&lt;pic3&gt;&lt;/pic3&gt;&lt;/pic2&gt;&lt;/pic&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_bD8NWacRq1E/R2v_6SccfmI/AAAAAAAAAAs/vd1IsuASRz4/s1600-h/3.jpg"&gt;&lt;img style="cursor: pointer;" src="http://bp2.blogger.com/_bD8NWacRq1E/R2v_6SccfmI/AAAAAAAAAAs/vd1IsuASRz4/s400/3.jpg" alt="" id="BLOGGER_PHOTO_ID_5146488376049565282" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;pic 1=""&gt;&lt;pic2&gt;&lt;pic3&gt;&lt;br /&gt;5. The next simple step is to provide an implementation of the interface in our component, so we rename Service1.cs to NorthwindService.cs (again allow VS to rename all references etc) and change the implementation code to the following:&lt;br /&gt;&lt;br /&gt;&lt;/pic3&gt;&lt;/pic2&gt;&lt;/pic&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_bD8NWacRq1E/R2wBBCccfsI/AAAAAAAAABc/wkZrOVa5p9k/s1600-h/4.jpg"&gt;&lt;img style="cursor: pointer;" src="http://bp2.blogger.com/_bD8NWacRq1E/R2wBBCccfsI/AAAAAAAAABc/wkZrOVa5p9k/s400/4.jpg" alt="" id="BLOGGER_PHOTO_ID_5146489591525310146" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div id="z02n" style="padding: 1em 0pt; text-align: left;"&gt;6. Finally to make our service useable, we need to update the config file so that the changes we have made to the names of the interfaces etc are registered correctly when the WCF Service is hosted. Open the App.Config file and change the contents to match the following:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_bD8NWacRq1E/R2v_6iccfoI/AAAAAAAAAA8/aIbBEyhORws/s1600-h/5.jpg"&gt;&lt;img style="cursor: pointer;" src="http://bp3.blogger.com/_bD8NWacRq1E/R2v_6iccfoI/AAAAAAAAAA8/aIbBEyhORws/s400/5.jpg" alt="" id="BLOGGER_PHOTO_ID_5146488380344532610" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;pic5&gt;&lt;br /&gt;7. At this point, we only have one more tiny problem with our service. In point 4 we learned that interfaces exposed by WCF services specify a "contract" and this is also extended to any data objects which are passed through that interface, this is done using the DataContractAttribute (and the associated other attributes which define the members on the entity class.) So how do we get the entity objects generated by the IDE to be decorated with the required interfaces. This took a considerable amount of digging but in the end turned out to be a remarkably simple task. If we go back to our NorthwindData project and go to the properties of the dbml in the designer we can see a property called Serialization Mode. All we have to do is change the setting to "Unidirectional".&lt;br /&gt;&lt;br /&gt;&lt;pic6&gt;&lt;/pic6&gt;&lt;/pic5&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_bD8NWacRq1E/R2v_6iccfpI/AAAAAAAAABE/1URAkEYnhvY/s1600-h/6.jpg"&gt;&lt;img style="cursor: pointer;" src="http://bp3.blogger.com/_bD8NWacRq1E/R2v_6iccfpI/AAAAAAAAABE/1URAkEYnhvY/s400/6.jpg" alt="" id="BLOGGER_PHOTO_ID_5146488380344532626" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;pic5&gt;&lt;pic6&gt;&lt;br /&gt;What this then does is automatically marks any of the entities generated from the dbml with the DataContract attributes.&lt;br /&gt;&lt;br /&gt;&lt;pic7&gt;&lt;/pic7&gt;&lt;/pic6&gt;&lt;/pic5&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_bD8NWacRq1E/R2v_8SccfqI/AAAAAAAAABM/f1gIFFZNIKc/s1600-h/7.jpg"&gt;&lt;img style="cursor: pointer;" src="http://bp2.blogger.com/_bD8NWacRq1E/R2v_8SccfqI/AAAAAAAAABM/f1gIFFZNIKc/s400/7.jpg" alt="" id="BLOGGER_PHOTO_ID_5146488410409303714" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;pic5&gt;&lt;pic6&gt;&lt;pic7&gt;&lt;br /&gt;It also means that the data definition of the entities can be included in the service definition of the interface contract. In a practical sense what this does is allow us to add a reference to the service and Visual Studio 2008 (utilising svcutil.exe under the hood) will read the metadata for the service and generate a client-side service proxy containing definitions of the LINQ entities for us.&lt;br /&gt;&lt;br /&gt;8. Let's test our service. Right-click on the &lt;b&gt;NorthwindService &lt;/b&gt;project and select "Debug-&gt;Start New Instance..." This should force a compile and run the WCF Service which will be hosted by default in the "WCF Service Host" application which will place an icon in the notification area.  If the service has been configured correctly the WCF Test Client should launch and after a second or so your service should be loaded into the tree view on the left. You can then expand the tree nodes to see the structure of the Service Interface and double click on the "GetCustomerList()" node. This will open a tab on the right which has an "Invoke" button which, when clicked, will call the method on the service and display the results in the lower box. As you can see below, the call returned 91 customer entries.&lt;br /&gt;&lt;br /&gt;&lt;pic8&gt;&lt;/pic8&gt;&lt;/pic7&gt;&lt;/pic6&gt;&lt;/pic5&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_bD8NWacRq1E/R2wBmCccftI/AAAAAAAAABk/FvQWj_8c7UA/s1600-h/8.jpg"&gt;&lt;img style="cursor: pointer;" src="http://bp2.blogger.com/_bD8NWacRq1E/R2wBmCccftI/AAAAAAAAABk/FvQWj_8c7UA/s400/8.jpg" alt="" id="BLOGGER_PHOTO_ID_5146490227180469970" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;pic5&gt;&lt;pic6&gt;&lt;pic7&gt;&lt;pic8&gt;&lt;br /&gt;&lt;span style="text-decoration: underline;"&gt;The Simple Client&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;8. To create our simple client we'll add a console application project to our solution. This will serve our purposes in Part 1 as we're just interested in getting a list of customers back from the database but in future parts I hope to create a more complex and useable client using WPF. Add a console project called &lt;span style="font-weight: bold;"&gt;SimpleClient&lt;/span&gt; then right click on the References node in Solution Explorer and select "Add Service Reference..." If everything has gone right, you should be able to click the "Discover" button and the service details should appear in the tree on the left. When you expand the node, the service is instantiated and you can navigate to the interface definition. Before we commit the reference, change the Namespace entry at the bottom to Northwind. Finally, by default collections appear in the proxy as arrays, to make them a List&lt;customer&gt; as defined in the interface we need to click on the "Advanced..." button and change the "Collection Type:" dropdown to "System.Collections.Generic.List".&lt;br /&gt;&lt;br /&gt;&lt;pic 9=""&gt;&lt;/pic&gt;&lt;/customer&gt;&lt;/pic8&gt;&lt;/pic7&gt;&lt;/pic6&gt;&lt;/pic5&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_bD8NWacRq1E/R2wB3iccfuI/AAAAAAAAABs/mElmgwqdmaU/s1600-h/9.jpg"&gt;&lt;img style="cursor: pointer;" src="http://bp0.blogger.com/_bD8NWacRq1E/R2wB3iccfuI/AAAAAAAAABs/mElmgwqdmaU/s400/9.jpg" alt="" id="BLOGGER_PHOTO_ID_5146490527828180706" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;pic5&gt;&lt;pic6&gt;&lt;pic7&gt;&lt;pic8&gt;&lt;customer&gt;&lt;pic 9=""&gt;&lt;br /&gt;9 Click OK in the dialog, and the service reference will be added to the project. We can then add the following code to the Main method in Program.cs:&lt;br /&gt;&lt;br /&gt;&lt;pic 10=""&gt;&lt;/pic&gt;&lt;/pic&gt;&lt;/customer&gt;&lt;/pic8&gt;&lt;/pic7&gt;&lt;/pic6&gt;&lt;/pic5&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_bD8NWacRq1E/R2wCESccfvI/AAAAAAAAAB0/tSQ_3F1DCUM/s1600-h/10.jpg"&gt;&lt;img style="cursor: pointer;" src="http://bp3.blogger.com/_bD8NWacRq1E/R2wCESccfvI/AAAAAAAAAB0/tSQ_3F1DCUM/s400/10.jpg" alt="" id="BLOGGER_PHOTO_ID_5146490746871512818" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;pic5&gt;&lt;pic6&gt;&lt;pic7&gt;&lt;pic8&gt;&lt;customer&gt;&lt;pic 9=""&gt;&lt;pic 10=""&gt;&lt;br /&gt;To test the simple application, ensure an instance of the service is running in the WCF Test Client (if one isn't, then right click the service project and select "Debug-&gt;Start New Instance".) then start an instance of the console application. All things being well, you should have a console window with a list of &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;Northwind&lt;/span&gt; customers displayed.&lt;br /&gt;&lt;br /&gt;&lt;pic 11=""&gt;&lt;/pic&gt;&lt;/pic&gt;&lt;/pic&gt;&lt;/customer&gt;&lt;/pic8&gt;&lt;/pic7&gt;&lt;/pic6&gt;&lt;/pic5&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_bD8NWacRq1E/R2wCRiccfwI/AAAAAAAAAB8/cyYDEFB9810/s1600-h/11.jpg"&gt;&lt;img style="cursor: pointer;" src="http://bp0.blogger.com/_bD8NWacRq1E/R2wCRiccfwI/AAAAAAAAAB8/cyYDEFB9810/s400/11.jpg" alt="" id="BLOGGER_PHOTO_ID_5146490974504779522" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;pic5&gt;&lt;pic6&gt;&lt;pic7&gt;&lt;pic8&gt;&lt;customer&gt;&lt;pic 9=""&gt;&lt;pic 10=""&gt;&lt;pic 11=""&gt;&lt;br /&gt;&lt;span style="text-decoration: underline;"&gt;Summary&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;So this is where we'll leave it for now. What we've &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_1"&gt;achieved&lt;/span&gt; is fairly simplistic but what we have is an overall framework upon which we can build more complex behaviours such as updates and creation.&lt;br /&gt;&lt;span style="text-decoration: underline;"&gt;&lt;/span&gt;&lt;/pic&gt;&lt;/pic&gt;&lt;/pic&gt;&lt;/customer&gt;&lt;/pic8&gt;&lt;/pic7&gt;&lt;/pic6&gt;&lt;/pic5&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21172681-3618667697838337769?l=softwarex-nz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarex-nz.blogspot.com/feeds/3618667697838337769/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21172681&amp;postID=3618667697838337769' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/3618667697838337769'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/3618667697838337769'/><link rel='alternate' type='text/html' href='http://softwarex-nz.blogspot.com/2007/12/working-with-linq-to-sql-and-wcf.html' title='Working with LINQ to SQL and WCF Services (Part 1)'/><author><name>Shaun Austin</name><uri>http://www.blogger.com/profile/02260217349188216865</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_bD8NWacRq1E/SZQ_gbtLXVI/AAAAAAAAAFE/zRx2i4y9Frw/S220/dharma.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp0.blogger.com/_bD8NWacRq1E/R2v-wyccfjI/AAAAAAAAAAU/4didVr1IHj4/s72-c/1.jpg' height='72' width='72'/><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21172681.post-3796512732594671812</id><published>2008-01-09T16:19:00.001Z</published><updated>2008-01-09T20:26:31.777Z</updated><title type='text'>How good are your .NET coders?</title><content type='html'>Being a contractor is a balancing act. There are some positives, but just as many negatives. One of the positives, is that you see an awful lot of code. Exposure to code you haven't written is a great way to learn. You can pick up some tricks, or just as likely, see an implementation that is really bad and you get a chance to think how you would do it better. Unfortunately, most contractors never get a chance to fix the problems with code. Permies can be threatened by contractors and don't like you messing with their code.&lt;br /&gt;&lt;br /&gt;It's understandable. They don't know how good you are or aren't, so why let this new guy loose on their code.&lt;br /&gt;&lt;br /&gt;Anyway, this is absoultely nothing to do with the topic of this post. I just wanted to elaborate that I have seen a lot of codebases over the years. A lot.&lt;br /&gt;&lt;br /&gt;The overwhelming conclusion I have found recently is this: If your developers have come from a certain background, say C++ or VB, don't assume they are going to be great C# coders off the bat.&lt;br /&gt;The biggest problem I see is people move away from C++ and VB and instead of understanding and learning C#, they just apply their language X knowledge to C#. What comes out is a hybrid mess of ugliness.&lt;br /&gt;&lt;br /&gt;Code that is not quite OO, not quite procedural, not quite anything actually.&lt;br /&gt;&lt;br /&gt;So, if you are a development shop looking to move to .Net: take time to actually learn the language. Don't just assume that it's C++ with a garabage collector, or VB with curly braces. It's a bit like assuming that French is just English with an accent, and a vague hint of garlic.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21172681-3796512732594671812?l=softwarex-nz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarex-nz.blogspot.com/feeds/3796512732594671812/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21172681&amp;postID=3796512732594671812' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/3796512732594671812'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/3796512732594671812'/><link rel='alternate' type='text/html' href='http://softwarex-nz.blogspot.com/2008/01/how-good-are-your-net-coders.html' title='How good are your .NET coders?'/><author><name>KiwiBastard</name><uri>http://www.blogger.com/profile/06464945422472093454</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-21172681.post-5851689586105137621</id><published>2008-01-09T11:29:00.000Z</published><updated>2008-01-09T12:09:53.572Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Vista'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows Update'/><title type='text'>Stop Vista's Update Auto-Reboot, permanently!</title><content type='html'>&lt;span style="color: rgb(102, 102, 102);"&gt;It's a story with Vista and XP that has played out over and over again across the lands. So you've been working away at some stuff, some word docs here, some bits of code there and some of all of it may or may not be in a position where you want to hit the&lt;/span&gt; &lt;span style="color: rgb(102, 102, 204);"&gt;Save &lt;span style="color: rgb(102, 102, 102);"&gt;button or do a "Save As" but hey never mind you're off out for a few hours...&lt;br /&gt;&lt;br /&gt;...while you were out, Win&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;dows Update helpfully downloaded and installed a couple of fixes for your machine and now it needs to reboot the machine in order to complete the update. This is all fine but you're not there, and so Vista pops up a dialog giving the user the option to "Restart Now" or "Postpone" and a little countdown timer. When the timer hits 0 your box will restart automatically.&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;The number of times in the past I've come back from being out to see that login screen staring at be smugly and then logged in only to notice that it's actually "Logging In" rather than being "Unlocked" (the no apps running in the taskbar is a clue.)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;It makes me SO angry, how many of these updates are SO IMPORTANT that they need to be fully applied to the machine RIGHT NOW??? Are there really hoards of 1337 barbarian hackers out there just waiting to take advantage of some vulnerability in CALC.EXE??? No, it's one of those broad stroke, treat all users like they're idiots policies that MS seem to adopt occasionally with security.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;Anyway, &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;a while ago I found a solution, but I keep forgetting what it is and after doing a google search yesterday to try to track it down again I found a lot of dangerously incorrect advice on various blogs, the worst of which were people advising that users disable automatic updates altogether This, is wrong! So in the interests of having the info somewhere I know I can find it, and in the hopes that it might be useful to others I'm going to describe what I like to call the "middle ground approach". That being, you still get the prompts by Vista, and you can postpone the prompts for 10 minutes or 4 hours and after that time it will nag you again but it WILL NOT automatically reboot your machine and cause that "blood draining from face" moment you get when you realise that you've lost half a days unsaved work.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;Anyway it's quite simple.&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;ol&gt;&lt;li&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;Go to the start menu, and in the search type &lt;/span&gt;"&lt;/span&gt;&lt;/span&gt;&lt;span style="font-style: italic; color: rgb(102, 102, 102);"&gt;gpedit.msc&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;" Then hit enter. The Group Policy Object Editor should appear.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;Navigate to "&lt;/span&gt;&lt;span style="font-style: italic; color: rgb(102, 102, 102);"&gt;Computer Configuration\Administrative Templates\Windows Components\Windows Update&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;"&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;In the list on the right look for the following setting: &lt;/span&gt;&lt;span style="font-style: italic; color: rgb(102, 102, 102);"&gt;"No auto-restart for scheduled Automatic Updates installation."&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt; Double-click this and change the configured value to &lt;/span&gt;&lt;span style="font-style: italic; color: rgb(102, 102, 102);"&gt;"Enabled"&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt; then click OK.&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;From now on when Vista needs a reboot you will be prompted with the following dialog:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a style="color: rgb(102, 102, 102);" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_bD8NWacRq1E/R4S17MI0TVI/AAAAAAAAACM/qM6-_ctGxiY/s1600-h/wupdate.bmp"&gt;&lt;img style="cursor: pointer;" src="http://bp2.blogger.com/_bD8NWacRq1E/R4S17MI0TVI/AAAAAAAAACM/qM6-_ctGxiY/s400/wupdate.bmp" alt="" id="BLOGGER_PHOTO_ID_5153443902093806930" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;It's worth noting two things though:&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;If you're on a domain, it's likely that domain policies will override anything you set here even if you are allowed to access the setting in the first place.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;It appears that when the dialog pops up, it gets focus and the "Restart Now" button is highlighted. So if you're typing and you happen to hit "Enter", "Space" or "n" it will be effectively clicking the "Restart Now" button...&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21172681-5851689586105137621?l=softwarex-nz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarex-nz.blogspot.com/feeds/5851689586105137621/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21172681&amp;postID=5851689586105137621' title='31 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/5851689586105137621'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/5851689586105137621'/><link rel='alternate' type='text/html' href='http://softwarex-nz.blogspot.com/2008/01/stop-vistas-update-auto-reboot.html' title='Stop Vista&apos;s Update Auto-Reboot, permanently!'/><author><name>Shaun Austin</name><uri>http://www.blogger.com/profile/02260217349188216865</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_bD8NWacRq1E/SZQ_gbtLXVI/AAAAAAAAAFE/zRx2i4y9Frw/S220/dharma.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp2.blogger.com/_bD8NWacRq1E/R4S17MI0TVI/AAAAAAAAACM/qM6-_ctGxiY/s72-c/wupdate.bmp' height='72' width='72'/><thr:total>31</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21172681.post-7697254230737859510</id><published>2008-01-08T14:24:00.000Z</published><updated>2008-01-08T14:48:27.166Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Windows'/><category scheme='http://www.blogger.com/atom/ns#' term='SP1'/><category scheme='http://www.blogger.com/atom/ns#' term='Vista'/><title type='text'>Vista SP1 - The Windows Update route</title><content type='html'>As a self proclaimed "windows guy" I'm really looking forward to the arrival of Service Pack 1 for Vista. As has already been posted &lt;a href="http://softwarex-nz.blogspot.com/2007/12/windows-vista-service-pack-1-rc1.html"&gt;here&lt;/a&gt; one of the most eagerly awaited improvements are in the networking and file transfer stacks. I have quite a few boxes on the wlan at home and I've taken to transferring large numbers of files using an external disk which is hardly ideal. MS have published information about the contents of the SP1 release &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=e71f0083-1013-4f9c-a3f9-c56e7120a5e9&amp;amp;DisplayLang=en#filelist"&gt;here&lt;/a&gt;  and by all accounts local network file copies should have the following improvements:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span lang="EN-US"&gt;25% faster when copying files locally on the same disk on the same machine&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span  lang="EN-US" style="font-family:Symbol;"&gt;&lt;/span&gt;&lt;span lang="EN-US"&gt;45% faster when copying files from a remote non-Windows Vista system to a SP1 system&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span  lang="EN-US" style="font-family:Symbol;"&gt;&lt;span style=""&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US"&gt;50% faster when copying files from a remote SP1 system to a local SP1 system&lt;span style=""&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;      They've also fixed issues with the estimated time to complete which was something that really got me wound up at times.&lt;br /&gt;&lt;br /&gt;Other fixes that interest me are:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Improves power consumption and battery life.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Improves the speed of adding and extracting files to and from a compressed (zipped) folder.&lt;/li&gt;&lt;li&gt;Improves the speed of copying files, folders, and other media.&lt;/li&gt;&lt;li&gt;Improves startup and resume times when using ReadyBoost&lt;/li&gt;&lt;/ul&gt;Now under normal circumstances, I would be first in line at the MS download site to get the SP when it becomes available but apparently the downloadable package comes in two flavours one with 5 language packs embedded and the other with all available language packs. These top out at 450MB and 550MB in size respectively.&lt;br /&gt;&lt;br /&gt;An alternative to downloading the full thing, particularly if you're the sort of user who keeps his machine up-to-date with fixes is to just let Windows Update (Microsoft Update) apply the Service Pack, apparently this weighs in at a much nicer and lightweight 65MB as it is able to detect what fixes have already been installed and will apply the bits that haven't.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21172681-7697254230737859510?l=softwarex-nz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarex-nz.blogspot.com/feeds/7697254230737859510/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21172681&amp;postID=7697254230737859510' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/7697254230737859510'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/7697254230737859510'/><link rel='alternate' type='text/html' href='http://softwarex-nz.blogspot.com/2008/01/vista-sp1-windows-update-route.html' title='Vista SP1 - The Windows Update route'/><author><name>Shaun Austin</name><uri>http://www.blogger.com/profile/02260217349188216865</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_bD8NWacRq1E/SZQ_gbtLXVI/AAAAAAAAAFE/zRx2i4y9Frw/S220/dharma.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21172681.post-3333564983942338432</id><published>2008-01-08T13:52:00.000Z</published><updated>2008-01-08T13:56:44.456Z</updated><title type='text'>Do you have DADD?</title><content type='html'>Are you like me? Do you tend to drift off and play around when you are doing something that either doesn't challenge or interest you?&lt;br /&gt;&lt;br /&gt;If so, then you have DADD or Developer Attention Deficit Disorder!&lt;br /&gt;&lt;br /&gt;I can't claim this as my own I heard it on the latest &lt;a href="http://polymorphicpodcast.com/shows/developpassion/"&gt;Polymorphic Podcast&lt;/a&gt;. Well I sort of modified it a little but you get the jist.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21172681-3333564983942338432?l=softwarex-nz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarex-nz.blogspot.com/feeds/3333564983942338432/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21172681&amp;postID=3333564983942338432' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/3333564983942338432'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/3333564983942338432'/><link rel='alternate' type='text/html' href='http://softwarex-nz.blogspot.com/2008/01/do-you-have-dadd.html' title='Do you have DADD?'/><author><name>KiwiBastard</name><uri>http://www.blogger.com/profile/06464945422472093454</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-21172681.post-3858490277789008205</id><published>2008-01-08T09:21:00.000Z</published><updated>2008-01-08T09:22:56.377Z</updated><title type='text'>Enjoy what you do?</title><content type='html'>I have a couple of questions for you.&lt;br /&gt;&lt;br /&gt;1) On a Sunday night, are you dreading going to work on Monday?&lt;br /&gt;2) Do you look at the clock every 5 minutes waiting for the time to leave?&lt;br /&gt;3) Are you bored?&lt;br /&gt;&lt;br /&gt;If you answered yes to any of those questions above, why?&lt;br /&gt;&lt;br /&gt;Software Development should be about passion. You should love what you do, look forward to going in, and when doing it not even realise it’s been 4 hours since you last looked up. Right? Right?&lt;br /&gt;&lt;br /&gt;I firmly believe that if you don’t enjoy what you are doing, then you shouldn’t be doing it. It amazes me how people stick in a job they hate just because it is comfortable, or they don’t like change.&lt;br /&gt;&lt;br /&gt;If you hate your job, do yourself a favour. Get another one. You wouldn’t spend 40 hours a week bashing your head with a hammer, so why have the same feeling in a sucky job? &lt;br /&gt;&lt;br /&gt;I know a lot of people don’t like change. They don’t like having to learn new processes, or meet new people – that awkward few weeks where everybody asks you the same question. I guess deep down, some people are scared that they aren’t as good as they think and could be shown up in a new job?&lt;br /&gt;&lt;br /&gt;I’m a contractor and change jobs, on average, every three or four months. If you choose to look at change as a positive, growth experience, and get excited about becoming a better developer, or share your knowledge with others, then it can be a positive thing.&lt;br /&gt;&lt;br /&gt;Make 2008 the year you find the passion for development again.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21172681-3858490277789008205?l=softwarex-nz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarex-nz.blogspot.com/feeds/3858490277789008205/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21172681&amp;postID=3858490277789008205' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/3858490277789008205'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/3858490277789008205'/><link rel='alternate' type='text/html' href='http://softwarex-nz.blogspot.com/2008/01/enjoy-what-you-do.html' title='Enjoy what you do?'/><author><name>KiwiBastard</name><uri>http://www.blogger.com/profile/06464945422472093454</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-21172681.post-4399189298643869671</id><published>2008-01-07T14:50:00.000Z</published><updated>2008-01-07T15:22:50.553Z</updated><title type='text'>Another year, another resolution</title><content type='html'>Well, that’s another year buggered. It’s been a pretty big one for us personally. My more regular (or antipodeans) readers will know that my &lt;a href="http://sugruefamily.shutterfly.com/action/slideshow?caid=67b0de21b35921324502&amp;a=67b0de21b35921324502&amp;auto=0&amp;idx=53&amp;m=1&amp;d=1199719315624"&gt;wife, daughter and I&lt;/a&gt; packed up sticks and moved to the Uk in March. It’s been a pretty big change, and save for a few moments of reoccurring home sickness (well NZ IS the best country in the world) it’s been a pretty good year. I feel I have grown as a developer, and have seen some awesome things, and met some pretty cool people. I expect this year to be just as big a year from a personal growth point of view.&lt;br /&gt;&lt;br /&gt;Except in one area - Weight.&lt;br /&gt;&lt;br /&gt;Over the past three or four years I have managed to go from around 85kg to 105kg which is where I was at last weigh in. There are a couple of key reasons for this I think. First and foremost is I’m not exercising as much as I used to. I used to cycle up to 10 hours a week at my peak. I think I would have ridden my bike 30 or 40 times in 2007. Bad.&lt;br /&gt;&lt;br /&gt;The other is a combination of laziness, a liking of sweet things and convenience. Oh and the bloody British habit of having a vending machine in every work place!&lt;br /&gt;&lt;br /&gt;That was then, this is now.&lt;br /&gt;&lt;br /&gt;I think resolutions are rubbish. It’s easy to SAY you will do something, and then trip up. Trust me, I’ve done it. As I’m sure most people have. So, I am not going to make a resolution. I going to give my word (to myself) that I will do the following this year:&lt;br /&gt;&lt;br /&gt;I will stop eating the following:&lt;br /&gt;Chips (crisps)&lt;br /&gt;Biscuits&lt;br /&gt;Anything chocolate related&lt;br /&gt;Reduce beer intake, if drinking then try Bubbly or Whiskey/Bourbon&lt;br /&gt;Reduce portion sizes for evening meal&lt;br /&gt;&lt;br /&gt;I will get at least 4 forms of exercise per week. Before Xmas I was doing a bit of running so intend to keep that up, and maybe dust off the elliptical trainer.&lt;br /&gt;&lt;br /&gt;As my word is my bond I will stick by what I start.&lt;br /&gt;&lt;br /&gt;I guess at this point I need a goal. I’m not going to make the mistake of setting a target weight. It’s too easy to either get discouraged, or complacent. My initial goal is to commit – truly commit to the above for one month and take it from there. I think I will use the cold turkey approach, rather than the weight watchers approach of rewarding success. So for the next month, good bye to all rubbish food, and hello running shoes.&lt;br /&gt;&lt;br /&gt;I’ll report back in a month. Feel free to join with me on this endeavour. All it needs is a strong will.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21172681-4399189298643869671?l=softwarex-nz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarex-nz.blogspot.com/feeds/4399189298643869671/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21172681&amp;postID=4399189298643869671' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/4399189298643869671'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/4399189298643869671'/><link rel='alternate' type='text/html' href='http://softwarex-nz.blogspot.com/2008/01/another-year-another-resolution.html' title='Another year, another resolution'/><author><name>KiwiBastard</name><uri>http://www.blogger.com/profile/06464945422472093454</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-21172681.post-7188588806134660525</id><published>2008-01-07T09:40:00.000Z</published><updated>2008-01-07T09:45:58.375Z</updated><title type='text'>Pre Mac World 2008 Rumour #1</title><content type='html'>&lt;a href="http://www.macrumors.com/2008/01/03/apple-creating-imac-like-docking-station/"&gt;A docking station / iMac&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;If this is true, the lines starts here. I love my MBP, but have always wanted more screen real estate when at home. Oh please Apple make this a reality.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21172681-7188588806134660525?l=softwarex-nz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarex-nz.blogspot.com/feeds/7188588806134660525/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21172681&amp;postID=7188588806134660525' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/7188588806134660525'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/7188588806134660525'/><link rel='alternate' type='text/html' href='http://softwarex-nz.blogspot.com/2008/01/pre-mac-world-2008-rumour-1.html' title='Pre Mac World 2008 Rumour #1'/><author><name>KiwiBastard</name><uri>http://www.blogger.com/profile/06464945422472093454</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-21172681.post-3102164644536089562</id><published>2008-01-06T13:53:00.000Z</published><updated>2008-01-06T13:59:58.834Z</updated><title type='text'>Design Patterns are for life not just for Christmas</title><content type='html'>I was a candidate in an interview for a contract position the other day and as luck would have it, it turned out to be the type of format that I enjoy which is the one where the whole thing turns into an hour long chat about software related issues rather than some kind of technical test or one of the interviewers having a list of questions that they want to ask. This usually occurs when the interviewers are mainly techie types and I find (having been on the other side of the desk a few times) that it can be particularly effective when you're reasonably happy with the interviewee's credentials, but want to find out how they tick, and whether they would fit into the team.&lt;br /&gt;&lt;br /&gt;At one point, the discussion moved onto Patterns, and specifically Design Patterns, which in other times I would have probably started my standard spiel about how the GoF book was required reading at Uni and that they were something that I'd found myself evangelising at places I'd worked quite early on.&lt;br /&gt;&lt;br /&gt;But on this occasion, I didn't do that. I launched into a bit of a sermon.&lt;br /&gt;&lt;br /&gt;The reason for that is that lately, I've started to become more and more dissilusioned with the whole Design Patterns paradigm. When trying to work out why this is I thought about the large number of projects that I have worked on recently where there has been overenthusiastic promotion of solutions containing frankly preposterous implementations of design patterns in situations where a simple, cleanly designed solution would have done the job just fine.&lt;br /&gt;&lt;br /&gt;Some of the opponents to design patterns claim that the use of them highlights weaknesses or failures of a particular language to provide certain types of funcionality. I don't really go for that. Where I see the problem is that with relativley inexperienced developers, patterns are a toolbox of huge blunt instruments which they can use to take the lazy route to producing software. Design Patterns take a lot of the thought out of the design process round about the time when the more thought you can put into the design, the better it's going to be.&lt;br /&gt;&lt;br /&gt;Im my own head, I see patterns as handy chunks of solution which my mind can insert into a design as a kind of box, so if the requirements state that an application needs to have pluggable components then I can automatically pull out this reusable concept of say an Abstract Factory from the pattern store rather than having to think about all the nuts and bolts of the specific implementation.&lt;br /&gt;&lt;br /&gt;Where it goes wrong is when the requirements do not state that the application needs to support pluggable components but the developer putting together the design starts to think "we could make this pluggable, and so we'll have an Abstract Factory here, and we'll have Builders to construct the objects and this bit would be cool as a singleton, and we'll use Adapters to make them work with this part..."&lt;br /&gt;&lt;br /&gt;What happens next is that the weaknesses of the language kick in. With C# for example, none of this comes for free, so we're talking hundreds and hundreds of extra lines of code to implement the pattern functionality which we never needed in the first place. This code has to be tested, reviewed and maintained at an additional cost, and for what? So that the hot-shot developer can show everyone how clever they are, and you can be certain that barely a line of it will live up to the subtitle of the GoF book "elements of reusable OO software."&lt;br /&gt;&lt;br /&gt;And so I have to ask, is it about time we started to rethink our approach to design and Design Patterns and accept that they are very powerful abstractions, but come with a cost that needs to be weighed against the benefits of being able to draw a nice box on our design? We've had some fun with them, but with an increasing number of well intentioned but ill-informed PMs starting to evangelise about the benefits of Design Patterns, it's time we started to concentrate on good, solid, clean solutions, rather than working out which toys we can cram in.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21172681-3102164644536089562?l=softwarex-nz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarex-nz.blogspot.com/feeds/3102164644536089562/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21172681&amp;postID=3102164644536089562' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/3102164644536089562'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/3102164644536089562'/><link rel='alternate' type='text/html' href='http://softwarex-nz.blogspot.com/2008/01/design-patterns-are-for-life-not-just.html' title='Design Patterns are for life not just for Christmas'/><author><name>Shaun Austin</name><uri>http://www.blogger.com/profile/02260217349188216865</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_bD8NWacRq1E/SZQ_gbtLXVI/AAAAAAAAAFE/zRx2i4y9Frw/S220/dharma.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21172681.post-2123997238628389748</id><published>2007-12-24T19:30:00.001Z</published><updated>2007-12-24T19:32:47.611Z</updated><title type='text'>Happy Xmas</title><content type='html'>Happy Xmas to all, and those who don't do Xmas then best wishes.&lt;br /&gt;&lt;br /&gt;This is our first (and probably last) Winter Xmas and unfortunately it looks like it won't be a White one. It will be bloody cold though, can count on that.&lt;br /&gt;&lt;br /&gt;Anyway, to my friends in the North - enjoy your Turkey and Brussel Sprouts (yuk). To my friends in the South - enjoy your BBQ's and salads!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21172681-2123997238628389748?l=softwarex-nz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarex-nz.blogspot.com/feeds/2123997238628389748/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21172681&amp;postID=2123997238628389748' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/2123997238628389748'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/2123997238628389748'/><link rel='alternate' type='text/html' href='http://softwarex-nz.blogspot.com/2007/12/happy-xmas.html' title='Happy Xmas'/><author><name>KiwiBastard</name><uri>http://www.blogger.com/profile/06464945422472093454</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-21172681.post-2195071684195622743</id><published>2007-12-22T09:59:00.000Z</published><updated>2007-12-22T15:21:18.565Z</updated><title type='text'>Windows Vista Service Pack 1 RC1</title><content type='html'>Although an Apple fan boy, I still have a Window Laptop for doing .NET dev work on. The machine is new and came with Vista pre-installed. I have MSDN and considered re-installing XP, but thought I would give Vista a chance seeing as I paid for it!&lt;br /&gt;&lt;br /&gt;Initial experience was ok, but I felt the internet was a little slow. This was bourne out by testing - my Macbook Pro, and XP via boot camp was around 7000kb/s down, Vista came in at around 4800kb/s. All on the same internet connection. I did a little research and discovered other people were having issues too. I tried all the resolutions to no avail.&lt;br /&gt;&lt;br /&gt;I was about to give up on Vista, when I noticed RC1 of SP1 (say that 10 times fast) was available to download. So I did - nothing to lose.&lt;br /&gt;&lt;br /&gt;Installation was fairly painless, it comes in via Windows Update. The whole process took about 25-40 mins, rebooted a few times and fairly painless.&lt;br /&gt;&lt;br /&gt;The whole OS feels snappier, and I rebenched the internet connection and it was up to 8000kb/s. Ok hardly scientific but the results speak for themselves.&lt;br /&gt;&lt;br /&gt;Hopefully, SP1 for Vista has ironed out the many issues that people were having. It seems to have for me so far.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21172681-2195071684195622743?l=softwarex-nz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarex-nz.blogspot.com/feeds/2195071684195622743/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21172681&amp;postID=2195071684195622743' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/2195071684195622743'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/2195071684195622743'/><link rel='alternate' type='text/html' href='http://softwarex-nz.blogspot.com/2007/12/windows-vista-service-pack-1-rc1.html' title='Windows Vista Service Pack 1 RC1'/><author><name>KiwiBastard</name><uri>http://www.blogger.com/profile/06464945422472093454</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-21172681.post-5289702697515201643</id><published>2007-12-21T10:45:00.000Z</published><updated>2007-12-21T11:45:36.047Z</updated><title type='text'>"Blogger arriving on .NET Platform 3.5 is..."</title><content type='html'>A blog, particularly one which has had a fair amount of work put in over a period of time, can be a precious and special thing, and to be invited to contribute to this one by James is comparable to inviting someone to live in your home, or drive your car. It is an honour that I intend to repay by hopefully making posts that not only maintain the standard that has been set so far, but also by bringing my own perspective of all the new stuff that's going on in the business we call software development. I have to say that James has certainly set the bar pretty high with his &lt;a href="http://softwarex-nz.blogspot.com/2007/12/new-poster.html"&gt;post&lt;/a&gt; announcing that I had been invited to start contributing to his blog, and I certainly intend to live up to the billing.&lt;br /&gt;&lt;br /&gt;So Hi! I'm Shaun, as James has already said I'm a Brit currently based in Cheltenham, UK and have been a software developer for as long as I can remember (even back to childhood.) As a contractor I've worked in many diverse industries from media to government via pharma and banking etc and have tended to focus on the ever morphing set of MS technologies.&lt;br /&gt;&lt;br /&gt;So what can you expect from me? Well, my current interest is in the latest greatest bits and pieces that have come along with the new .NET framework releases. Like James I'm quite enthused about the possibilities created by some of these new technologies such as LINQ and hope to be able to shine an "in the real world" spotlight on them. Some of the topics that I'm most excited about and straining at the leash to blog about are:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;LINQ (to SQL, to Entities, to XML all of em)&lt;/li&gt;&lt;li&gt;ASP.NET MVC&lt;/li&gt;&lt;li&gt;Continuous Integration&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Test Driven Development&lt;/li&gt;&lt;li&gt;The rise of AOP in .NET development (using PostSharp)&lt;/li&gt;&lt;li&gt;WCF (son of remoting, grandson of DCOM)&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;One of the current pieces of research I'm playing with at the moment is how we can combine LINQ (to SQL) with a WCF service to provide data to a simple client (WPF) thereby moving closer to a real world implementation of an n-teir LINQ app. So keep your eyes peeled for a post on that some time soon.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21172681-5289702697515201643?l=softwarex-nz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarex-nz.blogspot.com/feeds/5289702697515201643/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21172681&amp;postID=5289702697515201643' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/5289702697515201643'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/5289702697515201643'/><link rel='alternate' type='text/html' href='http://softwarex-nz.blogspot.com/2007/12/blogger-arriving-on-net-platform-35-is.html' title='&quot;Blogger arriving on .NET Platform 3.5 is...&quot;'/><author><name>Shaun Austin</name><uri>http://www.blogger.com/profile/02260217349188216865</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_bD8NWacRq1E/SZQ_gbtLXVI/AAAAAAAAAFE/zRx2i4y9Frw/S220/dharma.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21172681.post-9117379732859884892</id><published>2007-12-19T22:13:00.000Z</published><updated>2007-12-19T22:22:04.509Z</updated><title type='text'>New poster</title><content type='html'>I am happy and honored to introduce a new poster to the blog. Shaun Austin, a dyed in the wool Pom, and all round good bastard. You can trust me when I say he knows his stuff. In-fact I can honestly say I've only met one other person who comes close to his knowledge and ability.&lt;br /&gt;&lt;br /&gt;Shaun's C.V is pretty impressive. He has been contracting for the last 10 years or so and has genuine real world experience. The only issue is he is a northerner and slightly Xenophobic in the Flight of the conchords sense of the word. (bit of an in joke I'm afraid). Also, we are (hopefully) co-authoring on a .Net related book. All will be revealed in the fullness of time.&lt;br /&gt;&lt;br /&gt;Anyway, I hope you enjoy his posts -  I'm sure you will.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21172681-9117379732859884892?l=softwarex-nz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarex-nz.blogspot.com/feeds/9117379732859884892/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21172681&amp;postID=9117379732859884892' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/9117379732859884892'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/9117379732859884892'/><link rel='alternate' type='text/html' href='http://softwarex-nz.blogspot.com/2007/12/new-poster.html' title='New poster'/><author><name>James</name><uri>http://www.blogger.com/profile/17381337834045521837</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-21172681.post-6310517216565685349</id><published>2007-12-18T12:44:00.001Z</published><updated>2007-12-18T12:58:45.106Z</updated><title type='text'>Linq to SQL : where are the n-Tier examples?</title><content type='html'>Further to my last post regarding Linq to SQL. I have been searching the net, looking for examples of how one might use Linq in an n-Tier world.&lt;br /&gt;&lt;br /&gt;Short answer is there isn't really any. The vast majority of examples you will find are for a 2-tier model, where the DataContext is alive across the call, and the Entities will always be attached to the DataContext. Unless you are developing utilities, or you code will always be executed in the same box as the database, then this isn't really real world examples.&lt;br /&gt;&lt;br /&gt;With a bit of digging, I have found a series of articles on the MSDN site &lt;a href="http://msdn2.microsoft.com/en-us/library/bb882661(VS.90).aspx"&gt;here&lt;/a&gt; with the most useful being &lt;a href="http://msdn2.microsoft.com/en-us/library/bb546187(VS.90).aspx"&gt;this one&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The readers digest version for those of you who are too lazy to read the articles, is that you need to serialize your Entities and then use the Attach API to "reattach" them to a DataContext.&lt;br /&gt;&lt;br /&gt;There are some gotcha's, most important of all being you may have to handle concurrency issues yourself.&lt;br /&gt;&lt;br /&gt;I intend on posting some code once I have digested the articles and found time to do some playing, but I would suggest you do some digging of your own, and those articles would be a good place to start.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21172681-6310517216565685349?l=softwarex-nz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarex-nz.blogspot.com/feeds/6310517216565685349/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21172681&amp;postID=6310517216565685349' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/6310517216565685349'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/6310517216565685349'/><link rel='alternate' type='text/html' href='http://softwarex-nz.blogspot.com/2007/12/linq-to-sql-where-are-n-tier-examples.html' title='Linq to SQL : where are the n-Tier examples?'/><author><name>James</name><uri>http://www.blogger.com/profile/17381337834045521837</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-21172681.post-3052511101661693388</id><published>2007-12-12T20:45:00.000Z</published><updated>2007-12-12T21:22:18.808Z</updated><title type='text'>Linq</title><content type='html'>I have been playing with Linq (Linq to Sql) for a couple of weeks, when I get a chance. I do like Linq. The most powerful (and obvious) feature is automating the plumbing of creating a data-access layer. Design the database, drop the tables with links on the designer and bam, you're done.&lt;br /&gt;&lt;br /&gt;While this is a really good thing, I think there are two potential issues:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;&lt;span style="font-weight:bold;"&gt;1) Linq can promote tighter coupling of UI to DataLayer (DataContext in this case)&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;Maybe this isn't as big an issue as it used to be in the bad old days, but  I can see lazy coders talking directly to the dataContext/Layer from the UI. For example&lt;br /&gt;&lt;br /&gt;myDataGrid.DataSource = MyDataContext.Customers;&lt;br /&gt;&lt;br /&gt; it probably isn't a sin but it's a small step from there to embedding business logic in the UI layer because it is so easy to do something like&lt;br /&gt;&lt;br /&gt;string id = txtId.Text;&lt;br /&gt;var cust = from customer in MyDataContext.Customers&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;where customer.id == id&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;select customer;&lt;br /&gt;&lt;br /&gt;someControl.DataSource = cust;&lt;br /&gt;&lt;br /&gt;in a search button on click event. This sort of thing was/is common in Delphi. Delphi has a concept of a Datamodule, which isn't a million miles away from a DataContext. Well I guess it is, but for arguments sake, if you think of a DataContext as a central data repository then a Delphi data module is getting closer. It makes ugly, hard to maintain code. So please don't ever do this. Use Linq to Sql by all means, but there is no reason not to still have a business layer in between.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;&lt;span style="font-weight:bold;"&gt;2) Linq to Sql will generally create a 1:1 mapping of data objects to business objects&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;A lot of people don't care about this, but business objects shouldn't necessarily be a 1-1 mapping of your tables. Take an order for example, it will contain data from a number of different tables, customer, order master, order detail, product, possibly tax. Anyway you get my point. From a business object point of view, this is one object.&lt;br /&gt;&lt;br /&gt;Without discipline, good design, and buy in, linq makes it very easy to cobble bits of data together to do what you need quickly and easily, in the short term, but can cause a mountain of headaches in the maintenance phase. I have seen it all to often in Delphi code.&lt;br /&gt;&lt;br /&gt;I guess in a nutshell, the point of this post boils down to this statement: &lt;br /&gt;&lt;br /&gt;Linq offers great power, but with great power comes great responsibility. Please, please, please remember this when you are dipping your toes into the Linq pool for the first time.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21172681-3052511101661693388?l=softwarex-nz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarex-nz.blogspot.com/feeds/3052511101661693388/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21172681&amp;postID=3052511101661693388' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/3052511101661693388'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/3052511101661693388'/><link rel='alternate' type='text/html' href='http://softwarex-nz.blogspot.com/2007/12/linq.html' title='Linq'/><author><name>James</name><uri>http://www.blogger.com/profile/17381337834045521837</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-21172681.post-506900469228232086</id><published>2007-12-12T10:04:00.000Z</published><updated>2007-12-12T10:05:53.924Z</updated><title type='text'>Reskin</title><content type='html'>A couple of people have complained in the comments about the last skin causing vision bluring after a while. I have therefore changed skin. It's just a standard template supplied by BlogSpot. I really should create my own, but only so many hours in a day...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21172681-506900469228232086?l=softwarex-nz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarex-nz.blogspot.com/feeds/506900469228232086/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21172681&amp;postID=506900469228232086' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/506900469228232086'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/506900469228232086'/><link rel='alternate' type='text/html' href='http://softwarex-nz.blogspot.com/2007/12/reskin.html' title='Reskin'/><author><name>James</name><uri>http://www.blogger.com/profile/17381337834045521837</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-21172681.post-3951614568302132054</id><published>2007-12-03T12:52:00.000Z</published><updated>2007-12-03T13:27:37.142Z</updated><title type='text'>The old 80 / 20 rule</title><content type='html'>&lt;a href="http://www.codinghorror.com/blog/archives/001002.html"&gt;Jeff Atwood suggests&lt;/a&gt; there are two types of developer. Basically it comes down to 80% of developers are what I would call plodders. They get on with the job, but aren't particularly brilliant or interested in coding as a craft. &lt;br /&gt;The other 20% have a passion for developing and are not only good, but are always trying to be better.&lt;br /&gt;&lt;br /&gt;Being a contractor, I have worked in a lot of different industries, and more importantly with a lot of different people. My observations of different types of developer are below.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Type A: Plodders&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Plodders get their name because they tend to plod away day after day, producing code. The code they produce might not be the most elegant solution but it works and that's all they care about. These types never really better themselves too much, because programming is something they do to pay the bills and they don't really love it.&lt;br /&gt;Every project needs plodders - tell them what to do and then let them go. &lt;br /&gt;&lt;br /&gt;&lt;b&gt;Type B: Coders&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Coders are definitely in the 20% mark. They are very good developers, with the ability to look outside the confines of what they are doing and see the bigger picture. They would be keen to better themselves by reading blogs and books and keeping up to date with latest technologies. Coders usually need to be kept interested in, or believe in what they are doing, and can revert to plodding if they aren't. Coders would rather prototype something to see if it will work, rather than methodically work out what would be needed and document every part of the system before coding.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Type C: Careful Coders&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;A careful coder is basically a coder with a more meticulous personality. These types prefer to have a full understanding, and a fully documented specification before turning on the IDE.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Type D: Guru&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;These are very rare types, maybe 5% of all developers. They fully understand the languages and technologies they use, and know things inside out and can wring the last CPU cycle out of their code. A true guru isn't self titled. It's up to other developers to give them that name. I've worked with maybe 2 or 3 in my entire career.&lt;br /&gt;&lt;br /&gt;Obviously the above list is entirely subjective and only coming from my experience but I think most people would agree that the guys around them would fall into one of those categories above. &lt;br /&gt;&lt;br /&gt;For the record, I consider myself to be a coder, but always seeking to be better and improve so one day I might come close to being a Guru...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21172681-3951614568302132054?l=softwarex-nz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarex-nz.blogspot.com/feeds/3951614568302132054/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21172681&amp;postID=3951614568302132054' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/3951614568302132054'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/3951614568302132054'/><link rel='alternate' type='text/html' href='http://softwarex-nz.blogspot.com/2007/12/old-80-20-rule.html' title='The old 80 / 20 rule'/><author><name>KiwiBastard</name><uri>http://www.blogger.com/profile/06464945422472093454</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-21172681.post-8292360471743279263</id><published>2007-11-06T21:27:00.000Z</published><updated>2007-11-07T06:36:19.379Z</updated><title type='text'>VB Must die</title><content type='html'>I'm sure there are some excellent VB programmers around it's just that I've never met any. Judging by the quality of the VB code I've been looking at recently, none worked at the place that wrote that code.&lt;br /&gt;&lt;br /&gt;There is something about VB that seems to invite cowboys and morons to it. Guys that were flummoxed by C/C++ or Delphi, but still wanted to get on the IT Gravy train. I guess it's easy to get something up and running, and without a lot of forethought or future thinking. Just put all our business rules on the click event of this button, no one will ever need to change the code, or the UI.&lt;br /&gt;&lt;br /&gt;The language itself encourages laziness.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;On Error Resume Next&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;WTF!&lt;br /&gt;&lt;br /&gt;Sure the program has just come back from catastrophic error, but I'll still try and plug on anyway. What's the worst that could happen?&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;variables don't need to be defined before using&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;VB guys counter this by saying, "Always use Option Explicit". Well if you should always use it, why isn't it turned on by default? Or better still why give the choice?! Sugrue rule number 1 states that if you allow a programmer to be lazy, they will be.&lt;br /&gt;&lt;br /&gt;The single worst thing about VB to me though is the use of braces when calling a method with parameters. Or not.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;myMethod parmeter1, parameter2&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;is valid, infact that's how you do it. However if you are assigning the return of a method to a variable, put the brackets in:&lt;br /&gt;&lt;br /&gt;myVar = myMethod(parameter1, parameter2)&lt;br /&gt;&lt;br /&gt;why? What sane person thought of this? WTF is the point. Either use it or don't.&lt;br /&gt;&lt;br /&gt;Which brings me to VB.NET. Obviously it is real OO and utilises the .NET framework so is built on the foundation of brilliance, but what is the point? If it's to allow VB coders an easier starting point to .NET, then they are kidding themselves. &lt;br /&gt;&lt;br /&gt;Microsoft should doing everyone a favour and send VB for a long walk off a short pier. Either learn C# or flip burgers instead.&lt;br /&gt;&lt;br /&gt;Sometimes you have to be cruel to be kind.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21172681-8292360471743279263?l=softwarex-nz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarex-nz.blogspot.com/feeds/8292360471743279263/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21172681&amp;postID=8292360471743279263' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/8292360471743279263'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/8292360471743279263'/><link rel='alternate' type='text/html' href='http://softwarex-nz.blogspot.com/2007/11/vb-must-die.html' title='VB Must die'/><author><name>KiwiBastard</name><uri>http://www.blogger.com/profile/06464945422472093454</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-21172681.post-187521478380061814</id><published>2007-11-06T19:26:00.000Z</published><updated>2007-11-06T21:16:09.363Z</updated><title type='text'>When is String.IsNullOrEmpty doesn't work</title><content type='html'>If you read my &lt;a href="http://softwarex-nz.blogspot.com/2007/11/c-vb6-c-sucks.html"&gt;previous post &lt;/a&gt; you'd know I was involved in some C#-&gt;VB COM developing. Well actually VB-&gt;C# to be 100% correct.&lt;br /&gt;&lt;br /&gt;Anyhoo, in VB you can define a string with a length eg&lt;br /&gt;&lt;br /&gt;Dim suckyVBString as String * 9&lt;br /&gt;&lt;br /&gt;which defines a string of max length 9 characters. When this string is part of a user defined VB type (or "class") then when the type/class is newed then suckyVBString will be "&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;" rather than "".&lt;br /&gt;&lt;br /&gt;So a little unexpectantly doing a String.IsNullOrEmpty(suckyVBStringFromCOM) returns false&lt;br /&gt;&lt;br /&gt;a little browse of the IL shows that IsNullOrEmpty contains this code (not exact code I am blogging on my mac but you get the point):&lt;br /&gt;&lt;br /&gt;public bool IsNullOrEmpty(string s)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (s != null &amp;&amp; s.Length &gt; 0)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp&amp;nbsp;&amp;nbsp;&amp;nbsp;return false;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;else&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp&amp;nbsp;&amp;nbsp;&amp;nbsp;return true;&lt;br /&gt;}&lt;br /&gt;so while the Marshaled VB string is full of 9 nulls (char /0), it is neither null or empty according to the code.&lt;br /&gt;&lt;br /&gt;A quick visit to String.Trim() sorts all this out, but it's a trap for young players if you're not careful.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21172681-187521478380061814?l=softwarex-nz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://softwarex-nz.blogspot.com/feeds/187521478380061814/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21172681&amp;postID=187521478380061814' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/187521478380061814'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21172681/posts/default/187521478380061814'/><link rel='alternate' type='text/html' href='http://softwarex-nz.blogspot.com/2007/11/when-is-stringisnullorempty-doesnt-work.html' title='When is String.IsNullOrEmpty doesn&apos;t work'/><author><name>KiwiBastard</name><uri>http://www.blogger.com/profile/06464945422472093454</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>
