Syndicated Client Starter Kit

When doing WPF development, a good source of information is http://windowsclient.net. One interesting download on that site is the Syndicated Client Starter Kit . It is a Starter Kit designed to make it easy to create rich, syndicated multimedia and content client applications. It has built-in ad-serving capabilities, and includes the sync framework that takes care of syncing, local storage, subscription management and the safe caching of authentication credentials. The MSDN reader sample application, and the starter kit itself, are available for download including source code.

Reviewing the source code is a great way to gain insight on how WPF applications can be structured, and some of the architectural patterns that are used within the code, such as the Command Pattern.

Another interesting aspect of this starter kit is that it uses SQL Server Compact Edition for storing data client side, and I think this is a great alternative to SQL Server Express. Even though both are free, SQL Server CE has a benefit of being more lightweight, and easier to deploy with your client application.

News Corp., AOL Pursue Yahoo Deals

Yahoo Inc. and Time Warner Inc.’s AOL are closing in on a deal to combine their Internet operations. But Microsoft is recrafting its assault plan by talking with Rupert Murdoch’s News Corp., publisher of The Wall Street Journal, about mounting a joint bid for Yahoo, people familiar with the matter said. Microsoft and News Corp. have yet to reach an agreement on joining forces but one person apprised of the plan described the discussions as serious. Such a deal would combine three of the biggest Internet properties: News Corp.’s MySpace, Microsoft’s MSN and Yahoo.

The AOL-Yahoo deal under consideration would include the repurchase of some Yahoo shares at a price above Microsoft’s offer. Taken together with a possible search advertising pact with Google Inc., the plan could give Yahoo an alternative to a Microsoft takeover – although many analysts and investors believe Microsoft will ultimately win out. At the least, Yahoo’s efforts could give it more leverage to negotiate a higher price from Microsoft.

Surface Launch

As mentioned in an earlier post, we worked with AT &T and the Microsoft Surface team to build a Surface application for AT &T retail stores. It was demo’ed 2 weeks ago in Vegas, and will be going live April 17 in stores in Atlanta, New York, San Francisco and San Antonio. See also the video below :

Microsoft Sends Letter to Yahoo! Board of Directors

Microsoft Corp. (NASDAQ: MSFT) sent the following letter to the Yahoo! Inc. (NASDAQ: YHOO) Board of Directors:

Dear Members of the Board:

It has now been more than two months since we made our proposal to acquire Yahoo! at a 62% premium to its closing price on January 31, 2008, the day prior to our announcement. Our goal in making such a generous offer was to create the basis for a speedy and ultimately friendly transaction. Despite this, the pace of the last two months has been anything but speedy.

While there has been some limited interaction between management of our two companies, there has been no meaningful negotiation to conclude an agreement. We understand that you have been meeting to consider and assess your alternatives, including alternative transactions with others in the industry, but we’ve seen no indication that you have authorized Yahoo! management to negotiate with Microsoft. This is despite the fact that our proposal is the only alternative put forward that offers your shareholders full and fair value for their shares, gives every shareholder a vote on the future of the company, and enhances choice for content creators, advertisers, and consumers.

During these two months of inactivity, the Internet has continued to march on, while the public equity markets and overall economic conditions have weakened considerably, both in general and for other Internet-focused companies in particular. At the same time, public indicators suggest that Yahoo!’s search and page view shares have declined. Finally, you have adopted new plans at the company that have made any change of control more costly.

By any fair measure, the large premium we offered in January is even more significant today. We believe that the majority of your shareholders share this assessment, even after reviewing your public disclosures relating to your future prospects.

Given these developments, we believe now is the time for our respective companies to authorize teams to sit down and negotiate a definitive agreement on a combination of our companies that will deliver superior value to our respective shareholders, creating a more efficient and competitive company that will provide greater value and service to our customers. If we have not concluded an agreement within the next three weeks, we will be compelled to take our case directly to your shareholders, including the initiation of a proxy contest to elect an alternative slate of directors for the Yahoo! board. The substantial premium reflected in our initial proposal anticipated a friendly transaction with you. If we are forced to take an offer directly to your shareholders, that action will have an undesirable impact on the value of your company from our perspective which will be reflected in the terms of our proposal.

It is unfortunate that by choosing not to enter into substantive negotiations with us, you have failed to give due consideration to a transaction that has tremendous benefits for Yahoo!’s shareholders and employees. We think it is critically important not to let this window of opportunity pass.

Sincerely, Steven A. Ballmer Chief Executive Office Microsoft Corp.

Yahoo!'s Board of Directors Responds to Latest Microsoft Letter

The Board of Directors of Yahoo! Inc. (Nasdaq:YHOO), a leading global Internet company, today sent the following letter to Steve Ballmer, Chief Executive Officer of Microsoft Corporation.

Dear Steve:

Our Board has reviewed your most recent letter with regard to the unsolicited proposal you made to acquire Yahoo! on January 31, 2008.

Our Board carefully considered your unsolicited proposal, unanimously concluded that it was not in the best interests of Yahoo! and our stockholders, and rejected it publicly on February 11, 2008. Our Board cited Yahoo!’s global brand, large worldwide audience, significant recent investments in advertising platforms and future growth prospects, free cash flow and earnings potential, as well as its substantial unconsolidated investments, as factors in its decision.

At the same time, we have continued to make clear that we are not opposed to a transaction with Microsoft if it is in the best interests of our stockholders. Our position is simply that any transaction must be at a value that fully reflects the value of Yahoo!, including any strategic benefits to Microsoft, and on terms that provide certainty to our stockholders.

Since disclosing our Board’s position with respect to your proposal, we have presented our three-year financial and strategic plan to our stockholders, which supports our Board’s determination that your unsolicited proposal substantially undervalues Yahoo!. Those meetings with our stockholders have also provided us an opportunity to hear their views.

We have continued to launch new products and to take actions which leverage our scale, technology, people and platforms as we execute on the strategy we publicly articulated. Today, in fact, we are announcing AMP! from Yahoo!, a new advertising management platform designed to dramatically simplify the process of buying and selling ads online.

Finally, our Board has been actively and expeditiously exploring our strategic alternatives to maximize stockholder value, a process which is ongoing. All of these actions have been driven by our overarching commitment to maximize stockholder value.

Our Board’s view of your proposal has not changed. We continue to believe that your proposal is not in the best interests of Yahoo! and our stockholders. Contrary to statements in your letter, stockholders representing a significant portion of our outstanding shares have indicated to us that your proposal substantially undervalues Yahoo!. Furthermore, as a result of the decrease in your own stock price, the value of your proposal today is significantly lower than it was when you made your initial proposal.

In contrast to your assertions about the effect of general economic conditions on our business, Yahoo!’s business forecasts are consistent with what we outlined in our last earnings call. As you know, we recently reaffirmed our Q1 and full year guidance, which is a testament to our ability to perform in line with our expectations despite the current economic environment. In addition, our three-year financial and strategic plan which we have made public demonstrates significant potential upside not previously communicated to the financial markets. This plan has received positive feedback from our stockholders, further strengthening the view that Yahoo! is worth well more as a standalone company than the value offered in your proposal, and would be even more valuable to Microsoft. Your own statements have made clear the strategic importance of Yahoo!’s substantial assets and capabilities to Microsoft.

We regret to say that your letter mischaracterizes the nature of our discussions with you. We have had constructive conversations together regarding a variety of topics, including integration and regulatory issues. Your comment that we have refused to enter into negotiations to conclude an agreement are particularly curious given we have already rejected your initial proposal, nominally $31 per share at the time, for substantially undervaluing Yahoo! and your suggestions in your letter and the media that you are considering lowering the value of your proposal. Moreover, Steve, you personally attended two of these meetings and could have advanced discussions in any way you saw fit.

As to antitrust, we have discussed with you our concerns. Any transaction between us would result in a thorough regulatory review in multiple jurisdictions. As a follow up to a recent meeting among our respective legal advisors we had on this topic, and at your request, we provided to you on March 28 a list of additional information we would need to further our understanding of the regulatory issues associated with any transaction. To date, you have still not provided any of the requested information.

We consider your threat to commence an unsolicited offer and proxy contest to displace our independent Board members to be counterproductive and inconsistent with your stated objective of a friendly transaction. We are confident that our stockholders understand that our independent Board is best positioned to objectively and knowledgeably evaluate our Company’s alternatives and to maximize value.

In conclusion, please allow us to restate our position, so there can be no confusion. We are open to all alternatives that maximize stockholder value. To be clear, this includes a transaction with Microsoft if it represents a price that fully recognizes the value of Yahoo! on a standalone basis and to Microsoft, is superior to our other alternatives, and provides certainty of value and certainty of closing. Lastly, we are steadfast in our commitment to choosing a path that maximizes stockholder value and we will not allow you or anyone else to acquire the company for anything less than its full value.

                                             Very truly yours,

           Roy Bostock                          Jerry Yang 
           Chairman of the Board             Chief Executive Officer

Developing with LINQ

Once in a while you encounter tools that change the way you work and write your code. Firebug is an obvious example of this. Having worked with .NET 3.5 the last couple of months, I started using a great tool that made C# development much faster. The tool is LINQPad , written by Joseph Albahari. It lets you query your SQL Server database using LINQ. It is very easy to map your database, and immediately start writing code.

LINQPad supports everything in C# 3.0 and Framework 3.5:

  • LINQ to SQL

  • LINQ to Objects

  • LINQ to XML

It has code snippets for pretty much all LINQ constructs.

In the results pane of the LINQPad tool, you can not only see the results of your query, but also the lambda expression it was evaluated into, as well as the resulting SQL that was executed against the database.

Not only does it speed up development, testing your queries for correctness and performance is also much simpler.

C# Query Expressions and 3.0 Features (Book Preview)

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.

Now that's a cool table

We worked with AT&T and the Surface folks to build this desktop application that will be showing up in AT&T locations across the company. Some of the fun features will be the interactive map, real-time phone comparisons by placing two phones on the table and lots more. We built the application using .Net 3.5 and the Windows Presentation Framework for the core application. For back-end connectivity we leveraged the Windows Communication Framework and linq. Check out the video below.``

Putting JCR into action – Sling and µJAX

**Putting JCR into action – Sling and µJAX **

During last couple of years the enterprise content management community has been noticing a steady rise in the popularity of JCR aka JSR170. A lot of CMS vendors and application server vendors have pledged support to this initiative. For those who are not familiar with JCR, it is the Content Repository API for Java Technology - a Java standard advocated by Day software. JCR provides a “JDBC” equivalent access to content so that the application code does not have to know the details of the underlying vendor implementation. JCR aims at providing an elegant solution to some of the content management challenges faced by organizations dealing with a profusion of content repositories and CMS products. JCR promises “best of both worlds” by providing a single API to access and modify content stored in a DB or in a file system.

I have been tracking the evolution of products based on JCR implementation for a while and was quite disappointed initially to see that other than Day (the proponent of JCR) none of the major ECM vendors provided any real support to JCR based repositories. However recently the situation is getting much better with Alfresco offering a JCR-170 compliant repository and Day supporting the Apache Sling initiative that exposes the JCR APIs via REST.

Exposing the JCR API via a set of RESTful services is a wonderful idea and Sling is one of the first RESTful open source web application frameworks built on top of JCR. Sling uses Apache JackRabbit as the JCR repository. JCR is a tree structured or hierarchical content store. So naturally it makes sense to map tree-structured URLs directly to the tree structure of JCR so that the nodes can be accessed just like a file system with static files.

Before looking at Sling, I tried to build a blogging tool using the evaluation of copy of CRX (Day’s Communiqué) and the µjax library that came with it. Unfortunately I didn’t make much progress with it because of lack of supporting documentation and missing files etc. Then I downloaded Sling Launchpad (a ready-to-run Sling configuration, with an embedded JCR content repository and web server with some Sling components). The maven build went fairly smooth, and I was up and running in less than 10 minutes or so. Initially I used the CURL to post content into the repository and later switched to an HTML form to post the content into the repository. Content in the repository can be rendered using ESP server side JavaScript module that comes with Launchpad.

The biggest plus I see with sling is that it handles the normal GET and PUT methods out of the box and translates them into corresponding JCR actions to retrieve and post content into the repository. The blogging tool is a very simple form of CMS, but it can be extended easily by writing servlet code. Although I used ESP to render the page, Sling supports other scripting languages supported by the Java Scripting framework (JSR-223).

I see a lot of potential for Sling. If we can build a good interface for posting and editing the content in the repository (I have been bugging Atul Kedar to post his custom JavaScript library for building advanced content entry forms into some open source repository) it could beat many of the CMS products out there in the areas of customizability and flexibility.