First off, most of what attracted me (Andy) to this session was the presenter. Guido is the creator of the Python programming language. Currently he works at Google, and actually refers to himself as the benevolent dictator of the Python community. Even though I don't really have much experience at all with Python, I was excited to here a presentation from such a prevalent language's creator.
Regarding App Engine in general, I really have to question Google's decision that their entry into the cloud computing world would only address web applications. With all that nasty computing power, they're only going to let developers deploy web applications on it? Why not allow raw data processing? I think this is a major drawback from their offerring in comparison to Amazon's Web Service engine. While a little more complex (and requires a credit card to start), I see much more promise in Amazon's offerring. Either way, I'll go with it that Google only intends to address the developers who need to get their application of the ground quickly, and don't want to shell out any dough or effort in obtaining another deployment environment.
Moving on to App Engine, your code (and the system itself) will only ever handle HTTP requests, nothing more or less. When you deploy your code in the cloud at Google's data centers, the App Engine framework will automatically scale the resources. As a developer, you'll never need to worry about any of the infrastructure. As the use of your application grows, App Engine's magic will handle this nastiness for you. Not unexpectedly, the development of your application happens on your desktop using App Engine's SDK. The SDK provides a one click deployment of your application to the cloud. Another interesting note is that Python is the programming language in which App Engine applications are coded. Again, this is yet another differentiator for enterprises. I'd guess that ASP/C# and J2EE are the two most prevalent platforms for web application development in the enterprise today, and obviousily the Microsoft solution has siginificantly less market share than Java. So why would Google choose Python? Maybe it integrates better with how they wanted to package App Engine and integrate with their other systems? Maybe they intentionally don't want to address the enterprise need for cloud computing? Discussions with Googlers and other conference goers throughout the day never really shed any light on this question. Maybe their reasons for offering a cloud computing solution are different from those of Amazon? Guido continued overviewing the quick development of a basic guest book application using technologies of App Engine. Nothing too exciting, and nothing really all that different from what is covered in the App Engine documentation. Well, except for one thing. Django is a Python templating framework that App Engine choose to include with its distribution. Like Python, Django is nothing new, its just something Google decided to provide with App Engine. The only thing, the version they provide is extremely old, and in fact, they recommend that you upgrade to the latest version before development! This seemed really annoying.
Wednesday, May 28, 2008
Rapid Development with Python, Django, and Google App Engine with Guido van Rossum
"An Introduction to Android" with Jason Chen - 11:15am
My (Andy) first session of the day after the keynote. Labeled a "101" session as well as being titled an introduction, I didn't really expect a lot of detail from the presentation. My expectations were not let down. The presentation wasn't really much more than a verbal overview of information that is already publicly available on the web regarding Android, with really one exception - an announcement that devices will start being shipped with Android in the second half of 2008. Never-the-less, I'll still review the information presented. Before getting into the details of Android, Jason presented a slide comparing the number of people in the world with a mobile phone versus the number of people in the world with an Internet connection. Not only was the number of people with a mobile phone basically double that of internet connection owners, but the number of mobile phone owners was even increasing at a greater rate than that of Internet connection owners. I guess his point was to reinforce the importance of a standard mobile platform, which is what Android is. Android is an entire mobile operating system. Applications for Android are written in Java, but compiled into Dalvik Virtual Machine byte code (as opposed to Java byte code which runs in the Java Virtual Machine). Contrary to the iPhone and its SDK, the Android platform is ENTIRELY open. A developer pretty much has access to anything they want on the device. Aside from being actual open source software licensed under the Apache 2, Jason described three aspects in which Android may be considered an open platform. It is open to the mobile industry, any provider or device vendor may use the platform. It is open to the user. A user of an Android phone may download any application they want and install it, and this includes replacing the primary applications on the phone like the address book! Android is open to developers as well. There was an interesting demo of application integration, specifically, a regular Google web search was made for "pizza san francisco." And just like you can try on the regular web, at te top of the results was a link to Google Maps to show the location of pizza restaurants in San Francisco. Things got interesting when the link was actually clicked. Upon clickin the link, a popup appeared, prompting the user to specify whether they would like to view the resulting page in the regular Google Maps web application, or switch over to the rich Map view client installed on the device. Jason selected the rich client, and the Android prototype seemlessly switched to the locally installed Map application. Of course there was the obligatory security slide in which Jason indicated there was plenty. Security features include process level separation, and sandbox execution of the applications. During the Q&A after the presentation, a question was posed asking if there was any mechanism provided that allows for developers to easily maintain a consistent look and feel of their application, with other Android applications. Similarly to iPhone, there is a suggested set of widgets that developers may use to achieve a consistent look and feel, but contrary to the iPhone, developers aren't forced to use these. Overall, Android looks really interesting. Seeing that the phones will start to ship right around the time that my contract with Verizon will expire, it will be a tough choice whether I get an Android phone or an iPhone. Also, one can only speculate the market penetration that Android will have. While the Open Handset Alliance will go a long way to help ensure that all the infrastructure is there to setup Android for success, it will ultimately be up to the consumer to determine its success. Can it kill the iPhone?
Key Note (Andy's take) - Client Connectivity and the Cloud
KeyNote by Vic (9:15 am) - Client Connectivity and the Cloud
Hopefully I'll be able to augment some of the points that Karun already made. Vic . started the day off presenting the keynote for the day. Right off the bat he apologized for the absurdly long registration lines. In fact, the registration lines were still very long at 9:45, when the keynote should have started about 15 minutes earlier. Finally, they just let everyone into the conference without actually checking registration, the only request was that everyone stop by the registration desk by 2pm to actually register. The actual meat of Vic's presentation presented a cycle of computing throughout the years. The cycle contrasts computing power with computing accessibility. 40 years ago or so, the mainframe presented mass computing power (for its time), but was extremely inaccessible. Users had to wait in line for their allocated slice of computing time. Once they had that slice though, they had freedom to leverage the full power of the mainframe. As technology evolved, the personal computer was born. This reversed the trend by reducing the computing power available to users, but increasing the accesibility. Everyone had one in their home, but the raw horsepower paled in comparison (relatively) to the large mainframes. Finally, we arrive in today's computing world. Expensive data centers provide enormous computing power, but only a select few developers may actually have access to take advantage of it. It's not like Joe Developer can shell out a couple million dollars to build a data center for his website that can handle a five million visits a month. Vic's point of this whole story is that cloud computing enables Joe Developer to only worry about writing his killer app, and not need to have any concern about building the infrastructure. Cloud computing provides highly accessible enormous computing power.
After concluding this story, Vic introduced Allen Hurff of Myspace to present an example how MySpace recently leveraged Google Gears. Nothing too exciting here. MySpace basically improved some searching and sorting functionality within their message center using Google Gears. Comparing the old interface with the new, there was definitely some performance increases. More on Google Gears in a later post.
Vic comes back on stage and moves discussion into the mobile world. As we know, and Vic said, there is a ton of fragmentation on the mobile platform. This fragmentation is prevalent in both the web and rich client platforms. So many devices, and many of the difference devices have their own browser implementations. There are almost no standards, or atleast standards adopted on a widespread scale. Vic introduces Steve Horowitz to introduce Google's latest work in the mobile world, and whaddayaknow, Google Android! The biggest surprise of the demo was that he had an actual device (a brandless prototype) with Android running on it connected to a 3G network. It must have been some custom network that Google had setup, but still cool to see Android actually running on a device. His demo finished with a real wow moment. Showing the Google Street View running on Android, the development team had integrated the compass aspect of the GPS chip such that when he turned around (physically) the device detected his movement and rotated the street view with his turns. Really cool.
Vic back on stage to introduce Kevin Gibbs to present App Engine. App Engine is Google's cloud computing solution, and really the answer for developers to have access to the large Google data centers to run their applications. This way, devs can solely focus on writing the application without the headaches of configuring web servers and DBMSs. More details on App Engine in a future post, but it is worth mentioning that Kevin did break the news that AppEngine was finally publicly available today. Previousily, it was only available to a select few trial users.
And the keynote went on for a couple other presenters, nothing really to note. Mark Lucovsky overviewed the latest news regarding the GData and AJAX APIs. The GData API provides a method to read and write information from Google Services such as Google Docs. The AJAX APIs provides a read only interface into other Google Services such as YouTube. Following Mark, Bruce Johnson took the stage to overview the latest news from the Google Web Toolkit shop. Most notably, the GWT Release Candidate 1.5 is available today which includes support for Java 5 features. Pretty powerful stuff, just really a niche market and hard to see how GWT could fit into the enterprise. Finally, the last Googler to present at the keynote was David Glover. David highlighted the OpenSocial platform, Google's attempt to provide an application development platform. A developer can write an application according to the OpenSocial spec, and then the app is compatible to run on any social network that supports Open Social. It's a great idea, BUT, Facebook isn't on board at this point. We'll see how far this actually goes...
Vic back on stage to dismiss everyone to the first session (and remind people who didn't have a chance to register, to register by 2pm :).
OpenSocial - Meet the OpenSocial containers
This session is for the Social networking sites that use Open Social container. Representation from MySpace to Hi5, AOL, Friedster etc talked about how they used OpenSocial platform to build the apps and widgets on their sites.
OpenSocial is a very interesting concept and is becoming popular as more and more companies are participating in building the platform. Google provided the first drop of the platform and donated to Apache and opened up the many developers. This could become a platform competing headon with Facebook API.
We may not use it directly, but the fact that the exponential growth fueled by this platform could mean many more social sites will popup.
We could use this platform to build social site for our advisors, but why would we build something from scratch? Lets give more thought to this...
Key Note Speech by Vic
Vic, VP of Engineering @ Google started the Key Note speech, which is a great kick off for the conference.
Vic revealed some important things that are remained mystery for many of the internet users... why is google getting into developing apps on the web.
2 reasons
1) Google is born on the web, it is the core part of Google and it believes that web should be moved forward.
2) Google has a revenue potential. The Open Web allows us to build rich web applications -> more users -> more uses -> more revenue.
Web is the most dominating platform. We started with Mainframes, powerful at the backend, but dumb terminals. Then we switched to PS - powerful clients, but difficult to deploy applications. Then Netscape made it easy to access applications gave birth to the web apps. Then we got into computing problem...data/complicated apps/users etc. We keep oscillating with tension between the server side and client side computing.
Google believes that web as a platform can solve many of the problems we have now.
There are 3 objectives for Google apps
1) Make the cloud more accessible
2) Keep the connectivity more persisting - Google Data API, Google Apps etc
3) Make the client more powerful - Google Gears, Mobile, web etc
Google Gears
- Extends the power of the browser
- Google believes HTML5 is the way to go... and it is full supportive of that
- Google built a relationship with Myspace and MySpace is a user of Google Gears which make the site much more powerful that ever.
- Google Gears use the power of the client PC. users need to install something on their desktops
Android
- Complete stack
- Allows mobile operators and device manufacturers to take advantage of the OS to build a powerful mobile devices
- Android features feel more like iPhone. This is a great advantage for other companies to take advantage of the Android to build powerful apps.
- We saw a demo where Maps view was built and the phone essentially becomes a camera and we can see 360 degree view of the streets. This is an amazing feature.
Business value
- More and more users are expecting a rich application on the phone because, mobile phones do not have faster networks yet.
Overall the key note speech was great. Lots of insights into what Google is about to do with the development community to move the web to a direction that is beneficial for all users.
Questions - vicg@google.com
Tuesday, May 27, 2008
Arrival (at the airport)
We got to the airport in one piece and on time. More to come once we're in the air.
Monday, May 26, 2008
This is a running commentary on Google IO conference.
Please see the conference details here http://code.google.com/events/io/
| AJAX & JavaScript | APIs & Tools | Maps & Geo | Mobile | Social | Code Labs | Tech Talks | Fireside Chat | ||||||||||
. | 8:00am - 9:30am | Registration Breakfast | |||||||||||||||
. | 9:30am - 11:00am | Keynote: Client, Connectivity, and the Cloud - Vic Gundotra, Vice President, Engineering | |||||||||||||||
. | 11:15am - 12:15pm | State of Ajax: The Universe is Expanding (Room 1) | Google Guice 101 (Room 4) Resource Bundles and Linkers in Google Web Toolkit (Room7) Extend the Reach of your Google Apps Environment with Google APIs (Room 9) | Flash API for Google Maps (Room 5) From Mashups to Mapplets (Room 6) | An Introduction to Android (Room 3) | OpenSocial: A Standard for the Social Web (Room 2) | Painless Python for Proficient Programmers Part I (Room 8) | ||||||||||
. | 12:00pm - 2:00pm | Lunch Available (sessions continue) | |||||||||||||||
. | 12:30pm - 1:30pm | Spice up Your Web Apps with Google AJAX APIs (Room 4) Leveraging Web 2.0 Design Patterns For Enhanced Accessibility (Room 5) | Rapid Development with Python, Django and Google App Engine (Room 1) Faster-Than-Possible Code: Deferred Binding with GWT (Room 7) YouTube on Your Site (Room 9) | Harnessing StreetView, Static Maps, and other new additions to the Google Maps API (Room 6) | Building an Android Application 101 (Room 3) | Meet the OpenSocial Containers (Room 2) | CODE LAB PART 1 (lasts until 2:45pm) Getting Started with Google App Engine - On Your Mac (Code Lab 1) Hands-On Google Gears: LocalServer, Database, & PubTools (Code Lab 2) Building an OpenSocial application, focus on client side APIs (Code Lab 3) | Painless Python for Proficient Programmers Part II (Room 8) | Google Data APIs (Fireside Chat) | ||||||||
. | 1:45pm - 2:45pm | Taking Large-Scale Applications Offline - Lessons Learned from Google Docs (Room 1) Can We Get There From Here? (Room 4) | Building Scalable Web Applications with Google App Engine (Room 2) Creating a Google Data API Client (Room 9) | The World's Information in Context (Room 3) | Anatomy & Physiology of an Android (Room 7) | Apache Shindig: Make your Social Site an OpenSocial Container (Room 5) OpenSocial - Scaling and Analytics, Nuts & Bolts (Room 6) | CODE LAB PART 2 (continued from above) | Open Source is Magic (Room 8) | Google Desktop APIs (Fireside Chat) | ||||||||
. | 3:00pm - 4:00pm | Google Gears and MySpace - an Exploration of Powering Search on the Client (Room 1) Secure Collaboration - How Web Applications can Share and Still Be Paranoid (Room 4) | Using GWT to Build a High Performance Collaborative Diagramming Tool (Room 3) Under the Covers of the Google App Engine Datastore (Room 6) | Map Mashups Session (Room 2) | Google Gears for Mobile: Power Up your Mobile Web App (Room 7) | URLs are People Too - Using the Social Graph API to Build a Social Web (Room 5) | CODE LAB PART 1 (lasts until 4:15) Getting Started with Google App Engine (Code Lab 1) Hands-on YouTube: Creating an Application with the YouTube APIs using Google App Engine (Code Lab 2) Hands-On Maps API: Basic & Advanced (Code Lab 3) | Underneath the Covers at Google: Current Systems and Future Directions (room 8) | OpenSocial (Fireside Chat) | ||||||||
. | 4:15pm - 5:15pm | Improving Browsers in New Ways: Gears++ (Room 1) Surprisingly Rockin' JavaScript and DOM Programming in GWT (Room 2) | Working with Google App Engine Models (Room 3) Authenticating to Google Data Services (Room 9) | Maps and Geo Session (Room 6) Parsing and Generating KML with Google's KML Library (Room 7) | OpenSocial at MySpace (Room 4) OpenSocial Across Containers (Room 5) | CODE LAB PART 2 (continued from above) | Introduction to Google DocType: an Encyclopedia of the Open Web (Room 8) | Google Web Toolkit (Fireside Chat) | |||||||||
. | 5:30pm - 8:30pm | Birds of a Feather | |||||||||||||||
. | 6:00pm - 10:00pm | After Hours Party | |||||||||||||||
. | *All sessions are on a first-come, first-serve basis at the time of the session | ||||||||||||||||
. | |||||||||||||||||