Saturday, December 15, 2007

DMG Converter for OS X

DMG Converter is rapidly becoming my archiving tool of choice for OS X. With the exception of creating encrypted images, this nifty and free utility does just about everything else. It currently has support for just about every compression type across most major formats.

I personally use it to archive those CDs/DVDs which manufacturers still seem to want to send out. I prefer the dmg format, but sometimes when you need some cross platform support an .iso is the only way to go. The real beauty of this application is that if you are like me and are running XP/Vista in parallel, you will need a quick and easy way to get the iso loaded, and without having to stop what you are doing, and go searching for a physical media like a CD or DVD. This makes it easy to load in parallels when you need to get something done quickly. I have included screen shot of the types of images the converter accepts and understands. This application is written for Tiger (10.4.x) but so far I have had no issues running it in Leopard (10.5.1).

Friday, December 14, 2007

Google Toolbar Button for Google Code

Boy is that title a mouthful or what....

I got tired of constantly having to open a new tab just to search Google Code. So I looked for a Google Toolbar button for Google Code. There was one available but the button would not send selected text, it was search only. If you know me you know I will not settle for the minimum.

This version of the button has search, send selected text to, as well as a feed based drop down list for the major areas of

Please enjoy, if you find it useful please pass on. Google takes a long time to add it to their library, so getting it off my site is currently the only way. I linked from, but it is actually hosted on my other site,

Thursday, December 13, 2007

Advanced Web Ranking

Advanced Web Ranking is a SEO tool devised specifically for SEO/SEM analysts and is available on Mac OS X, Linux, and Windows . It requires the JRE engine to work but it utilizes the local environment so that the user interface is very seem-less. I will be discussing the Mac version, although the topics will apply to all versions.

The primary reason I use this tool (which is still in demo mode) is for determining the placement of my keywords from Google search results. I also check the sites of all my competitors as well as the sites of those I think will rank highly in Google based on relevancy. Since it tracks the information over time, I can see how I am doing and how the changes I am making to the sites are reflected (if at all) in Google SERPs. There are some serious things I like about this software and I will go through them first.

1. Import initial lists of keywords based on lists - The software will take a list of keywords during project creation. This saves a load of time. I keep all my keywords in a text file anyway as I am constantly monitoring and changing the words. Con - I must change the keyword in the application, which for me means that I must update the master list (regardless of if it is a text file or a db) as well as the application.

2. The application will import a list of websites to check the search engine for regarding site placement. - This is also a great tool. See #1 above for pros and cons.

3. AWR can update multiple projects at a time - Either through a cron (which if you know me you know I love to put things under Cron's control) or using it's manual process. The only downside to using the manual process is the time it takes. Utilizing a cron job (which the built in scheduler interfaces with quite easily) is more simplistic and can be done at intervals to maximize your CPU time (weekends, nights, etc)

4. Output formats are universal for reporting
- this includes CSV, Excel CSV, and XML. I utilize the CSV output for easy upload into a SQL DB. Once a week my reports are generated after an update, and uploaded into a DB for easy lookup and for data redundancy efforts. This is great because I do not have to rely on a localized db (like FileMaker or mySQL) running on my machine. The DB I upload to is tape archived and on a very good UPS. The data is in two locations and easily accessible for multiple persons.

5. The contextual menus for keywords - will allow you to jump right to the landing page for the site and keyword or jump to the SERP as it is at the current moment in time, which can tell you quickly if your results have changed.

Some of the larger cons for AWR are mainly my own issues. I would like to see a toggle in the keyword listing for showing just the keyword selected in the primary list. This would save me from having to do a regular expression search using the built in search bar for keywords. I would also like to see the application track (again a radio button or a check box) that the word is a paid term or paid keyword. This way I could tell quickly to stop paying for a #1 or #2 keyword.

All in all this is a good application. It is not what I am currently seeking in the entirety, which would be a keyword management tool which could auto import from multiple locations, but this will do in getting me relevant data to analyze in my SEO roles.

- Chris Copeland

Thursday, November 29, 2007

Google Gadgets on OS X Dashboard

So Google announced this yesterday, but pushed implementation to today (11/29/07). I installed it as soon as it was allowed.

This is not quite what I expected....

Although useful, the gadgets available for OS X implementation are not as available as they are for iGoogle, which I use frequently to monitor different data sets and to do lists.

However, even given this, it will make development a since for people wanting to hit both the OS X dashboard and the Google desktop markets.

The installer is only available through the "Google", which comes with the build of the Google Desktop for Mac OS X.

Wednesday, November 14, 2007

Apple Airport Disk Utility

Why would Apple not give everyone a link to download the Apple Airport Utility software, but then include it in the stupid update to 5.1, hidden, nested in the directory of the mpkg?
The only answer I have is that it must have the plans to a top secret jet plane embedded somewhere in the files. Now all I have to do is find Dabney Coleman, my Atari, and go to the Alamo to get it all worked out.....

If you want the software, lost your disk, and don't have time to "play a game", then you can feel free to use my backup of the disk image located here.

Wednesday, November 07, 2007

Securing your files in OS X

If you are like me, you are concerned about privacy and security regarding your files. In OS X you can use Apple's FileVault, which will encrypt the entire disk, or you can rely on 3rd party applications to secure individual files for you.

If you want though, there is a much easier way. Apple's Disk Utility will create 256bit AES encrypted disks for you, which of course are images, so you can read/write/and keep safe.

This is a perfect way to keep files compressed, together, organized, and encrypted. It also makes it much easier to back them up to NAS, DVD, or using any of a number of backup utilities. My only suggestion is to use a large password. A friend of mine recently posted that he uses this method to keep his quicken files encrypted. If you are running on a laptop, you would definitely want to keep any financial records, lists of passwords, email, etc, encrypted. If it gets stolen you can always replace the laptop, but you cannot always replace the damage caused by identify theft or credit score loss.

Take it from a guy with bachelor's degree in criminology, a master's degree in criminology, and a professional information security certification, you need to keep private or sensitive data encrypted.

Monday, October 29, 2007

Apache2 and Personal Web Browsing in Leopard

The answer to Friday's post is simple. Apple installed Apache 2, which has a different directory structure than that of apache.

The answer can be found on Apple's Forums. Also PHP is turned off by default, so be sure to edit the httpd.conf file to turn it back on.

From the post:
"I got PHP working with Leopard by modifying the httpd.conf file that you can get to by going to Go -> Go To Folder, /etc then going into the apache2 folder and copying httpd.conf to the Desktop (it won't let you edit in place). Find the line that says LoadModule php5_module etc...... and remove the # from the start. Save the file and drag it back into the apache2 folder, you'll have to authenticate to get it in there. Then restart apache by switching personal web sharing off and on in the sharing pref pane.

I had the same problem with my personal web sharing folder for my username not working on both the machines I installed it on (as an upgrade). The machines web sharing is working tho, just not the one for each user account. To fix it, create a file called shortusername.conf (where shortusername is your shortusername, eg, joebloggs and in it put this...

Directory "/Users/shortusername/Sites/"
Options Indexes MultiViews
AllowOverride None
Order allow,deny
Allow from all

Save the file and put it into the apache2/users folder - restart personal web sharing and boom!, its working now."

I did all this in the terminal, sudo of course.

I hope this helps.

Friday, October 26, 2007

Apache post Leopard 10.5 install

The upgrade itself went fine. However, now I cannot see in a browser:

http://localhost works fine

I checked out 2-3 other leopard upgrades - it's consistent on all machines.

My (current) permissions are:
drwxrwxrwx+ 14 ChrisCopeland ChrisCopeland 476 Oct 26 14:20 Sites

Apple tech support thought I was on server. The dude was not aware that apache comes on all installs. Once we got over that hurdle he was still a little confused. I looked through the httpd.conf file but could not find anything out of the ordinary.

Can anyone else verify? Got any ideas?

Setup is:
Model Name: Mac Pro
Model Identifier: MacPro1,1
Processor Name: Dual-Core Intel Xeon
Processor Speed: 2.66 GHz
Number Of Processors: 2
Total Number Of Cores: 4
L2 Cache (per processor): 4 MB
Memory: 2 GB
OS X 10.5

Wednesday, October 24, 2007

A Complete Course in Electronics

usacomputertec over at YouTube has posted a 5 part series on how to use the Radio Shack, 28-280 Electronics Learning Lab.

I think I will pick this up to get a good refresher on my electronic circuits. It has been a long time since I picked up a soldering gun and went to town, so perhaps, if you are like me and need a refresher, you should consider one of these kits. The Radio Shack website has them for $65. I will drive down to the local RS store at lunch and see if they are instock.

Check out the video, it assumes you are a complete beginner, which if you are like me, you might as well start over from the start.

Monday, October 22, 2007

How To: The Urchin Data Extractor part 2

Well I said I would publish my script on Friday. Sorry about that, my wife and I moved into a new house over the weekend and I guess I was just a little over zealous.

Anyway. The script. In the past post I showed you how to (basically) setup the urchin script and make the command line calls to it. In this part, I will show you what I did to automate the process for ytd 2007, including all the months up to the current month. I utilized the bash quite a bit here. I'm sure there is a faster way to automate this without using as many tmp files, but I like to keep my data in stages.

Here is the script:
cd /Users/ChrisCopeland/Apps/scripts/urchin
currentMonth=`date '+%m'`
currentdate=`date '+%Y%m%d'`
currentYear=`date '+%Y'`
let loopVar=currentMonth+1
echo "Monthly Reports Available :"

while [ $i -lt $loopVar ]; do
echo "$i"
let i=i+1
read -p "please select the month or enter ytd for year to date: " -e input
case "$input" in
perl --begin 20070101 --end $currentdate --max 21000 --report 1201 >>fileTMP;
perl --begin 20070101 --end 20070130 --max 21000 --report 1201 >>fileTMP;
perl --begin 20070201 --end 20070230 --max 21000 --report 1201 >>fileTMP;
perl --begin 20070301 --end 20070330 --max 21000 --report 1201 >>fileTMP;
perl --begin 20070401 --end 20070430 --max 21000 --report 1201 >>fileTMP;
perl --begin 20070501 --end 20070530 --max 21000 --report 1201 >>fileTMP;
perl --begin 20070601 --end 20070630 --max 21000 --report 1201 >>fileTMP;
perl --begin 20070701 --end 20070730 --max 21000 --report 1201 >>fileTMP;
perl --begin 20070801 --end 20070830 --max 21000 --report 1201 >>fileTMP;
perl --begin 20070901 --end 20070930 --max 21000 --report 1201 >>fileTMP;
perl --begin 20071001 --end 20071030 --max 21000 --report 1201 >>fileTMP;
perl --begin 20071101 --end 20071130 --max 21000 --report 1201 >>fileTMP;
perl --begin 20071201 --end 20071230 --max 21000 --report 1201 >>fileTMP;

#cleans the slash for easier editing
tr "/" "_" <>fileTMP2
#start of line removal
sed '
s/\ $//' <>fileTMP3
cat cleanThese | while read line; do
sed -ie "/$line/d" fileTMP3
less supplierTMP3 | cut -c 2-500 | grep -v "^ " | grep -v "^_" | grep -v "^#" >>fileTMPws
tr -s " " fileTMPcond
sed 's/ /,/' /Users/ChrisCopeland/Sites/urchinreports/file$currentYear-Month$input.csv
#cleans temp directory
rm fileTMP*
echo "your report is complete"

Now we can go through the script. The first part should be self explanatory, I am setting the values for the current date, month, and year (year is not yet implemented in my script, but will be soon). Then I ask the user for which report (monthly) they would like to generate, and show them a numerical list of the reports available (from 1 to current month). It will be in this case function that I will implement the current year, so that a user can get the month and year data needed. At the moment we are only interested in the year 2007.

Next comes the hairy part - the cleaning of useless data. I have a file for the most common items I want filtered. The file is called cleanThese (simple name). Before I open that file though, I want to clean certain characters and items which get skipped over do to the fact that this log file which is generated, will have a list of urls and paths in it. Paths and urls have weird characters sometimes, like ";" ":" "/" etc. Try passing these into a command line sometime and you will see how troublesome they can be. So let's get them out of there.

tr "/" "_" - replaced "/" with an underscore, which will make it easier to clean the rest of the log.

Now we throw this whole thing to sed - a great program.
sed '
s/\ $//' <>fileTMP3

we have a lot of oler cold fusion files, and some items that have a problem in the clean file, this sed command, which is a chained command, one per line, cleans these things out and leave nothing in the pattern's place. You can see now why I cleaned out the extra "/", I would have been passing a /// to sed, which it doesn't understand.

Now the cleanThese file:
cat cleanThese | while read line; do
sed -ie "/$line/d" fileTMP3
This reads each line of the cleanThese file (which I can modify at my desire) and replaces the entire line of the patten with nothing, effectively removing the line.

Then I want to clean up the formatting from the output of the cleaning:
less fileTMP3 | cut -c 2-500 | grep -v "^ " | grep -v "^_" | grep -v "^#" >>fileTMPws

This line will cut certain characters out (based on the original output), pass these to grep with an inverted search 3 times looking for different patterns, then writes that out to yet another tmp file.

The next line:
tr -s " " fileTMPcond
compresses all the space characters to one, outputs that to another file, which sed will take in, and replace the now single space, with a "," - effectively making this a csv file, which is names with the current month and set to a directory.

The next couple of lines clean the directory of tmp files and report to the user in the shell that the report is ready.

This will leave you a clean, importable, ready to query csv file just aching to be imported into a SQL engine of some sort.

Again if you want to run a different type of report, or use the case statement to generate a set of reports, you can visit my website to find a list of urchin reports available.

I want to find a good way to make this script available in a web interface at some point. I would also like to give the user a list of reports and years at the front of the application, just to help automate the process further.

Please Enjoy!

Thursday, October 18, 2007

How To: The Urchin Data Extractor (u5data_extractor)

You can get the perl scripts for customizing Urchin data at the Google Urchin Support Page. I read the little documentation on this subject, which is a basic how to, without much resource. Urchin support firms charge something serious to get this kind of thing done, and here I am being a nice guy, giving away what I learned FOR FREE.

So let's begin with the lessons I learned.

1. Use some form of linux/unix. I could not, for the life of me, get any of these scripts to work with Windows and I think this is because of the path. The perl script is looking for a unix like path. I'm sure there are those people out there, smarter than I, who can get this to work on a windows server, but I am not one of them. The examples I give will be run from a Macintosh running OS X 10.4.10, ActiveState Perl, and the bash. In addition I would like to thank the wonderful folks (yet again) over at macosxhints forums as well as forums for helping me get my syntax correct in my scripts.

2. Use a step by step process.

3. Verify your data, and backup! The last thing you want to do is run an untested and "use at your own risk" script on your Urchin reports.

4. Do not always believe the available documentation.

5. When report testing, use small segments of data for your report. It saves time and you get to test your text scrubber faster.

Ok - now let's get to the logical process. What I wanted to do was to pull certain reports from Urchin and post them to a database, preferably some flavor of SQL.

The process will look something like this.
1. run perl script with start date, end date, report type, and number of items returned.
2. save report as a text file
3. scrub text file for bad characters, bad lines, and data which is not applicable.
4. comma delimit the file
5. hand csv file to sql import engine.

sounds easy right? It is for the most part.

The u5data_extractor script will do a lot of this work for you. This is the usage section of the script, which will also show up in the command line if you call the script with ~$ perl u5data_extractor. I removed the copyright and some other text for the purpose of posting to the blog.
# Usage: [--begin YYYYMMDD] [--end YYYYMMDD] [--help]
# [--language LA] [--max N] [--profile PROFILE]
# [--report RRRR] [--urchinpath PATH]
# Where:
# '--begin YYYYMMDD' specifies the starting date (default: one week ago)
# '--end YYYYMMDD' specifies the ending date (default: yesterday)
# '--help' displays this message
# '--language LA' specifies the language for the report. Available
# languages are: ch, en, fr, ge, it, ja, ko, po, sp, and sw
# '--max N' is the maximum number of entries printed in the top 10 report
# types (default is 10).
# '--profile PROFILE' specifies the profile to retrieve data from. The
# default is specified at the beginning of this script
# '--report RRRR is the 4-digit number for the report (default is 1102)
# Run this script with --help to see a list of available reports
# '--urchinpath PATH' specifies the path to the Urchin distribution.
# Note that you can edit the script and set your path as a default

Giving the script your default path:
You will need to give the script the path to the Urchin Directory.
this is the line for my machine (following a unix path):
my $urchinpath = "/usr/local/urchin"; # Path to the Urchin distribution

Give the script your default profile:
You will need to give the script the default profile.
This is the line for a made up profile in the script.
my $profile = "My Default Profile"; # Name of the default profile
This is important - you do not have to use %20 to represent spaces if you are using the quotes. Urchin, by default, stores the profile directories with %20 for whitespace characters.

The report number is a difficult thing. Where do you find those reports? I found an article, somewhere, which shows the report numbers. Have no fear, I made a list for you of the urchin report numbers.

I will give an example, since none was really given for me. Let's say I want to run a report from Jan 01, 2007 to Jan 27, 2007 for the report "Visitors & Sessions"
so when you call the script, you will be using the following syntax:
perl u5data_extractor --begin 20070101 --end 20071027 --report 1903 --max 10

this will generate the output to the standard out (screen), which I will not post due to privacy reasons.

If you want to redirect the output feel free to do so
perl u5data_extractor --begin 20070101 --end 20071027 --report 1903 --max 10>>output.file

Tomorrow I will post my scrubbing process as well as the script I used to call backup the data and generate the reports.


Monday, October 15, 2007

Using Bash Script to check for a server connection in OS X

Many thanks to robinwmills over at macosxhints forums for the assist on this. I needed a script which would check for a server connection, and if that server was not present, attach the server with a name and password.

The issue here is that smb connections from an OS X box to a Samba/Windows box often just quit. It is a known issue requiring you to jump through fiery hoops to re-establish the smb connection. All I needed to do was dump some csv files to a location and let SQL Server 2005 handle the rest.

Here is the code:
#checks to see if share is mounted
stat /L/windows >& /dev/null
if ( $status ) then
echo 'setting up mount on /L'
osascript -e 'mount volume "smb://domain;username:password@"'
echo 'alive'
#file manupilation
umount /Volumes/share

From what robinwmills explains:
stat does soemthing like ls - it lists directory/file information. I can't remember why I used stat instead of ls, however I don't think there was any special reason.

Anyway, I have the Share "L" on /Volumes/L (and a sym link /L -> /Volumes/L)

stat /L/windows >& /dev/null

says "pipe stdout and errout from stat to no-where". stat sets $status to 0 for success. So I can test to see if there is a windows directory on L. If you don't use the /L symlink trick, you could do stat /Volumes/L/windows >& /dev/null

What I did was establish the connection (authenticating to the domain controller) for only the amount of time needed to copy the files, then disconnect by umount'ing the volume. I'm sure there was probably a more graceful way of handling the disconnect, but it gets the job done. I had not yet ever used applescript from the shell before, that turned out to be quite handy, as well as the line for connecting to the share with a domain, username, and password. I just passed this off to my local cron bad boy, and this is running like a charm. I have used shell in applescript - I will definitely have to read up more on this.

I found it difficult peering through the search engines for this type of solution, so I will make sure that it get the proper tags.


Wednesday, October 10, 2007

Bye Bye XP

After upsetting me for the last time, I did something I never thought I would do...I took the plunge whole-heartedly into Linux.

Mind you this is not trying the flavor of the week on some secondary machine. I backed up all my non-os data, and wiped my XP load clean off my primary PC at home (it will have to do until I get another mac).

I tried SuSE Open Source 10.3, I have to say that although it was nice, I was still left with the impression that it was missing things, mainly dual monitor support. U will write more tomorrow about my SuSE 10.3 experience, good and bad.

So Ubuntu it is...dual monitors, FireFox, Perl, Python, and CrossOver/Wine (soon). I'm not really needing much more atm. I don't have to worry about licensing, OEM crap, or corruption (scripts in place back up my home folder to a thumb drive).

It has been a while, but it is nice to be back /

Monday, October 08, 2007

Gateway refuses to downgrade Vista to XP

I tried to get a laptop downgraded from Vista Home to XP. This is the chat session from Gateway technical support. This was recorded at roughly 8pm CST on 10/8/07.
James_GWER7961 joined the incident.

James_GWER7961 says:
Thank you for contacting technical support. My name and badge number are James_GWER7961. Please hold while I review your issue.

James_GWER7961 says:
Hi Chris! How are you?

Chris Copeland says:
James I have had better - but thanks for asking

Chris Copeland says:

Chris Copeland says:
I would like to know how to trade in my license of Vista for a license of XP

James_GWER7961 says:
According to your submission and my data, the serial number for your Gateway system is xxxxxxxxxx. Is this correct?

Chris Copeland says:
unless I'm reading it wrong - yes

James_GWER7961 says:
Thank you for verifying your information. I see that you would like to trade your operating system to Windows XP from Windows Vista.

Chris Copeland says:
yes please

James_GWER7961 says:
I apologize but we do not offer trade in for retail products and parts specially software.

Chris Copeland says:
so I have a license to an OS that I cannot use?

Chris Copeland says:
none of my applications are vista ready

James_GWER7961 says:
For us to further assist you with your concern, I need to have your complete address, purchase location of your computer and purchase date.

Chris Copeland says:
I will have to gather the information on the purchase location/date as I do not have the receipt with me, but my address is (removed for privacy) arlington tx

Chris Copeland says:
let me see if I can get the receipt.

Chris Copeland says:
I do not have the receipt, but I know it was the Best Buy in Mansfield Texas

James_GWER7961 says:
Please continue to hold while I register your system.

Chris Copeland says:
Thank you

James_GWER7961 says:
Thank you for holding. I have successfully registered your system under your account.

Chris Copeland says:
thank you

James_GWER7961 says:
My information shows that your computer came with Windows Vista operating system preinstalled.

James_GWER7961 says:
Is this correct?

Chris Copeland says:
unfortunately yes

James_GWER7961 says:
Well, the software that also came with it are Windows Vista compatible.

Chris Copeland says:
yes that is true, but the software I own outside of the bundle does not.

James_GWER7961 says:
So its a third party software?

Chris Copeland says:
yes - and it is not working with Vista

James_GWER7961 says:
Have you tried to contact the manufacturer of the software that you installed regarding this?

Chris Copeland says:
yes. I was instructed to revert to XP SP2

James_GWER7961 says:
You would need to purchase a retail version of Windows XP, Chris. We are unable to replace the current operating system installed to yoru computer which is Windows Vista.

Chris Copeland says:
thank you

Chris Copeland says:
I assume I can keep a copy of this chat report

James_GWER7961 says:
To save your chat log, please click on the "View Live Log" button at the bottom left side of the chat window. It will open a chat log window. Please use the option to "Save log to disk". Keep in mind you do not need a disk or cd. You can simply save the log to your system.

James_GWER7961 says:
I hope that I was somehow able to provide you the information that you need.

Tried as I did, I was told that I must go buy a copy of XP, retail. So now I have a copy of Vista that I am never going to use, and no way to get rid of it. I simply do not accept the terms of the Vista license Agreement. According to the EULA on Microsoft's site, the downgrade only applies to Vista Business and Ultimate users, not Home Edition (which I have pre-installed). So what do I do about a refund then? I simply do not want Vista loaded, but it looks like I am either being forced to run Vista, or being forced to buy a copy of XP. I want to make it clear that there is currently no operating system on the laptop. The Vista license is not installed on any machine.

PDF in iTunes

The idea of having PDF for my research was certainly not a new idea. I turned several students on to the idea in grad school. I even turned in the CD as my compilation of my research works which was a lot simpler than turning in a few boxes of research paper.

I read this fine article on Make this morning:
Digg user enjayenel wrote "I love using iTunes as a PDF library tool. I have hundreds of PDF manuals that I need organized access to. I just add them into the iTunes Library, edit the ID3 tags, create a smart playlist to group them together, and turn on the Browse feature (command-b) to get quick navigation to the PDF I am looking for based on title, product name (artist tag), and version (album tag). Double clicking the PDF opens it in your default PDF viewer".

Holy crap batman. I can't wait to get home to my several thousand pdf files and use one of the best applications yet. This functionality will change how I do research from now on. I have now read up on (almost) everyone's opinion regarding pdf files in iTunes, and there are some bit I like and I don't like. I think the idea of turning off the "copy to iTunes directory" is a bad thing. Let me tell you word...backups. If you let your iPod auto sync with iTunes, you will automatically have a backup of your work, no more late night crashes, even more so, your information is organized.

To get that information organized we will have to modify the id3 tags in the meta data of the file in iTunes. I also have to agree that PDF support should be a plugin from apple. On the mac, imho, nothing beats preview and it's abilities, Foxit Reader may do it for me, I will test it tonight.

I am now wondering if there is an automated way to import the data, perhaps the title information from the pdf itself. I know this is all just stored in the XML, but there must be a way. I will have to check the automator script archives around the web to see if there is anything useful. Just the use of smart playlists now have me jumping for joy.

Wednesday, October 03, 2007


I have been looking for an application which could easily attach lyrics to my mp3 and aac file in iTunes. I read about TuneTagger yesterday, tried it and liked it right off the bat (which is unusual for me).

I like the way TuneTagger checks the tags against the CDDB then displays what is called the "approval pane" which lets you chose which information to embed into the song file.

This even works with non-syncing iPods (at least it works with 5th gen). My iPod is not set to sync, I do it all manually, as long as iTunes plays a song, TuneTagger will verify the tags in the current or previous song.

This is a great app for $17.

Wednesday, September 26, 2007

My First Python Script

This is my first python script. Many thanks to the folks at for the help! There is nothing really special, I just wanted to do more than a hello world.

This was made using Active Python 2.5 for OS X and using both emacs, and Smultron for editing.

import re
import string
import urllib
url = ''
print "Enter your search term \n"
query = raw_input()
#print headers
url = url+query
response = urllib.urlretrieve(url, 'response.html')
print 'Your HTML SERP was saved as response.html'
print "press enter to quit"

which gives you command line output like this:
:~ ChrisCopeland$ ./
Enter your search term
Your HTML SERP was saved as response.html
press enter to quit

and my html document is a raw dump of the SERP from dogpile.

I would also like to warn anyone, a call like this to some search engines (especially ones that start with a capital G), consider this to be a violation of the terms of service, so just be careful.


Saturday, September 22, 2007


If you are doing any type of web development and you are planning on using a mysql table, do yourself a real favor and install phpMyAdmin. I have been using this solution for a few years now (since the move from postgreSQL to MySQL) and I gotta say it is a really nice tool to have.

There are several versions available, the OS X version comes in a nice mpkg installer as well as a easy to start script which will generate your blowfish key and get you going (that was a nice feature add on). I keep browzar (windows) or safari open to manage the tables and databases while I am working in other applications, it just makes it really nice.

For that matter make sure you at least try out MySQL. The latest versions come in a variety of installer packages complete with scripting to make sure the daemon is configured for launch at startup.

Thursday, September 20, 2007

Blocking your Competition in AdWords

I decided to go ahead and block my competitors from viewing my ads. First off, what does this really mean. The nuts and bolts are that anytime a person types in a word into the Google Search engine, they could possibly see an advertisement for your company, if you have purchased that phrase or term (keyword). If I wanted to be mean, I would click on the ads of my competitors, this is known as a form of "click fraud". I am not suggesting that you go out and start racking up the clicks, in-fact it would be harmful, Google and others have very good systems in place to catch it

Which doesn't stop the "occasional" click from your competitors.

Google does a pretty good job offering a tool in the AdWords application. If you navigate to your AdWords account you can select the "Tools", from there select the "IP Exclusion". Google will allow you to block up to 20 IP addresses, this includes wildcard ranges. So getting started, let us say that Yahoo! is my competition (it's not).

The first thing I would do is to find the IP range of the PICs, the people in charge. Knowing what I know about Yahoo!, they have a Mountainview/San Jose office and (I think it's still there) an Office somewhere in Dallas. Let's find out....this is where you need to know how to use the old whois tool. Whois is a query tool telling you who an IP has been registered to. The main database you want to query is ARIN, the American Registry for Internet Numbers, they will more than likely tell you who has what IP. So how do you find out the IP if you don't know it? Well you will need to do an IP lookup, this can be done sometimes by a straight ping, traceroute, or nslookup.

Now do not just go pinging away at the web address, that may not get you what you need to know! I almost never use the web address simply because it doesn't always mean what you think it means.

Webservers are not always located at the corporate offices, where the marketing department is probably located! I tend to look an office by mail server, which is also not always at the corporate office, but is more often than not. So lets find Yahoo's corporate office by IP address (if we can). shows up with an IP of Now all I need to do is find that IP in the world. SEOMOZ has a pretty little AJAX tool which can tell us where the IP is geographically located (most of the time). shows up in San Jose, off highway 82. This sounds right, now let's do a whois on that IP. The address comes up in Sunnyvale, not San Jose, but for my purposes it's close enough. Now lets look at the whois:

Search results for:
OrgName: Yahoo!
OrgID:      YAOO
Address: 701 First Ave
City: Sunnyvale
StateProv: CA
PostalCode: 94089
Country: US

NetRange: -
NetName: A-YAHOO-US3
NetHandle: NET-209-191-64-0-1
Parent: NET-209-0-0-0-0
NetType: Direct Allocation
NameServer: NS1.YAHOO.COM
NameServer: NS2.YAHOO.COM
NameServer: NS3.YAHOO.COM
NameServer: NS4.YAHOO.COM
NameServer: NS5.YAHOO.COM
RegDate: 2005-05-20
Updated: 2005-07-21
RAbuseHandle: NETWO857-ARIN
RAbuseName: Network Abuse
RAbusePhone: +1-408-349-3300
OrgAbuseHandle: NETWO857-ARIN
OrgAbuseName: Network Abuse
OrgAbusePhone: +1-408-349-3300
OrgTechHandle: NA258-ARIN
OrgTechName: Netblock Admin
OrgTechPhone: +1-408-349-3300
# ARIN WHOIS database, last updated 2007-09-20 19:10
The part we are interested in for blocking is:
NetRange: - 
which is ALOT of addresses, but you could enter up to 20 of these ranges in AdWords by entering them in the AdWords list as:

That should do it....enjoy

Wednesday, September 19, 2007

Lessons Learned with Airport Extreme Base Station

So I made the decision to use the built in functionality of the Airport Extreme Base Station's print and file sharing services. I went to Best Buy yesterday, shelled out my $179.00 and walked out. I hooked up a 500GB USB drive and went about my merry way to finally having a flexible NAS.

Setup for the Base Station was easy. I did some homework first though and here are some suggestions if you want to set one up yourself. I have what I like to call Acquired Knowledge - This means through trial and error I can save you a few steps.

1.RTFM - Read the Fine Manual. This comes in PDF from Apple's Site and as a paper manual in the box.

2. Format the disk using something other than Windows. I had multiple problems when the disk was formatted using NTFS, FAT32, and UDF. There were nothing but errors when using NTFS, FAT32 does not (beyond theoretical) support disks larger than 32GB, and UDF simply wasn't seen. I finally used Apple Disk Utility in 10.3.9 and from that moment on the Airport Software could see, mount, and share the disk.

3. Copy files via USB prior to establishing connection. I timed the transfer of my iTunes Library (26GB). It took 3 hours over G, 2.5 over N, and roughly 30 min over USB2.0.

4. Make sure to do all the updates to the Airport Base Station prior to disk install, this includes the firmware.

5. Make sure your wireless cards support WPA2. This is critical if you want to move on to something better than WEP.

6. For Heaven's Sake - Secure your network. Don't leave your network open, especially with the optional disk and printers attached. Password protect your network as well as your disk. Personally I did not use the "workgroup" option when setting up the disk.


Monday, September 17, 2007

Using Automator to Show Hidden Files in BSD Filesystem

This has probably been posted before somewhere else, but I found it to be useful to move it beyond the standard shell script.

At times I want to see the hidden files in Mac OS X, at other times my OCD of being organized makes me crazy and I have to turn them off. This is a perfect example of using OS X's built in functionality to simplify my life by making these easy scripts finder plugins using Apple Automator.

The script itself is quite easy:
defaults write AppleShowAllFiles FALSE
killall Finder

to Hide Files

defaults write AppleShowAllFiles TRUE
killall Finder

to Show Files

Now use these in Automator:

Save them as a plugin for the Finder:

and you are good to go:

This can be a real time saver. This does however kill the Finder, (killall Finder), which will cause Finder to relaunch, but this has not been a problem since 10.2.


Friday, September 14, 2007

More Fun with Lynx

I grew up using gopher servers before there was a www or http, so when the real "web" came along it was needless to say awesome. One of the first web browsers I used was Lynx.

Lynx is a very very simple browser, very useful in scripts and for checking to see how a search engine views the webpage. If lynx cannot see your content, it is very doubtful that a seach-bot will see it too.

So the last post shows how to use lynx to call Google's caching times. This will show you how you can automate lynx to do automatic retrieval of web information for you.

Here is a simple script which will read a file in line by line and pass the information off to lynx for a Google search.

cat ${1} | while read mySearchTerm; do
lynx -source -accept_all_cookies "$mySearchTerm"

This script will throw everything to the standard out. What I do is pass this information on to a text file or to grep for counting purposes.

cat ${1} | while read mySearchTerm; do
lynx -source -accept_all_cookies "$mySearchTerm" |grep -c ''>> /path/to/text/file.txt

and now we have auto document retreival from Google. A word of warning, because this will take whatever is in the line, you must be careful of non-alpha numeric characters like !@#$%^&*-\/, as these will be passed on to Google too, which can alter the search results. You can also use things like the 'date' command or other small *nix programs to alter the url fed to lynx. If you want to time this sort of script you can always use crontab functionality found in unix, linux, os x. Be sure to read up on the man page for lynx.


Wednesday, September 12, 2007

Quick Check of Google Crawl

If you are not using Google's Webmaster tools this is a quick BASH script which can check the spider rate.

type in a google search
note the return URL in the browser - save this (must have the IP)

set -o errexit
touch temp.txt
lynx -dump -accept_all_cookies "" | grep 'retrieved' | cut -c 4-50>>temp.txt
cache=`catrm -rf temp.txt
echo $stamp Google $cache>>/path/to/desired/dir/file.txt

Check out the documentation on the cut command which gets the info from grep, this truncates the number of characters passed to the temp.txt, adjust to what you need to get the desired result.

this should give you a return result like this:
Fri Aug 31 14:18:05 CDT 2007 Google retrieved on Aug 30, 2007 13:49:11 GMT.
Tue Sep 4 09:10:20 CDT 2007 Google retrieved on Aug 31, 2007 14:35:14 GMT.
Wed Sep 5 07:51:55 CDT 2007 Google retrieved on Sep 2, 2007 15:52:02 GMT.
Thu Sep 6 13:01:19 CDT 2007 Google retrieved on Sep 4, 2007 22:35:39 GMT.
Fri Sep 7 07:00:00 CDT 2007 Google retrieved on Sep 5, 2007 13:25:22 GMT.
Sat Sep 8 07:00:00 CDT 2007 Google retrieved on Sep 6, 2007 13:28:59 GMT.
Sun Sep 9 07:00:00 CDT 2007 Google retrieved on Sep 8, 2007 08:19:05 GMT.
Mon Sep 10 07:00:00 CDT 2007 Google retrieved on Sep 8, 2007 08:19:05 GMT.
Tue Sep 11 07:00:00 CDT 2007 Google retrieved on Sep 10, 2007 08:54:21 GMT.
Wed Sep 12 07:00:00 CDT 2007 Google retrieved on Sep 10, 2007 23:52:44 GMT.

a quick a dirty log of when Google Crawled my site, I then just threw this to crontab to run every morning at 4am, and my browser is set to open this link upon activation.


Tuesday, September 11, 2007

Six Years Ago Today

Six years ago today I was walking into my office at American Airlines in Fort Worth Texas, passing by the media room, just in time to look up and see United Flight 175 hit the south tower.

Our world changed that day, possibly forever.

Take a moment and remember all of those who have suffered due to this event. Take a moment to remember the victims, their families, and the solders who went to war for them.

Friday, September 07, 2007

Guild Wars Wiki Joins Google Toolbar

I decided that it was time to add y.a. button to my toolbar, this time to supplement the vast amount of time I waste playing my only online RPG, Guild Wars. I just have many more things to look up now that GWEN has shipped.

This particular toolbar button has several features, instead of navigating within the official wiki, it has the most common links built in, skills, elite skills, missions, quests, and maps. This button also can utilize the Google Toolbar for searching as the search box feeds directly to the wiki search engine. You can also highlight text and pass it to the wiki search engine as well.

I hope this gets you lots of drops! Tested in FF 2.0/IE6&7 on OS X, XP.

Guild Wars Toolbar Button

Keyword Change Logs

This is my first official (but certainly not the last) gripe about Google AdWords. We all know that Google has done a lot (just look at my previous post), but tracking keywords to me is very similar to project management or software development.

It needs a CVS! Please!

The fact that the software doesn't have a way to log changes means to me is that I must have a great memory and I must be constantly sending emails to coworkers about changes. Why is this so important you say? Imagine this if you will. I am the only SEO/SEM at my office. Now imagine that I perhaps DO keep track of my changes to the keyword/ppc campaigns in Google on little stickies of paper all over my desk. Now imagine if you will that I have been doing this for years. Today I get hit by a bus, and all that institutional knowledge is lost to the patterns of the universe never to be seen again. This should make you shudder (if you are not thinking of personnel loss in your disaster recovery plan you really need to address the issue).

Have a CVS, even if it is a notepad like application. Now what would be really nice is to be able to track changes to keywords, ads, campaigns, bids, etc in the Google applications. The stand alone client allows you to batch and to peg a note, but no other client can see those notes, they are saved (somewhere) on the local device. Come on! A SQL table is not that hard to add to the AdWords package. Instead of integrating a group-ware check-in/check-out system, I am left to create one.

Grrrr...and don't tell me it will be in Urchin 6, I hear that from too many people.

Ok - this is me stepping of my soap box.

Wednesday, September 05, 2007

Google Toolbar AdWords Button

I wrote this to end some serious frustration in searching my employer's ad campaigns. It might be helpful to anyone who uses Google AdWords. This is a quick and dirty Google button for sending search data to the built in search engine and sending highlighted text in the browser to the same engine. Also this will allow quick navigation to the in menu tools which are usually several clicks to get to in the menu options in the AdWords/Analytics menu bar.

You can get the software installed by going to the main page and clicking under the links for the Google Buttons. This will require the latest version (4 I think) of the Google Toolbar

or you can get my Google AdWords Button Here

My Increasing Transition Away From Yahoo!

I would first like to say that I have been a Yahoo! user for over a decade. In terms of the internet that is an eternity. I started using yahoo search when the only browser truly available was Lynx (which I still use from time to time).

I attended the SES conference and expo in San Jose this weekend, and aside from not visiting a friend at TiVO, I had a great time, learned a lot and witnessed the ultimate corporate party.....The Google Dance 2007....

Without going into too much detail (Kimber I want my photo please), I learned about what type of sheer geniuses Google tends to hire. I consider myself pretty bright. I went to college at 15 for engineering (I went back to high school after learning that college wasn't for me yet), I have completed a BA and a MA and even managed to get published. I will get a PhD at some point as well. None of this compares with the outside of the box thinking and mentality of the standard employee of Google. After being really impressed with some of the things which Google has been spending time on lately (like the 700 MHz auction), I am more inclined to check out the newer technologies coming down the pipe from Google. This will lead us to Google Labs.

If you haven't been to Google Labs recently, take a peek over there. Check out the new ideas in search engine results. More over check out the Firefox extensions. If you add the kind of functionality of Firefox in general, the Google Toolbar, and the Google Toolbar API for custom buttons, I find myself needing the Yahoo! services less and less. Last night I exported all of my bookmarks, which I have collected over several years, out of Yahoo! and into Google. It was seamless and painless. With the addition of services like Plaxo (despite what ever controversy there may be), I am finding my internet life more and more integrated with my everyday needs.

I will be the first to say perhaps Google is in fact the new Borg, but unlike it's predecessor, it actually takes into account what I want and what I might need, instead of forcing something down my throat. I can accept a certain level of dissatisfaction if my needs are being met, as of yet though, I am not dissatisfied with the general nature of Google's Services (including Analytics) or their mentality towards their users, and my needs are being met and perhaps even predicted.

Tuesday, September 04, 2007

Smultron - How very nice

I decided during the redesign that the articles I write now should be about concepts, things, and processes which add value to my life. Being that I am mostly an Apple/OS X/Unix/Linux die hard I figured I would start with a little piece of software a buddy of mine found at work (great find Nate).

I was looking for a BBEdit replacement. This is not to say that I think BBEdit is not worth every single penny they charge, in fact I would rather spot my "It Doesn't Suck" shirt all day, but I do not have purchase authority at my new employer. I simply needed a nice color coded code editor for those quick and simple edits (notice I said color-coded, I know text editors are all over the place). I wanted to try to stay out of the terminal running vi or emacs this time and try some new apps, enter Smultron written by Peter Borg.

The first thing I like about this software, it's free. I did not have to email my new manager asking for a copy of BBEdit or worse yet, Dreamweaver (what the other guys are using). The interface is simple, effective and very OS X intuitive. It seems to have everything just where I need it, without having to move my lazy hand attached to my multi-button, preprogrammed, can access everything with my thumb mouse (no seriously I'm that lazy when it comes to ease of use).

I opened up several files at once and instantly fell in love with the file/window navigator. It reminds me very much of the rawer functionality of preview (by far one of my most favored applications). Color coded text predesigned to cover the basics (for me that was PHP and some PERL). I have not tried any python yet, but it handled HTML and XML without problems. I was also intrigued by some of the functionality including but not limited to partial applescript support, multi document search with grep use, small snippet support, and it can be used as an external editor.

Not bad for FREE huh. There are many other neat-o things you can do with Smultron, I just haven't had the need yet. If you want to find out more just visit the sourceforge page for Smultron, the nifty free text editor I am rapidly falling in love with.

Sunday, September 02, 2007