The Golden Compass
First of a three part fantasy/sci-fi series. Some people hate it because of it's anti God message but it's a great read. I found it hard to put down. There's even a Snopes article about the film adaptation.

Morgan O’Neill showed his impressive portfolio last night at the camera club. His gallery hasn’t been uploaded yet but I’ll be linking to it here when he does. Great stuff. Also, the IPF have released “Photography Ireland 2008″. I bought my copy. I think it will be available in shops but if you see it, snap it up!

A professional photographer in the UK earns an average of £19K per year. I’ve just had a look on some job websites and seen adverts for photographers at a national chain of portrait studios. The advertised salary, £12K per year ie not that much above minimum wage.

Do you run more than one WordPress site? Virtual multiblog may be useful to you. It’s a very different beast to WordPress MU, but I’m going to look at it when I have a spare moment.

Hi, my name is Donncha and I used to have text-link-ads on my blog. They’re gone now but only after Google slapped me into submission and reduced my page rank to 4. Initially I felt angry and shocked that this happened but I have no excuse, I heard it from the horses mouth, I knew it was coming. I was one of those evil unscrupulous demons who manipulated the pagerank of other sites for money. My guilty conscience is somewhat alleviated by the fact that I refused to show a text link ad for a Viagra spammer yesterday morning. Oh well.
Google’s own advertising, Adsense, is still running here, as is Kontera, (leave a comment and you’ll never see them, isn’t that nice?) and the competitive ad filter advice I gave out a few days ago really makes a difference to your bottom line. Just ask Justin!

What’s in store for the future? Keep an eye on this blog. WordPress MU 1.3 is coming real soon now. There are going to be lots more free and GPLed WordPress plugins, including a pretty cool digg proof cache that also works in WordPress MU. Think of it as WP-Cache on afterburner! A couple of sites are already testing it with positive results. I’m watching the access_log roll by on a server as a digg is happening now. Load average is hovering around 1 and the page loads quickly. Sweet.

While it didn’t invent search-triggered ads, Google figured out a far more efficient way of turning web-users into buyers. Rather than doling out premium space to the highest bidder, as its competitors did, Google used another algorithm to work out how relevant the ad text was to a given query and the odds someone would actually click on it. This meant ads were targeted at the users most likely to respond to them. The result was that Google’s ‘click through’ rate (the number of times users click on ads) was twice as high as its nearest competitor’s.

You signed up for Google Adsense, verified your home address, typed in the secret code they sent you and now you have adverts on your website. Are you earning the most you can from them? Probably not. Read the quote above again. I’ll wait.

Done? Many advertisers already know this and exploit how Google pick their adverts so their low-paid adverts show in preference to higher paid ads. A whole industry has sprung up around this to create “Made For Adsense” or MFA sites. MFA sites make money because the link clicked to get to them costs them less than the money they make from the adverts your visitors click on their sites. Google took action earlier in the year and disabled many MFA accounts but it’s easy enough to get an Adsense account and they’re coming back. Here are the Alexa graphs for a couple of MFA sites who were stopped in their tracks in June:

And here’s an inappropriate site I don’t want advertising on my site.

Unfortunately despite the culling of MFA sites in June there are still plenty of low-paid adverts in the Adsense inventory. That’s where the Competitive Ad Filter comes in useful. At least once a week, or maybe more often I browse through the most popular posts on my sites looking at the adverts. If a URL looks particularly suspect I manually type it into a new browser window (don’t ever click on your own ads!). If the page that loads looks like an MFA site it gets added to my ad filter.

Criteria for MFA Sites:

Content free. The site will have very little content, or the content will be ripped from elsewhere. Sometimes this is easy to pick up on.

Lots of adverts compared to content.

Directory site. The front page is a list of unrelated subjects.

Front page lists link directly to product affiliate links.

Basically, spammy behaviour.

How do I know if cheap adverts are being served? Log in to Adsense and check the “Page eCPM” column on the Reports Overview page. Is it lower than $5? You could probably do much better! eCPM stands for “Effective Cost Per Thousand Impressions”. From the Adsense help page:

From a publisher’s perspective, the effective cost-per-thousand impressions (eCPM) is a useful way to compare revenue across different channels and advertising programmes. It is calculated by dividing total earnings by the number of impressions in thousands. For example, if a publisher earned $180 from 45,000 impressions, the eCPM would equal $180/45 or $4.00. However, please keep in mind that eCPM is a reporting feature that does not represent the actual amount paid to a publisher.

I document changes to my Competitive ad filter on notspam.org. The sites listed in those posts suit my sites, but if you don’t use the ad filter in Adsense it’s a good starting point. Hopefully you can increase the eCPM of your Adsense account above US$5 with only a few small changes.

This post has been a long time in the writing. Ever since I started advertising on my blogs my strategies have been tweaked continuously so consider this post a snapshot description of what I’m doing with Adsense advertising now. This is a long post, but read through it. The plugin I use to do most of this stuff is linked near the end.

Last year at the IT@Cork Web 2.0 conference, Gavin mentioned that he earns enough off his blogs to pay for his hosting, and I thought to myself that it would be handy to have an extra bit of cash to do likewise. I didn’t do anything about it until July when I signed up for an Adsense account and put some ads on the site. Things were slow that month but they’ve steadily improved to the point that it’s a reasonable second income now.

At last year’s WordCamp in San Francisco, one of the talks was about monetizing your blog. It was a fascinating talk with a great discussion afterwards and I brought home some good ideas:

Don’t show adverts to your friends. They are the people who visit your blog and leave comments. They’re not going to click the ads anyway.

Position matters. Right underneath the post title and above the content is the best place on a blog to put an advert. (Thanks Matt!)

Go as wide as you can.

Experiment with ad colours, borders and sizes. Don’t accept the Google defaults. Blend your ads or make them stick out. It all depends on your blog.

Since then I’ve developed my ad serving strategies further:

I love when people comment, and I’m honoured when people subscribe to my blog. Therefore I won’t show my RSS or email readers adverts. If you like what I do enough to subscribe I won’t burden you with advertising. You’re my friend.

Identify where most of your “just passing through” traffic is coming from and show them adverts, except for social bookmarking websites of course.

If my blog showed you adverts, I’ll tell you “Don’t like adverts? Leave a comment and they disappear.” below the comments form. At least one person has commented favourably about that.

Fill the competitive ad filter with low paying URLs. If you’re still showing ads from helium.com then you’re missing out. If your daily eCPM isn’t at least $5 you’re not making the most of your advertising. Subscribe to notspam.org to see which MFA and low paying sites go into my competitive ad filter. I’ll talk about the competitive ad filter in more detail in a future post.

Set an hour long cookie for users from search engines. Blogs have a notoriously low attention span for most visitors but if they click to the front page, show them a few more ads.

I use Kontera too but the returns from that have been very disappointing. One of my posts has an AuctionAds unit in it. You’ll see that no matter what because I’m testing it for a few weeks and the post in question is almost always only hit by visitors from Google.

I run advertising on my photoblog, In Photos dot org too but the rules there are a bit different:

Each post has a big image, pushing the text description below the fold. That’s not ideal for displaying adverts so I use the left sidebar to show a 600px high Adsense skyscraper unit.

Show the sidebar advert even on the homepage. It’s not an ideal location so better give it as much exposure as possible.

It’s difficult to attract visitors to a photoblog. I wrote 11 seo tips for your photoblog to outline some of the ways I draw traffic in. The biggest mistake is definitely not writing about your photography. If there is no text, how can the search engines figure out what your blog is about?

I’m not the only one only showing adverts to selective visitors. Recently Ben Gillbanks had a great post on increasing Adsense earnings that says some of the same things I summarised here.

Announcing my shiny new, rough as anything No Adverts for Friends plugin! This plugin adds new commands that you can use in your templates. Use them to surround your Google Adsense or other advertising code.

The No Adverts for Friends API:

is_regular_user() – returns true if the visitor has left a comment or is logged into your blog.

is_whitelisted_site( $url ) – returns true if $url is in a pre-defined list of friend sites like Digg, Delicious and StumbleUpon.

is_old_post() – returns true if the current post is over a month old.

is_searchengine_user() – if a user comes from one of the listed search engines or this is an old post return true.

Each of the API calls depends on the one before it returning a favourable value. For example, is_old_post() won’t return true if is_regular_user() returned true, no matter how old the post is.

Example usage:<?php if( is_searchengine_user() == false ) { echo "Google adsense code goes here"; }?>
Edit single.php in your current theme and add that code somewhere within the loop. Now either visit an old page on your blog or use a Google search query to bring you to your blog. Hopefully you’ll see the text “Google adsense code goes here”. Replace this text with the Google Adsense Javascript.

Rename both files to .php and place friendsadverts.php in your plugins folder. If you use WP-Cache copy wp-cache-phase1.php into plugins/wp-cache/ overwriting the file already there (make a backup first!)

If you use WP-Cache copy the $nevershowads and $passingthrough arrays from friendsadverts.php into your wp-config.php. They’re needed by WP-Cache which kicks in well before plugins are loaded.

Activate the “No Adverts for Friends” plugin from your plugins page and modify your templates using the new API.

Well, you’ve read this far. If some of the advice in this post helps you, if you like this plugin, if it improves the user experience of your regular visitors and maybe even increases your advertising revenue please consider uncommenting the add_action() command at the start of friendsadverts.php. The donnchas_happy_happy_notice() function prints a message in your blog’s footer saying you use this plugin and links back here.

Thanks John for bugging me to write this up. Hopefully I’ll see you at next year’s WordCamp!

It would appear that Google stopped displaying the “Go to ….” message in the status bar when someone clicked on Adsense adverts.

What’s the big deal with this? Unfortunately it means that it’s impossible to track what adverts are being clicked, with the aim of removing low paying or MFA adverts using the competitive ad filter.

eCPM is up today, possibly because Google stopped arbitrage accounts. I hope it’s a sign of better things to come and Google will improve their filter to the extent that it would make the competitive ad filter redundant except for filtering out competitive adverts, like it was supposed to!

They’re migrating their Adsense logins to regular Google ones which is a good and bad thing. It’s good because it’s a single sign on for Adsense, Gmail and whatever else you’re having, but it’s bad because Google know so much more about your activities. They even own Double Click now so imagine what else they may gleam about your browsing habits?

Another side effect of the migration is the “remember me” setting. Instead of having to login when the Adsense page times out, the login iframe will still be logged in. It’s slightly worrysome to be honest because the timeout was a useful feature on an application with commercially sensitive data. The only other Google service I use, Analytics, doesn’t auto login unless you bookmark and internal page so maybe I should unckeck the “remember me” box next time I login.

Oh, looks like this is old news. Why do they allow people to signup with a different email address if they’re just going to migrate them later on? I have this big long post written so I’m not going to scrap it just because it’s old hat stuff!

It also gives me an opportunity to ask if anyone would be interested in an ad click tracker with a built in Competitive ad filter manager?

I’m a sucker for vouchers, if they’ll really save me money that is. I generally read the small print just in case I have to “subscribe for 12 months to take advantage of this deal” and it’s a good thing I read the ones attached to this offer from Google. They’ll give me a £30 Google Adwords voucher to try out Adwords, but according to the terms and conditions written in dark grey on light grey below the main body of the email:

The promotional credit will be automatically credited to your new Google Adwords account once you have entered your promotional code and billing preferences. If you choose the post-pay payment method, the account activation fee (currently £5) will be deducted from the promotional credit before this is credited to your account. If you choose the pre-pay payment method, you must make an initial minimum payment (from which the account activation fee will be deducted) to activate the account before the promotional credit can be credited to your account. You will be charged for any advertising charges that exceed the promotional credit, and you are solely responsible for the payment of any taxes incurred.

Still, if I was interested in advertising my blog I’d go for it. I may yet advertise one of my other sites as I have a few months to redeem the voucher. They’ll have me hooked then! Damn you Google! (Raises fist to air in theatrical fashion and shakes it in anger at the burning sun)

When you’re adding sites to the Google Adsense “Competitive Ad Filter” please do not do what I just did.

As my filter has the maximum 200 urls I have to delete entries before adding new one, but I had deleted a couple of urls so I thought I’d have space for just one more slightly-dodgy low paying ad site. Unfortunately I didn’t and the familiar “Too many lines” error showed.

Normally I would search out another url to delete but I wanted to be done with it and not bother with my last change so I hit return on the url, this url, https://www.google.com/adsense/filter-save.do – thinking that it would reload the old list. It certainly did. It brought me back to day 1 when I had no entries in the filter! You know that sinking feeling? That moment when something has gone really wrong? That was me a few minutes ago.

Thankfully hitting BACK on my browser and confirming the POST operation restored the list and I quickly removed the offending LCPC site. Phew.

Someone should tell Google, this would be a rather quick and easy way for a malicious someone to mess with a person’s filter. They should check for the existance of some POST variables before overwriting the filter. It’s a bug!

Simply because a blog post isn’t a blog post without a link, here’s where I talk about my competitive ad filter. MFA and LCPC sites galore. The MFA sites listed in this post finally made it into the ad filter this morning.