Tuesday, March 29, 2011

Funding NPR

I've been fascinated at the recent debate over funding for public radio.  I completely understand that we need to find sources of expense to reduce.  It's hard.  No one likes the outcome, no matter what it is.

But, here are a few thoughts that I had in the past few weeks.

NPR receives about 2% of it's funding from the Corporation for Public Broadcasting and federal grants (source: http://en.wikipedia.org/wiki/NPR#Funding).  In 2010, NPR had $180m in revenue.  So $3.6m came from the federal government.

Just in case you missed it, let me put that number again:

NPR gets $3.6 MILLION in federal funding.

Here's how that stacks up to other recent expenditures:


Tomahawk cruise missiles cost $1.06 million apiece.  According to http://bit.ly/f6bzTL, we fired 159 so far into Libya, at a cost of $168.5 million.  So, if we could have seen fit to fire just 3 fewer Tomahawks, we could have fully funded public radio for a year.


The war in Iraq costs about $16.6 million per day (source: http://bit.ly/ewSO3d).  So, if we could see fit to pause the work in Iraq for a mere 12 minutes, we could fund all of public radio for a year.



I have no doubt that there are dozens of examples like this.  But, to me, it seems utterly crazy to focus on saving $3.6 million a year when we need to find ways to save billions.

To give one last piece of perspective, millions and billions are hard to imagine.  The GOP wants to save $100 billion in spending.  If you cut NPR, you will have accomplished 0.0036% of the goal.  That's like me giving out $10,000 and complaining about 36 cents.

Honestly, I want to save money.  I want the government to balance its checkbook.  But cutting NPR funding ain't a good first step.

Friday, March 5, 2010

Why Ira Glass and Rupert Murdoch agree

Recently, Ira Glass encouraged membership to public radio stations by asking existing members to "out" friends who listen to public radio but are not members.  After identifying these free-riders, Ira called them on-air to ask them to pledge.  Of course, the "out-ed" non-member quickly signed up.  After all, who wants to be publicly chastised by Ira Glass on the radio?

After talking to one such victim who was a graduate student, Ira reported that the person told him off-air that, "as a member of the YouTube generation, I just don't expect to have to pay."   Ira commented that things like public radio take considerable sums of money to operate, and therefore, people should not expect such a good thing to be free.

I was struck by this sentiment - "I just don't expect to have to pay".  After nearly a decade and a half of online businesses that give away products for free, a whole generation of online users simply don't think about having to pay for things that they use.  Of course, the business argument is that advertising dollars will pay for the "free" usage of the service.  However, as I described previously, most businesses do not generate enough advertising revenue to cover their operating cost.  Advertisers want massive collections of targeted people.  They don't care about your 500,000 monthly unique users who generate 5 million page views per month.  (Because at a $1 CPM, your 5M page views is $5,000 - which is not enough to warrant any discussion within a $20M ad budget.)  But I don't want to beat a dead horse. 

What really struck me in Ira Glass' piece was the clear concise expression of a general feeling that permeates so many people.  Thanks to the VC-fueled, pie-in-the-sky businesses of the past decade, we now have a whole generation of users who not only do not pay for things online, they don't expect to pay.  It's as if the business community purposefully trained consumers to do the exact wrong thing (not pay).  Moreover, they were so successful that people now don't even consider that that behavior (not paying) is completely antithetical to long term sustainable business (for the majority of businesses).


In fact, some luminaries like Chris Anderson even trumpet not paying as the future of business.  I definitely think that there are many benefits to the model that Anderson proposes.  Freemium is a great way to attract users and build a business.  But, I think that there's an fundamental challenge that is not being addressed in that concept. 

When the potential user base expects to never pay for the service, how can you create sustainability?  Anderson's argument is that people will pay for things that bring them value.  So, businesses need to provide a "free taste" for consumers in order to allow consumers to decide if they really like it.  Kind of like a test drive.  But, how are businesses to respond when users expect that the test drive isn't just a "test"?  In fact, the YouTube generation expects that the "test" just keeps going on and on.  There's no point at which you must pay for the service or product.

Rupert Murdoch, the gregarious owner of various media outlets, has been complaining for a while that people are not willing to pay for news online.  Even last year, he was agitating to find new ways to monetize his online news empire.  To my knowledge, he has not yet been successful in actually charging for his content, but he's working on it.  Just like many public radio listeners, most online news consumers expect that the online news is free.  Who needs to pay when you can get the Reuters or AP article at no charge from Google, or NY Times, or some local newspaper online?  But if no one pays, then how can those reporters continue to draw salary?  Just Ira Glass' public radio challenge, Rupert bemoans the problem of expectations of free service.

What I find amazing is that so few people are publicly talking about this problem.  As someone who works online, I think we have a serious long-term problem to tackle.  We need to educate the YouTube generation that valuable products and services cost money.  Occasionally, that cost will be defrayed by advertisers, but more often than not, the consumer needs to pay.  It took a decade to create this expectation of everything for free.  It might take a decade or more to reverse it.  But, the more people talk about it, the faster it will happen.  And the more times disparate voices like Ira Glass and Rupert Murdoch agree (on anything), the more carefully we should consider how to run our businesses and how we should behave as online consumers.

Tuesday, February 9, 2010

Subscriptions as the future of online business models

Recently, Dave McClure posted an entry about Subscriptions as the future of online business.  I couldn't agree with Dave's sentiment more.  He asserts that "The default startup business model from 2000-2009 was based on growth (aka acquisition) and CPM- or CPC-advertising".  There's no doubt that there's a lot of money to be made in the advertising model.

But, here's the rub.  Advertising based businesses always require a truckload of traffic.    CPC (AdSense) is not a big money-maker for most businesses.  The number of clicks are usually proportional to the number of page views.  CTR is usually pretty low - like a few percentage points.  And the money you get from each click tends to be pretty low.  So, sure you might get a couple hundred bucks each month for some decent traffic.  But, that's not a huge money-maker.

So, what about CPM revenue?  Well, advertisers don't care about the vast majority of sites.  Think of it from their perspective.  Imagine that your site gets 1 million pageviews per month, have 1 ad on each page, and you charge $3 CPM.      So, your 1M pageviews are 1000 "m"s.  For a single advertiser to buy ALL ads on your site for the month is $3000.  Most ad campaigns will have at least $50,000 if not more than $100k to distribute.  So, if I'm looking to spend $100k, why the hell do I care about your site which gives me just 3% of my total for 100% of your traffic?  Moreover, in all likelihood, your site's pages aren't all good.  Only some are really worth the $3 CPM.  So, not only does it take me (the advertiser) time to negotiate the deal, but I fulfill only 3% of my total and I get at least some slop ad positions/pages.  That's not a really good deal for me.  Also, you (the entrepreneur) have worked super hard to get 1M pageviews per month.  And your business reward is a mere $3000.

Even if all your traffic is organic (that is, you didn't buy any traffic), you made just $3k!  That's not really a great amount of revenue.  How many businesses can make their business model work with just $3000 per month?  In my experience, there are very few models that work at that revenue model.

Clearly, the trick to making the ad model work is lots of traffic.  If you have 100M pageviews per month, then you are more of a player.  But how many sites have 100M pvs/month?  Not many.  And, what's worse, how many small startup ideas will reach that volume of traffic any time soon?

The harsh reality is that almost none will.

I'm not saying that advertising based businesses don't work.  There are, and always will be, successful ad-supported models.  But, the world isn't big enough for lots and lots of those businesses.  Advertisers need volume.  Volume will always be aggregated towards the bigger sites, the ones whose traffic is in the "head" of the curve.

So, what's to be done?  Well, look to other business models.  There are only a few core business models available online that are focused on business-to-consumer businesses.

  • Make revenue from ads (so the advertiser pays you)
  • Make revenue from subscriptions/commerce (so the customer pays you)
That's about it.  When you're selling to consumers, either the consumer is paying you or someone else is subsidizing the consumer's experience (i.e., the advertiser).  We've tried for about a decade to build super-massive businesses based on ad-revenue.  There have been some successes.  There have been a lot more failures.  

Subscription and commerce based businesses require far fewer users to make the models work.  Seems pretty logical that the better bet is on subscription based models rather than ad-based models.  If you look at the economics of the small subscription based business, it looks a helluva lot more attractive and realistic.

That's not to say that there aren't challenges for subscription businesses.  There are plenty.  The big difference is that you don't need 500,000 people to like/hate you.  You need just 5,000 to like you.


Sunday, December 13, 2009

Amazon Mechanical Turk Perl Library Error


I've been playing with Amazon Mechanical Turk for a project, and I think it's really, really powerful.  So far, I've done a bunch of research and some tests using the Requester UI, but have not yet dug into the API.  But, over the past few days, I've finally started my research and experimenation using the API directly.  However, my very first time trying to use the modules that Amazon published, I got a big error:



t/01-ListOperations.t ..................... Can't locate object method "new" via package "Net::Amazon::MechanicalTurk::Transport::RESTTransport" at /Users/dviner/.cpan/build/Net-Amazon-MechanicalTurk-1.01-1kIAvQ/blib/lib/Net/Amazon/MechanicalTurk/Transport.pm line 21.


This error message was repeated a few dozen times.  Also, in searching for the problem, I found this StackOverflow issue: Perl module Net::Amazon::MechanicalTurk failing tests.

I find it pretty amazing that Amazon hasn't fixed this problem.  But, after doing a bunch of searching and sniffing around, I couldn't find any solution at all.

So, I made one of my own.  Here's a short patch that will allow the Net::Amazon::MechanicalTurk module pass all it's tests.  Most will be skipped with the message:


skipped: Configure Amazon AWS Authentication to enable tests against Mechanical Turk Sandbox


If you want to try to get those to verify, you must make a file named mturk.properties in the current directory.  In that file, you must list your access key and secret key as well as the turk service URL and API version you are using.  Here are the sample contents:


access_key: your-access-key
secret_key: your-secret-key
service_url:     http://mechanicalturk.sandbox.amazonaws.com/?Service=AWSMechanicalTurkRequester
service_version: 2008-08-02


Note that even with this file in place, several of the tests still fail.  I'm not an expert on the Turk API (yet), so I'm not sure how to fix the other errors that occur.

But hopefully this patch will help people.  Feel free to contact me if you find additional changes that should be made to the library.

Wednesday, December 2, 2009

jQuery, tables, and administrative interfaces

A few month ago, I posted about using Jquery to re-imagine simple things. Recently, I've been working with jQuery and jQuery UI quite a bit - in particular in building simple administrative interfaces.

Simple admin interfaces almost always require a table of stuff - users, comments, posts, actions, jobs, whatever - the "things" being administrated. jQuery has a really cool plugin called TableSorter that makes it's incredibly easy to convert a simple HTML table into a fancy, easy-to-read interface.

TableSorter even has a simple pagination capability (see the demo here). The current version (2.0.3) of the paginator requires that you have an html element of class "pagesize" which defines the number of items to display on one page. But the code doesn't actually do an error check to see if that value doesn't exist or if the value is NaN (javascript's fancy way of saying the value there is not a number). So, here's a simple patch to apply to the jquery.tablesorter.pager.js file which will perform the validation & error check.

I found one other drawback of the paginator. By default, the paginator will display something like "1/103" for the current page number and the total number of pages. But, the current code is somewhat limiting. You can change the separator ("/" by default) between the current page number and number of pages, but that's about it. In addition, the code will invoke jQuery's .val() method to display the resulting string. This is also really limiting, since not all elements support using val() to set their contents. For example, invoking .val() on a element does nothing.

So, here's another patch to apply to the jquery.tablesorter.pager.js file which will allow you to register a callback function. By using a callback function, you can control the display as you see appropriate. The callback function is passed 3 arguments:
*func (config, page_active, page_total)
The config parameter is the internal configuration information from the paginator, but the really useful parameters are the other two. page_active is the currently displayed page number. page_total is the total number of pages.

Here's a sample of how you can use the callback:

jQuery('.tablesorter2')
    .tablesorter({ 'widgets': ['zebra'] })
    .tablesorterPager({
    'container': jQuery("#jq-pager"),
    'size': 20,
    'positionFixed': false,
    'updatePageDisplayFn': function (config, pg, total)
    {
        jQuery('.pagedisplay_nice').text('Page '
            + pg + ' of ' + total);
    }
    });

This sample code results in displaying the pagination information like this:
Page 1 of 103
in the text area of all elements with the class "pagedisplay_nice". In my HTML page, I have a simple span element in a different place on the page, which looks like this:
<span class="pagedisplay_nice" />
This provides a massive amount of flexibility for the user of TableSorter's Pager plugin.

Hope this helps!


Visible Networking

Recently, Tony Karrer posted an article where he described a pretty interesting new idea - which he termed Visible Networking. I think this concept is really cool. I've always thought that we should use blogs to have more open debates on issues, thoughts, etc. Too often, blogs seem like a one-way broadcast about something - but I think that the most interesting ideas and thoughts are identified and refined in the course of a dialog, not a monologue.

So, I'm going to ask Tony to start visible networking with me. I'm not sure exactly what that means or how it will play out, but I think it's worth trying!

Tony, what do you think?


Tuesday, November 3, 2009

Crazy Business Idea #27

Occasionally, I think of crazy business ideas. I have no idea if they are practical, but they're fun to imagine. Today, I thought of another one.

Imagine a plugin/widget that enabled a DVR to replace ads in a program with ads from a different decade - of your choosing.

I thought of this while watching the original V miniseries on SyFy. It's from the early/mid 80s. The hair, clothes, special effects, everything is awesome. Then I thought - imagine if, instead of the crappy Levitra ads or whatever garbage is showing now, they showed commercials from the 80s that are roughly in time with the show's original airing? How cool would it be to see a Members Only ad, or a Kool-Aid ad with the giant pitcher of Kool-Aid, or one of the original Nest-e Plunge ads, or a Sunkist ad from the 80s! That would be awesome! I'd actually pay attention to the commercials just for the kitch factor.

From a business perspective, it'd be hard because you'd need to obtain the commercials from the early 80s. I have no idea if those ads are laying around in some storehouse or not. And, if they are, would the companies allow you to use them? Maybe... It's cool brand advertising for long-lived brands. So, maybe they'd pay a similar price for the 80s ad as they would for the modern ads.

From a tech perspective, there are several problems. Assuming you can find the original ads somewhere, you'd have to digitize them for delivery in modern cable signals. This is probably feasible assuming they exist. Also, there's the issue of the set-top box integration. You'd need some way to detect that an ad was about to display, and intercept the display in order to show something else.

I don't think that's possible currently, but I could be wrong.

The UI aspect wouldn't be too hard... at the start of the show, or in a persistent configuration setting you could pop up a small dialog window asking from what decade you want to see ads. Actually, I would love to see ads from the 60s. I'm too old to have ever seen the cigarette commercials on TV, but having seen some clips, they totally rock.

All in all, I doubt this is a viable business, but it would be so cool.