Friday, August 22, 2008
Just read that Red Gate are taking over development of Reflector from Lutz Roeder.

Reflector is one of the best .NET development tools, and it is awesome that Lutz has provided it free for so long. I have learnt a lot from playing around inside that UI, and it has helped me out of many a pickle.

Red Gate have a pretty good track record of producing great software (SQL Compare is awesome!), and it is cool that they are giving back to the community by developing and enhancing Reflector going forward. I'm looking forward to seeing what they do with it!


posted on Friday, August 22, 2008 12:55:31 AM (New Zealand Standard Time, UTC+12:00)  #    Comments [0]
 Thursday, August 21, 2008
Many years ago in late 2002, I spent quite a few hours playing around with Rotor, the Shared Source CLI implementation.

Back then Rotor was the easiest way to get a peek at how the .NET runtime and supporting libraries might have been implemented. Not everything was there, and that which was there wasn't guaranteed to function in exactly the same was as the shipping CLR, but it let you look at the C# and C++ source code that made things happen.

I played around with the Gyro patch half-heartedly, but by the time the v2 release of SSCLI came out, my thirst was adequately quenched by Reflector so I never really got into the genericised version.

I didn't read Stutz, Neward and Shilling's Shared Source CLI Essentials book (sorry guys!) but it did sit on my wishlist for a while.

Now Ted Neward and Joel Pobar are self-publishing the sequel to the book, and will be giving away the electronic version of it through the Microsoft site.

I have had a brief skim through the draft, and it's a CLR geeks heaven. I'm looking forward to curling up with it some time in the near future.

Check it out: Shared Source CLI 2.0

I believe Joel is at TechEd Australia next month - make sure to go along to his F# talk if you're there.

posted on Thursday, August 21, 2008 3:00:47 PM (New Zealand Standard Time, UTC+12:00)  #    Comments [0]
 Wednesday, August 13, 2008
We've finalised the speakers for Code Camp on 31 August -- and I'm very happy to report that we have some great local and international speakers coming along to present. I thank them in advance for volunteering their time to prepare and present to us.

  • Owen Evans from Xero will be talking about the ASP.NET MVC project
  • Jonas Folleso a Senior Consultant at Capgemini and a Microsoft Regional Director for Norway will be taking us through Silverlight from a developers perspective
  • Robert Fonseca-Ensor from Datacom Systems Limited will be talking about Test Driven Development and Dependency Injection
  • Scott Hanselman, Community Liaison and blogger from Microsoft will be talking about Dynamic Data
  • Ivan Towlson from Mindscape will be presenting a session on Thinking in WPF

As you can see, we've got a wide variety of sessions, from general development techniques, to web and desktop technologies. We haven't completely finalised the ordering of the sessions, but as you'll see on the Code Camp website, we're running from 9am till 6pm, and will be providing a free lunch and afternoon tea courtesy of our sponsors.

We also have a number of lightning talks which will feature a wide range of different topics, from technologies such as WCF, to products, and to communities around NZ. If you're keen to be involved in presenting a lightning talk (or have suggestions for topics), read my previous post.

I'm looking forward to it. Sign up now and I'll see you there!


posted on Wednesday, August 13, 2008 5:32:46 PM (New Zealand Standard Time, UTC+12:00)  #    Comments [0]
 Tuesday, August 12, 2008
Wow, I'm so proud that we've been selected as one of the top 10 Application UIs by the esteemed Nielson Norman Group in their latest report.

I haven't read the report yet, but we got a good writeup in the Alertbox article:
But Xero might be a more interesting example, simply because it targets the traditionally dry domain of accounting. One of its main features lets users automatically reconcile bookkeeping entries with bank account transactions. As a match is made, the 2 matching entries are removed from the list of stuff to be reconciled. Users compared this interaction to playing Tetris and described it as fun and addictive. Come on, making accounting fun? That's an award-winning design.
I'm not responsible for our look, or even for implementing it in code, but I'm very proud to do the behind-the-scenes work on Xero helping to wire it together. It's great that our application is being recognised as having a great user interface... well done to our design team for corralling everyone's ideas together into something that is fun for our users.


posted on Tuesday, August 12, 2008 10:14:45 PM (New Zealand Standard Time, UTC+12:00)  #    Comments [0]
Wow, the places for the Devt Code Camp are filling up fast! We already have more registrations than the size of the room, which means that we now have to start thinking about what to do once we go past our safety buffer!

Lightning Talks

Something new we're doing this year is taking the Lightning Talk concept that works well at user groups, and bringing it to Code Camp.

A lightning talk is a 5 minute slot to talk about something -- getting to the point is the important thing.

Are you interested in a 5 minute presentation in front of more than 200 of the most switched-on .NET developers in NZ?

Topic suggestions are:
  • Open source or free projects you work on or use, and the cool features that mean we should check it out.
  • A hot new technique you've learnt in VB, C#, Visual Studio etc.
  • Come and work for my company because...
  • I run a user group or coffee group, you should come along because...
  • I'm a software vendor, and 5 minutes is all I need to sell some copies...
  • Or perhaps even something humorous?
I'll give priority to talks that aren't commercial, unless you are a Code Camp sponsor, but it's also cool to find out about cool commercial stuff going on around New Zealand so I'm hoping some of our cool ISVs and tool vendors will present.

If you're interested, please contact me. The way I'll run it is to have a single computer only, and any PowerPoint slides must be pre-loaded onto it. If you don't need slides, then that's okay.

posted on Tuesday, August 12, 2008 12:58:50 PM (New Zealand Standard Time, UTC+12:00)  #    Comments [0]
 Tuesday, August 05, 2008

I got myself into helping out with another Code Camp.

This year we're having a Developer Code Camp again the day before TechEd in Auckland, from 9am till 6pm on 31 August 2008.

View the site, sign up and come along. It would be great to see you there!

I'll probably write up the titles, sessions and speakers later on when things firm up a bit more.


posted on Tuesday, August 05, 2008 7:04:55 PM (New Zealand Standard Time, UTC+12:00)  #    Comments [0]

Dear Apple,

When you create your annoying marketing emails, please remember to edit them after copying the great American deals and converting them to less-great NZ deals.

This one came today. In my inbox it says June 15. After loading images, Sept 7:


...Became this

That wasn't too bad -- after all, who cares if Apple don't know when Fathers Day is? (Apart from fathers who want gifts :)

But this one from a few months ago was more annoying:


...Became this

Now that's a bit more annoying. When I viewed the email in my inbox (with images turned off), I thought I was being offered a special deal of $49. But no, switching on images showed that actually it wasn't such a special deal at $75.

So, dear Apple. When you copy and paste the excellent US deals into an email, don't forget to change the ALT text of the images after you replace them -- it gets shown in peoples email clients if they have images turned off, or they hover over the image with their mouse.


posted on Tuesday, August 05, 2008 6:56:28 PM (New Zealand Standard Time, UTC+12:00)  #    Comments [0]
 Thursday, July 24, 2008
Well, next Thursday 31 July it's my turn to present at the user group again.

My talk is titled "Kapow! Become a Visual Studio 2008 super hero!" and will hopefully appeal to developers of all denominations1 and experience levels.

Check out the details on the Wellington .NET user group site. Hopefully we'll see you on Thursday!


1 C#, F#, C++, VB.NET. You know, the major .NET religions

posted on Thursday, July 24, 2008 11:25:02 PM (New Zealand Standard Time, UTC+12:00)  #    Comments [0]
 Thursday, June 26, 2008
Just found out that I won an Xbox 360 - pretty cool.

I'd like to thank the academy...

Seriously though, it's pretty nice that Microsoft recognise the efforts of the .NET community. Around the country there are a lot of hours volunteered each month preparing sessions, speaking, catering and hosting events - all run at no charge by the community for the community.

Without the support of Microsoft and Darryl Burling in particular, it would be a lot harder for us to provide pizza every few weeks to hungry punters.

Last year I calculated I'd ordered 800 pizza since starting the Wellington .NET user group, and it must have been another 200 since then! I recently put together list of all the pizza we buy in a month nationwide, and it's about 200 pizza across all the user groups. That much fat don't come cheap!

So, thanks to Darryl and Microsoft, and thanks to all the great speakers and attendees that come along to meetings every few weeks and make the user group what it is!


P.S. Two user group events in Wellington coming up -- one tomorrow and one next Wednesday -- check out

posted on Thursday, June 26, 2008 6:50:16 PM (New Zealand Standard Time, UTC+12:00)  #    Comments [4]
 Thursday, June 19, 2008
My blog server didn't come up after the power was cut to our house yesterday. I didn't notice till the wee hours of the morning, and then found out that the graphics card was fried (they don't make 10 year old graphics cards like they used to!)

My mission is to provide an uninterrupted level of service, complying with my personal ISO 9002 committments.

Of course, running your blog on a 10 year old PC in your basement hooked up to a UPS with 5 minutes charge isn't exactly complying with ISO standards :)

posted on Thursday, June 19, 2008 11:33:41 AM (New Zealand Standard Time, UTC+12:00)  #    Comments [2]
 Monday, June 16, 2008
This Wednesday in Wellington, Ivan will be presenting at the Wellington .NET Users Group.

Ivan is one of my all-time favourite contributors to the .NET mailing list, and I am always impressed at the amount of thought he puts into his mailing list posts, blog posts on his personal and the Mindscape blog, and into his presentations.

Ivan has recently been awarded a Microsoft MVP award for his contributions to the .NET community, well deserved too!

Anyway, enough of my geek idol lust...

His talk on Wednesday is titled "Build Your Own Designer: an introduction to Visual Studio DSL Tools". In the session he will be talking about when and how you would make a design surface within Visual Studio, and the designer he has recently been building.

Please RSVP and coming along this Wednesday 18 June.


posted on Monday, June 16, 2008 11:22:14 PM (New Zealand Standard Time, UTC+12:00)  #    Comments [0]
Joe White has done a great job posting session notes from TechEd US.

One post that I found interesting was his notes from Roy Osherove's talk "How not to write a unit test".

There was quite a few suggestions in here that resonated with me, such as removing 'new' calls from within your tests into helper methods that create or initialise objects, and some of his thoughts on stubs vs mocks.

An interesting read, easy to skim through. Thanks Joe, and thanks Roy!

(Wish I was there!)

posted on Monday, June 16, 2008 11:12:43 PM (New Zealand Standard Time, UTC+12:00)  #    Comments [0]
 Sunday, June 08, 2008
Trade Me making value judgements, or just representing the facts? :)


posted on Sunday, June 08, 2008 10:55:38 PM (New Zealand Standard Time, UTC+12:00)  #    Comments [3]
 Friday, June 06, 2008
I was surprised to see that the price of TelstraClear bundled plans are rising at the end of the month.

Looking at the old and new pricing pages, the main price rises seem to be in plans with broadband. Some of them increasing by $120/year:

Phone, TV and cable modem Old New
2Mbps & 1GB/mth $98.02 $103.01
4Mbps & 5GB/mth $108.02 $113.01
4Mbps & 10GB/mth $118.02 $123.01
10Mbps & 20GB/mth $138.02 $148.01
10Mbps & 40GB/mth $168.02 $178.01
10Mbps & 80GB/mth $208.02 $218.01
25Mbps & 120GB/mth $298.02 $298.01*
* Curiously, this plan dropped by 1 cent!

How can this be? Surely internet prices should be steadily dropping, not increasing? Especially as more households and businesses in New Zealand get broadband.

Perhaps it's because TelstraClear got voted Best ISP, they can put their prices up?

Maybe it's to support infrastructure upgrades and top-end plans?

Maybe they are matching Telecoms prices?

Whatever the reason, I'm surprised at the increase -- broadband should be getting cheaper and faster (pretty darn quick?) rather than slower!

posted on Friday, June 06, 2008 9:52:16 PM (New Zealand Standard Time, UTC+12:00)  #    Comments [4]
 Thursday, June 05, 2008
One persons vision of the Google OS:

Coming from a unix background, there's just something so natural about a shell that has commands directly hooked to google :)

posted on Thursday, June 05, 2008 11:51:15 PM (New Zealand Standard Time, UTC+12:00)  #    Comments [0]
 Saturday, May 24, 2008

It is a busy time in Wellington .NET User Group land.

Nine months ago I switched us over to fortnightly user group meetings. While it's sometimes a struggle to find speakers, thanks to the great support of the speakers and the Wellington community, we're able to entertain, teach and enlighten every 14 days.

I thought a round-up of our activity over the past 12 months would be interesting:

21/05/2008 - Subversion and Cruise Control - Sky Sigal

07/05/2008 - Visual Studio certification & SQL Server Reporting Services - James Hippolite

16/04/2008 - There's more to life than C# and VB.NET - Kirk Jackson

02/04/2008 - Mocking 101 - Owen Evans

19/03/2008 - Silverlight 2.0 - James Newton King

05/03/2008 - 2008 Lightning Strike! - Various Presenters

13/02/2008 - 2008 Summer Road Trip - Jeremy Boyd, Chris Auld, Kirk Jackson

30/01/2008 - ASP.NET MVC framework - John-Daniel Trask

05/12/2007 - Introduction to Windows Presentation Foundation (WPF) - Ivan Towlson

21/11/2007 - Dynamic Runtime & Languages - What's it all about? - Ivan Porto Carrero

07/11/2007 - SQL Server 2008 for Developers - Jeremy Boyd

03/10/2007 - A lap around Visual Studio 2008 - Darryl Burling

19/09/2007 - ASP.NET Futures: Dynamic Data Controls - Andrew Tokeley

06/09/2007 - Virtual Earth – Overview on Spatial Development - Matti Seikkula

01/08/2007 - Developing with Windows SharePoint Services v3.0 - Zac Smith

04/07/2007 - C# vs VB.NET - continuing the epic battle - Philip Cox and Kirk Jackson

06/06/2007 - Well MIXed! - Chris Auld

As well as organising 16 of those talks and 20 speakers to present, in the past 12 months I also have:

  • Presented a PowerShell presentation at TechEd NZ in August 2007
  • Presented on C# 3.0 features at a corporate user group
  • Given a presentation for ELCM351 at Victoria University on "Future Directions in Web Development" (more on this later)
  • Been the treasurer of the NZ .NET User Group Incorporated Society, and written about 100 cheques for beer and pizza, as well as attending committee meetings and procrastinating about budgets
  • Organised the "Dev Code Camp 2007" on Sunday 12 August 2007 in Auckland, just before TechEd. It was a struggle finding speakers, organising catering and sponsorship, and MC'ing the day. Probably the hardest event I've done so far... Watch out for another one this year :)
  • Presented on C# 3.0 at the Dev Code Camp as well.

It has been great to have the support of the speakers listed above from the Wellington community, and even greater that 8 of them spoke for the first time at the user group this year.

I'm always on the lookout for new speakers. If you're interested, drop me a line!

(I'm looking for a speaker for Wed 4 June by the way :)



posted on Saturday, May 24, 2008 1:31:07 AM (New Zealand Standard Time, UTC+12:00)  #    Comments [0]
 Monday, May 05, 2008
... a nice way to end the school holidays :)

Coming back to work is the hard part:


posted on Monday, May 05, 2008 11:00:11 AM (New Zealand Standard Time, UTC+12:00)  #    Comments [0]
 Friday, May 02, 2008
Good news that Scott Hanselman is coming to TechEd NZ which runs from Sept 1-3 in Auckland.

Hopefully this year I'll get to present again. The past two years I have had fun presenting PowerShell sessions, and there's lots of news of new PowerShell providers (and more coming), so there should be something good to report.

This year TechEd is tantalisingly close to PDC - which is Oct 27-30 in Los Angeles. I say 'tantalisingly', because a lot of teams within Microsoft will be holding off releasing new versions of their technology, or making big announcements at PDC (e.g. the mysterious Purdy team language / editor stuff will be divulged then).

Thank goodness for open projects like ASP.NET MVC - we're seeing right into the bowels of the project on a regular basis thanks to their open and frequent releases.

posted on Friday, May 02, 2008 4:49:37 PM (New Zealand Standard Time, UTC+12:00)  #    Comments [0]
 Wednesday, April 30, 2008
Simon Green posted a good comment on a previous post of mine (I like Guids), which is a generic class that wraps Guids, so that you get a nice compile time error if the wrong guid is used in the wrong place.


/* Doesn't compile
Library.BorrowBook(bookId, personId);

// Compiles fine
Library.BorrowBook(personId, bookId);

Whereas with a normal signature of (Guid, Guid) you'd get no compile-time error if the parameters were mixed up.

Try his solution out, and let me know what you think.



posted on Wednesday, April 30, 2008 12:34:52 AM (New Zealand Standard Time, UTC+12:00)  #    Comments [0]
On Krzysztof Cwalina's blog there's an example of what may be coming in the Managed Extensibility Framework, a framework for dependency injection, naming and activation, and duck typing. Looks like it could be interesting when released.

While on his blog, I got to reading some of the older posts:
There's good stuff buried in the archives of Krzysztof and Brad Abrams blogs.

posted on Wednesday, April 30, 2008 12:28:15 AM (New Zealand Standard Time, UTC+12:00)  #    Comments [0]
 Friday, April 18, 2008
Here's an idea that would work well in Courtenay Place:

A sign on the side of the road that says:
No Cruising Zone
Motorists passing the traffic control point 2 or more times in 4 hours are subject to citation
That'd teach those kids a lesson!

The photo is taken by photographer extraordinaire Steve Wells. Formerly of Wellington, now in Paris, and has a great new photo every day on his blog.
posted on Friday, April 18, 2008 1:14:13 AM (New Zealand Standard Time, UTC+12:00)  #    Comments [2]
 Monday, April 14, 2008
I'm presenting at the Wellington .NET Users Group this Wednesday night.

The aim is to have a bit of a run-through some of the interesting bits I pulled out of the Lang.NET Symposium videos, run through how the different CLR languages fit together and into the CLR, and talk about some of the things we have been hinted at for the future.

More details on the Wellington .NET Users Group site.

posted on Monday, April 14, 2008 10:46:04 PM (New Zealand Standard Time, UTC+12:00)  #    Comments [0]

These guys crack me up:

And congratulations to Stephen and Melanie :)

posted on Monday, April 14, 2008 4:00:23 PM (New Zealand Standard Time, UTC+12:00)  #    Comments [0]
 Tuesday, April 08, 2008
Cool - Igor Moochnick has announced the release of pash, an open source implementation of PowerShell that runs on Mono or Microsoft's CLR.

I will be interested in seeing the uptake of Posh among Unix developers -- Powershell is more of an evolution of the standard Unix scripting environments such as bash, perl, and tcl, so should feel right at home.

posted on Tuesday, April 08, 2008 9:22:20 PM (New Zealand Standard Time, UTC+12:00)  #    Comments [0]
 Wednesday, April 02, 2008
This Star Trek parody to the tune of Ruby is quite nerdy and fun:

From 2006 - you may have seen it already, I hadn't.

posted on Wednesday, April 02, 2008 11:19:14 PM (New Zealand Standard Time, UTC+12:00)  #    Comments [0]
 Tuesday, April 01, 2008

I've been reading Charlie Calvert's blog, and his list of LINQ providers, and watching both the Lightspeed and LLBLGen Pro LINQ beta's with interest.

There's an available product that you can buy - the CHI69 "Computer Human Interface" - I have written a LINQ provider over the API provided within the supplied SDK.

Download the beta LINQ to Spouse provider here.

Connect to the CHI69 device, and read in the environment:

// Open environmental interface
Environment environment = CHIConnector.Connect<Environment>();

Build the representation of the user:

// Open self-representation
Husband me = CHIConnector.Self<Husband>();

The device allows querying the local environment for objects of different types using LINQ: 

// Search all available for a girlfriend
var prospects = CHIConnector.AllAvailable<Girlfriend>();

Girlfriend girlfriend =

from prospect in prospects
(prospect.Husband ==
null || prospect.MaritalStatus == MaritalStatus.Rocky)
select prospect

Peform some realistic actions with returned objects:


The library exposes a rich interface:

// Test marriage criteria

if (me.Mood == Mood.Romantic &&
    environment.Lighting <=
Lighting.Flattering &&

// Note the downcast. Some functionality will become unavailable
me.Wife = (Wife)girlfriend;


So go ahead and test the library and provider. I'm interested in any feedback you can give.

Some notes:

  • Wife inherits from Husband (by definition, the functionality is a superset)
  • Version 69 of the CHI device only allows for monogamous relationships. Due to demand, apparently this requirement will be removed in an upcoming release
  • As an optimisation, some inherited properties are implemented or cached in the class library, rather than querying the real-world object (e.g. wife.IsRight does not require a remote call as the result is deterministic)
  • The default device communication protocol is messy. Using SOAP would clean it up.
  • Setting me.Salary = 0 will throw an OutOfLuck exception, terminating the program.
  • High intensity emotions (e.g. wife.Emotion.Intensity >= Intensity.Danger) result in unpredictible behaviour. (14.36 KB)
posted on Tuesday, April 01, 2008 12:39:33 AM (New Zealand Standard Time, UTC+12:00)  #    Comments [1]
 Thursday, February 21, 2008
It's good to see on John Lam's blog that videos from Lang.NET are now available.

They are Silverlight hosted, but if you want to download them directly, here are the links to the WMV files (right-click to save them to your disk):

Videos/1-00 - Keynote - Jason Zander

Videos/1-01 - CSharp3 - Anders Hejlsberg

Videos/1-05 - Lively Kernel - Dan Ingalls - Sun

Videos/1-06 - JScript - Pratap Lakshman

Videos/1-07 - Irony and ERP Language Challenges - Roman Ivantsov

Videos/2-00 - Democratizing the Cloud with Volta - Erik Meijer

Videos/2-01 - Newspeak - Gilad Braha - Cadence

Videos/2-02 - Resolver One - Giles Thomas - Resolver

Videos/2-03 - Retargeting DLR - Seo Sanghyeon

Videos/2-04 - Visual Basic - Paul Vick

Videos/2-06 - PHP - Wez Furlong

Videos/2-07 - Phalanger - Tomas Petricek

Videos/2-08 - Pex - Peli de Halleux

Videos/2-09 - Numerical Computing with the CLR - Jeffrey Sax - Extreme Optimization

Videos/2-10 - remotion Mixins - Stefan Wenig and Fabian Schmied - rubicon

Videos/2-11 - CodeIt - Serge Baranovsky - submain

Videos/3-00 - IronRuby - John Lam

Videos/3-01 - Ruby.NET - Wayne Kelly

Videos/3-02 - FSharp - Luke Hoban

Videos/3-03 - Parsing Expression Grammars in FSharp - Harry Pierson

Videos/3-04 - NStatic - Wesner Moise - SoftPerson

Videos/3-05 - Moonlight and Mono - Miguel de Icaza

Videos/3-06 - Visual Studio Shell - Aaron Marten

Videos/3-07 - Modeling and Languages - Don Box

Videos/3-07 - Modeling and Languages - Don Box_1

Videos/3-08 - Cobra - Chuck Esterbrook

Videos/3-09 - Intentional - Magnus Christerson

posted on Thursday, February 21, 2008 12:12:54 PM (New Zealand Standard Time, UTC+12:00)  #    Comments [0]