<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;C0AHQXg_cCp7ImA9WxBSEEs.&quot;"><id>tag:blogger.com,1999:blog-11300808</id><updated>2009-12-17T06:55:30.648-08:00</updated><title type="text">Google Code Blog</title><subtitle type="html">Updates from Google's open source projects.</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://googlecode.blogspot.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://googlecode.blogspot.com/" /><link rel="hub" href="http://pubsubhubbub.appspot.com/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/11300808/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" /><author><name>Chris DiBona</name><email>noreply@blogger.com</email></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>605</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/blogspot/Dcni" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><entry gd:etag="W/&quot;CUQEQ3o5eip7ImA9WxBSEEw.&quot;"><id>tag:blogger.com,1999:blog-11300808.post-8381097559501191861</id><published>2009-12-16T17:10:00.000-08:00</published><updated>2009-12-16T17:28:22.422-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-12-16T17:28:22.422-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="labs" /><category scheme="http://www.blogger.com/atom/ns#" term="browser" /><title>Introducing Google Browser Size</title><content type="html">When I started work at Google, I visited the Google Earth team, hoping to find a 20% project on my favorite Google product. There I met Bruno Bowden, who introduced me to a problem I had never thought much about: how to take browser sizes into account when designing a page.&lt;br /&gt;&lt;br /&gt;Bruno had noticed that many people who visit the “Download Google Earth” page never actually download, even though, as you can see, the button is pretty hard to miss:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_EuCTzLdp3vE/SymDgbCLyvI/AAAAAAAAC40/VZPpw8AUNiE/s1600-h/browsersize1.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 164px; height: 31px;border:0" src="http://4.bp.blogspot.com/_EuCTzLdp3vE/SymDgbCLyvI/AAAAAAAAC40/VZPpw8AUNiE/s400/browsersize1.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5416004619925703410" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;He wondered if a significant number of users might have their browser windows too small to see the button:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_EuCTzLdp3vE/SymDosJIuqI/AAAAAAAAC48/A7n5zto90T8/s1600-h/browsersize2.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 300px;border:0" src="http://2.bp.blogspot.com/_EuCTzLdp3vE/SymDosJIuqI/AAAAAAAAC48/A7n5zto90T8/s400/browsersize2.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5416004761957218978" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;To analyze this, Bruno looked at how large people's browser windows were when they visited this page. His first key idea was to measure not the entire browser window, but just the client area -- no toolbars, status bars, or other chrome.&lt;br /&gt;&lt;br /&gt;Bruno's second key idea was to render several weeks' worth of page visitor browser sizes in a contour visualization:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_EuCTzLdp3vE/SymDygI1LFI/AAAAAAAAC5E/uUZAp2T5lPI/s1600-h/browsersize3.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 348px; height: 215px;border:0" src="http://3.bp.blogspot.com/_EuCTzLdp3vE/SymDygI1LFI/AAAAAAAAC5E/uUZAp2T5lPI/s400/browsersize3.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5416004930533403730" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Using this visualization, Bruno confirmed that about 10% of users couldn't see the download button without scrolling, and thus never noticed it. 10% may not sound like a lot, but in this context it turns out to mean a significant number of people weren't downloading Google Earth. Using this data, the team was able to redesign the page to good effect.&lt;br /&gt;&lt;br /&gt;Bruno and I realized that Web designers might benefit from this information if it could be made more generally available. We constructed a page that could overlay a DIV containing the contour visualization atop an IFRAME containing any other Web page:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_EuCTzLdp3vE/SymD5HZHz7I/AAAAAAAAC5M/QQWx3hx9Bzk/s1600-h/browsersize4.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 275px;border:0" src="http://3.bp.blogspot.com/_EuCTzLdp3vE/SymD5HZHz7I/AAAAAAAAC5M/QQWx3hx9Bzk/s400/browsersize4.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5416005044149931954" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;This turned out to be a good way to see which controls were and weren't visible at typical browser sizes. The only problem was, the overlay DIV prevented mouse events from getting to the page IFRAME, so it wasn't possible to interact with the page.&lt;br /&gt;&lt;br /&gt;To solve this, we split the overlay DIV into four:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_EuCTzLdp3vE/SymEBFOZLZI/AAAAAAAAC5U/XBAy4ZWKtkY/s1600-h/browsersize5.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 348px; height: 215px;border:0" src="http://1.bp.blogspot.com/_EuCTzLdp3vE/SymEBFOZLZI/AAAAAAAAC5U/XBAy4ZWKtkY/s400/browsersize5.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5416005181007015314" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Each of the outlines above (red, yellow, blue, green) represents a separate DIV. As the mouse pointer moves, we resize and reposition the DIVs to leave a small window of blank space around the pointer, and adjust background offsets for each DIV to make the overlay look like one seamless graphic. (We originally did this on a timer, but we found a simpler way: when the mouse touches any of the DIVs, resize/reposition all of the DIVs.) End result: a designer can click and otherwise interact with the page with the mouse, and thus interact with the site normally instead of repeatedly typing in URLs.&lt;br /&gt;&lt;br /&gt;We are now making this tool available to the public on Google Labs. To try it, simply visit &lt;a href="http://browsersize.googlelabs.com" id="kl5o" target="_blank" title="browsersize.googlelabs.com"&gt;browsersize.googlelabs.com&lt;/a&gt; and enter the URL of a page you'd like to examine. The size overlay you see is using latest data from visitors to google.com, so this should give you a pretty good indication of what parts of your UI are generally visible and what aren't.&lt;br /&gt;&lt;br /&gt;We look forward to receiving your comments at &lt;a href="mailto:browser-size-external-feedback@google.com" id="ch5d" target="_blank" title="browser-size-external-feedback"&gt;browser-size-external-feedback&lt;/a&gt;!&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;" class="byline-author"&gt;By Arthur Blume on behalf of the Google Browser Size team&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11300808-8381097559501191861?l=googlecode.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/Dcni?a=hhMk15WQoj8:R8T-uCbiKh8:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Dcni?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/Dcni?a=hhMk15WQoj8:R8T-uCbiKh8:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Dcni?i=hhMk15WQoj8:R8T-uCbiKh8:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/Dcni/~4/hhMk15WQoj8" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://googlecode.blogspot.com/feeds/8381097559501191861/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://googlecode.blogspot.com/2009/12/introducing-google-browser-size.html#comment-form" title="39 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/11300808/posts/default/8381097559501191861?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/11300808/posts/default/8381097559501191861?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/Dcni/~3/hhMk15WQoj8/introducing-google-browser-size.html" title="Introducing Google Browser Size" /><author><name>Mike Marchak</name><uri>http://www.blogger.com/profile/09046869427384152063</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="04643631162663437722" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_EuCTzLdp3vE/SymDgbCLyvI/AAAAAAAAC40/VZPpw8AUNiE/s72-c/browsersize1.png" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">39</thr:total><feedburner:origLink>http://googlecode.blogspot.com/2009/12/introducing-google-browser-size.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEYEQXs7cCp7ImA9WxBTGEk.&quot;"><id>tag:blogger.com,1999:blog-11300808.post-2990867847151833445</id><published>2009-12-14T17:55:00.000-08:00</published><updated>2009-12-14T17:55:00.508-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-12-14T17:55:00.508-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="api" /><category scheme="http://www.blogger.com/atom/ns#" term="analytics" /><title>New Google Analytics API Features</title><content type="html">Over the past few months we've received a lot of great feedback from our developers about what they wanted to see in the &lt;a href="http://code.google.com/apis/analytics/docs/gdata/gdataDeveloperGuide.html" id="bi7b" target="_blank" title="Google Analytics API"&gt;Google Analytics API&lt;/a&gt;. Today we're excited to announce new powerful and flexible features to the Google Analytics Data Export API including:&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Support for Advanced Segments&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;With &lt;a href="http://code.google.com/apis/analytics/docs/gdata/gdataReferenceDataFeed.html#segment" id="o.va" target="_blank" title="Advanced segmentation"&gt;advanced segmentation&lt;/a&gt;, you can look beyond the totals and into the nuances of the data for your site. For example, the average time on site for all visits could be 60 seconds, but when you segment by country, you might learn that average time on site of visits from Poland is over 2 minutes.&lt;br /&gt;&lt;br /&gt;So we've added two new ways to use advanced segments through the API:&lt;ol&gt;&lt;li&gt;Create them on the fly by specifying their expression directly through an API query.&lt;/li&gt;&lt;li&gt;Use advanced segments created in the Google Analytics web interface through the API.&lt;/li&gt;&lt;/ol&gt;This video describes exactly what advanced segments do and how you can use them with the API.&lt;br /&gt;&lt;br /&gt;&lt;object width="560" height="340"&gt;&lt;param name="movie" value="http://www.youtube.com/v/7nJzwDIf7r4&amp;hl=en_US&amp;fs=1&amp;rel=0"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/7nJzwDIf7r4&amp;hl=en_US&amp;fs=1&amp;rel=0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="560" height="340"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Goal 5-20 and Configuration Data&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;With the recent Google Analytics v4 launch enabling up to 20 goals, many of you asked for access to this valuable data, and we listened. Now there are 48 new metrics to access goal performance. We've also added all the goal configuration data, including name, type, step names for each profile.&lt;br /&gt;&lt;br /&gt;Here's a great video describing the depth of the goal configuration data.&lt;br /&gt;&lt;br /&gt;&lt;object width="560" height="340"&gt;&lt;param name="movie" value="http://www.youtube.com/v/wojnz-esiqo&amp;hl=en_US&amp;fs=1&amp;rel=0"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/wojnz-esiqo&amp;hl=en_US&amp;fs=1&amp;rel=0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="560" height="340"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Custom Variables&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://code.google.com/apis/analytics/docs/gdata/gdataReferenceDimensionsMetrics.html#d8CustomVariables" id="t0.j" target="_blank" title="Custom variables"&gt;Custom variables&lt;/a&gt; are powerful new ways to describe visitors, visits and pages within Google Analytics. In this new release, we've added 10 new dimensions to access custom variable data. In addition, every custom variable that you've used is now available through the Account Feed.&lt;br /&gt;&lt;br /&gt;All the details of this release can be found on our &lt;a href="http://code.google.com/apis/analytics/docs/gdata/changelog.html" id="l5n_" target="_blank" title="public changelog"&gt;public changelog&lt;/a&gt; and &lt;a href="http://groups.google.com/group/google-analytics-api-notify" id="qdb4" target="_blank" title="public notify group"&gt;public notify group&lt;/a&gt;. We've updated all our documentatation at &lt;a href="http://code.google.com/apis/analytics" id="a71k" target="_blank" title="http://code.google.com/apis/analytics"&gt;http://code.google.com/apis/analytics&lt;/a&gt;. Please continue to give us feedback to improve our product through our &lt;a href="http://groups.google.com/group/google-analytics-api" id="i5_v" target="_blank" title="public google group"&gt;public google group&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Thanks!&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;" class="byline-author"&gt;By Nick Mihailovski on behalf of the Google Analytics API Team&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11300808-2990867847151833445?l=googlecode.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/Dcni?a=3OHn1qMlSYM:FZx_RcR3o1A:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Dcni?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/Dcni?a=3OHn1qMlSYM:FZx_RcR3o1A:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Dcni?i=3OHn1qMlSYM:FZx_RcR3o1A:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/Dcni/~4/3OHn1qMlSYM" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://googlecode.blogspot.com/feeds/2990867847151833445/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://googlecode.blogspot.com/2009/12/new-google-analytics-api-features.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/11300808/posts/default/2990867847151833445?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/11300808/posts/default/2990867847151833445?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/Dcni/~3/3OHn1qMlSYM/new-google-analytics-api-features.html" title="New Google Analytics API Features" /><author><name>Mike Marchak</name><uri>http://www.blogger.com/profile/09046869427384152063</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="04643631162663437722" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://googlecode.blogspot.com/2009/12/new-google-analytics-api-features.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0MNQ3c6eSp7ImA9WxBTGE4.&quot;"><id>tag:blogger.com,1999:blog-11300808.post-4708989927191541018</id><published>2009-12-14T17:11:00.000-08:00</published><updated>2009-12-14T17:11:32.911-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-12-14T17:11:32.911-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="api" /><category scheme="http://www.blogger.com/atom/ns#" term="google visualization api" /><category scheme="http://www.blogger.com/atom/ns#" term="fusion tables" /><title>Google Fusion Tables API</title><content type="html">Today I'm excited to announce that Google Fusion Tables is releasing its own API. &lt;br /&gt;&lt;br /&gt;What is Fusion Tables? A product launched recently in Google Labs, &lt;a href="http://tables.googlelabs.com/" target="_blank"&gt;Fusion Tables&lt;/a&gt; is a free service for sharing and visualizing data online. It allows you to upload data, share and mark up your data with collaborators, merge data from multiple tables, and create visualizations like charts and maps.&lt;br /&gt;&lt;br /&gt;Do you have data you need to share with other organizations? In Fusion Tables, you can share all or part of a table with other people. Does your data mean more when seen together with other datasets you don't own? By merging your data with other people's shared tables, you can see the whole picture in one place, discuss the data in embedded comments, and mark up the data with your collaborators. Fusion Tables keeps track of who contributed each part of the data and who has permission to edit. &lt;br /&gt;&lt;br /&gt;Watch Circle of Blue's video description of how they use Fusion Tables to combine and visualize water data.&lt;br /&gt;&lt;br /&gt;&lt;object width="560" height="340"&gt;&lt;param name="movie" value="http://www.youtube.com/v/p0xnk9zFQpY&amp;hl=en_US&amp;fs=1&amp;rel=0"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/p0xnk9zFQpY&amp;hl=en_US&amp;fs=1&amp;rel=0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="560" height="340"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;Often the real meaning and potential impact of a database can be hidden behind all the raw names and numbers, but a well-chosen visualization can bring the data to life. Fusion Tables has automatic data visualization built in: we've integrated with the &lt;a href="http://code.google.com/apis/maps/" target="_blank" title="Google Maps API"&gt;Google Maps API&lt;/a&gt; and the &lt;a href="http://code.google.com/apis/visualization/" target="_blank" title="Google Visualization API"&gt;Google Visualization API&lt;/a&gt; so you can view your data in maps, motion charts, and graphs. All of these can be embedded in your webpage, your Google Site, your blog...any Web page you want! The visualizations even update automatically as data is updated or corrected. Embed the visualization once, and the latest version will always be shown automatically.&lt;br /&gt;&lt;br /&gt;Let other people help spot outliers and unexpected values in your dataset by linking them directly to data that is filtered, aggregated, and visualized for various angles of examination. Fusion Tables' data discussion features help you gather feedback from your community.&lt;br /&gt;&lt;br /&gt;Is your dataset active, always changing? Is it being collected right now on cell phones or websites? With the new &lt;a href="http://code.google.com/apis/fusiontables/" target="_blank" title="Fusion Tables API"&gt;Fusion Tables API&lt;/a&gt;, you can update and query your dataset in Fusion Tables programmatically, without ever logging in to the Fusion Tables website. The API means you can import data from whatever data source you may have, whether a text file or a full-powered data base. On the more exotic side, imagine you're collecting data via survey software on GPS-enabled cell phones, as the &lt;a href="http://code.google.com/p/open-data-kit/" target="_blank" title="OpenDataKit"&gt;Open Data Kit&lt;/a&gt; project is doing. Open Data Kit uses Google App Engine and the Fusion Tables API to instantly map locations of survey results. &lt;br /&gt;&lt;br /&gt;Are you a data exhibitionist? Put your data in Fusion Tables and make it available for the world to see! Fusion Tables will maintain your attribution as your data participates in other tables, enforce your choices about sharing and exporting the data, and invite Google Web Search to index the table.&lt;br /&gt;&lt;br /&gt;Fusion Tables allows datasets to play together in a safe, collaborative, and privacy-controlled environment. We can't wait to hear about the amazing things you will make happen with Fusion Tables.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;" class="byline-author"&gt;By Anno Langen, Jayant Madhavan and Rebecca Shapley, Google Fusion Tables Team&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11300808-4708989927191541018?l=googlecode.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/Dcni?a=lLVbJ7dCgSE:bUSK_z7ogwE:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Dcni?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/Dcni?a=lLVbJ7dCgSE:bUSK_z7ogwE:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Dcni?i=lLVbJ7dCgSE:bUSK_z7ogwE:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/Dcni/~4/lLVbJ7dCgSE" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://googlecode.blogspot.com/feeds/4708989927191541018/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://googlecode.blogspot.com/2009/12/google-fusion-tables-api.html#comment-form" title="5 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/11300808/posts/default/4708989927191541018?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/11300808/posts/default/4708989927191541018?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/Dcni/~3/lLVbJ7dCgSE/google-fusion-tables-api.html" title="Google Fusion Tables API" /><author><name>Mike Marchak</name><uri>http://www.blogger.com/profile/09046869427384152063</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="04643631162663437722" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">5</thr:total><feedburner:origLink>http://googlecode.blogspot.com/2009/12/google-fusion-tables-api.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkUGRH87fSp7ImA9WxBTFUg.&quot;"><id>tag:blogger.com,1999:blog-11300808.post-6329465088869656699</id><published>2009-12-11T11:00:00.000-08:00</published><updated>2009-12-11T11:03:45.105-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-12-11T11:03:45.105-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="google developer days" /><category scheme="http://www.blogger.com/atom/ns#" term="gdd09" /><title>Google Developer Days 2009 come to an end</title><content type="html">&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_EuCTzLdp3vE/SyKG19Zi_3I/AAAAAAAAC38/Mk-Nqqe0BTY/s1600-h/gdd_logo.gif"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 137px; height: 101px; border:0;" src="http://2.bp.blogspot.com/_EuCTzLdp3vE/SyKG19Zi_3I/AAAAAAAAC38/Mk-Nqqe0BTY/s320/gdd_logo.gif" border="0" alt=""id="BLOGGER_PHOTO_ID_5414037963625660274" /&gt;&lt;/a&gt;We've concluded &lt;a href="http://code.google.com/events/developerday/2009/" target="_blank" title="Google Developer Days 2009"&gt;Google Developer Days 2009&lt;/a&gt;, a set of one-day developer events that travel around the world. This year, they started in Beijing, China on June 5 and ended in Moscow, Russia on November 10. At each event, attendees had the opportunity to learn about Google's newest web technologies with products such as &lt;a href="http://code.google.com/apis/wave/" id="yrbx" target="_blank" title="Google Wave"&gt;Google Wave&lt;/a&gt;,&amp;nbsp;&lt;a href="http://developer.android.com" target="_blank" title="Android"&gt;Android&lt;/a&gt;,&amp;nbsp;&lt;a href="http://code.google.com/chromium/" target="_blank" title="Chrome"&gt;Chrome&lt;/a&gt;, &lt;a href="http://code.google.com/webtoolkit" id="xx:h" target="_blank" title="Google Web Toolkit"&gt;Google Web Toolkit&lt;/a&gt;,&amp;nbsp;&lt;a href="http://www.opensocial.org/" target="_blank" title="OpenSocial"&gt;OpenSocial&lt;/a&gt;, and&amp;nbsp;&lt;a href="http://code.google.com/appengine/" target="_blank" title="AppEngine"&gt;App Engine&lt;/a&gt;. They also interacted with Google developers during "office hours" and had the chance to see how other developers are using Google technologies for their own applications at various demo areas.&lt;br /&gt;&lt;br /&gt;We have finished posting the&amp;nbsp;&lt;a href="http://code.google.com/events/developerday/2009/" target="_blank" title="presentations"&gt;presentations&lt;/a&gt;&amp;nbsp;and&amp;nbsp;&lt;a href="http://code.google.com/events/developerday/2009/" target="_blank" title="photos"&gt;photos&lt;/a&gt;&amp;nbsp;from our final events of the year, and hopefully each location's page will continue to be a useful resource for you. Thank you for making these such great events! We look forward to seeing you in 2010...&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;" class="byline-author"&gt;By Alyssa England Sachs, Google Developer Team&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11300808-6329465088869656699?l=googlecode.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/Dcni?a=nwFL-5SEUsU:FQNnF6XYzQI:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Dcni?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/Dcni?a=nwFL-5SEUsU:FQNnF6XYzQI:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Dcni?i=nwFL-5SEUsU:FQNnF6XYzQI:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/Dcni/~4/nwFL-5SEUsU" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://googlecode.blogspot.com/feeds/6329465088869656699/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://googlecode.blogspot.com/2009/12/google-developer-days-2009-come-to-end.html#comment-form" title="3 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/11300808/posts/default/6329465088869656699?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/11300808/posts/default/6329465088869656699?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/Dcni/~3/nwFL-5SEUsU/google-developer-days-2009-come-to-end.html" title="Google Developer Days 2009 come to an end" /><author><name>Mike Marchak</name><uri>http://www.blogger.com/profile/09046869427384152063</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="04643631162663437722" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/_EuCTzLdp3vE/SyKG19Zi_3I/AAAAAAAAC38/Mk-Nqqe0BTY/s72-c/gdd_logo.gif" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">3</thr:total><feedburner:origLink>http://googlecode.blogspot.com/2009/12/google-developer-days-2009-come-to-end.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0cNQ3Y6eip7ImA9WxBTFEQ.&quot;"><id>tag:blogger.com,1999:blog-11300808.post-111839215727517892</id><published>2009-12-10T17:30:00.000-08:00</published><updated>2009-12-10T17:31:32.812-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-12-10T17:31:32.812-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="orkut" /><category scheme="http://www.blogger.com/atom/ns#" term="reader" /><category scheme="http://www.blogger.com/atom/ns#" term="google web elements" /><category scheme="http://www.blogger.com/atom/ns#" term="translate" /><title>New features for Google Web Elements</title><content type="html">&lt;a href="http://googlecode.blogspot.com/2009/05/introduce-google-web-elements.html"&gt;Earlier this year&lt;/a&gt; we introduced &lt;a href="http://www.google.com/webelements/"&gt;Google Web Elements&lt;/a&gt;, an easy way to embed Google products on your site by simply copying and pasting a snippet of code. Today we're excited to announce the addition of three new Web Elements:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.google.com/webelements/translate/"&gt;Translate element&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_EuCTzLdp3vE/SyGbJgE9yGI/AAAAAAAAC3k/rL-LHjAK_5o/s1600-h/elements1.png"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 275px; height: 200px;" src="http://3.bp.blogspot.com/_EuCTzLdp3vE/SyGbJgE9yGI/AAAAAAAAC3k/rL-LHjAK_5o/s320/elements1.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5413778814607935586" /&gt;&lt;/a&gt;The Translate element enables visitors to automatically translate your pages into their native language, extending the reach of your website to a global audience.  Even better, it will know when their language doesn't match your site's. Have some multi-lingual visitors?  Don't worry, they'll be able to turn it off completely. &lt;br /&gt;&lt;br /&gt;Note that whether or not the Translate element pops up is based on the language of your web browser. In order to test what other language visitors will see on your site, you'll have to follow the directions &lt;a href="http://www.google.com/webelements/faq.html#howtesttranslateelement"&gt;here&lt;/a&gt; to change your browser's language.&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.google.com/webelements/reader/"&gt;Reader element&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_EuCTzLdp3vE/SyGbP4VcmdI/AAAAAAAAC3s/-6mPyv77OOU/s1600-h/elements2.png"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 275px; height: 200px;" src="http://3.bp.blogspot.com/_EuCTzLdp3vE/SyGbP4VcmdI/AAAAAAAAC3s/-6mPyv77OOU/s320/elements2.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5413778924198730194" /&gt;&lt;/a&gt;The Reader element embeds the headlines from your recent shared items on Google Reader right on your website. You can customize the element by choosing how many items to show and the color scheme. The headlines shown in the Reader element will automatically update as you share or unshare items.&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.google.com/webelements/orkutshare/"&gt;Orkut element&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_EuCTzLdp3vE/SyGbVGmq1CI/AAAAAAAAC30/r2VAoWCaSmk/s1600-h/elements3.png"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 275px; height: 200px;" src="http://2.bp.blogspot.com/_EuCTzLdp3vE/SyGbVGmq1CI/AAAAAAAAC30/r2VAoWCaSmk/s320/elements3.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5413779013928408098" /&gt;&lt;/a&gt;The Orkut element makes it easy for your website's visitors to share your site on their Orkut page. When visitors to your site click the button, they'll be able to share your website content with their Orkut friends with a couple clicks&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;We've also added a couple new features that we hope you'll enjoy:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;Custom Search element themes&lt;/b&gt;:&amp;nbsp; The &lt;a href="http://www.google.com/webelements/customsearch/" id="p4nk" target="_blank" title="Custom Search element"&gt;Custom Search element&lt;/a&gt; lets visitors search your site (or other content defined by you) and enables you to earn revenue (via AdSense) from highly relevant ads that are displayed in the search results. You've always been able to richly style this element (we described a couple ways in &lt;a href="http://googleajaxsearchapi.blogspot.com/2009/08/custom-search-with-custom-style-peanut.html" id="j-na" target="_blank" title="this blog post"&gt;this blog post&lt;/a&gt;), but that required knowing JavaScript and CSS. Now you can adjust the look and feel of the element to better integrate with your site, without having to code anything.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;b&gt;Login integration&lt;/b&gt;:&amp;nbsp; The Google Web Elements website is now integrated with your Google account.&amp;nbsp; By logging in (if you're not logged in already), you'll be able to more easily select your Calendar, Presentation or Spreadsheet in creating your element.&amp;nbsp; Login is also required to personalize your Reader element.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;b&gt;Document selector&lt;/b&gt;: Once logged into the Google Web Elements website, you'll be able to easily search through your data when creating a Calendar, Presentation or Spreadsheet element.&amp;nbsp; All you have to do is click the "Choose" button and select the one that you would like to use with your element.&amp;nbsp; You still have the option of pasting in a URL (for instance, if you wish to use a document not associated with your account), but this is no longer required.&lt;br&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;We hope you enjoy these new additions to the Web Elements family! To get started, check out &lt;a href="http://www.google.com/webelements/"&gt;www.google.com/webelements&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;" class="byline-author"&gt;By Christine Tsai, Web Elements Team&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11300808-111839215727517892?l=googlecode.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/Dcni?a=OpLTgiPEjck:GJilUm5fZmw:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Dcni?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/Dcni?a=OpLTgiPEjck:GJilUm5fZmw:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Dcni?i=OpLTgiPEjck:GJilUm5fZmw:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/Dcni/~4/OpLTgiPEjck" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://googlecode.blogspot.com/feeds/111839215727517892/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://googlecode.blogspot.com/2009/12/new-features-for-google-web-elements.html#comment-form" title="8 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/11300808/posts/default/111839215727517892?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/11300808/posts/default/111839215727517892?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/Dcni/~3/OpLTgiPEjck/new-features-for-google-web-elements.html" title="New features for Google Web Elements" /><author><name>Mike Marchak</name><uri>http://www.blogger.com/profile/09046869427384152063</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="04643631162663437722" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/_EuCTzLdp3vE/SyGbJgE9yGI/AAAAAAAAC3k/rL-LHjAK_5o/s72-c/elements1.png" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">8</thr:total><feedburner:origLink>http://googlecode.blogspot.com/2009/12/new-features-for-google-web-elements.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkIFR3s-fyp7ImA9WxBTE08.&quot;"><id>tag:blogger.com,1999:blog-11300808.post-7100363980422866581</id><published>2009-12-08T19:00:00.000-08:00</published><updated>2009-12-08T19:15:16.557-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-12-08T19:15:16.557-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="faster web" /><category scheme="http://www.blogger.com/atom/ns#" term="speed tracer" /><category scheme="http://www.blogger.com/atom/ns#" term="gwt" /><category scheme="http://www.blogger.com/atom/ns#" term="google web toolkit" /><title>Google Web Toolkit 2.0 - now with Speed Tracer</title><content type="html">&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_EuCTzLdp3vE/Sx8MW_qVlCI/AAAAAAAAC3A/-NJ8Z94c2II/s1600-h/cf1.png"&gt;&lt;img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;width: 140px; height: 140px; border:0" src="http://2.bp.blogspot.com/_EuCTzLdp3vE/Sx8MW_qVlCI/AAAAAAAAC3A/-NJ8Z94c2II/s320/cf1.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5413058866308289570" /&gt;&lt;/a&gt;Tonight at a &lt;a href="http://code.google.com/campfire/" id="bq_c" target="_blank" title="Google Campfire One"&gt;Google Campfire One&lt;/a&gt; we released &lt;a href="http://code.google.com/webtoolkit/" id="o:gz" target="_blank" title="Google Web Toolkit 2.0"&gt;Google Web Toolkit 2.0&lt;/a&gt;, aiming to do two main things for developers:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Make it easier to build faster apps&lt;/li&gt;&lt;li&gt;Speed up the overall development cycle&lt;/li&gt;&lt;/ul&gt;This is a very exciting release because it's the cumulation of a year and a half working with teams like Google Wave, AdWords, and Orkut (among many others inside and outside of Google) to evolve GWT to meet the needs of today's web applications. There are many features and improvements, but let me call out three which we're especially excited about.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Faster Apps&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;Introducing: Performance profiling with Speed Tracer&lt;/i&gt;&lt;br /&gt;The first thing you'll notice in 2.0 is that we've added a new tool called &lt;a href="http://code.google.com/webtoolkit/speedtracer" id="to2t" target="_blank" title="Speed Tracer"&gt;Speed Tracer&lt;/a&gt;. Speed Tracer is a performance profiler for Google Chrome that allows developers to see what's going on in a way which hasn't been possible before. We've &lt;a href="http://googlewebtoolkit.blogspot.com/2009/11/new-insights-into-web-application.html" id="e0-i" target="_blank" title="worked closely"&gt;worked closely&lt;/a&gt; with the Webkit community to add instrumentation in the browser to enable developers to gain deep insights into how code behaves, uncovering problems which have been hidden up till now.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;Introducing: Incremental app download with code splitting&lt;/i&gt;&lt;br /&gt;Another feature we've added into Google Web Toolkit is &lt;a href="http://code.google.com/webtoolkit/doc/latest/DevGuideCodeSplitting.html" id="hpp2" target="_blank" title="developer-guided code splitting"&gt;developer-guided code splitting&lt;/a&gt;. Code splitting allows a developer to split up their application for much, much faster startup times. Imagine if you have a settings page that users go to once a week. Why download that JavaScript when the application starts up? With code splitting, your users download just the JavaScript they need to get started.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Faster Development&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;Introducing: Declarative UI with UiBinder&lt;/i&gt;&lt;br /&gt;&lt;a href="http://code.google.com/webtoolkit/doc/latest/DevGuideUiBinder.html" id="qtgx" target="_blank" title="UiBinder"&gt;UiBinder&lt;/a&gt; is a new declarative UI framework in Google Web Toolkit which enables rapid design iteration and a clean separation between presentation layer and application logic.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://googlewebtoolkit.blogspot.com/2009/12/introducing-google-web-toolkit-20-now.html" target="_blank"&gt;Dive into the details&lt;/a&gt; and more features in GWT 2.0.&lt;br /&gt;&lt;br /&gt;&lt;object width="480" height="385"&gt;&lt;param name="movie" value="http://www.youtube.com/p/60261978F2E7683F"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/p/60261978F2E7683F" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="385"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;" class="byline-author"&gt;By Andrew Bowers, GWT Product Manager&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11300808-7100363980422866581?l=googlecode.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/Dcni?a=IeT94c1Xf9k:NIZND0ATkIQ:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Dcni?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/Dcni?a=IeT94c1Xf9k:NIZND0ATkIQ:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Dcni?i=IeT94c1Xf9k:NIZND0ATkIQ:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/Dcni/~4/IeT94c1Xf9k" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://googlecode.blogspot.com/feeds/7100363980422866581/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://googlecode.blogspot.com/2009/12/google-web-toolkit-20-now-with-speed.html#comment-form" title="8 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/11300808/posts/default/7100363980422866581?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/11300808/posts/default/7100363980422866581?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/Dcni/~3/IeT94c1Xf9k/google-web-toolkit-20-now-with-speed.html" title="Google Web Toolkit 2.0 - now with Speed Tracer" /><author><name>Mike Marchak</name><uri>http://www.blogger.com/profile/09046869427384152063</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="04643631162663437722" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/_EuCTzLdp3vE/Sx8MW_qVlCI/AAAAAAAAC3A/-NJ8Z94c2II/s72-c/cf1.png" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">8</thr:total><feedburner:origLink>http://googlecode.blogspot.com/2009/12/google-web-toolkit-20-now-with-speed.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkMCSXk5fip7ImA9WxBTE00.&quot;"><id>tag:blogger.com,1999:blog-11300808.post-8098641342838069184</id><published>2009-12-08T11:27:00.000-08:00</published><updated>2009-12-08T11:27:48.726-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-12-08T11:27:48.726-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="extensions" /><category scheme="http://www.blogger.com/atom/ns#" term="chrome" /><title>Google Chrome Extensions launched in beta!</title><content type="html">&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_EuCTzLdp3vE/Sx6m2hOdMfI/AAAAAAAAC20/D0H_fjQ4k70/s1600-h/chrome-96.png"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 64px; height: 64px; border: 0" src="http://4.bp.blogspot.com/_EuCTzLdp3vE/Sx6m2hOdMfI/AAAAAAAAC20/D0H_fjQ4k70/s400/chrome-96.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5412947257708065266" /&gt;&lt;/a&gt;Today, we &lt;a href="http://blog.chromium.org/2009/12/extensions-beta-launched-with-over-300.html" id="qgqh" target="_blank" title="launched"&gt;launched&lt;/a&gt; Google Chrome's extensions system in the beta channel for Windows and Linux (Mac is in progress). We've also opened up our brand new &lt;a href="http://chrome.google.com/extensions" id="czjf" target="_blank" title="gallery"&gt;gallery&lt;/a&gt;, which contains more than 300 extensions!&lt;br /&gt;&lt;br /&gt;We aspired to create an extensions system that is easy to use, stable, more secure and that wouldn't slow down Google Chrome. We're really happy to release a beta that begins to deliver on our initial vision. If you want to learn more about Google Chrome extensions, you can start by reading our&amp;nbsp;&lt;a href="http://code.google.com/chrome/extensions" id="baaz" target="_blank" title="docs"&gt;docs&lt;/a&gt; and joining our &lt;a href="https://groups.google.com/group/chromium-extensions" id="jmue" target="_blank" title="mailing list"&gt;mailing list&lt;/a&gt;. You can also check out the videos below:&lt;br /&gt;&lt;br /&gt;&lt;object width="480" height="385"&gt;&lt;param name="movie" value="http://www.youtube.com/p/CA101D6A85FE9D4B&amp;amp;hl=en_US&amp;amp;fs=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/p/CA101D6A85FE9D4B&amp;amp;hl=en_US&amp;amp;fs=1" type="application/x-shockwave-flash" width="480" height="385" allowscriptaccess="always" allowfullscreen="true"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;You can also meet us in person - &lt;a href="https://spreadsheets.google.com/viewform?formkey=dF9TRlZMYmxYSXdmZkY1VEt6QVpvMFE6MQ" id="b3w." target="_blank" title="let us know"&gt;let us know&lt;/a&gt; if you want to join us in a small get together tomorrow on our campus in Mountain View (or via VC in New York and Kirkland). Space is limited - we'd love to see many of you there so RSVP early and we'll email you more information if you are selected to attend. You can also meet the team at &lt;a href="http://www.addoncon.com/" id="dy_o" target="_blank" title="Add-on Con"&gt;Add-on Con&lt;/a&gt;, where we will participate in a couple of panels.&lt;br /&gt;&lt;br /&gt;Finally for those of you who are far away, we are planning some online developer tutorial sessions. If you are interested in attending, please fill in this &lt;a href="https://spreadsheets.google.com/viewform?formkey=dFF0RlllMW54Q1RDQ3l3ZnQ4eFhQMVE6MQ" id="xei_" target="_blank" title="form"&gt;form&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;" class="byline-author"&gt;By Erik Kay and Aaron Boodman, Google Chrome Software Engineers&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11300808-8098641342838069184?l=googlecode.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/Dcni?a=SW3SbXk-haQ:XLClWq4P0dY:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Dcni?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/Dcni?a=SW3SbXk-haQ:XLClWq4P0dY:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Dcni?i=SW3SbXk-haQ:XLClWq4P0dY:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/Dcni/~4/SW3SbXk-haQ" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://googlecode.blogspot.com/feeds/8098641342838069184/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://googlecode.blogspot.com/2009/12/google-chrome-extensions-launched-in.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/11300808/posts/default/8098641342838069184?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/11300808/posts/default/8098641342838069184?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/Dcni/~3/SW3SbXk-haQ/google-chrome-extensions-launched-in.html" title="Google Chrome Extensions launched in beta!" /><author><name>Mike Marchak</name><uri>http://www.blogger.com/profile/09046869427384152063</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="04643631162663437722" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_EuCTzLdp3vE/Sx6m2hOdMfI/AAAAAAAAC20/D0H_fjQ4k70/s72-c/chrome-96.png" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://googlecode.blogspot.com/2009/12/google-chrome-extensions-launched-in.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkUERnk6eSp7ImA9WxBTEkw.&quot;"><id>tag:blogger.com,1999:blog-11300808.post-8243488292767509121</id><published>2009-12-07T10:22:00.000-08:00</published><updated>2009-12-07T10:23:27.711-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-12-07T10:23:27.711-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="api" /><category scheme="http://www.blogger.com/atom/ns#" term="gdata" /><category scheme="http://www.blogger.com/atom/ns#" term="translate" /><title>Google Translator Toolkit Data API</title><content type="html">Today, we're excited to announce the release of the Google Translator Toolkit Data API. &lt;a href="http://translate.google.com/toolkit" target="_blank" title="Google Translator Toolkit"&gt;Translator Toolkit&lt;/a&gt; is a powerful but easy-to-use editor that enables translators to bring a human touch to machine translation through translation search, bilingual dictionaries, and custom terminology databases. Using Translator Toolkit, you can translate HTML, Word, AdWords, Wikipedia, and other documents in a WYSIWYG ("what-you-see-is-what-you-get") editor, share them with other users, and download their translations onto your desktop. &lt;br /&gt;&lt;br /&gt;Through our new API, you can upload, share, download, and delete your documents, &lt;a href="http://translate.google.com/support/toolkit/bin/answer.py?hl=en&amp;amp;answer=147859" id="les4" target="_blank" title="glossaries"&gt;glossaries&lt;/a&gt;, and &lt;a href="http://translate.google.com/support/toolkit/bin/answer.py?hl=en&amp;amp;answer=147863" id="r_ns" target="_blank" title="translation memories"&gt;translation memories&lt;/a&gt; using the &lt;a href="http://code.google.com/apis/gdata" target="_blank"&gt;Google Data Protocol&lt;/a&gt;. That means that integrating human translation into your translators' workflow just got easier! Here are a few things you can do with the Translator Toolkit API:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;Automatically connect your content management system (CMS) with Translator Toolkit.&lt;/b&gt; You can transform your content into HTML files, protect sections of HTML from translation through the &lt;code&gt;class="notranslate"&lt;/code&gt; attribute, upload the HTML files, share the files with your translators, download the translated HTML, and then transform and upload the documents back into your CMS.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;b&gt;Automatically connect your file system with Translator Toolkit.&lt;/b&gt; You can create a cron job that uploads files into Translator Toolkit, shares the files with your translators, then downloads completed files back to the file system.&lt;/li&gt;&lt;/ul&gt;For now, the API is available in &lt;a href="http://code.google.com/labs/" target="_blank"&gt;labs&lt;/a&gt; as we rapidly add features based on your feedback. Check out our &lt;a href="http://code.google.com/apis/gtt/" target="_blank" title="documentation"&gt;documentation&lt;/a&gt;, where you'll find our &lt;a href="http://code.google.com/p/gdata-java-client/downloads/list" target="_blank" title="Java library"&gt;Java client library&lt;/a&gt; and &lt;a href="http://code.google.com/apis/gtt/docs/1.0/developers_guide_java.html" target="_blank" title="code samples"&gt;a developer guide&lt;/a&gt; to get you started. Please visit our &lt;a href="http://www.google.com/support/forum/p/translator-toolkit-api" target="_blank" title="new developer forum"&gt;new developer forum&lt;/a&gt; if you have questions.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;" class="byline-author"&gt;By Mayank Gupta and Paneendra Ba, Google Translator Toolkit Team&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11300808-8243488292767509121?l=googlecode.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/Dcni?a=6kjlXiMuxOM:DP0D0JkvRyM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Dcni?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/Dcni?a=6kjlXiMuxOM:DP0D0JkvRyM:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Dcni?i=6kjlXiMuxOM:DP0D0JkvRyM:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/Dcni/~4/6kjlXiMuxOM" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://googlecode.blogspot.com/feeds/8243488292767509121/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://googlecode.blogspot.com/2009/12/google-translator-toolkit-data-api.html#comment-form" title="4 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/11300808/posts/default/8243488292767509121?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/11300808/posts/default/8243488292767509121?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/Dcni/~3/6kjlXiMuxOM/google-translator-toolkit-data-api.html" title="Google Translator Toolkit Data API" /><author><name>Mike Marchak</name><uri>http://www.blogger.com/profile/09046869427384152063</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="04643631162663437722" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">4</thr:total><feedburner:origLink>http://googlecode.blogspot.com/2009/12/google-translator-toolkit-data-api.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DU8GRX09fyp7ImA9WxNaGEg.&quot;"><id>tag:blogger.com,1999:blog-11300808.post-2799166781248808094</id><published>2009-12-03T08:30:00.000-08:00</published><updated>2009-12-03T08:30:24.367-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-12-03T08:30:24.367-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="faster web" /><category scheme="http://www.blogger.com/atom/ns#" term="dns" /><title>Introducing Google Public DNS: A new DNS resolver from Google</title><content type="html">Today, as part of our efforts to &lt;a href="http://googleblog.blogspot.com/2009/06/lets-make-web-faster.html"&gt;make the web faster&lt;/a&gt;, we are announcing &lt;a href="http://code.google.com/speed/public-dns"&gt;Google Public DNS&lt;/a&gt;, a new experimental public DNS resolver. &lt;br /&gt;&lt;br /&gt;The &lt;a href="http://en.wikipedia.org/wiki/Domain_name_system"&gt;DNS protocol&lt;/a&gt; is an important part of the web's infrastructure, serving as the Internet's "phone book". Every time you visit a website, your computer performs a DNS lookup. Complex pages often require multiple DNS lookups before they complete loading. As a result, the average Internet user performs hundreds of DNS lookups each day, that collectively can slow down his or her browsing experience. &lt;br /&gt;&lt;br /&gt;We believe that a faster DNS infrastructure could significantly improve the browsing experience for all web users. To enhance DNS speed but to also improve security and validity of results, Google Public DNS is trying a few different approaches that we are sharing with the broader web community through our &lt;a href="http://code.google.com/speed/public-dns/docs/intro.html"&gt;documentation&lt;/a&gt;:&lt;ul&gt;&lt;li&gt;Speed: Resolver-side cache misses are one of the primary contributors to sluggish DNS responses.  Clever caching techniques can help increase the speed of these responses.  Google Public DNS implements prefetching: before the TTL on a record expires, we refresh the record continuously, asychronously and independently of user requests for a large number of popular domains. This allows Google Public DNS to serve many DNS requests in the round trip time it takes a packet to travel to our servers and back.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Security: DNS is vulnerable to spoofing attacks that can poison the cache of a nameserver and can route all its users to a malicious website. Until new protocols like &lt;a href="http://www.dnssec.net/"&gt;DNSSEC&lt;/a&gt; get widely adopted, resolvers need to take additional measures to keep their caches secure.  Google Public DNS makes it more difficult for attackers to spoof valid responses by randomizing the case of query names and including additional data in its DNS messages.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Validity: Google Public DNS complies with the DNS standards and gives the user the exact response his or her computer expects without performing any blocking, filtering, or redirection that may hamper a user's browsing experience.&lt;/li&gt;&lt;/ul&gt;We hope that you will help us test these improvements by &lt;a href="http://code.google.com/speed/public-dns/docs/using.html"&gt;using the Google Public DNS service&lt;/a&gt; today, from wherever you are in the world.  We plan to share what we learn from this experimental rollout of Google Public DNS with the broader web community and other DNS providers, to improve the browsing experience for Internet users globally.&lt;br /&gt;&lt;br /&gt;To get more information on Google Public DNS you can visit our &lt;a href="http://code.google.com/speed/public-dns"&gt;site&lt;/a&gt;, read our &lt;a href="http://code.google.com/speed/public-dns/docs/intro.html"&gt;documentation&lt;/a&gt;, and our &lt;a href="http://code.google.com/speed/public-dns/privacy.html"&gt;logging policies&lt;/a&gt;. We also look forward to receiving your feedback in our &lt;a href="https://groups.google.com/group/public-dns-discuss?pli=1"&gt;discussion group&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;" class="byline-author"&gt;By Prem Ramaswami, Public DNS Team&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11300808-2799166781248808094?l=googlecode.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/Dcni?a=ClUgNKURnp4:NkeMeuclEtw:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Dcni?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/Dcni?a=ClUgNKURnp4:NkeMeuclEtw:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Dcni?i=ClUgNKURnp4:NkeMeuclEtw:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/Dcni/~4/ClUgNKURnp4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://googlecode.blogspot.com/feeds/2799166781248808094/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://googlecode.blogspot.com/2009/12/introducing-google-public-dns-new-dns.html#comment-form" title="116 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/11300808/posts/default/2799166781248808094?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/11300808/posts/default/2799166781248808094?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/Dcni/~3/ClUgNKURnp4/introducing-google-public-dns-new-dns.html" title="Introducing Google Public DNS: A new DNS resolver from Google" /><author><name>Mike Marchak</name><uri>http://www.blogger.com/profile/09046869427384152063</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="04643631162663437722" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">116</thr:total><feedburner:origLink>http://googlecode.blogspot.com/2009/12/introducing-google-public-dns-new-dns.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUcBQnc9fip7ImA9WxNaF0Q.&quot;"><id>tag:blogger.com,1999:blog-11300808.post-3740646650828858821</id><published>2009-12-02T15:37:00.000-08:00</published><updated>2009-12-02T15:37:33.966-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-12-02T15:37:33.966-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="social" /><category scheme="http://www.blogger.com/atom/ns#" term="google friend connect" /><title>Deeper integration for Friend Connect and Twitter</title><content type="html">Did you hear that Friend Connect and Twitter are more closely integrated than ever? To learn more, check out our post on the &lt;a href="http://googlesocialweb.blogspot.com/2009/12/friend-connect-birds-of-feather-tweet.html"&gt;Social Web Blog&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;" class="byline-author"&gt;By James Reilly, Google Friend Connect Team&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11300808-3740646650828858821?l=googlecode.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/Dcni?a=FcRolTqu6Xw:mjzN8pzVY4w:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Dcni?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/Dcni?a=FcRolTqu6Xw:mjzN8pzVY4w:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Dcni?i=FcRolTqu6Xw:mjzN8pzVY4w:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/Dcni/~4/FcRolTqu6Xw" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://googlecode.blogspot.com/feeds/3740646650828858821/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://googlecode.blogspot.com/2009/12/deeper-integration-for-friend-connect.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/11300808/posts/default/3740646650828858821?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/11300808/posts/default/3740646650828858821?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/Dcni/~3/FcRolTqu6Xw/deeper-integration-for-friend-connect.html" title="Deeper integration for Friend Connect and Twitter" /><author><name>Mike Marchak</name><uri>http://www.blogger.com/profile/09046869427384152063</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="04643631162663437722" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://googlecode.blogspot.com/2009/12/deeper-integration-for-friend-connect.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkQCQHkzeCp7ImA9WxNaFkQ.&quot;"><id>tag:blogger.com,1999:blog-11300808.post-8311868194547484630</id><published>2009-12-01T12:11:00.000-08:00</published><updated>2009-12-01T12:12:41.780-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-12-01T12:12:41.780-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="javascript" /><category scheme="http://www.blogger.com/atom/ns#" term="analytics" /><title>Google Analytics Launches Asynchronous Tracking</title><content type="html">Today we're excited to announce our new Google Analytics &lt;a href="http://code.google.com/apis/analytics/docs/tracking/asyncTracking.html" id="mdrq" target="_blank" title="Asynchronous Tracking Code"&gt;Asynchronous Tracking Code&lt;/a&gt; snippet as an alternative way to track your websites! It provides the following benefits:&lt;ul&gt;&lt;li style="margin-left:15px"&gt;Faster tracking code load times for your web pages due to improved browser execution&lt;/li&gt;&lt;li style="margin-left:15px"&gt;Enhanced data collection &amp;amp; accuracy&lt;/li&gt;&lt;li style="margin-left:15px"&gt;Elimination of tracking errors from dependencies when the JavaScript hasn't fully loaded&lt;/li&gt;&lt;/ul&gt;Here is the JavaScript source of the &lt;a href="http://code.google.com/apis/analytics/docs/tracking/asyncUsageGuide.html" id="tppw" target="_blank" title="new tracking snippet"&gt;new tracking snippet&lt;/a&gt;:&lt;br /&gt;&lt;code&gt;&lt;pre&gt;&amp;lt;script type="text/javascript"&gt;&lt;br /&gt;&lt;br /&gt;  var _gaq = _gaq || [];&lt;br /&gt;  _gaq.push(['_setAccount', 'UA-XXXXX-X']);&lt;br /&gt;  _gaq.push(['_trackPageview']);&lt;br /&gt;&lt;br /&gt;  (function() {&lt;br /&gt;    var ga = document.createElement('script');&lt;br /&gt;    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : &lt;br /&gt;        'http://www') + '.google-analytics.com/ga.js';&lt;br /&gt;    ga.setAttribute('async', 'true');&lt;br /&gt;    document.documentElement.firstChild.appendChild(ga);&lt;br /&gt;  })();&lt;br /&gt;&lt;br /&gt;&amp;lt;/script&gt;&lt;/pre&gt;&lt;/code&gt;The first part of the asynchronous tracking code snippet assigns the _gaq variable to a JavaScript array. After that, two tracking API calls (encoded as arrays) are pushed onto _gaq. When the tracking code initializes, it transforms the _gaq object from a standard array into a new object and executes all the tracking API calls initially collected in the array. With this feature, you can immediately store all necessary tracking calls even before the Google Analytics tracking code is downloaded! No more worrying about race conditions or dependency issues on the ga.js tracking code.&lt;br /&gt;&lt;br /&gt;The second half of the snippet provides the logic that loads the tracking code in parallel with other scripts on the page. It executes an anonymous function that dynamically creates a &amp;lt;script&amp;gt; element and sets the source with the proper protocol. As a result, most browsers will load the tracking code in parallel with other scripts on the page, thus reducing the web page load time. Note here the forward-looking use of the new HTML5 "async" attribute in this part of the snippet. While it creates the same effect as adding a &amp;lt;script&amp;gt; element to the DOM, it officially tells browsers that this script can be loaded asynchronously. Firefox 3.6 is the first browser to officially offer support for this new feature. If you're curious, here are more details on the official &lt;a href="http://www.whatwg.org/specs/web-apps/current-work/#attr-script-async" id="fl-v" target="_blank" title="HTML 5 async specification"&gt;HTML5 async specification&lt;/a&gt;. &lt;br /&gt;&lt;br /&gt;Once loaded, the tracking code, transforms the _gaq array into an &lt;a href="http://code.google.com/apis/analytics/docs/gaJS/gaJSApi_gaq.html" id="w:ny" target="_blank" title="Analytics _gaq object"&gt;Analytics _gaq object&lt;/a&gt;. This object acts as a wrapper for the underlying _gat object and executes all the commands, sending data to your Google Analytics account. Your page code can ignore this fact though, because the _gaq.push syntax can be used at any time. See the &lt;a href="http://code.google.com/apis/analytics/docs/tracking/asyncUsageGuide.html" id="beu5" target="_blank" title="Asynchronous Tracking Usage Guide"&gt;Asynchronous Tracking Usage Guide&lt;/a&gt; for more details.&lt;br /&gt;&lt;br /&gt;The new tracking code is now in Beta and available to all Google Analytics users. Keep in mind that use of the code is also optional: all your existing Google Analytics code will continue to work as-is should you decide not to adopt the new tracking method. But if you want to improve the speed of your website and the increase accuracy of your Analytics data, then we think you'll love this new option.&lt;br /&gt;&lt;br /&gt;Learn more about this new tracking code in our Google Code &lt;a href="http://code.google.com/apis/analytics/docs/tracking/asyncTracking.html" id="pfs1" target="_blank" title="developer docs"&gt;developer docs&lt;/a&gt; and get started with our &lt;a href="http://code.google.com/apis/analytics/docs/tracking/asyncMigrationExamples.html" id="w3ok" target="_blank" title="migration guide"&gt;migration guide&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;" class="byline-author"&gt;By Brian Kuhn, Google Analytics Team&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11300808-8311868194547484630?l=googlecode.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/Dcni?a=Eh30sB3ECWU:WeCNvhgCnKM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Dcni?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/Dcni?a=Eh30sB3ECWU:WeCNvhgCnKM:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Dcni?i=Eh30sB3ECWU:WeCNvhgCnKM:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/Dcni/~4/Eh30sB3ECWU" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://googlecode.blogspot.com/feeds/8311868194547484630/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://googlecode.blogspot.com/2009/12/google-analytics-launches-asynchronous.html#comment-form" title="35 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/11300808/posts/default/8311868194547484630?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/11300808/posts/default/8311868194547484630?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/Dcni/~3/Eh30sB3ECWU/google-analytics-launches-asynchronous.html" title="Google Analytics Launches Asynchronous Tracking" /><author><name>Mike Marchak</name><uri>http://www.blogger.com/profile/09046869427384152063</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="04643631162663437722" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">35</thr:total><feedburner:origLink>http://googlecode.blogspot.com/2009/12/google-analytics-launches-asynchronous.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkIBRnk7fip7ImA9WxNaFkw.&quot;"><id>tag:blogger.com,1999:blog-11300808.post-4135669758940676910</id><published>2009-11-30T14:00:00.000-08:00</published><updated>2009-11-30T14:02:37.706-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-11-30T14:02:37.706-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="javascript" /><category scheme="http://www.blogger.com/atom/ns#" term="chromium" /><category scheme="http://www.blogger.com/atom/ns#" term="chrome" /><title>Additional functionality for Google Chrome's Developer Tools</title><content type="html">&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_EuCTzLdp3vE/SxQ84GVXhOI/AAAAAAAAC2U/fk8SBLy0sxc/s1600/chromium_42_42.png"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 42px; height: 42px; border:0" src="http://2.bp.blogspot.com/_EuCTzLdp3vE/SxQ84GVXhOI/AAAAAAAAC2U/fk8SBLy0sxc/s200/chromium_42_42.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5410015986849383650" /&gt;&lt;/a&gt;The last few weeks, Google Chrome's developer tools have become much more useful. Besides benefiting from the work the WebKit team has done to &lt;a href="http://webkit.org/blog/829/web-inspector-updates/" id="c-xr" target="_blank" title="improve"&gt;improve&lt;/a&gt; Web Inspector (&lt;i&gt;our developer tools are partially based on Web Inspector&lt;/i&gt;), we also recently released the &lt;i&gt;heap profiler&lt;/i&gt; and the &lt;i&gt;timeline tab&lt;/i&gt; in Google Chrome's Developer Channel.&lt;br /&gt;&lt;br /&gt;With the heap profiler you can now take a snapshot of the JavaScript heap at any point in time. A heap snapshot helps you understand memory usage, and by comparing snapshots you can also follow memory usage over time. You will find the heap profiler in the profiles tab along with the sample-based CPU profiler.&lt;br /&gt;&lt;br /&gt;The new timeline view gives you a complete overview of where time is spent when loading a web app. All events -- ranging from loading resources over parsing and executing JavaScript to calculating styles and repainting -- are plotted on a timeline.&lt;br /&gt;&lt;br /&gt;Besides these product improvements, we've tried to make the Google Chrome Developer tools easier to find and understand by putting together &lt;a href="http://www.chromium.org/devtools" target="_blank" title="mini site"&gt;mini site&lt;/a&gt; with tutorials and videos.&lt;br /&gt;&lt;br /&gt;&lt;object width="480" height="385"&gt;&lt;param name="movie" value="http://www.youtube.com/p/B9EC47A6AAE4540F&amp;amp;hl=en_US&amp;amp;fs=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/p/B9EC47A6AAE4540F&amp;amp;hl=en_US&amp;amp;fs=1" type="application/x-shockwave-flash" width="480" height="385" allowscriptaccess="always" allowfullscreen="true"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;To take our newest release for a spin, get Google Chrome from the &lt;a href="http://www.chromium.org/getting-involved/dev-channel" id="rw00" target="_blank" title="Developer Channel"&gt;Developer Channel&lt;/a&gt; and you'll automatically be brought up to date. We welcome your &lt;a href="http://code.google.com/p/chromium/issues/list?q=label:Area%20label:DevTools" id="nl:v" target="_blank" title="feedback"&gt;feedback&lt;/a&gt; and your contributions to improve developer tools in WebKit and Google Chrome even more.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;" class="byline-author"&gt;By Pavel Feldman, Software Engineer and Anders Sandholm, Product Manager&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11300808-4135669758940676910?l=googlecode.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/Dcni?a=-NkuUyetK8c:FvEiiH_EwXE:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Dcni?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/Dcni?a=-NkuUyetK8c:FvEiiH_EwXE:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Dcni?i=-NkuUyetK8c:FvEiiH_EwXE:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/Dcni/~4/-NkuUyetK8c" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://googlecode.blogspot.com/feeds/4135669758940676910/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://googlecode.blogspot.com/2009/11/additional-functionality-for-google.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/11300808/posts/default/4135669758940676910?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/11300808/posts/default/4135669758940676910?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/Dcni/~3/-NkuUyetK8c/additional-functionality-for-google.html" title="Additional functionality for Google Chrome's Developer Tools" /><author><name>Mike Marchak</name><uri>http://www.blogger.com/profile/09046869427384152063</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="04643631162663437722" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/_EuCTzLdp3vE/SxQ84GVXhOI/AAAAAAAAC2U/fk8SBLy0sxc/s72-c/chromium_42_42.png" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://googlecode.blogspot.com/2009/11/additional-functionality-for-google.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Ak8MQ3o6cCp7ImA9WxNbF04.&quot;"><id>tag:blogger.com,1999:blog-11300808.post-6694606334636801088</id><published>2009-11-20T09:40:00.000-08:00</published><updated>2009-11-20T09:41:22.418-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-11-20T09:41:22.418-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="caption" /><category scheme="http://www.blogger.com/atom/ns#" term="Google I/O" /><category scheme="http://www.blogger.com/atom/ns#" term="youtube" /><title>Captions available for all Google I/O videos</title><content type="html">We work hard to make sure that the videos on the GoogleDevelopers channel on Youtube are captioned, but when &lt;a href="http://www.youtube.com/view_play_list?p=A083BA7A5413027E&amp;amp;sort_field=viewcount" id="ref:" title="I/O added over a hundred hours of video content"&gt;I/O added over a hundred hours of video content&lt;/a&gt;, we got a little behind. I'm happy to announce that we're finally caught up! Every English and Spanish video from &lt;a href="http://code.google.com/events/io/"&gt;I/O&lt;/a&gt; now has captions that you can turn on in YouTube.&lt;br /&gt;&lt;br /&gt;Didn't know we had captions? Just click to select captions from the menu in the lower right corner of the video player.&lt;br /&gt;&lt;br /&gt;Some caption and subtitle-related news:&lt;br /&gt;&lt;ul&gt;&lt;li&gt; A group of volunteers from Russia used the &lt;u style="color: rgb(51, 102, 255);"&gt;&lt;a href="http://translated.by/" id="oh0v" title="translated.by software"&gt;translated.by software&lt;/a&gt;&lt;/u&gt; to crowdsource translation for Google Wave video captions. Thank you, habratranslation! Check out one of the &lt;a href="http://www.youtube.com/watch?v=v_UyVmITiYQ&amp;amp;cc_lang_pref=ru_ALL&amp;amp;cc_load_policy=1" id="payt" title="Wave videos with Russian subtitles"&gt;Wave videos with Russian subtitles&lt;/a&gt;. (You have to choose Russian from the caption menu in YouTube to see them.)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;If you'd like to help translate captions for any of our videos, please email &lt;a href="mailto:google-video-captions@googlegroups.com" target="_blank"&gt;google-video-captions@googlegroups.com&lt;/a&gt; with a request. We'd be happy to share any caption files that you might be interested in under a &lt;a href="http://creativecommons.org/licenses/by/3.0/" id="mz0a" title="creative commons attribution license"&gt;creative commons attribution license&lt;/a&gt;. If you send us the translation, we'll credit you in the video caption track and blog about how awesome you are.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;In addition to machine translation for captions, YouTube now provides experimental &lt;i&gt;automatic caption transcription&lt;/i&gt; using the same speech recognition algorithms found in Google Voice. The GoogleDevelopers channel is part of the initial pilot, so this feature is available on many of our videos. To learn more, check out the &lt;a href="http://googleblog.blogspot.com/2009/11/automatic-captions-in-youtube.html" id="fn1a" title="blog post on the Official Google Blog"&gt;blog post on the Official Google Blog&lt;/a&gt;.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="font-style: italic;" class="byline-author"&gt;By Naomi Bilodeau, Google Developer Team&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11300808-6694606334636801088?l=googlecode.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/Dcni?a=HhJ7n0rSINg:qr3xFI2DyfY:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Dcni?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/Dcni?a=HhJ7n0rSINg:qr3xFI2DyfY:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Dcni?i=HhJ7n0rSINg:qr3xFI2DyfY:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/Dcni/~4/HhJ7n0rSINg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://googlecode.blogspot.com/feeds/6694606334636801088/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://googlecode.blogspot.com/2009/11/captions-available-for-all-google-io.html#comment-form" title="9 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/11300808/posts/default/6694606334636801088?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/11300808/posts/default/6694606334636801088?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/Dcni/~3/HhJ7n0rSINg/captions-available-for-all-google-io.html" title="Captions available for all Google I/O videos" /><author><name>Mike Marchak</name><uri>http://www.blogger.com/profile/09046869427384152063</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="04643631162663437722" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">9</thr:total><feedburner:origLink>http://googlecode.blogspot.com/2009/11/captions-available-for-all-google-io.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DE4FSX04eip7ImA9WxNbFko.&quot;"><id>tag:blogger.com,1999:blog-11300808.post-7655015758038011435</id><published>2009-11-18T16:20:00.000-08:00</published><updated>2009-11-19T16:28:38.332-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-11-19T16:28:38.332-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="open source" /><category scheme="http://www.blogger.com/atom/ns#" term="app engine" /><category scheme="http://www.blogger.com/atom/ns#" term="youtube" /><title>The latest addition to Google's open source projects</title><content type="html">&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_EuCTzLdp3vE/SwSOXJf4dgI/AAAAAAAAC2M/2ot9ycKGFqc/s1600/youtube.png"&gt;&lt;img style="float:right; border:0; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 72px; height: 72px;" src="http://3.bp.blogspot.com/_EuCTzLdp3vE/SwSOXJf4dgI/AAAAAAAAC2M/2ot9ycKGFqc/s400/youtube.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5405601981089216002" /&gt;&lt;/a&gt;Did you know &lt;a id="upyu" href="http://code.google.com/hosting/projects.html" title="Google has released more than 300 open source projects"&gt;Google has released more than 300 open source projects&lt;/a&gt; to date? Yesterday, we &lt;a id="wf7q" href="http://apiblog.youtube.com/2009/11/enrich-your-site-with-youtube-direct.html" title="announced"&gt;announced&lt;/a&gt; the latest addition to Google's open source projects - &lt;a id="tx6f" href="http://code.google.com/p/youtube-direct/" title="YouTube Direct"&gt;YouTube Direct&lt;/a&gt;, a new tool that enables any developer to solicit video submissions, moderate and display them on their website, all powered by YouTube. We recognize the role that open source plays at Google and how it helps us create better applications and we try to give back to the community as much as possible.&lt;br /&gt;&lt;br /&gt;YouTube Direct was built on top of &lt;a id="acf5" href="http://code.google.com/apis/youtube/overview.html" title="YouTube's public APIs"&gt;YouTube's public APIs&lt;/a&gt; and is designed to run on &lt;a id="g3ve" href="http://code.google.com/appengine/" title="Google App Engine"&gt;Google App Engine&lt;/a&gt; - Google's highly scalable platform. To date, several media organizations like &lt;a id="ji1z" href="http://abcnews.go.com/GMA/good-morning-america-thanksgiving-youtube-video-message-thankful/story?id=9096856" title="ABC News"&gt;ABC News&lt;/a&gt;, &lt;a id="u89s" href="http://www.huffingtonpost.com/2009/11/16/hopenhagen-ambassador-con_n_356950.html" title="The Huffington Post"&gt;The Huffington Post&lt;/a&gt; and &lt;a id="tlj9" href="http://www.politico.com/arena/video/going_rogue.html" title="Politico"&gt;Politico&lt;/a&gt; have taken advantage of the open platform to deploy their own version of YouTube Direct to empower citizen journalism and enrich their site in the process. We look forward to see for more creative usage of the tool.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;" class="byline-author"&gt;By Amanda Surya, YouTube Direct team&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11300808-7655015758038011435?l=googlecode.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/Dcni?a=7Hha_K1PuIw:FhaumdRqfoM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Dcni?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/Dcni?a=7Hha_K1PuIw:FhaumdRqfoM:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Dcni?i=7Hha_K1PuIw:FhaumdRqfoM:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/Dcni/~4/7Hha_K1PuIw" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://googlecode.blogspot.com/feeds/7655015758038011435/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://googlecode.blogspot.com/2009/11/latest-addition-to-googles-open-source.html#comment-form" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/11300808/posts/default/7655015758038011435?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/11300808/posts/default/7655015758038011435?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/Dcni/~3/7Hha_K1PuIw/latest-addition-to-googles-open-source.html" title="The latest addition to Google's open source projects" /><author><name>Mike Marchak</name><uri>http://www.blogger.com/profile/09046869427384152063</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="04643631162663437722" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/_EuCTzLdp3vE/SwSOXJf4dgI/AAAAAAAAC2M/2ot9ycKGFqc/s72-c/youtube.png" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total><feedburner:origLink>http://googlecode.blogspot.com/2009/11/latest-addition-to-googles-open-source.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0IHQHw_cSp7ImA9WxNbFUs.&quot;"><id>tag:blogger.com,1999:blog-11300808.post-5282850515995690850</id><published>2009-11-18T10:38:00.000-08:00</published><updated>2009-11-18T10:38:51.249-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-11-18T10:38:51.249-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="developer" /><category scheme="http://www.blogger.com/atom/ns#" term="google apps" /><title>Welcome to Google Developer Relations, Don!</title><content type="html">A couple days ago, Google welcomed Don Dodge to our Developer Relations team, where he joins us as a Developer Advocate working with developers, startups, and other Google Apps partners.  We're expecting Don to be a fantastic addition to our team.  He's already a prominent voice in the developer community, well-known and highly-regarded among entrepreneurs, technologists, and the media.&lt;br /&gt;&lt;br /&gt;In the &lt;a href="http://www.techcrunch.com/2009/11/04/microsoft-loses-don-dodge-this-is-a-huge-mistake/" id="lm2c" title="TechCrunch post"&gt;TechCrunch post&lt;/a&gt; first announcing Don's availability, Michael Arrington wrote how Don, "makes a big effort to give young startups the attention they deserve. This is a guy who gives a heck of a lot more to the community than he ever takes back." This dedication to the community of developers and the businesses they build is one of the things that excites us the most about having Don on our team. These businesses have been central to Google's success over the years, so we already know that Don's attitude will fit right in with our efforts.  Don has deep experience working in startups from his days at companies like AltaVista, Napster, and Groove Networks, and has always continued to maintain the connection and passion for that community since leaving their ranks to join Microsoft, and now Google. We are eager for Don to share his personal experience and professional insights with developers and small businesses &lt;a href="http://code.google.com/googleapps/" title="APIs and developer products"&gt;integrating with Google Apps&lt;/a&gt;, and be an advocate for developers and partners inside the company.&lt;br /&gt;&lt;br /&gt;Don already wrote about his &lt;a href="http://dondodge.typepad.com/the_next_big_thing/2009/11/thanks-microsoft-hello-google.html" id="x.:8" title="first day on the job"&gt;first day on the job&lt;/a&gt; at Google. Tomorrow you can hear him speak on the &lt;a href="http://www.interop.com/newyork/event-highlights/keynotes.php#thurs" id="hr3q" title="Enterprise Cloud Summit Panel"&gt;Enterprise Cloud Summit Panel&lt;/a&gt; in New York City. You can follow Don on his &lt;a href="http://dondodge.typepad.com/the_next_big_thing/" id="dses" title="personal blog"&gt;personal blog&lt;/a&gt;, email him at dondodge at google.com, or follow &lt;a href="http://twitter.com/dondodge" id="llsa" title="@dondodge"&gt;@dondodge&lt;/a&gt; on Twitter.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;" class="byline-author"&gt;By Michael Winton, Google Developer Relations&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11300808-5282850515995690850?l=googlecode.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/Dcni?a=mJkZA6Q7Hcs:LcXrCzlsChE:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Dcni?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/Dcni?a=mJkZA6Q7Hcs:LcXrCzlsChE:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Dcni?i=mJkZA6Q7Hcs:LcXrCzlsChE:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/Dcni/~4/mJkZA6Q7Hcs" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://googlecode.blogspot.com/feeds/5282850515995690850/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://googlecode.blogspot.com/2009/11/welcome-to-google-developer-relations.html#comment-form" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/11300808/posts/default/5282850515995690850?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/11300808/posts/default/5282850515995690850?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/Dcni/~3/mJkZA6Q7Hcs/welcome-to-google-developer-relations.html" title="Welcome to Google Developer Relations, Don!" /><author><name>Mike Marchak</name><uri>http://www.blogger.com/profile/09046869427384152063</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="04643631162663437722" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total><feedburner:origLink>http://googlecode.blogspot.com/2009/11/welcome-to-google-developer-relations.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEMCQ3w5cSp7ImA9WxNUGEQ.&quot;"><id>tag:blogger.com,1999:blog-11300808.post-1859951683125381709</id><published>2009-11-10T15:40:00.000-08:00</published><updated>2009-11-10T15:41:02.229-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-11-10T15:41:02.229-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="open source" /><category scheme="http://www.blogger.com/atom/ns#" term="programming" /><title>Go: A New Programming Language</title><content type="html">Have you heard about Go? We released a new, experimental systems programming language today.  It is open source and we're excited about sharing it with the development community. For more information, check out the &lt;a href="http://google-opensource.blogspot.com/2009/11/hey-ho-lets-go.html"&gt;Google Open Source blog&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;" class="byline-author"&gt;By Robert Griesemer, Rob Pike, Ken Thompson, Ian Taylor, Russ Cox, Jini Kim and Adam Langley - The Go Team&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11300808-1859951683125381709?l=googlecode.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/Dcni?a=y2S8feofpjE:gOOf3YkSLaU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Dcni?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/Dcni?a=y2S8feofpjE:gOOf3YkSLaU:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Dcni?i=y2S8feofpjE:gOOf3YkSLaU:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/Dcni/~4/y2S8feofpjE" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://googlecode.blogspot.com/feeds/1859951683125381709/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://googlecode.blogspot.com/2009/11/go-new-programming-language.html#comment-form" title="31 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/11300808/posts/default/1859951683125381709?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/11300808/posts/default/1859951683125381709?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/Dcni/~3/y2S8feofpjE/go-new-programming-language.html" title="Go: A New Programming Language" /><author><name>Mike Marchak</name><uri>http://www.blogger.com/profile/09046869427384152063</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="04643631162663437722" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">31</thr:total><feedburner:origLink>http://googlecode.blogspot.com/2009/11/go-new-programming-language.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEUESHw8eip7ImA9WxNbEU4.&quot;"><id>tag:blogger.com,1999:blog-11300808.post-3637099642721036094</id><published>2009-11-09T12:00:00.000-08:00</published><updated>2009-11-13T10:16:49.272-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-11-13T10:16:49.272-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="faster web" /><title>Use compression to make the web faster</title><content type="html">Every day, more than 99 human years are wasted because of &lt;a href="http://en.wikipedia.org/wiki/File_compression" id="mb4g" target="_blank" title="uncompressed content"&gt;uncompressed content&lt;/a&gt;. Although support for compression is a standard feature of all modern browsers, there are still many cases in which users of these browsers do not receive compressed content. This wastes bandwidth and slows down users' interactions with web pages.&lt;br /&gt;&lt;br /&gt;Uncompressed content hurts all users. For bandwidth-constrained users, it takes longer just to transfer the additional bits. For broadband connections, even though the bits are transferred quickly, it takes several round trips between client and server before the two can communicate at the highest possible speed.&amp;nbsp; For these users the number of round trips is the larger factor in determining the time required to load a web page. Even for well-connected users these round trips often take tens of milliseconds and sometimes well over one hundred milliseconds.&lt;br /&gt;&lt;br /&gt;In Steve Souders' book&amp;nbsp;&lt;i&gt;&lt;a href="http://www.stevesouders.com/blog/2009/04/23/even-faster-web-sites/" id="mwy1" target="_blank" title="Even Faster Web Sites"&gt;Even Faster Web Sites&lt;/a&gt;&lt;/i&gt;, Tony Gentilcore presents data showing the page load time increase with compression disabled.&amp;nbsp; We've reproduced the results for three highest ranked sites from the Alexa top 100 with permission here:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_EuCTzLdp3vE/SvTLbNKnhlI/AAAAAAAAC10/SEAqXE4YcDY/s1600-h/compresssion1.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 500px; height: 110px; border: 0;" src="http://2.bp.blogspot.com/_EuCTzLdp3vE/SvTLbNKnhlI/AAAAAAAAC10/SEAqXE4YcDY/s400/compresssion1.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5401165521375168082" /&gt;&lt;/a&gt;&lt;div style="text-align: center;"&gt;&lt;font size=1&gt;Data, with permission, from Steve Souders, "Chapter 9: Going Beyond Gzipping," in &lt;i&gt;&lt;a href="http://www.stevesouders.com/blog/2009/04/23/even-faster-web-sites/" id="s7eq" target="_blank" title="Even Faster Web Sites"&gt;Even Faster Web Sites&lt;/a&gt; &lt;/i&gt;(Sebastapol, CA: O'Reilly, 2009), 122.&lt;/font&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;The data from Google's web search logs show that the average page load time for users getting uncompressed content is 25% higher compared to the time for users getting compressed content. In a randomized experiment where we forced compression for some users who would otherwise not get compressed content, we measured a latency improvement of 300ms.&amp;nbsp; While this experiment did not capture the full difference, that is probably because users getting forced compression have older computers and older software.&lt;br /&gt;&lt;br /&gt;We have found that there are 4 major reasons why users do not get compressed content: anti-virus software, browser bugs, web proxies, and misconfigured web servers.&amp;nbsp; The first three modify the &lt;a href="http://en.wikipedia.org/wiki/HTTP_request#Request_message" id="i83q" target="_blank" title="web request"&gt;web request&lt;/a&gt; so that the web server does not know that the browser can uncompress content. Specifically, they remove or mangle the Accept-Encoding header that is normally sent with every request.&lt;br /&gt;&lt;br /&gt;Anti-virus software may try to minimize CPU operations by intercepting and altering requests so that web servers send back uncompressed content.&amp;nbsp; But if the CPU is not the bottleneck, the software is not doing users any favors.&amp;nbsp; Some popular antivirus programs interfere with compression.&amp;nbsp; Users can check if their anti-virus software is interfering with compression by visiting the&amp;nbsp;&lt;a title="browser compression test page" href="http://www.browserscope.org/network/test?test_key=gzip" id="dbh7"&gt;browser compression test page&lt;/a&gt; at Browserscope.org.&lt;br /&gt;&lt;br /&gt;By default, Internet Explorer 6 downgrades to HTTP/1.0 when behind a proxy, and as a result does not send the Accept-Encoding request header. The table below, generated from Google's web search logs, shows that IE 6 represents 36% of all search results that are sent without compression.&amp;nbsp; This number is far higher than the percentage of people using IE 6.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_EuCTzLdp3vE/SvTL2BJf_QI/AAAAAAAAC18/hxbW9EVp-8o/s1600-h/compression2.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 200px; border: 0;" src="http://2.bp.blogspot.com/_EuCTzLdp3vE/SvTL2BJf_QI/AAAAAAAAC18/hxbW9EVp-8o/s400/compression2.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5401165982005722370" /&gt;&lt;/a&gt;&lt;div style="text-align: center;"&gt;&lt;i&gt;&lt;font size=1&gt;Data from Google Web Search Logs&lt;/font&gt;&lt;/i&gt;&lt;/div&gt;&lt;br /&gt;There are a handful of ISPs, &amp;nbsp;where the percentage of uncompressed content is over 95%.&amp;nbsp; One likely hypothesis is that either an ISP or a corporate proxy removes or mangles the Accept-Encoding header.&amp;nbsp; As with anti-virus software, a user who suspects an ISP is interfering with compression should visit the &lt;a title="browser compression test page" href="http://www.browserscope.org/network/tests/gzip" id="ecuz"&gt;browser compression test page&lt;/a&gt; at Browserscope.org.&lt;br /&gt;&lt;br /&gt;Finally, in many cases, users are not getting compressed content because the websites they visit are not compressing their content.&amp;nbsp; The following table shows a few popular websites that do not compress all of their content. If these websites were to compress their content, they could decrease the page load times by hundreds of milliseconds for the average user, and even more for users on modem connections.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_EuCTzLdp3vE/SvTMrfWT0fI/AAAAAAAAC2E/oeqUJl1Ts0A/s1600-h/compression3.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 66px; border: 0;" src="http://3.bp.blogspot.com/_EuCTzLdp3vE/SvTMrfWT0fI/AAAAAAAAC2E/oeqUJl1Ts0A/s400/compression3.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5401166900645581298" /&gt;&lt;/a&gt;&lt;div style="text-align: center;"&gt;&lt;font size=1&gt;&lt;i&gt;Data generated using &lt;a title="PageSpeed" href="http://code.google.com/speed/page-speed/" id="krpp"&gt;Page Speed&lt;/a&gt;&lt;/font&gt;&lt;/i&gt;&lt;/div&gt;&lt;br /&gt;To reduce uncompressed content, we all need to work together.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Corporate IT departments and individual users can upgrade their browsers, especially if they are using IE 6 with a proxy. Using the latest version of&amp;nbsp;&lt;a href="http://www.mozilla.com/en-US/firefox/upgrade.html" id="uwkg" target="_blank" title="Firefox"&gt;Firefox&lt;/a&gt;, &lt;a href="http://ie8.msn.com/" target="_blank" title="MSIE"&gt;Internet Explorer&lt;/a&gt;,&amp;nbsp;&lt;a href="http://www.opera.com/" id="m-d9" target="_blank" title="Opera"&gt;Opera&lt;/a&gt;, &lt;a href="http://www.apple.com/safari/" id="pg0m" target="_blank" title="Safari"&gt;Safari&lt;/a&gt;, or &lt;a href="http://www.google.com/chrome" target="_blank" title="Chrome"&gt;Google Chrome&lt;/a&gt; will increase the chances of getting compressed content. &amp;nbsp;A recent editorial in &lt;a href="http://www.spectrum.ieee.org/telecom/internet/we-come-to-bury-ie6" id="a7oz" target="_blank" title="IEEE"&gt;IEEE Spectrum&lt;/a&gt;&amp;nbsp;lists additional reasons - besides compression - for upgrading from IE6.&lt;/li&gt;&lt;li&gt;Anti-virus software vendors can start handling compression properly and would need to stop removing or mangling the Accept-Encoding header in upcoming releases of their software.&lt;/li&gt;&lt;li&gt;ISPs that use an HTTP proxy which strips or mangles the Accept-Encoding header can upgrade, reconfigure or install a better proxy which doesn't prevent their users from getting compressed content.&lt;/li&gt;&lt;li&gt;Webmasters can use &lt;a href="http://code.google.com/speed/page-speed/" id="ydqr" target="_blank" title="PageSpeed"&gt;Page Speed&lt;/a&gt; (or other similar tools) to check that the content of their pages is compressed.&lt;/li&gt;&lt;/ul&gt;For more articles on speeding up the web, check out &lt;a href="http://code.google.com/speed/articles/"&gt;http://code.google.com/speed/articles/&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;" class="byline-author"&gt;By Arvind Jain, Engineering Director and Jason Glasgow, Staff Software Engineer&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11300808-3637099642721036094?l=googlecode.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/Dcni?a=sTz5JoUTCyw:mVnZnJEAkm0:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Dcni?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/Dcni?a=sTz5JoUTCyw:mVnZnJEAkm0:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Dcni?i=sTz5JoUTCyw:mVnZnJEAkm0:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/Dcni/~4/sTz5JoUTCyw" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://googlecode.blogspot.com/feeds/3637099642721036094/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://googlecode.blogspot.com/2009/11/use-compression-to-make-web-faster.html#comment-form" title="5 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/11300808/posts/default/3637099642721036094?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/11300808/posts/default/3637099642721036094?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/Dcni/~3/sTz5JoUTCyw/use-compression-to-make-web-faster.html" title="Use compression to make the web faster" /><author><name>Mike Marchak</name><uri>http://www.blogger.com/profile/09046869427384152063</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="04643631162663437722" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/_EuCTzLdp3vE/SvTLbNKnhlI/AAAAAAAAC10/SEAqXE4YcDY/s72-c/compresssion1.png" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">5</thr:total><feedburner:origLink>http://googlecode.blogspot.com/2009/11/use-compression-to-make-web-faster.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkQFSXc4fyp7ImA9WxNUFEk.&quot;"><id>tag:blogger.com,1999:blog-11300808.post-3771887164161872998</id><published>2009-11-05T10:30:00.000-08:00</published><updated>2009-11-05T11:11:58.937-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-11-05T11:11:58.937-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="javascript" /><category scheme="http://www.blogger.com/atom/ns#" term="faster web" /><title>Introducing Closure Tools</title><content type="html">&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_EuCTzLdp3vE/SvIwmKttuCI/AAAAAAAAC1U/h9AdUMdkEO4/s1600-h/closure.png"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 72px; height: 72px; border:0" src="http://2.bp.blogspot.com/_EuCTzLdp3vE/SvIwmKttuCI/AAAAAAAAC1U/h9AdUMdkEO4/s200/closure.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5400432335439902754" /&gt;&lt;/a&gt;Millions of Google users worldwide use JavaScript-intensive applications such as &lt;a href="http://mail.google.com/" id="nlv9" title="Gmail"&gt;Gmail&lt;/a&gt;, &lt;a href="http://docs.google.com/" id="zq_3" title="Google Docs"&gt;Google Docs&lt;/a&gt;, and &lt;a href="http://maps.google.com/" id="lh23" title="Google Maps"&gt;Google Maps&lt;/a&gt;. Like developers everywhere, Googlers want great web apps to be easier to create, so we've built many tools to help us develop these (and many other) apps. We're happy to announce the open sourcing of these tools, and proud to make them available to the web development community.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Closure Compiler&lt;/b&gt;&lt;br /&gt;&lt;a href="http://code.google.com/closure/compiler" title="Closure Compiler"&gt;Closure Compiler&lt;/a&gt; is a JavaScript optimizer that compiles web apps down into compact, high-performance JavaScript code. The compiler removes dead code, then rewrites and minimizes what's left so that it will run fast on browsers' JavaScript engines. The compiler also checks syntax, variable references, and types, and warns about other common JavaScript pitfalls. These checks and optimizations help you write apps that are less buggy and easier to maintain. You can use the compiler with &lt;a href="http://code.google.com/closure/compiler/docs/inspector.html" title="Closure Inspector"&gt;Closure Inspector&lt;/a&gt;, a Firebug extension that makes debugging the obfuscated code almost as easy as debugging the human-readable source. &lt;br /&gt;&lt;br /&gt;Because JavaScript developers are a diverse bunch, we've set up a number of ways to run the Closure Compiler. We've open-sourced a&amp;nbsp;&lt;a href="http://code.google.com/p/closure-compiler/downloads/list" title="command-line tool"&gt;command-line tool&lt;/a&gt;. We've created a&amp;nbsp;&lt;a href="http://closure-compiler.appspot.com/" title="web application"&gt;web application&lt;/a&gt;&amp;nbsp;that accepts your code for compilation through a text box or a RESTful API. We are also offering a Firefox extension that you can use with &lt;a href="http://code.google.com/speed/page-speed/download.html" title="Page Speed"&gt;Page Speed&lt;/a&gt; to conveniently see the performance benefits for your web pages.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Closure Library&lt;/b&gt;&lt;br /&gt;&lt;a href="http://code.google.com/closure/library" id="qnzg" title="Closure Library"&gt;Closure Library&lt;/a&gt;&amp;nbsp;is a broad, well-tested, modular, and cross-browser JavaScript library. Web developers can pull just what they need from a wide set of reusable UI widgets and controls, as well as lower-level utilities for the DOM, server communication, animation, data structures, unit testing, rich-text editing, and much, much more. (Seriously. Check&amp;nbsp;&lt;a href="http://closure-library.googlecode.com/svn/trunk/closure/goog/docs/index.html" id="q11v" title="the docs"&gt;the docs&lt;/a&gt;.)&lt;br /&gt;&lt;br /&gt;JavaScript lacks a standard class library like the&amp;nbsp;&lt;a href="http://en.wikipedia.org/wiki/Standard_Template_Library" id="novt" title="STL"&gt;STL&lt;/a&gt;&amp;nbsp;or&amp;nbsp;&lt;a href="http://en.wikipedia.org/wiki/Java_Development_Kit" id="lrab" title="JDK"&gt;JDK&lt;/a&gt;. At Google, Closure Library serves as our "standard JavaScript library" for creating large, complex web applications. It's purposely server-agnostic and intended for use with the Closure Compiler. You can make your project big and complex (with namespacing and type checking), yet small and fast over the wire (with compilation). The Closure Library provides clean utilities for common tasks so that you spend your time writing your app rather than writing utilities and browser abstractions.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Closure Templates&lt;/b&gt; &lt;br /&gt;&lt;a href="http://code.google.com/closure/templates" id="j_2h" title="Closure Templates"&gt;Closure Templates&lt;/a&gt;&amp;nbsp;grew out of a desire for web templates that are precompiled to efficient JavaScript. &amp;nbsp;Closure Templates have a simple syntax that is natural for programmers. &amp;nbsp;Unlike traditional templating systems, you can think of Closure Templates as small components that you compose to form your user interface, instead of having to create one big template per page.&lt;br /&gt;&lt;br /&gt;Closure Templates are implemented for both JavaScript and Java, so you can use the same templates both on the server and client side.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Closure Compiler, Closure Library, Closure Templates, and Closure Inspector all started as &lt;a href="http://googleblog.blogspot.com/2006/05/googles-20-percent-time-in-action.html" id="ghae" title="20% projects"&gt;20% projects&lt;/a&gt;&amp;nbsp;and hundreds of Googlers have contributed thousands of patches. Today, each Closure Tool has grown to be a key part of the JavaScript infrastructure behind web apps at Google. &amp;nbsp;That's why we're particularly excited (and humbled) to open source them to encourage and support web development outside Google. We want to hear what you think, but more importantly, we want to see what you make. So have at it and have fun!&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;" class="byline-author"&gt;By the Closure Tools team&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11300808-3771887164161872998?l=googlecode.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/Dcni?a=hknf8RP9JBQ:rf9_bL6k3j8:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Dcni?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/Dcni?a=hknf8RP9JBQ:rf9_bL6k3j8:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Dcni?i=hknf8RP9JBQ:rf9_bL6k3j8:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/Dcni/~4/hknf8RP9JBQ" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://googlecode.blogspot.com/feeds/3771887164161872998/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://googlecode.blogspot.com/2009/11/introducing-closure-tools.html#comment-form" title="68 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/11300808/posts/default/3771887164161872998?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/11300808/posts/default/3771887164161872998?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/Dcni/~3/hknf8RP9JBQ/introducing-closure-tools.html" title="Introducing Closure Tools" /><author><name>Mike Marchak</name><uri>http://www.blogger.com/profile/09046869427384152063</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="04643631162663437722" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/_EuCTzLdp3vE/SvIwmKttuCI/AAAAAAAAC1U/h9AdUMdkEO4/s72-c/closure.png" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">68</thr:total><feedburner:origLink>http://googlecode.blogspot.com/2009/11/introducing-closure-tools.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUMNQXg4eip7ImA9WxNUE0g.&quot;"><id>tag:blogger.com,1999:blog-11300808.post-1864423490001668537</id><published>2009-11-04T08:50:00.000-08:00</published><updated>2009-11-04T08:51:30.632-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-11-04T08:51:30.632-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="social" /><category scheme="http://www.blogger.com/atom/ns#" term="google friend connect" /><title>New personalization features in Google Friend Connect</title><content type="html">Today, we're excited to announce several new features for &lt;a id="fuwf" href="http://www.google.com/friendconnect" title="Google Friend Connect"&gt;Google Friend Connect&lt;/a&gt; that make it possible for website owners to get to know their users, encourage users to get to know each other, and match their site content (including Google ads) to visitors' interests. Check out the &lt;a href="http://googlesocialweb.blogspot.com/2009/11/google-friend-connect-now-more.html"&gt;Google Social Web Blog&lt;/a&gt; for an overview of these new features.&lt;br /&gt;&lt;br /&gt;We also want to point out that there are APIs for developers who want to play with the interests data programmatically. With the new interest data described on the Social Web Blog, developers can write custom polls and access the interests data directly.&amp;nbsp;&lt;a id="hqnx" href="http://code.google.com/apis/friendconnect/interests.html" title="Friend Connect provides API level access"&gt;Friend Connect provides API level access&lt;/a&gt; to both individual interests information as well as aggregate information for all users of a site. Interests information can be added programmatically for the signed-in user or via the poll gadget, and it can be accessed via both the &lt;a id="ehrf" href="http://code.google.com/apis/friendconnect/opensocial_and_gfc.html#profile" title="JavaScript API"&gt;JavaScript API&lt;/a&gt; and the &lt;a id="ndw4" href="http://code.google.com/apis/friendconnect/opensocial_rest_rpc.html#endpoints" title="OpenSocial REST API"&gt;OpenSocial REST API&lt;/a&gt;. The &lt;a id="olt1" href="http://www.ossamples.com/guitar-universe/" title="Guitar Universe example site"&gt;Guitar Universe example site&lt;/a&gt; should give you an idea of some of the things that are possible with this new launch.&lt;br /&gt;&lt;br /&gt;As always, feel free to ask technical questions related to the Friend Connect APIs in the &lt;a href="http://groups.google.com/group/google-friend-connect-developers?pli=1"&gt;developer forum&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;" class="byline-author"&gt;By Mussie Shore, Product Manager, Google Friend Connect&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11300808-1864423490001668537?l=googlecode.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/Dcni?a=vuwrCaSZlIs:F2dR8AZIIVs:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Dcni?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/Dcni?a=vuwrCaSZlIs:F2dR8AZIIVs:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Dcni?i=vuwrCaSZlIs:F2dR8AZIIVs:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/Dcni/~4/vuwrCaSZlIs" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://googlecode.blogspot.com/feeds/1864423490001668537/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://googlecode.blogspot.com/2009/11/new-personalization-features-in-google.html#comment-form" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/11300808/posts/default/1864423490001668537?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/11300808/posts/default/1864423490001668537?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/Dcni/~3/vuwrCaSZlIs/new-personalization-features-in-google.html" title="New personalization features in Google Friend Connect" /><author><name>Mike Marchak</name><uri>http://www.blogger.com/profile/09046869427384152063</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="04643631162663437722" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">2</thr:total><feedburner:origLink>http://googlecode.blogspot.com/2009/11/new-personalization-features-in-google.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DU4EQXkzcSp7ImA9WxNUEks.&quot;"><id>tag:blogger.com,1999:blog-11300808.post-6665355092803757245</id><published>2009-11-03T09:05:00.000-08:00</published><updated>2009-11-03T09:05:00.789-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-11-03T09:05:00.789-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="enterprise" /><category scheme="http://www.blogger.com/atom/ns#" term="google apps" /><category scheme="http://www.blogger.com/atom/ns#" term="oauth" /><title>OAuth Enhancements</title><content type="html">Google has recently added three important enhancements to our OAuth support:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;The ability to use OAuth without registration&lt;br&gt;&lt;/li&gt;&lt;li&gt;Support for software apps installed on a computer or mobile phone&lt;/li&gt;&lt;li&gt;Additional controls for our Google Apps Premier and Education customers which allows administrators to give another web application access to a subset of the data Google stores for that organization&lt;/li&gt;&lt;/ol&gt;Below is an overview of each enhancement, or you can refer to our updated&amp;nbsp;&lt;a href="http://code.google.com/apis/accounts/docs/OAuth.html" id="wzth" title="OAuth documentation"&gt;OAuth documentation&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;1. The ability to use OAuth without registration&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Based on consistent feedback from our developers, we added the ability to use OAuth without having to register the website ahead of time. This change is especially helpful for developers working on test servers that cannot be accessed directly from the Internet.&lt;br /&gt;  &lt;br /&gt;&lt;b&gt;2. Support for software apps installed on a computer or mobile phone&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Many of the larger enterprises that use the &lt;a id="uryv" href="http://www.google.com/a" title="Google Apps"&gt;Google Apps&lt;/a&gt; service choose to run their own login system. They accomplish this by leveraging our support for the &lt;a id="kzow" href="http://code.google.com/apis/apps/sso/saml_reference_implementation.html" title="SAML protocol"&gt;SAML protocol&lt;/a&gt; which defines a way for Google to redirect the user to the company's login system to be authenticated before accessing their mailbox at Google. &amp;nbsp;However, in this situation Google normally does not have a password for the user — especially if the enterprise authenticates the user with a password and with a second factor of authentication (such as a token generator they carry on a keychain). Unfortunately, there are many installed software applications created by both Google and ISV developers that use Google's APIs, and those applications are hardcoded to ask a user for their email and password using Google's ClientLogin API. With this new OAuth feature, the software application can now launch a web browser and start a process that both logs the user in through their central SAML login system, and that also gets the user's consent to access their data hosted at Google. Because the user authentication is done in the web browser, it will work with the enterprise's existing login system. &amp;nbsp;Google is encouraging any ISV that uses the ClientLogin API to add support for this new OAuth flow, enabling usage by the large enterprise customers described above. Google is also planning to enhance our &lt;a href="https://tools.google.com/dlpage/gappssync" id="ddpv" title="Google Apps Sync"&gt;Google Apps Sync&lt;/a&gt; for Microsoft Outlook to support this feature such that Outlook can be used with both Google Apps and an enterprise's central login system.&lt;br /&gt;  &lt;br /&gt;&lt;b&gt;3. Additional controls for our Google Apps Premier and Education customers which allows administrators to give another web application access to a subset of the data Google stores for that organization&lt;/b&gt;&lt;br /&gt;  &lt;br /&gt;This feature for our Google Apps Premier customers enhances our existing &lt;a href="http://code.google.com/apis/accounts/docs/OAuth.html#GoogleAppsOAuth" id="kp3:" title="OAuth for Google Apps domain administrators"&gt;OAuth for Google Apps domain administrators&lt;/a&gt;, also known as 2-legged OAuth. This feature enables domain administrators to allow specific IT apps or third party web services limited access to user accounts via a centralized permissions system under the control of the&amp;nbsp; domain administrator. For example, with this new system, an administrator can use the Google Documents API to configure every user in the domain to have a Google Docs folder named "Human Resources" that is automatically populated with common employee forms. &amp;nbsp;The company might also sign up with an Enterprise SaaS vendor such as &lt;a id="ewj:" href="http://www.manymoon.com" title="Manymoon"&gt;Manymoon&lt;/a&gt; and specify that Manymoon can access the Google Calendars of all of their users, providing tighter integration with Manymoon's project scheduling features. Previously, this feature required giving the third party vendor access to all of the data that Google stored for that organization, but with this new feature, administrators can limit access to particular data sources (Calendar, Documents, etc). Refer to our &lt;a id="e2vr" href="http://www.google.com/support/a/bin/answer.py?hl=en&amp;amp;answer=61017" title="documentation"&gt;documentation&lt;/a&gt; for more information.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;" class="byline-author"&gt;By Eric Sachs, Product Manager, Google Security&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11300808-6665355092803757245?l=googlecode.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/Dcni?a=NQjGGa1nZ10:f-buJJkTpfI:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Dcni?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/Dcni?a=NQjGGa1nZ10:f-buJJkTpfI:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Dcni?i=NQjGGa1nZ10:f-buJJkTpfI:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/Dcni/~4/NQjGGa1nZ10" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://googlecode.blogspot.com/feeds/6665355092803757245/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://googlecode.blogspot.com/2009/11/oauth-enhancements.html#comment-form" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/11300808/posts/default/6665355092803757245?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/11300808/posts/default/6665355092803757245?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/Dcni/~3/NQjGGa1nZ10/oauth-enhancements.html" title="OAuth Enhancements" /><author><name>Mike Marchak</name><uri>http://www.blogger.com/profile/09046869427384152063</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="04643631162663437722" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">2</thr:total><feedburner:origLink>http://googlecode.blogspot.com/2009/11/oauth-enhancements.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkQNQno_cCp7ImA9WxNUEks.&quot;"><id>tag:blogger.com,1999:blog-11300808.post-5925880629562754672</id><published>2009-11-03T09:00:00.000-08:00</published><updated>2009-11-03T09:13:13.448-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-11-03T09:13:13.448-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="openid" /><category scheme="http://www.blogger.com/atom/ns#" term="security" /><category scheme="http://www.blogger.com/atom/ns#" term="oauth" /><title>Hybrid Onboarding</title><content type="html">Do you operate a website and wish you could increase the percentage of users who finish the registration process? As discussed on Google's &lt;a id="pm.j" href="http://googleblog.blogspot.com/2009/11/cutting-back-on-your-long-list-of.html" title="main blog"&gt;main blog&lt;/a&gt;, Google has been working with Plaxo and Facebook to improve the registration success rate for Gmail users. We now see success rates as high as 90%, compared to the 50-60% rate that most websites see with traditional registration mechanisms. This result was achieved using a combination of our &lt;a href="http://code.google.com/apis/accounts/docs/OpenID.html" id="m3i1" title="OpenID"&gt;OpenID&lt;/a&gt;, &lt;a href="http://code.google.com/apis/accounts/docs/OAuth.html" id="ebnq" title="OAuth"&gt;OAuth&lt;/a&gt; and &lt;a href="http://code.google.com/apis/contacts/docs/poco/1.0/developers_guide.html" id="lf4t" title="Portable Contacts"&gt;Portable Contacts&lt;/a&gt; APIs. While those APIs have been available for over a year, we have added a number of refinements based on our experience with Plaxo and Facebook. Our documentation now has information on those new features, including:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;OpenID User Interface Extension 1.0 (including the ability to display the favicon of the website)&lt;/li&gt;&lt;li&gt;x-has-session, which is an enhacement to checkid_immediate requests via the UI extension. If the request includes "openid.ui.x-has-session," it will be echoed in the response only if Google detects an authenticated session&lt;/li&gt;&lt;li&gt;Support for the US Government's GSA profile for OpenID&lt;/li&gt;&lt;li&gt;PAPE (Provider Authentication Policy Extension) to support forced password reprompts&lt;/li&gt;&lt;li&gt;Support for not only Google Accounts, but also our Google Apps customers, as discussed on the &lt;a href="http://googleenterprise.blogspot.com/2009/11/single-sign-on-to-zoho-tripit-socialwok.html" id="d5aa" title="Enterprise blog"&gt;Enterprise blog&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;For more details, please refer to our &lt;a href="http://code.google.com/apis/accounts/docs/OpenID.html" id="v6tc" title="OpenID"&gt;OpenID&lt;/a&gt; documentation.&lt;br /&gt;  &lt;br /&gt;While these technologies are all standards-based, the methods for how to combine them to achieve this success rate are not obvious, and took a while for the industry to refine. More information is available in the &lt;a href="http://sites.google.com/site/oauthgoog/UXFedLogin/hybridonboarding" id="mih9" title="Hybrid Onboarding Guide"&gt;Hybrid Onboarding Guide&lt;/a&gt;, but below is a quick summary of some of the best practices for this hybrid onboarding technique:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;The technique is primarily for websites with an existing login system based on email addresses.&lt;/li&gt;&lt;li&gt;It also assumes the website will send email to users who are not yet registered, whether it is through traditional email marketing or social network invitations.&lt;/li&gt;&lt;li&gt;The website owner then needs to choose a small set of email providers such as Yahoo and Google that support these standards.&lt;/li&gt;&lt;li&gt;Whenever the website sends email to a user at one of those providers, any hyperlinks that promote registration at the website should be modified to communicate the email address (or at least domain) of the user back to the website's registration page.&lt;/li&gt;&lt;li&gt;If the registration page detects a user from one of these domains, it should NOT start the traditional process of asking the user to enter a password, password confirmation, and email. Instead, it should prominently show a single button that says "Sign up with your Google Account" — where Google is replaced with the name of the email provider.&lt;/li&gt;&lt;li&gt;If the user clicks that button, the website should use the OpenID protocol to ask the email provider to authenticate the user, provide their email address, and optionally ask for access to their address book using the hybrid OpenID/OAuth protocol and the Portable Contacts API. More details about this flow are available on the&amp;nbsp;&lt;a href="http://openid.net/2009/09/25/more-powerful-and-easier-to-use/" rel="nofollow" title="OpenID blog"&gt;OpenID blog.&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Once the user returns to the website, it can create an account entry for the user. The website can also mark the email address as verified without having to send a traditional "email verification" link to the user. If the website received the user's permission to access their address book, it can now download it and look for information about the user's friends.&lt;/li&gt;&lt;ul&gt;&lt;li&gt;In the unusual case where an account already exists for that email address, the website can simply log the user into that pre-existing account.&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;For any newly registered user, the website should then display a page that confirms the user is registered and that indicates how they should sign in in the future.&lt;/li&gt;&lt;li&gt;To make the login process simple, the website should modify their login box to include a logo for each of the trusted email providers it supports, or use one of the other&amp;nbsp;&lt;a href="http://sites.google.com/site/oauthgoog/UXFedLogin/summary" title="user experiences for Federated Login"&gt;user experiences for Federated Login.&lt;/a&gt;&lt;/li&gt;&lt;li&gt;If a user clicks the email provider button, they can again be sent to that provider's site using the OpenID protocol. When the user comes back, the website can either detect that they previously registered, or if it is a new user, the website can create an account for them on the fly.&lt;/li&gt;&lt;ul&gt;&lt;li&gt;In some cases the account may already exist for that email address, but it was not initially registered using OpenID. In that case, the website can simply log the user in to that pre-existing account.&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="font-style: italic;" class="byline-author"&gt;By Eric Sachs, Product Manager, Google Security&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11300808-5925880629562754672?l=googlecode.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/Dcni?a=qJ_wwjwNZto:ilfBROPGAWY:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Dcni?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/Dcni?a=qJ_wwjwNZto:ilfBROPGAWY:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Dcni?i=qJ_wwjwNZto:ilfBROPGAWY:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/Dcni/~4/qJ_wwjwNZto" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://googlecode.blogspot.com/feeds/5925880629562754672/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://googlecode.blogspot.com/2009/11/hybrid-onboarding.html#comment-form" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/11300808/posts/default/5925880629562754672?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/11300808/posts/default/5925880629562754672?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/Dcni/~3/qJ_wwjwNZto/hybrid-onboarding.html" title="Hybrid Onboarding" /><author><name>Mike Marchak</name><uri>http://www.blogger.com/profile/09046869427384152063</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="04643631162663437722" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">2</thr:total><feedburner:origLink>http://googlecode.blogspot.com/2009/11/hybrid-onboarding.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0UGRH4zcSp7ImA9WxNVGU4.&quot;"><id>tag:blogger.com,1999:blog-11300808.post-7019798791105040236</id><published>2009-10-30T11:30:00.000-07:00</published><updated>2009-10-30T13:40:25.089-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-10-30T13:40:25.089-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="google code" /><category scheme="http://www.blogger.com/atom/ns#" term="app engine" /><category scheme="http://www.blogger.com/atom/ns#" term="api" /><category scheme="http://www.blogger.com/atom/ns#" term="visualization" /><category scheme="http://www.blogger.com/atom/ns#" term="analytics" /><title>Google Analytics API on App Engine Treemap Visualization</title><content type="html">It's Friday, time for some fun!&lt;br /&gt;&lt;br /&gt;Here is a captivating way to visualize your Google Analytics data in a Treemap visualization and you can &lt;a href="http://analytics-api-sample.appspot.com/"&gt;visualize your own data&lt;/a&gt; with our live demo.&lt;br /&gt;(note: IE currently not supported for visualization part)&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://docs.google.com/a/google.com/File?id=agncg6gxcc_173d42w8pfj_b"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 607px;" src="https://docs.google.com/a/google.com/File?id=agncg6gxcc_173d42w8pfj_b" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/CnYDv9X2Cx4&amp;hl=en&amp;fs=1&amp;"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/CnYDv9X2Cx4&amp;hl=en&amp;fs=1&amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;The goal of this example was to teach people how to use the Google Analytics API on App Engine in Java. As well as demonstrating how to use both OAuth and AuthSub along with the App Engine's various services. The code looked great, but the output was a boring HTML table. So I used some open source tools to transform the table into a pretty tree map visualization!&lt;br /&gt;&lt;br /&gt;All the code has been &lt;a href="http://code.google.com/p/ga-api-java-samples/source/browse/trunk/src/v1/appengine-sample/"&gt;open sourced&lt;/a&gt; on Google Project hosting. I also wrote an &lt;a href="http://code.google.com/apis/analytics/docs/gdata/gdataAppEngine.html"&gt;article describing how this application works&lt;/a&gt; making it easy for developers to use this example as a starting point for new data visualizations and other Google Data projects.&lt;br /&gt;&lt;br /&gt;For the data retrieval part, this example uses the &lt;a href="http://code.google.com/appengine/docs/java/overview.html"&gt;App Engine Java SDK&lt;/a&gt; and the &lt;a href="http://code.google.com/apis/analytics/docs/gdata/1.0/gdataJava.html"&gt;Google Analytics Data Export API Java Client Library&lt;/a&gt; to retrieve data from Google Analytics. The example code implements both unsigned &lt;a href="http://code.google.com/apis/accounts/docs/AuthSub.html"&gt;AuthSub&lt;/a&gt; and registered &lt;a href="http://code.google.com/apis/accounts/docs/OAuth.html"&gt;OAuth&lt;/a&gt; authorization methods allowing developers to get up and running quickly in development environments and later switch to a secure authorization method in production environments. The application also uses the &lt;a href="http://en.wikipedia.org/wiki/Model_view_controller"&gt;Model-View-Controller&lt;/a&gt; pattern, making it flexible and allowing developers to extend the code for new applications. (like adding support for other Google Data APIs)&lt;br /&gt;&lt;br /&gt;For the visualization part, I used the open-sourced &lt;a href="http://vis.stanford.edu/protovis/"&gt;Protovis SVG Visualization Library&lt;/a&gt; to create the Treemap. This JavaScript library is maintained by the Stanford Visualization Group and excels at creating brand new visualizations from a data set (in this case a boring HTML table). To handle all of the interactions, including rollover, tooltips and slider controls, I used &lt;a href="http://jquery.com/"&gt;JQuery&lt;/a&gt;. Here is the &lt;a href="http://code.google.com/p/ga-api-java-samples/source/browse/trunk/src/v1/appengine-sample/war/js/ga.treemap.js"&gt;JavaScript source to the visualization&lt;/a&gt; part of the sample.&lt;br /&gt;&lt;br /&gt;Enjoy!&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;" class="byline-author"&gt;By Nick Mihailovski, The Google Analytics API Team&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;P.S. If you have created any cool new visualizations using the Google Analytics Data Export API, &lt;a href="mailto:analytics-api@google.com"&gt;email us&lt;/a&gt; so we can highlight them as well.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11300808-7019798791105040236?l=googlecode.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/Dcni?a=3Qo1LWjY_Xg:ay29JBEP3VE:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Dcni?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/Dcni?a=3Qo1LWjY_Xg:ay29JBEP3VE:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Dcni?i=3Qo1LWjY_Xg:ay29JBEP3VE:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/Dcni/~4/3Qo1LWjY_Xg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://googlecode.blogspot.com/feeds/7019798791105040236/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://googlecode.blogspot.com/2009/10/google-analytics-api-on-app-engine.html#comment-form" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/11300808/posts/default/7019798791105040236?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/11300808/posts/default/7019798791105040236?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/Dcni/~3/3Qo1LWjY_Xg/google-analytics-api-on-app-engine.html" title="Google Analytics API on App Engine Treemap Visualization" /><author><name>Neel Kshetramade</name><uri>http://www.blogger.com/profile/01823824960774657238</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="07303384689839753712" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">2</thr:total><feedburner:origLink>http://googlecode.blogspot.com/2009/10/google-analytics-api-on-app-engine.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0MMSHk-fCp7ImA9WxNVFk0.&quot;"><id>tag:blogger.com,1999:blog-11300808.post-3843028457288256078</id><published>2009-10-26T15:40:00.001-07:00</published><updated>2009-10-26T18:04:49.754-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-10-26T18:04:49.754-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="google code" /><category scheme="http://www.blogger.com/atom/ns#" term="api" /><category scheme="http://www.blogger.com/atom/ns#" term="feeds" /><category scheme="http://www.blogger.com/atom/ns#" term="Google" /><category scheme="http://www.blogger.com/atom/ns#" term="themes" /><category scheme="http://www.blogger.com/atom/ns#" term="custom search" /><title>Customize your results snippets with structured data</title><content type="html">Custom Search themes make it easy for you to customize the look and feel of your search results pages. And if you want to take the customization gig further, you can also customize the result snippet—a small sample of content that gives search users an idea of what's in the webpage—by using structured data.&lt;br /&gt;&lt;br /&gt;When you are reading a webpage that reviews a film, you can figure out what the title is, what reviewers thought of the film, and how they rated it. You can even search for stores with the best prices for the DVD. Structured data can convey the meaning of such key information to computers.&lt;br /&gt;&lt;br /&gt;Structured data formats—such as microformats, RDFa, and PageMaps—are semantic markup that you add to your HTML page. Structured data  make web content more meaningful to machines. These attributes do not change the formatting of your website, they just make the text enclosed within the XHTML tags "understandable" by computers and influence what shows up in the result snippets.&lt;br /&gt;&lt;br /&gt;When you tag your webpages with structured data, Custom Search indexes them and sends the metadata back in the XML results for your page. You can then take this XML feed and transform it into HTML results that showcase key information—such as image thumbnails, summaries, dates, authorship, ratings, and prices. Having the most relevant information in your search results makes the webpages in your site more compelling to your users.&lt;br /&gt;&lt;br /&gt;You can, for example, create the following kind of rich snippets:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_EuCTzLdp3vE/SuZGRvOGRBI/AAAAAAAAC08/LyQqPCo8csQ/s1600-h/cse-1.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 64px;" src="http://1.bp.blogspot.com/_EuCTzLdp3vE/SuZGRvOGRBI/AAAAAAAAC08/LyQqPCo8csQ/s400/cse-1.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5397078473997435922" /&gt;&lt;/a&gt;&lt;br /&gt;You can even add thumbnails and actions that let your users download files or make purchases.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_EuCTzLdp3vE/SuZG0fN2FnI/AAAAAAAAC1M/p15TaMltSXw/s1600-h/cse-2.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 97px;" src="http://4.bp.blogspot.com/_EuCTzLdp3vE/SuZG0fN2FnI/AAAAAAAAC1M/p15TaMltSXw/s400/cse-2.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5397079070996829810" /&gt;&lt;/a&gt;&lt;br /&gt;To learn more, read the &lt;a href="http://code.google.com/apis/customsearch/docs/snippets.html"&gt;Custom Search Developer's Guide&lt;/a&gt;. &lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;" class="byline-author"&gt;By Kevin Griffin Lim, Custom Search Team&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11300808-3843028457288256078?l=googlecode.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/Dcni?a=6TIRg3PDyWc:sh4zwFaDweA:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Dcni?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/Dcni?a=6TIRg3PDyWc:sh4zwFaDweA:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Dcni?i=6TIRg3PDyWc:sh4zwFaDweA:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/Dcni/~4/6TIRg3PDyWc" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://googlecode.blogspot.com/feeds/3843028457288256078/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://googlecode.blogspot.com/2009/10/customize-your-results-snippets-with.html#comment-form" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/11300808/posts/default/3843028457288256078?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/11300808/posts/default/3843028457288256078?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/Dcni/~3/6TIRg3PDyWc/customize-your-results-snippets-with.html" title="Customize your results snippets with structured data" /><author><name>Neel Kshetramade</name><uri>http://www.blogger.com/profile/01823824960774657238</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="07303384689839753712" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_EuCTzLdp3vE/SuZGRvOGRBI/AAAAAAAAC08/LyQqPCo8csQ/s72-c/cse-1.png" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total><feedburner:origLink>http://googlecode.blogspot.com/2009/10/customize-your-results-snippets-with.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0UFRX8zeSp7ImA9WxNVFk0.&quot;"><id>tag:blogger.com,1999:blog-11300808.post-5679559156926462165</id><published>2009-10-26T15:40:00.000-07:00</published><updated>2009-10-26T18:00:14.181-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-10-26T18:00:14.181-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="google code" /><category scheme="http://www.blogger.com/atom/ns#" term="Google" /><category scheme="http://www.blogger.com/atom/ns#" term="custom search" /><category scheme="http://www.blogger.com/atom/ns#" term="css" /><title>Customize your search results page with themes</title><content type="html">If you can select headgear for your &lt;a href="http://www.google.com/url?q=http%3A%2F%2Fwww.lego.com%2F&amp;amp;sa=D&amp;amp;sntz=1&amp;amp;usg=AFrqEzffuk5B8PdN5XJeJ_en-7j9c9kpsw"&gt;LEGO ®&lt;/a&gt; action figures, your search engine should let you customize the theme for your search results page, right? Darn tooting!&lt;br /&gt;&lt;br /&gt;True, Custom Search already lets you customize the look and feel of your search results page, but we're making it easier. You can now go to the &lt;a href="http://www.google.com/cse/manage/all"&gt;control panel&lt;/a&gt; and select one of the predefined themes that broadly matches the look and feel of your website. &lt;br /&gt;&lt;br /&gt;If the standard themes are not quite what you want, you can make further changes. You can tinker with the page layout (Why stick with a single column of results, when you can have two?) and play with the font colors and types. The standard themes paired with the "Compact" layout option are optimized for mobile devices, so they work well on iPhone, Android devices, and Pre.&lt;br /&gt;&lt;br /&gt;If you want a greater level of control than that, you can download the CSS, tweak it in a text editor, and host the CSS in your website. You can make your search results page blend with the style of the rest of your website.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_EuCTzLdp3vE/SuZF_MHv8ZI/AAAAAAAAC00/hexKx3eJywE/s1600-h/cse_shiny.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 208px;" src="http://4.bp.blogspot.com/_EuCTzLdp3vE/SuZF_MHv8ZI/AAAAAAAAC00/hexKx3eJywE/s400/cse_shiny.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5397078155337920914" /&gt;&lt;/a&gt;&lt;br /&gt;To learn more, read the &lt;a href="http://code.google.com/apis/customsearch/docs/ui.html"&gt;Custom Search Developer's Guide&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;" class="byline-author"&gt;By Kevin Gnome Lim, Custom Search Team&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11300808-5679559156926462165?l=googlecode.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/Dcni?a=HMQ6JAJlq0U:tdPl-KrzYFs:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Dcni?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/Dcni?a=HMQ6JAJlq0U:tdPl-KrzYFs:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Dcni?i=HMQ6JAJlq0U:tdPl-KrzYFs:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/Dcni/~4/HMQ6JAJlq0U" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://googlecode.blogspot.com/feeds/5679559156926462165/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://googlecode.blogspot.com/2009/10/customize-your-search-results-page-with.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/11300808/posts/default/5679559156926462165?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/11300808/posts/default/5679559156926462165?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/Dcni/~3/HMQ6JAJlq0U/customize-your-search-results-page-with.html" title="Customize your search results page with themes" /><author><name>Neel Kshetramade</name><uri>http://www.blogger.com/profile/01823824960774657238</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="07303384689839753712" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_EuCTzLdp3vE/SuZF_MHv8ZI/AAAAAAAAC00/hexKx3eJywE/s72-c/cse_shiny.png" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://googlecode.blogspot.com/2009/10/customize-your-search-results-page-with.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0QDQ3c8eyp7ImA9WxNVEEs.&quot;"><id>tag:blogger.com,1999:blog-11300808.post-5078243409313930166</id><published>2009-10-20T12:02:00.000-07:00</published><updated>2009-10-20T12:02:52.973-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-10-20T12:02:52.973-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="website optimizer" /><category scheme="http://www.blogger.com/atom/ns#" term="analytics" /><title>Introducing the Website Optimizer Experiment Management API</title><content type="html">Today at the eMetrics conference in Washington DC we announced the new Website Optimizer Experiment Management API. The API allows for the creation and management of experiments outside of the Website Optimizer interface.&lt;br /&gt;&lt;br /&gt;If you're not familiar with &lt;a href="http://www.google.com/websiteoptimizer" target="_blank"&gt;Google Website Optimizer&lt;/a&gt;, it's a free tool for running A/B and multivariate experiments on a website. Website Optimizer handles splitting a website's traffic, serving different variations, and crunching the numbers to find statistical significance.&lt;br /&gt;&lt;br /&gt;Creating experiments with Website Optimizer usually involves a lot of back and forth between your website and the Website Optimizer interface. Using the API, you can integrate Website Optimizer into your platform. In short, you can create and launch experiments from whatever tool you use to edit your site.&lt;br /&gt;&lt;br /&gt;You'll find more about the GWO API on its Google Code site: &lt;a href="http://code.google.com/apis/analytics/docs/gwo/" target="_blank"&gt;http://code.google.com/apis/analytics/docs/gwo/&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;You can also join the Website Optimizer engineers for a webinar on the Website Optimizer Experiment Management API. The webinar will be held on October 28th at 10AM PDT. During the webinar, Website Optimizer engineers will walk you through how the API works. Additionally, two platforms that have already integrated using the API will demonstrate their integrations.&lt;br /&gt;&lt;br /&gt;You need to register for the webinar, which you can do &lt;a href="https://googleonline.webex.com/googleonline/onstage/g.php?t=a&amp;amp;d=577316679" target="_blank"&gt;here&lt;/a&gt;. We'll record the webinar as well so you can reference it later.&lt;br /&gt;&lt;br /&gt;We're very excited about the Website Optimizer API and what it means for website testing. Let us know your thoughts in the comments.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;" class="byline-author"&gt;By Gary Kačmarčík and Erika Rice Scherpelz, Google Website Optimizer team&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11300808-5078243409313930166?l=googlecode.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/Dcni?a=4_zpPYlzz9o:GscKMbZnjaQ:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Dcni?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/Dcni?a=4_zpPYlzz9o:GscKMbZnjaQ:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/Dcni?i=4_zpPYlzz9o:GscKMbZnjaQ:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/Dcni/~4/4_zpPYlzz9o" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://googlecode.blogspot.com/feeds/5078243409313930166/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://googlecode.blogspot.com/2009/10/introducing-website-optimizer.html#comment-form" title="4 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/11300808/posts/default/5078243409313930166?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/11300808/posts/default/5078243409313930166?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/Dcni/~3/4_zpPYlzz9o/introducing-website-optimizer.html" title="Introducing the Website Optimizer Experiment Management API" /><author><name>Neel Kshetramade</name><uri>http://www.blogger.com/profile/01823824960774657238</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="07303384689839753712" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">4</thr:total><feedburner:origLink>http://googlecode.blogspot.com/2009/10/introducing-website-optimizer.html</feedburner:origLink></entry></feed>
