Comparing Windows Azure and Google App Engine – Kevin Marshall

 

Here are some reasons to use Google App Engine (GAE) and advantages of the platform compared to Azure

  • Want to write code in Java, Python/Django or any language that runs on the JVM
  • Need integrated mail functionality
    • Azure requires your own SMTP server outside of the cloud environment
  • Need integrated XMPP messaging
    • Again, Azure would need an external server.
  • Need scheduled processing jobs
    • You can be creative and write something with queues and/or worker roles or perhaps a service running elsewhere to ping your web server on a schedule to run a job.
  • Need distributed caching via memcahe
    • There has been some talk of adding Velocity to Azure which would be comparable to memcache. Otherwise, if you only have one web instance you can use ASP.NET caching. If you have multiple web instances, then you need a way to invalidate the other server’s cache. Inter-role communication is coming soon which would make this possible. In the mean time you could use .NET service bus to communicate between web role instances (in theory it seems like this would work)
  • Want mostly free hosting for small applications – GAE has a free quota
    • Azure is free up to a limit in the CTP, but once live nothing is free. I’d really like to see Microsoft keep some free version for developers to experiment with or include CTP-like free quotas to BizSpark members. Developers like to tinker and release small apps. If App Engine is free, they are going to chose that and will probably be less likely to chose Azure once comfortable with GAE. It seems like a good approach to provide some level of free support until an app becomes large enough where a developer can afford to pay (or it’s too costly to provide them free service)
  • GAE has a ridiculously fast deployment time. One click in GAE launcher or a console command and the application deploys in less than a minute
    • Azure deployment is just brutally slow. Make a sandwich, grab a good book – it’s going to be awhile. This is especially an issue when you consider the next bullet point. Every time you deploy to Azure it’s provisioning a new virtual machine unlike GAE which is just copying files. I’m sure there are good reasons why this needs to be done, but I really wish it had some quick deploy / file copy option. There is nothing more gut wrenching then waiting 30 mins to finish deploying and you forgot to to change one line of code. Now you are stuck waiting another 30-45 mins to delete the current instance and redeploy.
  • and much much more…

Building Cloud Applications: Windows Azure vs. Google App Engine – Kevin Marshall’s Epic Work Blog for Awesome People

Using OAuth with the Google Data APIs

 image

Contents

  1. Introduction
    1. Audience
  2. A little terminology
  3. Getting started
    1. Registration
    2. Signing Requests
  4. OAuth Playground Tool
    1. Choose your token Scopes(s)
    2. Modify OAuth Parameters and Settings
    3. Acquire the access token
    4. Using the access token
  5. Conclusion
  6. Resources

Introduction

Recently, all of the Google Data APIs adopted support for OAuth, an open protocol that aims to standardize the way desktop and web applications access a user’s private data. OAuth provides a means of performing API authentication in a standard and secure fashion. If you’re starting out, or just curious about OAuth, look no further. This article will give you a basic foundation of the concepts. I’ll also discuss the details of Google’s OAuth implementation. This document is also meant for developers that are familiar with using AuthSub, especially in registered with enhanced security mode. As we go along, I’ll try to highlight the similarities and differences between the two protocols.

Some users have suggested that OAuth has a high learning curve. Compared to Google’s other authentication APIs, I would agree. The advantage of OAuth will be apparent when you expand your app to use other (non-Google) services. Writing a single piece of authentication code that works across different service providers, and their APIs, sounds pretty good to me. You’ll thank yourself later on for learning the protocol now.

The OAuth Playground is a tool that I created to help developers cure their OAuth woes. You can use the Playground to help debug problems, check your own implementation, or experiment with the Google Data APIs.

Via Using OAuth with the Google Data APIs – Google Data APIs – Google Code

Also see the Google Authentication API – OAuth Authentication for Web Applications

Contents
  1. The Authentication Process
    1. Tokens and Token Management
  2. The OAuth Endpoints
    1. OAuthGetRequestToken
    2. OAuthAuthorizeToken
    3. OAuthGetAccessToken
    4. Revoking an OAuth Access Token
  3. Working With OAuth
    1. Setting Up OAuth Authentication
    2. Signing Requests
    3. Migrating from AuthSub to OAuth

Turn Google App Engine into your own Personal Content Delivery Network (CDN)

 

But thanks to Google anyone can now run their own CDN for free on Googles servers. Lucky for you and me Google has made the process really painless and you can even have the CDN under you own domain name.

How do I setup my own CDN using Google App Engine?

Setup

Publish To Your CDN

Using Your Own Domain (Optional)

 

Turn Google App Engine into your own Personal Content Delivery Network (CDN) – Nick Berardi’s Coder Journal

Calling Google AJAX Language API in C# .NET

 image

Calling AJAX Language API from Non-Javascript environments, the API exposes a simple RESTful interface. In all cases, the method supported is GET and the response format is a JSON encoded result with embedded status codes. Details here.

Example in javascript. 

google.language.translate(“Hello world”, “”, “it”, function(result) {
if (!result.error) {
var container = document.getElementById(“translation”);
    container.innerHTML = result.translation;
}
});

And now the same code in C#:

WebRequest request = WebRequest.Create(“http://ajax.googleapis.com/ajax/services/language/translate?v=1.0&q=hello%20world&langpair=%7Cit”);

// This command performs a Language Translation(/ajax/services/language/translate), for Hello World (q=hello%20world)

// from English to Italian (langpair=en%7Cit).  i.e. en|it  . Or you can leave the source language blank if you want auto-detection & translation.

WebResponse response = request.GetResponse();
StreamReader reader = new StreamReader(response.GetResponseStream());
string json = reader.ReadLine();

JsonObject account;
JsonObject responseData;
JsonString responseDetails;
JsonNumber responseStatus;

using (JsonParser parser = new JsonParser(new StringReader(json), true))
    account = parser.ParseObject();

//responseDetails = (JsonString)account["responseDetails"];
responseStatus = (JsonNumber)account["responseStatus"];
responseData = (JsonObject)account["responseData"];

Console.WriteLine(“responseStatus: {0}”, responseStatus.Value);
Console.WriteLine(“translatedText: {0}”, responseData["translatedText"]);
Console.WriteLine(“detectedSourceLanguage: {0}”, responseData["detectedSourceLanguage"]);

// You can get the JSON .NET 2.0 parser I use from here.

// Or if you have .NET 3.5 you can use DataContractJsonSerializer to serializes objects to the JavaScript Object Notation (JSON) and deserializes JSON data to objects.

 

Developer’s Guide – Google AJAX Language API – Google Code

Google AJAX Feed API

Sprinkle the Web on your Application: Demo starts at 0:45:10 -0:54:00

What is the Google AJAX Feed API?

With the AJAX Feed API, you can download any public Atom or RSS feed using only JavaScript, so you can easily mash up feeds with your content and other APIs like the Google Maps API.

The Google AJAX Feed API takes the pain out of developing mashups in JavaScript because you can now mash up feeds using only a few lines of JavaScript, rather than dealing with complex server-side proxies. Making it easy to quickly integrate feeds on your website, as shown below.