Making a Popular Game Site

Back in late October 2009 I created a new Flash game arcade site called Rhyta. A month in, it was barely making any money and traffic was dismal. Now, a few months later, I’m getting steady search engine traffic and I’m consistently making about $2 per day (around $750 per year). That may not sound like much, but keep in mind I’m using a $10 arcade script and get all my games for free from Mochi. Hundreds of sites have the exact same games I do, but the search engines send me visitors. How did I do it? Sitemaps!

A sitemap is an XML file that contains a list of all the page on your site. Search engines love them because it lets them discover all the pages on your site (especially the new ones) without having to crawl the whole thing. Webmasters love them because it gets their content indexed faster and saves on bandwidth. Once I realized sitemaps were the key to my success, I decided to completely automate my game site.

This is what I did:

  1. I created a script that wraps around my el cheap-o arcade script’s Mochi feed download functionality. This wrapper can be called from a cron job to automatically download a list of the latest games from Mochi.
  2. I created another wrapper script around my arcade script’s Mochi game download functionality. This one is also called from a cron job. It downloads each of the new games from Mochi.
  3. I created a sitemap generation script. This uses my database of games and categories to automatically create a sitemap containing every URL on my site. Once it is done, it gzips it to save on bandwidth.
  4. The last step was to ping the search engines. I found the sitemap ping URL for Google, Bing, Yahoo!, Moreover, and Using cURL, I tell each of these search engines that I have a new sitemap so they can quickly get it and index my new games.
  5. I set all this up in crontab so it will run automatically once a day.

All together, it took about 2 hours of work to completely automate my arcade site and to automate the creation of a sitemap.

Read More

The Smallest Excuses

I read a post on a blog somewhere awhile back that went something like this: A daughter visited her mom’s house and was given a bunch of yummy food to take home. The food was securely placed in a plastic bag to make for easier transport. When the daughter got home and put the food in the fridge, she realized that she wasn’t going to eat the food. Why? Because it was in a bag, and opening the bag to get to the food was too much work.

At the time I thought this was funny but a bit ridiculous. It takes almost no effort to take the food out of the bag. But then I noticed myself using tiny excuses, too, again and again.

Some of them weren’t a huge deal. For example, I’ve delayed stripping the paint off of some chairs for over a year because I didn’t have the sandpaper I needed, and finding it at the store was too much effort (I finally bought the sandpaper online instead of at a physical store and am nearly done with the paint stripping). Waiting a year to strip some chairs hasn’t had any dire consequences. The chairs still work, it will take the same amount of work to strip them now or later, and the cost hasn’t changed.

But I’ve been using at least two little excuses to keep me from getting things done that are actually important:

  1. I use YNAB to keep track of my income and expenses, and to help me budget my money. When I buy something, I take the receipt, enter it into YNAB, and then file it away. It takes 5 seconds. Well, that’s the plan anyway. What has actually been happening lately is I buy something, I take the receipt, shove it in a pile, and avoid looking at the pile until my wife gently pesters me about updating YNAB. Once it gets to the wife pestering stage, however, the task is no longer small and no longer 5 seconds. This past week, however, I’ve been great at punching in receipts as they come in without the slightest temptation to put it off until later. The difference? I cleaned our second bedroom where we keep the filing cabinet so I no longer have to navigate my way through the piles of stuff every time I need to file a receipt.
  2. A few weeks ago my windshield caught a rock (again) and got a chip (again). To get a chip fixed, I have to go to, fill out a form, and wait a few days for a guy to show up in a van to fix my windshield. It’s free and takes only a few minutes of my time. If I wait, the chip may turn into a crack which will force me to shell out another $281.95 to replace the windshield (again). So why wasn’t my windshield fixed 2 weeks ago? Because I like watching Hulu more than I like scheduling glass repair. To eliminate this excuse, my wife and I have instituted a no TV on Monday/Wednesday/Friday policy. This gives us more time to do the things that actually matter, like having FHE together and me having a productive lunch hour. The policy works, too. I scheduled the windshield repair at lunch today.

What I’ve learned from these couple of examples is that it is easier, faster, makes me happier, and is often cheaper to just eliminate whatever dumb little excuse is keeping me from getting stuff done rather than procrastinate the task. Sometimes that isn’t easy (I am completely addicted to Hulu) but it is so worth it.

What is keeping you from doing the things you actually want to do?

Read More

Saving for a Goal with SmartyPig

If you haven’t used SmartyPig before and are comfortable with online savings accounts (like ING Direct), I highly recommend checking it out.

SmartyPig is an online savings account that currently pays 2.01% APY. That rate isn’t much different from most of the other online (well, nearly double ING Direct’s at the moment), but how the account works is drastically different.

To demonstrate how it works, lets say I want to save $2000 by November 1st to help with holiday expenses like airfare and Christmas gifts. Instead of just dumping money into a savings account every now and then and hoping I reach the goal, I can use SmartyPig. I tell SmartyPig how much I have saved already (let’s say $500), how much I want to save ($2000), when I need it by (November 1st), and how often I want to deposit more money to the account (let’s say once a month on the 1st). I can then click a button and SmartyPig informs me that at the current APY, I need to deposit $185.27 per month to reach my goal. If I want I can adjust that amount up or down, although if I adjust it down then I probably won’t reach my goal in time.

Once the goal is setup, SmartyPig automatically transfers my scheduled deposit out of my checking or savings account at another bank and deposits it into my goal account. I can easily see how close I am to my goal in both dollar amount and percentage. If I want, I can even put a widget on Facebook or my website showing how close I am to my goal.

I can also tell SmartyPig that I want to accept contributions for my goal. This makes it easy for mom or dad to chip in a few bucks to help me fly home for the holidays.

So those features are neat, but not really earth-shatteringly amazing. So what makes SmartyPig so awesome? You can withdraw money from your goal at any time, but if you wait until you reach the goal then you can utilize the SmartyPig cash boost!

Let’s go back to the holiday expenses example. It is November 1st and we have $2000 in our SmartyPig savings account. Time to cash out. We already started doing some Christmas shopping, so we can transfer $1000 to our checking account to help pay for that stuff. We need a hotel, so we can request a $250 Travelocity gift card and they’ll send us a $275 gift card. We need to buy some tools for dad, so we request a $250 Home Depot gift card and they’ll send us a $257.50 gift card. Some clothes from Macy’s would be nice, so we request $200 from them and get $224. The wife wants some jewelery so we request a $300 Jared gift card and get a $321 gift card.

If you’ve been keeping track, our account only had $2000 in it but we got $2077.50 in cash and gift cards. That is because SmartyPig gives your money a boost when you cash out your reward in the form of gift cards. You can find a list of their “best-in-class” retailers here. Sure, the average 2% to 6% doesn’t sound like much, but in this example we get $77.50 for free just for shopping at places we were already planning on shopping at! And if you don’t want to spend your money at one of their retailers, you can withdraw your money to a prepaid debit card or to your bank account.

How can they afford that? Volume. SmartyPig purchases gift cards in bulk at a discount from the retailer. The size of the discount varies based on the retailer. If they get a 10% discount then they might give you an 8% boost and pocket the 2% difference. The retailer is happy because you are forced to spend that money at their store, SmartyPig is happy because they just made 2% of the gift card face value, and you are happy because you just got 8% more than you ordered. Everyone wins. Note: Percentages are for example only, I have no idea what the actual amounts are…

Check it out at!

Read More

Savings Goals

Many months ago (June 2009), my wife and I set a goal for the amount of money we wanted to save. We wanted to save enough for a down payment on a modest house by May 1, 2010. Since then our plans for that money has changed somewhat, but the dollar amount and date of the goal has remained the same.

To help us track the goal, we made a Google Doc that listed all of our accounts and our goal. We included all of our stock and IRA accounts, our checking/savings accounts, cash we have in the house, our credit cards, my PayPal account, and a Walmart gift card that we keep funded for using at Sam’s Club. We left off Becca’s student loans (the only debt that we have) because we don’t have to start paying them back until Becca finishes school in ~5 years and the amount is relatively small as far as student loans go. Perhaps we’ll add them to the spreadsheet in the future.

Anyways, I set up a few formulas in the document to automatically calculate how many days were left before May 1, how much we needed to save per day and month, how close we were to reaching our goal (%) and to add up our accounts for us. Every couple weeks when we reconcile all of our accounts, we take a minute to punch the numbers into the spreadsheet to see how we are doing.

Overall, we did a good job of growing our savings at a pretty consistent rate. We made some good decisions, such as investing a good chunk in the stock market (mutual funds) near the bottom of the crash (which has grown by about 30% over the past year!) and setting up automatic savings plans with SmartyPig and ING Direct. For the past few months, however, it looked liked we were starting to spend faster than we were saving. We were traveling and buying gifts for the holidays, my wife applied to grad schools (expensive!!) and then bought plane tickets to visit them, I renewed a bunch of domain names and paid business taxes and registered agent fees, etc etc. It looked pretty bad.

But then suddenly we got a big tax refund (which was unexpected because I strive to get $0 back at the end of the year, and normally I have to pay quarterly payments to accomplish this), Becca was reimbursed for some of her grad school traveling, my home business revenue picked up, and the stock market made another minor leap. Suddenly we went from being at 96.4% of our goal on 3/1 to a whopping 109.66% of our goal on 3/19! We are both so excited to have not only reached our goal 42 days ahead of schedule, but also to have beaten the goal by over 9%!

To help keep us saving, we have a little more than doubled our original goal and reset the goal date to May 1, 2011. We are confident that we can meet the goal while maintaining our current lifestyle, so with a little luck we’ll hit the goal early and be able to up it again.

Read More

Open Atrium

I’ve recently discovered Open Atrium. I love it!

Built on Drupal, this “intranet in a box” is the perfect solution for my company.

These are the things I love about it:

  1. Works without a lot of configuration, but is still highly configurable in case you need it to do something special.
  2. Allows you to define groups and limit access to each group. This means I can have a “The Awkward Turtle” group and only allow myself and my wife (we’re the only ones working on it) to even know the group exists, and I can also have a “Creative Barcodes” group and allow myself, my wife, and our graphic designer Anthony to see it.
  3. Gives you a dashboard with all of the pertinent information from all of the groups that you are a member of. You also have a group dashboard that only shows you the important information for that specific group.
  4. You can, on a group-by-group basis, enable several awesome included features:
    1. A blog
    2. A notebook (sort of like a wiki)
    3. A calendar (even supports iCal)
    4. A case tracker (for keeping track of feature requests and bugs)
    5. A shoutbox (good for microblogging)
  5. It looks great and is very easy for an end-user (or an admin) to figure it out.

There are, however, a few things I’m not terribly excited about:

  1. Documentation is a bit lacking, but that isn’t unexpected for beta software.
  2. Doesn’t work on PHP 5.3. I had to setup Apache to run both 5.3 and 5.2 to get it working. This wasn’t really surprising though, as a lot of Drupal stuff has problems with PHP 5.3.

Is it perfect? Not yet, but I think someday soon it will be.

For an example Open Atrium site, check out their own community pages.

Read More