Galin Iliev's blog

Software Architecture & Development

LINQ 2.0

Erik Meijer, the "Creator of LINQ", summarizes in his paper "LINQ 2.0: Democratizing the Cloud"  what is achieved with LINQ 1.0 ( it is on Beta 2 stage and architecture&design stage is passed so we know what is in it ) and what are the goals for LINQ 2.0.

This is intersting reading as this is first place I met LINQ written with a version number :) and this can give an idea on what is coming next :)

Andres Aguiar gives explanation of "Democratizing the Cloud":

Democratizing the cloud means “Make easier to program distributed applications”. He wants us to build a single tier app and publish it in multiple tiers.

This is not all... there is a bit more: there is a video on Channel9 Erik Meijer: Volta - Wrapping the Cloud with .NET - Part 1.

I am not sure if LINQ 2.0 and MS Codename Volta are related, though... Mary Jo Foley writes:

* Volta is an academic incubation project focused on programming in the cloud, Ajenstat said. Volta has no connection to Astoria, Jasper or Katmai. Instead, it is focused on how you expose the Web Services and SOA data that is in the cloud, he said. Volta isn't about programming against hosted SQL Server; it's more futuristic than that. 

But wait.. There is another unknown word ( at least use of this word ) - Cloud. Again Mary Jo Foley tries to give answer in hist post Is Microsoft’s Cloud OS actually a Cloud DB?

MS SQL 2005 Service Broker issue

I got an email from a colleague of mine with a nice issue solution:

When you attach or restore a database that has service broker queues on a different database, you MUST rerun this command:

alter database elgdistribution set enable_broker

Without doing that, the queues will fail to write – SILENTLY! They do not throw any sort of exception and appear to be functioning properly. VERY IRRITATING.

Thanks to Brian Romanko

Project Astoria

I am on codenamed projects wave today and I would like to share with you another one - project Astoria (reposted from official blog):

Project Astoria Overview

The goal of the Astoria project is to enable applications to expose data as a data service that can be consumed by web clients within corporate networks and across the internet. Such data services are reachable over regular HTTP requests using standard HTTP verbs such as GET, POST, PUT and DELETE to represent the operations against the service.   The payload format for the data exchanged with the service can be controlled by the client and all options are simple, open formats such as plan XML and JSON. The use of web-friendly technologies make it ideal as a data back-end for AJAX-style applications, Rich Interactive Applications and other applications that need to operate against data that is across the web. 

                Further reading: Astoria Overview, Using Astoria        

By Mike Flasko

For those who are interested in architecture & design & process the team made another post Transparency in the design process which describes how the things happens inside MS (described for this particular project)

Microsoft codenames

I came across on posting series that describe Microsoft codenames. It is good to see all them in one place but it is a bit confusing and overwhelming :)

You won't be surprised that many new things are behind the corner... Check Mary Jo Foley's series of Microsoft Codenames.

(via DevLife blog)

There is also good list on Wikipedia. I found there that "Tuscany" is codename of online version of Visual Studio and it is currently a research project. Interesting, huh!?

The bad news and the good news

LINQ to SQL Debug Visualizer was removed from VS 2008 Beta 1... if you use LINQ to SQL you know how useful it is to examine generated SQL code from LINQ statements as well as returned results. but it was removed from Beta 1 and still missing in Beta 2...

Now the good news :) There is way to install it back. But this is not all. You can download the source code and make changes (if you want) or just examine it. I guess there are no doubts who posted it :) - Scott Guthrie wrote a post with full explanation what is LINQ to SQL Debug Visualizer, how to use and how to install.

How to build custom LINQ provider?

Many people asked this question since May 2006 LINQ Preview was announced. We know there are several providers implemented by Microsoft:

But if we have custom datastore how we can implement LINQ provider for it? For a long time LINQ to Amazon by Fabrice Marguerie, was the only third-party provider and although he explained it was still many question left opened. (I've just found that there was LINQ to WebQueries by Hartmut Maennel predates LINQ to Amazon by few days.)

Matt Warren started very nice and deep series of blog posts that covers the process of writing custom LINQ provider. Even if you don't plan to write custom provider this post can give you an idea how the things work:

Of course, it is good idea to check if the provider is not written already :) See below list of providers.


OakLeaf Systems blog has a nice post that gives list of third-party LINQ providers (re-posted): 

  • LINQ to WebQueries by Hartmut Maennel handles searches in the SiteSeer and MSDN Web sites. (This provider predates Fabrice's LINQ to Amazon provider by a few days.)
  • LINQ to Amazon by Fabrice Marguerie, a co-author of the forthcoming LINQ in Action book, was the first third-party LINQ provider that I know of. LINQ to Amazon returns lists of books meeting specific criteria.
  • LINQ to RDF Files by Hartmut Maennel handles queries against Resource Description Format files' triples. Part I of the two-part post is here.
  • LINQ to MySQL by George Moudry, based on the LINQ May 2006 CTP, was in the development stage as of January 2007, but George says it's "capable of simplest queries and updates" and "now has support for most primitive joins."
  • LINQ to NHibernate by Ayende Rahien (a.k.a. Oren Eini) translates LINQ queries to NHibernate Criteria Queries and is based on the Orcas March 2007 CTP. The documentation that describes development of the provider presently is at the Part 1 stage.
  • LINQ to LDAP by Bart de Smet is a "query provider for LINQ that's capable of talking to Active Directory (and other LDAP data sources potentially) over LDAP." As of 4/11/2007, Bart's "IQueryable Tales - LINQ to LDAP" consisted of Part 0: Introduction, Part 1: Key Concepts, Part 2: Getting Started with IQueryable, Part 3: Why do we need entities?, Part 4: Parsing and executing queries, and Part 5: Supporting Updates.
  • LINQ to Flickr by Mohammed Hossam El-Din (Bashmohandes) uses the open-source FlickrNet C# library as its infrastructure.
  • LINQ to Google Desktop by Costa Rican programming language enthusiast Luis Diego Fallas supports GDFileResult and GDEmail types. A subsequent Adding support for projections to Linq to Google Desktop implements the LINQ Select expression.
  • LINQ to SharePoint by Bart de Smet supports writing LINQ queries for SharePoint lists in both C# 3.0 and Visual Basic 9.0 and communicates with SharePoint via Web services or though the SharePoint Object Model. The SpMetal command-line utility automates C# or VB class generation.
  • LINQ to Streams (SLinq, Streaming LINQ) by Oren Novotny processes continuous data streams, such as stock tickers or sensor data. The project's home page on CodePlex includes an animated GIF simulation of a stock ticker displayed in a DataGridView. The current version supports Select, Where, Order By, and Descending only.
  • LINQ to Expressions (MetaLinq) by Aaron Erickson (the developer of Indexes for Objects a.k.a i4o*) lets you query over and edit expression trees with LINQ. Like .NET strings, LINQ expression trees are immutable; the only way you can change a LINQ expression tree is to make a copy, modify the copy, and then replace the original. MetaLinq's ExpressionBuilder lets you create an "Editable Shadow of an expression tree, modify it in place, and then by calling ToExpression on the shadow tree, generate a new, normal, immutable tree." ExpressionBuilder is an analog of the .NET StringBuilder.

* i4o isn't a LINQ provider, per se, but a helper class that can increase the speed of LINQ queries against large collections by a factor of 1,000 or more. InfoQ published on June 22, 2007, Aaron Erickson on LINQ and i4o, an interview of Aaron Erickson by Jonathan Allen about i4o's purpose and background.


Hope you'll find this useful

...and it keeps growing...

This week I spent some of these geek nights... you know - nothing romantic - you in front of PC and filled with passion about technologies :) and I was able to wrap up two of the parts of my LINQ Tutorial (in Bulgarian) - LINQ in details and Basic operators in LINQ.

I will be glad to hear your opinion...

I will try to describe LINQ to SQL 'till the end of the month and with this part most of the tutorial will be finished. Let's see how things will go after long waiting (and hopefully deserved) vacation.