Tuesday, March 28, 2006

Riya is now in public Beta. If you are the type of person that hates naming pictures or sets of pictures I suggest you sign up, download it and give it a try. Riya will take your pictures recognize the faces in them and tag them based on the faces it recognizes. The technology behind it is interesting.

I tried downloading the uploader tonight so I could try it out but it failed on the install, so I am hoping someone else will have better luck.Go here and give it a try and let me know how it goes.

Now playing: The Flaming Lips - Feeling Yourself Disintegrate

Tuesday, March 28, 2006 4:58:31 AM (GMT Standard Time, UTC+00:00)  #    Comments [0]  | 
Tuesday, March 21, 2006

If you have the old Atlas CTP installed and want to install the new CTP you will need to uninstall the old Atlas Template file. If you don't when you select File->New Website in Visual Studio 2005 it will look something like this:

To remove an old template file you need to go to your project template location and delete the template.

To find out where your project templates are stored go to Tools->Options->Projects and Solutions and click General. Your template files are located under the Visual Studio User Project Templates location.

Once you go to the templates location just delete the appropriate zip file and you can install the new Atlas CTP without messing up your My Templates screen.

Tuesday, March 21, 2006 3:04:44 AM (GMT Standard Time, UTC+00:00)  #    Comments [0]  | 
Monday, March 20, 2006
Sunday, March 19, 2006

It is a bit early but please visit http://edmontoncodecamp.com and take the survey if you would attend a code camp held in Edmonton in September 2006. Also please spread the word to any co-workers, friends, or family who you think would like to attend.

So far I have a couple of sponsors who are willing to contribute swag. Hopefully more will jump on board if I pester them constantly. If you do attend there should be a chance to win some free stuff and to learn a lot about code best of all it is free to attend.

If you don't know what a code camp is, read the code camp manifesto here.

Sunday, March 19, 2006 2:59:10 AM (GMT Standard Time, UTC+00:00)  #    Comments [0]  | 
Friday, March 17, 2006
Friday, March 17, 2006 4:26:23 PM (GMT Standard Time, UTC+00:00)  #    Comments [0]  | 
Thursday, March 16, 2006

Update: Engadget posted a zip file that contains the bootloader cd image and a how to on getting it going.

The contest to get Windows XP to dual boot on a Mac is now over. Apparently, someone with the alias “narf2006” and “blanka” wrote their own bootloader to allow Windows XP to boot up on the Mac. All I can picture is these 2 guys coding away *:

 

They now officially win $13,854 with the rest of the donations to the contest going towards the open source project that will build on the original solution.

My sister just bought a Mac so maybe I can try this out on her computer hehe.

* Yeah I know his name is Snarf.

Thursday, March 16, 2006 5:00:56 PM (GMT Standard Time, UTC+00:00)  #    Comments [0]  | 
Wednesday, March 15, 2006

Last night I attended John Bristowe’s presentation A Lap Around WinFX (proof here). John is a great presenter, if he comes to your city I would highly recommend seeing him speak, especially this talk. For some reason he draws a bigger crowd than I do when he speaks.

I was impressed with the WCF portion of his talk the most, I tinkered with WCF on the weekend and it was a lot of fun but make sure you download the February CTPs (there is a good round up of all the downloads you will need here).

After the meeting a bunch of the user group members went out to Earl’s with John. From talking with him I like his ideas on where he wants to take the Canadian development community and I want Edmonton to be a bigger part of the community than it already is.

Some good links to check out to see where things are going are in the Canadian developer scene:

The Plumbers @ Work Podcast

The Canadian Developers Blog

James Kovacs’ Blog

John Bristowe’s Blog

Dan Sellers’s Blog

Bil Simser’s Blog

Wednesday, March 15, 2006 7:52:16 PM (GMT Standard Time, UTC+00:00)  #    Comments [0]  | 
Saturday, March 11, 2006

These shoes are hilarious: http://www.dadafootwear.com/

From their webpage: ““How do we compete with the excitement that electronic companies bring to the market today?  The Code M System from Dada brings excitement to the athletic footwear industry!”

Imagine a life where Allen Iverson runs down the court and you pick up his personal shoe music feed. Or not.

Now playing: The New Pornographers - The Jessica Numbers

Fun
Saturday, March 11, 2006 11:12:06 PM (GMT Standard Time, UTC+00:00)  #    Comments [0]  | 
Tuesday, March 07, 2006

My sister just sent me this picture she took of Paul Allen’s yacht. You get an idea about how big the yacht is because it is docked next to the cruise ship she works on:

 

Fun
Tuesday, March 07, 2006 3:13:01 PM (GMT Standard Time, UTC+00:00)  #    Comments [2]  | 
Thursday, March 02, 2006
I just found out today that our estimated condo date has been delayed until June or July and it couldn’t make me any happier!
Thursday, March 02, 2006 6:26:56 PM (GMT Standard Time, UTC+00:00)  #    Comments [3]  | 

I just found this http://preview.local.live.com/ via Omar Shahine’s blog. It would be awesome if we could do something like this on my team where I work.

I recommend switching your view to “walk” for a smoother experience.

Now playing: U2 - City of Blinding Lights

Fun
Thursday, March 02, 2006 4:43:33 AM (GMT Standard Time, UTC+00:00)  #    Comments [0]  | 

I have decided to try to get a free laptop from freelaptops.com. If anyone out there would like to help the cause with the promise of better technical posts on my end.

Please sign up and complete an offer here: http://laptops.freepay.com/?r=28039079

 

Now playing: U2 - New Year's Day (Live at Foro Autodromo, Mexico City, 3 Dec '97)

Thursday, March 02, 2006 3:30:24 AM (GMT Standard Time, UTC+00:00)  #    Comments [0]  | 

This is a follow up from my presentation to the .NET Wizards user group for people who may not have been able to make it out. If you read this and have any questions, feel free to email me or leave a comment in the comment section and I will get back to you.

Generics can be confusing, but not if you picture them the right way and know the purpose of their existence.

Back in the days of .NET 1.1 if you wanted an object oriented framework sooner or later you would need a collection. A collection’s purpose is usually to hold a bunch of associated objects. So you would get a collection filled with intergers, strings or business objects. An example of a collection that can hold Employee objects looks like this:

    1 using System;

    2 using System.Collections;

    3 

    4 namespace GenericsDemoCS

    5 {

    6     public class EmployeeCollection : CollectionBase

    7     {

    8         public Employee this[int index]

    9         {

   10             get

   11             {

   12                 return (Employee)List[index];

   13             }

   14             set

   15             {

   16                 List[index] = value;

   17             }

   18         }

   19 

   20         public int Add(Employee value)

   21         {

   22             return (List.Add(value));

   23         }

   24 

   25         public int IndexOf(Employee value)

   26         {

   27             return (List.IndexOf(value));

   28         }

   29 

   30         public void Insert(int index, Employee value)

   31         {

   32             List.Insert(index, value);

   33         }

   34 

   35         public void Remove (Employee value)

   36         {

   37             List.Remove(value);

   38         }

   39 

   40         public bool Contains(Employee value)

   41         {

   42             return (List.Contains(value));

   43         }

   44     }

   45 }

As you can see, all of the methods in the collection take in a Employee object. It is really just a list of Employee objects. There is one main problem with this approach:

Only Employee objects can use this list. For each new objet you have to create a new list.

To solve this problem in the .NET 1.1 Framework you could create a list that is of the deault type of object like this:

    1 using System;

    2 using System.Collections;

    3 

    4 namespace GenericsDemoCS

    5 {

    6     public class ObjectCollection : CollectionBase

    7     {

    8         public Object this[int index]

    9         {

   10             get

   11             {

   12                 return List[index];

   13             }

   14             set

   15             {

   16                 List[index] = value;

   17             }

   18         }

   19 

   20         public int Add(Object value)

   21         {

   22             return (List.Add(value));

   23         }

   24 

   25         public int IndexOf(Object value)

   26         {

   27             return (List.IndexOf(value));

   28         }

   29 

   30         public void Insert(int index, Object value)

   31         {

   32             List.Insert(index, value);

   33         }

   34 

   35         public void Remove(Object value)

   36         {

   37             List.Remove(value);

   38         }

   39 

   40         public bool Contains(Object value)

   41         {

   42             return (List.Contains(value));

   43         }

   44     }

   45 }

This collection can hold a lot of different types, however anyone can put anything in it. It is essentially this:

Thats right, it is a bucket. It can hold anything you or anyone else wants to put in it. You may think it is holding all of your integer objects when really it is holding this:

So if you want type safe collections, you have to create tons of collections that can only hold specific types and you end up with this by the end of it all:

Keep in mind that one of those buckets can only hold integers, one can only hold strings and one can only hold Employee objects. What I am trying to get at here is that you have a lot of similar code that isn’t very reusable.

Generics to the Rescue

Along comes the .NET 2.0 Framework and Generics. Generics solve the above problems very elegantly. Generics solve “the bucket problem” with a structure like this:

It is the same collection as before but this time you have type safety. Think of each shape on the childs toy as a specific type like an integer, a string or an Employee object. If at the time you specify your list you say you want your list to hold integers it can only hold integers, so only the integer hole in the childs toy would remain.

Here is the same list as the object list above except this time it takes advantage of Generics:

    1 using System;

    2 using System.Collections;

    3 using System.Text;

    4 

    5 namespace GenericsDemoCS

    6 {

    7     class GenericCollection : System.Collections.CollectionBase

    8     {      

    9 

   10         public ItemType this[int index]

   11         {

   12             get

   13             {

   14                 return (ItemType)List[index];

   15             }

   16             set

   17             {

   18                 List[index] = value;

   19             }

   20         }

   21 

   22         public int Add(ItemType value)

   23         {

   24             return (List.Add(value));

   25         }

   26 

   27         public int IndexOf(ItemType value)

   28         {

   29             return (List.IndexOf(value));

   30         }

   31 

   32         public void Insert(int index, ItemType value)

   33         {

   34             List.Insert(index, value);

   35         }

   36 

   37         public void Remove(ItemType value)

   38         {

   39             List.Remove(value);

   40         }

   41 

   42         public bool Contains(ItemType value)

   43         {

   44             return (List.Contains(value));

   45         }

   46     }

   47 }

Notice the “ItemType” this is a placeholder and can be anything you want to call it. The difference between this class and the other collection classes is that when you declare the list like in the code below, the list can only hold that type that you have specified (the list below can only hold strings).

GenericCollection<string> genericList = new GenericCollection<string>();

genericList.Add("steve");

Thursday, March 02, 2006 3:27:36 AM (GMT Standard Time, UTC+00:00)  #    Comments [0]  | 
Wednesday, March 01, 2006

Found this via Digg :

Fill out the form and get a free USB Drive from Microsoft here: http://www.microsoft.com/windowsxp/mysterysolved/corp/default.mspx

The answers to the questions are 2, True, True, True.

Go now before they run out!

Wednesday, March 01, 2006 5:04:46 PM (GMT Standard Time, UTC+00:00)  #    Comments [0]  | 

Theme design by Jelle Druyts

Pick a theme: