Saturday, January 29, 2011

[Gd] Using Webmaster Tools like an SEO

| More

Official Google Webmaster Central Blog: Using Webmaster Tools like an SEO

Webmaster Level: Beginner to Intermediate

We on the Webmaster Central team aren’t SEOs, but that doesn’t stop me from pretending to be one! In our latest video, I’ll talk about utilizing some features in Webmaster Tools as though I were the SEO for www.googlestore.com.


Just as a grandparent raves about their grandchild, I could have gone on for hours about (my baby!) Webmaster Tools. Thankfully I stopped myself -- but if you have tips to share or questions to ask, please comment below.

Posted by Maile Ohye, Developer Programs Tech Lead
URL: http://googlewebmastercentral.blogspot.com/2011/01/using-webmaster-tools-like-seo.html

Friday, January 28, 2011

[Gd] Chrome OS Beta Channel Update

| More

Google Chrome Releases: Chrome OS Beta Channel Update



The Chrome OS Beta channel has been updated to 0.9.130.14 with Chrome 8.0.522.344

This release includes the security fix listed below:
  • Kernel is vulnerable to CVE-2010-4258 (10234)
Additionally there are following stability bug fixes included in the release:
  • 3G: Show proper error message for post connection failure (10282)
  • Network disconnect crash (8587)
  • flimflam crash (8871)
  • Need to support raw WPA psk (10288)
  • WPA2+TKIP makes ChromeOS unusable (10249)
  • Sleeping/resuming the device twice with wifi disabled - fails enable wifi (9405)
  • Report update success/fail on first boot post AU update attempt (9198)
  • Sound turns static-like after listening to music or using video chat (10720)
  • flimflam: use -Wall (9709)
If you find new issues, please let us know by visiting our help site or filing a bug.

Josafat Garcia
Chrome OS Team
URL: http://googlechromereleases.blogspot.com/2011/01/chrome-os-beta-channel-update.html

Thursday, January 27, 2011

[Gd] Understanding various status codes

| More

AdWords API Blog: Understanding various status codes


In the AdWords API, entities may have different values for the same status.  For instance, when you delete a campaign the status will be set to DELETED . But when you delete an  AdGroupAd object, the status will be DISABLED.

campaign.setStatus(CampaignStatus.DELETED);
operation.setOperator(Operator.SET);
campaignService.mutate(operations);

adGroupAd.setStatus(AdGroupAdStatus.DISABLED);
operation.setOperator(Operator.SET);
adGroupAdService.mutate(operations);

The following table shows the statuses available for each type, as well as the operation needed to change the status.  (Note: Some objects have more than one status field, but in this case we are only showing the user status.)

Type
Newly Added
Enable/ Active
Paused
Delete / Deactivated
action : mutate
operation: ADD
status : ACTIVE
action : mutate
operation: SET
status : ACTIVE
action : mutate
operation: SET
status: PAUSED
action : mutate
operation : SET
status: DELETED
action: mutate
operation: ADD
status: ENABLED
action : mutate
operation: SET
status : ENABLED
action: mutate
operation: SET
status : PAUSED
action : mutate
operation: SET
status: DELETED
action : mutate
operation: ADD
status: ENABLED
action : mutate
operation : SET
status : ENABLED
action : mutate
operation : SET
status : PAUSED
action: mutate
operation : REMOVE
status: DISABLED
action: mutate
operation: ADD
status: ACTIVE
action: mutate
operation: SET
status: ACTIVE
action: mutate
operation: SET
status: PAUSED
action: mutate
operation: REMOVE
status: DELETED
action: mutate
operation: ADD
status: ACTIVE
N/A
N/A
action: mutate
operation: REMOVE
status: DELETED
action:mutate
operation: ADD
status: ACTIVE
N/A
N/A
action: mutate
operation: SET
status: DELETED
action: mutate
operation: ADD
status: OPEN
N/A
N/A
action: mutate
operation: SET
status: CLOSED
action: mutate
operation: ADD
status: ACTIVE
N/A
N/A
action: mutate
operation: SET
status: DELETED


You can see code examples demonstrating how to use statuses in our client libraries. If you have any questions please post them on the AdWords API forum.

- Naoki Ishihara, AdWords API Team
URL: http://adwordsapi.blogspot.com/2011/01/understanding-various-status-codes.html

[Gd] Discover v2010 - Campaign Targeting

| More

AdWords API Blog: Discover v2010 - Campaign Targeting

AdWords supports several campaign targeting options to ensure that your ads are shown only to the target audience you choose. As a developer, you can use the CampaignTargetService of AdWords API to set your campaign targets programmatically. This blog summarizes the various targeting options available through CampaignTargetService and how you can use them in your application.

Ad Schedule Target

AdScheduleTarget allows you to specify the dates and times at which your ads will be displayed. For example, the following C# code snippet targets your ads to run only on Mondays to Fridays, 9 AM to 5 PM.

List targets = new List();
DayOfWeek[] days = {
DayOfWeek.MONDAY,
DayOfWeek.TUESDAY,
DayOfWeek.WEDNESDAY,
DayOfWeek.THURSDAY,
DayOfWeek.FRIDAY
};

for (int i = 0; i < days.Length; i++) {
AdScheduleTarget target = new AdScheduleTarget();
target.dayOfWeek = days[i];
target.startHour = 9;
target.startMinute = MinuteOfHour.ZERO;
target.endHour = 17;
target.endMinute = MinuteOfHour.ZERO;
target.bidMultiplier = 1.0;
targets.Add(target);
}
AdScheduleTargetList scheduleTargetList = new AdScheduleTargetList();
scheduleTargetList.campaignId = campaignId;
scheduleTargetList.targets = targets.ToArray();

// Create ad schedule target set operation.
CampaignTargetOperation scheduleTargetOperation =
new CampaignTargetOperation();
scheduleTargetOperation.@operator = Operator.SET;
scheduleTargetOperation.operand = scheduleTargetList;

CampaignTargetReturnValue retVal = campaignTargetService.mutate(
new CampaignTargetOperation[] { scheduleTargetOperation });

If you create an empty AdScheduleTargetList, then your ads are served all the time. You can also specify a bidMultiplier (a double value between 0.1 and 10) to adjust your bid during a given ad schedule.

Demographic Targeting

DemographicTarget allows you to specify the gender and age group of your ad’s audience. The following code snippet targets your ad to females of the age range 18 to 24.

AgeTarget ageTarget = new AgeTarget();
ageTarget.age = AgeTargetAge.AGE_18_24;
GenderTarget genderTarget = new GenderTarget();
genderTarget.gender = GenderTargetGender.FEMALE;

DemographicTargetList demographicTargetList = new DemographicTargetList();
demographicTargetList.campaignId = campaignId;
demographicTargetList.targets = new DemographicTarget[] { ageTarget,
genderTarget };

If you create an empty DemographicTargetList, then your ads are served to audience of all demographics. You can also specify a bidModifier (0 to 500) to modify the bids for a specific demographic target as an addition percentage. The new bid will be (1 + 0.01 * bidModifier) * bid.

Geographic Targeting

GeoTarget allows you to specify the geographic regions to target or exclude for showing your ads. For example, the following code snippet targets your ad to run only in US, but excludes New York city.

CountryTarget countryTarget = new CountryTarget();
countryTarget.countryCode = "US";
CityTarget cityTarget = new CityTarget();
cityTarget.cityName = "New York";
cityTarget.countryCode = "US";
cityTarget.excluded = true;

GeoTargetList geoTargetList = new GeoTargetList();
geoTargetList.campaignId = campaignId;
geoTargetList.targets = new GeoTarget[] { countryTarget, cityTarget };

If you create an empty GeoTargetList, then your ads are served in all geographic regions. The list of all supported geotargeting options and their codes are available here.

Language targeting

LanguageTarget allows you to target your ads for audiences that speaks a particular language. The following code snippet targets your ads only to Chinese (Simplified) and English speaking audiences.

LanguageTarget langTarget1 = new LanguageTarget();
langTarget1.languageCode = "en";
LanguageTarget langTarget2 = new LanguageTarget();
langTarget2.languageCode = "zh_CN";

// Create language targets.
LanguageTargetList langTargetList = new LanguageTargetList();
langTargetList.campaignId = campaignId;
langTargetList.targets = new LanguageTarget[] { langTarget1, langTarget2 };

If you create an empty LanguageTargetList, then all languages are targeted. The list of all supported language targets and their codes are available here.

Mobile Targeting

MobileTarget allows you to target your ads for one or more mobile carriers or platforms. For example, the following code snippet targets your ads to show only on Android device, and on TMobile(US) carrier.

// Target devices - Android.
MobilePlatformTarget mobilePlatformTarget1 = new MobilePlatformTarget();
mobilePlatformTarget1.platformName = "Android";

// Target Carriers - T-Mobile US.
MobileCarrierTarget mobileCarrierTarget1 = new MobileCarrierTarget();
mobileCarrierTarget1.carrierName = "T-Mobile";
mobileCarrierTarget1.countryCode = "US";

MobileTargetList mobileTargetList = new MobileTargetList();
mobileTargetList.campaignId = campaignId;
mobileTargetList.targets = new MobileTarget[] { mobilePlatformTarget1,
mobileCarrierTarget1 };

If you create an empty MobileTargetList, then all mobile devices and mobile networks are targeted. The list of all supported mobile devices and networks are available here and here.

Network Targets

NetworkTarget allows you to target your ads for one networks (e.g. Google Search Network, Google Display Network, etc.). For example, the following code snippet targets your ads to show only on Google Search and Search Partners.

// Specifying GOOGLE_SEARCH is necessary if you want to target SEARCH_NETWORK.
NetworkTarget networkTarget1 = new NetworkTarget();
networkTarget1.networkCoverageType = NetworkCoverageType.GOOGLE_SEARCH;
NetworkTarget networkTarget2 = new NetworkTarget();
networkTarget2.networkCoverageType = NetworkCoverageType.SEARCH_NETWORK;

// Create network targets.
NetworkTargetList networkTargetList = new NetworkTargetList();
networkTargetList.campaignId = campaignId;
networkTargetList.targets = new NetworkTarget[] {
networkTarget1, networkTarget2 };

Unlike other targets, if you create an empty NetworkTargetList, then your ads won’t be served to any network.

Platform Targets

PlatformTarget allows you to specify the type of device platform (Desktop and High End Mobile) to target your ads for. The following code snippets targets your ads to run only on high end mobile devices.

PlatformTarget platformTarget = new PlatformTarget();
platformTarget.platformType = PlatformType.HIGH_END_MOBILE;

// Create platform targets.
PlatformTargetList platformTargetList = new PlatformTargetList();
platformTargetList.campaignId = campaignId;
platformTargetList.targets = new PlatformTarget[] { platformTarget };

As always, please post any questions to the AdWords API Forum.

-- Anash P. Oommen, AdWords API Team
URL: http://adwordsapi.blogspot.com/2011/01/discover-v2010-campaign-targeting.html

[Gd] Dev Plugin support for Firefox 4

| More

Google Web Toolkit Blog: Dev Plugin support for Firefox 4

We are pleased to announce that the GWT Developer Plugin now officially supports Firefox 4 on all platforms that Firefox ships on: Win x86, Linux x86/x86_64, Mac x86/x86_64. Please be sure that you are using Firefox 4 beta 9 or newer.


If you already have the plugin installed, you can use the normal add-on update process. If you are a Firefox 3.x user who has been waiting to try Firefox 4, the add-on will automatically update when you launch Firefox 4 with your current profile.


As always, you can always download the latest GWT Developer plugin for your browser from http://gwt.google.com/missing-plugin

URL: http://googlewebtoolkit.blogspot.com/2011/01/dev-plugin-support-for-firefox-4.html

[Gd] Dev Channel Update

| More

Google Chrome Releases: Dev Channel Update


The Chrome Dev channel has been updated to 10.0.648.6 for all platforms.  This build primarily contains stability fixes from the previous dev channel release. Full details about the Chrome changes are available in the SVN revision log. If you find new issues, please let us know by filing a bug. Want to change to another Chrome release channel? Find out how.

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

[Gd] Beta Channel Update

| More

Google Chrome Releases: Beta Channel Update

The Beta channel has been updated to 9.0.597.83 for Windows, Mac, Linux, and Chrome Frame.

This is primarily a stability/ minor bug fix release and the set of changes can be found here.

If you find new issues, please let us know by filing a bug at 
http://code.google.com/p/chromium/issues/entry

Anthony Laforge
Google Chrome
URL: http://googlechromereleases.blogspot.com/2011/01/beta-channel-update_25.html

Wednesday, January 26, 2011

[Gd] Android 3.0 Platform Preview and Updated SDK Tools

| More

Android Developers Blog: Android 3.0 Platform Preview and Updated SDK Tools

Android 3.0 (Honeycomb) is a new version of the Android platform that is designed from the ground up for devices with larger screen sizes, particularly tablets. It introduces a new “holographic” UI theme and an interaction model that builds on the things people love about Android — multitasking, notifications, widgets, and others — and adds many new features as well.

Besides the user-facing features it offers, Android 3.0 is also specifically designed to give developers the tools and capabilities they need to create great applications for tablets and similar devices, together with the flexibility to adapt existing apps to the new UI while maintaining compatibility with earlier platform versions and other form-factors.

Today, we are releasing a preview of the Android 3.0 SDK, with non-final APIs and system image, to allow developers to start testing their existing applications on the tablet form-factor and begin getting familiar with the new UI patterns, APIs, and capabilties that will be available in Android 3.0.

Here are some of the highlights:

UI framework for creating great apps for larger screen devices: Developers can use a new UI components, new themes, richer widgets and notifications, drag and drop, and other new features to create rich and engaging apps for users on larger screen devices.

High-performance 2D and 3D graphics: A new property-based animation framework lets developers add great visual effects to their apps. A built-in GL renderer lets developers request hardware-acceleration of common 2D rendering operations in their apps, across the entire app or only in specific activities or views. For adding rich 3D scenes, developers take advantage of a new 3D graphics engine called Renderscript.

Support for multicore processor architectures: Android 3.0 is optimized to run on either single- or dual-core processors, so that applications run with the best possible performance.

Rich multimedia: New multimedia features such as HTTP Live streaming support, a pluggable DRM framework, and easy media file transfer through MTP/PTP, give developers new ways to bring rich content to users.

New types of connectivity: New APIs for Bluetooth A2DP and HSP let applications offer audio streaming and headset control. Support for Bluetooth insecure socket connection lets applications connect to simple devices that may not have a user interface.

Enhancements for enterprise: New administrative policies, such as for encrypted storage and password expiration, help enterprise administrators manage devices more effectively.

For an complete overview of the new user and developer features, see the Android 3.0 Platform Highlights.

Additionally, we are releasing updates to our SDK Tools (r9), NDK (r5b), and ADT Plugin for Eclipse (9.0.0). Key features include:

  • UI Builder improvements in the ADT Plugin:
    • Improved drag-and-drop in the editor, with better support for included layouts.
    • In-editor preview of objects animated with the new animation framework.
    • Visualization of UI based on any version of the platform. independent of project target. Improved rendering, with better support for custom views.

To find out how to get started developing or testing applications using the Android 3.0 Preview SDK, see the Preview SDK Introduction. Details about the changes in the latest versions of the tools are available on the SDK Tools, the ADT Plugin, and NDK pages on the site.

Note that applications developed with the Android 3.0 Platform Preview cannot be published on Android Market. We’ll be releasing a final SDK in the weeks ahead that you can use to build and publish applications for Android 3.0.

URL: http://android-developers.blogspot.com/2011/01/android-30-platform-preview-and-updated.html

Tuesday, January 25, 2011

[Gd] How to deal with planned site downtime

| More

Official Google Webmaster Central Blog: How to deal with planned site downtime

Webmaster level: Intermediate to Advanced

Once in a while we get asked whether a site’s visibility in Google’s search results can be impacted in a negative way if it’s unavailable when Googlebot tries to crawl it. Sometimes downtime is unavoidable: a webmaster might decide to take a site down due to ongoing site maintenance, or legal or cultural requirements. Outages that are not clearly marked as such can negatively affect a site’s reputation. While we cannot guarantee any crawling, indexing or ranking, there are methods to deal with planned website downtime in a way that will generally not negatively affect your site’s visibility in the search results.

For example, instead of returning an HTTP result code 404 (Not Found) or showing an error page with the status code 200 (OK) when a page is requested, it’s better to return a 503 HTTP result code (Service Unavailable) which tells search engine crawlers that the downtime is temporary. Moreover, it allows webmasters to provide visitors and bots with an estimated time when the site will be up and running again. If known, the length of the downtime in seconds or the estimated date and time when the downtime will be complete can be specified in an optional Retry-After header, which Googlebot may use to determine when to recrawl the URL.

Returning a 503 HTTP result code can be a great solution for a number of other situations. We encounter a lot of problems with sites that return 200 (OK) result codes for server errors, downtime, bandwidth-overruns or for temporary placeholder pages (“Under Construction”). The 503 HTTP result code is the webmaster’s solution of choice for all these situations. As for planned server downtime like hardware maintenance, it’s a good idea to have a separate
server available to actually return the 503 HTTP result code. It is important, however, to not treat 503 as a permanent solution: lasting 503s can eventually be seen as a sign that the server is now permanently unavailable and can result in us removing URLs from Google’s index.

header('HTTP/1.1 503 Service Temporarily Unavailable');
header('Retry-After: Sat, 8 Oct 2011 18:27:00 GMT');

If you set up a 503 (Service Unavailable) response, the header information might look like this when using PHP.
Similar to how you can make 404 pages more useful to users, it’s also a good idea to provide a customized 503 message explaining the situation to users and letting them know when the site will be available again. For further information regarding HTTP result codes, please see RFC 2616.

Posted by Tomer Honen and Kaspar Szymanski, Search Quality Team, Dublin
URL: http://googlewebmastercentral.blogspot.com/2011/01/how-to-deal-with-planned-site-downtime.html

[Gd] A Property By Any Other Name, Part 3

| More

Closure Tools Blog: A Property By Any Other Name, Part 3

This is the last in a series of blog posts on how Closure Compiler decides what properties. Part 1 was about the --compilation_level=ADVANCED_OPTIMIZATIONS flag and part 2 was about renaming policies that didn't work. This blog post will be a bit of a grab bag of newer tools for better property renaming.

Using Type Checking to Fill in Missing Externs


Your externs file should declare all the properties that are defined outside of your program. If you haven't done this before, then finding all those properties can be a pain. Fortunately, Closure Compiler can point us in the right direction by checking for missing properties.

There are a few ways to turn on the missing properties check. For example, you can specify the flags:
--warning_level=VERBOSE --jscomp_warning=missingProperties
or
--jscomp_warning=checkTypes
The compiler will try to find places where you've used dot access (foo.bar) to read a property that can't possibly be defined on that object, perhaps because you've forgotten to declare it in your externs.

Notice that this check is subtly different than compiler checks in more static languages, like Java. The Java compiler uses a "must-define" approach: the property bar must be declared on all possible values of foo (except null), or it will be a compiler error. Closure Compiler uses a "may-define" approach. It only requires that some possible value of foo has a property bar. For example, if you have:

function f(x) {
return x.apartment;
}


Closure Compiler will emit a warning if the apartment property is not assigned anywhere in the program. Similarly, if you have:

/** @param {Element} x */
function f(x) {
return x.apartment;
}


the compiler will emit a warning if the apartment property is not assigned on any object that could possibly be an Element. It will not emit a warning if apartment is assigned on some specific subtype of Element, like HTMLTextAreaElement.

As you can see, you don't need complete type annotations to use this check, but more type annotations will get better results.

Using Type Analysis for Better Renaming


If a property is listed in the externs file under the "All Unquoted" naming policy, that property will not be renamed anywhere in the program. This is a bummer. We went through a lot of trouble to make the Closure Library events API consistent with the native browser events API. But because we gave the methods the same name as extern methods, those methods can't be renamed. Could we use type information to differentiate between method calls on user-defined objects from method calls on browser-defined objects?

We can. Closure Compiler's Java API has two options: disambiguateProperties and ambiguateProperties.

Disambiguation means that Closure Compiler will look at all accesses to a property
x in the program. If two types have a property xx// externs file
/** @constructor */ function Element() {}
Element.prototype.id;

// user code
/** @constructor */
function MyWidget() {
this.id = 3;
}

Disambiguate properties will rename this to something like:

/** @constructor */
function MyWidget() {
this.MyWidget$id = 3;
}


By design, disambiguate properties gives things very verbose names, on the assumption that they will be given shorter names by the "All Unquoted" naming policy. This makes it easier to debug, because you can turn off this optimization independently of "all unquoted" property renaming.

Disambiguate properties allows us to rename some properties that are in the externs file, but it creates a new problem: there are more unique properties, which makes the gzipped code bigger. To solve this problem, we use ambiguateProperties to minify the number of unique properties. Ambiguate properties will look at two property names on different objects such that there's no chance those objects will appear in the same variable. Then it will give those properties the same name.

Disambiguate and ambiguate properties are very conservative. They will only rename things if they are reasonably sure that it's safe to do so. (They can never be absolutely sure, because you could always pass in external objects that violate the declared types.) These optimizations only make sense when used in conjunction with "All Unquoted" renaming.

Short Names Aren't Necessarily Better


So far in this series, we've been assuming that short names make your binary smaller, and will always be better than long names.

That makes sense if you're sending your entire JS file across the network. But what if your visitors had old versions of your JS in their cache? You might want to figure out what version they have, and send them only the parts that had changed.

This is called delta encoding. If the compiler is choosing the shortest possible names for your properties, then small changes to your JS may change every compiled property in the output. The delta between two versions may be as large as the original files.

What we really want is a way to tell the compiler, "give these properties the shortest possible names, unless you've seen them before, and in that case give them the same name you gave them last time." The compiler has 4 flags for this:

--variable_map_input_file
--variable_map_output_file
--property_map_input_file
--property_map_output_file


The output maps from one compilation can be used as the input map for the next compilation. Although the compiler cannot guarantee that a property will be renamed the same way in both binaries, it will make a best-effort attempt to do so.

That covers most of our major property renaming policies. If you have ideas for more, let us know at the Closure Compiler discussion group.

Posted by Nick Santos, Software Engineer
URL: http://closuretools.blogspot.com/2011/01/property-by-any-other-name-part-3.html

[Gd] 127 new dimensions and metrics through the Google Analytics API

| More

Google Code Blog: 127 new dimensions and metrics through the Google Analytics API

One of our aims of the Google Analytics Data Export API is to provide access to all the data you find in our reporting UI. To that end, we are releasing 127 new dimensions and metrics via the API today!

Some of the powerful new data points are:

  • Unique visitors - ga:visitors metric has been updated to support the true number of unique visitors for any date range (instead of the daily unique visitors). It also supports significantly more valid combinations.
  • Organic Searches - The number of organic searches within a session.
  • 10 new Adwords dimensions - Including Matched Query (what people searched for, not the bid term) and Placement Domain (which site you content ads were running on).
  • Search Result Views - The number of times a search result page was viewed.
  • 3 Time dimensions - To simplify plotting graphs.

We also included 111 calculated metrics to make it easy to query most common calculations in the reports, such as bounce rate, cost per conversion, and margin. Now, getting calculated metrics is both more convenient and in parity with the calculated metrics in the UI.

You can see a complete list of the new dimensions and metrics in our public changelog.

With all these dimensions and metrics, it can be time consuming to find the values you are looking for. To simplify this, we’re also launching a new interactive dimension and metric search tool. You can use this interactive tool to search for a dimension or metric using its search-as you-type feature. Even more exciting is the ability to easily determine valid dimension-metric combinations just by selecting the dimensions/metrics that you want to request. Here's a screenshot:

We hope that you will find this new tool and additional data useful. As always, we look forward to hearing your feedback, in our developer group.

By Jeetendra Soneja and Ivanna Kartarahardja, Google Analytics API team
URL: http://googlecode.blogspot.com/2011/01/127-new-dimensions-and-metrics-through.html

[Gd] Google Summer of Code 2011 announced at LCA

| More

Google Code Blog: Google Summer of Code 2011 announced at LCA

(Cross-posted from the Google Open Source Blog)

Despite the recent devastating floods in Australia, the open source community is converging on Brisbane this week for the annual linux.conf.au (LCA). The LCA team “encourages everyone to still come to Brisbane and support local business and the community - we need your support.” Monday during the introductory session at LCA, Carol Smith, member of the Google Open Source Programs Office, proudly announced Google Summer of Code 2011.

This will be the 7th year for Google Summer of Code, an innovative program dedicated to introducing students from colleges and universities around the world to open source software development. The program offers student developers stipends to write code for various open source projects with the help of mentoring organizations from all around the globe. Over the past 6 years Google Summer of Code has had 4,500 students from over 85 countries complete the program. We are excited to announce that we will extend the scope of the program this year by targeting a 25% increase in accepted student applications as well as accepting a larger number of mentoring organizations. Our goal is to help these students pursue academic challenges over the summer break while they create and release open source code for the benefit of all.

Spread the word to your friends! If you know of a university student that would be interested in working on open source projects this summer, or if you know of an organization that might want to mentor students to work on their open source projects, please direct them to our Google Summer of Code 2011 website where they can find our timeline along with the FAQs. And stay tuned for more details coming soon!

By Stephanie Taylor, Open Source Team
URL: http://googlecode.blogspot.com/2011/01/google-summer-of-code-2011-announced-at.html

Monday, January 24, 2011

[Gd] Cloud printing on the go

| More

Chromium Blog: Cloud printing on the go

Last month, we opened Google Cloud Print to users in the Chrome notebook pilot program. Google Cloud Print allows printing from any app on any device, OS or browser without the need to install drivers. Today, we are very pleased to announce the beta launch of Google Cloud Print for mobile documents and Gmail for mobile, which we will be rolling out to users throughout the next few days. To read more about how to use Google Cloud Print for these mobile use cases, read more in the Google Mobile blog.

Posted by Tyler Odean, Product Manager
URL: http://blog.chromium.org/2011/01/cloud-printing-on-go.html