My Answer To The Question: Is having an online reputation on sites such as Quora important for young people?

Social SitesToday I’ll be sharing with you another answer I’ve added to Quora. The question I answered was:

Is having an online reputation on sites such as Quora important for young people?

And here’s my answer:

In a direct way, only specialised sites count. For programmers for example, a high rank in StackOverflow might be valuable to some employers.

Apart from that, for a site like Quora or so, a high rank will possibly be just like contributing to charity or playing a team sport. A little nice thing for the HR person or cultural interview.

However, there’s more…

Answering questions will likely require you to research topics that you thought you know, when you start explaining them, you get the areas you miss and you figure them out to complete the answer. As the old saying goes, best way to really learn something is to teach it.

Even if a normal answer like this one I’m providing  Just writing your thoughts does help organize them, which is a very good both mental and writing exercise.

So, in short, it’s nice, very nice to have, although not necessarily that important.

Authoring Introductory Articles: The Pitfalls I See As A Reviewer

Authoring Introductory Articles

Just finished replying to an author who asked me to review his introductory article.

The lesson learned from reading and reviewing is that there are some quite common pitfalls to these kinds of articles, which are essentially the same thing:

Thinking That One Size Can Fit All

You are writing an introductory article, so, you target beginners, but even for beginners, you have to assume some level of common ground as a foundation to build on, but how much of a common ground is that? IS the author targeting those who have experience with similar tools/concepts? Students? Professionals with other (unrelated) programming experience?

Sometimes it feels like the author keeps changing his imaginary idea of the intended audience as they keep writing. Eventually the author finds himself inserting some hints and references that if the reader understands then they probably don’t need to read your article (except to review it).

Which leads to:

Unlearning is hard

Just simulating not knowing what you know already. Yes, it’s not that easy!

If you are an author

When you work on any kind of introductory material (which is different from these posts you write just because you want to “take the thought off your chest to the wild”), always be very strict about:

  • Who you audience are
  • Who your audience are not

Identify them by what they do, and what experience they had doing what they do. Be honest with yourself about this identification means they’ll actually benefit from your material or they’ll just congratulate you on it (if you know some people who fit into the audience) without real benefit.

Think of what they are “not” more often as you keep writing. Check every assumption about the audience that you make in the material against the “not” bit.

You may find it hard. Depending on why you are working on the educational material, it may simple be worse changing the intended audience. If this happens without lots of modifications to the work you already did still, it means neither of your images about the intended audience were correct, not the original one, and not the new one too.

As A Reviewer

A reviewer also has their own challenge…

How to use Unicode in WordPress slugs (Urls) on Windows 2008 / 2012 (IIS 7 & 8)


My wife has a bilingual weblog. She writes in Arabic and in English. One thing she noticed is that when she writes a post in Arabic, and does not specify a post slug (URL) manually, WordPress will generate a slug in Arabic based on post title (which is encoded to equivalent URL Unicode escape characters).

The problem is that URL was quite unusable, going to the the URL (say, by clicking the post title in homepage) would redirect to blog homepage instead of the post details page, making the inaccessible except in homepage and category index page. She had to go back and change the post slug to something in English to make it accessible / linkable.

Putting aside whether it’s a good idea or not to have your URL path / post slug in Arabic or Unicode in general, I knew I have seen it before, and it really should work without much effort.

The Solution

Luckily, someone had a StackOverflow answer that did help me. the problem seems to have something to do with the implementation of the FastCGI module in IIS 7.x, and IIS 8 / Windows Server 2012.

The relevant link was a Microsoft Knowledge Base article that suggested: * A Service Pack install, which did not help much, because I already keep my hosting VPS always up to date with regular Windows Updates * A Registry fix, which did the trick nicely

The Registry Fix

The KB article suggested this as an example, I just copied the following code, went to Start -> Run and pasted it in:

It didn’t work instantly though, I also needed to run IISReset to get Arabic URLs to work.

And that was it!

Visual Studio 2010 Productivity Power Tools: Copy HTML To Windows Live Writer

Just a quick note, if you install Productivity Power Tools For Visual Studio 2010.

It has a nice feature.. Copy code as html. The feature doesn’t add any new menu option or whatever, simply when you copy the code the usual CTRL+C or Edit -> Copy way in Visual Studio, and paste it in a text-only editor like Notepad, it’ll be treated as text normally, but if you paste it in an HTML capable editor like Microsoft Word, it’ll be paste as HTML.


If you already know what the feature is, and have a problem with Live Writer 2011 or similar version, you can skip to the title that mentions it.


  • If you wonder how  made this rectangular selection, you can do it by pressing ALT before selection and holding as you move the mouse to continue to select
  • If you wonder why, simply to avoid the spaces on the left in the pasted code

If I paste this in notepad, nothing new!



But if I paste in Word 2010 (Outlook is the same)


(it can be better if play with font size and text wrapping options)


Or in Visual Studio HTML Designer



If I paste in source view or any other code-editor view in Visual Studio, it WILL not paste as HTML but as normal text. This is intended, because when you do copy / paste inside Visual Studio, you want it to just work, not have to clean all generated HTML


This is related to the way this feature works. In Windows, you can have multiple formats of copied stuff in clipboard. Text and HTML are two of these formats. So, the feature is simply adding HTML format option to the clipboard, and Visual Studio built-in functionality of course adds the text format already.


Windows Live Writer

Obviously Windows Live Writer is an HTML editor for blog posts, among other features. And I bet it is as obvious that the most common use of this Copy HTML feature is to embed in your blog posts.


Putting code in blog posts this way has its own disadvantages and disadvantages. Those, along with whether you should use this approach or not, are beyond the scope of this post.

If you are interested in the topic though, Scott Hanselman has a great discussion / comparison of so many approaches and the Pros/Cons of each of them:

The Problem

If you try to paste the code in Windows Live Writer using CTRL+V, here is what you get:


Hmm.. This is not just text (notice font type) and not complete style.

Let’s see the source for that…


This is quite confusing, isn’t it? Clearly it DID realize we have some HTML, but the result has nothing to do with what we we have in Visual Studio at all !!


The Supposed Non Working Fix

If you look at the official announcement of the feature. or StackOverflow question like this (before I reply to it, months after the guy marked the correct solution already), you notice it says you need to paste using CTRL + SHIFT + V, not just CTRL + V. It means "Paste Special".

You go enthusiast to Live Writer to give it a try, you press CTRL + SHIFT + V, ALT + K. But you may encounter the same other problem as me, it doesn’t work, at all, at least in my Windows Live Writer 2011.


The Solution

Well, after looking for the the "Paste Special" feature in Windows Live Writer, it was very close to me, in the context menu (right click inside text editor)



When clicked, we get the dialog in the official announcement, by default it selects the 2nd option, but we should select the 3rd, "Keep Formatting"



And here we go…



Works as advertised!



Copy HTML Visual Studio Productivity Power Tools Feature Settings

Let’s look at the code we got inside Windows Live Writer (it doesn’t matter which application I guess)…


As you can see, this is really ugly code, so many <span> tags with inline styles, and even <font> tags (thought no-body uses them anyway) and so on.

You can argue this is normal in this way of adding code to blog. You can argue this is why you should ignore this way completely. I’d ask you to have this discussion in the great post Scott HAnselman wrote about this and other approach in this case, but assuming we continue with this one, let’s see what we can and what we cannot improve here…


In Visual Studio, Go To Tools -> Options, from the right side tree, navigate to Productivity Power Tools -> HTML Copy:



The first two options are like header / footer of the code. Those are the opening and closing tags of the generated HTML code. You can change them as you like, for example, for me, I’d add <code> tag around those since I have some extra CSS applied to this tag boxing style ad want my snippets to take it.


The emit spam class will not use CSS styles if you sett to true, instead, will use certain CSS classes. Do not select it unless you know what the CSS classes are and have their styles. Also, if you add those styles to the blog CSS, it won’t show in RSS readers, and if you put in each post, it just feels wrong – again choice is yours after you read Scott’s post.


The emit spam style is what created us the inline CSS. This is the default and unless you care about minimizing the noise you’ll be interested in trying the previous option and disable this one.

You’ll want to enable the two if you are testing to see what inline styles will apply to <span> tags with which CSS classes.


The option to replace line-breaks (new lines) with <BR> is something you normally won’t set to true. You can see the default surrounding tags include <pre>, and <pre> tag in HTML reserves spaces and line breaks, unlike other HTML tags.

If you keep the line breaks and the <pre> tags, the code will be displayed properly in your blog, and when someone tries to copy it to their code editor (Which understands text only, even Visual Studio source/code editor as mentioned above) the line breaks will work correctly, but if you use <BR>, the text editor will not see them (As this is HTML not text) and will render multiple lines in only one, and the poor reader will need to add the line breaks on his own.


The last option is what letter or code is used for space s(Assuming even tabs will convert to spaces).By default it uses the HTML code for spaces &nbsp;. If you are keeping the <pre> tag in your generated HTML, you can replace this with normal real SPACE letter (just replace the value in text box with one press on the space-bar in your keyboard). Since I recommend keeping the <pre> tag anyway, I recommend you use spaces directly too.



I noticed that with different plugins and options to render code in blog with Windows Live Writer, it quite affects the stability of the application. You can see it easily crashing when you move between Edit/Preview/Source views.

Windows Live Writer has a nice recovery feature that usually work (sometimes insists on offering to recover what I recovered already. but that’s fine). However, you should also save yourself a piece of mind and press CTRL + S every now and then and specially before switching views. I press it all the time like crazy every line or less!



BTW, this is how the code looks for me on THIS blog:

public static void RegisterRoutes(RouteCollection routes)

        "Default", // Route name
        "{controller}/{action}/{id}", // URL with parameters
        new { controller = "Home", action = "Index", id = UrlParameter.Optional }


Of course you know how to view source in your browser Smile


BTW, this was NOT the blog post I wanted to have done this week. There is another one in the works, about how easy it is to work classes and converting them to different formats like JSON.


p>If you know my public Github URL, you can get the code already, if not, stay tuned till this weekend or so Winking smile

Search Engine Optimization (SEO) Secrets On My Blog – Advertising Also

Just a hour ago, I got an interesting question via the contacts page in this blog, about search engine optimization, and I wanted to share the answer with you…

The question is:

I’m a software engineer and SE Optimizer. I’m currently assigned a project that needs general information of the mini sites and blogs regarding their SEO strategy and daily revenue. I read your blog a lot in my .net related problems and thought of finding the details about your blog.
I found out that there are daily ~900 page views of your blog and your page rank is 3.

Mohamed what I wanna know is that whether you have employed any SEO strategy on your blog or this is just the good will traffic that comes to view your blog.

Also what is the daily ads revenue of your blog and what kinda ads you have deployed on your blog.

Although my Google Analytics statistics tell me slightly better results than mentioned in this message,, this is an interesting question I’d love an answer indeed. Scott Hanselman taught us though it’s better to reply to those in public and share the benefit with everyone, let’s see:…


In fact, I do not have special SEO strategy. but here are some highlights:



I used to have a blog at GeeksWithBlogs.NET (in 2005), a high rank .NET blog host, then moved to (2008), which is sub domain of the official ASP.NET site, I made sure the new blog URL shows in the title and description of the old blog., and re-posted the items that seemed to have high referrals from search engines.

When I moved to my own domain, GuruStop.NET (Feb. 2010), I imported all previous posts to it and wanted each post in the domain to redirect to the corresponding post in GuruStop.NET.


I created an ASP.NET redirector page on my new hosting that uses permanent redirection to a post based on post title part of the URL (slug) and date parts also. The redirector used to depend on referrer URL and if not present then on query strings.

To point to the redirector ASP.NET page from the old blogs,  I used a combination of HTML meta refresh redirections (which didn’t seem to work well with referrers) and JavaScript redirection as well.Yes, it’s true that search engines will not realize the JS redirection, but people getting search engine results in old blogs will be visiting the new posts, and this is sure one-way-or-another will improve the page rank.


Cross Posting

In my previous blog move, I used cross-posting to keep links coming to my blog. One drawback of this is so many duplicate posts coming up in search engines. For a new domain like GuruStop.NET, I could not do that as it could also harm the page rank of the domain.


Avoiding cross posting is one of many Scott Hanselman tips for bloggers. Those are VERY valuable when I started this blog.


Post Link Sharing and Social Bookmarking

On the other hand, mentioning older blog posts in newer ones, and even in my public sessions/presentations and/or private emails (when relevant to the context of the email not as spamming) to mailing lists and/or friends, as well as announcing new posts on my twitter and facebook accounts, has shown a pretty interesting effect in getting more people (and high rank people) to notice some of my posts. One example off my head for getting high rank readers is my post about choosing an ORM.


Sharing links on social bookmarking sites, either general like Digg or .NET specific like SotNetKicks or DotNetShoutOut seemed to help, but not sure to what extent. I’ don’t always do it anyway.


One note about sharing buttons (like “Digg this post”, “Tweet It”, ….) either in the post itself or in RSS feeds, those did not seem to get used at all! Some people liked a few posts enough to submit them to social sites, but almost none used the sharing buttons to do so.

One other thing that didn’t seem to be very useful is announcing new posts in general developers lists, at least talking about Egyptian ones.


Topics, Keywords, Titles, URLs (Permalinks), …

I tend to believe that correct titles, as well as choosing rare topics when possible to write about (one reason behind low rate of posting), are the main reasons behind the fact that most of my audience usually come from search engines!


URLs / Permalinks

Of course, like most blogs, I use pretty URLs / Friendly URLs / Pretty Permalinks for all my blog posts, category(ies), tags, etc.. I cared about getting extension-less URLs also, although I don’t believe this was a difference. I use the standard /blog/year/month/day/slug/ style for all posts.

Pretty standard, ha? I considered omitting parts of the date like day or omitting it all, but thought, when I go to any blog, I usually look at the URL of any post I read in a new blog to tell it’s date. It’s much easier for me than looking at the page however clear the post date shown in it is. I didn’t want my readers to miss this “feature”.


Titles / Keywords / Tags

Typically, I depend on making good post titles (My blog engine automatically converts the title to URL part (slug) as well). The title is always full of the relevant keywords to the topic.

When the same topic can in expressed in 2 ways or more, I make sure to mention all of them. I use the most common one in title, then the less common one in the first paragraph of the post, and if there are more, make sure to mention them either in brackets or  in following paragraphs.


I also make sure to include as many related keywords (tags) in all my posts. Yes, the tag menu on the right of this blog is maybe not the friendlier (yet still usable), but I it’s hardly used to navigate the website anyway. Not sure if this is affecting in any way though. I tried Technorati tags widgets before as well (from those built-in Windows Live Writer), but those were completely the same either included or not.



Whenever possible, I try to avoid writing except rare topics, where I really have something different than written before. This makes  the one who has similar need to the one I wrote about find my post easier. I do not try to go in the race of the repeats and duplicates whenever possible, at least in post titles.

This is sure easier when there are many new technologies coming, or when working in rare field with flexible time for writing. however, sometimes I just remain lazy unaware of the things I have in my freelance or day work code that can be worth sharing here. It’s a double-edge weapon indeed!


My Name IS A Trademark – The Blog Name Also Is

One important keyword is my own name! I have chosen to give the blog its own trademark “GuruStop” and stick to that, but it is still important that if someone looks “GuruStop” or “Mohamed Meligy” up in Google s/he’d find this blog showing up.

For GuruStop I dedicate the blog domain as well as the blog title. For my name, I make sure to put it first thing in the sub title, and put it different areas here and there. Currently I need to manage my SEO plug-ins to have better control over the meta description for just that.


The Automatic Stuff, SEO-Related Plugins

This blog uses WordPress as a blog engine. I have made that decision after reviewing so many .NET blog engines and being not-satisfied-enough about them all. One good benefit of the long age and popularity of WordPress is the huge amount of plug-ins available for it. I take advantage of that.

Some of the plug-ins I use include: “All in One SEO Pack”, “All In One SEO Pack Windows Live Writer Bridge”, “Core Tweaks WordPress Setup”,  “MetaWeblog API Client”, “pageMash”, “Post Layout”, “search engine related posts”, “Top Level Categories”, “Yet Another Related Posts Plugin”, “SEO Automatic > Core Tweaks”


Of course I keep an eye on my blog usage from time to time using Google analytics, etc…


Ads / Advertisements

I solely use as an advertisement platform on this blog. Reason is: They’re focused on .NET community, so, they probably have higher possibility of providing value to my readers just like my own posts (They run the ads on big sites like CodePlex and other big names. I had to show them some Google Analytics statistics to get accepted!).. If the ads serve the marketer only not the reader, they’re no more than a piss-off to my readers.

Currently I only get $8 to $13 per month. This is hardly the hosting cost of this weblog.  I haven’t yet pulled that from PayPal since the total is still below $50. Watching my ads statistics, it was very natural to realize that the more I write new posts in a month, the more ad revenue I get.


Before I went for that, I used Google Ads, images only. A friend told me text ads are way better but I thought the audience of the blog (mostly developers) must have become ad-blind against the well-known pattern of Google text ads. I couldn’t evaluate the whole experience well by then anyway, so, I moved away.


One thing to note about ads is how they’re placed in this blog. You’ll notice there is only one ad per page, and the ad location of the homepage is different from post details page. This is on purpose (and got me some JS workarounds to get working right).


Room for Improvement…

I have to admit that I’m missing much in this blog SEO area though (and ads). I could have done much more:

  • Modify meta keywords manually for each post
  • Use a custom URL slug with only SEO keywords not entire post title (which may have a lot of “a”, “in”, “for”, “the”, “I”, …. )
  • Add even more ads!
  • Write more posts!! (I know I know, lazy me)
  • Do some effort on sharing my posts in .NET social bookmarking sites
  • I used the “Blog” category for all posts just in case I use the domain later for more stuff. Maybe I better give up this never-coming planning and / or use sub categories in addition to tags (but less fewer).
  • Probably I should market my other methods of contact as well. Should put my twitter ID in clearer area of the blog theme for example, etc…
  • Another Reminder: More posts are needed, “Content is the king”.
  • … and sure there is more!


    Your Experienced Suggestions…?

    If you are reading this and you do have a blog or some experience in SEO, it’ll be great to put it in the comments for the readers, and/or post it to your blog and link it in the comment.

    Such calls for actions have been pretty successful in previous posts, hope this one is different Winking smile

  • GuruStop.NET, A New Domain For An Old Blog…

    image 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. Various limitations and inconsistencies in Community Server powering supported this suggestion of course, but, still, leaving as a primary blog domain is really hard. You know, it’s the same domain that @ScottGu and @FransBouma and other heroes park their weblogs!

    Yes, this is why I haven’t blogged in the last 2+ months.  At the beginning I thought what my criteria should be. This is the second time to switch my blog hosting, and I don’t want to do it again – Finally I ended up getting WordPress with some plug-in and configuration hacks, and hence GuruStop.NET (the domain) has come to life.

    I may write about how I ended up with WordPress after testing all well knows .NET weblogs, and the customizations that helped me be convinced enough with the move soon, if I see some interest from your side ;).

    What about the other blog URL(s)?

    Well, I hate to lose the wide reach of RSS, so, I will be cross posting to it from now on.

    Also, if you are subscribed to the RSS feed, the feed URL is still the same (thanks to FeedBurner):


    I missed you guys. Hopefully, we will not miss each other that long again!

    GTG now, will be back with some news …

    Small Tip: Use your Google Account OpenID URL. But, What’s The URL?

    Simplified (Inaccurate) Background About OpenID

    Some websites allow you instead of registering and logging-in (meaning re-entering the same information you entered before in so many other sites), to enter what is called Open ID URL, which is a URL given by a another website that you already logged in and has your information (called OpenID provider).

    Once you enter the URL and continue, you get redirected to the OpenID provider confirmation page whether you want to be able to login to the new website using the same login,which gets redirected back to the new website but this time as logged in user.

    If your OpenID provider is a popular provider, like Yahoo or Google or so, some websites will give you a shortcut to writing the URL at login by just selecting the provider from a predefined list of providers in the login page. If your provider is not in the list, or the website does not offer any shortcut list at all, you should be able to know your OpenID URL to enter same as you know your User ID or so.

    Google and OpenID

    The first relation between Google and OpenID started with Blogger. It first accepted logging in to write comments on Blogger using OpenID, and had Blogger itself become an OpenID provider (you enter your blog URL as your OpenID URL). Why Google did this to Blogger accounts only not all Google Accounts (used for Gmail, etc..)? I don’t know. I think this is because Blogger accounts were not yet merged with Google Accounts at this time.

    Later Google as a whole became an OpenID provider for all Google Accounts (AKA Gmail Logins), with different OpenID URL. This means if you have Blogger account, you have two different OpenID URLs offered by Google each maps to DIFFERENT LOGIN. Again, maybe because of backward compatibility or whatsoever.

    If your real blog is not on blogger, and you use your Gmail account primarily, you may want to use the Google Accounts Open ID URL as your OpenID login to all websites that support logging in with OpenID, but, unlike the easiness of remembering a Blogger blog URL, the Google Accounts Open ID URL is a bit ugly and you might not know about it.

    Well, here is the Google Accounts Open ID URL (yeah, the entire blog post is about this single line):

    Note: You do NOT replace the part “ID” with your Google Account user-name/email. The OpenID URL is “AS IS” above whatever the Google Account ID is..


    Have fun!


    Hey, Follow Me on Twitter

    Follow Me On Twitter

    So, a very short note on my last news is that now I’m in Abu Dhabi, UAE; for a while not having a laptop, which is why I haven’t blogged since dotNETwork CodeCamp’09.

    Then I thought of Micro-blogging. If you know Twitter already you know what I mean, if not, think of something like facebook status; micro space to say something that’s in your mind now. A good way to say something quick and it has been popular for technical guys and even some western public figures for years.

    So, basically, you can have people who subscribe to (AKA “follow”) your Twitter updates using Twitter website or just subscribing to your updates RSS feed, can include links or mention other users or reply to their updates. You can “tweet” by going to the website or by sending SMS, or using one of many desktop applications / add-ins that exist for this, and yeah, it has a facebook application that sets your facebook status to your last Twiter update.

    I’ve been member of Twitter for long, but I just follow the updates of some other guys and very rarely have my own updates. Now I’m going to send more updates myself!  [If god Will]

    My last two updates before writing this post:

    1. It’s a final releases weekend!!! Internet Explorer 8 final is out too, download from
    2. ASP.NET MVC v1 is out. Download from Also check the ebook

    But NOTE that I do intend to make my twitter updates a hybrid between technical stuff and personal stuff.

    Based on the Twitter client i use and primarily my mood and how much I get busy (and with what) I’ll either be sending an update every few minutes or having no updates for a year or more. We shall see how this may go!


    Follow Me On Twitter

    BTW, pray for me to get my laptop this Sunday as expected [If God Will]. I like the huge DELL super-flexible wide screen and it’s stretching & rotating holder so much, but I need to blog about those snippets of code I have written in the new project I’m working on now and dump more of my thoughts about validation, LINQ, Domain Driven Design, ASP.NET workarounds and such. I need to finish stuff in the weekend some related to work and some related to family and some related to BLOGGING ;). I need to use OneNote to document my meetings wherever they are set and still have my Wi-Fi Internet. Man, I just cannot work without this portable thing in my hands!



    If you are subscribed to my Google Reader Shared Items (where I share everything I read or find interesting on the web and SO MANY FEEDS), you’ll get my Twitter updates as well, as I’m subscribed to my own Twitter feed and share my updates in the same feed.

    Google Reader Shared Items


    Cross post from ASP.NET Weblogs (Community Server) to GeeksWithBlogs (SubTEXT)

    I’m new to ASP.NET Weblogs. Thanks to Joe Stagner of course who setup my weblog account and whom I have thrown tons of questions at (Poor Joe. All day answering my messages!). I’m also an old member of GeeksWithBlogs (since January 2005) and cannot just slip away like that! So I considered cross posting, as  a permanent procedure, not temp. one.

    To do cross posting from a Community Server weblog like ASP.NET weblogs to any blog that supports MetaWeblog APIs like SubTEXT (which GeeksWithBlogs.NET uses), the steps are really easy:

    1. You login to your community server blog control panel
    2. You expand "Global Settings" from the left menu and click "Spam, Ping and Cross-Posting"
    3. You click "Setup a new blog" and enter your MetaWeblog API enabled blog

      You can see my settings in this screenshot:
      Untitled picture