FunkyKB: “Silverlight’s CollectionViewSource” and other items

Bea Stollnitz: “CollectionViewSource was added to WPF mainly to permit view-related scenarios to be expressed in XAML (so they could be tooled), and also to aid in remembering the current item of previously displayed collections. The reasons for adding CollectionViewSource to Silverlight were very different. Before the introduction of CollectionViewSource, Silverlight collections were not automatically wrapped by views – in fact the concept of “views” didn’t even exist in Silverlight 2. There was no way to sort or filter a collection (other than modifying the collection itself), or to build a master-detail scenario based on currency (although you could create a master-detail scenario based on selection). …Unlike WPF, Silverlight only wraps collections with a view when CollectionViewSource is used as an intermediary. If you simply bind an ItemsControl to a collection, no ‘default view’ will be created internally for you.”

“Data Binding Changes in Silverlight 4”

Shawn Wildermuth: “Data binding has also added the ability to specify what to show in certain cases. These cases include when the value is NULL and when the value fails to load. There are two markup extensions that support this. First the TargetNull markup extension lets you specify what to show when the bound value is null. Secondly, the FallbackValue is used in the same way but is shown when the value cannot be loaded through data binding (normally when the DataContext is null or fails to find the property on the bound object). ”

“Silverlight 3’s New Child Windows”

Jeff Prosise: “The new child window feature makes it easy to add modal dialogs to Silverlight applications. A child window derives from the new ChildWindow class, and its content is defined in XAML (of course!). So you can now embellish an application with modal popups containing rich content.” This one I overlooked inside the Silverlight 4 timeframe.

“Braindump on the Event Aggregator Pattern”

Jeremy D. Miller: “Many people first come into contact with the Event Aggregator pattern through the implementation in Prism.  For my regular readers you may be shocked (shocked I say!) to know that I don’t particularly care for the way they implemented the pattern in Prism.  I think the Prism implementation is clumsy and awkward to use.  I despise that idiom of first getting the event aggregator, then retrieving an ‘Event’ object that I’ll then listen to.  Same thing with publishing.  I think it’s awkward that I have two steps (get event, then publish) instead of just saying ‘IEventAggregator.Send().’” My current preference is to use the ‘light’ messaging in Laurent Bugnion’s MVVM Light.

Today’s Google Starred Items: “Streaming Blobs To and From SQL Azure”

Wayne Walter Berry: “This article provides a SqlStream class written in C# code. The class implements the abstract Stream class for the varbinary(max) data type on SQL Azure; Stream is an abstract class defined in the .NET CLR that is well supported and very versatile. The SqlStream class provided when used with SQL Azure allows you to manipulate a single blob a chunk at a time.”

“Getting Started With PowerPivot and SQL Azure”

Wayne Walter Berry: “One big advantage of using SQL Azure as a data source is that it can be accessed anywhere there is Internet connectivity, and you can store large amounts of data securely and with high availability. Your PowerPivot users can run their reports on the road, without having to VPN into your datacenter. Also, they do not have to travel with a snapshot of data, which is outdated the minute after the snapshot.”

“WordPress Now Runs on SQL Server and SQL Azure”

Sarah Perez: “To get started with WordPress on SQL Server or SQL Azure, you need to download the SQL Server distro or patch. Then you can check out the Getting Started page to get everything properly set up. ”

“Optical character recognition (OCR) in Google Docs”

Jaron Schaeffer: “For the technically curious: we’re using Optical Character Recognition (OCR) that our friends from Google Books helped us set up. OCR works best with high-resolution images, and not all formatting may be preserved. The original images will be included in the new document to make it easier for you to correct mistakes. Supported languages include English, French, Italian, German and Spanish, with more languages and character sets on their way. We’re looking forward to get feedback from you while we keep improving the feature over the next months.”

“Google releases command line tool for accessing Web services”

Ryan Paul: “Although modern desktop computing is increasingly dominated by graphical user interfaces, command line tools are still extremely useful for rapid interaction, simple programmatic automation, and remote system management. GoogleCL will make Google-hosted data more accessible to common command-line workflows. The GoogleCL tool offers an easy way to pipe your GMail contact list into sed and awk, or use a shell glob to specify which photos and movies to batch upload to Picasa and YouTube. It also supports Blogger, Google Calendar, and Google docs.”

“Pivot, OData, and Windows Azure: Visual Netflix Browsing”

Steve Marx: “I’ve put together my own example of using the new PivotViewer control at It lets you browse the top ~3,000 movies that Netflix has available to stream online. I really encourage you to click through to the demo… it’s a fantastic way to find a movie to watch.”

“Installing, Configuring and Using Windows Server AppFabric and the ‘Velocity’ Memory Cache in 10 minutes”

Scott Hanselman via Chris Alcock: “The Velocity Caching Service needs to know where to get its configuration and it can get it from one of two places – either a database or an XML file on a share. If you use the XML file on a share, you’ll need to make sure the service account has access to the share, etc. I’ll use a database. The config wizard can make it for you as well. Click Next then Finish up the configuration.”

“SQL Azure and Windows Azure”

Wayne Walter Berry: “SQL Azure is independent from Windows Azure. You don’t need to have a Windows Azure compute instance to use SQL Azure. However, SQL Azure is the best and only place for storing relational data on the Windows Azure Platform. In other words, if you are running Windows Azure you probably will have a SQL Azure server to hold your data. However, you don’t need to run your application within Windows Azure account just because you have your data stored in SQL Azure. There are a lot of clients and platforms other than Windows Azure that can make use of SQL Azure, including PowerPivot, WinForms applications (via ADO.NET), JavaScript running in the browser (via OData), Microsoft Access, and SQL Server Reporting Services to name a few.”

FunkyKB: “Explicit vs implicit SQL joins” and other notes…

Stack Overflow: “Personally I prefer the join syntax as its makes it clearer that the tables are joined and how they are joined. Try compare larger SQL queries where you selecting from 8 different tables and you have lots of filtering in the where. By using join syntax you separate out the parts where the tables are joined, to the part where you are filtering the rows.”

“How do i write the literal "]]>" inside a CDATA section with it ending the section?”

Stack Overflow: “This ends up breaking the CDATA section in two parts, but it’s what you have to do…”


Issues like this should be more and more moot/antiquated for my needs as the .NET framework in general and LINQ to XML in particular provide facilities that make these “tricks” unnecessary.

More Old Stuff: “What’s New in FOR XML in Microsoft SQL Server 2005”

MSDN: “There will still be a few cases where you may want to use the EXPLICIT mode (in order to generate CDATA sections or to use the !xmltext directive, for example), but the new functionality should make the “query from hell” a much less frequent encounter.”

“SQL Server Index Basics” “For composite indexes, take into consideration the order of the columns in the index definition. Columns that will be used in comparison expressions in the WHERE clause (such as WHERE FirstName = 'Charlie') should be listed first. Subsequent columns should be listed based on the uniqueness of their values, with the most unique listed first. ”

Today’s Google Starred Items: “Initial Thoughts on Oracle vs Google Patent Lawsuit”

ConnectedMiguel de Icaza: “I would like to think that this is going to be solved with a quick settlement where Oracle will shake Google for a few billion dollars and the entire matter will be put behind.  …Unlike the Java patent grant, the Microsoft Community Promise for both C#, the core class libraries and the VM only require that you have a full implementation. Supersetting is allowed. ”

“Silverlight for Symbian goes RTM”

Alex Golesh: “Microsoft just announced the general availability of Silverlight for Symbian. This brings the Silverlight experience to the 20+ million users of Nokia S60 5th edition Nokia 5800 XPressMusic and Nokia N97 devices.”

“Why I won’t buy an iPad (and think you shouldn’t, either)”

Cory Doctorow: “The model of interaction with the iPad is to be a ‘consumer,’ what William Gibson memorably described as ‘something the size of a baby hippo, the color of a week-old boiled potato, that lives by itself, in the dark, in a double-wide on the outskirts of Topeka. It’s covered with eyes and it sweats constantly. The sweat runs into those eyes and makes them sting. It has no mouth… no genitals, and can only express its mute extremes of murderous rage and infantile desire by changing the channels on a universal remote.’ ”

From 2009: “AT&T Responds To Fake Steve Jobs’ Real DDoS” “To add insult to injury, AT&T wireless chief Ralph de la Vega last week came out with comments that seemingly blamed customers for actually using the network, and inaccurately argued the flat-rate model they’ve been making tens of billions of dollars off—wasn’t able to fund expansion. Of course de la Vega was talking to investors, who usually lack long-term vision. You’ll recall how the same investors whined extensively about Verizon future-proofing their network with fiber to the home, oblivious to how the investment made the company a game changer and solidified Verizon’s competitive position for years to come.”

FunkyKB: “Optimizing WPF Application Performance” and other highlights…

Buy this book at!

This section is intended as a reference for Windows Presentation Foundation (WPF) application developers who are looking for ways to improve the performance of their applications. If you are a developer who is new to the Microsoft .NET Framework and WPF, you should first familiarize yourself with both platforms. This section assumes working knowledge of both, and is written for programmers who already know enough to get their applications up and running.” I’ll probably need to print this one…

mc:Ignorable Attribute

mc:Ignorable only applies to namespace mappings to identifier strings. mc:Ignorable does not apply to namespace mappings into assemblies, which specify a CLR namespace and an assembly (or default to the current executable as the assembly).”

ScrollViewer Overview

“You must build a custom object in order to use the ScrollBar element for content scrolling. However, you can use the ScrollViewer element by itself because it is a composite control that encapsulates ScrollBar functionality.”

“Physical scrolling is used to scroll content by a predetermined physical increment, typically by a value that is declared in pixels. Logical scrolling is used to scroll to the next item in the logical tree. Physical scrolling is the default scroll behavior for most Panel elements. WPF supports both types of scrolling.”

WPF SplitContainer “Windows Forms has a very handy SplitContainer control that you can use to resize two child panels. In WPF world we’re out of the luck—we must use Grid and GridSplitter which is not [intuitive], and most importantly, can only data binding to a collection of children instead of the fixed number of 2. As we all know, data binding is the bridge between Model and View in WPF, and the greatest part (at least from my point of view) is the [separation] of Model and View (or named as business logic and presentation).”