Minor Programming Tweaks

I’m actually cracking open the IDE today.  Nice to get away from marketing for a bit.  I have a bunch of stuff which is neither sexy nor fun but will improve the customer experience:

1)  Currently I pop up a visible JFrame when I print for a split second, which is annoying to the customers (it causes what is perceived as a gray flicker over the application window).  I moved this offscreen, which half solves the problem in one line of code.  The other problem is a new JFrame immediately grabs focus from my window, even if it only lives for a fraction of a second, which causes the title bar to flash a lot.  Going to play around with that some more.

2)  Also related to printing, if you print, say, 30 cards all of them get created before they are spooled out to the print, and they are only garbage collected after the printer reports that it has gotten them.  While this isn’t a problem on my souped-up development machine at least some of my customers are on P3s with 128 MB of ram, so I’ll optimize that (its the only significant use of resources in the program, to my knowledge).

3)  I’m going to give it an icon rather than the default Java cup of coffee.

4)  Maybe, maybe if I have time before dinner I’ll get the math facts thing working.

Comments Off

On-page SEO for Small Companies

(Note: If you were looking for software to create printable bingo cards, Dolch sight word bingo, or Dolch sight word lists, you should check those three links. The rest of this post is about how search engines work, and is probably not that interesting to you. However, because it repeats your search query frequently, the search engine you were using thinks its a perfect match for your interests. If you’re running a small business and wondering how to make it look better on the search engines, you’re in the right place:)

Some things which I’ve found useful, and which can be done fairly easily without compromising your ethics or your user experience:

Read More…

Comments Off

10 minute tweaks to boost your conversion

Disclaimer: you know your market and your customers better than I do. Some of these will likely be different for people who are not pitching products to teachers.

Over the past month I’ve been doing a lot of tweaking of various things on my website, and generally after leaving a tweak up for two to five weekdays (my weekend traffic is highly skewed by the work habits of my customers) I evaluate whether it was effective or not. Its not A/B testing but its, shall we say, empirically driven iterative improvements. (As an aside: I’m sure my Japanese economics professor would say that I’ve just started doing things The Japanese Way (TM), as iterative improvement is routinely credited for everything from the quality of Japanese cars to… the quality of Japanese cars.) Anyhow, there are surely other, better ways to increase your conversions (such as optimizing your landing pages), but you can accomplish all of the following while brewing a pot of coffee.

1) Make your “download now” link an image. This delivered roughly a 100% boost in my conversion rate. Yeah, you read that right. I kept things very simple: it looks like a button (so its obvious you can click it), has unambiguous text (“Download (newline) Free Trial”), and I made it blue, which is figure is a nice inviting color which stands out on a site that tends to orange/yellow/white.

2) Within your main content area, put your goal for that page as the first textual link. This was roughly a 20% increase to the conversion rate. I don’t check what percentage of people get to my download page from the right-hand button versus from clicking on an exhortation in the text (although, come to think of it, I really should and could do that by just appending ?clickedOn=wherever to the link and then browsing Analytics’ “Dynamic Content” data), but systematic use of this convention has helped me alot. Here is my theory: some people will read your entire page, but a lot are just sort of browsing, and they’ll randomly click on whatever looks interesting — and you might as well have that be your goal (purchase or download, as appropriate).

3) There should be a download/purchase link on EVERY page. Want some fun stats? 71% of my visitors who download go straight for the cheese: they arrive at either my home page or an optimized landing page for a particular ad, and their next action is the free trial. What do the other 29% do? They dig around like veritable gophers. I have a non-trivial number of users who hit *every* accessible page in the site before downloading, including a rather suprising number who go through every link in the nav bar in order. And at some point the gophers decide they saw something they liked and convert. This has happened on every page I have written, from my free teacher resources to my about me blurb to… deciding to download after reading my privacy policy.

4) Your main page should have a screen shot above the fold. My program is not much to look at, but the printed output is pretty nice if I do say so myself (not exactly fine art, but it looks well done for elementary school bingo cards). I’ve tested having no screenshots/scans on the front page, having a screenshot only, having a screenshot and scan, having a scan only, etc. And I’ve tested where to put the screen shot. The conclusion: having a screenshot matters, a lot. Suprisingly (or perhaps not, since many, many visitors will leave in literally 10s or less if they don’t see something they like), it really matters that it is above the fold. To the tune of 25%. I put it south of my sales pitch on the main page for 3 days and changed nothing about the site in that time, and conversions nosedived. (Incidentally, I put the scan at the bottom of the page, after discovering having it was better than not having it but that if I put it above the spiel few people would scroll down to read it.)

5) If you use thumbnails, pop-up the full-size version in a new-window. This is probably a function of having non-technical customers, but you would be absolutely shocked at the percentage of users who in 2006 have not heard of the “back” button. I did some analysis on what people did right before they left: the largest group arrived at the site and left immediately. The second largest group clicked on a thumbnail and couldn’t find their way out of it.
Anyhow, you can quickly implement these, wait 48 hours, and revert them just as quickly if they didn’t work. You’ll notice that this data-driven improvement can’t happen without, well, data. Do you have analytics software installed yet? If not, what are you waiting for? (The only acceptable answer to that question: “My Google Analytics invite.”)

Comments Off

Legitimate Organic Searches Eclipse PPC

Every day I get roughly 10-15 PPC visits from Google and 6-8 from Yahoo (I actually get slightly more clicks than this, but some people apparently abandon the page view before the Javascript at the end loads).  Today was the first day I got more organic hits than this, and they appear to be legitimate (i.e. not from pirates for a change).  I think I can largely blame my blog for this, since after I discovered that it ranks higher than my site for key search terms (as a result of a post similar to this one, ironically) I made about 10 links for those terms from the blog to the appropriate content pages.

And, bam, 48 hours later I got crawled and my site went from the 3rd page of search results for, say, “d01ch w0rd b1ng0″ to the 1st page (I’m obfuscating that to not ruin my good luck — mea maxima culpa).  Its not in the top 5 yet but I’ve got high hopes of reaching there eventually.  I know from my PPC search impressions that some of these words get traffic in the hundreds per day, which if I could capture 10% of would be excellent.

Comments Off

And back to your regularly scheduled programming…

So on my lunch break I was browsing the Internet and chanced upon Matt Cutt’s blog, and read the legal papers out of mild curiosity.  I noticed a throw-away comment buried in there, got a little miffed, and decided to do some minor venting on the Internet.  And I finished my workday, went out to bid fairwell to a friend leaving the country, and when I get back to my computer I’m on the front page of WordPress.  Google certainly inspires some passion in people, what can I say.  I understand that (and, if you’ve been following my posts about AdWords, you know I’m in general a fan), but there’s limits to my love of everything.  Except chocolate ice cream and cute kittens.

Anyhow, back to comfortable anonymity and the pressing business of saving teachers time and money.  Speaking of AdWords, mine seems borked today.  I’m showing a conversion rate of 0%, which is highly statistically improbable (somewhere on the order of 3% if you assume my past performance is indicative of expected results — statistics & probability was my favorite course in high school).  Even more strange, when I go to Analytics it shows 0 traffic for the last 3 days, which is crazily borked — yesterday I had normal stats up to the usual reporting delay.  Ahh well, kinks in the system, I’m reasonably sure they’ll get cleared up soon.  On the plus side, before Analytics started swallowing its tail I noticed that at least one person was able to successfully download the demo and check for updates.

Comments Off

Google's Lawyers Admit To gmail Privacy Leak

The background: Google was sued recently regarding their efforts to prevent click-fraud in AdWords. It was a class-action suit, which basically means that there are a large number of people who were “harmed” by the tortious action at issue and that some lawyer has taken it upon themselves to sue on behalf of all of the ones who don’t opt out. Class action suits are a huge scam but that is another matter altogether.

Google attempted to settle the suit. In the process, the would have to contact class members (the people who have theoretically lost money due to fradulent clicks), and they hired a firm which specializes in this sort of work. So far so good. And that firm zealously tried to contact class members in a variety of ways, including through snail mail and email. So far so good.

Now, we all know the problems with getting mail to large numbers of people. Mail addresses changed, people go on vacation, challenge-response systems are engaged, what have you. The firm zealously tried to correct for all of these, by investigating new email addresses, tracking people down after vacation, clicking through the “I am a human” tests, etc. So far so good.
Now, what is the other main way for a mail delivery to fail? Spam filters. Now, remember, as a class member you haven’t opted-in to the lawsuit or the settlement. You might not even think you’ve been harmed by the action at issue, or you have no desire to waste your time for what is typically a sliver of a credit (the attourneys, of course, get 25%-33% of millions — in this case attourney fees will probably go above $20 million). So you might understandably not want to really talk to someone wanting to talk to you about the lawsuit. In this case, service from an agent of Google’s to tell you about your rights regarding the lawsuit is spam. You didn’t ask for it, you don’t want it, and it has a commercial purpose (they’re being paid to get the email to you, and the email is sent to divide up a pot of money — although unlike most spam its not your money).

So, as can be expected, lots of these advertisers have Gmail accounts. And what did Google do? It checked them. Google algorithmically peaked at all the accounts on the list their agent had developed which they had access to, to see if the mail was marked spam or not. There were 75,000 accounts in which it was marked spam, and an unknown (larger) amount of accounts must have been compromised to get that statistic.

Unhinged rantings of a conspiracy nut? Well, no. Google’s lawyers bragged about this in a recent document they filed to the court regarding the settlement (which is tied up in legal wrangling). In relevant part (page 13 of the pdf of the document which Matt Cutts provided on his blog while responding to concerns about click fraud):

Gilardi [ed: the firm Google was using to contact people] also re-sent 74,591 email notices to intended recipients whose addresses ended in “gmail.com” and “googlemail.com”, and for whom Google had information that the first email notice had been directed to the recipient’s spam folder. (italics mine)

Google is apparently hunky-dory with this. Its essential for the Google lawyers to demonstate that their notices stand up to certain legal requirements regarding legitimately trying to notify class members (note that its completely non-essential to go peeking). Google brags on page twelve:

[T]here is no question that Google complied with the notice procedures ordered by this court. In fact, Google did more than was required to provide the best notice practicable. (italics mine)

I’m sorry Google, I just don’t remember telling you you could go peeking at the mail, even to “provide the best notice practicable”. As a matter of fact, given that I know you’ll be storing it for life I actually bothered to read that privacy policy of yours. Lets see, where was it… aha.

Information sharing

Google only shares personal information with other companies or individuals outside of Google in the following limited circumstances:

  • We have your consent. We require opt-in consent for the sharing of any sensitive personal information.
  • We provide such information to our subsidiaries, affiliated companies or other trusted businesses or persons for the purpose of processing personal information on our behalf. We require that these parties agree to process such information based on our instructions and in compliance with this Policy and any other appropriate confidentiality and security measures.
  • We have a good faith belief that access, use, preservation or disclosure of such information is reasonably necessary to (a) satisfy any applicable law, regulation, legal process or enforceable governmental request, (b) enforce applicable Terms of Service, including investigation of potential violations thereof, (c) detect, prevent, or otherwise address fraud, security or technical issues, or (d) protect against imminent harm to the rights, property or safety of Google, its users or the public as required or permitted by law.

Hmm, thats what I remember: opt-in consent for all disclosures of private data. I think the contents of my inbox is pretty darn private. So that ones out. You’ve already explained in your own words that the peeping was more than the court required, so excuse #3 is out. So what about #2: were you “processing information on [Google’s] behalf”? If you were, then this exemption swallows the entirety of the policy policy!

I’m less than happy, and now seriously wondering if all those business documents I’ve got floating around my Gmail inbox are going to end up in the hands of your lawyers without so much as a by-your-leave if your lawyers, in their sole discretion, think its for my own good strategically a good idea to get Google out of a lawsuit.

Do no evil, indeed.

[Edit: Fixed spelling mistakes and bolded some juicy bits.]

Comments Off

Coolest mISV Product Ever

I just learned that JOS regular Phil makes software for chimney sweeps.  If the prospect of this doesn’t make you smile, you have neither soul nor taste in Disney movies.

Chim-chiminey chim-chiminey chim chim charoo, I does what I likes and I likes what I do…  

Chim-chiminey chim-chiminey chim chim, cheree, a sweeper’s as lucky as lucky can be. 

Comments Off

Lesson: Check To Make Sure You Have Uploaded The Correct Installer

I made some major changes to Bingo Card Creator last, oh, Thursday I think it was, and then built and uploaded.  Unfortunately, this is largely a manual process and I missed the critical “copy the new installer from the build directory to the web directory before sync’ing the local copy of my website and the FTP server”.  Which means everyone has been getting the old version.  D.  O.  H.  Well, no sense crying over spilled milk.

Comments Off

Drop-Dead Simple Update Checking

I just had this brainstorm and wanted to share.  It should be live in my program by, oh, the end of today:

Checking for updates is a wonderful thing to enable, both because it makes sure your customers have the best-and-brightest version of your product available, and because it lets you see on your web logs “Ahah, that install actually succeeded”.  I wanted to have it ready for my first release (there have been at least 10 mini-releases since then, all with the same version number) but couldn’t figure out a way to do it simply.

Enter the drop-dead simple version checking solution: make a directory on your website (I’d put it in robots.txt too with an exclusion, as its going to have duplicate content and you don’t want it to be a search result anyway).  Populate it with a bunch of HTML files corresponding to your version numbers (e.g. v1.0.htm, v1.01a.htm, beta_release.htm, whatever you want).  All the ones but the “latest” one say “You need to update your software.  Here’s how:”, with your favorite tracking code embedded.  The latest one says “Yep, your software is up to date”, has the tracking code, and maybe gives a bit of advice or something (hey, why miss an opportunity to sell to people).  Every time you add a new version, you change the version number in the executable/resource file/wherever, rename your up-to-date page to the new number, and put an out-of-date page in place of the old page.

BAM.  This takes only 10 seconds per update, requires no additional programming, and can be done in 100% static HTML (no need to query a CGI script or anything).  Then you put a Check for Updates item in your Help menu, and perhaps pop up a window on program execution the first time its executed (“Thank you for using X.  Would you like to check for updates now?”) and perhaps every 2 weeks or a month after the program is installed.  Its not quite as seemless to the user as, say, Firefox’s automatic updating, but it’s a heck of a lot simpler for you.

Comments Off

Re-evaluating My Opinion of YSM

(YSM = Yahoo Search Marketing, aka Overture)

I may have been too hasty in my dismissal of YSM.   Yes, their interface is terrible.  Yes, their three day delay between me putting in a new ad and it showing up makes constant refinement impossible.  Yes, their integration into Analytics sucks (I still can’t make it work right — all of my Yahoo searches are detected as organic regardless of what I do).

But, well, numbers do not lie.   My second round of Yahoo ads (I optimized the text a bit, not nearly as obsessive as I am about AdWords since the process is SO much worse) has been performing well.  How well?

Well, for comparison, in the last 7 days on Google I’ve been averaging about 50 cents CPA (cost per action = how much I pay Google for every trial download they drive to me) and a 20% CR.  Those are a little lower than I expected, but some days I’m spiking to 30 cents/35%, which is much closer to where I want to be.  Some of that is just random jittering when working with very small numbers, some of that is me constantly tweaking stuff on Google.

So, comparing by comparison, a week’s worth of my barely-optimized Yahoo ads: 29 cents.  40% conversion.  Good God.  Apparently the teachers are all over Yahoo.  Accordingly, despite the fact that I truly *hate* logging into their service to change things (whereas Google is more fun than some games I’ve paid money for… cheaper, too, come to think of it), I’ve given them a reprieve and authorization to charge me another $30 for August.  I’m still going to give Google $90 over the same period, at least if I can manage it :)

(Incidentally, this will likely end up pushing me temporarily above my $60 budget, since I currently have about $15 in net expenditures.  Counting ad expenses is a mess, though, one of those things they much teach you in business school: do you expense the ad when the click comes in?  Or when you mentally commit yourself to spending X over a certain period?  Or when your credit card is actually charged?  I’m on-budget if you consider numbers 1 and 3 and over-budget if you use #2.)

Comments Off