Note: Cross posted from GuruStop.NET.

My first DotNetwork Cairo Code Camp in 2009 was a great experience, because it was one of the biggest events I’ve spoken at (in terms of audience count, similar to SilverKey Demo Day II). However, Cairo Code Camp `10 had a much different taste!...

Note: Cross posted from GuruStop.NET.


Note: Cross posted from GuruStop.NET.

First WordPress Post From GuruStop.NET/Blog

A number of friends advised me to move GuruStop blog from to its own domain, and make it a start for my own “GuruStop” brand, especially @BinYahia...

Continue Reading Original Post...

image A great VIDEO series on all the nice effects (and functionality) you can achieve with jQuery JavaScript library for those who know NOTHING about it.

jQuery is a very powerful library. One of the first things I do when creating new project is to include the library in it. Microsoft is going to include it by default in ASP.NET web projects (All ASP.Net projects, not just MVC) starting Visual Studio 2010.

Here are some few examples of what you can do with it (VIDEO):

Have fun jQuerying…


imageIf you heard about Microsoft Oxite CMS, this is the new one, created as a different project to avoid previous developer comments.:

From Press:

Microsoft's open-source CMS platform is (re)born | All about Microsoft |

Project Homepage:

Quote From Press:

The guesses (by me and others) look like they were on target. The “Orchard Project,” which is getting its debut on November 11 at Tech Ed Europe is, indeed, the successor to the Microsoft Oxite content-management system (CMS).

Microsoft made available the first the open-source Oxite CMS bits at the end of 2008. Like Oxite, Orchard will be a free, open-source CMS platform — plus a set of shared components for building ASP.Net applications and extensions. The Orchard code is licensed under an OSI-approved New BSD license.

From the Orchard page on the Microsoft CodePlex code-repository site:

“(T)his core (Orchard) team will use their experience working with ASP.NET and Oxite to deliver a fundamentally new architecture that is the Orchard CMS. We have deliberately chosen to start development, with the guidance and contribution from the community. Over time we expect this project to become a viable successor to Oxite v1 and we know that providing a migration path for users of that existing application will be a high priority.”

The Orchard team includes various ASP.Net developers; two of the principal developers of Oxite, Erik Porter and Nathan Heskew; and Louis DeJardin, the creator of the SparkViewEngine for Model View Controller (MVC).

Despite its origins and team, Microsoft officials are claiming that Orchard is “not a Microsoft project,” according to the Orchard Web page. From the CodePlex page:

“Some of the initial (Orchard) source code and specs are available for review and comment but there is no downloadable release at this time. We encourage interested developers to check out the source code on this site and get involved with the project in these early stages.”

There is no public timetable (so far) for when a test build of Orchard will be out or when a final version will be released.

(Thanks to @kellabyte for the Orchard pointer, via Twitter.)

Update: As one reader (thanks, @karlseguin) noted, Oxite was anything but a big hit with developers, including many of those in Microsoft’s own .Net community. There have been many complaints about Oxite, from the development process, to the scope of the project, to the quality of the code and the way Microsoft explained the concept/product. Perhaps that’s one reason why Microsoft is starting over with a new codename and claiming this is not a Microsoft project…

clip_image001Mary Jo has covered the tech industry for more than 20 years. Don't miss a single post. Subscribe via Email or RSS. You can also follow Mary Jo on Twitter.

Quote From CodePlex Project Page:

About The Orchard Project

Orchard is a free, open source, community-focused project aimed at delivering applications and reusable components on the ASP.NET platform. It will create shared components for building ASP.NET applications and extensions, and specific applications that leverage these components to meet the needs of end-users, scripters, and developers. Additionally, we seek to create partnerships with existing application authors to help them achieve their goals. Orchard is licensed under a New BSD license, which is approved by the OSI.
The intended output of the Orchard project is three-fold:

· Individual .NET-based applications that appeal to end-users , scripters, and developers

· A set of re-usable components that makes it easy to build such applications

· A vibrant community to help define these applications and extensions

In the near term, the Orchard project is focused on delivering a .NET-based CMS application that will allow users to rapidly create content-driven Websites, and an extensibility framework that will allow developers and customizers to provide additional functionality through extensions and themes.

Project Status

Orchard is currently in the initial stage of development. We have chosen to launch the project at this stage in order to invite early participation by the developer community in shaping the project’s direction, and so that we can publicly validate our designs and development approach. Some of the initial source code and specs are available for review and comment but there is no downloadable release at this time. We encourage interested developers to check out the source code on this site and get involved with the project in these early stages.

· Feature roadmap

· Developer information

· Docs and designs/specs

About The Team

The Orchard team is a small group of developers at Microsoft who are passionate about delivering open source solutions on .NET technology. This team is releasing the project on its own; Orchard is not a Microsoft project. The team is primarily composed of ASP.NET developers and has recently grown with the addition of two of the principal developers on Oxite, Erik Porter and Nathan Heskew, as well as Louis DeJardin, a long-time ASP.NET developer, community software advocate, and creator of the SparkViewEngine for MVC.
Together this core team will use their experience working with ASP.NET and Oxite to deliver a fundamentally new architecture that is the Orchard CMS. We have deliberately chosen to start development, with the guidance and contribution from the community. Over time we expect this project to become a viable successor to Oxite v1 and we know that providing a migration path for users of that existing application will be a high priority.
We are working to define our contribution model, so stay tuned for information about how you can contribute and join the project team.

· About us

· Contact us

How To Get Involved

We hope that by engaging with the community in the very early stages of the project that we will be able to shape Orchard into a valuable set of tools and applications for the community. The Orchard team is committed to open community participation and is in the process of working through the details to be able to accept code contributions. We encourage community participation at all levels from general project feedback to bug fixes and patches.

· Check out the code

· Check out the docs

· Find and file a bug

· Propose a feature idea

· Send us feedback

Consider the opportunities…


imageMicrosoft has released a new Facebook SDK Version 3.0 (other than their old not-so-great one) and it looks to have not just updated APIs but also wide range of features supported in many application types.

Quoting a related blog post from c|net “The web services report” blog:

Microsoft on Monday released a software development kit for Facebook that allows developers to create Facebook applications for Silverlight and Windows Presentation Foundation. This should expand the reach of Facebook in third-party applications as well as make Silverlight and WPF more viable platforms for developers looking to build social applications.


A screenshot showing off the NewsFeed control for WPF.

(Credit: The Silverlight Team Blog)

The SDK comes complete with samples and tools to develop Facebook applications in ASP.NET, Silverlight, WPF, and WinForms. It also features the source code for the API, components, controls, and samples.

There are currently other libraries available that allow Facebook developers to develop with other technologies, such as JavaScript, PHP, ActionScript, and the iPhone. There are a variety of others as well, which can be seen here, but these are the ones that Facebook officially provides support for.

Microsoft, as you may remember, invested $240 million in Facebook back in October 2007. Many called this move more of a strategic play to keep Google and Yahoo from getting a stake in the company. The release of this SDK is a part of Facebook and Microsoft's ongoing partnership.

If you're interested in taking a look, you can download the SDK here.


Check out the SDK Overview at:


Quoting from homepage:

The toolkit is comprised of the following core assemblies:

  • Facebook.dll: This is the main assembly that will be used by all applications. This has all the logic to handle communication with the Facebook application. This assembly also has specific support of XAML applications (Silverlight and WPF) to enhance the Facebook platform to make databinding and data caching easier.
  • Facebook.Silverlight.dll: This is the Silverlight version of the main assembly that will be used by all Silverlight applications. This has all the logic to handle communication with the Facebook application. This assembly also has specific support of XAML applications to enhance the Facebook platform to make databinding and data caching easier. The REST API in this assembly is Asynchronous only.
  • Facebook.Web.dll: This assembly should be used by Canvas applications. The main functionality supported in this assembly is to encapsulate the handshake between the Facebook application and a canvas application (both FBML and IFrame)
  • Facebook.Web.Mvc.dll: Provide a support building canvas applications using ASP.NET MVC. Separated from Facebook.Web.dll to avoid all developers from needing to install the MVC bits.
  • Facebook.Winforms.dll: This assembly provides support for writing Facebook applications using Winform technology. This provides a Component that wraps the API to make it easier to use from Winforms. This also contains some user controls to help display Facebook data easily.

To get started we recommend you download the SDK and refer to the "How to" guides and the Facebook Developer Wiki to get familiar with these new resources.

  1. Download the SDK.
  2. Refer to the detailed instructions on the Facebook Developer Wiki. Here are some important links to use as a starting point.

Facebook SDK Version 3.0 Notes

ASP.NET Development
ToolKit Content Folder
Facebook Platform
Other Platforms

Have fun,



Some cool guys (all working in ITWorx I guess, one of the biggest Egyptian Software houses) have created a new website:

The website, as the name implies, is dedicated for ARABIC resources related to SharePoint.

It originally contained the technical blogs of the site founders (Founders' Blogs) which are very useful for posts about SharePoint, then very recently they have also lunched Screencasts (Also in Arabic) that start from the very beginning until further advanced stuff.

I think you’ll enjoy them!

I hope you like them,


imageMicrosoft has released a final version of its book “Microsoft Application Architecture Guide, 2nd Edition”.

The book is described as:

This guide is available online here in the MSDN Library and will be available in the Fall of 2009 as a Microsoft Press book, ISBN# 9780735627109, that you can purchase through local and online booksellers.

The guide is intended to help developers and solution architects design and build effective, high quality applications using the Microsoft platform and the .NET Framework more quickly and with less risk; it provides guidance for using architecture principles, design principles, and patterns that are tried and trusted. The guidance is presented in sections that correspond to major architecture and design focus points. It is designed to be used as a reference resource or to be read from beginning to end.

The guide helps you to:

  • Understand the underlying architecture and design principles and patterns for developing successful solutions on the Microsoft platform and the .NET Framework.
  • Identify appropriate strategies and design patterns that will help you design your solution's layers, components, and services.
  • Identify and address the key engineering decision points for your solution.
  • Identify and address the key quality attributes and crosscutting concerns for your solution.
  • Create a candidate baseline architecture for your solution.
  • Choose the right technologies for your solution.
  • Identify patterns & practices solution assets and further guidance that will help you to implement your solution.


More information about the book in this blog post:


The book is:

Available for online reading at:

Available for free download (PDF Format) at:

Available in print (to buy hard copy) from Amazon at:


Have fun reading,


While I was planning to write about the same topic and have the draft ready in my Windows Live Writer waiting to complete, I found an interesting question in StackOVerflow and couldn’t just resist to answer:

ORM/Persistence layer AdviceORM

The question starts with:

I'm starting a new project and I'm looking around for either a very good ORM or for a non-SQL-based persistence layer.

Then follows up with a REALLY GOOD summary of what he believes about each known ORM he knew out of his own findings and search. I advice you to go read it.

However, all this investigation didn’t get him to a single choice answer. And I can’t blame him. This is one fo the questions that will remain for so long without a single answer, or maybe having the popular “It depends” answer.


I have had a LONG research in this topic as well. I have read for so long (and watched videos/casts) to make sure of the best usage of many ORMs and then used them sometimes in test projects sometimes in production, and I wanted to share my thoughts based on this. I posted a long answer there on the question in StackOverflow, and I want to share this answer with you here. I may also have a second part of this post based on my existing Windows Live Writer draft, but, based on my previous times, I think I won’t!

Let me first quote some parts from the question itself:

I also want to avoid at all cost having to mess with string-based queries so tools supporting LINQ or otherwise intuitive and possibly strongly typed queries get a big bonus.
Finally working with POCO objects is another thing I'd really want to do
Here's a list of products I've evaluated and why they don't fit, just so that I don't see any advice about using those:

  • NHibernate: crazy xml stuff, too much set up, high maintenance complexity and cost for model changes, session factories are messy and don't fit well with my needs
  • Castle ActiveRecord: NHibernate based, little documentation plus some problems related to NHibernate still apply. Furthermore, to get decent models it takes so many attributes that one is better off creating the schema manually, and the way relations are handled is a shame.
  • Linq To SQL: missing POCO objects and according to MS it won't improve much overtime (EF is what they're committed to)
  • Entity Framweork: although in v4 POCO objects are possible, they're still pretty hacky and force you into doing too much manual work to set things up. Besides, v4 is just a beta
  • LLBLGen Pro: good, especially with SelfServicing adapters, but not POCO. Also, the LINQ provider isn't perfect yet. Finally, deleting a group of objects is not possible via LINQ which results in mixing APIs (one of which is far from intuitive) and that I don't like.
  • SubSonic SimpleRepository: for a few minutes I thought I was dreaming. The deam came to an end as I figured out how the thing didn't handle relationships

    Here was my answer:

    If you can afford LLBLGen license, go for it.

    I seriously don't like LINQ query-syntax the more I work with it (although I LOVE the language features related to it like Extension Methods and Expression Tres).

    I loved at first like everybody else, but being uncertain whether [[ where employee.Name.StartsWith("John Smit") ]] in that XYZ LINQ provider will be done in SQL statement or in LINQ to Objects (after the SQL returns all results), and whether [[ user.Roles.Contains(role) ]] will at all work or not is a big step behind.

    LLBLGen can make deleting all items without loading them as easy as

    MyEntityCollection.DeleteAll( new MyEntity {Condition = value} );

    This is pretty simple and I like it. You get lazy loading and you set eager/deep loading by default and/or per query using Prefetch API. You can compose and construct dynamically (and easily) any filter/sort/loading at infinite levels. It's very nice.

    There are only two problems about LLBLGen: first, it's price not all companies would love to pay especially given the hype Microsoft alternatives have. Second, the naming convention although standard in RDBMS theories) like PredicateFactory instead of "where" or "filter" and Prefetch instead of deep loading and even SortExpression instead of orderby, those all are a little scary to a developer working with it for the first times, but soon you learn to love them, given the power and ease they give. There are talks about POCO support in LLBLGen 3.0. I cannot tell about it because I don't know.

    Now given I no longer work in a company that uses LLBLGen, the company uses LINQ to SQL mainly because it's "proven" in so many projects without big failures (unlike EF 1, which is lacking even LINQ features in LINQ to SQL and has very bad performance and can be quite limiting in advanced mapping - which it should have been best for!). This website StackOVerflow itself runs on top of it!!! I used both in this company (EF after L2S) and hated both. The decision for new projects remained LINQ to SQL, and doing all we can to overcome it's limitations. You can work around it to do SEMI-POCO (you still need to use some L2S related types when it comes to associations).

    I also do some small projects at home. Since I nolonger have LLBLGen license, I decided to learn NHibernate and use it along with Fluent NHibernate and LINQ To NHibernate. I have learned through this that NHibernate is VERY strong. It changed how I work by some features like updating DB schema automatically (I never touched the DB almost when using it). LINQ provider (in NHibernate Contrib project) is quite lacking sometimes but there is the unreleased source code of NHibernate itself contains a better LINQ provider (haven't tried it yet). The "Session" in NHibernate has problems when you are doing web development similar to those related to DataContext in L2S or ObjectContext in EF (LLBLGen doesn't suffer from those thanks to self tracking entities).

    The biggest problems I had with NHibernate though was ability to find information. Too many pieces that should be put together in certain way and not much guidance can include advanced information for both mapping and querying. If not I had a friend (Tuna Toksoz , @tehlike on twitter) who happended to be a committer in NHibernate project source code, I'd really be in serious trouble.

    The moral I learned was: If you want something that just works and a bit basic use Linq To Sql or SubSonic, if you want something in the middle and your production environment can afford BETA .NET version (given golive exists) use Entity Framework 4.0, if you want something very powerful and can afford the hard learning process go to NHibernate, AND, BEST OF ALL, if you can afford LLBLGen, USE IT.

    Let me know your own thoughts on the topic.

    Image007000 - Copy Today (technically yesterday, since it’s 3:26 AM already while I’m starting this), Mr. Adam Mohamed Meligy finally arrived home, after staying 9.5 days in nursery. This –dear audience- given Mr. Adam arrived to our world only in October 5, 2009, a date that the entire world will (sooner or later) always remember!

    Mr. Adam is now taking a personal cover, pretending to be a normal baby, while he is pretty professional, he cannot sometimes hide his special natures, being relatively quiet compared to normal babies, and highly responsive to touches and (believe it or not) spoken notes/requests.

    These are things that the world will remember once Mr. Adam finishes his first big achievement in the field he will take up for living (God Willing). Some other small details matter more to the family, both his grandparents –for example- note him as their first grandchild. I –personally- recognize him as my extra chance in life! If I fail to manage to be another Anders Hejlsberg/Martin Fowler, Scott Guthrie/Brad Abrams, or Scott Hanselman/Rob Conery/Phil Haack (still trying), Mr. Adam has a bigger chance; else wise, he’ll be digging his road as a notable figure in some different field (God Willing).

    I feel that I was blessed with not just two more legs and hands, one more tongue and a couple of stronger eyes, extra more years to live, but also with an extra brain and superpowers. You can always upgrade your thinking methodologies, even reinvent the way you think completely, but you are always limited to your physical brain constraints that -although can be always stretched more and more- have their limits. Now I have an extra brain that can do pair thinking with me and reinvent the way things happen by the experiences he will be having on his own (God Willing).

    So, this is to log that Mr. Adam (temporarily until he decides to replace that with “Eng.”, “Dr.”, and/or “Prof.”) has just finished implementing phase zero,  coming to existence!

    Few More Facts About Mr. Adam’s Arrival

    • The exact time of arrival to world is October 5, 2009, 10:30 AM Abu Dhabi Time, that’s 8:30 AM Cairo Local Time (CLT), 6:30 GMT.
    • Although born in Kornesh Hospital, Abu Dhabi, UAE, Mr. Adam holds the Egyptian nationality, just like his parents. He also inherits the Islam religion, which he will be (God Willing) discussed about as soon as starts making conversations, so that he practices it for the sake of belief, not inheritance!
    • Mr. Adam reached our world after hiding in a secret cafe for slightly less than 35 weeks, reaching our world at the weight of 2.25 Kg.
    • Mr. Adam has his email, Facebook and twitter accounts created on the day of arrival and moderated by parents. Soon (God Willing) he will be running those himself, and creating his own LinkedIn account on his own once he finishes his first school and starts a professional expert career simultaneously.
    • Mr. Adam has come with the message to make the world a a better place to live for humans, not to dominate the entire world ;-).
    • Since arrival, the protocol requires using the prefix “Mr.” when mentioning Mr. Adam’s name in conversations. Only tweets/categories, etc… are allowed exceptions due to technical/official nature. This prefix is temporary as per the relevant note above.

    On behalf of the family, I congratulate the world on having Mr. Adam with us. I’ll be following up with his significant news until he starts blogging (hopefully soon, God Willing).


    Few minutes ago a colleague and friend asked me about some problem he was having with ASP.NET themes. He was using a theme and including a CSS file in it, the CSS file was linked in the generated HTML but clearly it was not applied. Putting the URL of the CSS file in the browser address bar would return an empty result in Firefox, and a crappy DOCTYPE,HTML,HEAD,BODY tags in IE. The same website works normally with other developers running Windows XP or Windows 7.

    Going further to the problem, I tried checking the file access, giving extra permissions and so on, checking web.config and global.asax for any ASP.NET HTTP Handler or HTTP Module that might be handling all requests. None of this existed. Then, I switched to IIS, trying to change the website from custom Application Pool to default integrated pipeline one to default classic (IIS 6 like) one, but no use.

    Now I started thinking, images in the website didn’t show also! I didn’t know whether this was a DB/code issue or related to not showing the CSS, well, maybe something is wrong with IIS installation, right? Well, exactly!!!


    Here’s what the problem was:

    Having installed IIS 7.5 for the first time, the guy thought he just needed to choose ASP.NET features in WWW, he never realized he has to have “Static Content” checked as well. It was really funny when discovered!

    Wouldn’t you agree?

    More Posts Next page »