Archive for February, 2007

  • 27
  • Feb

I just noticed something quirky.

When my homepage shows up in Google, it’s not cached. Every other page on this blog is cached, but not the homepage for some reason. There are no meta tags blocking it, and the robots.txt file doesn’t have anything unusual. I’m not sure if it was cached at some point in the past, but I’d assume so. What could have changed? Doesn’t Google cache all the pages it indexes (without overriding instructions)?

Can any SEO buffs out there help me shine some light on this? Thanks.

  • 26
  • Feb

With all the recent RegisterFly problems going on… I’m getting a little worried on a personal level.

I currently have 99 domains with them and about $44 on my account balance. While I realize there are people out there with much larger stakes than this, it’s still something to mention. This just goes to show that ICANN accredited means nothing… if it takes this much to lose the badge, and a company as low-life as RegisterFly can obtain it… how is that supposed to make customer feel about accredited companies? It’s meaningless.

I’d give RegisterFly another month before they’re completely 404′d.

  • 26
  • Feb

Seven ways, because lists of ten are overdone, and seven was all that was needed (without losing quality, or having to think really, really hard). :D

1. Over-monetizing

Sure, everyone wants to make thousands of dollars a month from their blog, but that parallels elementry school kids saying they want to grow up and play professional football. It could happen, but the odds are stacked against you. People come to your blog for information. Without good content, there’s no reason for them to stick around. Blogs are much more useful to use them a promotion medium. Use your blog to gain weight in search engines and recognition in the community. That’ll help you much more than a few dollars a day from Adsense. For instance, if you build a blog up, then use it to promote a new product you launch down the line. You’re already starting ahead, since you can use your blog’s weight to give your new website a jump-start. Think Google… first build a quality site people will use and benefit from, then the monetizing aspect comes later on. One of the internet’s few exceptions to this rule is John Chow. There’s a man who monitized his blog inside and out, but still maintained a high level of quality.

2. Attention Whoring

There’s a few sides of this that tie together. First off all, there are those who attack a well known player in the industry for no reason other than the quick burst of attention and controversy they’ll get. Bad idea. The blogsphere exists through friendships and trust, and if you are blacklisted, it’s near impossible to grow your blog’s influence. Another side of this is people who brag or gloat on their blogs. There is a level of confidence that’s required, but we don’t need to read a 10 page post about how your name was mentioned in Hicksville’s Newspaper last week. Readers are selfish and greedy… post about what information they came looking for and they’ll be much happier (and maybe even keep reading your blog). On the opposite side of this, one example of an attention whore who can get away with it is, of course, Shoemoney. From the famous picture of his Adsense check, to his latest MyBlogLog drama, it’s hard to deny Shoemoney loves attention… but with a blog as interesting and high quality as he has… he deserves it! :D

3. Personal Life Rambling

A blog is a public tool that is not supposed to be used as a diary. I couldn’t care less that your fish turned four years old today. Don’t constantly clutter my RSS reader with irrelevant posts, as there’s no quicker way for me to drop your feed. Obviously, an occasional post about a major landmark in your life is fine and interesting, but a large number of blogger have gotten their blog confused with a diary. They market it as an Internet SEO and SEM blog, but they make one post a month about SEO. There is about 50 blogs I read everyday (through Google Reader), and one of the quickest ways to get nicked from my subscribed list is to consistently post about unrelated material. A perfect example of this, however one who can hardly be criticized for it, is Google’s own Matt Cutts.

4. Not Updating

One of the biggest aspects in distinguishing a successful blog from a dud is a fairly large readerbase… and readers can’t read your blog if you never update. This is one we’ve always been guilty of at one point or another, especially when first getting started, but if you take up the responsibility of writing a blog, and you actually want it to be successful, you can’t neglect it. Depending on your niche, at least one or two updates a week should be the barebones minimum. There are a few blogs I consider exceptions to this however… who rarely post, but when they do, I make a point of reading every word of their posts our of pure respect for the authors. Among those are Boogy BonBon and Lee Dodd.

5. Posting Junk

Following the previous point, no one is going to subscribe and read your blog if there is few posts of real quality. Sure, posting quick jokes or interesting websites can be fun on occasion, but without good, solid content, what do readers get out of your blog? If they can spend the time to read your blog, you can at least spend a little time yourself and give them something worthwhile to read. One example, is the blog I setup to post whatever junk I don’t want to post here, Decomprehension. Separating the impulsive posts from the quality posts allows me to be get more out there, and maintain the integrity and quality of this blog.

6. Limiting RSS to Snippets

As the number of quality blogs online increase, it’s becoming more and more popular to keep up to date with your favorites via an RSS reader. One of the biggest things I can’t stand about blogs are people who are so scared of giving away free content, they truncate their RSS feeds to a quick blurb. My style of reading blogs is skimming the RSS, then if an article seems interesting, I will usually open that post’s page in a normal browser window and read the entire thing plus comments. However when an author limits it to three to four sentences of a three page post, it’s near impossible to tell if the article is worth reading or not. For those worried about duplicate content, Google is very good about snatching up new posts via RSS (or HTML, depending on how much Googlebot likes your site), and flagging you as the content originator. It is extremely rare for Googlebot to make a mistake in a cross-site duplicate content issue. If your reasoning behind limiting RSS feeds is because less people will see and click on your ads, reread item number one… it’s much better to get a loyal reader than to make a few extra cents. One example of a blog who does this, however is an exception to the rule, is Aaron Wall’s SEO Book. He drives me crazy with his handicap RSS feed, however I still make a point of reading his every post.

7. Not Being Unique

There are millions of blogs out there (55 million according to Technorati), and every one is fighting for readers and rankings. What sets you apart? If you just syndicate every popular story to hit Search Engine Watch or Slashdot, what sets you apart from the other 54 million doing the same thing? Of course, occasional story quoting (with sources cited and your own personal thoughts appended) is fine, but blogs that do nothing but this everyday will have a difficult time getting themselves known. Don’t misunderstand me, by all means reference other bloggers and engage the community, however I’m speaking of blogs that syndk8 99% of their content and show no original, provoking thought or creative effort. To truly shine in the blogsphere you need to consistently write high quality, unique posts. Instead of copying all the time, you should be the one aiming to be quoted and linked.

  • 16
  • Feb

Let be begin by highlighting the irony in a Google search for John Chow. The second result is his post about the internet’s biggset Google whores. In the past month or two, I’d say John himself has gone a long way to climb that ladder. Most of his posts have at least one or two egotistical “I make more money than you” posts, and he is competing hard with MySpace for the number of ads per square inch of screen space, but you know what? I have a very high admiration for him.

The self-proclaimed “Dot Com Mogul” offers some very good information with a great posting frequency. He’s often giving away freebies, and masterfully creating buzz. I have about 50 RSS feeds in my Google Reader, but there are only a few blogs that I usually read the entire post, word-for-word, everytime a new one pops up… and John Chow is one of those. Which reminds me of another point, John Chow is one of the webmasters who offers a full RSS feed, another great plus. Now, thinking about what I don’t like about John’s blog, I can only come up with one thing. These recent paid reviews make him money, sure, however I wish he’d lessen them a bit. By doing so many dedicated-post reviews, I think it degrades the overall quality of the blog a bit. Aside from that though… keep up the good work John!

  • 13
  • Feb

This wouldn’t have normally bothered me, since thousands of people experience it on websites like MySpace everyday, but I just performed a search on Ask.com and it came up with a “Too busy” error message:

Ask.com Overload

It seems in an industry as competitive as search theses days, a major player like Ask should have more than enough server power to handle any spikes in traffic. Turning away searchers is losing potential ad money and losing a little of that person’s trust. If Google started throwing up these messages, every blog in the blogsphere would be all over it… but people rarely notice a site like Ask.com. I suppose that’s why it’s no surprise Google is number 1. If Ask wants to compete, they need that same level of near-perfection Google has developed, especially on an infrastructure side.

  • 08
  • Feb

For everyone who has ever had an evaluation – just remember, it could have been worse. These are actual quotes taken from Federal Government employee performance evaluations.

1. “Since my last report, this employee has reached rock-bottom and has started to dig.”
2. “I would not allow this employee to breed.”
3. “This employee is really not so much of a has-been, but more of a definite won’t be.”
4. “Works well when under constant supervision and cornered like a rat in a trap.”
5. “When she opens her mouth, it seems that it is only to change feet.”
6. “This young lady has delusions of adequacy.”
7. “He sets low personal standards and then consistently fails to achieve them.”
8. “This employee is depriving a village somewhere of an idiot.”
9. “This employee should go far, and the sooner he starts the better.”
10. “Got a full 6-pack, but lacks the plastic thingy to hold it all together”
11. “A gross ignoramus — 144 times worse than an ordinary ignoramus.”
12. “He doesn’t have ulcers, but he’s a carrier.”
14. “I would like to go hunting with him sometime.”
15. “He’s been working with glue too much.”
16. “He would argue with a signpost.”
17. “He brings a lot of joy whenever he leaves the room.”
18. “When his IQ reaches 50, he should sell.”
19. “If you see two people talking and one looks bored, he’s the other one.”
20. “A photographic memory but with the lens cover glued on.”
21. “A prime candidate for natural de-selection.”
22. “Donated his brain to science before he was done using it.”
23. “Gates are down, the lights are flashing, but the train isn’t coming.”
24. “He’s got two brains cells, one is lost and the other is out looking for it.”
25. “If he were any more stupid, he’d have to be watered twice a week.”
26. “If you give him a penny for his thoughts, you’d get change.”
27. “If you stand close enough to him, you can hear the ocean.”
28. “It’s hard to believe he beat out 1,000,000 other sperm.”
29. “One neuron short of a synapse.”
30. “Some drink from the fountain of knowledge; he only gargled.”
31. “Takes him 2 hours to watch ’60-minutes’.”
32. “The wheel is turning, but the hamster is dead”
33. “Got into the gene pool when the Lifeguard wasn’t looking”

Haha!!

  • 07
  • Feb

I was trying to automate logging into MySpace with PHP and cURL, and I had some problems. For some reason, it kept kicking me back to the homepage rather than the logged in page… and finally I figured out why. I’ll post the code up here for anyone else who has a similar issue.

Basically, to automate the MySpace login system, you need these steps:

  • First setup your cURL session with a cookie file and a cookie jar. They’re obviously required. You will also NEED to specify a user agent… that’s what got me. MySpace checks your user-agent, and if it doesn’t match a known one, they abort your login process.
    // setup and configure
    $ch = curl_init();
    $randnum = rand(1,9999999);
    curl_setopt($ch, CURLOPT_COOKIEJAR, "/tmp/cookiejar-$randnum");
    curl_setopt($ch, CURLOPT_COOKIEFILE, "/tmp/cookiejar-$randnum");
    curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1");
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_POST, 0);
  • Visit the myspace.com homepage, and scrape the security token, which is made into the URL where the login form submits (the form action):
    // get homepage for login page token
    curl_setopt($ch, CURLOPT_URL,"http://www.myspace.com");
    $page = curl_exec($ch);
    //
    // find it....
    //
    preg_match("/MyToken=([^"]+)"/",$page,$token);
    $token = $token[1];
  • Next actually post your information and submit the login form. You must forge the referer as myspace.com, and you must specify the content type in the HTTP header as “application/x-www-form-urlencoded”. Notice my last appending line on $poststring is a bunch of semi-encoded values… that is the rest of the form MySpace sends with your login. It’s a required line for their internals, don’t omit it.
    // do login
    curl_setopt($ch, CURLOPT_URL,"http://login.myspace.com/index.cfm?fuseaction=login.process&MyToken={$token}");
    curl_setopt($ch, CURLOPT_REFERER, "http://www.myspace.com");
    curl_setopt($ch, CURLOPT_HTTPHEADER, Array("Content-Type: application/x-www-form-urlencoded"));
    curl_setopt($ch, CURLOPT_POST, 1);
    $postfields = "email=" . urlencode($YOUR_EMAIL);
    $postfields .= "&password=" . urlencode($YOUR_PASSWORD);
    $postfields .= '&ctl00%24Main%24SplashDisplay%24login%24loginbutton.x=38&ctl00%24Main%24SplashDisplay%24login%24loginbutton.y=15';
    curl_setopt($ch, CURLOPT_POSTFIELDS,$postfields);
    $page = curl_exec($ch);
  • The next page you’ll hit is a 302 redirect to the internal login page. This might be handled automatically, but I’m going to scrape the redirect url and pass it manually, as a precaution.
    // find redirect url
    preg_match("/replace\("([^"]+)"/",$page,$redirpage);
    $redirpage = $redirpage[1];
    //
    // do the redirect
    //
    curl_setopt($ch, CURLOPT_REFERER,"http://login.myspace.com/index.cfm?fuseaction=login.process&MyToken={$token}");
    curl_setopt($ch, CURLOPT_URL,$redirpage);
    curl_setopt($ch, CURLOPT_POST, 0);
    $page = curl_exec($ch);
  • Now you should be at the logged in page. I run a quick check that it didn’t bounce us back to the login page for an invalid username or password before proceeding:
    // check login error
    if(strpos($page,"You Must Be Logged-In to do That!") !== false){
    // login error
    return 2;
    }

Congratulations, you’re now logged into MySpace. I fought with this for a while because I didn’t know they check the user-agent (most sites don’t care), and I was getting really strange results when trying to log in.

From this point, you can do whatever you want, such as send messages, post bulletins, modify your profile, etc. For requesting the modify-your-profile page, here’s the code:
// find edit profile link (with token attached)
preg_match("/ id="ctl00_Main_ctl00_Welcome1_EditMyProfileHyperLink" href="([^"]+)"/",$page,$redirpage);
$redirpage = $redirpage[1];
//
// go there (edit profile)
//
curl_setopt($ch, CURLOPT_URL, $redirpage);
$page = curl_exec($ch);

Simple!

And before you finish, don’t forget to clean up by closing curl and deleting the cookie file you made:
// clean up
curl_close($ch);
@unlink("/tmp/cookiejar-$randnum");

I’d recommend getting the Live HTTP Headers Firefox Add-on if you don’t have it already, as it makes debugging these processes much easier.

Here’s the entire source code uncut:
Read the rest of this entry …