Friday, November 16, 2012

[Gd] Fridaygram: learning English, counting legs, playing games

| More

Google Developers Blog: Fridaygram: learning English, counting legs, playing games

Author PhotoBy Scott Knaster, Google Developers Blog Editor

Google Developers Live (GDL) is designed to bring you great technical content, live as it happens and archived for whenever you need it. We want GDL to teach you about our tools and platforms, but Eiji Kitamura, a Google Developer Advocate in Tokyo, had another idea: use the captions on GDL videos as a tool for picking up English while learning about technology. As Eiji says, “Learning English and technology at the same time is a killer feature, because it is time efficient, practical, and enjoyable”.

For the best translation, make sure
English is selected (shown circled in red).

For the best translation, click the CC button and make sure English is selected (shown circled in red in the image above), and not English (transcribed). The English translations are usually available about a week after each event.

Eiji posted about this idea on the Google Developer Relations Japan Blog, and it proved to be very popular, so several other Googlers around the world picked up the thread and created their own versions of the post, translated into Korean, Spanish, and Hebrew, with more translated posts in the works. If you’re a developer learning English while studying a new technology, now you can absorb both at the same time.

Switching our focus to nature, we’ve often wondered: how many legs are enough? 2? 4? 100? The answer turns out to be 562 to 750, which is the number of legs you’ll find on llacme plenipes, a rare millepede species. This creature was long thought to be extinct, but according to a recent journal was rediscovered in 2006 in a densely foggy area of central California. (Note: humans thought the species was extinct, but llacme plenipes itself was not fooled.)

Finally, if you need some new gaming fun this weekend, check out Ingress, a game that takes place online and in the physical world. Just be sure to stop playing and come back to your family at some point.

On Fridays we depart from our usual fare of new tools and events, and instead tell you about general cool stuff you might find interesting. This week we’re wondering: are you disappointed to learn that millipedes don’t really have 1000 legs?

[Gd] Build smoother web apps with Chrome Developer Tools

| More

Chromium Blog: Build smoother web apps with Chrome Developer Tools

Whether your web app involves scrolling down a long list of news headlines or a game with flying birds and crumbling structures, you want your web app to look as smooth as native apps. It used to be tricky to chase down the cause of animation jitter and lag in user actions with Chrome Developer Tools. This is why we’ve added the Frame Mode to our Timeline panel to help you pinpoint offending long frames and understand what’s causing them to run slowly.

So, what’s a frame? A frame includes all the tasks that the browser needs to perform in order to update the screen upon a user action or a tick of the animation timer. A complex, but not uncommon, sequence might be:
  1. run JavaScript animations and other event handlers 
  2. update CSS animations 
  3. recalculate styles and lay out the elements in the DOM 
  4. re-paint the updated layers of the page 
  5. compose them and present to the user 
Delivering a butter-smooth animation means completing all of the above in less than 16.6ms (common 60Hz refresh rate). If you are not done by then, you’ll miss the frame and the animation will appear janky.

To see how using Timeline can help you, run your favorite browser-based game, then open Developer Tools and record the Timeline while the game is running some animation. The Timeline Frame mode will now show you colored bars, each representing a frame. The colors correspond to different types of timeline events:
  • network activity and HTML parsing (blue) 
  • running JavaScript (yellow) 
  • performing style recalculation and layout (violet) 
  • painting and compositing (green) 
You can zoom in by selecting several frames or by clicking on a particular frame of interest. Looking at a specific frame in detailed view will show you the frame duration, and you can find more detailed statistics by hovering on it.

Even if your web app doesn’t have animation in it, the notion of a frame is still useful because the browser performs a repeated sequence of actions while processing input events such as keypress, mouse actions, scrolling etc. Leaving enough time to process such events inside a frame makes your app more responsive and interactive, resulting in a better overall experience for users.

In large web applications with huge DOM trees, layout typically takes time and resources. Doing it in a loop makes things much worse. So we’ve added a warning mark on layouts that were forced, by requesting positional properties (e.g. offsetWidth and offsetHeight) of DOM elements from JavaScript. If you hover over the layout event, you can see two stacks -- one that invalidated the DOM and another that caused layout synchronously. You can also see the area that had to be re-laid highlighted on the screen.

Finally, don’t forget that the best practice for dealing with animations is to use the requestAnimationFrame API, which guarantees that Chromium will call back your animation code in sync with the display refresh.

You can learn more about optimizing rendering performance of a page in Tom Wiltzius’ article on Follow Google Chrome Developers on Google+ or @ChromiumDev on Twitter for more news on Chrome Developer Tools.

Posted by Andrey Kosyakov, Software Engineer

[Gd] Stable Update for Chrome OS

| More

Chrome Releases: Stable Update for Chrome OS

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

Some highlights of these changes are:
  • Stability fixes
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 Chrome menu (3 horizontal bars in the upper right corner of the browser).

Josafat Garcia & Ben Henry
Google Chrome

Thursday, November 15, 2012

[Gd] Women Techmakers: starting the conversation

| More

Google Developers Blog: Women Techmakers: starting the conversation

Author Photo
By Amanda Surya, Manager of YouTube and Commerce Developer Relations

Google strongly supports diversity and inclusion in all our communities, including users, employees, and developers. In that spirit, last week we launched Women Techmakers (WTM) on Google Developers Live, bringing visibility to talented women leaders in technology industries.

The inaugural week of WTM programming told the stories of 6 prominent women in the tech industry and produced some enlightening conversations. From impromptu in-house product testing, to how to start a company, to crafting that perfect startup pitch, to visualizing the presidential election in a new way, to manipulating petabytes of data, our first class of women techmakers taught us new things technically and professionally.

We hope WTM inspires more women to add their expertise and creativity to the tech community. As Google+ community member Meghan Peters posted, “This is wonderful. What a great series – and very inspiring to see the thread speak up about so many more amazing women! It's this kind of support from each other that can really help push more women to the top.” We couldn’t have said it better ourselves. And we’re only getting started. Read on for video highlights and what’s next for WTM.

Video Highlights

Women Techmakers with JESS3

Visualizing data in new and compelling ways. Check out a visual walkthrough of the 2012 Presidential Election infographics from JESS3.

Women Techmakers with Pixel Qi & One Laptop Per Child

Real-time hardware testing and on-air demos.

Women Techmakers with Startup VC and NewME Accelerator

When startups are angel material & what makes a good pitch.

Didn’t get a chance to tune in live? No worries! You can watch all of the Women Techmakers episodes right now or any time on our YouTube playlist:

What’s next for WTM?

We’re open for suggestions! Share with +Google Developers and @googledevs who you’d like to see on the next Women Techmakers series. Use hashtag (#WTM) and +mention your nominations.

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

[Gd] Using WebM to power the YouTube app for Nintendo Wii

| More

YouTube API Blog: Using WebM to power the YouTube app for Nintendo Wii

When we began building the new YouTube app for Nintendo Wii, we wanted to make video playback smooth and beautiful. This meant squeezing the most available power from the console CPU and fitting the video decoding process within the tight bounds of available memory. After trying out several video encoding formats on Wii, we found that 360p WebM encoding performed the best. With the largest install base of current generation consoles, YouTube on Wii is the largest deployment of WebM video in the world today.

WebM is particularly well-suited to devices where available memory is limited, because of its technical approach to video encoding. VP8, the video codec in WebM, uses reference frames (called alternative reference frames, or "alt-ref") from which adjacent video frames are derived and compressed. This type of compression is commonly used in modern video encoding schemes, but VP8 uses the technique with particular efficiency, which results in a smaller memory footprint and smoother video playback on Wii.

We went one step further and performed low-level optimization of the VP8 decoder specifically tuned to the Wii’s processor. This included: using paired-single floating point operations to perform motion compensation, loop filtering, and idct; using the GPU to do color conversion and scaling; and dcbz instructions to copy buffers. This kind of
optimization is available to anyone, as the VP8 code is open source under a BSD license.

We’ll keep looking into other ways we can use WebM, so stay tuned on this blog to learn more.

Fritz Koenig, Engineer, recently watched Phantogram - "Don't Move", and Matt Darby, Product Manager, recently watched “JP Auclair Street Segment.”

[Gd] Restricting extension APIs in legacy packaged apps

| More

Chromium Blog: Restricting extension APIs in legacy packaged apps

Even though Chrome extensions and legacy packaged apps are similar at a technical level, users have very different expectations for how extensions and apps should look and behave. Users expect extensions to interact with the whole browser, whereas they expect apps to act solely in their containing tab or window.

Until now, all Chrome legacy packaged apps could request the same permissions and use the same APIs as extensions to interact with Chrome. In order to make the capabilities of legacy packaged apps more closely align with user expectations, we’ve decided to limit the extensions permissions that legacy packaged apps can request.

Beginning this week, you won’t be able to publish legacy packaged apps in the Chrome Web Store that request any of the following permissions:
(a) any host permissions, including "< all urls >
(b) the top-level "content_scripts" key 
(c) the "debugger", "devtools", "pageCapture", "plugin", "proxy", "tabs'", "history", "webNavigation" permissions 
(d) the top-level "npapi" key 

Existing legacy packaged apps in the Chrome Web Store will not be affected, and those existing apps can continue to be updated without being subject to these new restrictions. 

If you have questions, please get in touch with us on the Chromium extensions or Chromium apps groups.

Posted by Peter Ludwig, Product Manager

[Gd] Comments and Discussions for Drive Apps

| More

Google Apps Developer Blog: Comments and Discussions for Drive Apps

"No file is an island." John Donne said something a bit like this in 1620 A. D., hundreds of years before the internet was ever invented, and it just gets more and more true as time goes on. In our online world of information, entertainment, and socializing, everyone is connected -- and everyone wants to collaborate.

Would you like to open a collaborative space in your Drive app by injecting comments and discussion threads in your users' files? This is now easily done with the Drive API. Using the new comments and replies resources together with a simple anchoring scheme to nail down the location of comments in your document, you can provide discussion threads much like the ones found in Google Docs.

Our new commenting model has two layers:

  • A comment starts a discussion thread. It is anchored to some location in the file -- for instance, a line or lines in a text document, or a rectangular area in an image file.
  • A reply is (as you might guess) a reply to a comment. Replies are tied to the status of the parent comment, so that deleting a comment also means deleting all of its replies.

In a typical scenario, an app gets the head revision of a file, lists the existing discussions, and inserts or deletes comments and replies as needed. It’s recommended that apps should also perform user permission checks and make sure commenters are authorized. These best practices, along with a complete reference for anchoring comments in files, are detailed in Managing Comment and Discussions in the Drive SDK.

For a great example of commenting best practices, you won’t need to look any further than the Google docs in your Drive. The features you see in our own implementation -- highlighted anchoring, UI options to reply, resolve, edit and delete -- are all available for you to add to your own app.

We look forward to seeing how you integrate comments and discussions in to your Drive app! Do a better job than Google docs, and we promise to be more pleased than surprised. If you have questions or feedback about comments and discussions, don’t hesitate to let us know on our Stack Overflow tag, google-drive-sdk.

Eric Gilmore

Eric is a technical writer working with the Developer Relations group. Previously dedicated to Google Apps APIs, he is now busy writing about all aspects of the Google Drive SDK.


Wednesday, November 14, 2012

[Gd] Beta Channel Update

| More

Chrome Releases: Beta Channel Update

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

  • [Linux] {gtk} Fixed <input> selection renders white text on white background in apps. (Issue: 158422)
  • [Linux] Fixed translate infobar button to show selected language. (Issue: 155350)
  • [Linux] Fixed broken Arabic language. (Issue: 158978)
  • Fixed pre-rendering if the preference is disabled at start up. (Issue: 159393)
  • Fixed JavaScript rendering issue. (Issue: 159655)

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

[Gd] Android SDK Tools, Revision 21

| More

Android Developers Blog: Android SDK Tools, Revision 21

Posted by Xavier Ducrohet, Android SDK Tech Lead, and Angana Ghosh, Product Manager in Android

Along with the Android 4.2 SDK, we also launched a brand new update of the Android SDK Tools (Revision 21). The update includes new tools and capabilities that can help you work more efficiently as you create applications. Tools such as a new multi-config editor, and new Lint rules will help you develop apps more quickly, while a new UI test framework will give you more ways automate testing and QA for your apps. For new developers, one-click SDK download and new app templates help you get started more quickly.

Multi-config editor

A new multi-configuration editor allows you to develop and prototype your UI across various orientations, screen sizes and locales. For example, while editing your layout in portrait mode, you can see if your edits aren't visible in the shorter landscape orientation. You can see previews for other screen sizes from small phones to large tablets, you can see previews for the layout using all the available language translations in your app, and so on. You can even see how the layout appears when it is included as a fragment in a different larger layout. Finally, Android allows you to create specialized layouts for any of these configurations, and the multi configuration editor shows you these overridden layouts.

Here is a screenshot of the layout editor showing one of the layouts from the Google I/O application, across a variety of screen sizes.

More app templates

Tools R21 brings three new app templates to help you to easily add new screens to your app. There’s a new full-screen activity for use as a photo or video viewer, a settings activity to handle basic user preferences and a login activity to capture username/password.

UI Automator Test Framework

One common approach to UI testing is to run tests manually and verify that the app is behaving as expected. UI Automator is a new software testing framework available in Tools R21 that provides you with tools to easily automate UI testing tasks. It provides a GUI tool to scan and analyze the UI components of an Android application (uiautomatorviewer), a library containing APIs to create customized functional UI tests, and an execution engine to automate and run the tests against multiple physical devices. UI Automator runs on Android 4.1 (API level 16) or higher. To learn more head over to the UI Testing documentation.

One-click SDK installer

New Android SDK developers now have a convenient way to download all the various SDK components like Tools, Platform Tools, Eclipse ADT, and the latest system image with a single click. Existing developers can continue to manage their SDK components and get updates through the SDK Manager.

Revamped AVD creation dialog

The new dialog makes it easier to create Android Virtual Devices (AVDs) matching real device profiles. The AVDs will also appear in the layout editor to show you how the layouts will look.

More Lint rules

And to wrap things up there are 25 new lint rules which catch several common sources of bugs, for example deviations from Android design guide for icons, checks for mismanaged wakelocks, common sources of locale-related bugs and so on. So make sure you upgrade and let Lint loose on your projects before your next app update!

A minor bug-fix to the Android NDK is also available. For a complete list of what’s new, see the release notes for SDK Tools R21, ADT 21.0.0 and Android NDK R8c.


Tuesday, November 13, 2012

[Gd] Beta Update for Chrome OS

| More

Chrome Releases: Beta Update for Chrome OS

The Beta channel has been updated to 23.0.1271.89 (Platform version 2913.187.0) for all Chrome OS devices. This build contains a number of stability fixes.

Release highlights:
  • Pepper Flash updated to release
  • Network stability changes
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 Chome menu (3 horizontal bars in the upper right corner of the browser).

Josafat Garcia and Ben Henry
Google Chrome

[Gd] Introducing Android 4.2, A New and Improved Jelly Bean

| More

Android Developers Blog: Introducing Android 4.2, A New and Improved Jelly Bean

Posted by Angana Ghosh, Product Manager in Android, and Dirk Dougherty, Android Developer Relations Team

Today we are making Android 4.2 (Jelly Bean) SDK platform available for download. Below are some of the highlights of Android 4.2, API level 17.


We've worked with our partners to run Renderscript computation directly in the GPU on the Nexus 10, a first for any mobile computation platform.

New ways to engage users

Users can now place interactive lock screen widgets directly on their device lock screens, for instant access to favorite apps and content. With just a small update, you can adapt any app widget to run on the lock screen. Daydream is an interactive screensaver mode that users can encounter when their devices are charging or docked in a desk dock. You can create interactive daydreams that users display in this mode, and they can include any type of content.

New interaction and entertainment experiences

Android 4.2 introduces platform support for external displays that goes beyond mirroring. Your apps can now target unique content to any number of displays attached to an Android device.

Enhancements for international users

To help you create better apps for users in languages such as Arabic, Hebrew, and Persian, Android 4.2 includes native RTL support, including layout mirroring. With native RTL support, you can deliver the same great app experience to all of your users with minimal extra work. Android 4.2 also includes a variety of font and character optimizations for Korean, Japanese, Indic, Thai, Arabic and Hebrew writing systems.

To get started developing and testing, download the Android 4.2 Platform from the Android SDK Manager. For a complete overview of what's new, take a look at the Android 4.2 platform highlights or read more of the details in the API overview.


[Gd] A week of digital innovation on GDL

| More

Google Developers Blog: A week of digital innovation on GDL

Author Photo
By Hope Friedland, Agency Marketing

Creative genius meets digital innovation this week on Google Developers Live (GDL). Airing Monday through Friday at 2:30pm EST | 19:30 UTC, the agencies and developers behind some of the coolest stuff in the Creative Sandbox gallery sit down with Google product experts. They’ll talk about what they built, how they did it, and explain their hangups and breakthroughs. Visit the Google+ Event to RSVP, tune in live on GDL, and explore the gallery here.

Here’s the detailed schedule:

Monday: Mobile | archived | featuring Beattie McGuinness Bungay | Watch at

Tuesday: YouTube API | 2:30pm EST | 19:30 UTC | featuring Saatchi & Saatchi LA, Stoop LA, and Ogilvy Paris | Watch at

Wednesday: DoubleClick Rich Media | 2:30pm EST | 19:30 UTC | featuring Grow and Spinnaker | Watch at

Thursday: Google+ API | 2:30pm EST | 19:30 UTC | featuring Resn, Goodby Silverstein & Partners and Hook | Watch at

Friday: Geo API | 2:30pm EST | 19:30 UTC | featuring McCann New York, Goodby Silverstein & Partners and Famous Interactive | Watch at

Connect with us at Tune into live programming, check out the latest in Google tools & technologies, and learn how to make great apps.

Hope Friedland is a marketing manager on the hunt for cutting-edge digital campaigns that will inspire ad agency creatives to come up with the next big idea (see Creative Sandbox). She's an occasional globetrotter and is especially fond of anything creative, interactive and newsworthy.

Posted by Scott Knaster, Editor

[Gd] Upcoming HTTPS Certificate Change

| More

YouTube API Blog: Upcoming HTTPS Certificate Change

If you’re a developer who uses the YouTube API, and if you make your requests to the API using HTTPS, there’s an upcoming change that you should be aware of. Sometime in early 2013, Google will be changing the certificates used for establishing secure HTTPS connections to all of our servers, in what we anticipate will be a backwards-compatible manner. Still, since there are so many slight differences in HTTPS client implementations, we encourage you to test your existing code in advance of this change and to report any issues that you do encounter.

To confirm compatability today in advance of the production change, you can make test API requests to and using version 1, 2, or 2.1 of the Data API, as described in this blog post about our staging environment. The new certificates are already in place on those servers. Be sure that you’re using https:// as the protocol.

If you’re using HTTP instead of HTTPS to access the YouTube Data API then you also won’t be affected by the new security certificates—but you really should start using HTTPS!

Developers who still rely on ClientLogin for handling authorization (which we also don’t recommend) have one additional thing to test, even if your actual YouTube API requests don’t use HTTPS: ClientLogin requests are made Because we do not have a staging domain name set up for, the recommended way of testing ClientLogin in advance of the certificate change is to hardcode the IP address for the domain name in the /etc/hosts file of your computer. Be sure to remove that entry when you’re done testing.

We don’t yet have a specific date in mind for making the switch in production, and when we do, it will be added as an update to this blog post. Please don’t wait until the last minute to test your code, though!

Jeff Posnick, YouTube API Team

[Gd] Dev Channel Update

| More

Chrome Releases: Dev Channel Update

The Dev channel has been updated to 25.0.1323.1 for Windows, Mac, Linux, and Chrome Frame.  A full list of changes in this build is 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.

Jason Kersey
Google Chrome

Monday, November 12, 2012

[Gd] Scaling automatic web optimization with mod_pagespeed and memcached

| More

Google Developers Blog: Scaling automatic web optimization with mod_pagespeed and memcached

Author PhotoBy Jud Porter, Software Engineer, PageSpeed Team

Making your website fast is crucial to creating a great user experience – but doing so can be complicated, with many factors to consider. That’s why we created mod_pagespeed, an open-source Apache module designed to optimize your web pages automatically and easily. We recently introduced our milestone 1.0 release, and today, we’re following it up with the release of mod_pagespeed to our beta channel.

With this release we've reduced server load time and improved utilization for large, multi-server environments. We accomplished this by adding support for memcached (a popular, scalable cache), and improving logging and statistics reporting. With memcached, multiple Apache servers share and fetch the same resources optimized by mod_pagespeed. Logging and reporting have been improved to make it easier to keep track of resource consumption and optimization effectiveness across multiple sites hosted by a single Apache installation. These new features make mod_pagespeed even better for high-traffic sites and network providers hosting many individual websites on their infrastructure.

We’ve also added a number of other new features and optimizations including:
  • Improved CSS optimization. CSS media queries are now supported, and the new fallback_rewrite_css_urls filter allows partial optimization of CSS containing unsupported or proprietary extensions.
  • The default set of optimizers now includes the flatten_css_imports filter, improving out-of-the-box performance.
  • Improved mod_spdy interaction with support for custom mod_pagespeed configuration and filters for SPDY enabled clients. This makes it easier to deploy SPDY on your site, which can significantly decrease page load times.
Check out the release notes for all the new features and improvements. For more information about mod_pagespeed, please see our documentation, and if you have any questions or issues let us know on our issue tracker or discussion group.

Jud Porter is a software engineer working on mod_pagespeed, an Apache module designed to automatically make websites faster. In his free time he enjoys experimenting with cocktails, brushing up on his foosball game, and discovering obscure music.

Posted by Scott Knaster, Editor

[Gd] Giving Tablet Users the Full-Sized Web

| More

Official Google Webmaster Central Blog: Giving Tablet Users the Full-Sized Web

Webmaster level: All

Since we announced Google’s recommendations for building smartphone-optimized websites, a common question we’ve heard from webmasters is how to best treat tablet devices. This is a similar question Android app developers face, and for that the Building Quality Tablet Apps guide is a great starting point.

Although we do not have specific recommendations for building search engine friendly tablet-optimized websites, there are some tips for building websites that serve smartphone and tablet users well.

When considering your site’s visitors using tablets, it’s important to think about both the devices and what users expect. Compared to smartphones, tablets have larger touch screens and are typically used on Wi-Fi connections. Tablets offer a browsing experience that can be as rich as any desktop or laptop machine, in a more mobile, lightweight, and generally more convenient package. This means that, unless you offer tablet-optimized content, users expect to see your desktop site rather than your site’s smartphone site.

The NY Times mobile and tablet experience

Our recommendation for smartphone-optimized sites is to use responsive web design, which means you have one site to serve all devices. If your website uses responsive web design as recommended, be sure to test your website on a variety of tablets to make sure it serves them well too. Remember, just like for smartphones, there are a variety of device sizes and screen resolutions to test.

Another common configuration is to have separate sites for desktops and smartphones, and to redirect users to the relevant version. If you use this configuration, be careful not to inadvertently redirect tablet users to the smartphone-optimized site too.

Telling Android smartphones and tablets apart

For Android-based devices, it’s easy to distinguish between smartphones and tablets using the user-agent string supplied by browsers: Although both Android smartphones and tablets will include the word “Android” in the user-agent string, only the user-agent of smartphones will include the word “Mobile”.

In summary, any Android device that does not have the word “Mobile” in the user-agent is a tablet (or other large screen) device that is best served the desktop site.

For example, here’s the user-agent from Chrome on a Galaxy Nexus smartphone:

Mozilla/5.0 (Linux; Android 4.1.1; Galaxy Nexus Build/JRO03O) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19

Or from Firefox on the Galaxy Nexus:

Mozilla/5.0 (Android; Mobile; rv:16.0) Gecko/16.0 Firefox/16.0

Compare those to the user-agent from Chrome on Nexus 7:

Mozilla/5.0 (Linux; Android 4.1.1; Nexus 7 Build/JRO03S) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Safari/535.19

Or from Firefox on Nexus 7:

Mozilla/5.0 (Android; Tablet; rv:16.0) Gecko/16.0 Firefox/16.0

Because the Galaxy Nexus’s user agent includes “Mobile” it should be served your smartphone-optimized website, while the Nexus 7 should receive the full site.

We hope this helps you build better tablet-optimized websites. As always, please ask on our Webmaster Help forums if you have more questions.

Posted by , Webmaster Trends Analyst, and Scott Main, lead tech writer for