tag:blogger.com,1999:blog-85019566665811321642008-07-25T10:07:36.920-07:00Google App Engine BlogA Googlernoreply@blogger.comBlogger18125tag:blogger.com,1999:blog-8501956666581132164.post-44752982374678492592008-07-24T11:21:00.000-07:002008-07-24T13:52:15.402-07:00Some small updates!We're happy to announce we've released some small updates to Google App Engine. Among the more significant changes: <ul><li> More apps: Want to create more than 3 applications with your App Engine account? Now you can now create up to 10!</li><li>Time windows for Dashboard graphs: Zoom in on the data in your dashboard to get a more accurate picture of whats going on. You can zoom in to see graphs for the last 24, 12, and 6 hour periods. </li><li> Logs export: You can now use appcfg.py to download your application's logs in plaintext format. Use <span style="font-family: courier new;">appcfg.py --help</span> for more information on how to download your logs. </li><li> Send email as logged in user: If you're using the users API, you can now send email from the email address of the currently-logged-in user.</li></ul>Be sure to <a href="http://code.google.com/p/googleappengine/downloads/list">update your SDK</a> and check the release notes for a full list of changes. Have more changes you'd like to see with App Engine? Let us know in our <a href="http://groups.google.com/group/google-appengine">Google Group</a>! <br/><br/><span class="byline-author">Posted by Paul McDonald, App Engine Team</span>Paul McDonaldhttp://www.blogger.com/profile/04893198815962148051noreply@blogger.comtag:blogger.com,1999:blog-8501956666581132164.post-324754962058947652008-07-17T13:23:00.000-07:002008-07-17T13:46:53.284-07:00Google Code Jam up and running on App EngineGoogle Code Jam is a coding competition in which professional and student programmers are asked to solve complex algorithmic challenges in a limited amount of time. The contest is all-inclusive: Google Code Jam lets you program in the coding language and development environment of your choice. The Top 500 participants will advance to onsite competitions at a local Google office to compete against those in their region (Asia Pacific; Europe, Middle East and Africa; and the Americas). The Top 100 will participate in the final round at the Google Headquarters in Mountain View, California.<br><br> The application that runs the competition is built on App Engine. It was developed by a few Google engineers in their 20% time and is currently serving about 200 requests per second.<br><br> If you are interested in participating you still have a few hours to register. Go to the <a href="http://code.google.com/codejam" id="jybs" title="Code Jam">Code Jam</a> site and check out the <a title="live scoreboard" href="http://code.google.com/codejam/contest/scoreboard?c=agdjb2RlamFtcg8LEghjb250ZXN0cxjqOQw" id="x-0q">live scoreboard</a>!<br><br> <span class="byline-author">Posted byPaul McDonald, App Engine Team</span>Paul McDonaldhttp://www.blogger.com/profile/04893198815962148051noreply@blogger.comtag:blogger.com,1999:blog-8501956666581132164.post-76329766980811605362008-07-14T10:59:00.000-07:002008-07-14T11:04:56.875-07:00App Engine Community Update<span class="byline-author">Posted by Marzia Niccolai, Google App Engine Team</span><br/><br/> <p>Having spent the past two weeks tracking a <a title="hamster across America" href="http://hamsteracrossamerica.com/">hamster across America</a>, <a title="creating collabrative pictures" href="http://bsop.appspot.com/">creating collaborative pictures</a>, and <a title="planning plenty of parties" href="http://mobaganda.com/">planning plenty of parties</a>, I think it's time to get together another community update.</p> <p>We were excited to find that one of our developers has <a title="started tracking App Engine performance" href="http://service-architecture.blogspot.com/2008/06/google-app-engine-performance-part-1.html">started tracking App Engine performance</a>, and hope to see more along these lines in the future. Developers continue to contribute information relating to the bulk loader, <a title="including an article that discusses UTF-8 and HandleEntity" href="http://www.wooji-juice.com/blog/appengine-bulkloader.html">including an article that discusses UTF-8 and HandleEntity</a>. And finally, Adobe AIR and Flex developers might be interested in <a title="this article about creating a photo application on Google App Engine" href="http://dobeweb.com/2008/quickfix-try-google-app-engine-adobe-air-and-flex-2.html">this article about creating a photo application on Google App Engine</a>.</p> <p>Those of you who aren't content to just read may wish to get your hands dirty with some Open Source App Engine code. We've had 10 more additions to our <a title="Open Source project page" href="http://groups.google.com/group/google-appengine/web/google-app-engine-open-source-projects">Open Source project page</a>, including projects that will interest all you Scrabble players, radio listeners, and RESTful developers.</p> <p>Lastly, the forum discussion continues to keep pace, with topics that include <a title="IP geocoding" href="http://groups.google.com/group/google-appengine/browse_thread/thread/ebebbacc69688925#">IP geocoding</a>, <a title="domain configuration" href="http://groups.google.com/group/google-appengine/browse_thread/thread/5ae7cd55be90132f#">domain configuration</a>, and continued discussion about the <a title="cap on indexed properties for an entity" href="http://groups.google.com/group/google-appengine/browse_thread/thread/d5f4dcb7d00ed4c6#">cap on indexed properties for an entity</a>.</p> <p>Keep letting us know what you've been up to!</p>The App Engine Teamhttp://www.blogger.com/profile/13153619670612749384noreply@blogger.comtag:blogger.com,1999:blog-8501956666581132164.post-53111558258362336752008-07-10T10:37:00.000-07:002008-07-10T10:45:59.701-07:00App Engine Hack-a-thon: Chicago<span class="byline-author">Posted by Marzia Niccolai, Google App Engine Team</span><br/><br/> <p>Please join us on July 31st for a Google App Engine Hack-a-thon in the Windy City.</p> <b>Learn about Google App Engine</b><br /> <p>The events will include training on the major features of Google App Engine, including data modeling, the App Engine APIs, some aspects of Django, and how to mashup App Engine with other web services. Google Engineers and Product Managers will be on hand to help and to answer questions throughout the day.</p> <p>For a better idea of what goes on at our hack-a-thons, see our previous posts about the <a href="http://googleappengine.blogspot.com/2008/05/google-app-engine-new-york-hack-thon.html">New York</a> and <a href="http://googleappengine.blogspot.com/2008/05/san-francisco-hack-thon.html">San Francisco</a> hack-a-thons.</p> <b>Build With Us, or Build Your Own</b><br /> <p>Throughout the day, we will be building a complete App Engine application, and sharing the code with you so you can code along with us. If, on the other hand, you already have a great idea for what to build, bring that idea along. Even better, bring along anything you can prepare ahead of time (sketches, designs, web page mock ups, etc.) and use the time and information provided to develop your idea into a working application, then share it with the world.</p> <p>At the end of the day, we'll invite you to share your App Engine applications with the group.</p> <b>What Do I Need?</b><br /> <p>We will provide facilities, power, food and refreshments and experts to help you learn to use Google App Engine and write your application. Just bring your laptops, ideas and enthusiasm to complete the mix. </p> <b>When and Where?</b><br /> <p>The Chicago hack-a-thon will take place Thursday July 31st, 2008 from 10AM-6PM. It will be held in Google's Chicago Office at 20 W. Kinzie St.</p> <p>Space is limited so <a href="http://code.google.com/events/hackathons/appengine-chicago.html">Sign Up now</a>.</p>The App Engine Teamhttp://www.blogger.com/profile/13153619670612749384noreply@blogger.comtag:blogger.com,1999:blog-8501956666581132164.post-72899920397115186112008-06-25T13:11:00.000-07:002008-06-25T13:27:29.494-07:00App Engine Community Update<span class="byline-author">Posted by Marzia Niccolai, Google App Engine Team</span><br/><br/> <p>Over the past two months we've seen the App Engine community do some exciting things. To highlight community participation, we'll be posting regular App Engine community updates.</p> <b>Applications</b><br /> <p>Below are some of the more popular ones we've seen: <ul> <li><a href="http://wordle.net/">Wordle</a> - Create word clouds for user provided text</li> <li><a href="http://gas.appspot.com/">Guess-a-Sketch</a> - Fans of Pictionary will love this sketching-guessing game!</li> <li><a href="http://www.orkut.com/AppInfo.aspx?appId=3D43931632273">BuddyPoke</a> - An OpenSocial application for interacting with your friends</li> </ul> </p> <b>Developer Articles</b><br /> <p>Many developers have written useful articles tutorials about App Engine. This week, we published our first externally written article on the App Engine developer pages <a href="http://code.google.com/appengine/articles/eclipse.html">Configuring Eclipse on Windows to Use With Google App Engine</a>. Below are some other contributions we've found out there on the world wide web: <ul> <li>Google Engineers are passionate about unit tests, and it's exciting to know our developers are too! App Engine fan wrote an article <a href="http://blog.appenginefan.com/2008/06/unit-tests-for-google-app-engine-apps.html">'Unit tests for Google App Engine apps'</a>.</li> <li>Thomas Brox Røst wrote an article that outlines <a href="http://thomas.broxrost.com/2008/06/15/porting-legacy-databases-to-google-app-engine">porting the data of an existing Django App to App Engine</a>.</li> <li>A big theme for App Engine at Google I/O was creating applications that scale. The developers at Logilab attended one of the talks and wrote up a very helpful <a href="http://www.logilab.org/blog/5223">summary on Building Scalable Web Apps</a>.</li> </li>Mobile usage is becoming increasingly popular across the globe. Ronan at dev.mobi wrote an article about <a href="http://dev.mobi/article/creating-mobile-web-sites-with-google-app-engine">using App Engine to create a mobile website</a>.</li> </ul> </p> <b>Open Source Projects</b><br /> <p>Recently, we invited developers to <a href="http://groups.google.com/group/google-appengine/web/google-app-engine-open-source-projects">list their Open Source projects</a> on our group's pages. So far, we have 14 projects - these range from App Engine utility libraries, web frameworks, Open Source applications, and even an HTTP implementation of Map Reduce. Please continue to <a href="mailto:marce@google.com">let us know</a> what you are working on!</p> <b>App Engine Group</b><br /> <p>Lastly, discussion continues to thrive on our Google group. Recently popular threads include discussions on <a href="http://groups.google.com/group/google-appengine/browse_thread/thread/113020d7cbd69d8d#">full text search</a>, <a href="http://groups.google.com/group/google-appengine/browse_thread/thread/7b56d2dc5183edf2#">session management</a>, <a href="http://groups.google.com/group/google-appengine/browse_thread/thread/e0711ff0c4df9cd8#">downloading apps</a>, and <a href="http://groups.google.com/group/google-appengine/browse_thread/thread/d0dc50702e41a316#">executing common functionality before serving a request</a>.</p>The App Engine Teamhttp://www.blogger.com/profile/13153619670612749384noreply@blogger.comtag:blogger.com,1999:blog-8501956666581132164.post-91861531241873749802008-06-15T18:33:00.000-07:002008-06-16T13:59:24.728-07:00Google I/O session videos posted with slides<span class="byline-author">Posted by Pete Koomen, Google App Engine Team</span><br/><br/> <p>On May 28th and 29th the Google Developer Team hosted Google I/O, a developer gathering in San Francisco. For anyone who wasn't able to join us in person, you can now now catch <a href="http://sites.google.com/site/io/">videos of more than 70 talks</a>, along with slides from each of the presentations, online. Among these are some great sessions from members of the Google App Engine Engineering team:</p> <ul> <li><a href="http://sites.google.com/site/io/best-practices---building-a-production-quality-application-on-google-app-engine">Best Practices - Building a Production Quality Application on Google App Engine</a><br/> Ken Ashcraft, Software Engineer</li> <li><a href="http://sites.google.com/site/io/building-scalable-web-applications-with-google-app-engine">Building Scalable Web Applications with Google App Engine</a><br/> Brett Slatkin, Software Engineer</li> <li><a href="http://sites.google.com/site/io/engaging-user-experiences-with-google-app-engine"> Engaging User Experiences with Google App Engine</a><br/> Lindsey Simon, Web Developer, and John Skidgel, Senior Interaction Designer</li> <li><a href="http://sites.google.com/site/io/rapid-development-with-python-django-and-google-app-engine"> Rapid Development with Python, Django, and Google App Engine</a><br/> Guido van Rossum, Software Engineer</li> <li><a href="http://sites.google.com/site/io/under-the-covers-of-the-google-app-engine-datastore"> Under the Covers of the Google App Engine Datastore</a><br/> Ryan Barrett, Software Engineer</li> <li><a href="http://sites.google.com/site/io/working-with-google-app-engine-models"> Working with Google App Engine Models</a><br/> Rafe Kaplan, Software Engineer</li> </ul> <p>There are also a <strong>lot</strong> of interesting talks on <a href="http://code.google.com/android">Android</a>, <a href="http://gears.google.com/">Gears</a>, <a href="http://code.google.com/apis/ajaxsearch">AJAX Search API</a>, <a href="http://code.google.com/apis/gadgets/">Gadgets</a>, <a href="http://code.google.com/apis/gdata">GData</a>, <a href="http://code.google.com/apis/opensocial">OpenSocial</a>, and many other Google Developer products. Feel free to discuss in our <a href="http://groups.google.com/group/google-appengine">group</a>!</p>The App Engine Teamhttp://www.blogger.com/profile/13153619670612749384noreply@blogger.comtag:blogger.com,1999:blog-8501956666581132164.post-16999282765403277882008-05-28T11:08:00.000-07:002008-05-28T14:04:45.181-07:00Announcing Open Signups, Expected Pricing, and two new APIs<font class="byline-author">Posted by Paul McDonald, App Engine Team</font><br><br> <span class="Apple-style-span" id="hq80150">When we launched Google App Engine to 10,000 developers in early April, we were looking for feedback from the community. Since then, even though we've since expanded to 75,000 developers, the request we've heard most often has been to open up the preview release and give more people the chance to use it to deploy their apps to Google's scalable infrastructure. </span><span class="Apple-style-span" id="hq80150">With more than 80,000 of you still waiting to use App Engine we're especially pleased today to announce that we are opening the flood gates--now anyone who wants to use App Engine can give it a try! So, if you haven't already, head over to our <a href="http://appengine.google.com">Admin Console</a> and create your first application.</span> Note: you'll need to verify your account with a mobile phone before doing so.<br><br> <span class="Apple-style-span" id="hq80152">App Engine will always be free to get started, and we plan on enabling developers to purchase more computing resources sometime this year.</span><span class="Apple-style-span" id="hq80152"> Although we're not ready to offer this ability now, we've been asked by many developers to provide some insight into how we'll be pricing App Engine usage for applications that have exceeded the free quota of 500 MB of storage and around 5M pageviews per month. We'd like to be transparent about this, and have announced today that </span>developers can expect to pay:<br><br> <ul><li>$0.10 - $0.12 per CPU core-hour</li><li>$0.15 - $0.18 per GB-month of storage</li><li>$0.11 - $0.13 per GB outgoing bandwidth</li><li>$0.09 - $0.11 per GB incoming bandwidth</li></ul><span class="Apple-style-span" id="hq80164">Likewise in response to your feedback we are also providing 2 new APIs, the image manipulation API and the Memcache API.<br><br> </span><span class="Apple-style-span" id="hq80164">The <a href="http://code.google.com/appengine/docs/images/">image manipulation API</a> enables developers to resize, rotate, flip, crop and enhance images using the same infrastructure used in Picasa Web Albums. With the images API you can perform common image related tasks like thumbnailing images via a simple interface. For more information about the images API, please see our <a href="http://code.google.com/appengine/docs/images/">documentation</a>.<br><br> </span><span class="Apple-style-span" id="hq80164">The <a href="http://code.google.com/appengine/docs/memcache/">Memcache API</a> is a high-performance caching layer designed to make page rendering faster by reducing datastore queries and improving the performance of your application. The Memcache API was written by Brad Fitzpatrick, the same developer who created memcached, a caching layer that is used in some of the world's most popular web applications, and is compatible with memcached implementations. Please see our <a href="http://code.google.com/appengine/docs/memcache/">documentation</a> for more information about the Memcache API.<br><br> </span>These features and improvements were motivated by your feedback and participation in our development process. We're working hard to respond to all of your requests so please continue to <a href="http://groups.google.com/group/google-appengine">share them with us</a>!The App Engine Teamhttp://www.blogger.com/profile/13153619670612749384noreply@blogger.comtag:blogger.com,1999:blog-8501956666581132164.post-91814288714503662422008-05-19T18:07:00.000-07:002008-05-19T18:11:39.603-07:00San Francisco Hack-a-thon<span class="byline-author">Posted by Marzia Niccolai, App Engine Team</span><br><br> On Friday, May 16th, we had our second Google App Engine Hack-a-thon at the Google offices in San Francisco. For 12 hours, developers coded, talked with the Google App Engine engineering team and each other, and filled up on Google snacks.<br><br> At the end of the day we had some great results:<br> <ul><li>The beginnings of a distributed datastore helper library</li><li><a href="http://cp.appspot.com/" id="lp:y5" target="_blank">http://cp.appspot.com</a> - An online shopping cart integrated with Google Checkout</li><li><a href="http://gawsh.appspot.com/" id="lp:y12" target="_blank">http://gawsh.appspot.com/</a> an application that helps generate workers compensation forms</li><li>And lastly, <a href="http://fat-burn-challenge.appspot.com/" id="lp:y14" target="_blank">http://fat-burn-challenge<wbr id="lp:y15">.appspot.com/</a> an application to keep track of your running progress (for those of us who had too many snacks :)</li></ul><br><br> Check out some pictures of the Hack-a-thon:<br><br> <embed type="application/x-shockwave -flash" src="http://picasaweb.google.com/s/c/bin/slideshow.swf" flashvars="host=picasaweb.google.com&amp;RGB=0x000000&amp;feed=http%3A%2F%2Fpicasaweb.google.com%2Fdata%2Ffeed%2Fapi%2Fuser%2Fappengine.hackathon%2Falbumid%2F5202207216519630849%3Fkind%3Dphoto%26alt%3Drss" pluginspage="http://www.macromedia.com/go/getflashplayer" height="192" width="288"></embed><br><br> If you still haven't got a chance to meet the App Engine developers and build some apps with other App Engine developers, we will be holding some codelab sessions at <a href="http://code.google.com/events/io/">Google I/O</a>, our annual developer event on May 28th and 29th.The App Engine Teamhttp://www.blogger.com/profile/13153619670612749384noreply@blogger.comtag:blogger.com,1999:blog-8501956666581132164.post-62598604730684925722008-05-15T11:23:00.000-07:002008-05-15T17:04:43.566-07:00App Engine Launcher for Mac OS X<span class="byline-author">Posted by John Skidgel, Senior Interaction Designer</span> <p> While I was writing scenario applications to test Google App Engine, I had the following idea: If BBEdit, Dreamweaver, CSSEdit, and TextMate were at a party, what kind of application would be welcomed to help with App Engine development? As silly as this sounds, it led me to think more about workflow. I used: </p> <ul> <li>a few applications for Python, CSS, HTML, and JavaScript.</li> <li>the command line to run applications and to view logs.</li> <li>a browser to test locally and to access the local developer console.</li> <li>the command line to deploy the application.</li> <li>a browser to view a live application's dashboard.</li> </ul> <p> I began to think about how unfriendly command line interfaces can be, and how much repetitive typing I had been doing to test and deploy applications. With that said, I worked with <a href="http://googlemac.blogspot.com/2008/05/app-engine-launcher-for-mac-os-x.html">John Grabowski</a> of the Google Mac team and <a href="http://www.youtube.com/watch?v=bfgO-LXGpTM">Brett Slatkin</a>, an engineer on App Engine, on a 20% project to make <a href="http://code.google.com/appengine/downloads.html">Google App Engine Launcher</a> for Mac OS X. </p> <p> Now, App Engine Launcher is not a replacement for your code editor or your IDE. It improves your App Engine development experience by managing a list of your applications. With a few clicks you can run, browse, deploy, and view logs for your applications. It also has some added sugar thrown in like drag and drop, integration with your editor, and quick links to the local developer console and the live application dashboard. </p> <p> <a href="http://code.google.com/appengine/downloads.html">Download</a> it now. If it's missing a feature that you'd like to see (like scripting, a Windows or Linux version, human-level AI ;), let us know in the <a href="http://groups.google.com/group/google-appengine">Discussion Group</a>. </p> <a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_dLfQMJsmsaI/SCzPfOujaDI/AAAAAAAAAAM/niRbV14QRMM/s1600-h/launcher.png"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://bp1.blogger.com/_dLfQMJsmsaI/SCzPfOujaDI/AAAAAAAAAAM/niRbV14QRMM/s320/launcher.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5200759805142329394" /></a>The App Engine Teamhttp://www.blogger.com/profile/13153619670612749384noreply@blogger.comtag:blogger.com,1999:blog-8501956666581132164.post-35415027817345575472008-05-08T08:38:00.000-07:002008-05-08T11:43:17.142-07:00Google App Engine New York Hack-a-thon<span class="byline-author">Posted by Marzia Niccolai, App Engine Team</span><br><br> Yesterday, Google App Engine held our first ever hack-a-thon at the Google Office in New York City. We had a great turn out of App Engine developers. Some programmed along with us, building a wiki, and some developers brought along their own ideas and spent the day building some awesome applications.<br><br> At the end of the day, a few developers even came up and presented their work:<ul><li>An application that provides 'a simple API for writing and reading small chunks of data from anywhere' : <a href="http://tinydb.org/">http://tinydb.org/</a> </li><li>An app that adds photos to the developer's facebook account</li><li>An Open Source Django utility project: <a href="http://code.google.com/p/django-ae-utils/">http://code.google.com/p/django-ae-utils/</a> </li><li>An application that searches for clinical trials based on keywords</li><li>An application that uses GWT, Maps and Gears to track and map appointments and uses App Engine to keep the client side data synced</li><li>An app where users can list items for sale and get emails from interested buyers: <a href="http://sellstuff.appspot.com/">http://sellstuff.appspot.com/</a> </li></ul> Check out the pictures for the event at: <a href="http://picasaweb.google.com/appengine.hackathon/GoogleAppEngineHackathon#">http://picasaweb.google.com/appengine.hackathon/GoogleAppEngineHackathon#</a><br><br> <embed type="application/x-shockwave-flash" src="http://picasaweb.google.com/s/c/bin/slideshow.swf" flashvars="host=picasaweb.google.com&amp;RGB=0x000000&amp;feed=http%3A%2F%2Fpicasaweb.google.com%2Fdata%2Ffeed%2Fapi%2Fuser%2Fappengine.hackathon%2Falbumid%2F5198014856089428785%3Fkind%3Dphoto%26alt%3Drss" pluginspage="http://www.macromedia.com/go/getflashplayer" height="192" width="288"></embed><br><br> We look forward to seeing you at the San Francisco Hack-a-thon on May 16thPaul McDonaldhttp://www.blogger.com/profile/04893198815962148051noreply@blogger.comtag:blogger.com,1999:blog-8501956666581132164.post-89274573669545702232008-05-06T11:59:00.000-07:002008-05-06T18:42:26.063-07:00An Open Source App: Rietveld Code Review Tool<span class="byline-author">Posted by Guido van Rossum, Software Engineer</span> <p>My first project as a Google engineer was an internal web app for <emph>code review</emph>. According to <a href="http://en.wikipedia.org/wiki/Code_review">Wikipedia</a>, code review is "<emph>systematic examination (often as peer review) of computer source code intended to find and fix mistakes overlooked in the initial development phase, improving both the overall quality of software and the developers' skills.</emph>" Not an exciting topic, perhaps, but the internal web app, which I code-named <emph>Mondrian</emph> after one of my favorite Dutch painters, was an overnight success among Google engineers (who evidently value software quality and skills development :-). I even gave a public presentation about it: you can <a href="http://www.youtube.com/watch?v=sMql3Di4Kgc">watch the video on YouTube</a>.</p> <p>I've always hoped that we could release Mondrian as open source, but so far it hasn't happened: due to its popularity inside Google, it became more and more tied to proprietary Google infrastructure like <a href="http://labs.google.com/papers/bigtable.html">Bigtable</a>, and it remained limited to <a href="http://perforce.com/">Perforce</a>, the commercial revision control system most used at Google.</p> <p>Fortunately, now that I work on the Google App Engine team, I've been able to write a new web app that incorporates many ideas (and even some code!) from Mondrian, and release it as open source. The Python open source community has been trying out <a href="http://codereview.appspot.com">Rietveld</a> for the past few days, and has already been using it to do code reviews for Python (as well as providing valuable feedback in the form of bug reports and feature requests). Of course, the tool is not language-specific: you can use it for code reviews for <emph>any</emph> language!</p> <p>To learn more about Rietveld, try it out, or take a look at the code, check out the <a href="http://code.google.com/appengine/articles/rietveld.html">article on Google Code</a>!</p>Pete Koomennoreply@blogger.comtag:blogger.com,1999:blog-8501956666581132164.post-83738472212872105942008-04-28T22:36:00.000-07:002008-05-06T17:38:53.158-07:00Tips on writing scalable apps<span class="byline-author">Posted by Ken Ashcraft, Software Engineer</span> Google App Engine makes writing scalable apps easier, and a well-designed app should be able to grow automatically from one user to millions. What does it mean for a Google App Engine application to be "well-designed," though? Here are a few simple tips that, if you design with them in mind, should help ensure your App will stand up with grace and aplomb, even under heavy load. <ul> <li><strong>Avoid contention on datastore entities.</strong> If every request to your app reads or writes a particular entity, latency will increase as your traffic goes up because reads and writes on a given entity are sequential. One example construct you should avoid at all costs is the gobal counter, i.e. an entity that keeps track of a count and is updated or read on every request. There are some interesting ways of simulating this behavior that don't require reads/writes on every request, and we'll talk about a handy way to cache entities for reads below.</li> <li><strong>Avoid large <a href="http://code.google.com/appengine/docs/datastore/keysandentitygroups.html#Entity_Groups_Ancestors_and_Paths">entity groups</a>.</strong> Any two entities that share a common ancestor belong to the same entity groups. All writes to an entity group are sequential, so large entity groups can bog down popular apps quickly if there are a lot of writes to that group. Instead, use small, localized groups in your design.</li> <li><strong>Write sparingly.</strong> Writes are more expensive than reads; keep this in mind when designing your data model. If you can avoid a write--it's best to do so.</li> <li><strong>Define a <code>main()</code> function for code reuse.</strong> Instances of your app are kept running for a certain period after each request, so there's a chance that any request will hit an already-running app. Apps that define <code>main</code> as in the following example:<br/> <br/> <code> def main(): <br/> &nbsp;&nbsp;&nbsp;application = webapp.WSGIApplication(_URLS, debug=True)<br/> &nbsp;&nbsp;&nbsp;wsgiref.handlers.CGIHandler().run(application)<br/> <br/> if __name__ == '__main__':<br/> &nbsp;&nbsp;&nbsp;main()<br/> </code> can <emph>reuse</emph> global variables, so although there's no guarantee that any given request will hit a running app instance, you can take advantage of this to non-deterministically cache entities and other expensive values. This works simply because App Engine will detect if <code>main()</code> is present in an already-loaded script and call it instead of re-importing.</li> <li><strong><a href="http://code.google.com/appengine/kb/commontasks.html#profiling">Profile your code</a>.</strong> You can use the Python profiler to profile your code's performance.</li> </ul> Do you have tips for scaling web apps on App Engine? Post them in our <a href="http://groups.google.com/group/google-appengine">Google Group</a>!Pete Koomennoreply@blogger.comtag:blogger.com,1999:blog-8501956666581132164.post-66851110342833136772008-04-23T16:59:00.000-07:002008-04-23T17:35:40.135-07:00Google App Engine + Google Data APIs: A Match Made on the Web<span class="byline-author">Posted by Marzia Niccolai, Google App Engine Team </span><br><br> Don't you think it'd be cool if you could blog about a party, add it to your calendar and invite all your friends in one fell swoop? After the party, how about viewing photos and videos from the event in the same application? The <a title="Google Data APIs" href="http://code.google.com/apis/gdata/" id="bo__">Google Data APIs</a> make all this possible, and your Google App Engine apps can use feeds from Google services to display and update information for a particular user stored by these services.<br><br> The Google Data APIs team just released an update to the Google Data <a title="Python client library" href="http://code.google.com/p/gdata-python-client/" id="xkc7">Python client library</a> which includes support for Google App Engine. With this library, your app can now use <a title="AuthSub" href="http://code.google.com/apis/gdata/authsub.html" id="gzhc">AuthSub</a> to gain access to your users' feeds.<br><br> Jeff Scudder, member of the Google Data APIs team and the main contributor to the Google Data Python client library, has written an <a title="article" href="http://code.google.com/appengine/articles/gdata.html" id="q5os">article</a> that takes you through all of the steps necessary to use Google Data feeds in your Google App Engine application. He's even added his sample application to our <a title="Google App Engine sample code" href="http://code.google.com/p/google-app-engine-samples" id="gptp">Google App Engine sample code</a> project.<br><br> Try out it, and let us know what you come up with!Paul McDonaldhttp://www.blogger.com/profile/04893198815962148051noreply@blogger.comtag:blogger.com,1999:blog-8501956666581132164.post-43094382334420017102008-04-21T18:26:00.000-07:002008-04-21T18:37:49.564-07:00Google App Engine Hack-a-thons!<span class="byline-author">Posted by Dick Wall, Google App Engine Team</span><br><br> In May, Google will be holding two free Google App Engine developer events: one in New York and one in San Francisco.<br><br> <b>Learn about Google App Engine</b><br> The events will include training on the major features of Google App Engine, including data modeling, the App Engine APIs, some aspects of Django, and how to mashup App Engine with other web services. Google Engineers and Product Managers will be on hand to help and answer questions throughout the day.<br><br> As well as covering the Google App Engine SDK, we will show you how to deploy and manage your own applications on Google App Engine servers. For people who don't already have a Google App Engine account, we will be inviting people who come to the hack-a-thon to develop on App Engine.<br><br> <b>Build With Us, or Build Your Own</b><br> We will use the information shared at the event to build up a working Google App Engine application throughout the day, which you can code along with us. On the other hand, if you already have a great idea for what to build, bring that idea along. Even better, bring along anything you can prepare ahead of time (sketches, designs, web page mock ups, etc.) and use the time and information provided to develop your idea into a working application, then share it with the world.<br><br> <b>What Do I Need?</b><br> We will provide facilities, power, food and refreshments and experts to help you learn to use Google App Engine and write your application. Just bring your laptops, ideas and enthusiasm to complete the mix. We will assume some basic skills and preparation for the event, and these details will be provided soon.<br><br> <b>When and Where?</b><br> The first event will be in New York, on May 7th from 10am to 6pm. The second will be in San Francisco on May 16th from 10am to 10pm. Space is limited so sign up now!<br><br> <a href="http://code.google.com/events/hackathons/appengine-ny.html">New York Hack-a-thon</a><br> <a href="http://code.google.com/events/hackathons/appengine-sf.html">San Francisco Hack-a-thon</a>Paul McDonaldhttp://www.blogger.com/profile/04893198815962148051noreply@blogger.comtag:blogger.com,1999:blog-8501956666581132164.post-61121373016065797422008-04-18T13:14:00.000-07:002008-04-18T13:59:55.239-07:00Google App Engine Helper for Django<span class="byline-author">Posted by Matt Brown, Google App Engine Team</span><br><br> Since the launch of Google App Engine one of the most common requests has been for better integration with the popular Django framework.<br><br> We've been working hard and we've made available a helper that eases the process of developing a Django project to run on Google App Engine.<br><br> The helper will initially provide you with: <ul id="ra:q"><li id="j5hz">The ability to use most manage.py commands</li><li id="j5hz">A BaseModel class that appears the same as the standard Django Model class.</li><li id="j5hz">The ability to serialize and deserialize model instances to JSON, YAML and XML.</li><li id="j5hz">Access to Django's test framework with a test datastore and support for fixtures.</li></ul>We are releasing the helper under the Apache 2.0 license. We look forward to working with the Django community to add further functionality as time goes on.<br><br> You can download the helper from <a href="http://code.google.com/p/google-app-engine-django">http://code.google.com/p/google-app-engine-django</a>. Issues and Feature Requests should be added to the tracker within that project.Paul McDonaldhttp://www.blogger.com/profile/04893198815962148051noreply@blogger.comtag:blogger.com,1999:blog-8501956666581132164.post-20289561373276159362008-04-14T22:53:00.000-07:002008-04-14T23:33:13.614-07:00Getting your data on, and off, of Google App Engine<span class="byline-author">Posted by Kevin Gibbs, Software Engineer</span> <p> One upcoming feature of Google App Engine that's worth mentioning is large-scale data import and export. We know that many of you have large apps that already run on other platforms, and getting all of that data into the Datastore API is a challenge. And, conversely, we also know that a lot of you want to make sure it's easy to move off Google App Engine in the future, in case you need to switch to a different platform. </p> <p> With Google App Engine, you own all the data in your app. As stated in our <a href="http://code.google.com/appengine/terms.html">terms</a>, you always have the right to get your data out of Google App Engine at any point. We wouldn't have it any other way. </p> <p> To that end, we would like to solicit feedback on what form you would like the data exporter feature to take. We've started a <a href="http://groups.google.com/group/google-appengine/browse_thread/thread/18d246b30e267da4">thread</a> in the discussion group about this, and we'd love to hear what you think. XML output? CSV transform? AtomPub? RDF? Let us know! </p>Tom Stockyhttp://www.blogger.com/profile/09392330990200948090noreply@blogger.comtag:blogger.com,1999:blog-8501956666581132164.post-89787984939967010362008-04-11T10:49:00.000-07:002008-04-11T10:54:14.187-07:00We're up and running!<span class="byline-author">Posted by Pete Koomen, Product Manager</span> <p> <a href="http://code.google.com/appengine">Google App Engine</a> has been live for several days now and we're thrilled with the response we've gotten so far! We filled our initial batch of accounts within a few hours after Monday night's <a href="http://code.google.com/campfire">Campfire One</a>. And today, we've just invited another 10,000 developers to try it out. </p> <p> We're excited to see the beginnings of a developer community forming in our <a href="http://code.google.com/appengine/groups.html">Google Groups</a>! We're actively reading your posts and responding with help where we can, and it's great to see some of the more experienced members of the community start helping others out too! </p> <p> We've also seen a lot of feature and bug reports on our <a href="http://code.google.com/p/googleappengine/issues/list">Issue Tracker</a>, including requests for Ruby, Java, Perl, PHP, and Fortran. Here are are some of the general areas we're focusing on right now: </p><ul> <li><b>Support for more languages.</b> We're obviously huge Python fans, but we recognize that there are other great languages out there that developers use to build web applications.</li> <li><b>Support for offline processing.</b> Right now Google App Engine is great for web apps that do all of their processing in response to user requests, but what about apps that need to perform scheduled tasks or larger-scale data migration? We'd like to support those apps too.</li> <li><b>Support for large files.</b> Google App Engine currently imposes a limit of 1MB on all requests, both inbound and outbound. We're interested in providing efficient support for much larger uploads and downloads.</li> <li><b>Billing for additional quota.</b> During the preview release period, all apps are restricted to a set of free <a href="http://code.google.com/appengine/articles/quotas.html">resource quotas</a>. Although Google App Engine will always be free to get started, we plan on allowing developers to purchase additional resources in the future, while paying only for what they use.</li> </ul> <p></p> <p> Judging by the the feedback we've gotten so far, these are areas you're interested in as well--we'll keep you posted. Keep <a href="http://code.google.com/appengine/groups.html">letting us know</a> what you think about the Google App Engine and where you think it should be headed! </p>Pete Koomennoreply@blogger.comtag:blogger.com,1999:blog-8501956666581132164.post-17417326301868190392008-04-07T21:17:00.000-07:002008-04-07T23:52:24.972-07:00Introducing Google App Engine + our new blog<span class="byline-author">Posted by Paul McDonald, Product Manager</span> <p> At tonight's <a href="http://code.google.com/campfire">Campfire One</a> we launched a <a href="http://appengine.google.com/">preview release</a> of Google App Engine -- a developer tool that enables you to run your web applications on Google's infrastructure. The goal is to make it easy to get started with a new web app, and then make it easy to scale when that app reaches the point where it's receiving significant traffic and has millions of users. </p> <p> Google App Engine gives you access to the same building blocks that Google uses for its own applications, making it easier to build an application that runs reliably, even under heavy load and with large amounts of data. The <a href="http://code.google.com/appengine/docs/whatisgoogleappengine.html">development environment</a> includes the following features: </p> <ul> <li>Dynamic webserving, with full support of common web technologies</li> <li>Persistent storage (powered by <a href="http://labs.google.com/papers/bigtable.html">Bigtable</a> and <a href="http://labs.google.com/papers/gfs.html">GFS</a> with queries, sorting, and transactions)</li> <li>Automatic scaling and load balancing</li> <li>Google APIs for authenticating users and sending email</li> <li>Fully featured local development environment</li> </ul> <p> Google App Engine packages these building blocks and takes care of the infrastructure stack, leaving you more time to focus on writing code and improving your application. </p> <p> Today's launch is a preview release -- we're by no means feature-complete, and we're giving you early access because we really want your feedback. This preview of Google App Engine is available for the first 10,000 developers who sign up, and we plan to increase that number in near future. </p> <p> During this preview period, applications are limited to 500MB of storage, 200M megacycles of CPU per day, and 10GB bandwidth per day. We expect most applications will be able to serve around 5 million pageviews per month. In the future, these limited quotas will remain free, and developers will be able to purchase additional resources as needed. </p> <p> If you'd like to try it out, <a href="http://appengine.google.com/">sign up</a> for access to the preview release and then <a href="http://code.google.com/appengine">download the SDK</a> to get started. The best place to give us feedback is in the <a href="http://groups.google.com/group/google-appengine">discussion group</a>. Future announcements from us will appear there and/or this blog. </p>Karennoreply@blogger.com