Monthly Archives: November 2007

The Lost Art of Debugging – 10 Resources

Debugging is as much of an art as it is a science. There are lots of great tools to help developers debug their code. I believe developers, including myself, have learned to depend too much on these tools instead of thinking through the problem. There is a common thread across all programming languages and development platforms. That thread is the way that you approach, identify, and tackle a bug. To help develop an environment of good debugging practices, I have decided to write a series of blogs on technology agnostic debugging techniques.

My first post about The Lost Art of Debugging is a blogroll of resources, both electronic and print, that developers should read to help develop good debugging techniques. Here are ten great resources on the methodology of debugging.

Web Sites & Blogs


Do you have other debugging resources that you depend on? Have you seen a great article on debugging? Do you have a debugging horror story you would like to share? Leave me a comment with your book, web site, or tale of woe.

Happy Thanksgiving 2007!

Happy Thanksgiving to you all! I can’t believe I am blogging today. I guess I do fit into the addictive category of bloggers. I have read an article on Web Analytics World inquiring How Addicted Are you To Blogging. You can take the blog addiction quiz on the web site. The author of the article is 77% addicted, and I was 70% addicted. At the end they give you a badge to display proudly. Here is mine:


Anyways, Happy Thanksgiving to everyone.

10 Must-Have Tools for Continuous Integration in .Net

Here is a quick blogroll of ten critical tools to build a continuous integration and continuous delivery pipeline for .Net applications.

Continuous Integration Process

Visual Studio Team System





WatiN Test Recorder





20 Bad Ideas – Black Hat SEO Practices

I have spent a lot of time outlining the right things to do for SEO – things that are typically called White Hat SEO. Some of the practices I have written about would even lean a bit towards the Gray Hat arena. I have even discussed the 3 different hats of a search engine optimizer. But I have never outlined Black Hat SEO Practices. These are content practices, techniques, or methodologies that are sure to get your blog or web site banned from one, or all, of the major search engines. I list these here to help draw the line between what is acceptable, and what is not acceptable to the search engines. I do not list these techniques to advocate Black Hat practices. Use These Techniques At Your Own Risk!

1. Astroturfing

This is when a false public relations campaign or fake social media in the blogosphere generate increased attention to a site, blog, or wiki.
* Livingston Buzz – Astroturfing on the Dark Side of the Moon

2. Buying Expired Domains

Domains that have expired can carry a large page rank. By purchasing the domain, throwing up repetitive content, and linking to your other web sites and domains, you can use link juice to distribute the page rank to those other sites.

3. Cloaking

Cloaking is when a site is designed to show one set of content to your users, while showing a completely different set of content to crawlers, robots, and spiders. This is considered misrepresenting your content.

4. Comment Spamming

This method is implemented by leaving comments on sites with high PageRanks. These comments can be in the form of blog comments, guestbook entries, forum submissions, wiki pages, etc. The comments are filled with high density keywords, and have links back to the spamming site.

5. Doorway Pages

A doorway page is a “fake” page that the user will never see. It is purely for search engine spiders, and attempts to trick them into indexing the site higher. This method is dependent on useragent sniffing.

6. Fake CEO / Celebrity Avatars

This is when a blogger or forums user registers as if they are a person if significance, i.e. a CEO or celebrity. These people leave damaging messages that can sway a user in a specific direction about a product or service. This can swing the other way. A Celebrity or high level executive can act as an anonymous user to leave disparaging remarks about another person, company, or product, drive traffic to their site, and ultimately increase sales.
* CopyWrite, Ink – Silencing Crisis: Whole Foods Market, Inc.

7. Google Bombing

This is accomplished by creating links on multiple sites linking to the same page with the same text. The text link may not necessarily be relevant to the linked site, thus creating the Google Bomb. The most common Google Bomb can be seen by searching “miserable failure” and seeing sites for George Bush appear at the top of the results page.

8. Google Bowling

Google is penalizing (or even banning) sites that purchase site-wide links. A site-wide link is a link that is on every page of the entire site. Google Bowling is buying site-wide links as a competitor to get them banned.
* Web Pro News – Google Bowling: How Competitors Can Sabotage You; What Google Should Do About It

9. Invisible Text or Hidden Text

This Black Hat method manifests itself in many forms. One method is to put lists of keywords in white text on a white background in hopes of attracting more search engine spiders. Another method is to embed and overload keywords into unseen places that crawlers look will get you banned as well. Places like alt tags, comments, JavaScript tags, noframe tags, div tags that are hidden, etc.

10. Interlinking

When multiple web sites are built by the same person or company, with similar content, with links pointing back and forth between them, in an attempt to increase each others’ page ranks.

11. Keyword Stuffing

Filling your page with long lists of keywords in an attempt to rank higher for those words. You don’t view this as high quality content, and neither will Google. This method is typically accompanied with the Hidden Text and Redirecting black hat methods.

12. Link Farming

Another name for a link farm is a free-for-all site. The objective of these sites is strictly to generate inbound links to your site at any cost. This will typically work in the short term, but hurt your site (or get it banned) long-term.
These kinds of sites are also known as mutual admiration societies.

13. Redirecting

Redirects are commonly used along with doorway pages, or spam pages filled with advertising. They are designed to take a user to a page that they did not want to go to. These can be both server side redirects, or client side redirects. Vicious redirect pages often get the user into an infinite loop that are difficult to break from.

14. Scraper Sites

Also known as Made-for-AdSense Sites, these pages are similar to spam pages, except that they are designed to scrape search engine results and dynamically “create” content pages. These are also used in conjunction with do

15. Selling PageRank

Sites can explicitly sell “advertising” (read inbound links) to your site. This essentially distributes some of the PageRank to the newly linked site, and its position in search engine results pages. This has been in the news a lot lately. Google has dropped the PageRank of anyone doing this. Both the buyer and seller of the link are dropped in PageRank.

16. Shill Blogs, Spam Blogs, or Splogs

Spam Blogs are when one person is paid to act as a fan for those who hired them. Generating a source of positive feedback and link sharing will increase inbound traffic and PageRank. These methods are similar in effect to a link farm.
* Business Week – Wal-Mart’s Jim and Laura: The Real Story

17. Spam Pages

Spam Pages are web pages that rank well for specific keywords, but actually hold no content. They are typically full of advertisements, listings to other sites, or are part of a pay-per-click scam.

18. Sybil Attacks

When a single user creates multiple identities to generate additional traffic. This could be in the form of multiple web sites with similar, if not identical, content. This also could be in the form of multiple social bookmark accounts, multiple comments, etc.

19. Wiki Spam

Wikis, just like blogs, are intended to be an easy way to create and organize content for non-developers (read anyone). But the distributed and open editability of wikis make the susceptible to spamming. By placing links in wikis back to the spam site, you hijack the link juice of the wiki, pass the page rank on, and increase results frequency. The subject of the wiki page is typically irrelevant. This is why large wikis like wikipedia have added the nofollow attribute to all of their links.

20. Resources

Are there any other Black Hat SEO techniques that you know of? Any other Black Hat resources that you know of? What do you think of Black Hat SEO? Let me know what you think by leaving me a comment.

50 Easy Tips to Keep your Blog Search Engine Optimized

Blogging is one of the easiest ways to get content published to the Internet.  Everyone, from the average Joe to the Corporate Communications Specialist wants to see their blog and their most recent posts on the Google results page.  But, just like SEO for any other web site, it takes time, effort, and patience.  Here is a collection of tips gathered from around the blogosphere on how to optimize your blog for search engines.


  • Content is always king.  Make sure your content is new, fresh, engaging, and relevant.
  • Update your blog frequently.  The more it is updated, the more your content will be indexed.
  • Stick with your blog – don’t get discouraged!
  • Use an interesting title for your blog and each of your blog posts. 
  • Limit each of your posts to one topic, keeping your pages focused.
  • Keep your posts not too short, and not too long.  This keeps your readers interested and returning.
  • Provide a list of your top 10 blog posts on your site.
  • Make sure your tags, categories, labels, etc. also make good keywords.
  • Use your keywords as often as possible, but only in a natural context.
  • Use a blog service like WordPress, Blogger, etc.  These sites already have high content churn, and attract frequent indexing.
  • Make sure that anonymous users can leave comments.  You will get more feedback that way.


  • Increase your inbound links from other sites.
  • Link to your own posts that have a similar topic.
  • Outbound links to high quality sites help your page rank.


  • Make sure your blog’s HTML is W3C Compliant so that search engines can spider your blog easily.
  • Make sure your post titles are live links.
  • If your blog supports it, don’t forget to use meta tags in your blog template.
  • Use your primary keyword in strategic locations:
    • Your blog domain
    • In the title of your posts
    • In the anchor text of links
    • In the alt tags of your images
    • In Header tags – H1, H2, H3, etc.
    • In bold tags

Your RSS Feed

  • Be sure that RSS auto-discovery tags are placed in the header of every page, one for each RSS feed.
  • Your RSS feeds should provide full text for each post.
  • Maximize the number of blog posts provided in your blog feed.  Typical default is 10, 20 or more is better.
  • Provide a feed for every category your blog offers.



Do you have other tips or resources for bloggers in optimizing their sites for search engines?  Leave me some feedback and let me know.



5 Benefits of Internal Corporate Blogs

Blogs are not new anymore.  They have been around for a few years, and have proliferated fairly deep into the technology culture.  If people are not writing one of their own, they are reading one, or a handful of them, or have an RSS aggregator where they are reading dozens or hundreds of blogs. 

Blogs have lots of uses.  They are great for viral advertising, news publication, syndication, and collection of public opinion about a topic.  You can have a personal blog to share photos of your vacations, a corporate blog for press releases, a news blog for niche news, and a host of other reasons to have a blog.  Blogs are an easy way for anyone to produce and consume any information about anything from anywhere. 

But blogs have taken off within corporations as well.  That is my interest here.  We have deployed a blogging pilot in the workplace, and I have become a big proponent.  At first it was part of my yearly objectives to help pilot and proliferate the use of blogs.  I have blocked time on my calendar twice a week for a half hour to post to my blog.  Now I am one of the most frequent bloggers in our pilot, and I blog both inside and outside the company.  I do this because I see such a value in the process.  Blogging is such an important tool in my manager arsenal, and I thought I would list the benefits of blogging from my experiences for the team and for the company.

Knowledge Sharing

Blogging inherently is a way to share information with its readers.    The writer composes the message, and it is consumed by many readers in the blogosphere.  These messages are (obviously) either bottom-up or top-down.  Bottom-up messages are written from the perspective of the line workers and low to mid level managers to express ideas or experiences they have had.  Top-down blogs are a way to deliver executive messages, such as strategic direction, corporate status, and announcements.  Blogs act as a written memory of events, lessons learned, experiences, successes, or announcements.  Blogs can also be a way to share expertise on a specific topic, such as data management, service oriented architecture, design patterns, or search engine optimization. 

Idea Solidification

The writer has to take the time to think about the message they want to deliver, collect their thoughts, organize them, and express them clearly.  That way the readers can read a focused message that delivers a clear and understandable message.  Blogs can also be a way to develop, solidify, and evolve an idea by posing a question, idea, or concept, and collect and narrow an idea through constructive comments. 

Project Management

Using a blog to document a project and its progress is a bit unorthodox.  Typically a wiki or another more collaborative environment is more appropriate.  But blogs are so easy to use, they make for a good medium to capture progress and communicate them easily.  Again, they act as a written memory of the project’s progress, successes, and lessons learned.

Cross Team Communication

Blogs are a great way to provide a medium for dynamic networks of conversations across teams.  These teams could be local or distributed, days, nights or weekends, and it will not matter.  A shared blog space will allow for ideas to be spread, information to be distributed, questions to be asked and answers to be shared.  Blogs crisscross people, departments, silos, grade levels, and experiences.


The simplest thing that blogs do is to bridge the boundaries of distance and culture by being always on, able to be shared and viewed at any time.  When launching a blog or posting a comment, a person takes themselves in written form and puts a bit of themselves out for everyone to look at, examine, scrutinize, comment on, and critique.  Successful corporate blogging creates an atmosphere of trust, so that people are not threatened, intimidated, or frightened to expose themselves.  Successfully sharing and collaborating this way fosters a spirit of participation that encourages people to continue to contribute their thoughts and ideas.  This leads to team learning and growth across the team, from within the team, and makes them stronger together. 


So what is your perspective on blogging within corporations, or blogging in general?  Is there value?  Is it a waste of time? Leave me feedback and let me know your thoughts.



7 Sources to Help You Conduct a Peer Code Review

The end of the year is swiftly approaching, and as the budget cycle is coming to a close, the work piles up quickly.  I have had a staff of three from January through August, and with the piling work, we have had to triple in size.  A staff of nine is very different to manage compared to a staff of three.  There are many things to wrangle during ramp-up: a new corporate culture, new policies, new development environment, new standards, new team members.  One of the tools in the technology manager’s arsenal is the peer review. 

The CodingHorror web site outlines why they think software development departments should perform code reviews in their article called “Code Reviews: Just Do It.”  Jared Richardson also describes the value of peer code reviews on his blog.  The basic reasons for implementing code reviews are obvious: reduced bugs, reduced rework, cross training, quicker ramp-up time, sharing of ideas, developer growth, mentorship opportunities, and team building.

Karl E. Wiegers has written a great article called “Seven Truths About Peer Reviews” available on that outlines a number of different methods to conduct your peer code review.  Some of the peer review methods methods he describes are inspection (both Fagan Method and Gilb/Graham Method), team reviews, walkthroughs, pair programming, peer deskchecks, and passarounds.  It’s a good read, and you should take a look.

Peer reviews do not need to be long, drawn out, complicated processes.  Jason Cohen describes some best practices for peer code review on his web site,  He has written a great looking book called “Best Kept Secrets of Peer Code Review” that you can order free on his site.  He recommends only reviewing code for five to ten minutes at a time, to keep everyone sharp, focused, and on point. 

You should definitely walk into your peer code review with a plan in mind.  Here is a Code Review Checklist for Macadamian that will help you organize your approach and keep you focused.

Finally, peer code reviews can be rough on the ego of the developer.  Here are “Ten Commandments of Ego-less Programming” based on Jerry Weinberg’s book , The Psychology of Computer Programming, from 1971.  This article describes how peer code reviews result in shorter project completion times, lower defect counts, and how developers had to set their egos aside to make it happen.

I am sure that code reviews will be good for my team, our projects, and our clients.  The hurdle is making them part of our development routine.  What do you think of code reviews?  Do you use them in your technology department?  What results have you seen?  Leave me feedback and let me know.

htmlSQL – Query your Page Elements like a Pro!

While stumbling across the InterWeb, I came across this really neat page.  The page, by Jonas John, describes htmlSQL, a PHP class to query the web by an SQL like language.  I know, I know, this is PHP, not C#.  But the idea really interested me.  I have spent a lot of time focusing on WatiN, which does a similar thing.  It allows you to take control of objects on the page and fill in forms, click buttons, etc.  Getting an element in WatiN requires you to search the page using the Find methods.  One of the troubles I have had is making sure that your find returns one, and only one, page element.  Being able to query the page with htmlSQL would be a great way to verify that.  A class like this would make it very easy to leverage the page DOM on the fly. 

Do you see any other uses for a class like this?  Are there other products like this?  What are your thoughts about htmlSQL?

The Truth About High Content to Markup Ratio and SEO

A common SEO tip for web developers is to keep your content to markup ratio high.  This is supposed to make the crawling of your site easier, more efficient, and faster.  It is possible, however, that more modern site crawlers like Google ignore code already, since they behave like a text based browser anyway.  However, implementing this as a SEO strategy cannot hurt. In fact, it has benefits for not only SEO reasons, but for general web development practices as well:

  • Keeping the amount of code on the page low helps overall site maintenance and usability, focusing on your content. 
  • Including CSS and JavaScript in external files increase content-to-code ratio as well as making your site easier to maintain. 
  • Having validated HTML code will help the crawlers understand your site , as well as make your code compliant for maximum browser readability and performance.

For more information:

Generating sitemap.xml files in C#

One of the things that I would like to tackle before the end of the year is including sitemap.xml files with all of the new sites that my team develops. We could generate these files manually, but this would be tedious at best. There are a number of tools that will generate these files for you. Some of them are stand-alone desktop applications (Sitemap XML). Some web-based tools are built in PHP (AutoSitemap), Perl (TM Google Sitemap Generator), Python (Google WebMaster Tools), etc., and you can use in your own local environments. There is even a web site that you can submit your URL and it will generate the sitemap.xml file for you (XML Sitemaps).

My requirements for this feature are pretty simple:

  • Something built in C#
  • Something we can include in our projects
  • Something that can be run as part of our build process
  • Something that can be completely hands-free

So far, the only thing that I have found is the GoogleSiteMapProvider on the CodeProject web site. This project:

  • [Is] instantly useable with the majority of ASP.NET applications
  • [Is] a full ‘binary’ solution – no integration of code or compiling – just drop in a binary, modify the web.config and go
  • [Is] extendable so that more complicated ASP.NET applications could redefine the provider without restriction

It seems like this is a great fit for our architecture. The solution was to have a single assembly with three main types:

  1. An HTTP Handler which would return the XML on request (called GoogleSiteMapHandler)
  2. A Provider Type (called GoogleSiteMapProvider)
  3. A Controller class to glue the Handler and Provider together

This is a great place for us to start. The source code is available, it seems to fit my needs, and is simple to use.

Anyone else using something different? Do you have any other ideas? Have you found any other tools that might be useful for this? Leave a comment and let me know.