Friday, November 2, 2012

[Gd] Stable Channel Update for Chrome OS

| More

Chrome Releases: Stable Channel Update for Chrome OS



The Stable channel has been updated to 23.0.1271.83 (Platform version: 2913.157.0) for the new Samsung Chromebook.  Machines will be receiving updates over the next several days.

Some highlights of these changes are:
  • Fixed an issue in which a wallpaper setting caused systems to boot to a blank screen following the daylight savings time change (Issue: 158455)
  • Stability fixes
Known Issues:
  • Black background on login screen occasionally (Issue: 158383)
If you find new issues, please let us know by visiting our help site or filing a bug. Interested in switching channels? Find out how. You can submit feedback using ‘Report an issue...’ in the hotdog (3 horizontal bars in the upper right corner of the browser) menu.

Josafat Garcia & Ben Henry
Google Chrome
URL: http://googlechromereleases.blogspot.com/2012/11/stable-channel-update-for-chrome-os.html

[Gd] Fridaygram: early chess computer, Angkor Wat mystery, Art Project expansion

| More

Google Developers Blog: Fridaygram: early chess computer, Angkor Wat mystery, Art Project expansion

Author PhotoBy Scott Knaster, Google Developers Blog Editor

This year marks the 100th anniversary of El Ajedrecista, a very cool chess-playing machine that is credited as the first computer game. To celebrate El Ajedrecista and its creator, Leonardo Torres-Quevedo, Google and the Technical University of Madrid are holding a conference next week. This event will discuss Torres-Quevedo’s many inventions, which included a cable car that still runs over the Niagara Whirlpool and an arithmometer that could perform calculations.


The first El Ajedrecista (photo by Museo Torres Quevedo)

The conference takes place on Wednesday, November 7th and features lectures and exhibits, including El Ajedrecista itself. If you’re going to be in Madrid, you can request an invitation. Note that if you play against El Ajedrecista, you’re going to lose: Torres-Quevado cleverly designed the machine to play an endgame from a superior position.

Speaking of moving pieces around, Angkor Wat is a huge temple complex, made from literally millions of massive sandstone blocks. Historians have wondered how ancient laborers moved these blocks to the building site. According to a new study reported by +LiveScience, the blocks were made in quarries and transported 37 kilometers via a network of canals. A previous theory suggested the blocks spent part of their journey going upstream in a river, but the newly discovered canals make the trip much shorter, and a shorter route is important when you’re pushing multi-ton hunks of sandstone around.

Finally, if you’re have some time this weekend, you can lose yourself in a bunch of new works available from the Google Art Project, including collections from Italy, Turkey, Peru, the U.S., and China. Beautiful.


Every Friday, we take a break from technical posts and publish Fridaygram, which contains stuff about science, history, the arts, and anything else cool and nerdy. And then pretty soon it’s Monday again.
URL: http://googledevelopers.blogspot.com/2012/11/fridaygram-early-chess-computer-angkor.html

[Gd] Introducing TCP Listen, a new API for Chrome packaged apps

| More

Chromium Blog: Introducing TCP Listen, a new API for Chrome packaged apps

Chrome packaged apps aim to deliver an app experience with the appearance and capabilities of native apps, but built using the growing capabilities of HTML5. These apps can access APIs for better filesystem handling, direct access to hardware devices, raw network communication and many others. One of the new APIs that just landed in an experimental state is TCP Listen, which allows an app to accept incoming TCP connections.

Since the developer preview launch earlier this year, Chrome packaged apps have been able to connect to remote servers using TCP or UDP, and bind to a UDP port. For example, this Media Center application searches for and connects to media servers in the local network. Now, through the new TCP Listen API, a Chrome packaged app can also act as a TCP server itself and accept incoming connections on specified ports.

You can use this API, for example, to create a HTTP server on a development environment application, to automate a browser window for page load testing (see image below) or even to augment the Media Center application with a DLNA®/UPnP media server and show your PicasaWeb pictures on your DLNA® enabled television.



To get started, clone this GitHub repository and look at the webserver and the TCP server samples. You may also want to watch the Chrome Apps Office Hours where we specifically talk about the TCP Listen API.

We are curious to see what clever ideas you will come up with. Have questions or comments? Subscribe to chromium-apps and let us know!

Posted by Renato Mangini, Developer Advocate
URL: http://blog.chromium.org/2012/11/introducing-tcp-listen-new-api-for.html

Thursday, November 1, 2012

[Gd] Beta Channel Update for Chrome OS

| More

Chrome Releases: Beta Channel Update for Chrome OS

The Beta channel has been updated to 23.0.1271.83 (Platform version 2913.157.0) for the new Chromebook and Platform version 2913.156.0 for all other Chrome OS devices.

This build contains a number of stability and performance fixes.

Improvements
  • Fixed an issue in which a wallpaper setting caused systems to boot to a blank screen following the daylight savings time change (Issue: 158455)
  • Mouse sensitivity is now sync-able
  • Fixed issue where Chromebox would go into suspend when something connected via Bluetooth (Issue: 34200)
  • Fixed several known top crashes
Notable Known Issues
  • Black background on login screen occasionally (Issue: 158383)
If you find new issues, please let us know by visiting our help site or filing a bug. Interested in switching channels? Find out how. You can submit feedback using ‘Report an issue...’ in the hotdog (3 horizontal bars in the upper right corner of the browser) menu.

Josafat Garcia and Ben Henry
Google Chrome
URL: http://googlechromereleases.blogspot.com/2012/11/beta-channel-update-for-chrome-os.html

[Gd] Dev Channel Update for Chrome OS

| More

Chrome Releases: Dev Channel Update for Chrome OS


The Dev channel has been updated to 24.0.1305.4 (Platform version: 3083.2.0) for Chromebooks on Samsung Chromebook Series 5 550, Samsung Chromebook Series 5, Samsung Chromebox Series 3, Acer AC700, and Cr-48).

This build contains stability and crash fixes.

Some highlights of these fixes include:
  • 158455Fixed an issue in which a wallpaper setting caused systems to boot to a blank screen following the daylight savings time change.

If you find new issues, please let us know by visiting our help site or filing a bug. Interested in switching channels? Find out how. You can submit feedback using ‘Report an issue’ under the wrench menu.

Danielle Drew
Google Chrome
URL: http://googlechromereleases.blogspot.com/2012/11/dev-channel-update-for-chrome-os.html

[Gd] Dev Channel Update

| More

Chrome Releases: Dev Channel Update

The Dev channel has been updated to 24.0.1312.2  for Windows, Mac, Linux, and Chrome Frame.  This build contains following updates:


  • Fixed getUserMedia video-only requests which should not fail if no audio input device is present. (Issue: 144421)
  • Fixed infobar prompt for Windows 8. (Issue: 158419)
  • Fixed drag and drop to install extensions. (Issue: 158499)
  • Fixed NaCl games for Windows 8. (Issue: 153368)
  • Fixed few stability issues 134175, 158745, 155653, 158377, 158660, 158703, 158176.

Full details about what changes are in this build are available in the SVN revision log. Interested in switching release channels? Find out how. If you find a new issue, please let us know by filing a bug.

Dharani Govindan
Google Chrome
URL: http://googlechromereleases.blogspot.com/2012/11/dev-channel-update.html

[Gd] Instant voting with Apps Script

| More

Google Apps Developer Blog: Instant voting with Apps Script

From nations choosing presidents to offices selecting which coffee to brew, we often find ourselves involved in election systems designed to choose the best option. This spring my alma mater's solar vehicle team, CalSol, needed to elect new leaders. Our previous system was painfully slow, involved "raising hands" in a room, and excluded any team members who could not attend a specific meeting. I set out to solve these problems and the result was an easy method for running fair elections in a matter of minutes.

I was able to build the system completely on Google products and technologies:

  • Google Forms: Allows members to submit their votes from anywhere.
  • Google Spreadsheets: Makes it easy to audit the votes and configure the system.
  • Google Apps Script: Simple way to access the results and determine the winner.

I used a lesser known voting system called instant-runoff voting (IRV), or the alternative vote, which asks voters to rank candidates rather than cast a single vote. These votes, along with a secret voting key which I provided to each member, are recorded with a Google Form that automatically populates a spreadsheet. The code in Apps Script looks through the spreadsheet to count the votes while ensuring that each voting key is only used once. The secret keys not only prevent voters from casting multiple votes, but they also allow voters to change their vote by submitting the form again.

Below is a simplified snippet of code that shows the general process used to calculate the winner.

/* Some code omitted for clarity */

/* candidates is a list of names (strings) */
var candidates = get_all_candidates(results_range);

/* votes is an object mapping candidate names -> number of votes */
var votes = get_votes(results_range, candidates, keys_range, valid_keys);

/* winner is candidate name (string) or null */
var winner = get_winner(votes, candidates);

while (winner == null) {
/* Modify candidates to only include remaining candidates */
get_remaining_candidates(votes, candidates);
if (candidates.length == 0) {
Browser.msgBox("Tie");
return;
}
votes = get_votes(results_range, candidates, keys_range, valid_keys);
winner = get_winner(votes, candidates);
}
Browser.msgBox("Winner: " + winner);

I learned that putting a little effort into Apps Script can make people happy and save a lot of time. The team feedback was outstanding. One CalSol member said the process was an "Excellent, clean, and professional voting process. This should become a standard [for the team]." I was elated when I was able to close the polls during a meeting and announce the winners of twelve independent elections in just a matter of minutes.

If you like, you can watch a video demonstrating how to create and run your own election using this script:

Try the script yourself to make sure your coffee preferences are heard!


Chris Cartland profile | GitHub

Chris is a Developer Programs Engineer based in Mountain View on the Google+ team. He previously worked on solar vehicles at UC Berkeley and wants developers to write software that makes our lives better. In his spare time he likes to play soccer and throw the ball in after doing a front handspring.

URL: http://googleappsdeveloper.blogspot.com/2012/11/instant-voting-with-apps-script.html

[Gd] Chrome for Android Update

| More

Chrome Releases: Chrome for Android Update

The stable channel of Chrome for Android has been updated to 18.0.1025464 for ARM devices and to 18.0.1026320 for x86 devices. The new update includes important stability fixes and support for the Nexus 4 and Nexus 10.  Both updates are now available for download on Google Play and in the Google Play Store on your mobile devices. Known issues are available on the Chrome support site.

If you find a new issue, please let us know by filing a bug.  More information on Chrome for Android is available on the Chrome site.

Vinod Ramachandran
Google Chrome
URL: http://googlechromereleases.blogspot.com/2012/11/chrome-for-android-update.html

Wednesday, October 31, 2012

[Gd] GDL Presents: Women Techmakers

| More

Google Developers Blog: GDL Presents: Women Techmakers

Author PhotoBy Amanda Surya, Manager of YouTube and Commerce Developer Relations

When we launched Google Developers Live back in June, our goal was to give you 24/7/365 access to inspiration and training on our developer tools and platforms, extending the unmatched enthusiasm we see every year at Google I/O. We expanded the scope of our programming with GDL Presents: focused, week-long series with varied perspectives from developers on how they're successfully tackling technical and business challenges.

Our series for next week, GDL Presents: Women Techmakers bring you conversations with women tech leaders, activists and creators from diverse backgrounds.

Women Techmakers will start as a five-episode series airing November 5th-9th daily at 2:30 PM PST (22:30 UTC), highlighting women in the technical space who are fearlessly innovating, honing technical expertise, and testing the boundaries of technology. Join us live in the studio as we chat with the following prominent female tech entrepreneurs:


Full episode schedule
Monday, 11/5 at 2:30 PM PST | 22:30 UTC [Add to calendar]
Hosts: Megan Smith - Vice President, Google [x] | Betsy Masiello - Policy Manager
Guest: Leslie Bradshaw - President, COO and Co-founder, JESS3
Join Leslie, COO and Co-founder of JESS3, in conversation with Megan Smith and Betsy Masiello, as they discuss Leslie’s experience growing a design business from two employees to a transnational operation.

Tuesday, 11/6 at 2:30 PM PST | 22:30 UTC [Add to calendar]
Hosts: Jean Wang - Lead Hardware Engineer for Project Glass
     Vivian Cromwell - Manager, Global Chrome Developer Relations
Guest: Mary Lou Jepsen - CEO and Founder, Pixel Qi
Drawing on Mary Lou’s experience leading the engineering and architectural design of the $100 laptops that inspired the One Laptop Per Child (OLPC) organization, hosts Jean Wang and Vivian Cromwell sit down with the 2011 Anita Borg “Woman of Vision” Award for Innovation winner to discuss overcoming technical challenges in hardware.

Wednesday, 11/7 at 2:30 PM PST | 22:30 UTC [Add to calendar]
Hosts: Mary Grove - Head of Global Entrepreneurial Outreach
Stephanie Liu - Senior Program Manager, Developer Relations
Guests: Stephanie Palmeri - Principal with SoftTech VC
Angela Benton - Founder & CEO NewME Accelerator
Stephanie Palmeri of SoftTech VC and Angela Benton of NewMe Accelerator join Mary Grove and Stephanie Liu in the GDL studio to discuss their experiences with diversity in the startups/investment space.

Thursday, 11/8 at 2:30 PM PST | 22:30 UTC [Add to calendar]
Hosts: Megan Smith - Vice President, Google [x]
Jessie Jiang - Product Management Lead, Google Cloud Platform
Guest: Diane Greene - Board of Directors, Google
Megan returns to the interview chair in Episode 4 to co-host with Cloud Platform PM Lead Jessie Jiang. They will be exploring former VMWare CEO and current Google board member Diane Greene’s high-level thoughts on cloud computing and the role of women in the tech space.

Bitly and Pixability (Double Feature)
Friday, 11/9 at 2:30 PM PST (Part I) | 22:30 UTC
Hosts: Gretchen Howard - Director of Global Social Solutions
Amanda Surya - Manager, Developer Relations
[Part I] Guest: Bettina Hein - Founder and CEO, Pixability [Add to calendar]
Gretchen Howard and Amanda Surya speak with Pixability Founder & CEO Bettina Hein about her experience building successful technology businesses worldwide, and her commitment to activating women involvement in the tech space.

Friday, 11/9 at 3:00 PM PST (Part II) | 23:00 UTC
Hosts: April Anderson - Industry Director, Retail Sales at Google
Amanda Surya - Manager, Developer Relations
[Part II] Guest: Hilary Mason - Chief Scientist, Bitly [Add to calendar]
April Anderson and Amanda Surya chat with Bitly Chief Scientist Hilary Mason about the role data plays in making business decisions, the intersection of government, policy, and technology, and her experience in the New York tech community.

You can view these episodes on Google Developers Live, the Google Developers YouTube channel, and on +Google Developers. RSVP to next week’s events by following +Google Developers Live, and add +Google Developers to your circles to submit questions and thoughts. Follow and contribute to the conversation using #WTM.



Amanda Surya is Manager of the YouTube and Commerce Developer Relations team at Google. In her spare time, she likes to blog about time-saving tips and of course watch YouTube videos.

Posted by Scott Knaster, Editor
URL: http://googledevelopers.blogspot.com/2012/10/gdl-presents-women-techmakers.html

[Gd] Announcing Election Info: Using Apps Script to Provide Voting Information

| More

Google Apps Developer Blog: Announcing Election Info: Using Apps Script to Provide Voting Information

It’s time for the 2012 General Election in the United States and along with it comes the tedious process of finding your voter registration, polling sites, times, directions, etc. The previously announced Google Civic Information API provides a great service to programmatically obtain much of this information based on the your home address. Google Apps Script makes it really quick and easy to build a web application that queries this information and uses various Google services to organize and track your information.

Election Info is a sample application built using Apps Script that can:

  • Query the Google Civic Information API to find polling locations and hours using client side JavaScript and AJAX.
  • Display polling information using HtmlService with jQuery for a clean effective UI.
  • Generate static maps via UrlFetch and the MapsService to show polling maps and directions.
  • Create a calendar event for election day with your polling location using the Calendar service.
  • Generate a bring-along document with poll directions and hours using the Document service.
  • Send you an email with a summary with your polling place information using the Gmail service.
  • Store your previous searches in UserProperties so it will remember your likely home address the next time you launch the app.

As you can see, this is a comprehensive sample app that is useful while also highlighting key Apps Script capabilities.

Install the app from the Chrome Web Store. Check back soon as we will be writing a blog post with details and sample code on how the sample was built.


Arun Nagarajan   profile | twitter

Arun is a Developer Advocate on Google Apps Script. Arun works closely with the community of partners, customers and developers to help them build compelling applications on top of Google Apps using Apps Script. In the past, he spent over 9 years building and designing platforms and infrastructure for enterprise mobile applications.. Arun is originally from the Boston area and enjoys basketball and snowboarding.


URL: http://googleappsdeveloper.blogspot.com/2012/10/announcing-election-info-using-apps.html

[Gd] Beta Channel Update

| More

Chrome Releases: Beta Channel Update

The Beta channel has been updated to 23.0.1271.60 for Windows, Mac, Linux, and ChromeFrame platforms.

All
  • Updated V8 - 3.13.7.5
  • Fixed Flash Camera and Microphone doesn't work (Issue: 155524)
  • Fixed Find-in-Page doesn't work properly (Issue: 156919)
  • Fixed several known top crashes
More details about additional changes are available in the svn log of all revisions.  If you find new issues, please let us know by filing a bug. Want to change to another Chrome release channel? Find out how.

Karen Grunberg
Google Chrome
URL: http://googlechromereleases.blogspot.com/2012/10/beta-channel-update_31.html

[Gd] Smarter NPAPI installs from the Chrome Web Store

| More

Chromium Blog: Smarter NPAPI installs from the Chrome Web Store

Chrome Web Store developers can create and distribute apps and extensions that use NPAPI plug-ins. However, platforms such as ChromeOS and Windows 8 don’t support NPAPI. Today, we’re making the installation of apps and extensions that use NPAPI smarter, to help users avoid installing items that they can’t use on their particular platform.

If a user visits the Chrome Web Store on a platform that doesn’t support NPAPI, the store will filter out all items that use it from the home page and the various category pages. These apps and extensions will still show up in search results, and can be visited from direct URL links, but the Details dialog for each item will display a message that the app or the extension in question cannot be installed and the Install button will be disabled.

If you are a developer whose apps or extensions use NPAPI but can still work without it, we’ve provided a way for you to prevent your items from being filtered out. In your manifest.json file under the requirements section, specify the “npapi” flag like this:

"requirements": {
   "plugins": {
       "npapi": false
    }
 }

This will allow your apps and extensions to continue to be available to users on platforms that don’t support NPAPI. If your plug-in doesn’t have any explicit dependencies on the underlying OS, then you should really consider porting it to Native Client, which provides improved portability and security and runs just great on Windows 8 and ChromeOS.

Have any questions or comments about NPAPI? You can reach us on our developer forum for all of your store-related questions.

Posted by Joe Marini, Developer Advocate
URL: http://blog.chromium.org/2012/10/smarter-npapi-installs-from-chrome-web.html

[Gd] Teaching thousands of students to program on Udacity with App Engine (part 2)

| More

Google App Engine Blog: Teaching thousands of students to program on Udacity with App Engine (part 2)



This post is the second of our two-part series discussing how Udacity uses Google App Engine.

Today’s guest blogger is Chris Chew, senior software engineer at Udacity, which offers free online courses in programming and other subjects.  Chris shares how Udacity itself is built using App Engine.

Steve Huffman blogged yesterday about how App Engine enables the project-based learning that makes his web development course so powerful.  People are often surprised to learn that Udacity itself is built on App Engine.

The choice to use App Engine originally came from Mike Sokolsky, our CTO and cofounder, after his experience keeping the original version of our extremely popular AI course running on a series of virtual machines.  Mike found App Engine’s operational simplicity extremely compelling after weeks of endlessly spinning up additional servers and administering MySQL replication in order to meet the crazy scale patterns we experience.

Close to a year later, with ten months of live traffic on App Engine, we continue to be satisfied customers.  While there are a few things we do outside App Engine, our choice to continue using App Engine for our core application is clear:  We prefer to spend our time figuring out how to scale personalized education, not memcached.  App Engine’s infrastructure is better than what we could build ourselves, and it frees us to focus on behavior rather than operations.

How Udacity Uses App Engine

The App Engine features we use most include a pretty broad swath of the platform:




A high-level representation of our “stack” looks something like this:










Trails and Trove are two libraries developed in-house mainly by Piotr Kaminski.  Trails supplies very clean semantics for creating families of RESTful endpoints on top of a webapp2.RequestHandler with automagic marshalling.  Trove is a wrapper around NDB that adds common property types (e.g. efficient dereferencing of key properties), yet another layer of caching for entities with relations (both in-process and memcache), and an event “watcher” framework for reliably triggering out-of-band processing when data changes.

Something notable that is not represented in the drawing above is a specific set of monkey patches from Trove we apply to NDB to create better hooks similar to the existing pre/post-put/delete hooks.  These custom hooks power a “watcher” abstraction that provides targeted pieces of code the opportunity to react to changes in the data layer.  Execution of each watcher is deferred and runs outside the scope of the request so as to not increase response times.

Latency

During our first year of scaling on App Engine we learned its performance is a complex thing to understand.  Response time is a function of several factors both inside and outside our control.  App Engine’s ability to “scale-out” is undeniable, but we have observed high variance in response times for a given request, even during periods with low load on the system.  As a consequence we have learned to do a number of things to minimize the impact of latency variance:





  • Converting usage of the old datastore API to the new NDB API

  • Using NDB.tasklet coroutines as much as possible to enable parallelism during blocking RPC operations

  • Not indexing fields by default and adding an index only when we need it for a query

  • Carefully avoiding index hotspots by indexing fields with predictable values only when necessary (i.e. auto-now DateTime and enumerated “choices” String properties).

  • Materializing data views very aggressively so we can limit each request to the fewest datastore queries possible



This last point is obvious in the sense that naturally you get faster responses when you do less work.  But we have taken pre-materializing views to an extreme level by denormalizing several aspects of our domain into read-optimized records.  For example, the read-optimized version of a user’s profile record might contain standard profile information, plus privacy configuration, course enrollment information, course progress, and permissions -- all things a data modeler would normally want to store separately.  We pile it together into the equivalent of a materialized view so we can fetch it all in one query.


Conclusion

App Engine is an amazingly complete and reliable platform that works astonishingly well for a huge number of use cases.  It is very apparent the services and APIs have been designed by people who know how to scale web applications, and we feel lucky to have the opportunity to ride on the shoulders of such giants.  It is trivial to whip together a proof-of-concept for almost any idea, and the subsequent work to scale your app is significantly less than if you had rolled your own infrastructure.

As with any platform, there are tradeoffs.  The tradeoff with App Engine is that you get an amazing suite of scale-ready services at the cost of relentlessly optimizing to minimize latency spikes.  This is an easy tradeoff for us because App Engine has served us well through several exciting usage spikes and there is no question the progress we have already made towards our mission is significantly more than if we were also building our own infrastructure.  Like most choices in life, this choice can be boiled down to a bumper sticker:










Editor’s note: Chris Chew and Steve Huffman will be participating in a Google Developers Live Hangout tomorrow, Thursday, November 1st, check it out here and submit your questions for them to answer live on air.

-Contributed by Chris Chew, Senior Software Engineer, Udacity



Posted by Zafir Khan, Product Marketing Manager, Google App Engine
URL: http://googleappengine.blogspot.com/2012/10/teaching-thousands-of-students-to_31.html

Tuesday, October 30, 2012

[Gd] Dev Channel Update

| More

Chrome Releases: Dev Channel Update

The Dev channel has been updated to 24.0.1312.1  for Windows, Mac, Linux, and Chrome Frame.  This build contains following updates:

All

  • Updated WebKit - 537.17
  • Fixed bugs related to bookmark sync and stability issues like 157365, 155871
Linux
  • Fixed GPU process crash on startup if stderr cannot be closed (Issue: 152530)

Full details about what changes are in this build are available in the SVN revision log. Interested in switching release channels? Find out how. If you find a new issue, please let us know by filing a bug.

Dharani Govindan
Google Chrome
URL: http://googlechromereleases.blogspot.com/2012/10/dev-channel-update_30.html

[Gd] GTAC Coming to New York in the Spring

| More

Google Testing Blog: GTAC Coming to New York in the Spring


By The GTAC Committee

The next and seventh GTAC (Google Test Automation Conference) will be held on April 23-24, 2013 at the beautiful Google New York office! We had a late start preparing for GTAC, but things are now falling into place. This will be the second time it is hosted at our second largest engineering office. We are also sticking with our tradition of changing the region each year, as the last GTAC was held in California.

The GTAC event brings together engineers from many organizations to discuss test automation. It is a great opportunity to present, learn, and challenge modern testing technologies and strategies. We will soon be recruiting speakers to discuss their innovations.

This year’s theme will be “Testing Media and Mobile“. In the past few years, substantial changes have taken place in both the media and mobile areas. Television is no longer the king of media. Over 27 billion videos are streamed in the U.S. per month. Over 1 billion people now own smartphones. HTML5 includes support for audio, video, and scalable vector graphics, which will liberate many web developers from their dependence on third-party media software. These are incredibly complex technologies to test. We are thrilled to be hosting this event in which many in the industry will share their innovations.

Registration information for speakers and attendees will soon be posted here and on the GTAC site (http://www.gtac.biz). Even though we will be focusing on “Testing Media and Mobile”, we will be accepting proposals for talks on other topics.


URL: http://googletesting.blogspot.com/2012/10/gtac-coming-to-new-york-in-spring.html

[Gd] Teaching thousands of students to program on Udacity with App Engine, Steve Huffman (part 1)

| More

Google App Engine Blog: Teaching thousands of students to program on Udacity with App Engine, Steve Huffman (part 1)



This post is the first of our two-part series discussing how Udacity uses Google App Engine.

Today’s guest blogger is Steve Huffman, founder of Reddit and Hipmunk.  Steve recently taught a web development course at Udacity, which offers free online courses in programming and other subjects.  Steve shares his experience using Google App Engine to teach the course.

This past spring I had the pleasure of teaching a course for Udacity, an online education company putting high quality college level courses online for free. I was recruited to Udacity by a former college professor and friend of mine, Dave Evans, Udacity's VP of Education.

When I was a Computer Science student at the University of Virginia, I was fortunate to take a cryptology course taught by Professor Evans. He presented us two ways to get an A in this course. We could either do it the old fashioned way--do well on tests and homeworks as well as completing a course-long project of our choosing; or, we could break into his computer and set our grade to an A. Naturally, we pretended to do the former, while spending our evenings huddled outside Professor Evans' house working on the latter. My team received A's.  

It was one of the first times where I felt I was not just completing course objectives as a student, but thinking about real-world problems as a computer scientist.  When Professor Evans emailed me early this year inquiring whether I’d be interested in teaching a course on Web Developement, I said, “Yes!” long before my brain had a chance to remind me that I already had a full-time job.

The course I taught was CS 253: Web Development, which aimed to teach students the fundamentals of building web applications. I’ve always wanted to teach-- it’s one of my favorite aspects of my job at Hipmunk. Web Development in particular is appealing because not only is it, in my opinion, the world’s most valuable profession, but even starting from scratch it doesn’t take much time to acquire the skills to build a site that can change the world. I wanted my course to leave students with such skills.

Choosing a platform for CS253

The course would be divided into seven one-hour lectures. After completing the seven lessons, students would have the skills to build a fully-functional blog platform from the ground-up, user accounts and all. I knew from experience that there is a dark side to web development: system administration. You can write all the fancy software you want that works on your own machine, but actually getting it online can be quite the pain. Where do you host it? Which database will you use? Do you know how to install such a database? Do you know how to configure a web server?

Learning the basics of web development in seven lessons was going to be challenging enough, I didn’t want students to have to deal with learning how to be system administrators at the same time. Fortunately, we decided in our first meeting that Google App Engine was the right tool for this course. Despite having never used it myself, the idea of it seemed to fit perfectly. Students would be able to write fully-functional web applications without having to deal with the tedium of installing web servers and databases, at least that was the plan. To be honest, I was a little skeptical at first, but I also didn’t have much of a choice--I wasn’t about to waste any time explaining how to get PosgreSQL running in Windows.

Reflections on App Engine

App Engine turned out to be one of the best decisions we made. Here are a couple of reasons why:

Write locally, deploy globally.
With App Engine, you can develop and run your application on your own machine, database and all, and with a simple command, deploy your application to Google’s servers and have it run identically on the Internet. When this worked for the first time for me, I was blown away. I’ve spent a significant, perhaps embarrassing, amount of time deploying code over the years. To see it happen in just a few seconds was astonishing.

Students being able to get their code running on the Internet with almost no hassle was one of the most important aspects of my course. First, it gave the students an immediate sense of power. After the first lesson, they would have their own code running live on the Internet! Second, it enabled a really nice mechanic of the course--each lesson would end with an assignment to add a feature to their live website. We could then grade these assignments in real-time. All the students had to do was submit a URL.

Excellent documentation.
App Engine’s documentation is superb. I tried to focus the majority of the course on high-level concepts common to all web development platforms; however, it was unavoidable that many parts of the course are specific to App Engine itself. For better or for worse, many of the App Engine concepts I taught I had learned only moments before. I got to know and appreciate that documentation very well. Even some of the more subtle concepts, like how the Datastore deals with replication lag, was all there and clearly explained.

The perfect level of abstraction.
A trap many beginner web developers fall into is starting with a very abstract web framework like Rails. While Rails enables a beginner to write simple apps quickly, and allows pros to appear to be wizards, it masks a lot of really important web concepts. App Engine sits at just the right level of abstraction for beginners and pros alike. I think it’s critically important to understand the difference between a GET and a POST, what HTTP headers look like, and how cookies work, for example. These aren’t difficult concepts, and having a deep understanding of them early will carry prospective developers far.

Auto-scaling.
While most of the students’ work in my course was probably used only by themselves and our grading scripts, we did spend a fair amount of time discussing how to design web applications that can support millions of users. Once you understand how to design an application that can run across many machines, App Engine will take care of the challenge of actually launching those machines when required and deploying your code seamlessly. Should the website I built during the course lessons, asciichan.com, ever hit the big time, I can rest assured App Engine will scale it with no effort from me.

Conclusion

Teaching CS 253 was a tremendous experience. To date, over 57,000 students have enrolled in the course!  Check out some of the cool sites they built on App Engine after just seven lessons:
















This is a project I’m incredibly proud of, and I’m deeply thankful to the folks at Udacity for giving me the opportunity. Furthermore, I’m grateful to Google and the App Engine team for building such a strong product. CS 253 could not have worked without it.

Editor’s note: Stay tuned tomorrow for the second post in this series by Chris Chew, one of the developers at Udacity. He’s going to explain how the Udacity team uses App Engine to power the courses themselves.  Also, Steve and Chris will be participating in a Google Developers Live Hangout this Thursday, November 1st, check it out here and submit your questions for them to answer live on air.

Posted by Zafir Khan, Product Marketing Manager, Google App Engine
URL: http://googleappengine.blogspot.com/2012/10/teaching-thousands-of-students-to.html