Avatar Brit Gardner’s Site

all the code that’s fit to printf()

Wake and Bake with Google Reader

Anyone else ‘hitting the j’ the first thing in the morning, also?  Ahahaha sometimes I just crack myself up.  But  no seriously - my google reader feed list has gotten so large and updates so often that I have to speed through them to stay current. I don’t think I even read by 2 or 3 of the articles on a given day but I read enough headlines to get a good overall feel for what’s going on. Maybe that’s a good thing?

So how do I attack my feeds? Well, I’ve set google reader to default to the ‘All Feeds’ page, so I open up the reader and just start ‘hitting the j’ (’j’ is the hotkey for next item) - get it, eh? I barely get done reading the headline of the feed before I hit ‘j’ again keeping a rapid clip through usually 500-800 articles in the morning.  Then I’ll attack it again a few times throughout the day.

I only stop and read if the title pops out at me - or, and I can’t help it, but it’s true - I see a picture that pops out. I wasn’t one of those kids that just skimmed through books only looking at the pictures, but hey I guess that’s a lesson if you want people to read your feed.  Either come up with a damn good title or include an eye catching picture of some sort.

So who’s with me waking and baking with google reader in the morning?

Getting Rid of SSH or SFTP Delay

This is for my future reference and anyone else who stumbles accross the annoying 5-10sec SSH/SFTP delay when connecting to remote hosts.

The delay is most likely caused by the host trying to reverse DNS the client’s ip address.  You can make sure this is the reason by connecting to the remote host with the -vv parameter (this is all assuming debian/ubuntu type distros):

ssh -vv user@example.com

If the debug output pauses before a message like:

debug1: Authentications that can continue: publickey,password

Then most likely reverse lookup is the problem. Fortunately, the solution is simple - on your remote host, edit the ssh config file:

sudo nano /etc/ssh/ssh_config

Add the following line if it doesn’t already exist:

UseDNS no

Then restart ssh:

sudo /etc/init.d/ssh restart

Voila! You should not experience a delay anymore when connecting via SSH or SFTP, etc.

Accessing CouchDB Admin Without Exposing It To A Public Port

I’m running couchdb on EC2, but I don’t neccessarily want to expose the port it runs on (5984 by default) to a public IP address.  But, I want to be able to access the luxurious Futon admin system - so what are my options?

Turns out, there’s a simple solution - run an SSH tunnel to the ec2 server:

  1. $ ssh -L 5498:localhost:5984 [mylogin]@[some-ec2-instance.com]

When you access your local port 5984, i.e. http://localhost:5984/_utils, you’re actually tunneling to your EC2 instance. Now, you can run the couchdb server safely and still enjoy the Futon admin!

Reblog this post [with Zemanta]

Amazon Is Working on a True Content Delivery Network

Just received this email from Amazon Web Services announcing that they are working on building a true Content Delivery Network!  It’s light on details, but I can see this having a huge effect on services that are using AWS and S3 for video delivery.

Many of you have asked us to let you know ahead of time about features and services that are currently under development so that you can better plan for how that functionality might integrate with your applications. To that end, we are excited to share some early details with you about a new offering we have under development here at AWS — a content delivery service.

This new service will provide you a high performance method of distributing content to end users, giving your customers low latency and high data transfer rates when they access your objects. The initial release will help developers and businesses who need to deliver popular, publicly readable content over HTTP connections. Our goal is to create a content delivery service that:

 

  • Lets developers and businesses get started easily - there are no minimum fees and no commitments. You will only pay for what you actually use.
  • Is simple and easy to use - a single, simple API call is all that is needed to get started delivering your content.
  • Works seamlessly with Amazon S3 - this gives you durable storage for the original, definitive versions of your files while making the content delivery service easier to use.
  • Has a global presence - we use a global network of edge locations on three continents to deliver your content from the most appropriate location.

 

You’ll start by storing the original version of your objects in Amazon S3, making sure they are publicly readable. Then, you’ll make a simple API call to register your bucket with the new content delivery service. This API call will return a new domain name for you to include in your web pages or application. When clients request an object using this domain name, they will be automatically routed to the nearest edge location for high performance delivery of your content. It’s that simple.

We’re currently working with a small group of private beta customers, and expect to have this service widely available before the end of the year. If you’d like to be notified when we launch, please let us know by clicking here.

Sincerely,

The Amazon Web Services Team

Google AppEngine’s Smart Quota Doesn’t Match Reality

I love App Engine - I think it’s the best thing since sliced servers (bad joke)!  But one thing they got wrong is their “smart” quota management.  This has been something that has irked me ever since I heard a google rep talk about it at the Seattle App Engine Hack-a-Thon.

Here’s how it works according to the representative:  You have about 1 million free pageviews per month, but it’s not a simple you-have-exceeded-your-monthly-limit quota.  The app engine team has developed a way to evenly spread out your quota over the full month, so it is possible that you receive a generic “this account has exceeded its limit” page at the beginning middle or end of the cycle.  See anything wrong with that?

From what I’ve seen, most of the web properties that are looking for traffic do it in a very specific pattern that invovles two phases iterated many times.

Phase 1 - get a huge spike in traffic somehow.  Get on Digg’s homepage,  get a mention on Techcrunch, etc etc. You now have an unusually large number of visitors over a short period of time.

Phase 2 - a small percentage of those visitors will stick around and become loyal or engaged visitors.  This is the traffic you care about!

Here’s a snapshot of this site’s traffic after getting linked to by a popular internet pundit last month.  You can see the two phases very clearly.

One of the primary benefits of hosting in the cloud is that they are built to handle this type traffic profile - large random spikes!  Google’s App Engine is so promising as a platform because you can leverage their infrastructure to handle a lot of traffic.   But, very few sites have high, steady traffic - it’s mostly spikes like this.

But, with google’s “smart” quota - you have all the limitations of a single physical server!  When their quota system detects you’ve gone over your micro quota for the day, or the hour, or however they track it, then your site is officially taken down and a generic quota screen is shown.  Ouch!  Now that bump in steady traffic doesn’t quite stay as high as you’d like because many of those visitors that would stick around never get to see your content.

This very well may change when Google announces it’s pricing and other features, but for now this is a non-starter for sites that are looking to take advantage of google’s infrastructure to handle a lot of traffic.

The Answer To Gaming Piracy Was Perfected Over a Decade Ago

The Spore DRM debacle is still making press with the latest story coming from TechCrunch.  One phrase that really rang true to me was Erick’s argument that the legitimate version of a game should never be more hobbled than a pirated version - so true!

There is a lesson here for all media companies. Whether they are producing videogames, movies, or music, adding DRM won’t stop piracy. The best way to stop piracy is to hobble the pirated version, not the official one.

Easier said than done, right?  No, not really - this concept was pioneered and perfected over a decade ago by none other than Blizzard Entertainment with the release of Diablo 1 and battle.net (bnet).  If you’re not familiar with bnet, it was a network integrated into Diablo that managed all of it’s multiplayer interactions (minus LAN).  It opened up a whole new, exponentially more valuable gaming experience because it was the first mainstream game that made the social interactions that we all take for granted in gaming today easily accessible!  The game was ‘complete’ without battle net, but the entire experience wasn’t.

How did they combat piracy?  A valid CD key was required to get on - that’s it - no crazy DRM scheme, no limiting installs, none of the stuff Spore is getting a lot of flak for.  And people bought the game like crazy because no self-respecting gamer played Diablo alone!  (I mean alone in the macro sense, i.e. in the context of bnet).

So, am I saying that every game developed today should have a valuable online component?  That solo gaming is a thing of the past and developers should be expected to provide multiplayer experiences with everything they develop?  Yes!  If the game industry wants to prevent piracy, then yes, the internet is the answer.  Ironically, the internet is also the reason piracy has become so prominent.

Installing Aptana Jaxer 1.0 RCB On Ubuntu Hardy 8.04

(I go through this process once a week and forget how I did it every damn time, so this is my reminder.  I published it in case anyone out there is trying to do the same thing.)

This is a pretty specific setup, but works really well for playing around:

  • Running Ubuntu Hardy 8.04 on EC2 (alestic makes the defacto instance - ami-c0fa1ea9)
  • The latest and greatest Jaxer release candidate (http://aptana.com/jaxer/download)
  • Using the built-in apache in jaxer
  • port 80, publicly accessible

Step 1 - get your instance up and running.  I recommend ElasticFox.  Instance ID I use most often is ami-c0fa1ea9.  (As a quick aside - why don’t I just repackage the instance? Because I want to use the latest and greatest Jaxer and it changes fairly frequently. When Jaxer 1.0 comes out, I’ll repackage the instance if Aptana doesn’t do it themselves.)  Instructions on how to get an AMI up and running are a dime a dozen so I won’t go into them here.

Step 2 - grab a few necessary libs that don’t come with the alestic hardy.

  1. $ sudo apt-get install unzip libgtk2.0-0 libxt

Step 3 - grab the latest jaxer zip from http://aptana.com/jaxer/download

  1. $ wget http://… [latest jaxer].zip
  2. $ unzip -d /opt [latest jaxer].zip

Then follow the instructions Aptana provides for making jaxer publicly accessble.  If you want to run apache safely, I recommend creating its own user:

  1. $ groupadd apache
  2. $ useradd -c "Apache Server" -d /dev/null -g apache -s /bin/false apache

Make sure to set your User and Group to apache in /opt/AptanaJaxer/Apache22/conf/httpd.conf.

Voila! That should do it. Start jaxer with:

  1. $ cd /opt/AptanaJaxer/scripts
  2. $ ./start.sh

Access your site through http://[public DNS instance name]/aptana and run the diagnostics.

Avacado Burgers with Homemade Potato Chips

Good vs Evil at TechCrunch50

TechCrunch 50 is over and congrats to the winner - Yammer.

There were two presenters that stuck out to me, one positively and negatively, and they just happened to be gaming related (or they stuck out because they were gaming related).

Atmosphir

From TechCrunch:

Atmosphir is a gaming platform and engine that allows users to easily create their own levels in a 3D world by painting basic elements into a three dimensional grid.

As far as gameplay goes, Atmosphir seems to be very straightfoward, much like a standard “Mario Brothers” game. The player’s avatar can run and jump around each level, which allows for jumping puzzles and the stomping on bad guys, but that’s about it.

Interesting and I love it.  The recent success and all around awesomeness of Braid proves that there is still a lot more fun to be had with simple platforming games.  By exposing an abrstraction layer on top of the building blocks of a platformer, I think Atmosphir will spawn a strong nostalgic movement back towards short, fun, pick-me-up-for-15-minutes games.

Increasingly, I find that I’m too busy to play the AAA titles while I sat down and ran through Braid in the span of a couple hours - I look forward to seeing what comes out of it.  Heck, I may try to see if I can get in the limited beta and mess around with the tools!

Shattered Reality

From TechCrunch:

Shattered Reality has released Kaos War, a multi-player game with absolute transparency and social network design functionality which allows the players - not a bunch of overpaid and overfed game designers - create future expansion packs and levels based on player requests.

Although it’s in the same vein as Atmosphir - I just don’t like the vibe I’m getting from this snippet.  Don’t know if that’s John Bigg’s fault or if he’s paroting the pitch the Shattered Reality guys gave.

Why do we want to remove the professionals from the profession?  I know it sounds hypocritical because I just lauded Atmosphir for doing basically the same thing, but these are two separate buckets in my mind.  

There are typically no “overpaid and overfed game designers” (horrible line - what the hell?) in the realm of short pop-cap games like the ones Atmosphir create - it’s mainly passionate independent <5 person studios.  So they are bring accessibility to the genre in my opinion.  Shattered Reality doesn’t seem to care about bring accessibility to anything.  They seem hell bent on bringing cookie cutter, cheap, and ‘user generated’ content to the AAA game market.  Do we really need that when the 1,789,327th installment of the Madden franchise just came out?

I won’t go any further, because I run the risk of getting into the politics of cheap labor - and I vow to never get into politics.

Anyways, I always enjoy the TechCrunch Conference.  Much more so than anything that comes out of Demo.  Looking forward to next year!

Ok, Apple Not Stupid - They Have Just Turned Into “The Man”

Wow, I got a lot of feedback yesterday.  Protip: don’t call Apple stupid in the title of your blog post if you want Apple fans to read the content of your post!  I got some really thoughtful comments which I’ll go over here, but I got a lot more email that, if there were Cliff’s Notes, would read something like, “no your [sic] stupid.”

bud says:

I’m sure apples boilerplate rejection has nothing to do with the apps rejection.

It is pretty obvious why they would reject it; to prevent hooks from websites into the iphone; potentially malicious hooks.

Isn’t this obvious? If it is not obvious, you are disingenuous.

Yes, I agree - most likely Apple is not ignorant of the implications of Big5 and phonegap projects!  There is a small chance that the review team at Apple just didn’t “get it”, but most likely they did get it and decided to keep it under wraps.

Why? Peter agrees with bud that there are security concerns:

As has been pointed out, this is rejected because it allows an external application to access information about the iPhone. That said, he’s right that someone at Apple should have explained that rather than using the “limited utility” explanation.

To wander a little bit afield, though, I worry about this “limited utility to the broad iPhone/iPod touch user community” sentence.

One of the reasons for third-party developers is to address these areas that are of limited utility to some but valuable to others. For example, medical dictionaries are not of interest to “the broad iPhone/iPod touch community”, though there are some who will find these invaluable. So is Apple now going to try to determine whether there really is a market for your application and decide whether or not enough people would be interested in it?

He brings up a good point about the implications of Apple deciding what is considered ‘useful’ to the general public.  2 years ago if you had asked me if Twitter was useful to the general public, I would have laughed in your face.  Now, I read the RSS feeds of a bunch of different people on it and I consider it one of the best ways to access people’s raw, unfiltered thoughts.

Imagine if Apple owned the internet platform and just didn’t see the usefulness of this app…

But, as I said - Apple isn’t stupid (in the ignorant way), they are just turning into “The Man.”  My partner in crime got so riled up he went so far as to suggest Apple is the new Microsoft.  Personally, I would rather have the new innovative Big5 browser and then patch the security risks later, rather than shutter it out of fear.

As much as I hate to use Internet Explorer as an example of anything but a steaming pile of sumo wrestler dump on a burning tire, imagine if the 90+% of the people in the 90’s hadn’t been exposed to it because it might have security risks?  We know now that it was chock full of nice juicy security risks, but I would say the exposure to the internet and booming of the industry that pays my bills is a far greater consequence!

Next,

Passion Projects