October Meeting - MongoDB and NoRM

This month at Melbourne Alt.NET we'll be taking a look at MongoDB and NoRM presented by Adam Schröder. The following is an outline of what Adam is going to present:


  • Brief introduction to MongoDB.
  • Working with the mongo console to perform db queries, commands.
  • Introduction to NoRM and what type of driver it aims to be.
  • Demo on basic usage of NoRM without using LINQ.
  • What LINQ support exists for NoRM.
  • Demo LINQ queries including the use of the MongoSession class.
  • Deep Dive into the LINQ provider code.
  • Questions and Answers.
Adam's Bio:

Senior Developer at Inlogik Pty Ltd
Developing in .NET for 5 years with particular interest in MVC and Jquery
Twitter: @schotime

This promises to be another great Alt.NET evening. So RSVP and come along and enjoy a few beers and some pizza with like minded people and geek out for a few hours. Also, please feel free to invite others along who you think might be interested in joining in the Alt.NET community.


September Meeting - Coding Archaeology Wrap Up

Our first Coding Archaeology evening was certainly an interesting exercise with some really detailed discussions going on during the evening. The aim of the evening was to try to understand how NSubstitute works, rather than how to actually use NSubstitute. Of course with only two hours we couldn't possibly hope to understand the whole framework, but it was quite surprising how much we did explore.

We started out with a fairly basic exploration, looking at how Substitute.For(..) returns a Castle proxy object. This was simply done by stepping into one of the basic unit tests with the debugger to follow the code path.


We then looked at the SubstituteExtensions class which provides extension methods like Recieved(...) and Returns(..) for the framework. It was interesting to find out that the following statement:

_engine.Recieved().Rev();

would also validate when expressed like:

_engine.Recieved();
_engine.Rev();

After the break we decided to look at how NSubstitute deals with raising events. To do this we built a Car class to take an IEngine (part of the tests in NSubstitute) and wrote a test, as you might in the 'real world' which raised the IEngine Stopped event. We used NSubstitute to create a fake of IEngine and injected it into Car and then raised the Stopped event using:

_engine.Stopped += Raise.Event(...);

From there we dug (pun absolutely intended) into the call stack to work out how event raising was implemented.

In conclusion the choice of NSubstitute was both good and bad. On the good side was the opportunity to look through some beautiful and clean code. The flip side was that the structure of the code, Overenthusiastic OO, as Dave Tchepak calls it, was probably a bit much to tackle at the same time. It would have also been really good to have had a more detailed look at the structure of the unit tests, but in the end there just wasn't time to look at it all. Maybe another time...

September Meeting - Coding Archaeology

Boy how time flies. Believe it or not, the September meeting will be our six month milestone for Melbourne Alt.NET. And to celebrate, we'll be having pizza and beers. Dull? Surely not. Then how about a geeky coding archaeology evening? But first of all I would like to thank everyone who has been part of it and made it such a success to date. We still have a lot of ideas and some great events in the coming months to look forward to.

Based on some feedback and discussions from the previous meeting there seemed to be some interest in looking at NSubstitute for our deep dive into an open source project. This might also be a great opportunity to have a discussion around comparing mocking frameworks and unit testing more generally.

The way I see the evening working is that I will have the source for NSubstitute set up on my laptop to display up on the data projector. From there we'll have an open discussion around the code and look at various aspects that interest everyone. All questions should be asked without judgement and the whole idea is for everyone to hopefully learn something new. If at any stage during the evening someone else would like to volunteer to take the pilot's seat of Visual Studio, they will be welcome to.

Don't forget to RSVP in the voting panel. See you there.

August Meeting - Lightning Talks Wrap Up

It seems that Melbourne Alt.Net is travelling along very nicely. It has a great community spirit and a bunch of really passionate people with great ideas. And Wednesday's Lightning Talks session was no exception. Added to that is the great support we get from Oakton which is enabling us to evolve into a fantastic monthly event.

We had six presentations of 10 minutes (ok, maybe more like 15 - 20 minutes) each.  Where relevant I have included links to content and information related to each presentation.

1. Mark Trinder (@mtrinder) - MonoTouch


2. Andrew Browne (@adbrowne) - CouchDB replication and conflict detection.



3. Jimmy P. (@pjimmy) - My experiences as an agent of change.


4. Simon Le Serve - Complexity and Refactoring


5. Tarn Barford (@tarnacious) - Composing events with RxJs


6. David Burela (@DavidBurela) - Windows Phone 7 UI


A big thanks to all those who contributed to the talks. And for anyone who thought they might have liked to have presented something and weren't quite sure or just weren't ready with something, then we'll do another one in the near future no doubt.

Thanks also to David for filming the talks.
(link to Lightning Talk videos to follow when available)

Our next meeting will be our first six months of running the event believe it or not. Not quite birthday celebrations, but something to look forward to all the same.

August Meeting - Lightning Talks

The August 18th meeting will be our first lightning talks evening. The responses to do presentations has been great and looks to be an interesting mix of topics. So far we have:

1. Mark Trinder (@mtrinder) - MonoTouch
2. Andrew Browne (@adbrowne) - CouchDB replication and conflict detection.
3. Jimmy P. (@pjimmy) - My experiences as an agent of change.
4. David Burela (@DavidBurela) - A real world MEF application
5. Simon Le Serve - Complexity and Refactoring
6. Tarn Barford (@tarnacious) - Composing events with RxJs

Each presentation will run for 10 minutes and we'll leave time for questions as well as beer and pizza of course.

We probably have time for one more talk so if anyone else would like to present then just let me know at twitter @abienert or leave a comment here. We have a full agenda now. If you would have liked to present then I'm sure this won't be the last lightning talks evening.

Look forward to seeing you there and please don't forget to RSVP on the polling panel.

July Meeting - Coding Dojo Summary

I have to admit I was somewhat unsure how our first Coding Dojo evening would turn out not having ever experienced one let alone facilitated one. However the feedback has been really positive and everyone, it seems, really enjoyed the evening and got something out of it.

For the evening we had a choice of 3 kata's.

Kata Roman Numerals
Kata Word Chains
Kata Towers of Hanoi

Everyone decided to pair up which was great, and there were some good discussions going on around the tables afterwards. I had intended that groups break off into rooms based on the kata they had chosen. As it turned out all bar one pair decided to tackle the Roman Numerals problem, with the other pair doing the Word Chains problem. Interestingly, Kata Roman Numerals probably seemed to be, on the face of it, the easier challenge....oh how mistaken one can be. :) But that in no way took away from the evening. It was really encouraging to see a bunch of great developers with a dogged determination to tackle the problem at hand.

Just about everyone tackled their kata using a TDD approach and mostly using C# in VisualStudio. The only breakaway from that norm was a Python implementation. One interesting observation was that while TDD was helping to validate the algorithms people were developing (many and varied I might add) it certainly didn't guarantee that a valid solution was found. There was a bit of discussion and debate surrounding this issue at the end too.

All in all a great night and once again thanks to Oakton for putting up with us all and refreshing us with beers and pizza.

See you all on August 18th for a Lightning Talks evening.

Edit (9/8/2010): David Burela posted a blog of his experience of the Coding Dojo night.

July Meeting - Coding Dojo

For this month at Melbourne Alt.NET we'll be doing a Coding Dojo evening. This is an opportunity to have a bit of fun and try out something a bit different.

For anyone not familiar with what a coding dojo is take a quick look at the Coding Dojo Wiki. But put simply and as defined on the Coding Dojo Wiki:

A Coding Dojo is a meeting where a bunch of coders get together to work on a programming challenge. They are there have fun and to engage in DeliberatePractice in order to improve their skills.

There will be 2 or 3 challenges to choose from on the evening and we'll keep them fairly simple. If you look at the Coding Dojo Wiki site you might notice that there are only two types of meetings, the prepared kata and the randori kata. We will do an individual/paired version so that everyone is participating at the same time. Check out the Sydney Alt.NET group who did this back in March, and also the summary post from the March meeting for an idea of how things will run. Oh and no we WON'T be doing the same kata's. :-)

The only real requirements are to bring a laptop with your development weapon(s) of choice (anything you like) and an enthusiastic mind set. If you don't have a laptop, fear not, we'll get some paired teams happening as well.

Keep in mind that a coding dojo is not a competition and the only thing that matters is to give it a go.

Please use the RSVP voting panel to indicate if you're coming along so that we can get the pizza and drinks orders sorted. Look forward to seeing you there.