Galin Iliev's blog

Software Architecture & Development

LINQ Tutorial is DONE!

I am proud to announce that the Tutorial for C# 3.0 and LINQ in Bulgarian is done. There is no more links to StayTuned page (at least it is not supposed to).

I hope my bulgarian colleagues will find it interesting and useful.

And the cherry of the cake - I included PDF file for download - you can find the link on the bottom of left menu on the tutorial.

Hope it helps!!!

LINQPad and Think in LINQ

I've just found that Joe Albahari, co-author of the forthcoming C# 3.0 in a Nutshell, has released the Beta 2 version of his beta LINQPad - it is like Notepad for LINQ :)

There is also a challenge:

  1. Locate the shortcut for SQL Management Studio on your Start Menu and move it some place else.
  2. In its place, insert a shortcut to LINQPad.
  3. For the next week, perform all your ad-hoc SQL queries using only LINQPad.

At the end of the week, you will actually think in LINQ, rather than thinking in SQL and translating to LINQ. (LINQPad also allows old-fashioned SQL queries for tasks are genuinely impossible or clumsy in LINQ. You'll feel an unpleasant sense of failure, though, should you cheat and use this feature frivolously :)

If you can write all your ad-hoc queries in LINQ, you have a big head-start over everyone else in C# 3.0, LINQ and LINQ to SQL. (Further, LINQPad gives you a knowledge of LINQ that does not depend on Intellisense, and so will not fall to pieces at job interviews!) And continued use of LINQPad will keep your LINQ knowledge alive—if you're not lucky enough to be using LINQ in your current projects.


LINQ Tutorial - it is on final curve

Last week I was able to finish the biggest branch of LINQ Tutorial - LINQ to SQL, and most common LINQ to Objects. I have raw version of LINQ to Entities and LINQ to DataSet and I need a couple days to finish them.

So I am on final curve - I have to wrap up LINQ to XML and it's subset LINQ to XSD - My hopes are to finish it 'till the end of the week.

Speed up ASP.NET Debugging with Patch for VS 2005

ScottGu announced VS 2005 HotFix Patch that speed up debugging ASP.NET related projects in VS 2005. You can read more about it in this KB article here.

Background on the Issue

The particular bug fixed in this hotfix was surprisingly difficult to track down.  The slowdown issue occurred when breakpoints were set in multiple source files in the same project that had the same short file names (for example: two default.aspx.cs files) and which were organized in a certain directory structure pattern on disk.  The patch fixes this issue and should prevent the debugger from pausing when trying to load the web project's assembly symbols in this case.

Indexed LINQ

With the upcoming Visual Studio 2008 and new C# and VB syntax the abbreviature LINQ is already wide spread. With LINQ are mentioned a few branches- LINQ to SQL (the most popular one), LINQ to Objects, LINQ to XML.

But adding features for working with data to object oriented language brings its questions. Let's see the definition of LINQ to Objects from

"LINQ to Objects allows .NET developers to write “queries” over collections of objects. Out of the box there is a large set of query operators that provide a similar depth of functionality to what we expect from any SQL language working with a relational database, and if what we need isn’t present out-of-the-box, we can add our own."

Sounds good, isn't it? But the question arises: By having collection of objects (similar to tables) and language that allow writing queries (similar to SQL) is is there a way to speed up processing (similar to indexes)?

This is reasonable question and there are articles on the subject already. This is called i4o (indexes 4 objects). Here are some articles and links:

I think this is interesting and there is a future for it but in low market segment. I know there is such thing as Object Database and this sounds like one. In the posts I read it seems that MS won't put effort on something that would compete SQL Server 2005 Express if it grows enough. They'll rather improve SQL Server to support mapping and with this they'll achieve part if the goal while having SQL Server in the shape we know it. This is not in far future. It is already known that MS SQL Server 2008 will have Entity Framework built in.



13 disasters for production web sites and their solutions by Omar Al Zabir

A great software developer and architect from Pakistan Omar Al Zabir wrote an article about disasters for production web sites and their solutions. It is very interesting as it describes how to deal with problems (and event worse - disasters) in production.

Here is the list:

  1. Hard drive crashed, burned, got corrupted several times
  2. Controller malfunctions and corrupts all disks in the same controller
  3. RAID malfunction
  4. CPU overheated and burned out
  5. Firewall went down
  6. Remote Desktop stopped working after a patch installation
  7. Remote Desktop max connection exceeded. Cannot login anymore to servers
  8. Database got corrupted while we were moving the production database from one server to another over the network
  9. One developer deleted the production database accidentally while doing routine work
  10. Support crew at hosting service formatted our running production server instead of a corrupted server that we asked to format
  11. Windows got corrupted and was not working until we reinstalled
  12. DNS goes down
  13. Internet backbone goes down in different part of the world

Here is the article 13 disasters for production web sites and their solutions

Note: You can also take a look at his website - it is very impressing with Win2k look&feel

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