Barry S. Stahl, MCSD
Skip Navigation LinksBarry S. Stahl, MCSD > Blogs > Desert Code Camp 06
Skip Navigation Links.

Summary - Desert Code Camp 2006
Posted: Sunday, May 07 2006 12:06 AM GMT

Overall, I (fully) attended 7 sessions and garnered quite a bit of useful information (especially what should be on my reading material list). I consider the Desert Code Camp a tremendous success and look forward to the next one. A big thank-you to the organizers and presenters.


Creating Custom Controls for ASP.NET 2.0
Posted: Saturday, May 06 2006 10:59 PM GMT

A number of new facts came out of the final talk I attended on the day, Mickey Williams' discussion of ASP.NET 2.0 custom controls. These key facts for me were:

  • Embedded resources can be used in 2.0 controls (i.e. graphics)
  • ControlState can be used for critical data rather than ViewState. ControlState can't be turned off (be sure to use this for good and not for evil)
  • SmartTags can be easily created to expose the most common elements of a control to the page developer for easy modification and configuration
  • Controls can now inherit from CompositeControl or CompositeDataBoundControl
  • Mickey highly reccomends Reflector as a class browser, explorer, analyzer and documentation viewer for .NET

I'm sure the slide-decks and samples will be posted soon.


Exception Handling Block
Posted: Saturday, May 06 2006 8:57 PM GMT

Rob Bagby continued his outstanding presentations with not just an overview of the Exception Handling Block, but a full-blown strategy for handling exceptions. Rob had 5 goals for the session which I have paraphrased below:

Understand when and why to catch an exception
To Recover from the error (or attempt to)
To Add Context
To Clean up (close connections, etc)
To Log or Notify
To hide the details of an exception
Understand the categories of exceptions
Business
Technical
Security
Understand what is truly an exception
Don't use exceptions for flow-control
Understand Exception Propogation Options
Automatic Propogation (bubbling)
Catch & Rethrow - Clean, Resolve or Log
Catch, Wrap & Throw Wrapped
Understand Custom Exceptions and When to Use Them
when an appropriate exception doesn't already exist
To add discreet handling
To add a specific behavior or information

Rob went into quite a few specifics on exactly how this information could be utilized which is in the slide decks that I will link to asap.

This session got my vote as the most useful session of the day. Thanks Rob!


Enterprise Library Overview
Posted: Saturday, May 06 2006 7:55 PM GMT

In this excellent session, Rob Bagby gave a warp-1 overview of much of the .NET Enterprise Library (Application Blocks). Some key points of the talk were:

  • Config files for all blocks are now unified
  • Crypto block provides Hashing & Encryption functionality
  • Logging block provides a number of canned sinks including EventLog, DB, Text, MSMQ, Email and WMI
  • A good resource on the Caching block is at http://www.ronjacobs.com

Of course, there were many other interesting items which I am unable to document here due to my mild case of brain disfunctionality, but again, I will post links to the slide-decks as I get them.


VB.NET 2.0 Language Changes Give You More
Posted: Saturday, May 06 2006 7:15 PM GMT

Unfortunately, the presenter for this session never showed-up and a number of us were left sitting in the room for about 10 minutes. I'm glad I slipped in a 5-minute power-lunch beforehand.


Web Parts in ASP.NET 2.0
Posted: Saturday, May 06 2006 6:52 PM GMT

Again, not too much new material here but still a good session. Chris Rolon gave us a high-speed overview of the Web Part framework in .NET 2.0 including many of the key features and his suggestions for using them. I will post links to the slide decks as I get them.


Holding the Web on Your Shoulders With Atlas
Posted: Saturday, May 06 2006 5:57 PM GMT

Despite the title (smirk), this session was actually interesting and valuable. Tim Heuer, who gave us many ways to contact him, is a Microsoft guy who definately likes the capability of AJAX using the Atlas framework. There was simply too much information to try and summarize it here, but suffice it to say that, when used in the proper way, Atlas appears to be a strong model for UI development that is consistant with the way we currently do development. It may even help to extend the boundaries of where and why it is appropriate to use client-side JavaScript.

Some links Tim showed us were:
http://atlas.asp.net
http://atlas.asp.net/atlastoolkit
http://forums.asp.net

Introduction to Agile/Extreme Programming
Posted: Saturday, May 06 2006 4:55 PM GMT

This session was given by Josh Knowles who gave a good overview of Agile methodologies. There wasn't much new for me here, but Josh did give some good selling-points for these types of methods, and did solidify a few concepts for me. Primarily, the keys to Agile development are as Josh described them:

  • Individuals & Interactions over Process and Tools
  • Working Software over Documentation
  • Constant Collaboration
  • The ability to respond to change rapidly

Some ways to accomplish these things include:

  • Short release cycles (i.e. Quarterly)
  • Refactoring - Don't Repeat Yourself
  • "Spike" unknowns - Reduce Second-Order Ignorance
  • Stories should be told on Note Cards - Keep 'em Short

Some tools at our disposal:

nAnt
An automated build tool
CruiseControl.net
An integration tool
Subversion
A freeware Source-Control System that Josh likes better than VSS

I'll post links to some of these slide-decks as I get them.


Loosely Coupled Apps
Posted: Saturday, May 06 2006 3:20 PM GMT

I was expecting more of a "Best Practices for Data-Store Independance" type of session. This turned out to be more of a "Creating Web-Sites that Work Similarly Across Scripting Engines" thing.


T-SQL 2005
Posted: Saturday, May 06 2006 2:55 PM GMT

The first session I attended was T-SQL 2005 Enhancements, Tricks and Tips. David Lundell was the instructor and did a nice job.

Some key points were:

Common Table Expression (CTE)
A way to alias a query for use within another query. This can also be used to execute queries recursively.
nTile
Allows a resultset to be "partitioned" into segments. i.e. 100 segments make it a percentile, 4 segments is a quartile, etc.
Rank
Similar to nTile except the values are ranked in order. If two or more items tie for a rank, subsequent ranks are skipped. That is, if two items are tied for first, the next item would have a rank of 3.
Dense_Rank
Same as Rank only no ranks are skipped, regardless of ties
Row_Number
Same as Dense_Rank only with no duplicates, just lists the items in order from 1..n. Ties are arbitrarily broken and consistant order by broken ties is not guaranteed.
Pivot
Allows the creation of Pivot Tables but in my opinion, won't be very useful until we can set the columns dynamically. Currently in SQL 2005 the Pivot columns have to be explicitly defined.

Arrival
Posted: Saturday, May 06 2006 2:00 PM GMT

Nice. On arrival, we were given Free copies of "Writing Secure Code" from Microsoft Press, along with schedules and a few other things. This looks to be more organized than I thought it would be and should turn out to be very interesting.