I am staying in a hotel that has been booked out by a bunch of geeks in downtown Seattle. The interesting thing about it is that with so many wireless users around the network is completely saturated, and I’m not just talking about the wireless – I think that the link to the backbone is flooded as well. Its taking me ages to download my e-mail and RSS feeds.

Its not the hotel’s fault though – they probably aren’t equipped to cope with this kind of load

Go and read it!

A little girl goes to his father and asks “Daddy, how was I born?” The father answers: “Well, daughter, I guess one day you will need to find out  anyway!   Your Mom and I first got together in a chat room on Yahoo.  Then I set up a date via e-mail with your Mom and we met at a cyber cafe.. We sneaked into a secluded room, where your mother agreed to a download from my hard drive. As soon as I was ready to upload, we discovered that neither one of us had used a firewall, and since it was too late to hit the delete button, nine months later a blessed little Pop-Up appeared and said:

You’ve Got Female!

I just got into Seattle this afternoon, checked into the hotel and then headed out to the “CodeSlam”. CodeSlam is an event that the GotDotNet team organised to show some MVPs some of the new stuff that they are doing. I can’t tell you anything about it – but its cool!

Not only will GotDotNet suck less, it won’t suck at all!

ExceptionCollection.com

September 24, 2005

This is an interesting idea [via Mark Treadwell]. Its an example of something that lots of people have to deal with from a support point of view and how it can be rolled up into a service.

Its just not on.

September 24, 2005

Well said Geoff. I made light of it in a comment on this post on Caroline’s blog, but its really not a good thing.

Bill McCarthy posted a link to this excellent article by Erik Meijer on Monoids and the theory behind some of the XLinq syntax. Great find Bill!

I recently posted up about implicitly typed local variables in C# 3.0, the next feature I want to look at is object and collection initializers, however, before I go any further I want to point out the reason why I am looking at all these low hanging features.

Basically the small features that get introduced into a language are actually enablers for the more complex ones – otherwise, why would you bother? implicityly typed local variables enable anonymous types in LINQ query syntax – object and collection initializers are the same.

Object initializers are a shortcut syntax for instansiating and configuring an object instance. Lets take the following piece of valid C# code today:

  1 Customer c = new Customer();
  2 c.FirstName = "Joe";
  3 c.LastName = "Bloggs";
  4 c.Address = new Address();
  5 c.Address.Line1 = "42 Wallaby Way";
  6 c.Address.City = "Sydney";
  7 c.Address.State = "NSW";
  8 c.Address.PostCode = "2000";

With object initializers you could express this code as:

  1 Customer c = new Customer()
  2 {
  3 	FirstName = "Joe",
  4 	LastName = "Bloggs",
  5 	Address = new Address()
  6 	{
  7 		Line1 = "42 Wallaby Way",
  8 		City = "Sydney",
  9 		State = "NSW",
 10 		PostCode = "2000"
 11 	}
 12 }

The interesting thing here is that this code actually takes more space – so is it clearer? Its probably too hard to tell from this example, lets look at collection initializers as well:

  1 Customer c = new Customer()
  2 {
  3 	FirstName = "Joe",
  4 	LastName = "Bloggs",
  5 	Addresses = {
  6 		new Address ()
  7 		{
  8 			Line1 = "42 Wallaby Way",
  9 			City = "Sydney",
 10 			State = "NSW",
 11 			PostCode = "2000"
 12 		},
 13 		new Address ()
 14 		{
 15 			Line1 = "10 Downing Street",
 16 			City = "London",
 17 			State = "England",
 18 			PostCode = "123-ABC"
 19 		}
 20 };

In the above example the definition (use your imagination) for the Customer class has an addresses property and we are using a collection initializer to add elements to it. Collection initializers allow us to declare the elements of a collection (array or list) in one logical statement. In the case of initialising an array inline (which we can already do), the syntax becomes more compact:

  1 string[] strings = { "One", "Two", "Three" };

If you apply the implicit typing of local variables then it can be shortened even further to:

  1 var strings = { "One", "Two", "Three" };

Lists aren’t really any different except you need to be explicit about the type of list you are instansiating (note it doesn’t need to be generic, it could be ArrayList):

  1 List<string> strings = new List<string> { "One", "Two", "Three" };

But even this could be shorter:

  1 var strings = new List<string> { "One", "Two", "Three" };

Finally, something that I thought was interesting is that the following is invalid:

  1 public class Foo
  2 {
  3 	public Foo Self;
  4 }
  5
  6 public class Program
  7 {
  8 	public static void Main()
  9 	{
 10 		Foo f = new Foo() { Self = f };
 11 	}
 12 }

The C# compiler will barf because “f” is unassigned. But I feel that by the time the object initializer is executed it is. Its just one of those corner cases where it could go either way, so in C# they have locked it off with a compiler error. Next up we will look at anonymous types.

Looks like Greg has posted up show #7 for SQL Down Under – this time with Roger Wolter discussing SQL Server Express. Probably an important show to watch if you are an ISV shipping a product that currently includes MSDE!

Worked from the park today.

September 21, 2005

I had to knuckle down and write a document today that required a fair bit of thought so I headed into the city instead of working from home (its too easy to find distractions at home sometimes). After spending a few hours in Starbucks (green tea before you ask) I decided that I needed a change of scenery so I headed outside.

My original plan was to set at some public tables and chairs in Civic but they were all being used so I went down to the park and found a picnic table to sit at. Here is a satellite image that I spent most of the day in.

I’m really starting to get into this whole mobile computing lifesytle. All I need now is another battery or two so that I can run the whole day of battery power and I need not visit a coffee shop at all . . .