Tue April 01 2008
Repost due to phantom audio track in previous encoding.
Repost due to phantom audio track in previous encoding.
Repost due to phantom audio track in previous encoding.
read less
Thu January 31 2008
The Infusion Sleepless Roadshow was an intense weekend of SharePoint training and competition. It was a thrill to participate.I'd like to thank Infusi...
read more
The Infusion Sleepless Roadshow was an intense weekend of SharePoint training and competition. It was a thrill to participate.I'd like to thank Infusion for presenting the event, and Microsoft for
being a fantastic host. In particular, from Infusion:Sheldon FernandezNadeem MithaDevon JonesRory RichardsonAnd from Microsoft:Zain NaboulsiChris KoenigAnd special thanks to my teammates:Derek
SandersonR...
read more
The Infusion Sleepless Roadshow was an intense weekend of SharePoint training and competition. It was a thrill to participate.I'd like to thank Infusion for presenting the event, and Microsoft for
being a fantastic host. In particular, from Infusion:Sheldon FernandezNadeem MithaDevon JonesRory RichardsonAnd from Microsoft:Zain NaboulsiChris KoenigAnd special thanks to my teammates:Derek
SandersonRicky Ma
read less
Sat November 10 2007
.NET generics are useful for more than just containers. They are a powerful mechanism for code reuse.We've used generic collections. Instead of just a...
read more
.NET generics are useful for more than just containers. They are a powerful mechanism for code reuse.We've used generic collections. Instead of just a list of objects, we can declare a list of
Person. This is good, because the compiler helps us ensure that only Person objects are stored in the list. It also eliminates the unnecessary cast as we extract a Person from the list. And finally,
this let...
read more
.NET generics are useful for more than just containers. They are a powerful mechanism for code reuse.We've used generic collections. Instead of just a list of objects, we can declare a list of
Person. This is good, because the compiler helps us ensure that only Person objects are stored in the list. It also eliminates the unnecessary cast as we extract a Person from the list. And finally,
this lets us type a dot after a list method and see the properties of a Person.But the power of generics goes deeper than that. They let you declaratively compose types in order to create behaviors
in relatively few lines of code. Instead of creating a custom class off in another file to perform a specific function, you can put together pieces right where you need them. This composition is
declarative, so your intent is captured as concisely as possible. To get started, you need to master the syntax and learn a few basic patterns.A strategy is a specific procedure for accomplishing a
goal. The goal itself is expressed as an interface. The interface separates the consumer of the goal from its various implementations. By replacing the implementation, you can change the behavior of
the system.A policy is more general than a strategy. It is a generic set of rules with room for interpretation. When the strategy is itself generic, then it is a policy; it can be applied to several
types.A strategy or policy is chosen to accomplish its own goal. But a generic algorithm composes smaller snippets of code to accomplish a larger goal. Unlike a strategy, an algorithm has little
value on its own. It must be put into context to be truly useful.One algorithm can be written in terms of another. It can use the encapsulated code and alter its behavior. This lets us declare a new
algorithm by composing existing ones, rather than implementing entire new classes.A factory method wraps the constructor of a generic class so that the compiler can use type inference. When used
appropriately, the syntax for expanding generics disappears.
read less