Nothing but .net

The road to the keynote

Last week, Microsoft organized the Belgian edition of the Techdays, for the first time in Antwerp. After reading (Twitter, blogs…) and hearing quite a lot of feedback, the event was a success.

For me personally, it was also an exciting week: for the first time in my career, I was doing a keynote. I presented the Silverlight part of this talk, together with 2 other Regional Directors from Belgium: Peter Himschoot took the WPF part and Grégory Renard handled the Surface. Also, Katrien De Graeve (Microsoft) showed Windows 7 and Azure, while Hans Verbeeck (also Microsoft) glued all bits and pieces into a nice session.

In this article, you’ll get an overview of the demo we created for the keynote, called “Silverlight on the bike”.

silverlightonthebike1

The scenario

Hans, when not behind his laptop, loves to ride his bike. While on his bike, he wears a small device from Garmin that monitors his heart rate and also retrieves the entire route that he followed via GPS. When combining these 2 bits of information, you can see where the heartbeat went higher (because of a slope for example).

Garmin must like developers, because they expose this data as XML. Pure clean XML that any developer can read out. This data was the start for our scenario: plot out the route that Hans did on his bike on a map, show the heartbeat on a graph, throw in some pictures he took along the road and expose all this in a familiar looking interface in the browser.

The demo also needed to run as a standalone application as well as on the surface. Because of the portability of the code between Silverlight and WPF (Surface applications are WPF as well), a large amount of code could simply be copied from one platform to another.

And here’s how we created it…

While the demo contains too much code to explain here, I’ll go over some of the most interesting parts that really make Silverlight shine.

Step 1: Design is everything (sort of…)

The first thing we did was going to a designer and explain him the needs of our application. A request from our side was of course that he needed to create the interface in Blend. So he came up with a design, completely in XAML, as shown below.

silverlightonthebike2

A cool thing when working with Silverlight is a nice workflow between designers working in Blend and developers working in Visual Studio. Since designers work with the same files as developers, there’s no need to cut and paste the work that the designer did: he can make changes while developers are creating their code and these changes will be incorporated without any hassle.

Step 2: Get me that data

Design is one thing, coding is another. Our application is built around data (remember the XML file from the Garmin device), so the first problem that needs solving is getting that data into the application. Silverlight 2 supports several ways to connect with data: WCF, webservices, reading remote files… For the sake of simplicity, we are going to use the latter: we’ll drop the XML file in the web application. Silverlight now needs to connect with the file using the WebClient, a class that’s also available in the full version of the .NET framework.

Whenever Silverlight needs to go out fetching data, it will do so asynchronously. If it would perform this action synchronously, the browser would hang while data flows from server to client or vice-versa.

Codesnippet 1 shows the code needed for the data access and the result is shown.

   1: WebClient client = new WebClient();
   2:             Uri address = new Uri("http://localhost:" + HtmlPage.Document.DocumentUri.Port + "/" + fileName, UriKind.Absolute);
   3:             client.OpenReadCompleted += client_OpenReadCompleted;
   4:             client.OpenReadAsync(address);

CodeSnippet 1

silverlightonthebike3

Step 3: Let’s parse XML (still yuck?)

Now that we are able to connect with the data, we need to do something with it, we only have it in a string at this point. We need to parse the XML and create objects that represent the data in memory. Parsing XML using the “traditional” way, using XmlDocument classes and the like, is not my favorite part of my development life. This API is quite difficult and often requires XPath knowledge to access the correct data.

Since .NET 3.5 (in fact also in 3.0 as beta), LINQ and LINQ to XML were introduced and the great thing is that these are also included in Silverlight. Using the LINQ to XML API, we can very easily parse the XML and create objects representing the data. Codesnippet 2 shows the XML, codesnippet 3 shows the type that we’ll be creating. In Codesnippet 4, the code to parse the XML and to create a generic list of TrackPoint instances is shown.

   1: <Trackpoint>
   2:             <Time>2009-02-14T14:13:10Z</Time>
   3:             <Position>
   4:               <LatitudeDegrees>51.3509752</LatitudeDegrees>
   5:               <LongitudeDegrees>4.6816549</LongitudeDegrees>
   6:             </Position>
   7:             <AltitudeMeters>20.3249512</AltitudeMeters>
   8:             <DistanceMeters>0.0343911</DistanceMeters>
   9:             <HeartRateBpm >
  10:               <Value>111</Value>
  11:             </HeartRateBpm>
  12:             <SensorState>Absent</SensorState>
  13:           </Trackpoint>
  14:           <Trackpoint>
  15:             <Time>2009-02-14T14:13:11Z</Time>
  16:             <Position>
  17:               <LatitudeDegrees>51.3509765</LatitudeDegrees>
  18:               <LongitudeDegrees>4.6816523</LongitudeDegrees>
  19:             </Position>
  20:             <AltitudeMeters>20.3249512</AltitudeMeters>
  21:             <DistanceMeters>0.0000000</DistanceMeters>
  22:             <HeartRateBpm >
  23:               <Value>110</Value>
  24:             </HeartRateBpm>
  25:             <SensorState>Absent</SensorState>
  26:           </Trackpoint>
  27:           <Trackpoint>

Codesnippet 2

   1: public class TrackPoint
   2:     {
   3:  
   4:         private DateTime _time;
   5:  
   6:         public DateTime Time
   7:         {
   8:             get { return _time; }
   9:             set { _time = value; }
  10:         }
  11:  
  12:         private Point _position;
  13:  
  14:         public Point Position
  15:         {
  16:             get { return _position; }
  17:             set { _position = value; }
  18:         }
  19:  
  20:  
  21:         public double X
  22:         {
  23:             get { return _position.X; }
  24:             set { _position.X = value; }
  25:         }
  26:  
  27:         public double Y
  28:         {
  29:             get { return _position.Y; }
  30:             set { _position.Y = value; }
  31:         }
  32:  
  33:         private int _cadence;
  34:  
  35:         public int Cadence
  36:         {
  37:             get { return _cadence; }
  38:             set { _cadence = value; }
  39:         }
  40:  
  41:         private double _distance;
  42:  
  43:         public double Distance
  44:         {
  45:             get { return _distance; }
  46:             set { _distance = value; }
  47:         }
  48:     } 

Codesnippet 3

   1: public List<TrackPoint> Load(Stream filename)
   2:         {
   3:             XElement doc = XElement.Load(filename);
   4:             List<XElement> tps = doc.Descendants("Trackpoint").ToList<XElement>();
   5:  
   6:             TrackPoint tp = null;
   7:  
   8:             foreach (XElement point in tps)
   9:             {
  10:                 try
  11:                 {
  12:                     tp = new TrackPoint();
  13:                     tp.Position = new Point(double.Parse(point.Descendants("LatitudeDegrees").First().Value) / 10000000,
  14:                                                          double.Parse(point.Descendants("LongitudeDegrees").First().Value) / 10000000);
  15:                     tp.Distance = double.Parse(point.Descendants("DistanceMeters").First().Value) / 10000000;
  16:  
  17:                     if (tp.Distance > _totalDistance)
  18:                         _totalDistance = tp.Distance;
  19:  
  20:                     tp.Cadence = int.Parse(point.Descendants("HeartRateBpm").First().Value);
  21:  
  22:                     _trackPoints.Add(tp);
  23:                 }
  24:                 catch (Exception)
  25:                 {
  26:                         
  27:                    
  28:                 }
  29:             }
  30:             return _trackPoints;
  31:         }

Codesnippet 4

Step 4: Design: OK! Data: OK! UI: To Do!

Now we have the data from the device ready on the client-side within our Silverlight application as a generic list. We can now go ahead and add the UI elements to the interface.

Up first is a ribbon. We want to create a user interface that feels familiar to a user of the application. A great way to achieve this, is using a ribbon known from Office 2007. Currently, Silverlight does not contain a ribbon out-of-the-box yet, but there are some custom-built ones available. For the sake of simplicity, I created a usercontrol containing the ribbon instantiation. This keeps my Page.xaml code cleaner. Codesnippet 5 contains the code for the ribbon and codesnippet 6 contains the usercontrol that we’ll put on the page.

   1: <rbn:Ribbon.QuickLaunchButtons>
   2:                 <rbn:RibbonButton SmallImageSource="Images/Save.png" />
   3:                 <rbn:RibbonButton SmallImageSource="Images/Undo.png"  />
   4:                 <rbn:RibbonButton SmallImageSource="Images/Repeat.png" />
   5:             </rbn:Ribbon.QuickLaunchButtons>
   6:  
   7:             <!-- Tabs -->
   8:  
   9:             <!-- Home -->
  10:             <rbn:RibbonTab Title="Home">
  11:                 <rbn:RibbonTabGroup Title="Actions">
  12:                     <rbn:RibbonButton Text="New data" LargeImageSource="Images/addxml.png" />
  13:                     <rbn:RibbonButton Text="Change data" LargeImageSource="Images/addxml.png" ButtonClick="RibbonButton_ButtonClick" />
  14:                     <rbn:RibbonButton Text="Images" LargeImageSource="Images/addimages.png" />
  15:                 </rbn:RibbonTabGroup>
  16:                 
  17:                 <rbn:RibbonTabGroup Title="Reporting">
  18:                     <rbn:RibbonButton Text="New report" LargeImageSource="Images/addreport.png" />
  19:                     <rbn:RibbonButton Text="View reports" LargeImageSource="Images/addreport.png" />
  20:                 </rbn:RibbonTabGroup>
  21:             </rbn:RibbonTab>
  22:  
  23:             <!-- Help -->
  24:             <rbn:RibbonTab Title="Help">
  25:                 <rbn:RibbonTabGroup Title="Help">
  26:                     <rbn:RibbonButton Text="About" LargeImageSource="Images/about.png" />
  27:                     <rbn:RibbonButton Text="Help" LargeImageSource="Images/help2.png" />
  28:                 </rbn:RibbonTabGroup>
  29:  
  30:             </rbn:RibbonTab>
  31:  
  32:         </rbn:Ribbon>

Codesnippet 5

   1: <!-- Ribbon -->
   2:             <usercontrols:RibbonControl Grid.Row="0" Grid.Column="0" 
   3:                           x:Name="mainRibbon" VerticalAlignment="Top"></usercontrols:RibbonControl>

Codesnippet 6

silverlightonthebike4

Next, we’ll add a Telerik Coverflow control that will enable us to flip through the images. Telerik as well as Infragistics (and many other vendors) have been busy creating controls suites, giving you many more controls to work with. Codesnippet 7 shows the code for this control.

   1: <telerikNavigation:RadCoverFlow x:Name="coverFlow" CameraY="-80" ItemMaxHeight="100" 
   2:                                             SelectedIndex="5"  VerticalAlignment="Top" CenterOffsetY="15">
   3:                                     <Image Source="Pictures/1.jpg" />
   4:                                     <Image Source="Pictures/2.jpg" />
   5:                                     <Image Source="Pictures/3.jpg" />
   6:                                     <Image Source="Pictures/4.jpg" />
   7:                                     <Image Source="Pictures/5.jpg" />
   8:                                 </telerikNavigation:RadCoverFlow>

silverlightonthebike5

One of the main goals of the application is of course the display of the map that will also display the route that Hans did on his bike. A perfect candidate for this is Virtual Earth. On Codeplex, a project called DeepEarth, allows us to display Virtual Earth maps inside a Silverlight application. It also includes all the necessary stuff to show paths, icons etc and allows for easy zooming and panning. We’ll use this control to display the route.

Of course, we need to convert our data for the map to use. This is very simple code shown in codesnippet 8. What we’re doing here is simply converting our generic list of Trackpoints to a list of points the DeepEarth control can work with. Codesnippet 9 shows the code for displaying the map.

   1: private void AddPolygon()
   2:         {
   3:             ConfigShapeLayer();
   4:             var points = new List<Point> { new Point(0, 0), new Point(20, 0), new Point(20, 20), new Point(0, 20) };
   5:             var polygon = new DeepEarth.Geometry.Polygon { Points = points };
   6:             shapeLayer.Add(polygon);
   7:         }

Codesnippet 8

   1: <DeepEarth:Map x:Name="map" >
   2:                                     <DeepControls:NavControl>
   3:                                         <DeepControls:MapSourceControl SelectedSource="Hybrid">
   4:                                             <DeepVE:TileLayer MapMode="Aerial" />
   5:                                             <DeepVE:TileLayer MapMode="Hybrid"/>
   6:                                             <DeepVE:TileLayer MapMode="Road" />
   7:                                         </DeepControls:MapSourceControl>
   8:                                     </DeepControls:NavControl>
   9:                                     <DeepControls:CoordControl/>
  10:                                 </DeepEarth:Map>
Codesnippet 9

Finally, we need to display the heartbeat, also based on the data in the generic list. We can do this in several ways (for example using the controls from the Silverlight toolkit), but here, I choose to use a listbox. Displaying a heartbeat in a listbox might not sound that normal, as we are used to having the listbox show a list of text items. However, using Silverlight, we can completely restyle the listbox using the data template (Codesnippet 10). The data template allows for complete restyling of the items as well as the listbox’ display area. The item is replaced with an ellipse, absolutely positioned from the top and the display area is replaced with a drawing canvas. (To see the entire code, download the sample). The result is shown below.

silverlightonthebike6

   1: <DataTemplate>
   2:                                         <Canvas Canvas.Left="10" Canvas.Top="10">
   3:                                             <Ellipse Fill="Blue"
   4:                                          Tag="{Binding}"
   5:                                          Width="10"
   6:                                          Height="10"
   7:                                          Stroke="Black"
   8:                                          StrokeThickness=".5"
   9:                                          MouseLeftButtonDown="Ellipse_MouseLeftButtonDown"
  10:                                          MouseEnter="Ellipse_MouseEnter"
  11:                                          MouseLeave="Ellipse_MouseLeave"
  12:                                          >
  13:                                             </Ellipse>
  14:                                         </Canvas>
  15:                                     </DataTemplate>

Codesnippet 10

The final application

The following image shows the complete application running in the browser. You can download the entire source package by clicking here (Note that I left in all the source code for the other projects like DeepEarth. This way it’s easier for you to experiment with the demo).

silverlightonthebike7

(Due to the Virtual Earth webservice being down, the map is not displaying, as can be seen on the screenshot)

Download the code here.


Posted on Friday, 20 March 2009 18:11 by gill  |  Comments (100)
Filed under:   Silverlight

Related posts

Comments

July 30. 2009 03:40

Christian Dating

I really appreciate the kind of topics you post here. Thanks for sharing us a great information that is actually helpful. Good day!

Christian Dating

September 7. 2009 09:33

Emanuel

Thanks for this awesome article! It was very helpful for me! Keep on posting!

Regards,
online community classifieds http://informationex.com

Emanuel

September 8. 2009 06:58

psd to css xhtml

Thanks for this post, I have searching this kind of information for how many times, this is really great... hope that you will continue sharing for your knowledge, I'll be back again to read some of your post...

psd to css xhtml

September 25. 2009 01:28

free job post

hello, this is my first time i visit here. I found so many interesting in your blog especially on how to determine the topic. keep up the good work. ads online http://informationex.com

free job post

September 29. 2009 03:00

tiffany jewelry

i like

tiffany jewelry

October 8. 2009 04:45

Surplus Salvage Merchandise

The post was great..I enjoyed it a lot! Smile

Surplus Salvage Merchandise

October 21. 2009 04:43

how to beat a drug test

I posted your article to my myspace profile.


Regards

Nili

how to beat a drug test

October 23. 2009 05:25

Legal Translations

I bookmarked your post will read this latter


Regards

Martinez

Legal Translations

October 29. 2009 15:35

payday loans

I like what I see. keep it going

payday loans

November 3. 2009 07:11

personal loans

Just try to smile for about 2-3 mins then you can get back to work

personal loans

November 3. 2009 18:25

easy personal loans

I just hope to have understood this the way it was meant

easy personal loans

November 5. 2009 12:47

punk rock

very interesting post

punk rock

November 9. 2009 08:53

Green Tea

I was very pleased to find this site.I wanted to thank you for this great read!! I definitely enjoying every little bit of it and I have you bookmarked to check out new stuff you post.

Green Tea

November 9. 2009 10:31

Stress Reduction Holiday Gifts

Couldn?t be written any better. Reading this post reminds me of my old room mate! He always kept talking about this. I will forward this article to him. Pretty sure he will have a good read. Thanks for sharing!

Stress Reduction Holiday Gifts

November 10. 2009 11:15

make perpetual motion machine

This article gives the light in which we can observe the reality. this is very nice one and gives indepth information. thanks for this nice article

make perpetual motion machine

November 10. 2009 23:23

how to pass a drug test

Couldn?t be written any better. Reading this post reminds me of my old room mate! He always kept talking about this. I will forward this article to him. Pretty sure he will have a good read. Thanks for sharing!

how to pass a drug test

November 12. 2009 06:48

shingles symptoms

Excellent read, I just passed this onto a colleague who was doing a little research on that. And he actually bought me lunch because I found it for him smile So let me rephrase that: Thanks for lunch!

shingles symptoms

November 12. 2009 06:57

Early symptoms of diabetes

I was looking for crucial information on this subject. The information was important as I am about to launch my own portal. Thanks for providing a missing link in my business.

Early symptoms of diabetes

November 12. 2009 17:44

faxless payday loans

I guess there's always an easier way ...

faxless payday loans

November 13. 2009 15:23

cash loans

Thank you for your help!

cash loans

November 14. 2009 07:31

Lyrics

Hey - nice blog, just looking around some blogs, seems a pretty nice platform you are using. I'm currently using Wordpress for a few of my sites but looking to change one of them over to a platform similar to yours as a trial run. Anything in particular you would recommend about it?

Lyrics

November 14. 2009 08:00

Music Lyrics

I admit, I have not been on this webpage in a long time... however it was another joy to see It is such an important topic and ignored by so many, even professionals. I thank you to help making people more aware of possible issues.
Great stuff as usual...

Music Lyrics

November 14. 2009 19:59

meta secret

You really make it seem so easy with your presentation but I find this topic to be really something which I think I would never understand. It seems too complicated and very broad for me. I am looking forward for your next post, I will try to get the hang of it!

meta secret

November 15. 2009 08:20

diverticulitis symptoms

Thanks for taking the time to discuss this, I feel strongly about it and love learning more on this topic. If possible, as you gain expertise, would you mind updating your blog with more information? It is extremely helpful for me.

diverticulitis symptoms

November 16. 2009 00:24

fast payday loans

Interesting ... as always - is your blog making any cash advance ? ;)

fast payday loans

November 16. 2009 08:00

szerencsejatek

Nice information, many thanks to the author. It is incomprehensible to me now, but in general, the usefulness and significance is overwhelming. Thanks again and good luck!

szerencsejatek

November 16. 2009 08:08

roulette systems

Me and my friend were arguing about an issue similar to this! Now I know that I was right. lol! Thanks for the information you post.

roulette systems

November 17. 2009 01:30

payday loans

Nice resource. rss feed added

payday loans

November 17. 2009 09:46

healthy foods

Aw, this was a really quality post. In theory I'd like to write like this too - taking time and real effort to make a good article... but what can I say... I procrastinate alot and never seem to get something done.

healthy foods

November 17. 2009 11:16

jewellery courses

When I originally commented I clicked the "Notify me when new comments are added" checkbox and now each time a comment is added I get four emails with the same comment.
Is there any way you can remove me from that service?
Thanks!

jewellery courses

November 17. 2009 12:05

healthy foods

Excellent read, I just passed this onto a colleague who was doing a little research on that. And he actually bought me lunch because I found it for him smile So let me rephrase that: Thanks for lunch!

healthy foods

November 18. 2009 07:50

Easy Diet

Have you ever considered adding more videos to your blog posts to keep the readers more entertained? I mean I just read through the entire article of yours and it was quite good but since I'm more of a visual learner,I found that to be more helpful well let me know how it turns out! I love what you guys are always up too. Such clever work and reporting! Keep up the great works guys I've added you guys to my blogroll. This is a great article thanks for sharing this informative information.. I will visit your blog regularly for some latest post.

Easy Diet

November 18. 2009 10:14

Forex

Do you accept guest posts? I would love to write couple articles here.
I was wondering what is up with that weird gravatar??? I know 5am is early and I'm not looking my best at that hour, but I hope I don't look like this! I might however make that face if I'm asked to do 100 pushups. lol

Forex

November 18. 2009 13:18

shock collars for dogs

Great reading, thouroughly enjoyed. thanks

shock collars for dogs

November 18. 2009 16:38

Linda Mirano

I admire the valuable information you offer in your articles. I will bookmark your blog and have my children check up here often. I am quite sure they will learn lots of new stuff here than anybody else!

Linda Mirano

November 20. 2009 11:16

Divorce Tips

You really make it seem so easy with your presentation but I find this topic to be really something which I think I would never understand. It seems too complicated and very broad for me. I am looking forward for your next post, I will try to get the hang of it!

Divorce Tips

November 20. 2009 12:42

brian

thanks a lot man

brian

November 20. 2009 14:04

homemade colon cleanse

Have you ever considered adding more videos to your blog posts to keep the readers more entertained? I mean I just read through the entire article of yours and it was quite good but since I'm more of a visual learner,I found that to be more helpful well let me know how it turns out! I love what you guys are always up too. Such clever work and reporting! Keep up the great works guys I've added you guys to my blogroll. This is a great article thanks for sharing this informative information.. I will visit your blog regularly for some latest post.

homemade colon cleanse

November 20. 2009 19:43

Canada Travel

Hrmm that was weird, my comment got eaten. Anyway I wanted to say that it's nice to know that someone else also mentioned this as I had trouble finding the same info elsewhere. This was the first place that told me the answer. Thanks.

Canada Travel

November 21. 2009 14:27

how to get rid of hemorrhoids

This is my first time i visit here. I found so many interesting stuff in your blog especially its discussion. From the tons of comments on your articles, I guess I am not the only one having all the enjoyment here! keep up the good work.

how to get rid of hemorrhoids

November 21. 2009 18:40

external hemorrhoid treatment

Admiring the time and effort you put into your blog and detailed information you offer! I will bookmark your blog and have my children check up here often. Thumbs up!

external hemorrhoid treatment

November 22. 2009 13:35

cash loans

thanks! very helpful post!! like the template btw ;)

cash loans

November 22. 2009 20:17

Ottawa Personal and corporate services

Maybe it wasn't easy to manage 2 blogs at the same time, but updating this blog of yours would be highly appreciated as others like me is waiting to hear new things from you.Wink

Ottawa Personal and corporate services

November 22. 2009 22:06

Singlesnet

Very Good post I have now subscribed to this blog

thanks

Singlesnet

November 23. 2009 11:32

Mens Rings

I wanted to thank you for this great read!! I definitely enjoying every little bit of it I have you bookmarked to check out new stuff you post

Mens Rings

November 23. 2009 20:35

Westchester County Public Records

I don't have a bunch to to say in reply, I only wanted to register to say well done. It seems like you have really put a ton of effort into your web post and I need much more of these on the net these days. I actually enjoyed your post.

Westchester County Public Records

November 24. 2009 09:50

payday loans

Just try to smile for about 2-3 mins then you can get back to work

payday loans

November 25. 2009 10:50

CURTAINS AND WINDOW TREATMENTS

I was very pleased to find this site.I wanted to thank you for this great read!! I definitely enjoying every little bit of it and I have you bookmarked to check out new stuff you post.

CURTAINS AND WINDOW TREATMENTS

November 25. 2009 11:58

Window Cleaning in Houston

I completely agree with the above comment, the internet is with a doubt growing into the most important medium of communication across the globe and its due to sites like this that ideas are spreading so quickly.

Window Cleaning in Houston

November 27. 2009 23:15

Dawson car title loans

I admire the valuable information you offer in your articles. I will bookmark your blog and have my children check up here often. I am quite sure they will learn lots of new stuff here than anybody else!

Dawson car title loans

November 28. 2009 14:16

Trade Leads

Thanks for taking the time to discuss this, I feel strongly about it and love learning more on this topic. If possible, as you gain expertise, would you mind updating your blog with more information? It is extremely helpful for me.

Trade Leads

November 28. 2009 16:38

Christmas Tips

When I originally commented I clicked the "Notify me when new comments are added" checkbox and now each time a comment is added I get four emails with the same comment.
Is there any way you can remove me from that service?
Thanks!

Christmas Tips

November 29. 2009 13:27

bukmacher

nice and once more nice,help alot,thanks

bukmacher

November 29. 2009 22:15

how to get rid of a yeast infection today

Just wanted to give you a shout from the valley of the sun, great information. Much appreciated.

how to get rid of a yeast infection today

November 30. 2009 14:39

bookshelf stereo speakers

Aw, this was a really quality post. In theory I'd like to write like this too - taking time and real effort to make a good article... but what can I say... I procrastinate alot and never seem to get something done.

bookshelf stereo speakers

December 2. 2009 11:39

Rakeback

Hey - nice blog, just looking around some blogs, seems a pretty nice platform you are using. I'm currently using Wordpress for a few of my sites but looking to change one of them over to a platform similar to yours as a trial run. Anything in particular you would recommend about it?

Rakeback

December 2. 2009 12:13

carnival cruise discount

That is some inspirational stuff. Never knew that opinions could be this varied. Thanks for all the enthusiasm to offer such helpful information here.

carnival cruise discount

December 2. 2009 21:32

blues guitar riffs

Well, this is my first visit to your blog! We are a group of volunteers and starting a new initiative in a community in the same niche. Your blog provided us valuable information to work on. You have done a marvellous job!

blues guitar riffs

December 3. 2009 12:24

House cleaning

Really nice piece of work...must appreciate..i have seen many sites and blogs but never this tyoe of work before thanks for sharing...

House cleaning

December 4. 2009 09:37

Cheap Rowing Machine

Howdy, i read your blog occasionally and i own a similar one and i was just wondering if you get a lot of spam comments? If so how do you prevent it, any plugin or anything you can advise? I get so much lately it's driving me mad so any assistance is very much appreciated.

Cheap Rowing Machine

December 4. 2009 11:21

Best Air Purifiers

I completely agree with the above comment, the internet is with a doubt growing into the most important medium of communication across the globe and its due to sites like this that ideas are spreading so quickly.

Best Air Purifiers

December 5. 2009 04:30

psd to html

The topic which you chosen for discussion is really very good....Thanks.

psd to html

December 6. 2009 13:56

debt consolidation loans

This article gives the light in which we can observe the reality. this is very nice one and gives indepth information. thanks for this nice article

debt consolidation loans

December 6. 2009 17:59

cash advance

You really make it seem so easy with your presentation but I find this topic to be really something which I think I would never understand. It seems too complicated and very broad for me. I am looking forward for your next post, I will try to get the hang of it!

cash advance

December 7. 2009 12:11

seoul girls

nice template and great article.thanks this is great information

seoul girls

December 7. 2009 19:23

cash today

Do you have any more info on this? or maybe point me into the right direction ?

cash today

December 7. 2009 23:05

lawsuit loan

I was looking for crucial information on this subject. The information was important as I am about to launch my own portal. Thanks for providing a missing link in my business.

lawsuit loan

December 8. 2009 00:33

Women Ed Hardy Shoes

Thanks for your information, i have read it, very good!

Women Ed Hardy Shoes

December 8. 2009 10:14

garmin nuvi 250

Just wanted to give you a shout from the valley of the sun, great information. Much appreciated.

garmin nuvi 250

December 8. 2009 13:39

genealogy

I admire what you have done here. I like the part where you say you are doing this to give back but I would assume by all the comments that this is working for you as well.

genealogy

December 8. 2009 13:40

Discontinued Coach Bags

Me and my friend were arguing about an issue similar to this! Now I know that I was right. lol! Thanks for the information you post.

Discontinued Coach Bags

December 10. 2009 00:25

Abercrombie & Fitch

Just wanted to give you a shout from the valley of the sun, great information. Much appreciated

Abercrombie & Fitch

December 11. 2009 02:56

Tiffany

Exquisite design, superior material, <a href="http://www.mytiffanyonline.com/" title="Tiffany">Tiffany</a> exquisite craft. Close to her heart, the most perfect expression of your love


Tiffany

December 11. 2009 14:39

portable ceramic heaters

Thank you for the sensible critique. Me & my neighbour were preparing to do some research about that. We got a good book on that matter from our local library and most books where not as influensive as your information. I am very glad to see such information which I was searching for a long time.This made very glad Smile

portable ceramic heaters

December 13. 2009 13:48

improving landing page conversion rates

Well, this is my first visit to your blog! We are a group of volunteers and starting a new initiative in a community in the same niche. Your blog provided us valuable information to work on. You have done a marvellous job!

improving landing page conversion rates

December 14. 2009 14:40

Britt Borden MD

Thank you for another great article. Where else could anyone get that kind of information in such a perfect way of writing? I have a presentation next week, and I am on the look for such information.

Britt Borden MD

December 15. 2009 03:48

Zone Diet  

Hi,

It is advisable to the "Multy Level Marketing" business? What is the success ratio in this business?

Zone Diet  

December 15. 2009 06:39

hemorrhoids treatment

I found so many interesting stuff in your blog especially its discussion. From the tons of comments on your articles, I guess I am not the only one having all the enjoyment here! keep up the good work.

hemorrhoids treatment

December 15. 2009 06:46

orthopaedic

I have searching this kind of information for how many times, this is really great... hope that you will continue sharing for your knowledge, I'll be back again to read some of your post...

orthopaedic

December 16. 2009 01:00

Application Security

Thanks for sharing this Nice Article..

Application Security

December 16. 2009 01:29

online dating

This blog Is very informative , I am really pleased to post my comment on this blog . It helped me with ocean of knowledge so I really believe you will do much better in the future.

online dating

December 16. 2009 02:25

online poker

Good post....thanks for sharing.. very useful for me i will bookmark this for my future needed. thanks for a great source.

online poker

December 17. 2009 00:05

abercrombie and fitch

Yea nice Work !

abercrombie and fitch

December 18. 2009 15:48

fix bsod error

<P>this actually aids, today i receive the problems and i donot know how to puzzle out,
i research bing and found your blog,
thanks once again</P><P>just one thing, may i post this article on my site? i will add the source and credit to your site.</P><P>regards!</P>

fix bsod error

December 18. 2009 22:32

Bread and Butter Pudding Recipes

Valuable information and excellent design you got here! I would like to thank you for sharing your thoughts and time into the stuff you post!! Thumbs up

Bread and Butter Pudding Recipes

December 19. 2009 00:57

tiffany co

tiffany jewellery masters of their inspiration from the vastness of the Star to create a series of star-studded design pattern: five-pointed star, star of stars, Stars, meteors and stars logo of the pendant. These exquisite objects map and pendant or earrings a perfect combination, forming a series of stunning diamond necklace, the highly imaginative star-shaped pendant, a star-studded long Y-necklace, such as the Milky Way-like flashing a diamond bracelet and necklace as well as the bright star-shaped brooch.
----------------------------------------------------------------------------

tiffany co

December 19. 2009 08:57

evony cheats

İnteresting article. Thanx for this great info.

evony cheats

December 21. 2009 00:33

Tiffany

I really appreciate the kind of topics you post here. Thanks for sharing us a great information that is actually helpful. Good day!

Tiffany

December 21. 2009 02:19

play online casino bonuses

Hey - nice blog, just looking around some blogs, seems a pretty nice platform you are using. I'm currently using Wordpress for a few of my sites but looking to change one of them over to a platform similar to yours as a trial run. Anything in particular you would recommend about it?

play online casino bonuses

December 21. 2009 03:27

kdl32w5500u

Great post I must say.. Simple but yet entertaining and engaging.. Keep up the awesome work!

kdl32w5500u

December 21. 2009 03:48

fioricet bluelist

This is such a great resource that you are providing and you give it away for free. I love seeing websites that understand the value of providing a quality resource for free. It is the old what goes around comes around routine. Did you acquired lots of links and I see lots of trackbacks??

fioricet bluelist

December 21. 2009 06:41

Overseas removals

Really useful stuff - I shall be back as a regular reader

Overseas removals

December 21. 2009 07:24

usa online casinos jes

Excellent read, I just passed this onto a colleague who was doing a little research on that. And he actually bought me lunch because I found it for him smile So let me rephrase that: Thanks for lunch!

usa online casinos jes

December 21. 2009 08:38

play online casino now here

Keep 'em coming... you all do such a great job at such Concepts... can't tell you how much I, for one appreciate all you do!

play online casino now here

December 21. 2009 11:35

Free money

Can you please tell me the name of your theme?

Free money

December 22. 2009 01:24

Internet dating

Pretty good post. I just stumbled upon your blog and wanted to say that I have really enjoyed reading your blog posts.Any way Ill be subscribing to your feed and I hope you post again soon

Internet dating

December 22. 2009 17:24

websites for real estate agents

Resources like the one you mentioned here will be very useful to me! I will post a link to this page on my blog. I am sure my visitors will find that very useful.

websites for real estate agents

December 22. 2009 18:03

slim acai

Nice information, many thanks to the author. It is incomprehensible to me now, but in general, the usefulness and significance is overwhelming. Thanks again and good luck!

slim acai

December 22. 2009 22:24

seo packages

Hi webmaster, commenters and everybody else !!! The blog was absolutely fantastic! Lots of great information and inspiration, both of which we all need!b Keep 'em coming... you all do such a great job at such Concepts... can't tell you how much I, for one appreciate all you do!

seo packages

December 23. 2009 01:38

boise idaho real estate

This is such a great resource that you are providing and you give it away for free. I love seeing websites that understand the value of providing a quality resource for free. It is the old what goes around comes around routine. Did you acquired lots of links and I see lots of trackbacks??

boise idaho real estate