Archive by Author

Landing Page Design Tips

Recently, I finally got around to making a proper landing page for Bingo Card Creator.  It has been fairly successful for me so far, increasing conversions markedly (my historical average for AdWords is about 18%, that page converts at about 28%) and decreasing my cost per conversion.

Here’s what I think I did right:

Focus On A Single Goal

The stock Bingo Card Creator homepage, which has been the landing page for all of my advertising since time immemorial, has to serve a lot of purposes at once.  It signs people up for the trial.  It drives people to the download.  It sells the benefits of Bingo Card Creator.  It provides an entry-way into support.  It lets people log in.  It funnels around link juice for SEO purposes.  It, like the prototypical uISV, wears fourty-seven hats.

Landing pages should have one goal.  My new one aims to capture a sign-up to the trial of the online version of the software.  That is it.

To accomplish this:

  1. Strip out all navigation which conflicts with The One True Goal.
  2. Eliminate visual distractions from The One True Goal.
  3. Make it absolutely, blazingly visually obvious what The One True Goal is.

If you guessed that the goal for the page is clicking either the giant purple button or the single visible hyperlink, you win!

Include Trust Markers

Bob Walsh has gone over this a million times referring to his MicroISV Sites that Sell book: testimonials work.  I have never really used them to their full potential, but I have diligently collected a little notebook (with permission, naturally) from my 1,800-odd customers. This gives me a bit of a palette to work with.  While normally I personally prefer hitting customers with a few testimonials at a time, like this wonderful example, I didn’t have too much space to work with.  So I picked a single testimonial, lightly edited for length and content, and bolded the important bits.

I cannot stress enough how much people do not read on the Internet.  Accordingly, if you want to maximize your sales, you should adapt to users that:

  • skim more than they read
  • feel more than they think
  • enjoy bad self-referential humor  (OK, this one is optional).

Seriously speaking: bold the bits of the testimonials which sell your software.  Cut the bits that don’t, as long as you can do so without making the testimonial say something the customer did not.  They are not professional marketers and should not be expected to write like them.  You are, so give them a minor hand.  (Polishing it until it is too good is another danger.  Testimonials should remain authentic.)

It should go without saying but in addition to reflecting on you, a testimonial reflects on your customer.  Even if you are making them largely anonymous, extend them the courtesy of copy edits to make their words suitable for public distribution.  If I never see [sic] in a testimonial again it will be too soon.

Don’t Forget the Guarantee

I don’t feel like elaborating on this, other than to say I once walked out the door without pants on.  That is a pretty serious oversight, but it still isn’t as bad as forgetting your trusty money-back guarantee.

Address Your Shadow Audience

Google likes to see certain things on landing pages and hates to see others.  You really don’t want to tick them off.  Most of my readers are honest businessmen, which automatically saves you a lot of the headaches, but there are a few subtleties:

  1. Trust markers like a privacy policy, return policy, etc go a long way.
  2. Don’t look like an affiliate.  Google is very ambivalent about affiliates — they make billions off of them, but to the maximum extent possible Google would rather disintermediate the affiliate, because they feel that a) it provides a better customer experience and b) Google should be getting the money the affiliate does.
  3. Landing pages have a tendency to repeat large swathes of text, which could cause duplicate content problems for your site.  This is particularly acute if you build them on an industrial scale (about which I will have more to say later).  Save yourself some pain and either exclude your landing pages from the index using robots.txt or include the following code in your header somewhere:
<meta name="googlebot" content="noindex, noarchive, nosnippet">

Technically speaking there are more search engines than Google to worry about.  Hah.  Sorry, where was I.

Provide Continuity

Marketers sometimes say “information scent”, but I like continuity: seeing your ad, clicking on your ad, reading your landing page, and then interaction with The One True Goal should be one continuous flow, free of jarring transitions and mental static.  For example, you should have your ad call to action anticipate the call to action text on your landing page.  Thus:

Notice how I’m focused on the proposition of “quickly”, with the call to action “Try now, no download required!”

That matches my call to action on the landing page:

This means that for a large portion of my visitors, I get the click to the purple “for free” : they’re already mentally invested in trying now, no download required.  That is why they came here.  So I don’t have to convince them so much with the other text on the page.

Of course, that doesn’t help much if I lose them at the signup form.  Candidly, my signup form could use some work — it performs much, much better than my download/install rigamarole ever did, but it severely needs a graphical upgrade and some interaction design TLC.  However, there is one trick to it that I’m fairly happy about.  I’ll share that with you guys this weekend, as it is a little subtle and I want to collect a few more days of data to show you that it actually works.

Preview of coming attractions: I have often said that paying a freelancer to write content for my website was probably my best ROI ever.  This resulted in over 700 pages which are very responsive to exactly what searchers want.  What if it had also resulted in 700 ads?

My AdWords Are Turned Off [Edit: Resolved]

[Edited to add: My campaign returned to mostly normal on August 4th or thereabouts.  I still don’t know what the heck happened, but I’m happy things are normal.  I sent Google a second support request, but that may or may not have had anything to do with the fixing: it was not responded to.  I also added two additional ads (which both triggered a human review), upped my bids, and in general tried to flag the system to say “Hey system, new stuff here!”, so that may or may not have had something to do with it.  My current feelings about Google, on a 1 to 10 scale: performance of platform: 8, superiority over competing ad options: 10, support responsiveness: 3.  That 3 is generous, based on my completely unevidenced thought that it is possible someone inside Google actually saw the problem and intervened.  At the moment, though, I have as convincing evidence for the existence of Google technical support as I have evidence for the existence of Santa Claus — luckily for Google, in my heart of hearts, I still believe in Santa Claus.]

High on the list of things to do today was try my hand at making my first landing page.  I have recently started selling my product as an online web application in addition to downloadable software, and wanted to see if focusing pages on one or the other would improve my conversion rates.

Naturally, I had to log into AdWords to create the alternate ads to test this landing page against my usual ads, which just dump people at my homepage.  Since AdWords is very fire and forget for me (yay, Conversion Optimizer) I don’t log in more than once a month.  Thus, I hadn’t known that since July 23rd they’ve been ratcheted down from “most schoolteachers are out for summer so you’re only getting 10k impressions a day” to “almost turned off so you’re getting 20 impressions per day”.  Since AdWords account for a large portion of my sales this is, to be blunt, absolutely terrifying.

Delving Deep Into Black Magic

AdWords includes a variety of automated means to diagnose why your ads aren’t showing.  They provided the very useful advice “It is because you haven’t input a valid means of payment yet.”  Google, the charge for $200 yesterday went through as swimmingly as the last $12,000 have gone.  You have my freaking credit card on file.

This left me with another alternative, contacting AdWords support.  Google really buries the email us button (behind useful automated diagnostics like the above, and equally helpful FAQ entries) because Google hates dealing with customers.  We’re little annoying things that don’t scale well when we can’t be handled perfectly algorithmically like all the world’s information (TM).  Stories about how their support is incompetent and outright hostile to speaking to customers are legion.

I say this as someone who is a fan of Google.  Full disclosure: I am a case study about AdWords’ effectiveness.  Literally.  When the system is operational it rocks my socks off, but when it goes off the rails you are screwed.

They’ve improved response times since the last time I used them.  It took me less than an hour to get a response.  (Aside: Last time it took almost two days to hear from them when I wrote in to complain about one of my ads being disapproved.  That time I got copy/pasted a portion from their TOS implying that St. Patrick’s Day bingo cards were gambling paraphenelia.  It took three back-and-forth emails before I convinced them that I am, in fact, not in the gambling business and if they read that cough Google case study cough they would see that.  But the ad missed St. Patrick’s Day, which rather sharply limited its commercial utility to me.)

AdWords Support: Like Talking To A Markov Chain

My email (which was limited to 512 characters, because Google apparently after indexing the entire freaking Internet Google didn’t have enough hard disk space in BigTable to save bug reports of a useful length) explained who I was, what behavior I had seen (ad impressions down by a factor of a thousand), what behavior I had expected (ad impressions not down by a factor of a thousand), what factors I had already ruled out (disapproved ads, sudden CTR decrease, sudden conversion rate decrease, payments issues, quality score issues, etc, etc), and what resolution I wanted (a fix or cause that I could fix myself).

Here’s what the Googleplex Markov chain spit back:

It looks like you have some questions about your ad rank.

Translation: I did not even pretend to read your email, or else am unaware that the Content Network has no concept of ad rank per se.

In the future, you may find that the quickest way to find the answer to your question is
 through the Help Center at https://adwords.google.com/support/?hl=en_US?utm_id=hc. Or, try the
 AdWords Help Forum at http://www.google.com/support/forum/p/AdWords?hl=en?utm_id=aut, where you
 can share information and exchange ideas with other advertisers.

Translation: We really hate when you email us.  Please don’t.

Please note that it's possible your account may be under review. As you
may be aware, we periodically perform these reviews to ensure the highest
quality ads, verify billing information, and maintain general account
security. Per our Terms and Conditions
(https://adwords.google.com/select/tsandcsfinder), ads can undergo review
at any time. If your account is under review, we will get back to you
shortly.

Translation: You may be evil.  We don’t do evil, hence, we don’t do you.  You may not be evil — that would be a good thing, but we still hate talking to you.  If you’re evil, we kind of have to talk to you.  If not, whee, we don’t have to talk to you, so don’t be evil.

For your convenience, we've listed some relevant information below:

Translation: Here are twenty random links from our knowledge base.  Despite our expertise at ordering the world’s information, they are neither relevant nor even plausibly related to your inquiry, and most are an insult to your intelligence.    They won’t resolve your problem, but possibly they’ll stop you from trying to email Google again, which is our ultimate goal.

The uselessness of some of their suggestions beggars belief.  “Why do the same ads show on different pages?” Well, I didn’t click, but I’m going to guess that the reason the same ads show on different pages is because I paid $10,000 to have Google put my ads on their Content Network.  If my ads were not showing on different pages, that would be a problem.  Oh, guess what — they aren’t!

Sincerely,
The Google AdWords Team

Translation: You weren’t even worth enough of our time to have one of our $6 an hour Indian callcenter employees sign her name to this.

What I Think Went Wrong

While waiting for the (as expected) useless reply from Google, I played forensic investigator with my stats from this year and last year.  Everything looked nominal — in particular, Conversion Optimizer is sensitive to conversion rates so if your website suddenly stops converting, you’ll find your ads turned off in short order.  (That is what you’re paying them for, after all.) I verified that my trial download was still converting as expected.  Yep, code present in pages, yep, code evaluating, yep, conversions reported in AdWords so Google must be getting the data.

Then I tried it for the online version.  The online version scores a conversion any time someone signs up for the trial and logs in successfully (that should be automatic on signup, but you never know, particularly with bots).  To prevent the same person from getting scored as a conversion every time they log in (which would cost me gratuitous amounts of money), I have Rails set up so that only on their first login after signup they get sent to a welcome action.  The welcome action, in addition to doing a bit of housekeeping, is supposed to set the @welcome instance variable so that the post-sign-in page knows to display the conversion tracking Javascript.

def welcome
#Snipped a portion not relevant to this discussion.
@welcome
dashboard
render :action =&gt; 'dashboard'
end

This is a Rails idiom that runs the dashboard method and then renders the dashboard action, so that the welcome-specific code gets executed and then the shared template gets called.  Did you spot the bug?  Yep, that @welcome really needs to be initialized to true.  I’m not quite sure how this got by testing but it would be easy to miss — the page will display fine and all the functionality works perfectly, it is just that Google fails to get a wee little ping to credit my account with a conversion.  Which I didn’t notice since my download page continued to ping as usual.

I’m not even sure this was the problem.  Even with the online trial siphoning off conversions that should have been credited, my conversion rate for July was close to historical norms (the online trial was largely adding conversions, not replacing them).  The issue with conversion siphoning in Conversion Optimizer is if you don’t score conversions then your apparent Cost Per Action goes up, and if that routinely exceeds your maximum desired CPA then they won’t bid for you anymore.  However, my CPA stayed at the usual level for the 3 weeks where a portion of conversions weren’t scored, prior to my ads not showing.

What Next

Well, since I fixed the bug, I’m sort of in a wait-and-see mode.  If their algorithms auto-correct me back to my previous status, then life is peaches and cream again.  I also went ahead and scheduled a few new ads with my new landing page, which should start with very little “history”, positive or negative, so they’ll largely not be effected by this.  I know Google heavily biases their historical computations to consider recent history rather than overall account history, so I’m a little worried about making a full recovery.

And I’m blogging about this, obviously, because I want anybody else in the same situation to have some support which is not a Markov Chain.

Keeping The User Moving Towards Conversion

Recently on the Business of Software forums I gave someone advice regarding web design.  (I seriously, seriously envy his design prowess — the website for his VST host software is one of the best I have ever seen for a microISV.)  One issue I identified with his site was that at some points it lacked clear direction as to what to do next.

On reflection, there is a gaping hole in my own site design for this: the big screenshot on the front page.  It is ginormous and consistently picks up over 10% of the clicks on the page.  Clicking on it currently brings up a maximized version of the screenshot in a lightbox.  The lightbox is a wonderful effect, but what is the user supposed to do with the maximized version?

Well, ideally, they’re supposed to close that screenshot, then find the Free Trial or Try Online buttons and download.  Blech!  That is two more clicks, bringing to three the total of clicks they have made to my page!  Clearly, there is an opportunity to eliminate a click. All I need to do is bring the buttons to them, in the constrained environment of the lightbox.  (I’ve always wanted to do this but didn’t have any convenient way to do it with my previous lightbox technology, and never got around to doing it after moving to a less constrained lightbox script.)

I have pushed the new and improved version of the page live.   If this post was published recently, you can see the old version here.  For obvious usability wins like this one, I’m not going to bother A/B testing prior to pushing it live.  (Plus I have a lot on my plate tomorrow in terms of non-obvious things, and running multivariate testing scares me.)

Practical Conversion Tips For Selling Software

Today after reading a thread or three and watching a Google-produced movie about landing page optimization (over an hour long and worth your time) I was inspired to make some changes to my site.  Recently I have been doing far more development than A/B testing, and truth be known I don’t really, um, know how my funnel is working these days.  So I went back into the archives of my CrazyEgg tests and looked around to see if there was anything that jumped out at me. The fresh look caused me to pick up on a few things:

Plug Your Leaking Funnel

If you’ve ever read anything about conversion optimization you’ve heard the funnel metaphor : the steps towards buying can be thought of as a funnel, where a lot of people come in at the top and as they move forward you see less and less people until a mere trickle actually succeed in giving you money.  You want your funnel to avoid leakage, to the maximum extent possible.

Bingo Card Creator has a fairly typical funnel:

Prospect sees me in search engine or ad -> Prospect clicks to homepage -> Prospect downloads trial (or signs up for online trial) -> Prospect plays around with trial -> Prospect likes what they see -> Prospect clicks on purchasing page -> Prospect interacts with shopping cart -> Prospect gets redirected to Paypal or Google Checkout -> Prospect fills out form -> I get money.

Yikes, saying it like that makes it sound even longer than it actually is.  Anyhow, every step is crucial because the effects are multiplicative: a 5% improvement anywhere essentially results in 5% straight to the bottom line.  (Hat tip to Steve Pavlina for this insight, which is probably one of the three most important things I know about selling software.)

Anyhow, I picked a step in the funnel where I see a lot of dieoff, the purchasing page, and took a gander to see if there were any obvious ways to improve it.  Looking at several experiments in CrazyEgg, which I collected over the course of the last few years, something jumped out at me.  See if you can spot it in these heat maps:

Early 2007:

Early 2008:

Early 2009:

Did you spot it?

Far too many users interact with the main navigation bar to go backwards in the funnel.  Despite the fact that the overwhelming majority of people on this page are here because they are satisfied users of the free trial and are seriously considering giving me money, the Free Trial and Printable Bingo Cards buttons capture almost as many clicks as any other element on the page.

I love giving users free things that make them happy, but there is a time and place for it, and that time and place is not right in the middle of me asking them for money.  So I eliminated the distracting free options (and, while I was at it, the redundant purchasing option):

(You’ll note, by the way, that a lot of online retailers take a weedwacker to their entire navigation system when you’re getting into the purchase funnel.  Check out how much cruft Amazon cuts out next time you checkout there.)

Don’t Violate User Expectations

As an engineer I love elegance… probably to a fault.  For example, I always wanted to have exactly the same top-level navigation on all my pages.  This resulted in having a button to the home page actually on the home page.  OK, perhaps that wouldn’t be the worst thing in the world — except in a fit of stupidity way back in 2006 I titled that button “Information”, and despite four people telling me “You know, people seeing a button titled Information will click it thinking that it offers Information and will get upset when it just causes their screen to blink”, I never got around to changing that.

Sell What You Sell

Recently I released an online version of Bingo Card Creator, which I strongly hope will increase my sales substantially by decreasing the funnel dropout associated with downloading and installing BCC.  However, my site is still largely written to promote the downloadable version… to an almost painful degree sometimes.  For example, if you were to click on the purchasing link from within the upsell in the free trial of the online version, you’d find:

(Incidentally, that phrasing used to be “Purchase a single copy for only $24.95″.  I changed it at the suggestion of Aaron Wall, to emphasize the benefit — you get what you want instantly — over the action.  I think that sentence has been worth over a thousand bucks.)

However, when you’re selling something which is specifically designed to avoid the hassles associated with being downloaded, offering instant download is perhaps not the best idea!  So I rewrote it again to be a bit more neutral among my products:

If I had an absolutely infinite development budget I’d code up one version of the site to only sell the online version, one to sell both, and one to sell only the downloadable version, and then start split testing like a madman.  However, that is just not in the cards in the near future.  If I have some time later I’ll consider rewriting this page for people who are logged into the online version, though.

Optimizing Offsite Payment Processors

If you’re a member of SEOBook and have not yet read leeds’ post “Great conversion tactic for you”, do so now and implement the suggestion it makes immediately. (He asked me not to repeat the advice publicly.  I’m going to respect his wishes on that one.)

However, it did get the creative juices flowing:

Usual Disclaimer

I have confidence that the above examples are good ideas but confidence loses to evidence every day and twice on Sunday.  Conversion optimization is a science, not black magic: test, test, and test again to see what works in your particular market and circumstances.

Disclaimer: I am a moderator at SEOBook, but am not compensated for plugging it.  That said, it costs about $100 a month and I made that back on the first bit of advice I got.  It gets my two thumbs up.  CrazyEgg would require minimally an extra seven thumbs to express how awesome it is for visualizing user behavior — see the above heat maps.

If you found this post interesting, you may like my other posts about web design, conversion optimization, and the like.  (I don’t mean design in the sense of pretty things: I have all the artistic skill of a blind mole rat.)  Also, try searching the blog for “conversion rate” and the like, there have probably been a few posts which escaped my uneven categorization efforts.

Release It, Then Iterate Like Mad

I’m a heavy subscriber to the notion that you should release your application as early as it possibly provides value to anyone, then start iterating based on customer feedback.  Since it isn’t always practical to get feedback, and since customers do not always know what they want, I’d also consider stats about what they do to be among the most useful forms of feedback.

For example: If you add a quick start guide to your software, and twice as many customers manage to save their first document as did the day before, that is probably a sign that you’re doing something right.  If you haven’t quite guessed, I have indeed been working on my quick start feature.

I also have some stats to share about the new web version.  Some of them are already incorporated into my stats page, and the rest will be as I find time to code.  (Major props to OpenFlashChart 2 and the Rails plugin for it, meant it took all of five minutes for me to get the trial & guest account creation stats online.)

Anyhow, in about a week since I launched BCC.net publicly:

Trial signups: 200

Guest signups: 235

Word lists created: 850 (total)

Word lists created from scratch: 540  (Waaaay higher percentage than I expected.)

Bingo cards printed: 3,138  (Booyah.)

Sales directly attributable to online version: 0.  OK, anti-booyah.

Summer is a natural deadzone in my market so I’m not excessively worried by that, but hopefully things will pick up again like crazy come the schoolyear.  My users appear to be sticking, which is nice — about twenty people are already logging in every day, and I’m fairly sure only one of them is me.  Hopefully these and other fine folks will be persuaded to purchase the software once the school year rolls around and they need more than 15 cards from their lists.

Testing a New Marketing Strategy: Email

Since all of the users of BCC online give their email addresses to sign up, I thought I would start with some email marketing.  I’m using MailChimp, chiefly because their website is pretty and I had heard good things about their API.  With the help of the hominid gem it has only taken me about 4 hours to get up and running with my first email.

Emails I’ll be sending:

  • Transactional stuff (lost passwords, purchase confirmations, etc — pretty boring, not through MailChimp)
  • Monthly-ish newsletters, to the people who request them.  Since an absolutely ginormous portion of my business is seasonal, this will let me get in touch with the thousands of users who will sign up before Halloween again at Halloween, and remind them that they can have a great activity ready for only $30.
  • Hints & Tricks: customers who request it will receive a pair of emails, 1 one day after signup and 1 six days after signup.  The first covers basic how-to-use instructions and is just to jog people’s memory that they signed up.  The 2nd is to show some of the more advanced features of BCC and it will probably include a strong suggestion that they buy it… maybe a coupon, too.

The emails run me 2 cents apiece, so I’ll be looking to see if they generate enough marginal business (about 1 sale per every thousand) to justify.  I’m fairly sure I can do at least that well, but we’ll see.  One more lever to optimize…

What stats do you want to see?

With the new release of the web version of Bingo Card Creator I’m going to spend a portion of my weekend upgrading my internal stats tracking, which means “more stuff to share with you guys”.  Do you have any data in particular you’d like to see that is not already covered on my stats page?

I’m thinking of tracking:

  • daily signups to guest accounts, trial accounts, and purchases
  • daily logins
  • customer lifecycles (how long do people persist with using, how long until they purchase, etc)
  • some light-weight cohort analysis
  • most popular bingo activities among users
  • most popular activities which drive people to sign up

Web Version Gets New Coat Of Paint

I spent 6 hours today with my local designer and the web version of BCC is quickly taking shape.  He has a much better eye for design issues, including UI and usability issues, than I do.  We’ve totally revamped almost all the screens for the web version, with the exception of (ironically) the one users spend the most time on.  It actually now looks almost pretty.  I would include screenshots except I am on Linux and GIMP scares me.  You can see for yourself.

I also started to rewrite some copy in preparation for the launch.  Hopefully this will be out the door to customers by tomorrow evening.

Still needed:

  • “Forgot password” recovery
  • Analytics — can be postponed
  • Integration with purchasing system — still needs testing
  • Tune up of front page copy to address the web version

Happy Fourth of July everyone!

Bingo Card Creator Goes Web 2.0

Three years ago, on July 1st 2006, I released version 1.0 of Bingo Card Creator.  It was ugly, underfeatured, and bug-ridden.  Now, it is ugly, underfeatured, and bug-ridden… with AJAX!

Feast your eyes at this very, very early sneak peak.  You’ll want to click one of the various “sign up now” text links rather than the download a free trial ones.  I haven’t gotten around to sitting down with my design guy and redoing the buttons and the sales pitch for the free download yet.

Featurewise, it isn’t quite competitive with the downloadable Bingo Card Creator, to be honest.  A few of the power-user features, particularly design-focused things like picking fonts, are shockingly difficult to implement in a good way in a web application.  Others, like consistent columns and call lists, I just quite haven’t had time to integrate yet.

I was really impressed that I got the live preview of the bingo cards to work as well as it does.  Check it out — I am very proud of that work, although it is rough around some edge cases.  It took probably half of the development time of the site but I think getting users super-responsive feedback to their actions is worth every minute of it.

AJAX Technical Detail

How does it work?  While users are typing words into their text box, Prototype periodically checks it for changes and, if there are any, serializes the contents of the form and calls an AJAX function on the server.  The server takes the contents of the form and saves it to a “scratch” record in the database, which is not otherwise visible to the user.  The return value from this function overwrites part of the calling web page, including replacing the previous preview image with a new image if the scratch value has changed (same url, new query parameter — this tricks browsers into always requesting the image anew rather than checking their cache).

The path to the image on the server is actually just more Rails code, which checks to see if the scratch record has changed since the last time it produced an image.  If not, Rails tells Nginx “give them the last image we wrote, straight from the disk”.  If yes, then Rails uses Prawn plus a boatload of custom formatting logic to create a PDF, then calls out to ImageMagick to turn that into a GIF and resize it, then writes that to the storage area on the disk and tells Nginx to serve it.  Total time per request: on order of 300 to 800 ms.  My back of the envelope math suggests that my server, with two Mongrels, can probably support about 20 teachers simultaneously editing cards as fast as their fingers can go… after that I need to get worried (or upgrade to a bigger slice, which I might do anyway).

Still To Come

I still have to:

  • rewrite my copy to address the existence of the web version
  • get Bingo Card Creator 3.0 tested, in particular the features where it links to the website
  • give the user workflow a graphical upgrade, because pretty buttons sell B2C software
  • rewrite my page templates to push both the trial and the online service — I sense a lightbox coming up…
  • improve usage stats collection (can be pushed after release)
  • test integration with the purchasing funnel to make sure it works right
  • give some spit-and-polish to some usability issues

I’d love if you have any comments on it.  Take it for a spin and  let me know.  This sneak-peak is not using the production database, which means when the sneak-peak ends you’ll lose anything you did with it.  In the unlikely event you want to use this for something important, make sure you save your cards locally.

Why does cron hate me so?

Once *again*, cron decided that it would stop deleting my Rails cached files after I upgraded to Hardy. I’m totally stumped as to why it happened — the logs say that the rf -rm happened at the scheduled times for the last two weeks, and I was able to successfully do it by sudoing into the appropriate user, but the files were still on disk and being happily served by Nginx, oblivious to the fact that Mother’s Day and Cinco de Mayo had long since passed.

Argh, I hate computers some days…