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!

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.

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.

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 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.

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.

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:

This...

...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:

This...

...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.

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!

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!)

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!

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.

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:

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!

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.

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.

e.g.

/* 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.

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.

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.

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.

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.