It is coming to a head now.

February 22, 2007

My wife and I purchased a house in mid-December. The house needed a lot more work than we originally had expected, but we are winding down and moving in this weekend!

The house is a 1950's 3 bedroom 1 bath ranch with a basement and 1.5 car garage. The house is rather small on a small lot (1/4 acre), but in a very nice area. The entire house was covered in wallpaper and paneling, which all needed to be removed! The middle bedroom has a sliding door out the back to a nice screened in porch rendering the middle bedroom useless as a bedroom and making it an office. So, here is what we did:

  • We tore down every piece of sheet rock (except 7 walls and ceilings)
  • Tore down the entire wall separating the kitchen and dining room
  • Removed the closet in the office and combined it with the master bedroom
  • Converted the master bedroom and living room from radiator heat to baseboard heat.
  • Gutted the bathroom
  • Replaced every door in the house (outside entrance doors)
  • Installed high hats in the office and master bedroom
  • Replaced all outlets and switches
  • Crown moulding throughout the entire house
  • Resurfaced the wood floors throughout the house
Every night after work (except for five or so) since Christmas, and every weekend, I have been working on our new house. It took two months but we did it! All the work was done by myself, my wife, family and friends. I can honestly say we had almost ZERO professional help. My "first cousin once removeds' husband" (lol) is a plumber and he did the plumbing and tile work in the bathroom. He also lent a lot of tools, advise, and help throughout the project. The only part I had no involvement in was the wood floor resurfacing; we paid someone for that.

Throughout college, while others were doing internships I was employed as a "video game technician" at various "family entertainment centers" (Jillians, Dave & Busters, etc...). I did all sorts of stuff there; repaired arcade games, repaired amusement rides (tilt-a-whirl, etc...), welded, did building maintenance, etc... It has been about 7 years since I did all that stuff and I am glad to report that my various "handy man" skills still exist. I found that I am a pretty good drywaller/spackler and not bad with crown mouldings!

Pics are in the gallery and I will put up more this weekend once the move is completed.

http://www.carknee.com/photos/carknee/tags/House/default.aspx

A couple or members lately have had issues (#1 + #2) with the way search engines have been indexing their sites.

There are few ways to optimize a [csl] installation for search engines.

  1. Make sure that your Site Name and Description are set properly in the Control Panel.
  2. You may want to edit the resources.xml file to adjust the way your title tag is handled.
  3. Something that I don't think that has been mentioned before is to create a robots.txt file

There are more than a few pages that exist in a [cs] installation that really don't need to be indexed by a search engine robot. A robots.txt file will keep the spiders off of the pages we don't want them to get.

Here is a starting point for a [cs] robots.txt file. If you have any files you think should be blocked from search engines just drop a comment and I will update the post.

Just copy and paste this text into a /robots.txt file:

 

#
#
#  robots.txt file for a Community Server based site.
#  Created by Sean Kearney http://www.carknee.com
#
#  

User-agent: *

###########################
# Pages with no real value
Disallow: /error.htm
Disallow: /login.aspx
Disallow: /logout.aspx

###########################
# Directories 
Disallow: /controlpanel/
Disallow: /msgs/
# We want them to get to user profiles, so comment below out
#Disallow: /user/ 

Disallow: /user/CreateUser.aspx
Disallow: /user/EmailForgottenPassword.aspx
Disallow: /user/EditProfile.aspx

# non-essential content (FAQ)
Disallow: /languages/

Where do I start? This story has been told many times before and I don't claim to be the first to bitch about it.

I have been following Community Server since before day 1. I was a user of nGallery and .Text before Telligent was established. Both great apps and both free; no if ands or butts. Telligent comes along and says we are going to integrate these products and make the world a better place. That is a bit of a stretch, but you get the gist.

I always felt that Telligent would "do the right thing" and keep costs reasonable and the program within appropriate restrictions of functionality. As of 2/9/07 it looks like I was wrong.

Just a brief history of the licensing of CS... CS 1.1 states simply this:
"... Include the eula.gif on any displayed web pages which must link back to [the site]..."
With CS 2.0 the license has gotten way more complicated and restrictive.

I have a reasonably large site. 10,000 members with more than 500,000 posts in the forums. I have been wanting to migrate that site to [cs] since version 1.0. Each time I get ready to go live with the migration, CS is announcing a new release. With the new release I decide to wait for it before I migrate. The same has been holding true with the 2.1 to 2007 release. I have mods/add-on/modules/jobs all written up for CS 2.1, but with 2007 only a month or so away I decide to wait. This is a typical circle with any gadget or tech related upgrade; better is always around the corner. This time, however, the price of technology isn't getting cheaper.

Now, with the launch of 2007 right around the corner, Telligent says the standard commercial license is only valid for 25 forums (10 blogs, 10 photo galleries, etc...) 25 forums? What self respecting community site has less than 25 forums? So, my site, that has no stable source of income is required to purchase a $2,000 license! Please.

I had been getting this error:

Validation of viewstate MAC failed. If this application is hosted by a Web Farm or cluster, ensure that <machineKey> configuration specifies the same validationKey and validation algorithm. AutoGenerate cannot be used in a cluster.

I scoured the net and none of the suggested resolutions (EnableViewStateMac) were working for me, so I decided to dig in a little bit.

Here is my situation:

I have a page, 'X', that does a Server.Transfer to page 'Y'. Y is a form that enters information into a database upon pressing a button. Upon pressing the button to submit the information, the error would fire off. If I ran page Y without Transferring to it, the page would work normally. As I mentioned above, no typical work around was working for me.

The reason that no typical solution was working for me is that I have a "base page" that I use for all the pages on my site. In this base page I do a couple things, one of which is that I alter the action attribute of my <form> tag. I do this because I have a custom UrlReWriting HttpModule and I need my actions to match the URI in the address bar of the browser, not the virtual path to the executing script.

What was happening was that Y's action was still set to X! The resolution for me was to add a property to my base page that would disable altering the form's action. The page now has page Y posting back to page Y and everybody is happy!

Another day, another [csl] add-on!

A member in the [cs] forums needs a way to add a statement to every blog post that is syndicated in order to prevent scrapers from "using" their content with no mention of the rightful owner. This seems like a real good idea for anyone, including me, who syndicates their content. Jose Lema came through with the basic idea of how to handle this situation so I figured I would run with it.

The code, as Jose provided, is real simple however I wanted to make it easy to change the "RSS Signature." I figured we could store the signature text in an ExtendedAttribute rather than a config file so here is what I have:

public void Init(CSApplication csa, XmlNode node)
{
  csa.PreRenderPost += new CSPostEventHandler(csa_PreRenderPost);
}

void csa_PreRenderPost(IContent content, CSPostEventArgs e)
{
  WeblogPost post = content as WeblogPost;
  if (post == null)
    return;
  if (e.ApplicationType == ApplicationType.Weblog && e.Target == PostTarget.Syndication)
  {
    string sig = post.Section.GetExtendedAttribute("BlogRssSignature");
    if (String.IsNullOrEmpty(sig))
      return;
    post.FormattedBody = String.Concat(post.FormattedBody, sig);
  }
}

Now for the Control Panel Administration of the signature. I do not like modifying the core code for [cs]; it makes it a pain to handle updates. So what I did was create a new page to handle the setting of the extended attribute, with the codebehind residing in my [bundle]. The result is a simple page to create/edit the signature text used for your blog. I should also mention that I dislike having to edit language xml files for basic text. Again, this is just a pain for installing quick modules, but if you are using any language other than English you will have to manually edit the aspx file.

Create your signature:

And here it is:

To install this, download the [bundle] and follow the instructions in the readme.txt file.