Saturday, January 14, 2012

[Gd] Custom Search JavaScript API is now fully documented!

| More

Google Custom Search: Custom Search JavaScript API is now fully documented!

The Custom Search engineers spent 2011 launching great features. But we still hear from our users that our documentation could do with improvement. We hear you. Today we’re launching some updates to our docs:
  • Comprehensive JavaScript reference for the Custom Search Element. We’ve completely overhauled our Custom Search Element API documentation to provide a comprehensive overview of all the JavaScript methods available. We can’t wait to see what you build with it.

  • More languages. The Help Center is now available in Danish, Dutch, Finnish, French, German, Italian, Japanese, Norwegian, Spanish, and Swedish.

  • Easier navigation and cleaner design. We’ve reorganized the Help Center to make it easier to find the information you’re looking for. Navigation is simpler and more streamlined. Individual articles have been revised and updated, and designed to be more readable.

Documentation is an ongoing effort, and we’ll be continuing to improve both our Help Center and our developer documentation. If you have comments or suggestions, we’d love to see them in our user forum.

Posted by: Riona MacNamara, technical writer
URL: http://googlecustomsearch.blogspot.com/2012/01/custom-search-javascript-api-is-now.html

Friday, January 13, 2012

[Gd] Beta Channel Update for Chromebooks

| More

Chrome Releases: Beta Channel Update for Chromebooks


The Beta channel has been updated to 17.0.963.33 (Platform versions: 1412.87 and 1412.88) for Chromebooks (Samsung Series 5 , and Cr-48). 

This update fixes a number of stability and UI issues.

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.

Orit Mazor
Google Chrome
URL: http://googlechromereleases.blogspot.com/2012/01/beta-channel-update-for-chromebooks_12.html

[Gd] Fridaygram: Science Fair, tiny frog, friggatriskaidekaphobia

| More

The official Google Code blog: Fridaygram: Science Fair, tiny frog, friggatriskaidekaphobia

Author Photo
By Scott Knaster, Google Code Blog Editor

This week we launched the 2012 Google Science Fair for students ages 13 to 18. For the Science Fair, young scientists are asked to pose a question, answer it through scientific inquiry, and report the results online. We’ll pick 90 regional finalists, then choose the top 15 to come to Google in Mountain View, California. Nobel laureates and other distinguished folks will judge the finalists.



Grown-up scientists working in the Papua New Guinea rain forest recently heard what sounded like an insect call, then tried to find out what was making the noise. Eventually they bagged leaf litter from the forest floor and began to sort through it, when a tiny frog jumped out. It was Paedophryne amauensis, and at an average length of 7.7 millimeters, it’s said to be the world’s smallest vertebrate. So watch your step the next time you’re walking around the rain forest.

Finally, in celebration of today’s day and date, please take a look at these wonderful photos from a Friday the 13th party in 1940, where attendees tempted fate by breaking a mirror, walking under a ladder, and otherwise indulging in every superstition they could think of. After you’re done, cross your fingers and hope for a great weekend.


Happy new year! Fridaygram posts are just for fun. Fridaygrams are designed for your Friday afternoon and weekend enjoyment. Each Fridaygram item must pass only one test: it has to be interesting to us nerds.

URL: http://googlecode.blogspot.com/2012/01/fridaygram-science-fair-tiny-frog.html

[Gd] Introducing the Android Design site

| More

Android Developers Blog: Introducing the Android Design site

[This post is by Christian Robertson, who leads the Android visual design group. He is also the designer of the Roboto font family. —Tim Bray]

Ice Cream Sandwich (Android 4.0) is our biggest redesign yet — both for users and developers. We’ve enhanced the UI framework with new interactions and styles that will let you create Android apps that are simpler and more beautiful than ever before.

To help you in that mission, we’re introducing Android Design: the place to learn about principles, building blocks, and patterns for creating world-class Android user interfaces. Whether you’re a UI professional or a developer playing that role, these docs show you how to make good design decisions, big and small.

The Android User Experience Team is committed to helping you design amazing apps that people love, and this is just the beginning. In the coming months, we’ll expand Android Design with more in-depth content. And watch this blog for a series of posts about design, and invitations to Google+ hangouts on the topics you care about most.

So head on over to Android Design, and make something amazing!

URL: http://android-developers.blogspot.com/2012/01/introducing-android-design-site.html

[Gd] Principles Behind Chrome Security

| More

Chromium Blog: Principles Behind Chrome Security

When we first set out to design Chrome, we knew we had a unique opportunity to improve the security of the web. In addition to speed and simplicity, we’ve been adamant that security be a central tenet of everything we build. Chrome and the web have since come a long way, and we’ve been challenged to protect a complex and rapidly changing browser against the many threats that emerge on the web.

After spending tens-of-thousands of hours working on ways to make users safer on the web, we thought it might be worth sharing the Chrome security principles that guide the work that we do.

There are lots of technical details, but the fundamentals have always been simple. Security should compliment your browsing experience, not detract from it, and your browser should be secure by default -- no configuration required. No defense is ever perfect, so we rely on multiple layers of protection to help guard against single points of weakness. We support and fund the security research community in their work to identify weaknesses, and when vulnerabilities are found, we pride ourselves on patching them faster than any other browser.

These principles have served us well in protecting users while keeping Chrome super fast and easy to use. If you develop software, we hope you find them helpful in securing your own product, and if you’re a Chrome user, that they give some insight into the many ways we work to help you surf with confidence.

Posted by Justin Schuh and Travis McCoy, Chrome Security Team
URL: http://blog.chromium.org/2012/01/principles-behind-chrome-security.html

Thursday, January 12, 2012

[Gd] Better page titles in search results

| More

Official Google Webmaster Central Blog: Better page titles in search results

Page titles are an important part of our search results: they’re the first line of each result and they’re the actual links our searchers click to reach websites. Our advice to webmasters has always been to write unique, descriptive page titles (and meta descriptions for the snippets) to describe to searchers what the page is about.

We use many signals to decide which title to show to users, primarily the <title> tag if the webmaster specified one. But for some pages, a single title might not be the best one to show for all queries, and so we have algorithms that generate alternative titles to make it easier for our users to recognize relevant pages. Our testing has shown that these alternative titles are generally more relevant to the query and can substantially improve the clickthrough rate to the result, helping both our searchers and webmasters. About half of the time, this is the reason we show an alternative title.

Other times, alternative titles are displayed for pages that have no title or a non-descriptive title specified by the webmaster in the HTML. For example, a title using simply the word "Home" is not really indicative of what the page is about. Another common issue we see is when a webmaster uses the same title on almost all of a website’s pages, sometimes exactly duplicating it and sometimes using only minor variations. Lastly, we also try to replace unnecessarily long or hard-to-read titles with more concise and descriptive alternatives.

For more information about how you can write better titles and meta descriptions, and to learn more about the signals we use to generate alternative titles, we've recently updated the Help Center article on this topic. Also, we try to notify webmasters when we discover titles that can be improved on their websites through the HTML Suggestions feature in Webmaster Tools; you can find this feature in the Diagnostics section of the menu on the left hand side.

As always, if you have any questions or feedback, please tell us in the Webmaster Help Forum.

Posted by , Webmaster Trends Analyst

URL: http://googlewebmastercentral.blogspot.com/2012/01/better-page-titles-in-search-results.html

[Gd] Beta Channel Update

| More

Chrome Releases: Beta Channel Update

The Beta channel has been updated to 17.0.963.33 for all platforms other than Chrome OS.  This update fixes a number of stability and UI issues.  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.

Jason Kersey
Google Chrome
URL: http://googlechromereleases.blogspot.com/2012/01/beta-channel-update_11.html

Wednesday, January 11, 2012

[Gd] Dev Channel Update

| More

Chrome Releases: Dev Channel Update


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

All

  • Updated V8 - 3.8.4.1
  • Fixed several crashes (Issues 106869, 104046, 106989, 107574, 106891, 108687, 107171, 109002)
  • When a profile is synced, use GAIA name + GAIA photo for avatar - Use Google OAuth userinfo API to get profile information (Issue: 91241)
  • Added support for manifest_version attribute for extensions  (Issue: 62897)
  • Eliminate drawing glitch on WebUI radio controls. (Issue: 105755)
  • Fixed regression with extension omnibox API where whitespace would get trimmed (Issue: 106355)
  • Fix page zoom for plug-in documents (Issues: 106013, 106228)
  • Fix race condition in extension service that causes extensions installed (Issue: 101935)
  • Folders in the wrench menu and application menu are greyed out (Issue: 109196)
  • Better error handling in audio wave out. (Issue: 108685)
  • Made URL filter for web request API mandatory (Issue: 106590)
  • Reject weak RSA and DSA keys when validating certificate chains for HTTPS; related UI (r114879, r116442, r115924)
Windows

  • Popups opened from a maximized window should now be unmaximized (Issue: 106967)
  • Hide panels in presence of full screen app for windows. (Issue: 102731)
  • Provide windows notification of thread termination (Issues: 107974, 103209)
  • Abort in-flight load tasks if the DB has been closed. (Issue: 106722)
Linux
  • Native Client applications should now work on Linux systems where /dev/shm is mounted with the “noexec” option, such as Gentoo (r113228).
  • Fixed issue where Google Chrome does not start on RHEL 6 and derivative Linux distributions. (r116534)
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/01/dev-channel-update_10.html

Tuesday, January 10, 2012

[Gd] Levels in Renderscript

| More

Android Developers Blog: Levels in Renderscript

[This post is by R. Jason Sams, an Android Framework engineer who specializes in graphics, performance tuning, and software architecture. —Tim Bray]

For ICS, Renderscript (RS) has been updated with several new features to simplify adding compute acceleration to your application. RS is interesting for compute acceleration when you have large buffers of data on which you need to do significant processing. In this example we will look at applying a levels/saturation operation on a bitmap.

In this case, saturation is implemented by multiplying every pixel by a color matrix Levels are typically implemented with several operations.

  1. Input levels are adjusted.

  2. Gamma correction.

  3. Output levels are adjusted.

  4. Clamp to the valid range.

A simple implementation of this might look like:

for (int i=0; i < mInPixels.length; i++) {
float r = (float)(mInPixels[i] & 0xff);
float g = (float)((mInPixels[i] >> 8) & 0xff);
float b = (float)((mInPixels[i] >> 16) & 0xff);

float tr = r * m[0] + g * m[3] + b * m[6];
float tg = r * m[1] + g * m[4] + b * m[7];
float tb = r * m[2] + g * m[5] + b * m[8];
r = tr;
g = tg;
b = tb;

if (r < 0.f) r = 0.f;
if (r > 255.f) r = 255.f;
if (g < 0.f) g = 0.f;
if (g > 255.f) g = 255.f;
if (b < 0.f) b = 0.f;
if (b > 255.f) b = 255.f;

r = (r - mInBlack) * mOverInWMinInB;
g = (g - mInBlack) * mOverInWMinInB;
b = (b - mInBlack) * mOverInWMinInB;

if (mGamma != 1.0f) {
r = (float)java.lang.Math.pow(r, mGamma);
g = (float)java.lang.Math.pow(g, mGamma);
b = (float)java.lang.Math.pow(b, mGamma);
}

r = (r * mOutWMinOutB) + mOutBlack;
g = (g * mOutWMinOutB) + mOutBlack;
b = (b * mOutWMinOutB) + mOutBlack;

if (r < 0.f) r = 0.f;
if (r > 255.f) r = 255.f;
if (g < 0.f) g = 0.f;
if (g > 255.f) g = 255.f;
if (b < 0.f) b = 0.f;
if (b > 255.f) b = 255.f;

mOutPixels[i] = ((int)r) + (((int)g) << 8) + (((int)b) << 16)
+ (mInPixels[i] & 0xff000000);
}

This code assumes a bitmap has been loaded and transferred to an integer array for processing. Assuming the bitmaps are already loaded, this is simple.

        mInPixels = new int[mBitmapIn.getHeight() * mBitmapIn.getWidth()];
mOutPixels = new int[mBitmapOut.getHeight() * mBitmapOut.getWidth()];
mBitmapIn.getPixels(mInPixels, 0, mBitmapIn.getWidth(), 0, 0,
mBitmapIn.getWidth(), mBitmapIn.getHeight());

Once the data is processed with the loop, putting it back into the bitmap to draw is simple.

        mBitmapOut.setPixels(mOutPixels, 0, mBitmapOut.getWidth(), 0, 0,
mBitmapOut.getWidth(), mBitmapOut.getHeight());

The full code of the application is around 232 lines when you include code to compute the constants for the filter kernel, manage the controls, and display the image. On the devices I have laying around this takes about 140-180ms to process an 800x423 image.

What if that is not fast enough?

Porting the kernel of this image processing to RS (available at android-renderscript-samples) is quite simple. The pixel processing kernel above, reimplemented for RS looks like:

void root(const uchar4 *in, uchar4 *out, uint32_t x, uint32_t y) {
float3 pixel = convert_float4(in[0]).rgb;
pixel = rsMatrixMultiply(&colorMat, pixel);
pixel = clamp(pixel, 0.f, 255.f);
pixel = (pixel - inBlack) * overInWMinInB;
if (gamma != 1.0f)
pixel = pow(pixel, (float3)gamma);
pixel = pixel * outWMinOutB + outBlack;
pixel = clamp(pixel, 0.f, 255.f);
out->xyz = convert_uchar3(pixel);
}

It takes far fewer lines of code because of the built-in support for vectors of floats, matrix operations, and format conversions. Also note that there is no loop present.

The setup code is slightly more complex because you also need to load the script.

        mRS = RenderScript.create(this);
mInPixelsAllocation = Allocation.createFromBitmap(mRS, mBitmapIn,
Allocation.MipmapControl.MIPMAP_NONE,
Allocation.USAGE_SCRIPT);
mOutPixelsAllocation = Allocation.createFromBitmap(mRS, mBitmapOut,
Allocation.MipmapControl.MIPMAP_NONE,
Allocation.USAGE_SCRIPT);
mScript = new ScriptC_levels(mRS, getResources(), R.raw.levels);

This code creates the RS context. It then uses this context to create two memory allocations to hold the RS copy of the bitmap data. Last, it loads the script to process the data.

Also in the source there are a few small blocks of code to copy the computed constants to the script when they change. Because we reflect the globals from the script this is easy.

        mScript.set_inBlack(mInBlack);
mScript.set_outBlack(mOutBlack);
mScript.set_inWMinInB(mInWMinInB);
mScript.set_outWMinOutB(mOutWMinOutB);
mScript.set_overInWMinInB(mOverInWMinInB);

Earlier we noted that there was no loop to process all the pixels. The RS code that processes the bitmap data and copies the result back looks like this:

        mScript.forEach_root(mInPixelsAllocation, mOutPixelsAllocation);
mOutPixelsAllocation.copyTo(mBitmapOut);

The first line takes the script and processes the input allocation and places the result in the output allocation. It does this by calling the natively compiled version of the script above once for each pixel in the allocation. However, unlike the dalvik implementation, the primitives will automatically launch extra threads to do the work. This, combined with the performance of native code can produce large performance gains. I’ll show the results with and without the gamma function working because it adds a lot of cost.

800x423 image

DeviceDalvikRSGain
Xoom174ms39ms4.5x
Galaxy Nexus139ms30ms4.6x
Tegra 30 device136ms19ms7.2x

800x423 image with gamma correction

DeviceDalvikRSGain
Xoom994ms259ms3.8x
Galaxy Nexus787ms213ms3.7x
Tegra 30 device783ms104ms7.5x

These large gains represent a large return on the simple coding investment shown above.

URL: http://android-developers.blogspot.com/2012/01/levels-in-renderscript.html

[Gd] Join us for the first ever G|Tanzania and G|Ethiopia

| More

The official Google Code blog: Join us for the first ever G|Tanzania and G|Ethiopia

Author Photo
By Melina Mattos, Program Manager, Google Africa

Cross-posted from the Google Africa Blog

2011 was a busy year for the Google Africa team. The g|Day developer and business conference visited Senegal, Ghana, Nigeria, Cameroon, Uganda, Kenya, South Africa, and Angola in 2011, expanding from 5 countries in 2010 and from 2 in 2009. Over the year, business professionals, entrepreneurs, and marketers have explored innovative technologies to get online and to serve their business needs. Developers and webmasters have had an in-depth look at Android, Chrome, App Engine, Maps, Webmaster Tools, and more.

While we are excited about all the activity growing in the local communities, we are always looking for opportunities to engage with new communities of developers, business leaders, and entrepreneurs who are as passionate about technology as we are. Therefore, we are excited to kick off the 2012 G-Day roadshow with G-Tanzania and G-Ethiopia.

G-Tanzania will be held on February 2nd and 3rd at Mlimani City Conference Center in Dar es Salaam, followed by G-Ethiopia on February 7th and 8th at the Hilton Hotel and Conference Center in Addis Ababa.

Registration is now open for these free events. Space is limited so be sure to register as soon as possible for G-Tanzania and G-Ethiopia to improve the chances of your application being accepted. We look forward to seeing you soon!


Melina Mattos is a Program Manager for the Sub-Saharan Africa Outreach team. When she's not busy working with developer and business communities in Africa, she's either exploring the great outdoors, sitting on a plane, or playing with her camera.

Posted by Scott Knaster, Editor
URL: http://googlecode.blogspot.com/2012/01/join-us-for-first-ever-gtanzania-and.html

[Gd] Beta Channel Update for Chromebooks

| More

Chrome Releases: Beta Channel Update for Chromebooks


The Google Chrome team is happy to announce the release of Chrome 17 on the Beta Channel for Chromebooks (Acer AC700, Samsung Series 5, and Cr-48).

Chrome version 17.0.963.27 (Platform version: 1412.64.0)

Release highlights:
  • Update Pepper Flash
  • New photo editor
  • File browser improvements
  • OpenVPN support
  • Stability & security 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’ under the wrench menu.

Orit Mazor
Google Chrome
URL: http://googlechromereleases.blogspot.com/2012/01/beta-channel-update-for-chromebooks.html

[Gd] Web Fonts, now more compressed

| More

The official Google Code blog: Web Fonts, now more compressed

Author Photo
By Raph Levien, Engineer, Google Web Fonts

One of Google’s core principles is that "fast is better than slow", and the Web Fonts team takes that to heart. We’re always looking for ways to make web fonts load faster, and that’s doubtless a key factor in our rapid user adoption. Today, we are announcing a new way to make web fonts smaller and faster, in collaboration with the Monotype Imaging Fonts.com Web Fonts team. Google Web Fonts now implements Monotype Imaging’s MicroType Express compression format, which yields an approximate 15% savings in file size over using gzip alone. This change will automatically speed up Google Web Fonts for Internet Explorer browsers (version 6 and up). We’re also actively working to offer improved compression with other modern browsers, including Google Chrome.

We’ve kept the interface simple, so designers don’t need to update their integrations in any way — we’ll automatically upgrade the CSS snippet and font files so that site designers and visitors get their fonts faster. We’ve done this for previous speed optimizations as well, such as automatically stripping the hints (metadata used for improving rendering quality on Windows) when serving fonts to Mac, iOS, and Android clients. We expect that most future optimizations will also be automatic and transparent.

Monotype Imaging has agreed to make MicroType Express available to the public at no cost; the license can be found at monotypeimaging.com/aboutus/mtx-license. We believe it’s friendly to both open source and proprietary implementations.

Today, we are also releasing an implementation of MicroType Express compression as part of the Embedded OpenType converter in the open-source sfntly library, adding to the existing WOFF compression. The sfntly library, developed by the Google Internationalization Engineering team, serves as the core conversion engine in Google Web Fonts for subsetting, hint stripping, and related functions of our dynamic serving path. We hope that all web font services, as well as people hosting their own web fonts, will use sfntly to optimize font serving across the web.

We are proud to be working with Monotype Imaging, and we look forward to learning more from designers, users, sites and other partners to advance the state of web fonts together!


Raph Levien is an expert on fonts and graphics technologies. Raph designed Inconsolata, one of the fonts available on the Web Font API. Raph enjoys photography and spending time with his family.

Posted by Scott Knaster, Editor

URL: http://googlecode.blogspot.com/2012/01/web-fonts-now-more-compressed.html

[Gd] Web Fonts, now more compressed

| More

Google Web Fonts: Web Fonts, now more compressed

One of Google’s core principles is that "fast is better than slow", and the Web Fonts team takes that to heart. We’re always looking for ways to make web fonts load faster, and that’s doubtless a key factor in our rapid user adoption. Today, we are announcing a new way to make web fonts smaller and faster, in collaboration with the Monotype Imaging Fonts.com Web Fonts team. Google Web Fonts now implements Monotype Imaging’s MicroType Express compression format, which yields an approximate 15% savings in file size over using gzip alone. This change will automatically speed up Google Web Fonts for Internet Explorer browsers (version 6 and up). We’re also actively working to offer improved compression with other modern browsers, including Google Chrome.

We’ve kept the interface simple, so designers don’t need to update their integrations in any way — we’ll automatically upgrade the CSS snippet and font files so that site designers and visitors get their fonts faster. We’ve done this for previous speed optimizations as well, such as automatically stripping the hints (metadata used for improving rendering quality on Windows) when serving fonts to Mac, iOS, and Android clients. We expect that most future optimizations will also be automatic and transparent.

Monotype Imaging has agreed to make MicroType Express available to the public at no cost; the license can be found at monotypeimaging.com/aboutus/mtx-license. We believe it’s friendly to both open source and proprietary implementations.

Today, we are also releasing an implementation of MicroType Express compression as part of the Embedded OpenType converter in the open-source sfntly library, adding to the existing WOFF compression. The sfntly library, developed by the Google Internationalization Engineering team, serves as the core conversion engine in Google Web Fonts for subsetting, hint stripping, and related functions of our dynamic serving path. We hope that all web font services, as well as people hosting their own web fonts, will use sfntly to optimize font serving across the web.

We are proud to be working with Monotype Imaging, and we look forward to learning more from designers, users, sites and other partners to advance the state of web fonts together!

Posted by Raph Levien, Engineer, Google Web Fonts
URL: http://googlewebfonts.blogspot.com/2012/01/web-fonts-now-more-compressed.html

[Gd] Stable Channel Update for Chromebooks

| More

Chrome Releases: Stable Channel Update for Chromebooks

The Stable channel has been updated to 16.0.912.75 (Platform version: 1193.158 for Chromebooks (Acer AC700, Samsung Series 5, and Cr-48).


Highlights:
  • Security fixes
  • Stability fixes
If you find new issues, please let us know by visiting our help site or filing a bug. You can also submit feedback using "Report an issue" under the wrench icon. Interested in switching to the Dev channel? Find out how.

Josafat Garcia
Google Chrome

URL: http://googlechromereleases.blogspot.com/2012/01/stable-channel-update-for-chromebooks.html

[Gd] Happy Birthday High Replication Datastore: 1 year, 100,000 apps, 0% downtime

| More

Google App Engine Blog: Happy Birthday High Replication Datastore: 1 year, 100,000 apps, 0% downtime

Once upon a time, the only way to store persistent data in App Engine was to use the Master/Slave Datastore. Although it was a transactional, massively scalable, fully managed, distributed storage system running on Google’s world-class infrastructure, its availability was tied to the availability of a single datacenter, and when you’re serving hundreds of thousands of applications, relying on any single datacenter is simply not sufficient. One year ago today we unveiled a new offering that was specifically designed to address this weakness: the High Replication Datastore (HRD). Still transactional, still massively scalable, still fully managed, still running on Google’s world-class infrastructure, but with the ability to withstand multiple datacenter outages and no planned downtime!



By the time Google I/O came around last May, HRD was performing beautifully and our customers were happy, so we took the next step and made HRD the default option for all new App Engine applications.

In June we made HRD available in our SDK so that customers could easily experiment with the new consistency guarantees (paxos on your laptop!), and we launched the first version of our migration tool to make it easy to move your apps from Master/Slave to HRD.

In October we released XG Transactions, our first HRD-only feature, which allows users to transact across entity groups.

In November we brought App Engine out of preview and added a 99.95% SLA for HRD applications.

In our most recent release we launched an updated version of our HRD migration tool that ties the duration of the read-only period to your write-rate, rather than the size of your dataset. This makes your migration quick, simple, and easy to plan for regardless of how much data you have. One App Engine customer recently migrated over 500G of Datastore data with only a 10 minute read-only period!

Throughout all this, HRD has had no system-wide downtime (planned or unplanned) and has grown to serve over 3 billion requests per day. Needless to say it’s been a phenomenal year.

We realize that moving data requires planning, testing, coordination, and a strong stomach. However, we believe strongly that HRD provides a fundamentally better service than Master/Slave, and we encourage all our customers to migrate to HRD. Over the coming months you can expect to see further improvements to our migration tools (Blob migrations are on the way!), more HRD-only features like Full Text Search, and of course, more 9s than you can shake a stick at.


Posted by Max Ross, Datastore Tech Lead
URL: http://googleappengine.blogspot.com/2012/01/happy-birthday-high-replication.html

[Gd] Stable Channel Update

| More

Chrome Releases: Stable Channel Update

The Stable channel has been updated to 16.0.912.75 for Windows, Mac, Linux and Chrome Frame

Security fixes and rewards:
Please see the Chromium security page for more detail. Note that the referenced bugs may be kept private until a majority of our users are up to date with the fix

  • [$1000] [106672] High CVE-2011-3921: Use-after-free in animation frames. Credit to Boris Zbarsky of Mozilla.
  • [$1000] [107128] High CVE-2011-3919: Heap-buffer-overflow in libxml. Credit to Jüri Aedla.
  • [108006] High CVE-2011-3922: Stack-buffer-overflow in glyph handling. Credit to Google Chrome Security Team (Cris Neckar).
The bug [108006] was detected using AddressSanitizer.

Full details about what changes have been made in this release are available in the SVN revisions log. Interested in switching to another channel?  Find out how.  If you find a new issue, please let us know by filing a bug.

Anthony Laforge
Google Chrome
URL: http://googlechromereleases.blogspot.com/2012/01/stable-channel-update.html

[Gd] Beta Channel Update

| More

Chrome Releases: Beta Channel Update

The Chrome team is excited to announce the release of Chrome 17 to the Beta Channel.  17.0.963.26 contains a number of new features including:
  • New Extensions APIs
  • Updated Omnibox Prerendering
  • Download Scanning Protection
  • Many other small changes
More detailed updates are available on the Chrome Blog.  Full details about what changes are in this release are available in the SVN revision log.  Interested in chilling on the beta channel?  Find out how.  If you find a new issue, please let us know by filing a bug.


Jason Kersey
Google Chrome
URL: http://googlechromereleases.blogspot.com/2012/01/beta-channel-update.html

[Gd] Dev Channel Update for Chromebooks

| More

Chrome Releases: Dev Channel Update for Chromebooks


The Dev channel has been updated to
17.0.963.27 (Platform version: 1412.64) for Chromebooks (Acer AC700, Samsung Series 5 , and Cr-48).

Highlights:
  • Pepper flash: release 11.1.31.209
  • Stability improvements
  • File Browser improvements
If you find new issues, please let us know by visiting our help site or filing a bug. You can also submit feedback using "Report an issue" under the wrench icon. Interested in switching to the Dev channel? Find out how.

Orit Mazor
Google Chrome
URL: http://googlechromereleases.blogspot.com/2012/01/dev-channel-update-for-chromebooks.html

[Gd] Fun with Apps Script at the Google Apps Developer Hackathon in NYC

| More

Google Apps Developer Blog: Fun with Apps Script at the Google Apps Developer Hackathon in NYC

Editor’s Note:This is a guest post from John Watkinson. John is a developer and the co-founder of Docracy, a start-up company that hosts crowd-sourced legal documents and provides free e-signing services. He recently attended, and won first place, at the Google Apps Hackathon in NYC. Here's John's story about the event.

Our company is focused on documents in the cloud, so we attended the Google Apps Developer Hackathon on December 1st in New York City to learn more about the various Google Apps APIs, and how we can best integrate with them. During the initial presentations from Ryan Boyd and Saurabh Gupta of the Google Apps team, we were delighted to learn about Apps Script. It provides a powerful JavaScript interface into Google Apps, including Docs, Calendar, Gmail, Maps and many others.

Hack #1: “The Wolf”

After the tech presentations, we formed teams and started hacking with the technology. I joined a team with Matt Hall (also from Docracy), Nick Siderakis, Jeff Hsin and Scott Thompson. We struck upon the idea of creating a function that would make calls to Wolfram Alpha via their developer API. It took all five of us hacking away for a few hours to parse the Alpha results properly, but eventually we had an Apps Script custom function for Spreadsheet called “wolf”. It had a kind of magic feeling about it, as you could pass simple English-language queries into the function and get back exact numeric results in your Google Spreadsheet. Some example working queries:

  • =wolf("distance from the earth to the moon in km") Answer: 403,778km
  • =wolf("population of canada in 1960") Answer: 17.9 million
  • =wolf("average january temperature in buenos aires") Answer: 64F
  • =wolf("9th digit of pi") Answer: 5
  • =wolf("count of olympic medals won by japan in 2008") Answer: 25

Any function in Apps Script can be used as a spreadsheet function directly, so our main wolf function is the entry point to our script. We use Apps Script’s UrlFetch service to make our API call to Wolfram Alpha (note, the full URL is truncated for brevity):


var response = UrlFetchApp.fetch("http://api.wolframalpha.com/..." +
encodeURIComponent(input));

The response from Alpha is an XML file that includes a lot of metadata we don’t need. So, we used a recursive function and the XML manipulation tools in Apps Script to track down the element of interest to us (below is a simplified version):


function findText(e) {
if (e.getName().getLocalName() == 'plaintext') {
return e.getText();
} else {
var children = e.getElements();
for (var i = 0; i < children.length; i++) {
var result = findText(children[i]);
if (result) return result;
}
return null;
}
}

A little bit more work is required to parse the result, as sometimes Alpha will report numbers in words (i.e. “40.7 million”), but otherwise that’s it!

For a small script, it definitely feels pretty powerful! Our little invention earned us a first place finish at the hackathon, and the prizes were little indoor RC-controlled helicopters. I managed to irreparably damage mine in a gruesome crash into my refrigerator already, but I hear that many of the others are still serviceable and flying missions daily.

Hack #2: Sheet Sweeper

Once we were comfortable with the Apps Script Services (and aware of its capabilities with spreadsheets in particular), a side project emerged that used some of the other integration features available. Apps Script functions can listen for events that are triggered by the editing of a spreadsheet cell (if the user grants the appropriate permissions). Using these onEdit Event Handlers, we wrote an implementation of the classic game Mine Sweeper that is playable right in the spreadsheet!

You can play the game by making a copy of this spreadsheet and then clicking the menu item SheetSweeper > New Game. When you play the game, the script responds to onEdit events that are dispatched from the spreadsheet.


function onOpen() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var menuEntries = [{name: "New Game", functionName: "startGame"}];
ss.addMenu("SheetSweeper", menuEntries);
}

Then when the user edits a cell, the script responds and implements the mine sweeper logic:


function onEdit(event) {
var ss = event.source.getActiveSheet();
var cell = ss.getActiveCell();
if (cell.getValue() == 'x') {
// Flagging a mine
flagCell(cell);
} else {
// Clearing a cell
clearCell(cell);
}
}

We had a great time at the hackathon, and are happy to have been introduced to Apps Script. We believe it has an exciting future ahead of it.

John Watkinson   profile

John is a developer and the co-founder of Docracy, a start-up company that hosts crowd-sourced legal documents and provides free e-signing services. He previously co-founded the mobile development shop Larva Labs, which developed the popular Androidify app with the Google Creative Lab.

URL: http://googleappsdeveloper.blogspot.com/2012/01/fun-with-apps-script-at-google-apps.html

[Gd] Dev Channel Update

| More

Chrome Releases: Dev Channel Update

The Dev channel has been updated to 17.0.963.26 for all platforms except ChromeOS. This release contains the following updates:

All

  • Updated V8 - 3.7.12.12
  • Make webstore installs work when the Downloads folder is missing. (Issue: 108812)
Mac
  • Fixed crashes when running on top of Apple's software OpenGL renderer. (Issue: 106891)
  • Fix the fullscreen exit bubble's shadow on lion. (Issue: 106798)

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

Jason Kersey
Google Chrome
URL: http://googlechromereleases.blogspot.com/2012/01/dev-channel-update.html