Thursday, June 24, 2010

How App Engine served the Humble Indie Bundle

How App Engine served the Humble Indie Bundle: "

This is a guest post from Jeffrey Rosen, of Wolfire Games.



Recently, Wolfire Games, joined by four other independent video game developers and two charities, put on a pretty unusual promotion: The Humble Indie Bundle. For twelve days, you could have gone to the promotional site and paid what you want (divided any way you choose among the developers, the EFF, and the Child's Play Charity) for a bundle of independent video games, all compatible with Mac, Windows, and Linux.



The reason why I've been invited to write this guest blog post is because the site was built on Google App Engine and, according to Google Analytics, it served about 3.4 million pageviews (1 million unique visitors) in the 12 days it was live. It grossed over $1.2 million. Depending on who you ask, this is quite a lot of traffic, and we exceeded the free App Engine quota. Google sent us a bill for a grand total of $71.56.



I've been a long time advocate of Google App Engine on the Wolfire Blog, even when traffic was tiny, for a number of reasons. I really like its ease of use, and the fact that Google engineers, including Guido himself (the creator of Python), are the ones making sure everything works at 4 AM, and Google's infrastructure is responsible for data durability and security. The pay-as-you-go price combined with a generous free quota is icing.



As an independent video game developer, it's pretty crazy to have these resources at my disposal. While I'm confident in my Python web coding ability, I am definitely not confident in being a Linux sys-admin and commiting to an expensive server that may or may not handle the load properly (especially scary when critical data is involved). This upfront risk and steep learning curve would probably have been the straw that broke the camels back and turned the bundle into vaporware.



How did App Engine perform?



According to Google Analytics we did about 3.4 million pageviews (1 million unique visitors) during the bundle period on the Wolfire site (heavily concentrated around the first and last days). The traffic came in huge surges from Reddit, Slashdot, Digg, and a plethora of gaming and tech sites, and people seemed to really enjoy pushing the server by refreshing the page to update the real-time statistics. App Engine performed as advertised: additional servers were seamlessly brought up as needed and shut down when appropriate.



One thing that was really neat about the bundle is that it had a bunch of real-time statistics about purchases along with a leaderboard of the top contributions. There were many interesting donations, for example, $3333.33, $1337, $327.67, and $313.37 and watching the average donation go up and down was really addictive. I think being able to refresh the page to see the sales coming in was a really big draw for the bundle. This feature was really easy to implement on App Engine using a sharding counter. I'm really looking forward to native comet support in App Engine so the next bundle can have this update completely live, without polling or refreshing. Memcache and the datastore is built for stuff like this, so it was very fast.



How was developing on App Engine?



One awesome thing about App Engine is how it handles the deployment for you transparently and seamlessly. I felt comfortable developing, testing, and ultimately deploying new features to the site, even while it was serving say, 100 visitors per second. App Engine handles all the details of seamlessly bringing down the servers and getting the new ones in place even under intense loads. Because of this, I was able to hack on new features to the site as necessary. For example, I expanded the statistics so that you could see the platform specific average payments in real-time. That feature was started, tested, and deployed on maybe the third day of the bundle. Similarly, I spontaneously added an unplanned sixth game (Samorost 2) to the bundle on the fifth day and deployed minor tweaks dozens of times throughout the promo.



One thing that the bundle made clear to me is that raw Python code is much faster than you might expect. After I finished building the prototype of the bundle, I was getting ready to heavily optimize everything: each hit to the Humble Bundle page executed a few hundred lines of my Python code, doing all sorts of calculations for the statistics and inserting that into a massive Django template. Initially I thought that there would be no way this would be scalable and I'd need to aggressively cache the whole page. However, when I looked at the estimated CPU usage (tip: if you look at the request headers of a page while logged in as an admin, App Engine gives you some estimates on how much it will charge you for 1000 requests and how long it will take) it was something like 0.00375 CPM and was executing in milliseconds. Despite what I had assumed to be inefficient, unoptimized code, the CPM was so ridiculously low and it was executing so fast, I decided not to even bother optimizing the backend further. The only thing that was taking any time at all were the few memcache calls to retrieve the real-time list of tweets, real-time raw sales data, and other interesting stats. In hindsight though, I could have easily shaved off 30 ms by combining all the memcache requests into a single RPC with memcache.get_multi.



Was there anything App Engine could improve?



While I am really satisfied with App Engine and credit its existence and my familiarity with it for the existence of the Humble Indie Bundle in the first place, there were a few gotchas:



Due to a scheduled maintenance period on the datastore, the bundle was down for about 20 minutes (we need to store metadata about people's orders before we forward them to PayPal, Amazon Payments, or Google Checkout). Normally a message pops up to inform people when downtime occurs is going on, but this didn't activate for some reason, so we had to handle a lot of email about a blank page when people were trying to place their orders. I understand that Google is addressing this though.



The features that I would like to ask for are mostly all 'on deck' on the roadmap: SSL for custom domains, comet support, and longer background tasks in particular. I'd also like to see App Engine focus on utilizing Google's infrastructure by serving non-static requests geographically like 'web acceleration' services from CDNs. There are some trade-offs due to the nature of the datastore, but I think it can be done.



Thanks for having me on the blog! People can find me on the Wolfire Blog where we talk about more technical and game design topics, and check out our upcoming game Overgrowth.




Posted by Jeffrey Rosen of Wolfire Games
"

Thursday, June 10, 2010

Datastore Outage and Unapplied Writes Issue

Datastore Outage and Unapplied Writes Issue: "

We have completed the post-mortem on the Datastore outage App Engine experienced two weeks ago on May 25th. We greatly appreciate your patience in this.



A very small percentage of apps (approximately 2%) have been affected by unapplied writes as a result of the outage. “Unapplied writes” are writes that did not get replicated to the secondary Datastore before completing the fail over process. We want to stress that these unapplied writes do not impact the transactional consistency and have not corrupted application data. Instead you can think of them as causing the mirror image between the primary and secondary datastore to be out of sync.



We have emailed administrators of all affected applications to let them know that they should take action. If you do not receive an email, there is no action for you to take. If your application does have unapplied writes, all of the data has been recovered and reinserted into your application’s Datastore as separately labeled entities. We have developed new tools in the Datastore to re-integrate unapplied writes and we have also provided a support email address appengine-unapplied-writes@google.com to help you work one-on-one with the App Engine team as well. For more information on unapplied writes, please see the Unapplied Writes FAQ.



Although this is unrelated to the ongoing Datastore latency issues, we continue to work diligently on a solution for those as well. We expect to have an update early next week on our progress which will be posted on this blog, so please stay tuned.



Posted by the App Engine Team
"

Monday, June 7, 2010

Evolution

Evolution: "We don't torture.

Enhanced interrogation is not torture.

A few bad apples tortured.

Expert interrogators tortured.

The president ordered torture and he'd do it again.

"

Guessing cops allowed to give speeding tickets in Ohio

Guessing cops allowed to give speeding tickets in Ohio: "

Filed under: ,





Bad news, Buckeyes. The Ohio Supreme Court just ruled that a police officer needs nothing more than his or her informed guess on how fast a vehicle is traveling in order to issue a traffic citation. Yep. You can forget the radar gun, LIDAR or even the archaic pacing method. As of right now, officers can merely say that you're exceeding the posted speed limit and you'll be stuck with points on your license and a hefty fine to deal with. If that sounds more crooked than a Jersey car salesman, it gets better.



Turns out, officers have to go through very little training in order to properly gauge a vehicle's speed by eye. According to The Plain Dealer, visual assessment is only a portion of the five-hour course on traffic enforcement. Instructors bring recruits to various traffic situations and have them guess speeds. The instructor then checks the guesses against what the radar gun says and calculates the difference.



So let that be a fair warning to natives and passer-bys alike. Leave the cruise control on and don't bother trying to argue if you should happen to get cozy with one of Ohio's finest. It's their word against yours.



[Source: The Plain Dealer | Source Image: Noel Hendrickson, Getty]

Guessing cops allowed to give speeding tickets in Ohio originally appeared on Autoblog on Thu, 03 Jun 2010 12:59:00 EST. Please see our terms for use of feeds.

Permalink | Email this | Comments"

Top Gear Back June 27th

Top Gear Back June 27th: "

From the latest Top Gear magazine:



I’ve started the countdown at the top of the site with the assumption that it will air at it’s usual 8PM time slot.


Thanks to jonsailo and others for the tip!


Top Gear Back June 27th originally appeared on FinalGear.com on Mon, 7 June 2010 at 02:04 GMT.



"

Facts Of Life

Facts Of Life: "

photobomb that guy Facts Of Life



Submitted by: dunno source via Submit a Photobomb











Arts - Television - Comedy - Facebook - Physics

"

Was Barack Obama In the 1993 Music Video For 'Whoomp (There It Is)'? [Conspiracies]

Was Barack Obama In the 1993 Music Video For 'Whoomp (There It Is)'? [Conspiracies]: "
Finally, a Barack Obama conspiracy theory for the rest of us! Everyone from Tea Partiers to hip hop message boards thinks Obama was an extra in the music video for Tag Team's single 'Whoomp (There It Is)'. More »



"

Update on Meridian Pint coming to 11th and Park Road, NW (Brace Yourself – Table Taps!!!)

Update on Meridian Pint coming to 11th and Park Road, NW (Brace Yourself – Table Taps!!!): "


If you were excited about the sneak peek from three weeks ago these photos could very well blow your mind (I know my jaw hit the floor on multiple occasions). First let me say that (as others have noted) the new opening date for Meridian Pint is looking like it’ll be June 17th give or take a few days.


But back to the table taps. Holy freaking cow these things are awesome. I believe these are the first table taps in any bar/restaurant in DC. So they are located in the lower level in the Joint Chiefs section. There are currently two tables set up with table taps (with a possibility of adding a third). There are two taps per table and the patrons simply swipe their card and have at it. As this bar celebrates American Craft Beers (more on that in a second) you’re not likely to find Schlitz on these table taps (no disrespect to Schlitz). They are unbelievable cool:






Meridian Pint Owner John Andrade shows the table taps to Sam Adams Founder Jim Koch (wearing sport coat)




Tap monitor




Meridian Pint Owner John Andrade show table tap to Dogfish Brewery Founder Sam Calagione (right)


Lots more photos of the space and more on American Craft Brew masters visit after the jump.




Completed mural on the first floor.




First floor restaurant space




Table first floor restaurant space




Booths and tables first floor restaurant space




Table taps lower level




Bar lower level




A couple of pool tables going in lower level


So how did it come to be that that founders of Sam Adams and Dogfish Brewery wound up checking out Meridian Pint? Well the Savor convention was going on in DC and various American Craft Beer Masters were in town.




Photo by PoPville flickr user sciascia


They heard about Meridian Pint’s concept through their reps and took the opportunity to check it out in person. I can tell you since I was there, they were just as impressed with the table taps as I was. They were also very complimentary to the space in general. The photos above don’t even really do justice to how great the space looks.




Meridian Pint team with Sam Adams Founder Jim Koch




Dogfish brewery founder Sam Calagione takes a photo of the table taps for himself




Meridian Pint team listens to Dogfish brewery founder Sam Calagione (Meridian Pint’s Beer Director, Sam Fitz in red shirt)


"

Миротворцы

Миротворцы: ""