Bruce Eckel and coauthor Jaime King have posted a sample of their upcoming book: C# Query Expressions and 3.0 Features

From the authors:

It's become more common for authors to offer a few pages or sometimes a chapter of their text to the public as a means of marketing. Our aim is to not only provide a sample, but also a useful stand-alone text. By itself, this sample provides any C# 2.0 programmer a foundation in C# 3.0.

This is intended to be a useful mini-book on its own, not just a teaser: it's 239 pages long and includes 82 exercises and solutions. The full book is filled with many more exercises and solutions.

The book covers:

  • Extension methods
    • Inheritance vs. extension methods
    • Utilities for this book
    • Extended delegates
    • Other rules
  • Implicitly-typed local variables
  • Automatic properties
  • Implicitly-typed arrays......
  • Object initializers
  • Collection initializers
  • Anonymous types
  • Lambda expressions
    • Func
  • Query Expressions
  • Basic LINQ
  • Translation
    • Degeneracy
    • Chained where clauses
  • Introduction to Deferred Execution
  • Multiple froms
  • Transparent identifiers
    • Iteration Variable Scope
  • More complex data
  • let clauses
  • Ordering data
  • Grouping data
  • Joining data
  • Nested Queries
    • into
    • let clause translations
    • let vs. into
    • joining into
    • Outer joins
  • Other query operators

Download the sample here.

Tuesday, April 01, 2008 7:27:56 PM (Central Standard Time, UTC-06:00)    Comments

The Expression Design, Blend, and Encoder products each let you change properties with incremental values by clicking on the text box and dragging the mouse up or down.  I think most people know that.  But what I didn't know, is that you can hold [Ctrl] to slow down the rate of change and [Shift] to increase the rate.  That makes this feature much more useful. 

Friday, March 14, 2008 10:15:59 AM (Central Standard Time, UTC-06:00)    Comments

Microsoft recently published a Software + Services Blueprint for using Silverlight with Sharepoint.  The blueprint includes six samples demonstrating basic tasks like using Silverlight in a Sharepont web part, to advanced tasks like displaying a social network diagram using active directory. 

http://www.ssblueprints.net/sharepoint/ 

image

Each sample includes a video, code walkthrough, setup instructions, and a Visual Studio solution that can be downloaded separately or as a single package.

image

The full open source blueprint source code is said to be coming soon. 

Thursday, March 06, 2008 9:02:13 AM (Central Standard Time, UTC-06:00)    Comments

The common mentality with respect to creative and technology process integration involves a relatively solid line that separates the two disciplines and work streams.  Creatives do their concepting, draw up wireframes, create visual assets, and then toss them over the line.  Technologists pick these up, create the front-end HTML, create the back-end code, and wire them up to create the system.  That is an extremely over-simplified description of both sides of the line - but it represents the general perception of many clients and peers in our industry. 

The agile movement has made great strides toward integrating project teams.  But the focus here has been on bringing business and end-user representatives into the process and advancing the project through small, iterative cycles.  (Again, a dramatic over-simplification.  I'm a huge Agile proponent.)  The iterative cycle keeps all disciplines (plus business stakeholders and users!) engaged throughout the project.  Great progress!  But, within an iteration, the line often remains.  Both the creative and technical teams are tightly engaged with the business and user representatives.  But they're only loosely engaged with each other. 

There are many reasons for this.  On a given project the creative and technical teams are often from separate internal organizations - at best.  At worst, they're from separate companies altogether.  Beyond that, they often think, talk, and act very differently - making it hard to relate.  Right brain, left brain stuff.  There is hope, however. 

One of the most satisfying things about working with Avenue A | Razorfish is experiencing the blurring of the tech/creative line.  As a company with strong marketing, creative, and technology capabilities that are integrated on many projects, we've learned through experience how to work and communicate with each other.  That is one of our strongest value propositions to customers.  We've proven that the line can be blurred and there is significant value in doing so.  However, it is within the last year that I've seen the most substantial fading of the line.

This can be attributed to the popularity and demand for rich Internet applications.  RIAs require a much greater level of cross-discipline understanding and cooperation.  Windows Presentation Foundation and XAML have done the same thing for desktop applications (and the web, with Silverlight).  There is a great whitepaper on the WPF designer/developer workflow entitled The New Iteration.  Definitely worth a read.  It specifically addresses WPF, XAML, and the Expression tools, but many of the points apply more generally to RIAs, as well.  The value proposition is well stated:

"Ultimately, the new collaboration means that iteration of a project can now happen in a much more fluid way. There is no longer the “one-way street” where a change to a specification downstream means a radical reworking of the entire application. The result opens up new possibilities for collaboration between the designer and developer, where a kind of dialogue is possible with the potential to foster greater creativity."

It is that last point - the potential to foster greater creativity - that excites me the most.  Technologists are often in a restricting role.  We have to set boundaries that the creative team must work within so that we're able to deliver on their promises.  Rather than promote cooperation and collaboration, this can create an "us versus them" mentality.  However, with RIAs I have noticed a great change.  Technology and creative teams are pushing each other to expand the solution horizon, rather than constrain it.  Both teams are equally invested and sharing their unique perspectives, which results in far better solutions. 

It may be intuitive that a shared sense of ownership, varying perspectives, and close collaboration will have positive results on a project.  As a consultant "back in the day", when the Internet and HTML were new, I saw the same level of enthusiasm and collaboration between technical and creative teams.  But as technology and creative techniques matured, the tech/creative line solidified.  As a result, the solutions became somewhat cookie-cutter.  That's not to say companies weren't launching sites with great creative and technical work.  But truly remarkable solutions are conceived when both the technical and creative limits are stretched and combined to produce something truly unique.  I'm thrilled to be back in this sweet spot.  The industry as a whole seems to be following suit.  But unless a deliberate effort is made to avoid falling into comfortable patterns, truly remarkable solutions may once again join the endangered species. 

Saturday, March 01, 2008 7:22:56 PM (Central Standard Time, UTC-06:00)    Comments

Microsoft released a hotfix for Visual Studio 2008 that addresses several bugs and performance issues. 

The hotfix is available here.

From Microsoft:

Issues that are fixed: We have fixed several bugs in this hotfix. All bug fixes are listed below.

HTML Source view performance

  • Source editor freezes for a few seconds when typing in a page with a custom control that has more than two levels of sub-properties.
  • “View Code” right-click context menu command takes a long time to appear with web application projects.
  • Visual Studio has very slow behavior when opening large HTML documents.
  • Visual Studio has responsiveness issues when working with big HTML files with certain markup.
  • The Tab/Shift-Tab (Indent/Un-indent) operation is slow with large HTML selections.

Design view performance

  • Slow typing in design view with certain page markup configurations.

HTML editing

  • Quotes are not inserted after Class or CssClass attribute even when the option is enabled.
  • Visual Studio crashes when ServiceReference element points back to the current web page.

JavaScript editing

  • When opening a JavaScript file, colorization of the client script is sometimes delayed several seconds.
  • JavaScript Intellisense does not work if an empty string property is encountered before the current line of editing.

Web Site build performance

  • Build is very slow when Bin folder contains large number of assemblies and .refresh files with web-site projects.
Sunday, February 10, 2008 2:35:19 PM (Central Standard Time, UTC-06:00)    Comments

With Microsoft's recent bid to acquire Yahoo!, there will be a plethora of Internet doomsday concerns.  Those are to be expected.  But there is at least one aspect of the deal that intrigues me... integration of their respective social media products and perspectives. 

User frustration in navigating between the wide array of social media sites has resulted in a new product category some say will be the killer applications of 2008:  Tools for Managing Multiple Social Networks.  There certainly is a need for such products today.  However, that category should have a relatively short life-span, as it addresses problems that should be eliminated. 

Many industry experts consider social media to be the defining element of "Web 2.0".  I believe that to be true.  But the current state of social media platforms reminds me of the AOL and CompuServe heydays.  Ultimately, the closed, proprietary nature of those networks conflicted with the open nature of the Internet - which led to the failure of those platforms.  I expect the same will happen to the current batch of social media networks if they don't open the platforms for integration. The good news is there is evidence of this realization by Yahoo! and Microsoft, and many of the other players. 

Yahoo! recently launched support for Open ID, which provides users with a single digital identity that can be used across multiple, unrelated sites.  Microsoft has a similar but proprietary solution with Live ID.  Microsoft representatives have told me they were looking into Open ID integration, but didn't have any specific plans or timelines.  Hopefully, this merger would elevate Open ID's relevance to Microsoft and accelerate Open ID / Live ID integration. 

Microsoft recently announced it was joining DataPortability.org, which promotes standards for data portability and exchange (such as friends lists).  Plaxo, Facebook, and Google have announced support, as well.  But Yahoo! has not.  Hopefully, the Microsoft merger would elevate DataPortability.org's relevance to Yahoo!.

If the merger results in both Microsoft and Yahoo! supporting Open ID and DataPortability.org, it would be a huge win for social media integration.  This should create tremendous momentum for both movements and influence other organizations to follow suit.  People can certainly conceive of negative consequences of the deal.  But I'm a "glass is half full" kind of guy.  And there is evidence that both parties see relevance in open standards.    

Thursday, February 07, 2008 10:42:30 AM (Central Standard Time, UTC-06:00)    Comments

Avenue A | Razorfish (my employer) held it's first-annual technical summit in Austin today.  With this event, we invite clients from around the country to spend a day with us and get our perspective on the current state and future direction of Internet and digital media technology.

The keynote speaker was Tim Bray, who is the Director of Web Technologies at Sun Microsystems.  His speech was entitled: Understanding, Deploying, and Integrating Web 2.0.  He had several interesting comments regarding "Web 2.0 and the culture of contribution".  He provided a great quote by one of Sun's founders.  (Who's name I unfortunately don't recall.)  The quote is:

Wherever you are working, all the smartest people are somewhere else.

The point he was making is that companies should harness the power and influence of communities on the Internet, rather than try to compete with them.  He highlighted Sun's employee blogging policy.  On blogs.sun.com, you'll see:

Welcome to Blogs.sun.com! This space is accessible to any Sun employee to write about anything.

That is a pretty darn open policy.  Many companies are still struggling with the idea that relinquishing control of communication is a good idea.  Microsoft has a similar policy with blogs.msdn.com.  Microsoft and Sun each have thousands of employees blogging and are thus having very active and intimate dialogs with their customers. 

Apple, on the other hand, maintains a death-grip on any sort of non-sanctioned communication.  I find that quite ironic, as the common perception is that Apple is a very customer-centric organization, while Sun and Microsoft are technology-centric.  Apple is a great company and certainly has a marketing leg-up on Microsoft right now.  Even Microsoft employees can't help but laugh at the "I'm a Mac, I'm a PC" ads.   But I expect the close relationship Microsoft is cultivating with its customers through this informal communication channel will become a strategic advantage over time.  The quote above might appropriately be rephrased as "Don't think you're smarter than your customers". 

Apple and other companies may invest heavily in focus groups to understand customer needs and behavior.  In doing so, they may feel appropriately connected with their customers.  But the quote still rings true.  Whichever customers you engage through focus groups, the most important or influential customers are likely somewhere else.  I think the point is you should leverage all available channels to understand and build relationships with your customers.  There may very well be unpleasant communication trends or threads of discussion in employee blogs.  But if they are isolated to a few, they will be lost in the crowd.  If they are not isolated, they are likely highlighting legitimate problems or opportunities that should be addressed.  That information is extremely valuable.  It is much better to hear both customer and employee complaints or pain-points and address them, than to pretend they don't exist.  Both will give you their trust and loyalty if they see that you're listening and acting on their feedback. 

Saturday, January 26, 2008 12:49:52 PM (Central Standard Time, UTC-06:00)    Comments

A colleague and I attended an Expression/WPF/Silverlight training session Microsoft provided to kick off their PhizzPop Design Challenge in Austin.  Robby Ingebretsen was the primary instructor.  He used a slick XAML editor called Kazaml throughout the training.  Robby developed Kazaml himslef, using WPF.  Compared to XamlPad, Kazaml is very feature-rich.  It supports auto-complete and code snippets, has a color picker, XAML scrubber, snapshot capture (to an image file), and more.  He was using version .2 during the class and recently released version 1.0

You can read more about it in Robby's announcement post.

Thursday, January 03, 2008 11:26:16 AM (Central Standard Time, UTC-06:00)    Comments
Monday, December 10, 2007 4:55:31 PM (Central Standard Time, UTC-06:00)    Comments

While attempting to download Expression Blend SP1 and the Blend 2 December CTP, I was prompted with a dialog that said I was randomly chosen to participate in the beta for the next version of Microsoft's Download Center.  I was a little hesitant because I just wanted to get my file and move on, but I went ahead and checked it out.  I'm glad I did.

I'm always disappointed when I see a new Microsoft page or site built with Flash assets.  I don't expect Microsoft to rewrite existing assets, but if they are not willing to commit to Silverlight with new content, I don't expect anyone will.  Fortunately, Microsoft is finally making a serious commitment to Silverlight.  The home page and many secondary pages of the download center are built entirely with Silverlight. 

image

Looking at the home page, above, I figured Silverlight was just used for the top banner, which cycles through various products Microsoft is highlighting.  But the entire page is Silverlight.  Aside from the scrolling product highlights and the accordion menu on the top-right, there isn't much rich interaction.  Most everything else is just links.  Clicking on the Download Categories menu option pulls up the following page, also entirely Silverlight-based. 

image

The above opens in a separate page with a seemingly separate Silverlight app.  There is no rich transition or animation from the home page to here.  Clicking on any of the specific download links then opens the legacy HTML-based download page - again, without a rich transition.

The download center looks like a nice but fairly conservative site with some AJAX usage for asynchronous loading of the various content panels and DHTML/JavaScript for the banner and menu animations.  They could have done a lot more to demonstrate the RIA capabilities of Silverlight.  With very little rich interaction or animation, there certainly wasn't a compelling technical reason for wholesale Silverlight-based page implementations.  But there are very compelling business reasons to do it.  I'm glad to see Microsoft is finally taking serious steps to drive adoption and grow the installed user-base.  I hope this will be done with all new or updated Microsoft web properties. 

Saturday, December 08, 2007 3:19:29 PM (Central Standard Time, UTC-06:00)    Comments
Blog Categories
All Content © 2008, Troy Sabin
The opinions expressed on this blog are exclusively my own. But you're welcome to agree with me. :-)