<?xml version="1.0" encoding="UTF-8" standalone="no"?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:blogger="http://schemas.google.com/blogger/2008" xmlns:gd="http://schemas.google.com/g/2005" xmlns:georss="http://www.georss.org/georss" xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/" xmlns:thr="http://purl.org/syndication/thread/1.0"><id>tag:blogger.com,1999:blog-2373604388319154209</id><updated>2024-11-01T03:36:51.915-07:00</updated><category term="iGoogle Blog"/><category term="igoogle"/><category term="sunset"/><title type="text">iGoogle Developer Blog</title><subtitle type="html">Your source for API improvements, changes to the sandbox, and developer events.</subtitle><link href="http://igoogledeveloper.blogspot.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/><link href="http://www.blogger.com/feeds/2373604388319154209/posts/default?redirect=false" rel="self" type="application/atom+xml"/><link href="http://igoogledeveloper.blogspot.com/" rel="alternate" type="text/html"/><link href="http://pubsubhubbub.appspot.com/" rel="hub"/><link href="http://www.blogger.com/feeds/2373604388319154209/posts/default?start-index=26&amp;max-results=25&amp;redirect=false" rel="next" type="application/atom+xml"/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image height="16" rel="http://schemas.google.com/g/2005#thumbnail" src="https://img1.blogblog.com/img/b16-rounded.gif" width="16"/></author><generator uri="http://www.blogger.com" version="7.00">Blogger</generator><openSearch:totalResults>58</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-2373604388319154209.post-406229400090421333</id><published>2013-11-01T00:35:00.000-07:00</published><updated>2020-06-15T20:56:42.412-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="igoogle"/><category scheme="http://www.blogger.com/atom/ns#" term="iGoogle Blog"/><category scheme="http://www.blogger.com/atom/ns#" term="sunset"/><title type="text">Saying Goodbye to iGoogle</title><content type="html">&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;"&gt;
&lt;span style="background-color: white; color: black; font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;"&gt;
&lt;span style="background-color: white; color: black; font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;As we announced on the&lt;/span&gt;&lt;a href="http://googleblog.blogspot.com/2012/07/spring-cleaning-in-summer.html" style="text-decoration: none;"&gt;&lt;span style="background-color: white; color: black; font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt; &lt;/span&gt;&lt;span style="background-color: white; color: blue; font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;"&gt;Official Google Blog&lt;/span&gt;&lt;/a&gt;&lt;span style="background-color: white; color: black; font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt; nearly a year and a half ago, today we’re retiring iGoogle. &lt;/span&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;Moving forward, iGoogle will redirect to&lt;/span&gt;&lt;span style="background-color: transparent; color: blue; font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt; &lt;/span&gt;&lt;a href="http://www.google.com/" style="text-decoration: none;"&gt;&lt;span style="background-color: transparent; color: blue; font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;"&gt;www.google.com&lt;/span&gt;&lt;/a&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;. If you’ve been using iGoogle gadgets to access information from Google products like Gmail and Finance, you can continue to do so via our &lt;/span&gt;&lt;a href="http://insidesearch.blogspot.com/2013/09/updating-google-bar-many-products.html" style="text-decoration: none;"&gt;&lt;span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;"&gt;new app launcher&lt;/span&gt;&lt;/a&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;.&lt;/span&gt;&lt;/div&gt;
&lt;b id="docs-internal-guid-559b9c78-0d2e-dc4f-fbae-90a998635f3e" style="font-weight: normal;"&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;&lt;/span&gt;&lt;/b&gt;
&lt;br /&gt;
&lt;div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;"&gt;
&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;We know that many of you enjoyed your customized iGoogle experience, so if you’re looking for alternatives, there are &lt;/span&gt;&lt;a href="http://alternativeto.net/software/igoogle/" style="text-decoration: none;"&gt;&lt;span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;"&gt;some options&lt;/span&gt;&lt;/a&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt; that might fit your needs. &lt;/span&gt;&lt;/div&gt;
&lt;b style="font-weight: normal;"&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;&lt;/span&gt;&lt;/b&gt;
&lt;br /&gt;
&lt;div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;"&gt;
&lt;span style="background-color: white; font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;Sincerely,&lt;/span&gt;&lt;/div&gt;
&lt;b style="font-weight: normal;"&gt;&lt;br /&gt;&lt;span style="background-color: white; font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;&lt;/span&gt;&lt;/b&gt;
&lt;br /&gt;
&lt;div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;"&gt;
&lt;span style="background-color: white; font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;The iGoogle Team&lt;/span&gt;&lt;/div&gt;
&lt;div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;"&gt;
&lt;span style="background-color: white; color: #333333; font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt; text-align: center;"&gt;
&lt;span style="background-color: white; color: #333333; font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;________________________&lt;/span&gt;&lt;/div&gt;
&lt;div style="text-align: center;"&gt;
&lt;b style="font-weight: normal;"&gt;&lt;br /&gt;&lt;span style="background-color: white; color: #333333; font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;"&gt;
&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;Frequently-asked questions&lt;/span&gt;&lt;/div&gt;
&lt;b style="font-weight: normal;"&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;&lt;/span&gt;&lt;/b&gt;
&lt;br /&gt;
&lt;div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;"&gt;
&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;1. What will happen to my iGoogle data?&lt;/span&gt;&lt;/div&gt;
&lt;div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;"&gt;
&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;All iGoogle data will be systematically deleted from Google servers.&lt;/span&gt;&lt;/div&gt;
&lt;b style="font-weight: normal;"&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;&lt;/span&gt;&lt;/b&gt;
&lt;br /&gt;
&lt;div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;"&gt;
&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;2. Will there be any way to retrieve my data from Google in the future?&lt;/span&gt;&lt;/div&gt;
&lt;div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;"&gt;
&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;No. All user data will be permanently, and irrevocably deleted. &lt;/span&gt;&lt;/div&gt;
&lt;b style="font-weight: normal;"&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;&lt;/span&gt;&lt;/b&gt;
&lt;br /&gt;
&lt;div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;"&gt;
&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;3. Will this affect my other Google services?&lt;/span&gt;&lt;/div&gt;
&lt;div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;"&gt;
&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;No. It simply means you will access them in a different way. You will still be able to use Google Chrome as your web browser, and you will still be able to access all Google services, such as Gmail, Google Search, Google Bookmarks, Google Calendar, Google Finance, Google Translate, etc., by opening them directly.&lt;/span&gt;&lt;/div&gt;
&lt;b style="font-weight: normal;"&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;&lt;/span&gt;&lt;/b&gt;
&lt;br /&gt;
&lt;div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;"&gt;
&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;4. Why was iGoogle discontinued?&lt;/span&gt;&lt;/div&gt;
&lt;div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;"&gt;
&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;Please refer to our &lt;/span&gt;&lt;a href="http://googleblog.blogspot.com.au/2012/07/spring-cleaning-in-summer.html" style="text-decoration: none;"&gt;&lt;span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;"&gt;blog post&lt;/span&gt;&lt;/a&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt; for more information.&lt;/span&gt;&lt;/div&gt;
&lt;b style="font-weight: normal;"&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;&lt;/span&gt;&lt;/b&gt;
&lt;br /&gt;
&lt;div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;"&gt;
&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;5. What will happen with third party gadgets?&lt;/span&gt;&lt;/div&gt;
&lt;span style="font-family: Arial; font-size: 13px; vertical-align: baseline; white-space: pre-wrap;"&gt;Gadgets provided by third party developers will continue to be served. Google Sites, and other third party sites that have installed these gadgets will not be affected.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
</content><link href="http://www.blogger.com/feeds/2373604388319154209/posts/default/406229400090421333" rel="edit" type="application/atom+xml"/><link href="http://www.blogger.com/feeds/2373604388319154209/posts/default/406229400090421333" rel="self" type="application/atom+xml"/><link href="http://igoogledeveloper.blogspot.com/2013/11/saying-goodbye-to-igoogle.html" rel="alternate" title="Saying Goodbye to iGoogle" type="text/html"/><author><name>Anonymous</name><email>noreply@blogger.com</email><gd:image height="16" rel="http://schemas.google.com/g/2005#thumbnail" src="https://img1.blogblog.com/img/blank.gif" width="16"/></author><georss:featurename>Sydney NSW, Australia</georss:featurename><georss:point>-33.873651 151.20688960000007</georss:point><georss:box>-33.9001625 151.16637760000006 -33.847139500000004 151.24740160000007</georss:box></entry><entry><id>tag:blogger.com,1999:blog-2373604388319154209.post-1179466950264642783</id><published>2012-07-03T12:44:00.000-07:00</published><updated>2020-06-15T20:56:41.646-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="iGoogle Blog"/><title type="text">An update on iGoogle</title><content type="html">&lt;b id="internal-source-marker_0.21050186338834465" style="font-weight: normal;"&gt;&lt;span style="background-color: transparent; font-family: Arial; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;"&gt;As we announced on the &lt;a href="http://googleblog.blogspot.com/2012/07/spring-cleaning-in-summer.html"&gt;Official Google Blog&lt;/a&gt;&lt;/span&gt;&lt;span style="background-color: transparent; font-family: Arial; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;"&gt;, on November 1, 2013, we will be retiring iGoogle. &amp;nbsp;To ensure a smooth transition for your users, you may want to update your gadgets and direct users to your site or offer the ability to export user data. &amp;nbsp;You may also consider launching your application on one of our &lt;/span&gt;&lt;a href="https://developers.google.com/products/"&gt;&lt;span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;"&gt;other platforms&lt;/span&gt;&lt;/a&gt;&lt;span style="background-color: transparent; font-family: Arial; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;"&gt;.&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; font-family: Arial; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; font-family: Arial; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;"&gt;As part of this sunset, we will no longer accept new theme submissions after July 31, 2012.  Similarly, we will stop accepting new gadgets after July 31, 2012 - but you will be able to update and maintain existing gadgets, as before.&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; font-family: Arial; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; font-family: Arial; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;"&gt;Feel free to reach out to us at the&lt;/span&gt;&lt;a href="https://groups.google.com/group/Google-Gadgets-API"&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt; &lt;/span&gt;&lt;span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;"&gt;iGoogle Developer Forum&lt;/span&gt;&lt;/a&gt;&lt;span style="background-color: transparent; font-family: Arial; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;"&gt; if you have any questions or need assistance, and t&lt;/span&gt;&lt;b id="internal-source-marker_0.055833246326074004" style="font-weight: normal;"&gt;&lt;span style="background-color: transparent; font-family: Arial; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;"&gt;hank you for supporting iGoogle over the years.&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;span style="background-color: transparent; font-family: Arial; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; font-family: Arial; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;"&gt;Posted by Conrad Lo, Product Manager&lt;/span&gt;&lt;/b&gt;</content><link href="http://www.blogger.com/feeds/2373604388319154209/posts/default/1179466950264642783" rel="edit" type="application/atom+xml"/><link href="http://www.blogger.com/feeds/2373604388319154209/posts/default/1179466950264642783" rel="self" type="application/atom+xml"/><link href="http://igoogledeveloper.blogspot.com/2012/07/update-on-igoogle.html" rel="alternate" title="An update on iGoogle" type="text/html"/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image height="16" rel="http://schemas.google.com/g/2005#thumbnail" src="https://img1.blogblog.com/img/b16-rounded.gif" width="16"/></author></entry><entry><id>tag:blogger.com,1999:blog-2373604388319154209.post-2286675542262203051</id><published>2011-05-27T17:48:00.000-07:00</published><updated>2020-06-15T20:56:41.988-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="iGoogle Blog"/><title type="text">More new features for the Gadget Dashboard</title><content type="html">&lt;div style="background-color: transparent; margin-top: 0px; margin-left: 0px; margin-bottom: 0px; margin-right: 0px; font-family: Times; font-size: medium; "&gt;&lt;span id="internal-source-marker_0.00861583393998444" style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;Did you know we are continuously adding new features to the &lt;/span&gt;&lt;a href="http://code.google.com/igoogle/dashboard/"&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 153); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap; "&gt;iGoogle Gadget Dashboard&lt;/span&gt;&lt;/a&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;? Today I’d like to let you know about a few of them.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;First of all, we added two new data sets to the details page of your gadgets. Now you can see intuitive graphs in the “Installations and Removals” tab, which shows the number of gadget installations and gadget removals, and in the “Browser Errors” tab, where you can see errors recently reported by our end users’ browsers.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;As you may have guessed, adding this information made the gadget details page too long, so we introduced a tabular view for that page.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: italic; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;(The tabular view, showing the new “Installations and Removals” data)&lt;/span&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;&lt;/span&gt;&lt;img src="https://lh4.googleusercontent.com/sF9HpZ8UccFFbSc2qO65HwyRbtkg-Q5JwWqWk7hVf5fHEMr8xDVVB6Jg46UFnDdduBeAdzZd80Uuhhf2_ODYeS0eYZlrPVxVNvl_5kMgPhXyakXRePM" width="619px;" height="335px;" /&gt;&lt;br /&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: italic; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: italic; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: italic; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;(“Browser Errors” table showing the top errors reported by our users’ browsers)&lt;/span&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;&lt;/span&gt;&lt;img src="https://lh4.googleusercontent.com/sTiitBKQvXa8HOMRVp3jz0KO_ECxEJSyIXc-RYL7ZkazqP8fmT1g78GTg8fxBFNPP65rxRZF0e1O2cbDsWir-VF5a-QqFl-oder6YR1yTuyD6AXjY0c" width="633px;" height="208px;" /&gt;&lt;br /&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;Additionally, the dashboard had been only available in English, but we added 7 other langueges a while ago, so it is now available in 8 languages: English, Spanish, Japanese, Korean, Portuguese, Russian, Simplified Chinese and Traditional Chinese. The localized iGoogle developer documentation will lead you to the localized dashboard.  For example, after you select Japanese at &lt;/span&gt;&lt;a href="http://code.google.com/apis/igoogle/"&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 137, 170); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap; "&gt;http://code.google.com/apis/igoogle/&lt;/span&gt;&lt;/a&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;, you will arrive at  &lt;/span&gt;&lt;a href="http://code.google.com/intl/ja/apis/igoogle/"&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 137, 170); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap; "&gt;http://code.google.com/intl/ja/apis/igoogle/&lt;/span&gt;&lt;/a&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;, which has a link for the &lt;/span&gt;&lt;a href="http://code.google.com/igoogle/dashboard/?hl=ja"&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 153); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap; "&gt;Japanese version of the dashboard&lt;/span&gt;&lt;/a&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;. Alternatively, you can explicitly add the URL parameter “?hl=ja” to the dashboard URL.&lt;/span&gt;&lt;span style="font-size: 13pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;Lastly, in the next few days, we will start sending you weekly summary e-mails of your gadget usage. If you don’t want to receive these summary e-mails, you can opt-out from this service by just clicking a link at the bottom of the e-mail. The e-mails look like the following.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;&lt;/span&gt;&lt;br /&gt;&lt;p style="margin-left: 36pt; margin-top: 0pt; margin-bottom: 0pt; "&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: bold; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;Gadget name&lt;/span&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;: Weather&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-left: 36pt; margin-top: 0pt; margin-bottom: 0pt; "&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: bold; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;Author email&lt;/span&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;: googlemodules@google.com&lt;/span&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 137, 170); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-left: 36pt; margin-top: 0pt; margin-bottom: 0pt; "&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: bold; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;Pageviews&lt;/span&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;: 1,000,000 (+5.00% compared to the week of May 30, 2011)&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-left: 36pt; margin-top: 0pt; margin-bottom: 0pt; "&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: bold; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;Unique users&lt;/span&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;: ...&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-left: 36pt; margin-top: 0pt; margin-bottom: 0pt; "&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: bold; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;Installations&lt;/span&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;: ...&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-left: 36pt; margin-top: 0pt; margin-bottom: 0pt; "&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: bold; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;Removals&lt;/span&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;: ...&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-left: 36pt; margin-top: 0pt; margin-bottom: 0pt; "&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: bold; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;Browser errors&lt;/span&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;: ...&lt;/span&gt;&lt;/p&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;&lt;/span&gt;&lt;br /&gt;&lt;p style="margin-left: 36pt; margin-top: 0pt; margin-bottom: 0pt; "&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: bold; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;Gadget name&lt;/span&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;: Youtube Gadget&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-left: 36pt; margin-top: 0pt; margin-bottom: 0pt; "&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: bold; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;Author email&lt;/span&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;: …&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-left: 36pt; margin-top: 0pt; margin-bottom: 0pt; "&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: bold; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;Pageviews&lt;/span&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;: …&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-left: 36pt; margin-top: 0pt; margin-bottom: 0pt; "&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: bold; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;Unique users&lt;/span&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;: ...&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-left: 36pt; margin-top: 0pt; margin-bottom: 0pt; "&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: bold; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;Installations&lt;/span&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;: ...&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-left: 36pt; margin-top: 0pt; margin-bottom: 0pt; "&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: bold; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;Removals&lt;/span&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;: ...&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-left: 36pt; margin-top: 0pt; margin-bottom: 0pt; "&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: bold; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;Browser errors&lt;/span&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;: ...&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-left: 36pt; margin-top: 0pt; margin-bottom: 0pt; "&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;…&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-left: 36pt; margin-top: 0pt; margin-bottom: 0pt; "&gt;&lt;span style="font-size: 13pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;…&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-left: 36pt; margin-top: 0pt; margin-bottom: 0pt; "&gt;&lt;span style="font-size: 13pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;...&lt;/span&gt;&lt;/p&gt;&lt;span style="font-size: 13pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;As you can see, iGoogle is still evolving! Happy coding. :)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 13pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;Posted by Takashi Matsuo, Developer Advocate&lt;/span&gt;&lt;/div&gt;</content><link href="http://www.blogger.com/feeds/2373604388319154209/posts/default/2286675542262203051" rel="edit" type="application/atom+xml"/><link href="http://www.blogger.com/feeds/2373604388319154209/posts/default/2286675542262203051" rel="self" type="application/atom+xml"/><link href="http://igoogledeveloper.blogspot.com/2011/05/more-new-features-for-gadget-dashboard.html" rel="alternate" title="More new features for the Gadget Dashboard" type="text/html"/><author><name>Anonymous</name><email>noreply@blogger.com</email><gd:image height="16" rel="http://schemas.google.com/g/2005#thumbnail" src="https://img1.blogblog.com/img/blank.gif" width="16"/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://lh4.googleusercontent.com/sF9HpZ8UccFFbSc2qO65HwyRbtkg-Q5JwWqWk7hVf5fHEMr8xDVVB6Jg46UFnDdduBeAdzZd80Uuhhf2_ODYeS0eYZlrPVxVNvl_5kMgPhXyakXRePM=s72-c" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-2373604388319154209.post-7684096010759420185</id><published>2011-04-04T08:48:00.000-07:00</published><updated>2020-06-15T20:56:42.755-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="iGoogle Blog"/><title type="text">Live Gadget Previews in the iGoogle Directory</title><content type="html">The iGoogle Gadget Directory just got better. Users can now interact with a gadget in the directory before adding it to their page. Have a look at a couple examples like the &lt;a href="http://www.google.com/url?q=http%3A%2F%2Fwww.google.com%2Fig%2Fdirectory%3Furl%3Dwww.gstatic.com%2Fig%2Fmodules%2Ftabnews%2Ftabnews.xml" title="Google News - Add to your homepage"&gt;Google News&lt;/a&gt; or &lt;a href="http://www.google.com/url?q=http%3A%2F%2Fwww.google.com%2Fig%2Fdirectory%3Furl%3Dwww.google.com%2Fig%2Fmodules%2Freal_time_trends.xml" title="Google Hot Trends - Add to your homepage"&gt;Google Hot Trends&lt;/a&gt; gadgets.&lt;br /&gt;
&lt;br /&gt;
Your gadgets can have live previews too. Gadgets that use Content view="default" already have a live preview in the gadget directory. Remember, view="default" can match any view supported by the container. Similarly, if the Content element in a gadget doesn't specify the view attribute, that's treated the same as if view="default" were present. Up until now, the only views that were supported on iGoogle were home and canvas; remember, home is the smaller version and canvas is the larger version.&lt;br /&gt;
&lt;br /&gt;
Some gadgets are customized to display differently for the home and canvas views. If your gadgets do this, you can update the gadget XML spec to add a unique view for the preview or reuse an existing content element.&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;For gadgets with an element &amp;lt;Content view="home,canvas"&amp;gt;&lt;/strong&gt;&lt;br /&gt;
In this case you can just add preview, so you'll have view="home,canvas,preview".&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;For gadgets with &amp;lt;Content view="home"&amp;gt;&lt;/strong&gt;&lt;br /&gt;
Here too, you can reuse the home view for the preview by changing your spec to view="home,preview".&lt;br /&gt;
&lt;br /&gt;
There are some other restrictions on the way the preview works. A preview can't use OpenSocial calls - since the user hasn't set the OpenSocial permissions before installing the gadget. You may want to address this in your gadget by making a special preview version that uses some dummy data, or you can opt out of the live preview and stick with a static screenshot.&lt;br /&gt;
&lt;br /&gt;
Like all gadget views, the preview is cached. This reduces load and speeds up serving for users. But if you're working on your gadget and don't see a recent change in the preview, you can disable caching temporarily by adding the parameter "nocache=1" to the url.&lt;br /&gt;
&lt;br /&gt;
Gadgets displayed as a preview also can't navigate to other views using &lt;a href="http://www.google.com/url?q=http%3A%2F%2Fwiki.opensocial.org%2Findex.php%3Ftitle%3DGadgets.views_%2528v0.9%2529%23gadgets.views.requestNavigateTo"&gt;requestNavigateTo()&lt;/a&gt;. If your gadget has a link that triggers changing the view it won't work in the preview.&lt;br /&gt;
&lt;br /&gt;
If you feel a preview isn't the right choice for your gadget then specify the other views (home &amp;amp; canvas) and be sure that your screenshot does a good job of conveying what your gadget will do for users.&lt;br /&gt;
&lt;br /&gt;
As always, come to the &lt;a href="http://groups.google.com/group/Google-Gadgets-API"&gt;iGoogle Developer Forum&lt;/a&gt; to talk about live gadget previews with other iGoogle developers.&lt;br /&gt;
&lt;br /&gt;
&lt;span class="byline-author"&gt;Posted by Rob Russell, Developer Relations&lt;/span&gt;</content><link href="http://www.blogger.com/feeds/2373604388319154209/posts/default/7684096010759420185" rel="edit" type="application/atom+xml"/><link href="http://www.blogger.com/feeds/2373604388319154209/posts/default/7684096010759420185" rel="self" type="application/atom+xml"/><link href="http://igoogledeveloper.blogspot.com/2011/04/live-gadget-previews-in-igoogle.html" rel="alternate" title="Live Gadget Previews in the iGoogle Directory" type="text/html"/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image height="16" rel="http://schemas.google.com/g/2005#thumbnail" src="https://img1.blogblog.com/img/b16-rounded.gif" width="16"/></author></entry><entry><id>tag:blogger.com,1999:blog-2373604388319154209.post-6157731026940591524</id><published>2010-06-23T09:47:00.000-07:00</published><updated>2020-06-15T20:56:42.540-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="iGoogle Blog"/><title type="text">OpenSocial Development Environment 1.0 Released</title><content type="html">OSDE (OpenSocial Development Environment) is an Eclipse plugin for  developing and testing OpenSocial applications.&lt;br /&gt;
&lt;div&gt;It's an  Apache-2-licensed open-source project hosted at:&lt;/div&gt;&lt;div&gt;&lt;a href="http://code.google.com/p/opensocial-development-environment/"&gt;http://code.google.com/p/opensocial-development-environment/&lt;/a&gt;&lt;/div&gt;&lt;div&gt;Its  milestone version 1.0 was released on June 22, 2010.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;div&gt;OSDE  provides a rich set of features that both enable and enhance OpenSocial  application development. It helps people building for both the client  within a gadget, or even on another server using the Java RESTful client  libraries.&amp;nbsp;Its features include:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;A built-in Shindig server  for local testing.&lt;/li&gt;
&lt;li&gt;An integrated database for storing and  managing social data.&lt;/li&gt;
&lt;li&gt;Simple project and gadget code generation  wizards to quickly generate your OpenSocial application projects and  application code.&lt;/li&gt;
&lt;li&gt;A multi-paned gadget spec editor to facilitate  gadget development.&lt;/li&gt;
&lt;li&gt;A new "OpenSocial" Eclipse perspective that  provides enhanced editing and debugging with easy access and control of  the local Shindig and social database.&lt;/li&gt;
&lt;li&gt;An OpenSocial REST Java  client wizard that can quickly generate a new project along with sample  code that uses the OpenSocial RESTful Java client library to connect to  the local OpenSocial server.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Live testing against iGoogle  server.&lt;/li&gt;
&lt;li&gt;Performance Analysis.&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;For details of  installation and how to use it, please read the user guide at:&amp;nbsp;&lt;a href="https://sites.google.com/site/opensocialdevenv/user-guide"&gt;https://sites.google.com/site/opensocialdevenv/user-guide&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;For  bugs reporting or feature requests, please visit:&amp;nbsp;&lt;a href="http://code.google.com/p/opensocial-development-environment/issues/list"&gt;http://code.google.com/p/opensocial-development-environment/issues/list&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;Thanks for your support.&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
Post content  &lt;span class="byline-author"&gt;Posted by Albert Cheng, iGoogle Engineer&lt;/span&gt;</content><link href="http://www.blogger.com/feeds/2373604388319154209/posts/default/6157731026940591524" rel="edit" type="application/atom+xml"/><link href="http://www.blogger.com/feeds/2373604388319154209/posts/default/6157731026940591524" rel="self" type="application/atom+xml"/><link href="http://igoogledeveloper.blogspot.com/2010/06/opensocial-development-environment-10.html" rel="alternate" title="OpenSocial Development Environment 1.0 Released" type="text/html"/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image height="16" rel="http://schemas.google.com/g/2005#thumbnail" src="https://img1.blogblog.com/img/b16-rounded.gif" width="16"/></author></entry><entry><id>tag:blogger.com,1999:blog-2373604388319154209.post-7829236161984702535</id><published>2010-05-26T14:26:00.000-07:00</published><updated>2020-06-15T20:56:42.777-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="iGoogle Blog"/><title type="text">HTML5 in Gadgets on iGoogle</title><content type="html">Did you know gadgets can use html5? The key is in the doctype. Normally the doctype of a gadget isn't mentioned. Specify the html5 doctype in the gadget and it will be used when the gadget is rendered. Let's look at a quick example using the popular canvas drawing API:&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;
&amp;lt;?xml version="1.0" encoding="UTF-8" ?&amp;gt;&lt;br /&gt;
&amp;lt;Module&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;lt;ModulePrefs title="html5 canvas"&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;lt;/ModulePrefs&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;lt;Content type="html" view="home,canvas"&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;lt;![CDATA[&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;!DOCTYPE html&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;script&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;var demo = {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;init: function() {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;var drawcan = document.getElementById('drawarea');&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (drawcan.getContext){&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;var context = drawcan.getContext('2d');&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;var xmax = drawcan.width;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;var ymax = drawcan.height;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;context.strokeRect(0,0,xmax,ymax);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;for (var dotix = 0; dotix &amp;lt; 100; ++dotix) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;var x = Math.random() * xmax;var y = Math.random() * ymax;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;context.strokeStyle = "#888888";&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;var blueness = Math.floor(Math.random() * 256);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;context.fillStyle = "rgb(10,90,"+ blueness +")";&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;context.beginPath();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;context.arc(x,y,5,0,Math.PI*2,true);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;context.closePath();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;context.stroke();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;context.fill();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;};&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;gadgets.util.registerOnLoadHandler(demo.init);&lt;br /&gt;
&amp;nbsp;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;canvas id="drawarea" width="150" height="150"&amp;gt;&amp;lt;/canvas&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;]]&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;lt;/Content&amp;gt;&lt;br /&gt;
&amp;lt;/Module&amp;gt;&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
&lt;div style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_j1NNIt-quw4/S_2SImvP1-I/AAAAAAAAAB0/Yg6lj4QqRKM/s200/moredots.png"/&gt;&lt;/div&gt;&lt;br /&gt;
The top of the gadget still has the usual XML prolog because the gadget spec is, as always, an XML document. The html, in this case html5, is inside a CDATA block. The CDATA block means the structure of the html5 content is pretty much ignored when parsing the XML. iGoogle doesn't do anything extra for compatibility with html5; features specific to html5 will still only work in browsers that support them. Gadgets have the same cross-browser compatibility concerns as any other web page. Have a look at the &lt;a href="http://caniuse.com/"&gt;When can I use&lt;/a&gt; guide for an idea of compatibility of features across browsers.&lt;br /&gt;
&lt;br /&gt;
The content of this gadget is pretty straightforward. It includes a canvas element. In the init method it tries to get a drawing context. If it's successful (meaning the browsers supports html5 canvas) it will draw a rectangle around the extents of the element then draw 10 randomly placed dots inside. Use this gadget as a starting point to get your own html5 gadget running.&lt;br /&gt;
&lt;br /&gt;
And yes, this gadget has a canvas in your canvas so you can render when you render. &lt;br /&gt;
&lt;br /&gt;
&lt;span class="byline-author"&gt;Posted by Rob Russell, Developer Relations Team&lt;/span&gt;</content><link href="http://www.blogger.com/feeds/2373604388319154209/posts/default/7829236161984702535" rel="edit" type="application/atom+xml"/><link href="http://www.blogger.com/feeds/2373604388319154209/posts/default/7829236161984702535" rel="self" type="application/atom+xml"/><link href="http://igoogledeveloper.blogspot.com/2010/05/html5-in-gadgets-on-igoogle.html" rel="alternate" title="HTML5 in Gadgets on iGoogle" type="text/html"/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image height="16" rel="http://schemas.google.com/g/2005#thumbnail" src="https://img1.blogblog.com/img/b16-rounded.gif" width="16"/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="http://1.bp.blogspot.com/_j1NNIt-quw4/S_2SImvP1-I/AAAAAAAAAB0/Yg6lj4QqRKM/s72-c/moredots.png" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-2373604388319154209.post-1659293152805264388</id><published>2010-05-13T18:40:00.000-07:00</published><updated>2020-06-15T20:56:41.858-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="iGoogle Blog"/><title type="text">OSAPI on iGoogle</title><content type="html">The OpenSocial 0.9 specification introduced a simpler API called OS  Lite (also known as OSAPI) which uses a syntax that's friendlier for Javascript  developers.&lt;br /&gt;
&lt;br /&gt;
Some steely eyed developers have already noticed  that iGoogle works with most OpenSocial 0.9 features.  The implementation  of OSAPI should work as documented at &lt;a href="http://wiki.opensocial.org/index.php?title=OSAPI_Specification" target="_blank"&gt;opensocial.org&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
Here's  a basic example to play with so you can get started with the OS Lite  API.  In this example we will execute a request to fetch and display a  list of the user's friends.&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;
&amp;lt;Module&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;lt;ModulePrefs height="800" title="osapi friends" title_url="http://code.google.com"&amp;gt;&lt;br /&gt;
&lt;/code&gt;&lt;code&gt;&amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;lt;Require feature="opensocial-0.9" /&amp;gt;&lt;br /&gt;
&lt;/code&gt;&lt;code&gt;&amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;lt;Require feature="osapi" /&amp;gt;&lt;br /&gt;
&lt;/code&gt;&lt;code&gt;&lt;/code&gt;&lt;code&gt;&amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;lt;Content type="html" view="home"&amp;gt;&lt;br /&gt;
&lt;/code&gt;&lt;code&gt;&amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;lt;![CDATA[&lt;br /&gt;
&lt;/code&gt;&lt;code&gt;&amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;lt;script&amp;gt;&lt;br /&gt;
&lt;/code&gt;&lt;code&gt;&amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;nbsp;&lt;/code&gt;&lt;code&gt;var result = '';&lt;/code&gt;&lt;code&gt;&lt;br /&gt;
&lt;/code&gt;&lt;code&gt;&amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;nbsp;&lt;/code&gt;&lt;code&gt; osapi.people.get({userId:'@owner', groupId:'@friends'}).execute(function(response) {&lt;/code&gt;&lt;code&gt;&lt;br /&gt;
&lt;/code&gt;&lt;code&gt;&amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;nbsp;&lt;/code&gt;&lt;code&gt;result += 'You have ' + response.list.length + ' friends:&amp;lt;ul&amp;gt;';&lt;br /&gt;
&lt;/code&gt;&lt;code&gt;&amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;nbsp;&lt;/code&gt;&lt;code&gt;for (item in response.list) {&lt;br /&gt;
&lt;/code&gt;&lt;code&gt;&amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;nbsp;&lt;/code&gt;&lt;code&gt;result += '&amp;lt;li&amp;gt;' + response.list[item]';&lt;br /&gt;
&lt;/code&gt;&lt;code&gt;&amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;nbsp;&lt;/code&gt;&lt;code&gt;}&lt;br /&gt;
&lt;/code&gt;&lt;code&gt;&amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;nbsp;&lt;/code&gt;&lt;code&gt;document.getElementById("output").innerHTML = result + '&amp;lt;/ul&amp;gt;';&lt;br /&gt;
&lt;/code&gt;&lt;code&gt;&amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;nbsp;&lt;/code&gt;&lt;code&gt;});&lt;br /&gt;
&lt;/code&gt;&lt;code&gt;&amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;nbsp;&lt;/code&gt;&lt;code&gt;]]&amp;gt;&lt;br /&gt;
&lt;/code&gt;&lt;code&gt;&amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;lt;/Content&amp;gt;&lt;br /&gt;
&amp;lt;/Module&amp;gt;&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
To keep it short we've omitted detailed error handling in our example.  It should be pretty clear what the script is doing but it's good to  check &lt;span style="font-family: monospace;"&gt;response.error&lt;/span&gt; and gracefully  handle problems.&lt;br /&gt;
The first call, &lt;span style="font-family: monospace;"&gt;osapi.people.get({userId: '@owner',  groupId: '@friends'})&lt;/span&gt; constructs a request object to get a list  of people for the current user from their &lt;span style="font-style: italic;"&gt;friends&lt;/span&gt; group.  The call to  &lt;span style="font-family: monospace;"&gt;execute&lt;/span&gt;  will make a call to the service, passing the results to a callback  function.  Our callback is a simple anonymous function that  across the  result set.&lt;br /&gt;
When running the code, look at the JSON  response from iGoogle and you'll see that the data structure is pretty  straightforward.  Use some of the tools built into your browser such as:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Firebug  if you are using Firefox&lt;/li&gt;
&lt;li&gt;Chrome or Safari Developer tools.&lt;/li&gt;
&lt;li&gt;Opera  Dragonfly&lt;/li&gt;
&lt;li&gt;Internet Explorer 8's debugger&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
These tools help debug your Javascript but also can show you  the HTTP messages that are going to iGoogle from your gadget and the  responses iGoogle sends back. There's also the &lt;a href="http://osda.appspot.com/" target="_blank"&gt;OpenSocial Developer App&lt;/a&gt; which is a  gadget that will build arbitrary messages that you can incorporate in  test code.&lt;br /&gt;
&lt;br /&gt;
As we get more OpenSocial 0.9 tested out on  iGoogle, we'll update the documentation to reflect the current  functionality.&lt;br /&gt;
&lt;br /&gt;
If you like OSAPI and you're going to be at  Google I/O 2010, you can find us in the Hack Alcove on May 20 2010 from  2-3:30pm. We'll give a walk through of a gadget built with osapi for  iGoogle gadget developers. There's also &lt;a href="http://code.google.com/events/io/2010/sessions/igoogle-developer-portal.html" target="_blank"&gt;a  talk for iGoogle developers&lt;/a&gt; at I/O on May 20 2010 at 10:15am.&lt;br /&gt;
&lt;br /&gt;
&lt;span class="byline-author"&gt;Posted by Rob Russell and Paul Kinlan, Developer Relations&lt;/span&gt;</content><link href="http://www.blogger.com/feeds/2373604388319154209/posts/default/1659293152805264388" rel="edit" type="application/atom+xml"/><link href="http://www.blogger.com/feeds/2373604388319154209/posts/default/1659293152805264388" rel="self" type="application/atom+xml"/><link href="http://igoogledeveloper.blogspot.com/2010/05/osapi-on-igoogle.html" rel="alternate" title="OSAPI on iGoogle" type="text/html"/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image height="16" rel="http://schemas.google.com/g/2005#thumbnail" src="https://img1.blogblog.com/img/b16-rounded.gif" width="16"/></author></entry><entry><id>tag:blogger.com,1999:blog-2373604388319154209.post-6602483210061969906</id><published>2010-05-10T09:58:00.000-07:00</published><updated>2020-06-15T20:56:42.605-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="iGoogle Blog"/><title type="text">Images In RSS Around the World</title><content type="html">We announced a couple weeks ago that iGoogle &lt;a href="http://igoogledeveloper.blogspot.com/2010/04/sometimes-blue-text-just-isnt-enough.html"&gt;now  supports images in RSS&lt;/a&gt;. The initial launch was for the US only, but  we're launching globally over the next few days. All users will now be  able to use our two new views (headline and lead story and slideshow) to  display images directly on iGoogle for any feed using MediaRSS or  enclosures. If you're a feed provider, have a look at the &lt;a href="http://code.google.com/apis/igoogle/docs/mediarssguide.html"&gt;iGoogle  Feed Gadgets Publishers Guide&lt;/a&gt; to engage users with your feed.&lt;br /&gt;
&lt;br /&gt;
Post content  &lt;span class="byline-author"&gt;Posted by Rob Russell, Developer Relations&lt;/span&gt;</content><link href="http://www.blogger.com/feeds/2373604388319154209/posts/default/6602483210061969906" rel="edit" type="application/atom+xml"/><link href="http://www.blogger.com/feeds/2373604388319154209/posts/default/6602483210061969906" rel="self" type="application/atom+xml"/><link href="http://igoogledeveloper.blogspot.com/2010/05/images-in-rss-around-world.html" rel="alternate" title="Images In RSS Around the World" type="text/html"/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image height="16" rel="http://schemas.google.com/g/2005#thumbnail" src="https://img1.blogblog.com/img/b16-rounded.gif" width="16"/></author></entry><entry><id>tag:blogger.com,1999:blog-2373604388319154209.post-178157701275353609</id><published>2010-05-03T18:55:00.000-07:00</published><updated>2020-06-15T20:56:41.901-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="iGoogle Blog"/><title type="text">Variable Substitution and getMsg</title><content type="html">Gadgets  use messages, stored in &lt;a href="http://code.google.com/apis/gadgets/docs/i18n.html#Bundles"&gt;messagebundles&lt;/a&gt;, for  internationalization. The most common way to access the messages your  gadget has is with variable substitution. For example, a message called  north can be specified as&lt;br /&gt;
&lt;br /&gt;
&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;lt;msg name="north"&amp;gt;Nord&amp;lt;/msg&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;/div&gt;and accessed by using  __MSG_north__ your code. The copious underscores lead to the  affectionate term “hangman variables” for this substitution notation.  Before your code runs, the exact text __MSG_north__ is replaced  everywhere with the appropriate value from the messagebundle. In this  example it will be “Nord” (French for North, no quotes). This happens in  the appropriate places in the XML of your gadget spec as well. So your  enum values can be replaced before the controls are made that will show  them and everything works as expected. But suppose you have some text in  your code that uses a message, something like&lt;br /&gt;
&lt;br /&gt;
&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;dirbox.innerHTML = '__MSG_north__';&lt;br /&gt;
&lt;br /&gt;
&lt;/div&gt;This will work fine as well because the substitution happens  before the code runs. Now let’s take another message&lt;br /&gt;
&lt;br /&gt;
&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;lt;msg name="dinername"&amp;gt;Chez Sophie&amp;lt;/msg&amp;gt;&lt;br /&gt;
&lt;/div&gt;And some similar  Javascript&lt;br /&gt;
&lt;br /&gt;
&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;dinersign.innerHTML  = '__MSG_dinername__';&lt;br /&gt;
&lt;br /&gt;
&lt;/div&gt;Everything works fine until we add the  English translation&lt;br /&gt;
&lt;br /&gt;
&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;lt;msg name="dinername"&amp;gt;Sophie's Place&amp;lt;/msg&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;/div&gt;And the code the  gadget tries to run is&lt;br /&gt;
&lt;br /&gt;
&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;dinersign.innerHTML = 'Sophie's Place';&lt;br /&gt;
&lt;br /&gt;
&lt;/div&gt;where of course the  string ends early and the browser will correctly emit some odd error on  seeing the first s after the apostrophe. This could be cited as an  unterminated string literal, a missing semicolon or an illegal character  (if you get a different character for your apostrophe).&lt;br /&gt;
&lt;br /&gt;
The &lt;a href="http://wiki.opensocial.org/index.php?title=Gadgets.Prefs_%28v0.8%29#gadgets.Prefs.getMsg"&gt;gadgets.Prefs.getMsg()&lt;/a&gt; function will correctly read the dinername as the string which it’s  meant to be.&lt;br /&gt;
&lt;br /&gt;
&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;var  init = function () {&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;var prefs = new gadgets.Prefs();&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;dinersign =  document.getElementById("dinersign");&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;dinersign.innerHTML =  prefs.getMsg("dinername");&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;};&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;gadgets.util.registerOnLoadHandler(init);&lt;/div&gt;&lt;br /&gt;
The getMsg function  should help make more reliable, robust gadgets in many cases and it  might help resolve some of those errors your users get using languages  translations that you don’t use so often.</content><link href="http://www.blogger.com/feeds/2373604388319154209/posts/default/178157701275353609" rel="edit" type="application/atom+xml"/><link href="http://www.blogger.com/feeds/2373604388319154209/posts/default/178157701275353609" rel="self" type="application/atom+xml"/><link href="http://igoogledeveloper.blogspot.com/2010/05/variable-substitution-and-getmsg.html" rel="alternate" title="Variable Substitution and getMsg" type="text/html"/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image height="16" rel="http://schemas.google.com/g/2005#thumbnail" src="https://img1.blogblog.com/img/b16-rounded.gif" width="16"/></author></entry><entry><id>tag:blogger.com,1999:blog-2373604388319154209.post-1302654318396133784</id><published>2010-04-22T10:20:00.000-07:00</published><updated>2020-06-15T20:56:41.688-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="iGoogle Blog"/><title type="text">Sometimes blue text just isn’t enough</title><content type="html">Nearly every iGoogle user has an RSS feed or two on their homepage - from top news to celebrity gossip, recipes, and much much more. In true Google fashion, we originally launched RSS support with a simple headline-only presentation. However, we all know the power of pictures, and so, we're happy to announce the addition of image support to our standard RSS gadget.&lt;br /&gt;&lt;br /&gt;With this new feature, users have three different display views.&lt;br /&gt;&lt;br /&gt;&lt;span style="padding-left: 10px;"&gt;&lt;b&gt;Headline only&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;img style="border: medium none; margin: 0pt 10px 10px 0pt;" src="http://4.bp.blogspot.com/_j1NNIt-quw4/S9CMhGrl4OI/AAAAAAAAAAk/EJbrS9MP1J8/s1600/dg5pddfv_121dbfbcwg8_b" alt="Headline only view" id="BLOGGER_PHOTO_ID_5463018846892618466" border="0" /&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="padding-left: 10px;"&gt;&lt;b&gt;Slideshow&lt;/b&gt;&lt;/span&gt;&lt;span style="padding-left: 230px;"&gt;&lt;b&gt;Headline and lead  story&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;img style="border: medium none; margin: 0pt 10px 10px 0pt;" src="http://4.bp.blogspot.com/_j1NNIt-quw4/S9CMhYnQ7FI/AAAAAAAAAAs/Pxf-osUkc9w/s1600/dg5pddfv_1229cvtbtgh_b" alt="Slideshow and Headline and lead story views" id="BLOGGER_PHOTO_ID_5463019567067328674" border="0" /&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;When users go to iGoogle today, they’ll notice that not all feeds have the same view. We default each feed to what we believe is the optimal display based on the images currently available in the feed. Of course, users can change the display setting by choosing "edit settings" in the drop down menu for each feed.&lt;br /&gt;&lt;br /&gt;These new views not only create a better experience for users, but also give publishers an opportunity to more easily expose rich content, often already present in their RSS feeds. To take advantage of this new feature, publishers simply need to add images and associated Media RSS and/or enclosure elements to their existing RSS feeds. We’ll then grab the images, resize them down as necessary, and provide hosting/caching. Additionally, we’ll make the images clickable and display a 150 character snippet in the “Headline and lead story” view.&lt;br /&gt;&lt;br /&gt;Here are a sampling of feeds to try out:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.google.com/ig/directory?type=gadgets&amp;amp;url=www.cnn.com/partners/google/cnn_topstories.rss" title="CNN"&gt;CNN&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.google.com/ig/directory?type=gadgets&amp;amp;url=www.nytimes.com/services/xml/rss/nyt/HomePage.xml" title="NYTimes"&gt;NYTimes&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.google.com/ig/directory?url=newsrss.bbc.co.uk%2Frss%2Fnewsonline_world_edition%2Ffront_page%2Frss.xml" id="iw_p" title="BBC"&gt;BBC&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.google.com/ig/directory?type=gadgets&amp;amp;url=www.economist.com/rss/globalAgenda/economist_globalArticle.xml" title="The Economist"&gt;The Economist&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.google.com/ig/directory?type=gadgets&amp;amp;url=rss.time.com/web/time/rss/top/index.xml" title="Time.com"&gt;Time.com&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.google.com/ig/directory?type=gadgets&amp;amp;url=rss.people.com/web/people/rss/topheadlines/index.xml" title="People Magazine"&gt;People  Magazine&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.google.com/ig/directory?type=gadgets&amp;amp;url=rss.ew.com/web/ew/rss/todayslatest/index.xml" title="Entertainment Weekly"&gt;Entertainment Weekly&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.google.com/ig/directory?type=gadgets&amp;amp;url=www.wikihow.com/feed.rss" title="Wikihow"&gt;Wikihow&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.google.com/ig/directory?url=feeds.nationalgeographic.com%2Fng%2Fphotography%2Fphoto-of-the-day%2F" title="National Geographic"&gt;National Geographic&lt;/a&gt; (try it  in slideshow mode)&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.google.com/ig/directory?url=feeds.feedburner.com%2Felise%2Fsimplyrecipes" title="Simply Recipes"&gt;Simply Recipes&lt;/a&gt; (try it in  slideshow mode)&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;This feature is launching in the US over the next day with full international support coming soon. Please see our &lt;a href="http://code.google.com/apis/igoogle/docs/mediarssguide.html"&gt;feed publisher instructions&lt;/a&gt; for more information.&lt;br /&gt;&lt;br /&gt;&lt;span class="byline-author"&gt;Posted by James Lee, iGoogle Engineer&lt;/span&gt;</content><link href="http://www.blogger.com/feeds/2373604388319154209/posts/default/1302654318396133784" rel="edit" type="application/atom+xml"/><link href="http://www.blogger.com/feeds/2373604388319154209/posts/default/1302654318396133784" rel="self" type="application/atom+xml"/><link href="http://igoogledeveloper.blogspot.com/2010/04/sometimes-blue-text-just-isnt-enough.html" rel="alternate" title="Sometimes blue text just isn’t enough" type="text/html"/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image height="16" rel="http://schemas.google.com/g/2005#thumbnail" src="https://img1.blogblog.com/img/b16-rounded.gif" width="16"/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="http://4.bp.blogspot.com/_j1NNIt-quw4/S9CMhGrl4OI/AAAAAAAAAAk/EJbrS9MP1J8/s72-c/dg5pddfv_121dbfbcwg8_b" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-2373604388319154209.post-2025505383080826342</id><published>2010-04-20T19:43:00.000-07:00</published><updated>2020-06-15T20:56:41.966-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="iGoogle Blog"/><title type="text">UserPrefs in Gadget URLs</title><content type="html">There's been a change in the way we send parameters to gadgets which use Content type="url". In short, we started sending the user prefs parameters after a # - the URL fragment identifier. As it turns out, this change caused problems for developers who rely on using URL parameters in server side code - since the url fragment isn't sent to the server.&lt;br /&gt;&lt;br /&gt;If this change caused trouble for your gadget then we have figured out a way to exempt gadgets individually for up to about two weeks - that's until May 4. So time is still tight but not as tight. Read on to the end of this post for details.&lt;br /&gt;&lt;br /&gt;We didn't intend to break any gadgets and I would normally announce  changes like this on the blog and &lt;a href="http://groups.google.com/group/Google-Gadgets-API/"&gt;in the forum&lt;/a&gt; earlier. The team discussed ways that affected gadgets can deal with the new location of the  parameters for type=url gadgets and have a couple ideas for fixes.&lt;br /&gt;&lt;br /&gt;First, if your gadget can deal with the user prefs completely in  Javascript without another trip to the server then do so. Use the &lt;a href="http://wiki.opensocial.org/index.php?title=Gadgets.Prefs_%28v0.8%29"&gt; documented apis for user prefs&lt;/a&gt;.  Gadgets that are already using these API functions to retrieve user  prefs are not affected by this iGoogle change.&lt;br /&gt;&lt;br /&gt;The other, hopefully less common, case is if you use the parameters in  server side code in a way that slightly alters the delivered content. An  example would be setting up location-dependant data with the user  location stored in their preferences. In this case you can have the  gadget read the parameters from the URL in Javascript and send an AJAX  request to your server for the data you need to render the relevant  sections of your gadget. Of course your gadget should use &lt;a href="http://wiki.opensocial.org/index.php?title=Gadgets.Prefs_%28v0.8%29"&gt;the documented  user prefs apis&lt;/a&gt; as above.&lt;br /&gt;&lt;br /&gt;A side-effect of the second fix may be that your gadget's initial render  can happen sooner which can improve user-perceived performance (while  taking roughly the same time to load overall).&lt;br /&gt;&lt;br /&gt;We realize this unintended consequence may be difficult to deal with  immediately. So we've figured out a way to exempt specific gadgets for  up to two weeks if you need the time. Just give the URL of your gadget &lt;a href="http://groups.google.com/group/Google-Gadgets-API/browse_thread/thread/cfa3159d094d8f78"&gt; in this forum thread&lt;/a&gt; and we'll add you to the list.&lt;br /&gt;&lt;br /&gt;I encourage anyone to post specific questions about fixes for your code  in new threads in the &lt;a href="http://groups.google.com/group/Google-Gadgets-API/topics"&gt;iGoogle Developer forum&lt;/a&gt;. While it's not normally the best place for help  with server-side code, in this case you may find other  developers in similar situations.&lt;br /&gt;&lt;br /&gt;&lt;span class="byline-author"&gt;Posted by Rob Russell, Developer Relations&lt;br /&gt;&lt;/span&gt;</content><link href="http://www.blogger.com/feeds/2373604388319154209/posts/default/2025505383080826342" rel="edit" type="application/atom+xml"/><link href="http://www.blogger.com/feeds/2373604388319154209/posts/default/2025505383080826342" rel="self" type="application/atom+xml"/><link href="http://igoogledeveloper.blogspot.com/2010/04/userprefs-in-gadget-urls.html" rel="alternate" title="UserPrefs in Gadget URLs" type="text/html"/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image height="16" rel="http://schemas.google.com/g/2005#thumbnail" src="https://img1.blogblog.com/img/b16-rounded.gif" width="16"/></author></entry><entry><id>tag:blogger.com,1999:blog-2373604388319154209.post-8349953752392410241</id><published>2010-03-25T13:30:00.000-07:00</published><updated>2020-06-15T20:56:42.841-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="iGoogle Blog"/><title type="text">Migration made easier</title><content type="html">Last year we released a &lt;a href="http://code.google.com/apis/gadgets/docs/migration.html"&gt;legacy migration guide&lt;/a&gt; for converting legacy gadgets to gadgets.* by hand. At the time, we promised a migration tool to help perform these migrations automatically.&lt;br /&gt;&lt;br /&gt;Today, I’m happy to announce the &lt;a href="http://gadget-migration.appspot.com/"&gt;legacy gadget migration tool&lt;/a&gt;, which will convert existing XML and JavaScript code to use the gadgets.* API. The tool will accept raw XML and JavaScript to convert, or a publicly visible URL, read the code, and replace references to the legacy API with their gadgets.* equivalents. In the rare case where a migration cannot be automatically performed, it will output per-line warnings indicating what changes developers must make by hand, along with a relevant link to the migration guide.&lt;br /&gt;&lt;br /&gt;Of course, please test migrated code before deploying to all of your users.&lt;br /&gt;&lt;br /&gt;If you have any questions, please inquire in the &lt;a href="http://groups.google.com/group/Google-Gadgets-API"&gt;iGoogle Developer Forum&lt;/a&gt;. &lt;br /&gt;&lt;br /&gt;&lt;span class="byline-author"&gt;Posted by Dan Holevoet, Developer Programs&lt;/span&gt;</content><link href="http://www.blogger.com/feeds/2373604388319154209/posts/default/8349953752392410241" rel="edit" type="application/atom+xml"/><link href="http://www.blogger.com/feeds/2373604388319154209/posts/default/8349953752392410241" rel="self" type="application/atom+xml"/><link href="http://igoogledeveloper.blogspot.com/2010/03/migration-made-easier.html" rel="alternate" title="Migration made easier" type="text/html"/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image height="16" rel="http://schemas.google.com/g/2005#thumbnail" src="https://img1.blogblog.com/img/b16-rounded.gif" width="16"/></author></entry><entry><id>tag:blogger.com,1999:blog-2373604388319154209.post-8510474725533352939</id><published>2010-03-04T10:41:00.000-08:00</published><updated>2020-06-15T20:56:42.905-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="iGoogle Blog"/><title type="text">The forums, they are a-changin'</title><content type="html">&lt;p&gt;iGoogle developers, your lives are about to get a bit easier. For the last few years, the &lt;a href="http://groups.google.com/group/Google-Gadgets-API" title="iGoogle Developer Forum"&gt;iGoogle Developer Forum&lt;/a&gt; has been the place for gadget developers to discuss development of gadgets for iGoogle. Despite the name, the forum only provided help and answers for one of the two iGoogle APIs.  For themes questions, developers turned to the &lt;a href="http://groups.google.com/group/google-themes-api" title="Google Themes API group"&gt;Google Themes API group&lt;/a&gt;, fragmenting the development community in two.&lt;/p&gt;&lt;p&gt;Starting immediately, the &lt;a href="http://groups.google.com/group/Google-Gadgets-API" title="iGoogle Developer Forum"&gt;iGoogle Developer Forum&lt;/a&gt; will now be host for all iGoogle developer discussion, for both gadgets and themes. The Themes API group will be put into a read-only mode in a few days, and the welcome text will include a reminder to everyone to visit the combined group.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;In addition, we have created a new &lt;a href="http://code.google.com/p/igoogle-developers/wiki/IssuesTab?tm=3" title="shared issue tracker"&gt;shared issue tracker&lt;/a&gt; for reporting issues with the Gadgets and Themes APIs. The &lt;a href="http://code.google.com/p/igoogle-legacy/wiki/IssuesTab?tm=3" title="igoogle-legacy tracker"&gt;igoogle-legacy tracker&lt;/a&gt; is to be used exclusively for issues pertaining to the &lt;a href="http://igoogledeveloper.blogspot.com/2010/01/last-phase-of-inlined-gadget.html" title="deprecated legacy gadgets API"&gt;deprecated legacy gadgets API&lt;/a&gt;, and will remain active until the API is no longer supported. All gadgets.* API, Themes API, and directory issues should be posted in the new issue tracker.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;If you have any questions about these changes, please let us know in the &lt;a href="http://groups.google.com/group/Google-Gadgets-API" title="forum"&gt;forum&lt;/a&gt;.&lt;br /&gt;&lt;/p&gt;&lt;span class="byline-author"&gt;Posted by Rob Russell, Developer Relations&lt;/span&gt;</content><link href="http://www.blogger.com/feeds/2373604388319154209/posts/default/8510474725533352939" rel="edit" type="application/atom+xml"/><link href="http://www.blogger.com/feeds/2373604388319154209/posts/default/8510474725533352939" rel="self" type="application/atom+xml"/><link href="http://igoogledeveloper.blogspot.com/2010/03/igoogle-developers-your-lives-are-about.html" rel="alternate" title="The forums, they are a-changin'" type="text/html"/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image height="16" rel="http://schemas.google.com/g/2005#thumbnail" src="https://img1.blogblog.com/img/b16-rounded.gif" width="16"/></author></entry><entry><id>tag:blogger.com,1999:blog-2373604388319154209.post-2297282270877845609</id><published>2010-02-16T11:03:00.000-08:00</published><updated>2020-06-15T20:56:42.009-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="iGoogle Blog"/><title type="text">New features on the Developer Dashboard</title><content type="html">Last November we launched the &lt;a href="http://igoogledeveloper.blogspot.com/2009/11/launching-igoogle-gadget-dashboard.html"&gt;iGoogle Gadget Dashboard&lt;/a&gt;, a tool to give our gadget developers more insight into how their gadget is used in the wild. For starters, we gave developers the ability to track their user count, pageviews, canvas views all over time, as well as the geographic distribution of their users. When we launched we promised more to come, and we're pleased to announce the release of several of the most requested features by our developer community.&lt;br /&gt;&lt;br /&gt;You may have already noticed the newest additions to the dashboard, which we rolled out over the last week. Developers can now subscribe to their gadget's directory comments with their favorite RSS reader, so it's easy to stay current with your user's concerns and desires. If you're a developer with a lot of gadgets, we've added sorting options so you can keep gadgets ordered in the most useful way.  Finally and for the first time, developers can easily submit and withdraw gadgets from the iGoogle directory, giving them even greater control over their presence on iGoogle.&lt;br /&gt;&lt;br /&gt;We're firm believers in the principle that empowering our developers is the best way to bring a great iGoogle experience to our users, so we'll be listening to our developer community about the tools and data they need the most and the dashboard will continue to improve. In the meantime, you can play with the new version at: &lt;a href="http://code.google.com/igoogle/dashboard/"&gt;http://code.google.com/igoogle/dashboard/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Happy developing!&lt;br /&gt;&lt;br /&gt;&lt;span class="byline-author"&gt;Posted by Sascha Haberling, Tech Lead&lt;/span&gt;</content><link href="http://www.blogger.com/feeds/2373604388319154209/posts/default/2297282270877845609" rel="edit" type="application/atom+xml"/><link href="http://www.blogger.com/feeds/2373604388319154209/posts/default/2297282270877845609" rel="self" type="application/atom+xml"/><link href="http://igoogledeveloper.blogspot.com/2010/02/new-features-on-developer-dashboard.html" rel="alternate" title="New features on the Developer Dashboard" type="text/html"/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image height="16" rel="http://schemas.google.com/g/2005#thumbnail" src="https://img1.blogblog.com/img/b16-rounded.gif" width="16"/></author></entry><entry><id>tag:blogger.com,1999:blog-2373604388319154209.post-629450797868747299</id><published>2010-01-22T11:41:00.000-08:00</published><updated>2020-06-15T20:56:42.562-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="iGoogle Blog"/><title type="text">​Last phase of inlined gadget deprecation</title><content type="html">​The deprecation of inlined gadgets which began in &lt;a href="http://groups.google.com/group/Google-Gadgets-API/browse_thread/thread/5776dc1be6dfd0b"&gt;November 2007&lt;/a&gt; is ready to enter its final phase. Over the next 30 days, we will be disabling the remaining inlined gadgets on iGoogle, starting immediately with those that are broken or have zero users. If you’d like operation of your gadget to continue, please follow the instructions in the &lt;a href="http://code.google.com/apis/gadgets/docs/migration.html"&gt;gadgets.* migration guide&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;If you have any questions on the deprecation, please visit the &lt;a href="http://groups.google.com/group/Google-Gadgets-API"&gt;iGoogle Developer Forum&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span class="byline-author"&gt;Posted by ​Dan Holevoet, Developer Programs&lt;/span&gt;</content><link href="http://www.blogger.com/feeds/2373604388319154209/posts/default/629450797868747299" rel="edit" type="application/atom+xml"/><link href="http://www.blogger.com/feeds/2373604388319154209/posts/default/629450797868747299" rel="self" type="application/atom+xml"/><link href="http://igoogledeveloper.blogspot.com/2010/01/last-phase-of-inlined-gadget.html" rel="alternate" title="​Last phase of inlined gadget deprecation" type="text/html"/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image height="16" rel="http://schemas.google.com/g/2005#thumbnail" src="https://img1.blogblog.com/img/b16-rounded.gif" width="16"/></author></entry><entry><id>tag:blogger.com,1999:blog-2373604388319154209.post-1373364577096570718</id><published>2009-12-17T17:25:00.000-08:00</published><updated>2020-06-15T20:56:41.731-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="iGoogle Blog"/><title type="text">An update on the legacy API deprecation</title><content type="html">Three months ago we &lt;a href="http://igoogledeveloper.blogspot.com/2009/09/more-things-change-more-they-stay-same.html"&gt;announced&lt;/a&gt; the deprecation of the legacy gadgets API. Since then we've released a &lt;a href="http://code.google.com/apis/gadgets/docs/migration.html"&gt;legacy migration guide&lt;/a&gt; for converting legacy gadgets to "gadgets.*" by hand, and we're continuing to work on a migration tool to help perform this conversion automatically.&lt;br /&gt;&lt;br /&gt;Since the migration tool isn't yet available, we've decided to delay the next step of the migration process, the requirement that all new gadgets be written using gadgets.*, for an indefinite period. So, while we still recommend using the gadgets.* API, as it will save you time later, we're holding off on this requirement. Stay tuned for another update on the migration process, with a link to the migration tool, in early 2010.&lt;br /&gt;&lt;br /&gt;&lt;span class="byline-author"&gt;Posted by Dan Holevoet, Developer Programs&lt;/span&gt;</content><link href="http://www.blogger.com/feeds/2373604388319154209/posts/default/1373364577096570718" rel="edit" type="application/atom+xml"/><link href="http://www.blogger.com/feeds/2373604388319154209/posts/default/1373364577096570718" rel="self" type="application/atom+xml"/><link href="http://igoogledeveloper.blogspot.com/2009/12/update-on-legacy-api-deprecation.html" rel="alternate" title="An update on the legacy API deprecation" type="text/html"/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image height="16" rel="http://schemas.google.com/g/2005#thumbnail" src="https://img1.blogblog.com/img/b16-rounded.gif" width="16"/></author></entry><entry><id>tag:blogger.com,1999:blog-2373604388319154209.post-1522267470375577734</id><published>2009-11-23T15:07:00.000-08:00</published><updated>2020-06-15T20:56:41.815-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="iGoogle Blog"/><title type="text">Amigos! Freunde! Friends! Друзья!</title><content type="html">Googlers live &lt;a href="http://www.google.com/corporate/address.html"&gt;all over the world&lt;/a&gt;, and so do Google's users. In fact, more than half of iGoogle's users are outside the US, which is why we're pleased today to announce the release of support for social gadgets on iGoogle in more than 30 languages, from Bulgarian to Vietnamese.&lt;br /&gt;&lt;br /&gt;That means if you're developing or thinking about developing a social gadget to help users connect and collaborate on iGoogle, the size of your potential audience more than doubled! Now is a great time to explore our &lt;a href="http://code.google.com/igoogle"&gt;developer's site&lt;/a&gt; to learn about developing social gadgets for iGoogle. Or, if you already have a social gadget, you can &lt;a href="http://code.google.com/apis/gadgets/docs/i18n.html"&gt;click here&lt;/a&gt; to learn how to make it accessible to an international audience.&lt;br /&gt;&lt;br /&gt;To learn more about how to make iGoogle and even more fun and personal homepage, you can check out the video below.&lt;br /&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;object height="344" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/D4AXFZWZ6nI&amp;amp;hl=en&amp;amp;fs=1&amp;amp;"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/D4AXFZWZ6nI&amp;amp;hl=en&amp;amp;fs=1&amp;amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" height="344" width="425"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;br /&gt;&lt;span class="byline-author"&gt;Posted by Tyler Odean, Product Manager&lt;/span&gt;</content><link href="http://www.blogger.com/feeds/2373604388319154209/posts/default/1522267470375577734" rel="edit" type="application/atom+xml"/><link href="http://www.blogger.com/feeds/2373604388319154209/posts/default/1522267470375577734" rel="self" type="application/atom+xml"/><link href="http://igoogledeveloper.blogspot.com/2009/11/amigos-freunde-friends.html" rel="alternate" title="Amigos! Freunde! Friends! Друзья!" type="text/html"/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image height="16" rel="http://schemas.google.com/g/2005#thumbnail" src="https://img1.blogblog.com/img/b16-rounded.gif" width="16"/></author></entry><entry><id>tag:blogger.com,1999:blog-2373604388319154209.post-3207932172448314102</id><published>2009-11-20T15:03:00.000-08:00</published><updated>2020-06-15T20:56:42.159-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="iGoogle Blog"/><title type="text">Launching the iGoogle Gadget Dashboard</title><content type="html">As Googlers, we love data. More data lets us make better decisions and make improvements to our products. As fellow gadget authors, we know that once you've developed a gadget, it can be difficult to get data that lets you know how your gadget is doing. The stats and comments in the directory are tailored for users, not developers, to help them make better decisions about which gadgets to install. Developers deserve a way to get data that lets them improve their gadgets.&lt;br /&gt;&lt;br /&gt;Worry no longer! We're pleased to announce the launch of the &lt;a href="http://code.google.com/igoogle/dashboard/"&gt;iGoogle gadget dashboard&lt;/a&gt;, a place where developers can manage their gadgets and see detailed analytics about their gadgets' usage. Right now the dashboard allows you to see user numbers over time, number of gadget loads in home and canvas view, as well a geographic break down of users. We plan on adding more features to the dashboard in the near future which will give developers even more detailed information.&lt;br /&gt;&lt;br /&gt;If you've already built an iGoogle gadget, go to the dashboard and add it. All you have to do is log in and enter the URL of any gadget you own or developed. Enjoy!&lt;br /&gt;&lt;br /&gt;If you have any questions about the gadget dashboard, please visit the &lt;a href="http://groups.google.com/group/google-gadgets-api"&gt;iGoogle Developer Forum&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span class="byline-author"&gt;Posted by Chris Pedregal, Product Manager and Kevin Liu, Tech Lead&lt;/span&gt;</content><link href="http://www.blogger.com/feeds/2373604388319154209/posts/default/3207932172448314102" rel="edit" type="application/atom+xml"/><link href="http://www.blogger.com/feeds/2373604388319154209/posts/default/3207932172448314102" rel="self" type="application/atom+xml"/><link href="http://igoogledeveloper.blogspot.com/2009/11/launching-igoogle-gadget-dashboard.html" rel="alternate" title="Launching the iGoogle Gadget Dashboard" type="text/html"/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image height="16" rel="http://schemas.google.com/g/2005#thumbnail" src="https://img1.blogblog.com/img/b16-rounded.gif" width="16"/></author></entry><entry><id>tag:blogger.com,1999:blog-2373604388319154209.post-8396892912716333425</id><published>2009-10-19T14:55:00.000-07:00</published><updated>2020-06-15T20:56:42.862-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="iGoogle Blog"/><title type="text">Hot off the press: gadgets.* migration guide</title><content type="html">A little over a month, we &lt;a href="http://igoogledeveloper.blogspot.com/2009/09/more-things-change-more-they-stay-same.html"&gt;announced&lt;/a&gt; the deprecation of the legacy gadgets API, and in the intervening time have been hard at work on resources to help with the transition. The first of these resources, a &lt;a href="http://code.google.com/apis/gadgets/docs/migration.html"&gt;gadgets.* migration guide&lt;/a&gt;, has just been posted to code.google.com.&lt;br /&gt;&lt;br /&gt;The guide includes mappings between _IG_* and gadgets.* methods, helper functions, and pointers to third-party libraries that you can use in your updated gadgets.&lt;br /&gt;&lt;br /&gt;If you have any questions about the migration guide, or the transition from _IG_* to gadgets.*, please visit the &lt;a href="http://groups.google.com/group/google-gadgets-api"&gt;iGoogle Developer Forum&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span class="byline-author"&gt;Posted by Dan Holevoet, Developer Programs&lt;/span&gt;</content><link href="http://www.blogger.com/feeds/2373604388319154209/posts/default/8396892912716333425" rel="edit" type="application/atom+xml"/><link href="http://www.blogger.com/feeds/2373604388319154209/posts/default/8396892912716333425" rel="self" type="application/atom+xml"/><link href="http://igoogledeveloper.blogspot.com/2009/10/hot-off-press-gadgets-migration-guide.html" rel="alternate" title="Hot off the press: gadgets.* migration guide" type="text/html"/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image height="16" rel="http://schemas.google.com/g/2005#thumbnail" src="https://img1.blogblog.com/img/b16-rounded.gif" width="16"/></author></entry><entry><id>tag:blogger.com,1999:blog-2373604388319154209.post-5339629861584282362</id><published>2009-09-29T16:41:00.000-07:00</published><updated>2020-06-15T20:56:42.497-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="iGoogle Blog"/><title type="text">Deprecating shareable-prefs API on iGoogle</title><content type="html">If you don't know about or use the shareable-prefs API, you can safely stop reading now. If you do, we want to let you know that we'll be deprecating this API and feature.&lt;br /&gt;&lt;br /&gt;A little over a year ago, iGoogle added &lt;a href="http://googlegadgetsapi.blogspot.com/2008/04/write-collaborative-gadget-with-one.html"&gt;shareable-prefs&lt;/a&gt;, enabling gadgets to share state across multiple users' pages. Since then, iGoogle has rolled out support for OpenSocial, enabling a collaboration model that is more tightly integrated into an application's design. Given this, along with the low adoption of the shareable-prefs feature in gadgets, we've decided it's time to deprecate the shareable-prefs feature.&lt;br /&gt;&lt;br /&gt;In the next few weeks, iGoogle will remove the UI elements for shareable-prefs, preventing any new gadgets from implementing this feature. A few weeks later, iGoogle will break the links between these gadgets entirely, at which point, the gadgets will behave as if they were never shared at all. However, both users will retain the data in their preferences. The gadgets should continue to function in every other regard, but gadgets that wish to share data between users should implement OpenSocial's requestShareApp (paired with appdata, or a 3rd-party storage mechanism).&lt;br /&gt;&lt;br /&gt;If you have any questions about these changes, please let us know in the &lt;a href="https://groups.google.com/group/google-gadgets-api"&gt;iGoogle Developer Forum&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span class="byline-author"&gt;Posted by Dan Holevoet, Developer Programs&lt;/span&gt;</content><link href="http://www.blogger.com/feeds/2373604388319154209/posts/default/5339629861584282362" rel="edit" type="application/atom+xml"/><link href="http://www.blogger.com/feeds/2373604388319154209/posts/default/5339629861584282362" rel="self" type="application/atom+xml"/><link href="http://igoogledeveloper.blogspot.com/2009/09/deprecating-shareable-prefs-api-on.html" rel="alternate" title="Deprecating shareable-prefs API on iGoogle" type="text/html"/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image height="16" rel="http://schemas.google.com/g/2005#thumbnail" src="https://img1.blogblog.com/img/b16-rounded.gif" width="16"/></author></entry><entry><id>tag:blogger.com,1999:blog-2373604388319154209.post-3182313514153044988</id><published>2009-09-18T16:09:00.000-07:00</published><updated>2020-06-15T20:56:42.137-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="iGoogle Blog"/><title type="text">Reinforcements in the war on slow</title><content type="html">On the iGoogle team we're always working to balance the needs of our users with the needs of our developers, to make sure we're creating an environment where everyone benefits. We want users to have access to the very best gadgets, hence we want to make sure we provide our developers with all the tools and information they need to create those gadgets.&lt;br /&gt;&lt;br /&gt;Recently, we announced plans to mark gadgets in the directory that were especially slow to load. We have some new tools on the way that will help make it easier for developers to streamline their gadgets. So we've decided to hold off on labeling gadgets until we've released these new tools and give developers a chance to use them to improve their gadgets.&lt;br /&gt;&lt;br /&gt;In the meantime, there are still plenty of things that can be done to fight gadget latency &amp;mdash; be sure to check out our latency tips on &lt;a href="http://code.google.com/speed/articles/optimizing-opensocial-gadgets.html"&gt;Google Code&lt;/a&gt;, and our &lt;a href="http://wiki.opensocial.org/index.php?title=OpenSocial_Latency_Combat_Field_Manual"&gt;Latency Combat Field Manual&lt;/a&gt;!&lt;br /&gt;&lt;br /&gt;&lt;span class="byline-author"&gt;Posted by Tyler Odean, Product Manager, iGoogle Team&lt;/span&gt;</content><link href="http://www.blogger.com/feeds/2373604388319154209/posts/default/3182313514153044988" rel="edit" type="application/atom+xml"/><link href="http://www.blogger.com/feeds/2373604388319154209/posts/default/3182313514153044988" rel="self" type="application/atom+xml"/><link href="http://igoogledeveloper.blogspot.com/2009/09/reinforcements-in-war-on-slow.html" rel="alternate" title="Reinforcements in the war on slow" type="text/html"/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image height="16" rel="http://schemas.google.com/g/2005#thumbnail" src="https://img1.blogblog.com/img/b16-rounded.gif" width="16"/></author></entry><entry><id>tag:blogger.com,1999:blog-2373604388319154209.post-3770399123810674678</id><published>2009-09-14T12:08:00.000-07:00</published><updated>2020-06-15T20:56:42.327-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="iGoogle Blog"/><title type="text">The more things change, the more they stay the same</title><content type="html">The &lt;a href="http://code.google.com/apis/gadgets/docs/legacy/dev_guide.html"&gt;legacy&lt;/a&gt; gadgets API has had a storied life, as both the first version of the gadgets API that drove iGoogle, and the direct predecessor of the current &lt;a href="http://code.google.com/apis/gadgets/docs/dev_guide.html"&gt;gadgets.*&lt;/a&gt; API. As with many APIs there comes a time when we must say goodbye to the past, and embrace the present. The gadgets.* API has gained wide acceptance, both on Google and non-Google gadget containers, and is the standard API for gadget development. And so, as of today, the legacy gadgets API is officially deprecated.&lt;br /&gt;&lt;br /&gt;I'll give you all a moment to wipe away the tears of sadness (or joy as the case may be). Now, here are the details:&lt;ul&gt;&lt;li&gt;The legacy API is officially deprecated as of today, September 14th.&lt;/li&gt;&lt;li&gt;For three months, the legacy API will continue in its current state.&lt;/li&gt;&lt;li&gt;On or around December 14th, any new gadget submissions to the iGoogle directory must be using the gadgets.*, in order to be accepted, but existing gadgets may continue to use the legacy API.&lt;/li&gt;&lt;li&gt;On the same date, the remaining inlined gadgets will be disabled.&lt;/li&gt;&lt;li&gt;Finally, one year after deprecation, September 14th, 2010, gadgets using the legacy API will cease to function on iGoogle, and the majority of other Google-owned gadget containers (such as orkut, Gmail, and Calendar).&lt;/li&gt;&lt;li&gt;Reminders will be posted when these important dates approach.&lt;/li&gt;&lt;/ul&gt;We're also working on some tools to aid you in the transition: a gadget migration tool that will parse your existing gadget and convert legacy calls to gadgets.*, and a migration guide for developers who wish to migrate their gadgets by hand. Watch for announcements on these tools in the next few weeks.&lt;br /&gt;&lt;br /&gt;For most gadgets, the changes should be simple to implement. For each _IG_* method, there is usually a direct equivalent gadgets.* method. For instance, _IG_AdjustIFrameHeight maps directly to gadgets.window.adjustHeight, and performing a find and replace is sufficient. In a small subset of cases, multiple _IG_* methods map to a single gadgets.* method. For instance, _IG_FetchContent and _IG_FetchXmlContent both map to gadgets.io.makeRequest with different parameters. Developers should refer to the relevant section of the &lt;a href="http://code.google.com/apis/gadgets/docs/dev_guide.html"&gt;developer's guide&lt;/a&gt; to find gadgets.* equivalents.&lt;br /&gt;&lt;br /&gt;If you have any questions, as always, feel free to inquire in the &lt;a href="http://groups.google.com/group/google-gadgets-api"&gt;iGoogle Developer Forum&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span class="byline-author"&gt;Posted by Dan Holevoet, Developer Programs&lt;/span&gt;</content><link href="http://www.blogger.com/feeds/2373604388319154209/posts/default/3770399123810674678" rel="edit" type="application/atom+xml"/><link href="http://www.blogger.com/feeds/2373604388319154209/posts/default/3770399123810674678" rel="self" type="application/atom+xml"/><link href="http://igoogledeveloper.blogspot.com/2009/09/more-things-change-more-they-stay-same.html" rel="alternate" title="The more things change, the more they stay the same" type="text/html"/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image height="16" rel="http://schemas.google.com/g/2005#thumbnail" src="https://img1.blogblog.com/img/b16-rounded.gif" width="16"/></author></entry><entry><id>tag:blogger.com,1999:blog-2373604388319154209.post-2747248154743418723</id><published>2009-08-31T13:27:00.000-07:00</published><updated>2020-06-15T20:56:42.095-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="iGoogle Blog"/><title type="text">Going faster than a roller coaster</title><content type="html">Users love fast gadgets. Fast gadgets are more likely to remain installed, and will see higher usage. Fast gadgets may also &lt;a href="http://code.google.com/events/io/sessions/DesigningOpenSocialAppsSpeedScale.html"&gt;cost less&lt;/a&gt; to keep running.&lt;br /&gt;&lt;br /&gt;Slow gadgets make users unhappy, both with individual gadgets, and with iGoogle. Unfortunately, there hasn't been a way to tell a slow gadget from a fast one until it's been installed. To remedy this, starting in late September, the iGoogle directory will add a "slow" badge next to the entry of any gadget that's slow enough to cause speed-related user dissatisfaction.&lt;br /&gt;&lt;br /&gt;To help you get your gadgets in top-notch shape before the badges roll out, check out our new latency tips on &lt;a href="http://code.google.com/speed/articles/optimizing-opensocial-gadgets.html"&gt;Google Code&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span class="byline-author"&gt;Posted by Dan Holevoet, Developer Programs&lt;/span&gt;</content><link href="http://www.blogger.com/feeds/2373604388319154209/posts/default/2747248154743418723" rel="edit" type="application/atom+xml"/><link href="http://www.blogger.com/feeds/2373604388319154209/posts/default/2747248154743418723" rel="self" type="application/atom+xml"/><link href="http://igoogledeveloper.blogspot.com/2009/08/going-faster-than-roller-coaster.html" rel="alternate" title="Going faster than a roller coaster" type="text/html"/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image height="16" rel="http://schemas.google.com/g/2005#thumbnail" src="https://img1.blogblog.com/img/b16-rounded.gif" width="16"/></author></entry><entry><id>tag:blogger.com,1999:blog-2373604388319154209.post-2343069903182521609</id><published>2009-08-12T12:56:00.000-07:00</published><updated>2020-06-15T20:56:42.030-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="iGoogle Blog"/><title type="text">iGoogle is a social being</title><content type="html">If you've been a devoted reader of this blog you're probably no stranger to the idea that "social is better" when it comes to the web. Activities such as reading the news, doing a crossword puzzle, sharing a todo list, or watching a video are all better when done with a friend. Coincidentally, these are all things that iGoogle users love to do, so bringing social to iGoogle is a logical next step.&lt;br /&gt;&lt;br /&gt;Developers have had a chance to sneak a peek at what iGoogle has been doing in the social space for many months, in the iGoogle developer sandbox. As of today, social gadgets taking advantage of the OpenSocial API will now work in both the US and Australia, with other countries soon to follow. That's tens of millions of iGoogle users with access to social gadgets, if you're keeping count.&lt;br /&gt;&lt;br /&gt;Of course, iGoogle is a little bit different than most of the sites which support OpenSocial, so here's a quick rundown of the differences:&lt;ol&gt;&lt;li&gt;An iGoogle page is personal, and not shared with other users. In OpenSocial terms, this means that &lt;span style="font-family:monospace;"&gt;VIEWER&lt;/span&gt; and &lt;span style="font-family:monospace;"&gt;OWNER&lt;/span&gt; are always the same person.&lt;/li&gt;&lt;li&gt;Friendship between two users may be non-mutual. This allows developers to use a "following" model in their applications. For cases where it's important to verify mutual friendship (sharing private data, for instance), developers can use the &lt;span style="font-family:monospace;"&gt;isFriendsWith&lt;/span&gt; filter when requesting the user's mutual friends.&lt;/li&gt;&lt;li&gt;iGoogle has users without canvas view, with canvas view but without social, and with social, all at the same time. And, some users sign in to use iGoogle while others remain signed out. Developers should make sure their gadgets work gracefully across feature sets so that users always have the optimal experience. This &lt;a href="http://igoogledeveloper.blogspot.com/2009/08/every-happy-gadget-is-same-every.html"&gt;blog post&lt;/a&gt; provides more details and an example gadget for checking different cases.&lt;/li&gt;&lt;li&gt;iGoogle supports organic growth of applications with two mechanisms.&lt;ul&gt;&lt;li&gt;Application sharing (via &lt;span style="font-family:monospace;"&gt;requestShareApp&lt;/span&gt;), allows developers to reach a wider audience by encouraging users to engage their friends inside of a given application. By default, requestShareApp will list all of the user's Friends and users can auto invite new friends by email. iGoogle will email recipients without iGoogle accounts, or present a notification within the UI to existing iGoogle users to add the gadget and become friends.&lt;/li&gt;&lt;li&gt;Updates (via &lt;span style="font-family:monospace;"&gt;requestCreateActivity&lt;/span&gt;), allow developers to call out specific user actions, to share them with a wider audience. There is a current limit of 3 updates per user, per app, per day, which may be increased in the future.&lt;/li&gt;&lt;/ol&gt;&lt;/li&gt;&lt;/ul&gt;To see some great examples of new (or upgraded) gadgets using social features, check out &lt;a href="http://www.google.com/igsocial"&gt;this page&lt;/a&gt;. Then, when you're ready, take a look at the &lt;a href="http://code.google.com/apis/igoogle/docs/gs.html"&gt;getting started guide&lt;/a&gt; for details on writing your own social gadgets for iGoogle. As always, if you have questions, please visit us in the &lt;a href="http://groups.google.com/group/google-gadgets-api"&gt;iGoogle Developer Forum&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span class="byline-author"&gt;Posted by Dan Holevoet, Developer Programs&lt;/span&gt;</content><link href="http://www.blogger.com/feeds/2373604388319154209/posts/default/2343069903182521609" rel="edit" type="application/atom+xml"/><link href="http://www.blogger.com/feeds/2373604388319154209/posts/default/2343069903182521609" rel="self" type="application/atom+xml"/><link href="http://igoogledeveloper.blogspot.com/2009/08/igoogle-is-social-being.html" rel="alternate" title="iGoogle is a social being" type="text/html"/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image height="16" rel="http://schemas.google.com/g/2005#thumbnail" src="https://img1.blogblog.com/img/b16-rounded.gif" width="16"/></author></entry><entry><id>tag:blogger.com,1999:blog-2373604388319154209.post-8437195509702864727</id><published>2009-08-05T14:13:00.000-07:00</published><updated>2020-06-15T20:56:42.884-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="iGoogle Blog"/><title type="text">Every happy gadget is the same, every unhappy gadget is unhappy in its own way</title><content type="html">Not so long ago we wrote about the need to keep your social gadgets &lt;a href="http://igoogledeveloper.blogspot.com/2009/05/importance-of-being-unsociable.html"&gt;robust to adversity&lt;/a&gt;. We received a lot of questions about how to detect when social conditions have broken down, and what to tell users when they have. So here's a quick cheatsheet for how to determine what might be interfering with the normal operation of your gadget, and what to do about each of them.&lt;ol&gt;&lt;li&gt;&lt;b&gt;The user is in a domain without canvas view.&lt;/b&gt;&lt;br /&gt;
All gadgets that take advantage of canvas view should also be prepared to support those domains for which canvas view is not available. To confirm that a canvas view is available, you can insert a &lt;span style="font-family:monospace;"&gt;Content&lt;/span&gt; section without a view specified, as outlined in this &lt;a href="http://igoogledeveloper.blogspot.com/2008/06/supporting-views-while-keeping.html"&gt;blog post&lt;/a&gt;. If your gadget does not support a home view only environment, we suggest telling the user "This gadget requires a feature that is not available in your locale at this time. Please check back at a later date." For more on views, check out the &lt;a href="http://code.google.com/apis/igoogle/docs/igoogledevguide.html#views"&gt;iGoogle Developer Guide&lt;/a&gt;.&lt;/li&gt;

&lt;li&gt;&lt;b&gt;The user is in a domain where OpenSocial is not available.&lt;/b&gt;&lt;br /&gt;
If a user is in a domain where canvas view is available a good next step is to test whether that domain has access to OpenSocial functionality. A gadget can determine if the user is on an OpenSocial supported domain or not by calling &lt;span style="font-family:monospace;"&gt;gadgets.util.hasFeature('opensocial-0.8')&lt;/span&gt;, which will return true if the domain supports OpenSocial. If your gadget requires OpenSocial to operate correctly, we recommend you tell the user "This gadget requires a feature that is not available in your locale at this time. Please check back at a later date."&lt;/li&gt;

&lt;li&gt;&lt;b&gt;The user is not signed in.&lt;/b&gt;&lt;br /&gt;
Remember that a significant portion of iGoogle's users are not signed in and won't have any available social information to draw from. A gadget can determine if the user has signed in or not by making a request for the owner or viewer and checking the ID of the user.  A logged out user is considered anonymous, and will have a viewer ID of -1. If your gadget requires access to OpenSocial information in order to operate we suggest you give users the message "This gadget cannot access the information it needs so that you can share or collaborate with friends. Please sign in to enable access."  In many cases, of course, gadgets can still function even without social features. In that case - we suggest the message "This gadget lets you share and collaborate with friends on iGoogle. Sign in to use these features."&lt;/li&gt;

&lt;li&gt;&lt;b&gt;The user has not enabled the gadget's social access.&lt;/b&gt;&lt;br /&gt;
After installing a gadget a user will be prompted to enable that gadget to access their friend list and activity stream. If the gadget makes an OpenSocial request for information that the user has not enabled access to, it will fail with error code 403 (FORBIDDEN). If your gadget needs access to one or both of these datasets, we recommend the message "This gadget cannot access the information it needs so that you can share or collaborate with friends. Please adjust the gadget's settings to enable access." Similarly if your gadget can still function without access to these social features we recommend the message "This gadget lets you share and collaborate with friends on iGoogle. Please adjust the gadgets settings to use these features." Remember that &lt;i&gt;all users will see your gadget displayed without social access at least once&lt;/i&gt;, so make sure your gadget handles this case gracefully!&lt;/li&gt;

&lt;li&gt;&lt;b&gt;The user hasn't added any friends.&lt;/b&gt;&lt;br /&gt;
Finally remember that most users will begin with no friends on their friends list. If your gadget needs friends in order operate normally, we recommend that you use tell your users "You can use this gadget to share and collaborate with friends on iGoogle. Share with friends." where you can link "share with friends" to the &lt;span style="font-family:monospace;"&gt;requestShareApp&lt;/span&gt; call, which allows users to simultaneously add friends and invite them to add your gadget.&lt;/li&gt;
&lt;/ol&gt;By keeping these cases in mind you should be able to help ensure your users get the most out of the social functionality of your gadget. To see an example of how to detect these and other conditions in a live gadget, check out the newly updated &lt;a href="http://opensocial-resources.googlecode.com/svn/samples/igoogle/state_detector.xml"&gt;Testing iGoogle State gadget&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;span class="byline-author"&gt;Tyler Odean, Associate Product Manager, iGoogle Team&lt;/span&gt;</content><link href="http://www.blogger.com/feeds/2373604388319154209/posts/default/8437195509702864727" rel="edit" type="application/atom+xml"/><link href="http://www.blogger.com/feeds/2373604388319154209/posts/default/8437195509702864727" rel="self" type="application/atom+xml"/><link href="http://igoogledeveloper.blogspot.com/2009/08/every-happy-gadget-is-same-every.html" rel="alternate" title="Every happy gadget is the same, every unhappy gadget is unhappy in its own way" type="text/html"/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image height="16" rel="http://schemas.google.com/g/2005#thumbnail" src="https://img1.blogblog.com/img/b16-rounded.gif" width="16"/></author></entry></feed>