Archive by Author

Major New Feature For AdCenter

From an email I received earlier today, notifying me about upcoming changes to AdCenter on Friday:

Create campaigns with ease by quickly importing campaigns directly from other paid search programs or by copying existing ad groups within adCenter to a new campaign.

That is genius and honestly something I would never have expected from Microsoft, because it acknowledges that their competition is beating them soundly.  That being said, the ability to import campaigns directly from Adwords literally halves the amount of work required, AND it means you get to do your work where the work is easy (AdWords’ vastly superior interface) and then reap the rewards of lower competition on AdCenter.  That is a win-win-win.

Best Single Day Ever, Plus August 2007 Stats

Hideho everybody.  I made some changes to my AdWords campaign right before leaving America, and lo-and-behold they increased the amount of clicks I was getting from about 10 a day to 60 a day, which contributed to me having my highest legitimate hits day ever (>500 visits, ~100 trial downloads).  Some of that is probably due to the end of August being the start of the term, but after looking at the numbers it appears to be mostly AdWords.  (100 trial downloads implies 2.5 sales implies about $70 in revenue, and believe me, if I could sustain that I would be sitting pretty.)

Anyhow, lets talk August numbers:

Sales: 33 (2 refunds, 9 CDs)

Income net of refunds: $813.45

Expenses:

Godaddy: $7

e-junkie: $5

CrazyEgg: $9

AdWords: $60.17

AdCenter: $11.28

SwiftCD: ~$65 (waiting on invoice)

Net Expenses: $157

Profit: $656

Lets see, what is of note this month:

#1 — Someone had shipping issues with their CD, and was a little miffed after it didn’t arrive, figuring it was my fault.  It wasn’t, of course (I trust the SwiftCD sent it when their records says it did, which leaves it about 50-50 that it was customer error or the USPS up to its usual tricks), but of course I didn’t tell them that.  What I did tell them was that I would UPS one out immediately (cost to me: probably close to $15), and I would have overnighted it if they had been any more upset.  Yeah, that eats most of the profit from the sale, but they’re now very pleased with my responsiveness rather than thinking I’m a shiftless shipment-forgetting Internet conman.

#2 — I also sent someone a free CD rather than taking their school’s purchase order (PO).  For those of you who have not sold to institutions, a PO is essentially a “Send us this stuff and then we’ll send you the exact amount of money on this document” transactional instrument.  Dealing with them is a pain in the hindquarters — Quill had a whole DEPARTMENT of people whose only job it was to read school POs over the summer (one of them being me), and then there is another department for collecting payments on the ones that have been satisfied.  I have only ever had one customer want to pay with one, and rather than spending hours of my life getting that mailed to me, then dealing with the school’s payment clerks to actually get my $29.95, I just sent them a free CD with my compliments.  Now I’ve got a team full of teachers who love me and are hopefully plugging my software to parents, friends, and colleagues… who pay with credit cards, like normal people.  :)

(P.S. If you’re in the position where you NEED to take POs, signing up with eSellerate or one of the other major shareware processors will work for you.  Its one of the only times they earn their keep.  However, since getting POs is as much a hassle for them as it is for you, be prepared to pay through the nose for it.  eSellerate charged, if I recall correctly, $20 a month just to flag your account for accepting POs!  I am skeptical that you can make the numbers work out very well on a $25 item.  If you’ve got a $X00 item, though, get it done.)

Marketing A Superhero Novel (Web Admin Hackery Galore)

Around the same time I started Bingo Card Creator, my little brother got bitten by the Do A Cool Project bug and decided to become a published fiction author.  He is writing a superhero novel and, aside from this post being a totally transparent attempt to give him some SEO juice to get him kicking, I’d like to recount what we’re doing to market a product that, strictly speaking, doesn’t exist yet.  This is mostly going to be a technical overview — if folks have interest, I’ll go over some of the softer side of marketing at a later date. 

 Keep in mind that I am a programmer, not a system administrator.  Don’t do these instructions on a production box without testing it first, OK?  They worked for me, but if they don’t for you my liability is limited to refunding the amount you paid for this blog post.

Priority #1 — Setup a website.  I’m sure you’re shocked.

Specifically, because my brother is more skilled in dialogue writing than in web server administration, I set him up with WordPress to make the barriers to content creation nothing.  He had already had a blog he used for writing on WordPress.com, so moving him to hosted WordPress wasn’t much work from his perspective (we could even import all the old posts).  From my perspective, it was a bit of work getting SuperheroNation.com to coexist peacefully with Kalzumeus’ Rails test site on a single 256 MB Slicehost VPS, but after a night it was up and running.  (You can do this to host Rails and WordPress on the same domain, but the instructions are different and I’ll give them to you at a later date). 

Why go with hosted WordPress rather than WordPress.com?  It gives the site room to grow, and gives my brother control — he can incorporate Google Analytics throughout via a plugin (ahem, DO IT), and when he is ready to start selling the book throwing up e-junkie’s Fat Free Cart, a nice custom skin, and other features is very easy.  If you’re just starting your own site, for SEO purposes if nothing else, put it on a domain you control rather than wordpress.com.  It is a pain in the butt to set up, but moving a blog OFF wordpress is infinitely harder than getting WordPress up and running somewhere else and then making the changes you want down the road.

Here’s what you need to do, assuming you’re serving Rails with Apache proxying to a Mongrel cluster (works like a beauty even at 256MB, incidentally, although I haven’t tested it under severe load):

 1)  First, you’ll want to get WordPress installed.  If you’re hosting two domains on the same box, I’d recommend distinct directory structures for them — the non-Rails domain here resides in /var/www/superheronation/, and the Rails stuff is in a completely different path set automatically by deprec (see below).  After creating the directory, go over to wordpress.org, download the zip file, unzip it, and stick it in a subdirectory named wordpress (so, in my example, /var/www/superheronation/wordpress) .  We’re putting it in wordpress rather than in something descriptively named because if we change blogging platforms later we can do most of the job just by changing one line in a config file.  (By the way, wondering what to call your blog’s main user-visible directory?  I like “blog”, but a high value keyword works better for SEO… at least for now.)

1b) Skip this step if not a Slicehost customer.  There is a problem with installing WordPress.org on Slicehost — by default, Slicehost setups don’t come with a mail server, and for reasons only God knows WordPress.org dies with a silent error if PHP can’t mail you your password during an install.  Don’t ask me what the security rationale for that one is.  Happily, WordPress.org is open source and you can quickly hack together a solution — go to the wp-admin/upgrade-functions.php file, comment out (put a # sign in front of ) this line:

wp_new_blog_notification($blog_title, $guessurl, $user_id, $random_password);

and this line:

$random_password = substr(md5(uniqid(microtime())), 0, 6);

replacing it instead with

$random_password = ‘for_love_of_little_apples_change_me';

Now you can follow wordpress.org’s 5 minute install directions without blowing stuff up.  Or, you could, if your web server was actually serving up your blog yet.  Its not, since you haven’t told it that your second domain exists.

2)  Locate your Apache config file for your Rails installation.  If you did the setup for your Rails site using deprec (*highly* recommended — it will save your sanity and many days of tweaking config files, and it works beautifully with Slicehost), this will be in /usr/local/apache2/conf/apps/nameOfYourApp.conf .  Copy it to another .conf file of your choice.

3)  Working on your second copy, edit the VirtualHost declaration to read

<VirtualHost www.nameofyourdomain.com:80>

That is Apache speak for “If the web browser asks for anything under this domain, use the following options”.  You’re going to point the DocumentRoot to /var/www/superheronation/ or wherever you put this domain, and set the ServerName and ServerAlias from whatever your Rails domain is to whatever your WordPress domain is.  Now replace the catchall VirtualHost (VirtualHost *:80) with the same sort of name-based virtual host, in the nameOfYourApp.conf file.

4)  Now for the magic — we want Apache’s awesomely powerful rewrite engine to send the appropriate things to WordPress, while leaving the rest to Rails.  Here’s exactly what you need after RewriteEngine On for the seperate domain case:

# Let apache handle the PHP files – all requests that get past this rule
# are routed to the mongrel cluster (aka Rails)
#  – wordpress installation assumeed to be in ‘public/wordpress’
#  – Options: NC – case insensitive
#  –          QSA – query string append
#  –          L – last rule, aka stop here if rewriterule condition is matched

# Prevent access to .svn directories
  RewriteRule ^(.*/)?\.svn/ – [F,L]
  ErrorDocument 403 “Access Forbidden”

  # Check for maintenance file and redirect all request
  RewriteCond %{DOCUMENT_ROOT}/system/maintenance.html -f
  RewriteCond %{SCRIPT_FILENAME} !maintenance.html
  RewriteRule ^.*$ /system/maintenance.html [L]

  # OMIT THIS LINE if you have don’t want to automatically redirect everything from the domain to the blog.
  RewriteRule ^/$ %{DOCUMENT_ROOT}/wordpress/ [NC,QSA,L]

RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteRule . %{DOCUMENT_ROOT}/wordpress/index.php [L]

 

  # Rewrite to check for Rails cached page
  #RewriteRule ^([^.]+)$ $1.html [QSA]

  # Redirect all non-static requests to cluster
  #RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f
  #RewriteRule ^/(.*)$ balancer://deprec_will_fill_this_in_cluster%{REQUEST_URI} [P,QSA,L]

5)  Cleanup tasks:

Make sure Apache knows that .php files are first class citizens by editing /usr/local/apache2/conf/httpd.conf and replacing the line with DirectoryIndex to read

DirectoryIndex index.php index.html

And, at the way bottom of that file, comment out the Include statement and replace the NameVirtualHost directives with

NameVirtualHost www.rails_domain.com:80
Include conf/apps/rails_application_name.conf
NameVirtualHost www.wordpress_domain_name.com:80
Include conf/apps/wordpress_config_file.conf

That should be it.  You can now restart Apache (“sudo /etc/init.d/httpd restart”), and you should be able to access your WordPress blog and complete installation of it.  I’d HIGHLY recommend changing your Admin password, creating another Admin user with a non-Admin name, and changing your Preferences -> Permalinks to a non-default option which includes your post title, for SEO purposes (the 3rd option works nicely). 

6)  Don’t forget to update whoever holds your DNS records to point your domains to your slice’s IP address.  For me, this involves telling GoDaddy to use ns1.slicehost.net, ns2, and ns3 as DNS servers for superheronation.com, and then going into the Slicehost config and telling Slicehost to point superheronation.com and www.superheronation.com to the IP address of the slice I bought.  (Handily listed on the bottom of that screen.)

And there you have it!  Two websites running off of two very different technology stacks on a $20 a month VPS.  They’ll both perform marvelously under load, too…  I hope.

The Next Adventure

Not very uISV related, but I’m flying back to Japan today to return to my new contract.  As one of the purposes of this blog is networking, I thought I would mention it so that folks would mentally fill in the “Hmm, he might have the right experience for this opportunity…” box. 

Where: A software consultancy in Nagoya.  No, I won’t identify it.  (Honestly, though, “The one with the white guy” really cuts down the field substantially.  White guys are so rare where I live that letters from the Social Security Administration to Patrick McKenzie @ my prefecture get to me, no address necessary.)

What: Half Java server programmer (I’m going to get very, very familiar with the J2EE stack, finally), half being interface with the Indian outsourcing team which doesn’t speak any Japanese.  I’m always willing to learn new things and it looks like I’ll be getting some much needed management experience, too.

What vertical: Enterprisey stuff.  Folks familiar with the Nagoya area might wonder if I mean automobile manufacturing.  I can neither confirm nor deny, but I can confirm that of the 20+ positions I looked at approximately 18 involved automobile manufacturing.  (Nagoya is owned lock, stock, and barrel by the Toyota group.)

How much: More than I make with Bingo Card Creator. :)

Where Do You See Yourself in Five Years: I have always hated this question.  Ask me in five years.

Congratulations to E-junkie

Seen on my login screen today: E-junkie is now processing more than a Million U.S. Dollars worth of transactions per month!  Now that deserves a hearty congratulations, for a fellow scrappy little uISV which delivers a great service at a great price.  Now I just need to get back to the business of getting them closer to two million a month.  :)  (At $425 in 15 days, I’m almost a whole tenth of a percent of their business.  Woohoo!)

Banking for the uISV

One decision you’ll have to make about your uISV is where you send all your hard-earned money.  This gets a bit more complicated if you’ve got an international operation, so hopefully this will be of use to some folks in that circumstance.

Can I Get A US Bank Account Without Residing In the US?  This is easily the most frequent question on the Business of Software boards about banking.  The short answer is yes.  The long answer is “America didn’t become the world’s largest economy by saying no to greenbacks, and billions of dollars passes through millions of foreigner-controlled accounts every day.  Forget what you’ve heard about the Patriot Act, if you’re not on a watchlist this actually isn’t that hard, provided you can find a bank which will let you.” 

 The key obstacle you’ve got to overcome is called Know Your Customer, a regulation that requires that banks know who they are doing business with (i.e. that their account holders are not fictitious fronts for Bad People).  Many banks interpret that as meaning you need a branch visit, but that is hardly universal.  Citibank, for example, will take a driver’s license number over the phone as sufficient for KYC.  That doesn’t help you if you’re in Romania, of course.  What does is banks which are controlled by a non-banking organization, such as E-Trade Banking, which is a financial services arm of an online brokerage.  You can open an E-Trade investment account from just about anywhere.  Then, if you call their customer support line and ask to have banking services added to your account, they’ll take the existence of your investment account as sufficient evidence that you actually exist, and you’ll just have to fax over a copy of your passport to get a checking account, check card, and online banking activated.  E-Trade isn’t the only institution that will do this — many American brokerages have US accounts available worldwide, because one of the biggest reasons to have a US account if you are not US-based is to invest in US assets without paying an intermediary lots of money.

Got a recommendation for a bank for the rest of us?

Everyone wants different things in a bank.  I like decent interest rates, good online banking, and easy access to ACH payments (Automated Clearing House — when you receive money from Paypal or pay bills online, that is what you are using).  My top recommendation is ING Direct’s Electric Orange (its a checking account), for three reasons: Paypal and Google ACH payments credit within 1-2 business days, which means you get extra interest, you actually do earn interest on the checking account (3% unless you’re loaded), and they have a very responsive website.  They don’t have branch offices but I could literally go the rest of my life without needing teller help for simple transactions.  You need to have a checking account at a bricks and mortar (US) bank to open an Electric Orange account.

I also recommend that all uISVs get a credit card which pays cash back.  There are a billion providers here, take your favorite.  While I don’t recommend ever carrying a balance on your credit card, paying all of those recurring monthly expenses and software purchases on a credit card makes for easy record keeping, 1% off your expenses every month, and gives you some protection should a transaction go sour.  If you’re using Paypal the Paypal debit card gives you 1% back, but you’d have to keep sufficient amounts of money in your Paypal account to cover all purchases, and that requirement doesn’t sit well with me.

Harry Potter Bingo Cards

In honor of the release of Harry Potter and the Deathly Hallows, I thought I would point out that there are some Harry Potter bingo cards (scroll down or search for Harry Potter) available for free for teachers, parents, or other Potter enthusiasts who want to use them.  They don’t spoil any plot points of the books. 

The book, by the way, took me about 8 solid hours to read and got me a little weepy at points.  It has weak points and seems rushed by the end, with a few loose ends not resolved as definitively as I’d have liked them to be, but all in all is a fitting capstone to the series.  I am indebted to Ms. Rowling for inviting us to share in the magic, and in the very real good she has worked for the cause of children’s literacy.

For other software small businessmen, don’t worry, regularly scheduled content will resume in about a week or two.  In the meantime, there is a really good book out there if you want to take your mind off of conversion rates and SEO for a while.

Blogging Light Because…

… I have been absorbed in preparations for temporarily returning to the US, moving jobs, moving apartments, and etc.  Try imagining the stress of planning a month-long vacation, a job hop, and a move at the same time — now add in the wrinkle that it is all done in a second language*.  I will be back in the US on the 27th with my brand-new Dell laptop (on which I am writing this post) and about a solid month of time to hang out with the family and work on Kalzumeus.  Then it is back to the daily grind, this time at a OSS-based computer consultancy in Nagoya at a decently higher salary than my last contract. 

 See you all then.

* Just when you think “Oh, it can’t be so bad, I am a qualified translator after all” Murphy’s Law says that the travel agent’s database will forget you exist, the landlord will try sneaking a rider onto page 8 of the contract to charge 10% extra, and the immigration bureau will erroneously tell you that their visa guidelines have changed to disallow your trip.  Ahh well, all fixed now, although I will have to give my landlord a piece of my mind when I get back.

Bob Walsh Launches Consultancy

Bob Walsh, who literally wrote the book about uISVs, has opened up a software consultancy for uISVs with the suitably Web 2.0-y name 47hats.  Not sure I would go for that name myself but, hey, not my business on the line.  While I have occassional disagreements with Bob about the relative ranking of priorities for the uISV*, he has contributed a lot to the community and one more resource for uISVs trying to cross the chasm from $0 to $1 in revenue is always a good thing.  (And there are plenty of chasms after that one, too.)

* Two examples: I think he places more emphasis on incorporation and legal documents than is warranted for many uISVs, and I think some of the recommendations he makes in his super-helpful series of website reviews for uISVs are based more on intuition than on data, and I suspect the intuition is flawed.

Speaking of his book: while I somehow managed to avoid reading it, my understanding is it would have shaved a heck of a lot of time off my first week of nailing down administrivia decisions like payment processors, bank accounts, hosting, etc.

Freeware Can Be Profitable, Apparently

I got an email from Rick Brewster the other day, fixing a spelling mistake on my website.  Rick noticed it after a link from my blog, which he apparently reads and comments on, although I haven’t noticed it before.  The reason this has a strangers passing in the night feel to it is that Rick wrote Paint.NET, a fairly powerful freeware image editing program which I am a major user of and contributed to, and so we have been unknowingly supporting each other’s businesses for months.  Funny how things work like that.

Anyhow, he has an interesting post on the economics of completely free-as-in-beer software.  Apparently, it is making him a fair bit of money, although is hesitant to disclose the exact figures.  And, hey, that is certainly his right.  If you’d like to see them, I suppose you could express encouragement in his comments.

As an amusing sidenote, he had some advice for me on what to do with my Bingo Card Creator profits:

 That’s pretty good supplementary income which can then be used to pay down debt, increase retirements savings, or for the monthly payment on a very nice BMW. C’mon Patrick. Go for the BMW.

1)  Did it already.  Bingo Card Creator paid off my last bit of student loans in December.  (I have an irrational hatred of debt and had paid essentially all of my surplus salary since graduation towards the loans.  This is part of the reason why I was so big on starting the business on a shoestring.)

2)  Doing it.  Saving is my favorite use of money.  What can I say, I’m a boring guy to shop with.

3)  I actually don’t have a driver’s license where I live.  If I did, while I’m sure the BMW is a nice automobile, I would get myself an itty-bitty used Japanese car for about $500, run it into the ground, and repeat.  Like I said, I have an irrational hatred of debt.  To the extent any of the Bingo Card Creator money gets spent rather than saved, I suppose you could say it helps pay for my plane tickets to visit my family and perhaps my new laptop.  (My first laptop ever, as a matter of fact.  Its a Japanese Dell, should be really useful for getting some work done on plane flights and, naturally, includes a better graphics card so if I fall off the MMORPG wagon I can do so in style.)