Monday, July 10, 2006
I was just catching up on my blog reading tonight and noticed that Scott Hanselman put up a link to WatirMaker rewritten in Ruby. Sweet!

If you aren't familiar with it, WatirMaker will record your mouse clicks and key presses in the internet browser and save them into a Ruby script which you can then rerun. It is a great way to test your UI and automate common actions that you may do with your app. I always end up getting back bugs from QA where it is painful trying to reproduce them but with WatirMaker I can reproduce it once, make my fix and then have the saved script for the next time I modify that page.

I often hear about a lot of people complaining that you can't unit test the UI but Watir can make sure that certain things appear on the page and you can use assertions just like you can with NUnit. So no more complaining that you can't test the UI!

It is going to be fun to try this our at work tomorrow check it out here: http://www.hanselman.com/blog/WatirMakerWrittenAgainInRuby.aspx

Monday, July 10, 2006 6:30:15 AM (GMT Standard Time, UTC+00:00)  #    Comments [0]  | 
Monday, July 03, 2006
Today, Steve Yzerman retired. In my opinion he was the best player to ever put on a pair of skates and pick up a hockey stick.

I remember growing up watching Yzerman and seeing something in him that other hockey players didn't seem to have and that is what I strived to do as a hockey player and in life. The class and leadership that Yzerman showed both on and off the ice make him a perfect role model and I will miss watching him on get the job done on the ice.

I was fortunate to see his last game in the NHL against the Oilers and you can bet that the ticket stubs  and programs will be framed and added to my Steve Yzerman memorabilia collection. Watching Yzerman skate off the ice and fade away into the visitors tunnel after they had just been beaten by the Oilers is an image that will stick with me until the day I die:

yzrLastGamebig

Monday, July 03, 2006 9:50:47 PM (GMT Standard Time, UTC+00:00)  #    Comments [0]  | 
Tuesday, June 27, 2006

Thanks to the municipal web group for allowing me to present at their quarterly meeting this past Friday, I had a lot of fun talking about RSS with all of you.

Here are some of the links I promised during the presentation:

- Sharepoint RSS Syndication Generator

- Channel 9 Video Explaining the new featues in Sharepoint 2007 (covers RSS)

- RSS 2.0 Specification

- RSS Feed Validator

- Official Feed Icons

- Government of Alberta RSS Feeds

If you have any other questions about RSS, if anything is missing or if you would like my powerpoint slides from the presentation feel free to contact me.

Tuesday, June 27, 2006 9:55:06 PM (GMT Standard Time, UTC+00:00)  #    Comments [0]  | 
Tonight I added a couple of very rough drawings of what should be close to the final layout of the Edmonton Code Camp. If you are interested you can view them here. If you have any questions about it feel free to contact me or anyone at Edmug.

Tuesday, June 27, 2006 2:15:29 AM (GMT Standard Time, UTC+00:00)  #    Comments [0]  | 
Friday, June 23, 2006
I found the Wrox Code Camp Video Series tonight and if you are looking for a preview of the Edmonton .NET User Group meeting next Tuesday checkout Jean-Luc David's Extending Visual Studio Team System presentation from Atlanta Code Camp.

If you are interested in attending we are having 2 meetings next week, they both start at 6pm at the Edmonton Public Library on June 27th and June 29th.

Friday, June 23, 2006 5:19:24 AM (GMT Standard Time, UTC+00:00)  #    Comments [0]  | 
Tuesday, June 20, 2006

John Lam released the 4th update of the RubyCLR yesterday here. I am excited to start trying it out tonight.

Also Queensland University of Technology has released their first public beta of their Ruby .NET compiler here. Check them both out!

Tuesday, June 20, 2006 4:40:38 PM (GMT Standard Time, UTC+00:00)  #    Comments [0]  | 
Wednesday, June 07, 2006

If reading isn't your forte you can now get the JPod audiobook for your iPod here:

http://phobos.apple.com/WebObjects/MZStore.woa/wa/viewAlbum?id=155791678&s=143455

JPod

It is even $1 cheaper than buying the book.

Fun
Wednesday, June 07, 2006 3:46:51 AM (GMT Standard Time, UTC+00:00)  #    Comments [1]  | 

This is a review of the Atlas UpdatePanel Control PDF By Bertrand Le Roy and Matt Gibbs published by O'Reilly.

The PDF was written Bertrand Le Roy and Matt Gibbs, members of the Microsoft “Atlas” architecture and development team. I subscribe to Bertrand's blog (you can't go wrong subscribing to a blog whose title is "The universal answer is in building 42") and the content on his blog about Atlas is always great so I expect this PDF to be great as well.

According to the PDF: "You'll learn what you need to know to make UpdatePanel part of your application pages. You’ll also learn how to use the control to improve the performance of an ASP.NET Wizard control; create a better master/details page for the AdventureWorks database; and add a pop-up preview to a search page. Finally, you’ll learn how to display UpdatePanel error messages and deal with its quirks and limitations. In short, this PDF has exactly what you need to begin adding the interactivity of AJAX to your ASP.NET 2.0 applications today."

The PDF starts of with a history of XMLHttp up to the Atlas UpdatePanel. It talks about how Microsoft was using XMLHttp with their Outlook Web Access product. This is often overlooked when people talk about Microsoft and Ajax. One thing I found interesting was that Classic ASP supported remote scripting using Java Applets and ASP.NET did not support remote scripting. The ancestor to the update panel was called the RefreshPanel. The purpose of the UpdatePanel is to hide the interaction between the browser and the server.

The PDF points out that for the majority of user input actions, a webpage does not need to be refreshed. I agree with this statement but I think you really need to think about the design of your page before adding AJAX/Atlas to it. Thinking about what will need to be refreshed on a postback and what doesn't need to be refreshed is crucial to providing the user with a good experience while using your software. Things like images, menus, forms etc do not need to be refreshed and I am happy that the PDF pointed this out.

Atlas uses project templates to setup Atlas websites. One thing I have noticed is that the teams at Microsoft have been using them in a lot of their beta software. The PDF shows you everything that the project template does for you in order to give you a ready to use Atlas website. This is very valuable information as if anything ever goes wrong it can help you troubleshoot. The PDF even points out that you will need to do these steps in order to Atlas enable an existing website.

Here is the minimum requirements you need to add an UpdatePanel to your webpage:

<atlas:UpdatePanel EnableViewState="true|false" Mode="Always|Conditional"
RenderMode="Block|Inline" >
    <Triggers>
        <atlas:ControlEventTrigger EventName="" />
    </Triggers>
    <ContentTemplate>
        <!-- HTML and ASP.NET content goes here --> 
    </ContentTemplate>
</atlas:UpdatePanel>

The PDF proceeds to explain the sections of the UpdatePanel. The content template area sends back to the client, only the HTML specified in the ContentTemplate area. The content is accompanied by the updated viewstate data, header and scripts!

The PDF points out that if the UpdatePanel mode is set to Conditional the the UpdatePanel relies on the Triggers collection to update the controls contained in the ContentTemplate. This is very powerful and cool.

The PDF points out that Atlas has a TimerControl control that ticks on the client side and triggers a postback on each tick. This is great for situations where you need to autosave a form but the PDF reminds us to keep in mind that scalability can be a problem.

The PDF now moves on to "3 increasingly complex examples" on using the UpdatePanel, each example begins from an ASP.NET 2.0 page that runs without Atlas. The first example shows you how to build a wizard control without Atlas and then once you have it working you enhance it with the Atlas UpdatePanel to eliminate the postbacks. It was very easy to add the extra Atlas functionality.

The second example is a GridView that shows images of various products in the AdventureWorks database. Once, you have it built the PDF once again shows how easy it is to add an UpdatePanel to an existing page. In this example we get to use the UpdatePanel triggers to trigger the Ajax call. On a side note, I was impressed with the use of a HttpHandler to return images to the master/details pages.

The third example extends upon the second example and adds search capability to the GridView. What was interesting to me in this example is how they show how a strategically placed UpdatePanel can lead to a more fluid user experience. The PDF also points out that placing an UpdatePanel around a search box can render the back button on a user's browser useless and you should distinguish between navigation operations and application operations when thinking about your UI design. It would be awesome if the Atlas team could make navigation operations easier to manage in the final version of Atlas.

Last of all, the PDF shows you how to deal with displaying error messages and various caveats you will run into using the UpdatePanel. I am starting to think every control should have a PDF out available, it would save me a lot of Googling :)

In conclusion, the PDF is a great reference for anyone looking to learn a lot about the Atlas UpdatePanel. I highly recommend giving this PDF a read and spending the $10 to purchase it. I would even go as far as to call it the definitive guide to the Atlas UpdatePanel. Check it out here: http://www.oreilly.com/catalog/atlasupc/index.html

Wednesday, June 07, 2006 3:15:39 AM (GMT Standard Time, UTC+00:00)  #    Comments [0]  | 
Monday, May 29, 2006
If you do test driven development, chances are that you have a standard folder structure that is generated by a nant script, it probably looks something like this:

Inside your src folder are you app and test directories. All of your test projects are placed in the test directory and all of your application source code is placed in the app directory.

Knowing that this is the case, we can easily set up a project template using Visual Studio 2005 to create our test projects for us. In the end we won't have to keep deleting the nasty class1.cs file that Visual Studio creates for us and we also won't have to constantly add references to external tools that we may be using for testing purposes (NUnit, RhinoMocks, etc.).

The first thing you need to do to setup your project template is to create an empty class library project in your src/test directory using visual studio 2005.

Next delete class1.cs, you will now have an empty class library, this by itself isn't very interesting but we know that we have a Nant script that will generate our default folder structure for us. Knowing this, we can create a project that will reference our testing tools relative from our src/test directories.

To do this, right click your testing project and select "add reference", navigate to your tools directory and add references to NUnit, RhinoMocks and any other 3rd party tools you would like to use.

Now, in Visual Studio 2005 select "File->Export Template" and export your testing project template. Select the wizard defaults until the finish button, a folder now opens up with your testing project template. Close the folder as it is just showing you the user created templates you already have.

The next time you need a testing project, your testing project template will be available to you in VS2005. All you have to do is right click you solution and select "Add New Project" you will then notice that your testing project template is available to you.




Notice that now we have an optimal testing project, even if we start a new project or a new solution, the project template we just created will look at the tools directory, this is works great since your Nant script should always generate the same folder stucture. We can now resume our regularily scheduled testing.
Monday, May 29, 2006 3:34:33 AM (GMT Standard Time, UTC+00:00)  #    Comments [3]  | 
Sunday, May 28, 2006
The guys who put together the Calgary Code Camp did a spectacular job. The whole thing ran very smoothly and I hope that the Edmonton Code Camp can have as much success.

I was actually really impressed with the Edmonton contingent that showed up. We ended up cleaning up on the swag, check out the t-shirt I won, I pledge to wear it to at least 5 edmug events this year.

There were a couple things I learnt from the code camp:

- Have a breakfast/snack for attendees

- Have presentations with a lot of code examples.

- Offer more than one track to attendees.

- The presentations are always going to run late.

- Make sure there are pens.



Sunday, May 28, 2006 6:48:09 AM (GMT Standard Time, UTC+00:00)  #    Comments [3]  | 

Theme design by Jelle Druyts

Pick a theme: