I have a client who manages their own AdWords campaigns, but I check in on them once a month and see if anything is obviously going wrong. This works well, because the client is in control and handles day-to-day changes without me charging them, but they also have a “safety net” in case problems come up.
This morning, I noticed they have a broad match keyword getting LOTS of impressions and NO clicks. This is dragging down their Ad Group’s quality and costing them more on the keywords they are getting clicks on.
So, why might this happen? There are a few possibilities:
Continue Reading ->
We have a little telescope, and were out looking at the moon a few weeks ago. The image through the eyepiece was just amazing, and I thought I might be able to get a picture of it holding my DSLR camera. It worked out pretty well!

One of the big problems we see with clients’ campaigns is that they have keywords (or groups, or whole campaigns) that have excessively high bounce rates. Those should be taken out behind the barn and shot, but how do you separate the bad ones from the good ones? Analytics makes it easy!

Finding High Bounce Rate Keywords
Here’s how:
Continue Reading ->
I’ve been using Google Docs more and more lately, and wanted to use their Spreadsheet for some AdWords bulk writing, but needed a letter counter to be sure my titles and ad lines were short enough to work.
PPCProz.com has the code for Excel here: http://blog.ppcproz.com/2009/02/3-secrets-creating-adwords-ads.html
So it was just a question of converting it to Google’s spreadsheet. Google spreadsheet doesn’t support formulas in conditional coloring, so I had to embed the formulas in the cells, then apply conditional coloring. Not too much harder, and I tweaked it to show the number of remaining characters until you go over the limit, then turn red. Here’s how:
Continue Reading ->
I saw this on Twitter this morning:
Hey, best case, we harness the power of God. Worst case? We all die in an artificial black hole.
and at first I thought it was about McCain/Palin vs. Obama/Biden. Then I remembered LHC. Yay, we’re all still here!
This has been an issue for a long time, but the past few weeks, we’ve started to see some automated attacks against ColdFusion sites trying to inject rogue SQL via forms and other parameters. Ugh. I’ve been working with a great piece of code called Portcullis, but it has a few rough edges that make it hard to deploy. Here’s my application.cfm, in case it’s useful for anybody else fighting this:
<cftry>
<cfif isdefined("application.Portcullis") eq false or isdefined("url.reset")>
<cfset application.Portcullis = createObject("component","com.fusionlink.Portcullis").init()/>
</cfif>
<cfset application.Portcullis.scan(url,"url",cgi.remote_addr)>
<cfset application.Portcullis.scan(form,"form",cgi.remote_addr)>
<cfset application.Portcullis.scan(cookie,"cookie",cgi.remote_addr)>
<cfif application.Portcullis.isBlocked(cgi.remote_addr) eq true>
Sorry, there was an error detected.
<cfmail from="you@you.com"
to="you@you.com"
subject="SEI Portcullis: User Blocked" type="html">
<cfdump var="#cgi#"/>
</cfmail>
<cfabort/>
</cfif>
<cfcatch type="any">
<cfmail from="you@you.com"
to="you@you.com"
subject="SEI Portcullis Threw Exception" type="html">
<a href="http://#CGI.SERVER_NAME##CGI.SCRIPT_NAME#?#CGI.QUERY_STRING#">Page URL</a>
#cfcatch.message#
detail: #cfcatch.Detail# <br />
<cfif IsDefined("cfcatch.SQLState")>
sqlstate: #cfcatch.SQLState# <br />
</cfif>
type: #cfcatch.type# <br />
<cfdump var="#cgi#"/>
</cfmail>
</cfcatch>
</cftry>
We got up at 3:30am for our flight to Baltimore, and made it to the airport in time to pick up a latte and drink half of it before remembering that security wouldn’t let us on with it. Oops, been a while since we’ve flown!
Tepring’s sister, Sharon, picked us up and we headed to DC for the rehearsal of John Williams and The President’s Own Marine Band. We were able to get in because Sharon’s husband works for the band.
The next three hours were an amazing preview of the concert we’ll go to Sunday evening. The traditionally orchestral pieces have been re-orchestrated for band, and Mr. Williams was often surprised how well it worked. Part of that is that this is perhaps the best band anywhere, though!
During the concert, we had full scores to follow, which made the rehearsal more interesting for the four of us huddled around the music stand.
Afterward, we waited while the band staff met Mr. Williams, and Ted was able to get a couple of autographs. Amazing day so far!
We had sushi at Sharon and Ted’s favorite place in Annapolis and got to bed early. 3:30am was a long time ago!
I’ve gotten a lot of grief from family & friends about waiting 6 hours in line for the iPhone. But now that the sunburn has subsided, I keep finding reasons that it was worth the hassle. So, here are my 9 reasons the iPhone is Crazy Good: Continue Reading ->
Nah, nobody would wait 6 hours in line for an iPhone. Least of all me. I’m no Apple FanBoy(tm), have a nice Windows Mobile phone, and am on crutches. So it makes no sense at all that I’d wait 6 hours in line for an iPhone.
But I did. Continue Reading ->
I broke my foot a while back, and finally went to the doctor mumble-16-mumble months later, who confirmed that a tiny little cesamoid bone is broken. They’re apparently a nightmare to heal, so I got a bone stimulator, which seems to have helped. Tried 4 weeks on an air cast walking boot thingie, but it didn’t help, so I’ve been on crutches for the past 3 weeks.
Anyhow, it seems to finally be healing, so I’m thrilled about that. Hoping it’ll be in good shape for Estes Park, CO in August, and maybe D.C. before that.