Blog

Go Back
  • Question Follow up from Chicago Code Camp

    One of the questions I had at the Chicago Code Camp in my Google App Engine presentation was about permissions on deleting values from table storage. In GAE, each item in the datastore has a globally unique key—absolutely unique across all entities in your application and, I believe, unique across all objects. The question was this: if I figure out an ID of your objects, can I cause a delete from a second GAE application? Fortunately, no. At the time of this writing, I have an object (a picture) whose ID is ahJzc2VlbHktc2lsdmVybGlnaHRyDwsSCUltYWdlRmlsZRgCDA. I tried deleting that exact ID from a different application. The delete failed. So, the delete would only work if it comes from the application in question. That’s what I hoped happened, and it does. Thanks for the great question!

    Comments0

    Full story

  • Google App Engine Updates SDK

    In case you missed it, GAE updated their Java SDK to version 1.2.1. Responses can now be up to 10 MB in size. A full list of changes can be found here.

    Comments0

    Full story

  • Silverlight/AppEngine InformIT Article in the Works

    One of the most popular posts on my blog is Hosting Silverlight on Google App Engine from back in March. With my .NET REST book officially hitting shelves last week, InformIT contacted me to write an article (or more!) to help promote the book and me. I suggested expanding the information to show how a Silverlight application could use App Engine as a platform and they said “sure”. Turnaround on the article will be tight—I owe it to them by May 8. I’ll announce when the article goes live. But for those of you waiting for the follow up, it’s coming! I’m writing the Silverlight side in C# to make sure it’s accessible to everyone. The AppEngine part is in Python. I appreciate all the visitors I’ve been getting and the positive feedback. You are awesome!

    Comments0

    Full story

  • Thinking about Costs of Cloud Worker models

    This post is just a dump of a set of thoughts that have been running around in my brain. All three major cloud platforms, Google App Engine, Amazon Web Services and Microsoft Azure, offer a way to run worker tasks. Google recently introduced cron jobs. Amazon has Elastic Compute Cloud. Azure has the worker role. Each of these mechanisms works in a similar manner: a process looks somewhere for work to do (in the distributed data base, a work queue, or elsewhere) and then performs the task. I don’t have any issues here—this all makes sense. You need a headless process to take input and produce output. This is a staple of most systems I have worked on. I have another issue—how much is this going to cost me? While many people are busy climbing the Gartner hype cycle and are close to the “Peak ...

    Comments0

    Full story

  • I’m Presenting at Chicago Cloud Computing User Group

    I received some great feedback on my survey of cloud computing platforms at the February Cloud Computing User Group in Downers Grove, so I’ve been asked to bring the show to the downtown Chicago meeting for the April meeting on Thursday, April 9 at 5:30 at Microsoft’s downtown location. If you saw the talk last month, I’ve been asked to beef it up with real world code running on all three major platforms: Google App Engine, Amazon Web Services, and Azure. It’s a simple photo sharing application based on the same code I showed in February for App Engine. Please sign up at https://www.clicktoattend.com/invitation.aspx?code=136727. The full meeting description: Join us for the fourth local meeting of the Cloud Computing User Group - this months being held at the Microsoft offices in Downtown Chicago. Note : this meeting will be a revisit and slight revamp of last month's content. As ...

    Comments1

    Full story

  • Flying Above the Clouds

    I originally presented this talk to the Azure Cloud Computing User Group on February 25, 2009. Thanks to Bryce Calhoun for inviting me to present! The original meeting announcement had this summary: Scott Seely, Architect at MySpace, will kick off the meeting with a 20-30 minute overview of the top three cloud computing offerings available today: Google App Engine, Amazon EC3 and Azure Services. His discussion will be primarily focused on a compare/contrast of the functionality and features inherent to each platform. Enjoy!

    Comments0

    Full story

  • Hosting Silverlight on Google App Engine

    Recently, I needed a place to store a compiled Silverlight assembly in a highly available environment. Ideally, the location needed to be free or on some web site that I owned. Since I've been getting comfortable with App Engine lately, I figured I would try setting up app-engine to host my file. The one thing that you need to do when return a Silverlight XAP file is make sure that it comes back with the MIME type set to application/x-silverlight-app. It turns out that this is pretty simple. I just added this to my app.yaml file:   handlers: - url: /SilverlightApp.xap   static_files: SilverlightApp.xap   upload: SilverlightApp.xap   mime_type: application/x-silverlight-app   With this, I have App Engine reliably serving up my page with Silverlight embedded.

    Comments5

    Full story

  • Speaking at Chicago Area Cloud Computing User Group (Feb 25, 2009)

    I'll be speaking Wednesday night at the Cloud Computing User Group in Downers Grove, IL. I have a short presentation on the main computing platforms. If you are a regular reader, you know that I've been spending some time going beneath the surface on major platforms. If folks like the high level overview, I'll do some more in depth talks in the future. Here are the details and the announcement that Bryce Calhoun sent out: Join us for the third local meeting of the Cloud Computing User Group – this month in Downers Grove. At this meeting, we will be learning about how Live ID integration works in the Azure cloud computing platform. We’ll demo and dig into the code of an application built in the cloud that integrates directly with the Live ID service and stores information specific to the individual associated with that ID. Also, Scott Seely, Architect ...

    Comments0

    Full story

  • Day 5: Saving Information in App Engine

    When you think about data storage with respect to App Engine, it is better to think of this as a mechanism to persist object data than to think about rows and columns that one worries about in a traditional relational database management system (RDBMS). Instead of defining tables, the developer defines Python objects. A persistable object inherits from one of the following types from the google.appengine.ext.db module: Model: A data model whose properties are all defined within the class definition. Expando: A data model whose properties are determinted dynamically. PolyModel: Allows for models that use inheritance. Each value in the data class must be an instance of a property type. There are strings, numeric, dates, boolean, blogs, lists, postal address, geographic points, and other values. You can see the complete list in the App Engine docs. All objects in the models have a unique key property, ...

    Comments0

    Full story

  • Day 4: Implementing Authentication

    When writing an application, it is always handy when your platform of choice offers some sort of plug and play authentication mechanism. For example, ASP.NET has authentication providers that allow users to authenticate against Windows accounts or against username/password combinations in a data store. For Internet based applications, there has been a large push to separate authentication from authorization. The reason for this is simple: users want to use a large number of applications and need to be authenticated for each application. Each of these applications has a choice to make: use a custom username/password that only it knows about or trust a third party to provide an identity. Many web sites choose to implement their own username/password list. Over time, this simply means that people tend to use the same username/password combination on all sites that they access. The downside here is that if one site is compromised, the ...

    Comments0

    Full story

  • Day 3: Responding to Requests in App Engine

    When a request comes into a web server, that request has to be either processed or rejected. The request may be for static or dynamic content. So long as the web server can find something to respond to the request, the server will try. Otherwise, it will inform the caller that the resource cannot be found. Google App Engine supports both static and dynamic content. Our app.yaml file tells the server how to respond to different request types. Handling Static Content in App Engine When creating a web site, the site typically contains a fair number of static resources. These resources include cascading style sheets (CSS), JavaScript files (JS), images, static HTML, and so on. Most developers will structure their projects so that the folders are structured something like this /Project     /pages     /scripts     /theme     /images where pages contains static (or templatized) HTML, scripts contains JavaScript, ...

    Comments0

    Full story

  • Google App Engine, Day 2. Deploy HelloWorld

    At the end of Google App Engine, Day 1, we got the environment setup. We verified the environment with a very simple application, Hello World. Before moving forward and building the photo sharing application, I want to make sure that I understand how to deploy an application. Given the simplicity of the application, this should be easy. The documentation says that I should run appcfg.py update [application directory] and things should just work. My code looks exactly like this. HelloWorld.py (note the capitalization of this filename--it's important) contains: print 'Content-Type: text/plain' print '' print 'Hello, world!' app.yaml application: sseely-gae version: 1 runtime: python api_version: 1 handlers: - url: /.*   script: helloworld.py After running appcfg.py update, I navigated to http://sseely-gae.appspot.com and saw an HTTP Status Code 500 error. Blech! I did find that GAE has a basic set of diagnostic tools. To find them, go to http://appengine.google.com/ and sign ...

    Comments0

    Full story

  • Google App Engine, Day 1. Prepare the Development Environment

    I'm recording this as I setup my development environment to just write an App Engine application. I'm going to skip the step of acquiring a Google account. I got my Google account about 3 years ago. If you have a GMail or AdSense account, you have authentication credentials. If not, they are easy enough to get. Here is a step by step transcript of setting things up. Wish me luck! Go to http://code.google.com/appengine/. Look for the button that says Try it now. (Linked here if you want to skip a step.) Click on the button that says Create an Application. If you've never done this before, you'll see a screen that asks you to Verify Your Account by SMS. Pick your country, your cell phone carrier, and your mobile number. Do NOT forget to fill in your cell phone carrier. Failure to do so means that ...

    Comments1

    Full story

  • Let's Build on a Cloud: a Proposed Experiment

    At this point, I think I have a good idea about what GAE, AWS, and Azure offer in terms of potential. To force myself to learn things faster, I think that it's time to go out and build an application. For the sake of making apples to apples comparisons, I need an application that is fairly simple and allows me to exercise cloud storage as well as application hosting. I also want something that is super simple and that involves something I have already built. For my book, Effective REST Services via .NET, I put together an application that allowed a user to create and manage a photo album. I think it's appropriate to reuse that concept. For one thing, I already have the application coded, so I will be able to reuse a lot of ideas and code. The other thing that I like about this idea is ...

    Comments0

    Full story

  • Looking at the Cloud Platform Features

    I have found a need to do some research across the various cloud offerings so that I get good feel for what each has to offer. At this point in my investigations, I am focusing on only three platforms: Amazon Web Services, Microsoft Azure, and Google App Engine. The three have common sets of features: storage through an API, compute resources, and ability to respond to demand by scaling application instances. The storage APIs encourage scalable patterns over patterns that could cause data contention. Amazon requires that the application handle scale up and down on its own. Azure and App Engine scale for the user through a combination of configuration and observed demand. These services also offer authentication services as well as the ability to create your own authentication. App Engine integrates with Google logins, Azure works with Windows Live, and Amazon through security mechanisms in the Amazon Machine Instances. ...

    Comments0

    Full story