I’m an SEO Professional?

I just finished the SEO quiz on seomoz.org. I got 200/255 - 79% so I guess they consider me a “professional”

SEO Professional - 79%

Are you an SEO Expert?

The problem is, I don’t feel like a pro. Many of the answers I guessed and got right, but honestly I never thought about them nor bothered to implement them. I think what I may do is take all the answers (after you complete the quiz you will get an answer sheet) and go through them one by and and apply them to one of my sites. We’ll see how well traffic increases to that site.

Maybe then after a bit of study I can go back and take the quiz again and be an expert! ;)

Restoring MySQL InnoDB Files on Windows

Our server died at work last week. We’re a small shop without a real IT pro, just a bunch of hackers. Therefore, we had no back-up or recovery plan. I was tasked with restoring the MySQL database files. These where critical database we use on a daily basis, as well as our customers because it contain all their license information. We were able to get all the files off the computer in the mysql data folder (in C:\Program Files\MySQL\MySQL Server 4.1 & C:\Program Files\MySQL\MySQL Server 5.0). I found that all the MyISAM type tables restored just by moving the data files to the new data directory. The InnoDB type files were a more difficult task, and that is why I am writing this post. I had a hard time finding out how to do it, but I pieced together enough information to accomplish the task. Now, in an effort to give back, I’ll explain exactly what I did to get it restored.

In our back-ups we had the following files:

  • \MySQL\MySQL Server 4.1\data\ibdata1
  • \MySQL\MySQL Server 4.1\data\ib_logfile0
  • \MySQL\MySQL Server 4.1\data\ib_logfile1

Plus, in the data folder there were was a folder with the name of the database I was restoring that contained *.frm files (table_name.frm).

I did the restore on my development machine rather than the actual server because I didn’t want to screw up what was working on the server. I already had MySQL installed from an XAMPP install. (My development box is running Windows XP SP2). XAMPP installs MySQL a little differently than the regular MySQL install, so if it helps to follow what I did here, you may want to install it.

I first stopped my MySQL service using XAMPP’s control panel.

I moved the files listed above (ib* files and the folder containing the *.frm files) to the my local mysql data folder (C:\Program Files\xampp\mysql\data).

I then edited my.cnf (located in C:\Program Files\xampp\mysql\bin) and made the following changes (starting at line 66 for me):

OLD:
skip-innodb
#innodb_data_home_dir = C:/Program Files/xampp/mysql/data/
#innodb_data_file_path = ibdata1:10M:autoextend
#innodb_log_group_home_dir = C:/Program Files/xampp/mysql/data/
#innodb_log_arch_dir = C:/Program Files/xampp/mysql/data/
#set-variable = innodb_buffer_pool_size=16M
#set-variable = innodb_additional_mem_pool_size=2M
#set-variable = innodb_log_file_size=5M
#set-variable = innodb_log_buffer_size=8M
#innodb_flush_log_at_trx_commit=1
#set-variable = innodb_lock_wait_timeout=50

NEW:
#skip-innodb
innodb_data_home_dir = C:/Program Files/xampp/mysql/data/
innodb_data_file_path = ibdata1:10M:autoextend
innodb_log_group_home_dir = C:/Program Files/xampp/mysql/data/
innodb_log_arch_dir = C:/Program Files/xampp/mysql/data/
set-variable = innodb_buffer_pool_size=16M
set-variable = innodb_additional_mem_pool_size=2M
set-variable = innodb_log_file_size=170M
set-variable = innodb_log_buffer_size=8M
innodb_flush_log_at_trx_commit=1
set-variable = innodb_lock_wait_timeout=50

(I had to set innodb_log_file_size to the actual size of my log file)

I then edited the XAMPP batch file that starts the mysql service (C:\Program Files\xampp\mysql_start.bat). I added –innodb_force_recovery=6 to the end of the call to mysqld. So line 8 of that file now read:

mysql\bin\mysqld –defaults-file=mysql\bin\my.cnf –standalone –console –innodb_force_recovery=6

This did the trick! My databases were recovered on my machine. I used SQLyog to do a sql dump of the database to restore it on our production server.

If this helped at all, please leave a comment and let me know.

Password Protecting a Zip File Using PHP

I needed a way to add a password to zip files I was creating in PHP, but it seems support for that is lacking. So I resorted to using Info-ZIP. This particular site I was running PHP on a Windows IIS server. Info-ZIP is free and supported on multiple platforms. I downloaded the Windows binary file and put zip.exe in my C:\WINDOWS folder. I then had to give the Internet User Execute permission on C:\WINDOWS\System32\cmd.exe in order for me to call the system() function in php.

Then I wrote a quick test script that seemed to work:

<?php
$filename = "filename.zip";
$pdf = "document.pdf";
echo system("zip -P 1234 -j $filename \"$pdf\"");

The 12 Reasons Satellite is Better Than Cable, Minus The 6 Reasons It is NOT

The top 12 reasons satellite television (i.e. DIRECTV & Dish Network) kick cable’s (i.e. Comcast) Butt:

  1. More channels – Satellite providers are available across the country and out of the country even. More customers means more customer demands and hence more channels and packages available. Let’s say a particular channel is popular and available back east and you want to watch it on the west coast. You are much more likely to have this channel included in you satellite package that you would in your cable package. For example, I like watching Braves games and I live in Utah. Many of the games are played on SportsSouth. That channel is available on both DIRECTV & Dish Network, but not available through my local cable provider.
  2. Cheaper – Thanks to the two major players in the market, the costs are quite reasonable. You will find by comparing packages that you can get much more for your money than you can with cable.
  3. No Activation Fees – Order from either satellite provider and they will be out within a couple days and get you all set up, for free! Cable always tends to tack on a $30-$100 setup fee.
  4. Better Equipment – Enjoy top of the line gadgets from the satellite dealers – again, in most cases it is free.
  5. Free DVR! – Even with the cheapest satellite plans, you can get multiple DVR’s for free. Once you’ve had a DVR it’s hard to imaging not owning one. Cable’s DVR’s seem a bit out of reach in my mind for the average consumer.
  6. All Digital – All channels are digital on the satellite. This is not the case with “digital cable”.
  7. More sports – Looking back at reason number 1, you will see why this is the case. Plus, DIRECTV has more sports than any other provider. If you are a true sports fan, DIRECTV is your only options really.
  8. And Music – DIRECTV has XM satellite and Dish Network has Sirius. What does Cable have?
  9. Customer Satisfaction – OK, everyone will have their complaints and when there are problems with TV service I’ve found that people bark loud! But overall, based on consumer surveys, Dish Network is #1, and DIRECTV is #2. Oddly, is seams customers are more happy when they pay less and get more… go figure.
  10. More HDTV – Satellite has led the way when it comes to HD. Soon DIRECTV will air 150 channels in HD including local channels.
  11. Availability – This obviously will not apply to MOST people, but if you live in Rural area that doesn’t have a cable company, or a new development where the utilities have not yet come to you, you basically have no other choice.
  12. Portability – My mom is weird but, I know whenever they take their camper out, they take along their extra satellite dish and receiver and have satellite TV with them while their camping (if you can call it camping). Have you ever heard of anyone taking their cable with them?

… And the 6 reasons why cable has its strong points:

  1. Reliability – I went 5 years without having a problem with my satellite including wind, rain & snow, then one day it went fuzzy. That’s when I switched to the other provider and problem was solved. There may be occasions when snow or some other environmental variable may cause interference with your satellite. You just don’t have this problem with cable. That’s not to say cable is perfect. It seems my cable high speed internet has more outages than my satellite, but that’s a different beast.
  2. Local packages – Cable companies are generally local and they know what locals want. The biggest example I can think of is right here in Utah. BYU and University of Utah Football is HUGE in the fall. The mountain west games are now being played on 3 different channels: 1. The Mountain (MTN); 2. Versus; 3. CSTV. Comcast has all three channels in their basic package. Neither DIRECTV nor Dish Network carry the Mountain. It is a new station and they claim they don’t have enough demand yet. I personally thing the real issue is because Comcast owns the Mountain. Damn them all!
  3. Package Deals – Sticking with the local them, you can often get your phone and internet through your cable company, which can save you some money.
  4. On Demand – Comcast loves to tote their On Demand stuff. This basically lets you choose from a library of shows and movies that you can watch anytime – much like YouTube ;)
  5. No Roof Décor – Hey, you can always put the satellite on the side of your house if you don’t like it on the roof ;)
  6. No Contract – Often, if you’re going to take advantage of the free equipment and installation with the satellite providers it will require a one or two year contract. With cable there is generally no contract so you can cancel at any time.

Over a Year and No Mountain

The MountainIt’s that time of year again. My contract is up on DIRECTV, so I’m preparing to make the switch to Dish Network for some new DVR’s and more channels for the money.

I’m a bit hesitant though. Even though I’m a big fan of satellite television, I’m actually considering Comcast. Why? Well, it’s been over a year, and still the Mountain (mtn) is only available on Comcast. Now, was this some ploy by Comcast to get more subscribers? So what’s a guy to do, be stubborn and say no to the monopoly, or enjoy some BYU & Utah Football?

Decisions… Decisions…

I guess for now, I can do my part by signing online petitions and making my voice heard. I will be sure to tell DIRECTV that the reason I am leaving is because they won’t offer mtn. ;)

The Cost To Fix a Computer

I recently built my own computer and I know from experience it can be a pain in the butt finding and fixing issues. (In my case it was the bios not giving my RAM enough voltage.)

I am the family tech support guy. It makes sense that every family has one of these, otherwise, you may be left to the wolves trying to find an honest computer repair store…

How To Get “Free” DIRECTV Upgrades

I was browsing my DIRECTV account online this morning and noticed that I was eligible for various free upgrades. My first though was, “man, I could have had another DVR all this time… for free?”

But then I read the fine print

Offer for existing residential customers only and requires a two-year programming commitment to any DIRECTV base package or DIRECTV Spanish-language® package, and activation of DIRECTV® DVR service.

So I would have to renew my contract for two years, but I would also have to activate DVR service. What if it is already activated?

In any case, after comparing apples to apples the pricing and channels available of various packages, I think I’ll be switching to Dish Network next month anyway.

Sortable (Drag & Drop) Table Rows

OK, here’s the problem. I need an easy way to sort table rows for my new mini site at www.BigBangHosts.com. I normally use script.aculo.us for my DHTML & Ajax needs, but in this case I couldn’t find what I needed. I wanted and easy way to sort table rows and store the new sorting in the database. This would easily allow me to change the rankings of various hosts in my admin control panel.

Option 1 was to create a separate page just for sorting. This way I could use a list. The reason I didn’t like this options was because I would not be able to see all the features of each host at a glance as I could with a table.

Digging deep into the Google results I found this demo script that was simply awesome. In order to get it to work for my needs I did the following:

  1. Viewed the source and got the javascript that did the sorting work.
  2. Downloaded dhtmlapi.js from www.howtocreate.co.uk
  3. Added a kludgey hack at the end of the stopDrop() function to post the new order to a php script
  4. Used PHP to write to the database.

The result allows me to drag and drop and everything is seamlessly saved!

Kludgey Hack =
var getstr = "";
for( var i = 0, x = theTable.getElementsByTagName('tr'); x[i]; i++ ) {
getstr += x[i].id;
}
var runscript = new Image();
runscript.src = 'sortrank.php?order='+getstr;

PHP Snippet (table row had id values of “id{row_id}”)=
$order = split('id', $_GET['order']);
array_shift($order);

foreach ($order as $val) {
$sql = "update hosts set rank=".++$rank." where id=$val;";
query($sql);
}

Special thanks to Mark Wilton-Jones for doing virtually all the work for me.

Blog Publishing In Word?!

So I just upgraded to Microsoft Office 2007. I saw this feature to publish a document to a blog. You know me, I just had to try…

So let’s see how well it performs:

Lists

  1. One
  2. Two
  3. Three
  • Bullet 1
  • Bullet 2
  • Bullet 3

Big
Colorful
Text

And an image:

The Quest for My New PDA/Phone

Last week I woke up one morning to find my cell phone dead. It just wouldn’t turn on. I’ve tried not to rely on a cell phone most of my life, but this week, with all that I had going on, was a bad week not to have a cell phone!
But I’m a glass is half full kind of guy. I’ve been considering integrating my cell phone and PDA into one unit, because, quite frankly I don’t seem to use my PDA so much anymore because I don’t like carrying the bulky thing around. I use it every week in church for my scriptures and manuals, but the calendar and task list was less than useful as I didn’t carry it with me enough to get the reminders I needed. I would like to make it a useful tool again.Since I generally take my cell phone with me I thought it might be more convenient to get an integrated device. So I set off on my quest to find the device I desired.

When searching for a smart phone, below are a few items that weighed on my mind in this decision.

Palm OS vs. Pocket PC

My first question was, do I want to go back to using Palm OS, or stick with Pocket PC. I started on the Palm and wrote applications for the Palm. It was very nice. But one day my work said they would no longer buy or support Palm OS for us and if I wanted to upgrade my PDA it would have to be a Pocket PC. So I got one. At first I really didn’t like it. It seems much less intuitive than the Palm. With each new release of the OS it has improved and I can now see definite advantages, such as new technologies, support, a multi-threaded OS, etc. Plus, for the past few years it is all I have used and I have registered application for it. So number one, it needs to be Pocket PC

How About an iPhone?

I didn’t mention this above, but what about an iPhone. It’s all the buzz right now and it crossed my mind. But the cons certainly outweighed the pros in my mind. Sure it would be cool to be one of the first to own it. But I’m not really into using my phone as a music and movie player. I have an iPod video and I don’t even use that often enough to justify the expense. And I’m sure the iPhone will be more expensive with the demand they are hyping up. I couldn’t wait a whole month without a phone and I’m not sure that it will be completely stable on its initial release anyway. Besides, whatever you can do with an iPhone, I’m sure you can do on a Pocket PC, and then some.

PDA Style

So I’ve decided on a Pocket PC (Windows Mobile platform). But now there are choices as to what brand and style. I knew that to keep the same feel as PDAs I’ve had in the past, I wanted a model with a stylus. And I decided I wanted a large screen. This is useful for reading, which I do a lot of on my PDA. With a larger screen you can scroll less often which is nice. So when I made this decision, this led me to compare two main models, the Cingular 8525 and the T-Mobile Wing.

T-Mobile Wing (a.k.a HTC Herald or PC4350)

This is one of the newest smartphones on the market. It replaces T-Mobile’s MDA. A friend of mine recently purchased the MDA and has been pretty happy with it. It looks and and best of all, it’s one of the first to come with the Windows Mobile 6. I’m already a current T-Mobile customer. I did have the options of getting this for $300 if I extended my contract 2 years whereas, if I were a new customer I could get an additional $100 off through LetsTalk.com. The positive side of not switching carriers is that I would not have to pay an activation fee. The main negative point with this device was the processor speed. I watch some C-NET videos and YouTube videos and it seemed a bit sluggish.

Cingular 8525 (a.k.a. HTC Hermes TyTN)

The Cingular 8525 (or the New AT&T 8525) was my other options. has a very similar design to the T-Mobile Wing. It’s been around longer and is a time-tested device. The processor in this device was about twice that of the T-Mobile Wing, yet it still runs Windows Mobile 5. This was where the dilemma was for me. Do I want the latest OS, or a faster processor. So now the question was, can I have my cake and eat it to? I set out to find upgrade options for the device and found that AT&T may provide an upgrade to WM6. If not, I found a site where I could download WM6 roms if I were brave enough to do so. That was what swung the decision. The other feature that seemed to be better was according to CNET, the 8525 took sharper photos than the T-Mobile Wing.

Of course when comparing, we can’t forget price. I always find the BEST deals on LetsTalk.com. The rebates for this model allowed me to get it for $200. I’m moving a family plan though and I was able to find a nice Sony Ericson phone for my wife that actually made us $100 after rebates, so it knocked the total price down to $100! Cha-ching!

My PDA/Phone should arrive today according to the UPS tracking number I was given by LetsTalk.com. That pretty impressive considering when I ordered last Thursday I was told both phones were backordered and estimated arriva date was this Thursday. I’m getting them 2 days early - Yay!