Wednesday, March 17, 2010

Play Video Games and Save the World

Call of Duty: Modern Warfare 2
I don't have as much time for video games as I once did, but it's nice to hear that video games will solve the world's problems.  This video from TED.com points to additional emerging research that video games do not rot the mind as once thought:

http://www.ted.com/talks/jane_mcgonigal_gaming_can_make_a_better_world.html

Monday, March 8, 2010

Controlling Web-Bots with CurbIt

Whether you have a content-heavy site or a very application-centric website, bots and harvesters can wreak havoc by eating up CPU cycles, memory, and system resources.  These ubiquitous pests will gladly retrieve all of your site's content with little regard for copyright laws or your terms of service.

One helpful tool for limiting many types of harmful bots and crawlers is a Ruby gem or plugin called CurbIt.  CurbIt adds application level rate limiting to your Rails app.  I recently had the pleasure of utilizing CurbIt on the Paper Rater website to limit the number of submissions.  This helps us to ensure that humans are submitting documents, but without bothering our users with a CAPTCHA.

Example usage from the CurbIt github page:


class InvitesController < ApplicationController
    def invite
      # invite logic...
    end

    rate_limit :invite, :max_calls => 2, :time_limit => 30.seconds, :wait_time => 1.minute
  end

Thursday, February 18, 2010

Should You Move to the Cloud?

Cloud Computing For DummiesAt Oasic we host a lot of websites and one of the most boring tasks involves setting up new servers, either for a new website or as part of a migration/expansion.  It's one of my least favorite parts of the job.  With many of the cloud offerings out there (Heroku, Google AppEngine, EngineYard, etc.), I've begun to dip my toes in the water.  But why not just dive in?

Most Apps are NOT Designed for the Cloud

The concept of cloud hosting, along with its advantages and restrictions, is a relatively new phenomenon and most application frameworks, libraries, processes, and tools are not developed with the cloud in mind.  Heroku's simple restriction of a read-only filesystem for all but a couple directories, means that you have to work around this.  Restrictions on background processes means that you need to work with their related add-on, or come up with another solution.  It begins to feel like deployment is a series of workarounds, and I'm not certain that's any better than setting up a new server.

Middle Ground

VPS providers like Amazon EC2, Slicehost, and WebbyNode provide a middle ground between a full cloud solution and hosting on dedicated servers.  They allow instances to be setup more easily, scaled up and down, and backed up at nice prices and good uptime.  And, they allow full access to the server.  You can write to the filesystems, access databases directly, run background tasks, poke around on the server via SSH, create shell scripts, etc.

Further Reading

Moving to a full cloud stack requires a loss of flexibility that many businesses can't allow.  Here is a good case study about GitHub's move out of the cloud:

http://github.com/blog/493-github-is-moving-to-rackspace

And, of course, there are many businesses that benefit from the advantages of moving the cloud: inherit load-balancing, fault-tolerance, pay-per-usage, ease of deployment, etc.

So, review your options, consider your needs, and make the best choice for your application's hosting.

Tuesday, February 16, 2010

Blogger Beats Typo

Blogger: Beyond the Basics: Customize and promote your blog with original templates, analytics, advertising, and SEO (From Technologies to Solutions)So I set out to create a blog for my website and spent some considerable time looking at possible options. Most of my development is done in Ruby these days, so I wanted to stick with a Ruby package if possible. These were my finalists:
  • Radiant CMS:  not a pure blogging solution, but a full-featured, extensible CMS with blogging modules.  It would allow me to add new functionality to my programmer-heart's delight.
  • Typo:  the oldest, tried-and-true Ruby blogging system out there.  This heavyweight is a non-nonsense blogging machine.
  • Mephisto:  a leaner blogging app than Typo, but still with nice features.
And the winner is...

Typo --  at least it seemed.  I used the typo gem to install my blog.  Added database permissions and began configuring things.  I edited the default Hello World post that was auto-created.  I was on my way until I created my first new post.  No visual errors appeared, but the posts were not being saved.  What could be going on?

I often enjoy a good troubleshooting session, but not this time around.  I had 3 blogs needing to be setup (for various sites) and I didn't want to deal with these issues.  I decided to try out Google's hosted Blogger and the rest is history!

Although there is no Markdown, Textile, or other markup suppport, it does include a WYSIWYG editor with full html tags.  Here's some other benefits:
  • use your own domain for free (or subdomain as I have done with this blog)
  • fully customizable layout
  • API for programmatic access
  • 3 minute setup of a new blog
  • Google handles everything for you (1 less component to manage)
  • did I mention it was free?