<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;A0MAR3w4eip7ImA9WxNWGUU.&quot;"><id>tag:blogger.com,1999:blog-2373604388319154209</id><updated>2009-10-19T14:57:26.232-07:00</updated><title type="text">iGoogle Developer Blog</title><subtitle type="html">Your source for API improvements, changes to the sandbox, and developer events.</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://igoogledeveloper.blogspot.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://igoogledeveloper.blogspot.com/" /><link rel="hub" href="http://pubsubhubbub.appspot.com/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/2373604388319154209/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" /><author><name>A Googler</name><email>noreply@blogger.com</email></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>40</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><link rel="self" href="http://feeds.feedburner.com/IgoogleDeveloperBlog" type="application/atom+xml" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><entry gd:etag="W/&quot;A0MAR3w4cSp7ImA9WxNWGUU.&quot;"><id>tag:blogger.com,1999:blog-2373604388319154209.post-8396892912716333425</id><published>2009-10-19T14:55:00.000-07:00</published><updated>2009-10-19T14:57:26.239-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-10-19T14:57:26.239-07:00</app:edited><title>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;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2373604388319154209-8396892912716333425?l=igoogledeveloper.blogspot.com'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/IgoogleDeveloperBlog/~4/FCXL7nVe07c" height="1" width="1"/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2373604388319154209/posts/default/8396892912716333425?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2373604388319154209/posts/default/8396892912716333425?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/IgoogleDeveloperBlog/~3/FCXL7nVe07c/hot-off-press-gadgets-migration-guide.html" title="Hot off the press: gadgets.* migration guide" /><author><name>Dan Holevoet</name><uri>http://www.blogger.com/profile/14663004239430136422</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="05811300668423425585" /></author><feedburner:origLink>http://igoogledeveloper.blogspot.com/2009/10/hot-off-press-gadgets-migration-guide.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkcER3s-fSp7ImA9WxNXEks.&quot;"><id>tag:blogger.com,1999:blog-2373604388319154209.post-5339629861584282362</id><published>2009-09-29T16:41:00.000-07:00</published><updated>2009-09-29T16:46:46.555-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-09-29T16:46:46.555-07:00</app:edited><title>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;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2373604388319154209-5339629861584282362?l=igoogledeveloper.blogspot.com'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/IgoogleDeveloperBlog/~4/wXGzXMVLyvg" height="1" width="1"/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2373604388319154209/posts/default/5339629861584282362?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2373604388319154209/posts/default/5339629861584282362?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/IgoogleDeveloperBlog/~3/wXGzXMVLyvg/deprecating-shareable-prefs-api-on.html" title="Deprecating shareable-prefs API on iGoogle" /><author><name>Dan Holevoet</name><uri>http://www.blogger.com/profile/14663004239430136422</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="05811300668423425585" /></author><feedburner:origLink>http://igoogledeveloper.blogspot.com/2009/09/deprecating-shareable-prefs-api-on.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEcGSHgyfyp7ImA9WxNQE0w.&quot;"><id>tag:blogger.com,1999:blog-2373604388319154209.post-3182313514153044988</id><published>2009-09-18T16:09:00.000-07:00</published><updated>2009-09-18T16:20:29.697-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-09-18T16:20:29.697-07:00</app:edited><title>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;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2373604388319154209-3182313514153044988?l=igoogledeveloper.blogspot.com'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/IgoogleDeveloperBlog/~4/iaZZYWhk8H4" height="1" width="1"/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2373604388319154209/posts/default/3182313514153044988?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2373604388319154209/posts/default/3182313514153044988?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/IgoogleDeveloperBlog/~3/iaZZYWhk8H4/reinforcements-in-war-on-slow.html" title="Reinforcements in the war on slow" /><author><name>Dan Holevoet</name><uri>http://www.blogger.com/profile/14663004239430136422</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="05811300668423425585" /></author><feedburner:origLink>http://igoogledeveloper.blogspot.com/2009/09/reinforcements-in-war-on-slow.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0QHQnw6fyp7ImA9WxNRGUg.&quot;"><id>tag:blogger.com,1999:blog-2373604388319154209.post-3770399123810674678</id><published>2009-09-14T12:08:00.000-07:00</published><updated>2009-09-14T12:08:53.217-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-09-14T12:08:53.217-07:00</app:edited><title>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;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2373604388319154209-3770399123810674678?l=igoogledeveloper.blogspot.com'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/IgoogleDeveloperBlog/~4/ZggJZdXJcaQ" height="1" width="1"/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2373604388319154209/posts/default/3770399123810674678?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2373604388319154209/posts/default/3770399123810674678?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/IgoogleDeveloperBlog/~3/ZggJZdXJcaQ/more-things-change-more-they-stay-same.html" title="The more things change, the more they stay the same" /><author><name>Dan Holevoet</name><uri>http://www.blogger.com/profile/14663004239430136422</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="05811300668423425585" /></author><feedburner:origLink>http://igoogledeveloper.blogspot.com/2009/09/more-things-change-more-they-stay-same.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkEFQno-fyp7ImA9WxNSF0g.&quot;"><id>tag:blogger.com,1999:blog-2373604388319154209.post-2747248154743418723</id><published>2009-08-31T13:27:00.000-07:00</published><updated>2009-08-31T13:30:13.457-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-08-31T13:30:13.457-07:00</app:edited><title>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;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2373604388319154209-2747248154743418723?l=igoogledeveloper.blogspot.com'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/IgoogleDeveloperBlog/~4/JSns2Kp5ZMQ" height="1" width="1"/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2373604388319154209/posts/default/2747248154743418723?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2373604388319154209/posts/default/2747248154743418723?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/IgoogleDeveloperBlog/~3/JSns2Kp5ZMQ/going-faster-than-roller-coaster.html" title="Going faster than a roller coaster" /><author><name>Dan Holevoet</name><uri>http://www.blogger.com/profile/14663004239430136422</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="05811300668423425585" /></author><feedburner:origLink>http://igoogledeveloper.blogspot.com/2009/08/going-faster-than-roller-coaster.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkIDRXk9fSp7ImA9WxNTEU0.&quot;"><id>tag:blogger.com,1999:blog-2373604388319154209.post-2343069903182521609</id><published>2009-08-12T12:56:00.000-07:00</published><updated>2009-08-12T13:22:54.765-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-08-12T13:22:54.765-07:00</app:edited><title>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;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2373604388319154209-2343069903182521609?l=igoogledeveloper.blogspot.com'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/IgoogleDeveloperBlog/~4/0y9o9_gIJlg" height="1" width="1"/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2373604388319154209/posts/default/2343069903182521609?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2373604388319154209/posts/default/2343069903182521609?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/IgoogleDeveloperBlog/~3/0y9o9_gIJlg/igoogle-is-social-being.html" title="iGoogle is a social being" /><author><name>Dan Holevoet</name><uri>http://www.blogger.com/profile/14663004239430136422</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="05811300668423425585" /></author><feedburner:origLink>http://igoogledeveloper.blogspot.com/2009/08/igoogle-is-social-being.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUIAQXo4cSp7ImA9WxJaFU0.&quot;"><id>tag:blogger.com,1999:blog-2373604388319154209.post-8437195509702864727</id><published>2009-08-05T14:13:00.000-07:00</published><updated>2009-08-05T14:25:40.439-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-08-05T14:25:40.439-07:00</app:edited><title>Every happy gadget is the same, every unhappy gadget is unhappy in it's 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;br /&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;br /&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;br /&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;br /&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;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2373604388319154209-8437195509702864727?l=igoogledeveloper.blogspot.com'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/IgoogleDeveloperBlog/~4/GrbIRCvNwJQ" height="1" width="1"/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2373604388319154209/posts/default/8437195509702864727?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2373604388319154209/posts/default/8437195509702864727?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/IgoogleDeveloperBlog/~3/GrbIRCvNwJQ/every-happy-gadget-is-same-every.html" title="Every happy gadget is the same, every unhappy gadget is unhappy in it's own way" /><author><name>Dan Holevoet</name><uri>http://www.blogger.com/profile/14663004239430136422</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="05811300668423425585" /></author><feedburner:origLink>http://igoogledeveloper.blogspot.com/2009/08/every-happy-gadget-is-same-every.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Ak4MQ34_eCp7ImA9WxJVFUo.&quot;"><id>tag:blogger.com,1999:blog-2373604388319154209.post-3567300645748338096</id><published>2009-07-02T16:53:00.000-07:00</published><updated>2009-07-02T16:56:22.040-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-07-02T16:56:22.040-07:00</app:edited><title>Announcing UX improvements in the sandbox</title><content type="html">Over the last few days, we've introduced several improvements to the sandbox to help flesh out what the full social experience will look like for your users.&lt;br /&gt;&lt;br /&gt;First, sharing a gadget is a richer experience — requestShareApp invites now display notifications at the top of the invitee's iGoogle page and in the "gadget shares" link on the left nav bar.  This system smoothly handles all the different use cases for you. If you invite a friend who does not yet use iGoogle, they will receive an email inviting them to join iGoogle and to share the gadget with you. Then, if your friend creates an account they will be prompted to add you as a friend. If your friend already has iGoogle but does not have you listed as a friend and/or does not have the gadget, they will see one of the new social notifications prompting them to add the gadget and/or to add you as a friend, respectively.  Finally if the friend you invited already has you as a friend and the gadget, they'll get a dismissable message saying that you have invited them.  As a developer you won't have to worry at all about whether or not someone uses iGoogle, has the gadget, or is friends with the user — requestShareApp will handle that all transparently for you!&lt;br /&gt;&lt;br /&gt;Next, you can delete the "Sandbox Friends" gadget, because our real control for editing and expanding your friends list is here, living in the "Friends" link on the left hand nav bar.  This, in addition to the prompts described above, is how users will add friends to their accounts.&lt;br /&gt;&lt;br /&gt;And finally, the &lt;a href="http://hosting.gmodules.com/ig/gadgets/file/117530634343249549005/activities.xml"&gt;Updates gadget&lt;/a&gt; continues to improve — multimedia Updates should be displaying much more cleanly now, and you can also filter Updates for those posted by your own gadgets. Remember that the final version of Updates, like the friends control and social notifications will live on the left nav bar, and gadgets will be limited to three Updates per user per day.&lt;br /&gt;&lt;br /&gt;&lt;span class="byline-author"&gt;Posted by Dan Holevoet, Developer Programs&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2373604388319154209-3567300645748338096?l=igoogledeveloper.blogspot.com'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/IgoogleDeveloperBlog/~4/9St6YFuwH2Y" height="1" width="1"/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2373604388319154209/posts/default/3567300645748338096?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2373604388319154209/posts/default/3567300645748338096?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/IgoogleDeveloperBlog/~3/9St6YFuwH2Y/announcing-ux-improvements-in-sandbox.html" title="Announcing UX improvements in the sandbox" /><author><name>Dan Holevoet</name><uri>http://www.blogger.com/profile/14663004239430136422</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="05811300668423425585" /></author><feedburner:origLink>http://igoogledeveloper.blogspot.com/2009/07/announcing-ux-improvements-in-sandbox.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0cCRnc-fyp7ImA9WxJVFUg.&quot;"><id>tag:blogger.com,1999:blog-2373604388319154209.post-3961552973399581835</id><published>2009-07-02T10:13:00.000-07:00</published><updated>2009-07-02T10:17:47.957-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-07-02T10:17:47.957-07:00</app:edited><title>Stem the 401 Tide</title><content type="html">Some of you may have noticed that OpenSocial API calls in the sandbox have started returning 401s, regardless of whether or not you've enabled social ACLs in your gadget. We're in the process of changing a few things behind the scenes, one of which has the unfortunate side effect of breaking the ACL check. While this is straightened out, make sure to visit: &lt;a href="http://www.google.com/ig?force_sandbox=1"&gt;http://www.google.com/ig?force_sandbox=1&lt;/a&gt; for a squeaky-clean and error-free sandbox.&lt;br /&gt;&lt;br /&gt;&lt;span class="byline-author"&gt;Posted by Dan Holevoet, Developer Programs&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2373604388319154209-3961552973399581835?l=igoogledeveloper.blogspot.com'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/IgoogleDeveloperBlog/~4/LgXiJ2EvwTs" height="1" width="1"/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2373604388319154209/posts/default/3961552973399581835?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2373604388319154209/posts/default/3961552973399581835?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/IgoogleDeveloperBlog/~3/LgXiJ2EvwTs/stem-401-tide.html" title="Stem the 401 Tide" /><author><name>Dan Holevoet</name><uri>http://www.blogger.com/profile/14663004239430136422</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="05811300668423425585" /></author><feedburner:origLink>http://igoogledeveloper.blogspot.com/2009/07/stem-401-tide.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0MHSHs4fSp7ImA9WxJQE0o.&quot;"><id>tag:blogger.com,1999:blog-2373604388319154209.post-3760929239214992372</id><published>2009-05-26T16:00:00.000-07:00</published><updated>2009-05-26T16:10:39.535-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-05-26T16:10:39.535-07:00</app:edited><title>An update on "Updates"</title><content type="html">Updates are back!  As the launch of OpenSocial support for iGoogle draws ever closer, we wanted to give you guys more ability to test and refine your gadget's use of the activity stream. &lt;br /&gt;&lt;br /&gt;To that end we encourage you to install the &lt;a href="http://hosting.gmodules.com/ig/gadgets/file/117530634343249549005/activities.xml"&gt;Updates gadget&lt;/a&gt; which is now actively displaying Update streams from contacts in your Friend's group. Remember, this is not the final UI - when we launch, Updates will be built into the container, rather than appearing in a standalone gadget.&lt;br /&gt;&lt;br /&gt;As you already know, in the wild there will be limits on the amount of Updates we allow from gadgets, to prevent spam.  As of right now, we are considering a daily quota of three Updates per user per gadget. This limit will not be enforced on gadgets in the sandbox so that you can continue testing your code without worrying about these protections, but be aware that there will be some anti-spam restrictions when these features go live.&lt;br /&gt;&lt;br /&gt;For more on Updates, check out the &lt;a href="http://code.google.com/apis/opensocial/articles/tutorial/tutorial-0.8.html#bragging"&gt;OpenSocial tutorial's activities section&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span class="byline-author"&gt;Posted by Tyler Odean, Associate Product Manager, iGoogle&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2373604388319154209-3760929239214992372?l=igoogledeveloper.blogspot.com'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/IgoogleDeveloperBlog/~4/zevUnms1nlw" height="1" width="1"/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2373604388319154209/posts/default/3760929239214992372?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2373604388319154209/posts/default/3760929239214992372?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/IgoogleDeveloperBlog/~3/zevUnms1nlw/update-on-updates.html" title="An update on &quot;Updates&quot;" /><author><name>Dan Holevoet</name><uri>http://www.blogger.com/profile/14663004239430136422</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="05811300668423425585" /></author><feedburner:origLink>http://igoogledeveloper.blogspot.com/2009/05/update-on-updates.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0YMRXg8fCp7ImA9WxJRE0k.&quot;"><id>tag:blogger.com,1999:blog-2373604388319154209.post-3818860855289844257</id><published>2009-05-14T17:53:00.000-07:00</published><updated>2009-05-14T17:59:44.674-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-05-14T17:59:44.674-07:00</app:edited><title>The importance of being unsociable</title><content type="html">A lot of the content we post on this blog is about social.  Social is new, social is big, social is better (all true!) ... but, non-social is important too, and gadgets should behave gracefully when users have not enabled social features, or they aren't available. Not only is a large part of iGoogle's userbase not signed in, but when users add a new gadget to their pages, for the first time, it is always added without social features enabled. Users enable the social ACLs in a separate step, after the gadget has been added to the page.&lt;br /&gt;&lt;br /&gt;Until they do that, the gadget will be rendered without social access - meaning that &lt;span style="font-style:italic;"&gt;every single user will see your gadget without social access at least once&lt;/span&gt;. Plan for it! Make sure you can handle that case, even if you only display a message prompting users to sign in and enable social access so that your gadget can operate correctly.&lt;br /&gt;&lt;br /&gt;For help with detecting whether a user's social functionality has been enabled and other iGoogle-specific OpenSocial questions, check out the &lt;a href="http://opensocial-resources.googlecode.com/svn/samples/igoogle/state_detector.xml"&gt;Testing iGoogle State gadget&lt;/a&gt;. This cribsheet builds on the &lt;a href="http://wiki.opensocial.org/index.php?title=OpenSocial_Tutorial"&gt;OpenSocial tutorial&lt;/a&gt; to provide a rapid way to look up example code for common social gadget tasks.&lt;br /&gt;&lt;br /&gt;Many of the folks who contribute to OpenSocial and iGoogle will be at Google I/O in San Francisco on May 27-28. We love to talk about this stuff, so check out the &lt;a href="http://code.google.com/events/io/"&gt;Google I/O site&lt;/a&gt; to sign up and join us.&lt;br /&gt;&lt;br /&gt;&lt;span class="byline-author"&gt;Posted by Tyler Odean, Associate Product Manager, iGoogle&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2373604388319154209-3818860855289844257?l=igoogledeveloper.blogspot.com'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/IgoogleDeveloperBlog/~4/FyG3rlltTOE" height="1" width="1"/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2373604388319154209/posts/default/3818860855289844257?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2373604388319154209/posts/default/3818860855289844257?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/IgoogleDeveloperBlog/~3/FyG3rlltTOE/importance-of-being-unsociable.html" title="The importance of being unsociable" /><author><name>Dan Holevoet</name><uri>http://www.blogger.com/profile/14663004239430136422</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="05811300668423425585" /></author><feedburner:origLink>http://igoogledeveloper.blogspot.com/2009/05/importance-of-being-unsociable.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEAASHcyfyp7ImA9WxJSFUk.&quot;"><id>tag:blogger.com,1999:blog-2373604388319154209.post-2947791507849219207</id><published>2009-05-05T09:54:00.000-07:00</published><updated>2009-05-05T09:59:09.997-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-05-05T09:59:09.997-07:00</app:edited><title>Gadget Checker: A simple way to make good gadgets great</title><content type="html">Writing software is hard, and it's easy for bugs to creep in.  Gadgets are no different.  And while developing gadgets here at Google, we discovered that many gadget bugs only show up when you've finished developing -- like when Japanese users can't see that translation you worked on for ages, or when your gadget turns out to be frustratingly slow.  &lt;br /&gt;&lt;br /&gt;It's important to have great gadgets in iGoogle. To help you, we'd like to share a tool that we wrote to catch many common gadget errors: &lt;a href="http://www.google.com/ig/adde?moduleurl=www.google.com/ig/modules/codechecker/codechecker.xml"&gt;Gadget Checker&lt;/a&gt;. We like to think of it as a small tool with a big impact. Use it before you submit your gadget to the Directory to pick up errors such as missing ModulePrefs attributes and missing images, scripts or stylesheets. It also makes suggestions for avoiding common latency traps, like unused API libraries, and for internationalizing your gadget. Simply load a gadget and run the tests, and you may find that you've fallen into one of the common problems. If so, there's advice in the gadget on how to address the issue. &lt;br /&gt;&lt;br /&gt;To allow developers to use the tool while developing their gadget, Gadget Checker can open a gadget saved as a local file or in the &lt;a href="http://code.google.com/apis/gadgets/docs/legacy/gs.html#Scratchpad"&gt;Google Gadget Editor&lt;/a&gt;. (Tip: Consider using a special iGoogle tab containing Gadget Checker and the GGE next to each other, just for developing gadgets.) Once you've opened a local file in Gadget Code Checker, you can save it directly to GGE to fix all the bugs you found. Gadget Checker can even check any existing gadget simply by entering its URL. &lt;br /&gt;&lt;br /&gt;Of course, the list of checks is nowhere near complete. If there's some pet peeve that you wish Gadget Code Checker looked for, feel free to &lt;a href="http://groups.google.com/group/Google-Gadgets-API"&gt;let us know&lt;/a&gt;. We hope Gadget Code Checker makes it easier for you to develop great gadgets, and are looking forward to developing additional tools to help too.&lt;br /&gt;&lt;br /&gt;One more thing. We hope you'll &lt;a href="http://code.google.com/events/io"&gt;join us at Google I/O&lt;/a&gt; in late May. It's a useful way to interact with Google engineers and other developers. And two days in San Francisco isn't too shabby, either! Register today.&lt;br /&gt;&lt;br /&gt;&lt;span class="byline-author"&gt;Posted by Egmont Koblinger and Martin Strauss, iGoogle Software Engineers&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2373604388319154209-2947791507849219207?l=igoogledeveloper.blogspot.com'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/IgoogleDeveloperBlog/~4/EI4Vv3caYJM" height="1" width="1"/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2373604388319154209/posts/default/2947791507849219207?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2373604388319154209/posts/default/2947791507849219207?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/IgoogleDeveloperBlog/~3/EI4Vv3caYJM/gadget-checker-simple-way-to-make-good.html" title="Gadget Checker: A simple way to make good gadgets great" /><author><name>Dan Holevoet</name><uri>http://www.blogger.com/profile/14663004239430136422</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="05811300668423425585" /></author><feedburner:origLink>http://igoogledeveloper.blogspot.com/2009/05/gadget-checker-simple-way-to-make-good.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkUDRHwyfSp7ImA9WxVbF0U.&quot;"><id>tag:blogger.com,1999:blog-2373604388319154209.post-521027477667738741</id><published>2009-04-03T10:31:00.000-07:00</published><updated>2009-04-03T10:37:55.295-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-04-03T10:37:55.295-07:00</app:edited><title>Signing changes in the iGoogle sandbox</title><content type="html">In case you haven't seen the &lt;a href="http://blog.opensocial.org/2009/04/important-oauth-signing-changes-coming.html"&gt;announcement&lt;/a&gt; on the OpenSocial blog, some changes to the way iGoogle's REST and RPC endpoints verify requests will be going live today, on the developer sandbox. If you're using a client library (&lt;a href="http://code.google.com/p/opensocial-java-client/downloads/detail?name=opensocial-20090402.jar"&gt;Java&lt;/a&gt;, &lt;a href="http://code.google.com/p/opensocial-php-client/downloads/detail?name=opensocial-php-client-1.0.1.zip"&gt;PHP&lt;/a&gt;, &lt;a href="http://code.google.com/p/opensocial-python-client/downloads/detail?name=opensocial-python-client-0.2.0.zip"&gt;Python&lt;/a&gt;, &lt;a href="http://code.google.com/p/opensocial-ruby-client/downloads/detail?name=opensocial-0.0.4.gem"&gt;Ruby&lt;/a&gt;), the latest versions will be compatible with these changes.&lt;br /&gt;&lt;br /&gt;To ask questions about the client library changes, please check out the &lt;a href="http://groups.google.com/group/opensocial-client-libraries"&gt;client libraries group&lt;/a&gt;. As always, for other questions, see 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;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2373604388319154209-521027477667738741?l=igoogledeveloper.blogspot.com'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/IgoogleDeveloperBlog/~4/gJdG2s_MyfY" height="1" width="1"/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2373604388319154209/posts/default/521027477667738741?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2373604388319154209/posts/default/521027477667738741?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/IgoogleDeveloperBlog/~3/gJdG2s_MyfY/signing-changes-in-igoogle-sandbox.html" title="Signing changes in the iGoogle sandbox" /><author><name>Dan Holevoet</name><uri>http://www.blogger.com/profile/14663004239430136422</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="05811300668423425585" /></author><feedburner:origLink>http://igoogledeveloper.blogspot.com/2009/04/signing-changes-in-igoogle-sandbox.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkIMSX49fSp7ImA9WxVUFEQ.&quot;"><id>tag:blogger.com,1999:blog-2373604388319154209.post-1802420743393032313</id><published>2009-03-19T14:34:00.000-07:00</published><updated>2009-03-19T14:36:28.065-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-03-19T14:36:28.065-07:00</app:edited><title>The sandbox prods along</title><content type="html">The iGoogle developer sandbox has always served as the bleeding edge version of iGoogle. It's the place to go when you want to be the first to try out new features. Unfortunately, if a bug sneaks into a sandbox release it can grind gadget development to a halt. This puts gadgets.* and OpenSocial developers in a tough spot, because the sandbox is the only place to develop with these features. Or, at least, it was.&lt;br /&gt;&lt;br /&gt;Following on orkut's model, iGoogle will now have a "production" sandbox, meant to provide a more stable development environment. New features and improvements will hit the regular sandbox, first. After they've had some time to simmer, they'll move over to the production sandbox.&lt;br /&gt;&lt;br /&gt;To enter the production sandbox, first enter the regular sandbox, then append the 'force_prod=1' parameter to your iGoogle URL. If you are not already in the sandbox, 'force_prod=1' will not trigger the proper behavior.&lt;br /&gt;&lt;br /&gt;If you're hitting the REST/RPC endpoints, you should now use http://www-opensocial-sandbox.googleusercontent.com/api and http://www-opensocial-sandbox.googleusercontent.com/api/rpc for the sandbox endpoint, and http://www-opensocial.googleusercontent.com/api and http://www-opensocial.googleusercontent.com/api/rpc for the production equivalents.&lt;br /&gt;&lt;br /&gt;As always, feel free to discuss sandbox issues in the &lt;a href="http://groups.google.com/group/google-gadgets-api"&gt;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;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2373604388319154209-1802420743393032313?l=igoogledeveloper.blogspot.com'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/IgoogleDeveloperBlog/~4/1loIoFFcVFU" height="1" width="1"/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2373604388319154209/posts/default/1802420743393032313?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2373604388319154209/posts/default/1802420743393032313?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/IgoogleDeveloperBlog/~3/1loIoFFcVFU/sandbox-prods-along.html" title="The sandbox prods along" /><author><name>Dan Holevoet</name><uri>http://www.blogger.com/profile/14663004239430136422</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="05811300668423425585" /></author><feedburner:origLink>http://igoogledeveloper.blogspot.com/2009/03/sandbox-prods-along.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0cBSXY6fSp7ImA9WxVWFUw.&quot;"><id>tag:blogger.com,1999:blog-2373604388319154209.post-8889296005613632166</id><published>2009-02-24T13:22:00.000-08:00</published><updated>2009-02-24T13:30:58.815-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-02-24T13:30:58.815-08:00</app:edited><title>Are you in the sandbox? Here's a quick way to check</title><content type="html">Can't figure out if your account is in the developer sandbox or not? Sometimes the "Welcome to the iGoogle Developer sandbox" message is obscured. Sometimes developers are confused about the behavior of the http://google.com/ig/sandbox page (which acts as a toggle, not just a redirect). And sometimes sandbox features aren't working properly, so that even if you are in the sandbox, it looks like you aren't.&lt;br /&gt;&lt;br /&gt;Here's a small &lt;a href="http://hosting.gmodules.com/ig/gadgets/file/117067035338337527472/sandbox.xml"&gt;gadget&lt;/a&gt; to provide a little heads up on the sandbox status. If you're in the sandbox, it lets you know and gives you a quick way to leave. If you're not, it gives you a quick way to enter. And, finally, if it thinks you are in the sandbox, but features don't seem to be working, it tells you that, too. Think of it as your personal sandbox valet.&lt;br /&gt;&lt;br /&gt;The exact behavior relies on the current rollout of features (and using the .com TLD), so it will likely need an update down the road as launches occur. Please test it, add it to your pages, and check the status message if things aren't working properly.&lt;br /&gt;&lt;br /&gt;For questions and comments, feel free to add to &lt;a href="http://groups.google.com/group/Google-Gadgets-API/browse_thread/thread/f4bfe0ade485823c"&gt;this thread&lt;/a&gt; in the forum.&lt;br /&gt;&lt;br /&gt;&lt;span class="byline-author"&gt;Posted by Dan Holevoet, Developer Programs&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2373604388319154209-8889296005613632166?l=igoogledeveloper.blogspot.com'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/IgoogleDeveloperBlog/~4/se80JoZzkSI" height="1" width="1"/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2373604388319154209/posts/default/8889296005613632166?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2373604388319154209/posts/default/8889296005613632166?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/IgoogleDeveloperBlog/~3/se80JoZzkSI/are-you-in-sandbox-heres-quick-way-to.html" title="Are you in the sandbox? Here's a quick way to check" /><author><name>Dan Holevoet</name><uri>http://www.blogger.com/profile/14663004239430136422</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="05811300668423425585" /></author><feedburner:origLink>http://igoogledeveloper.blogspot.com/2009/02/are-you-in-sandbox-heres-quick-way-to.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0EAR307eyp7ImA9WxVRF0g.&quot;"><id>tag:blogger.com,1999:blog-2373604388319154209.post-7197131816645211168</id><published>2009-01-23T14:56:00.000-08:00</published><updated>2009-01-23T15:00:46.303-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-01-23T15:00:46.303-08:00</app:edited><title>iGoogle's getting some changes under the hood</title><content type="html">If you've had a chance to look at &lt;a href="http://code.google.com/apis/gadgets/docs/dev_guide.html"&gt;recent gadgets documentation&lt;/a&gt;, or tried out the iGoogle developer sandbox, you're probably aware that gadgets.* is the new hotness. Sadly, the _IG_* methods are all that work in production.&lt;br /&gt;&lt;br /&gt;Starting within the next month, iGoogle will be undergoing some significant behind-the-scenes changes. The first recipients will be gadgets in open syndication, which will gain support for gadgets.*. We've worked hard to make sure gadgets work properly with the new architecture, and gadgets that use _IG_* methods should still function properly. However, there are two things that you, as a developer, should note.&lt;br /&gt;&lt;br /&gt;First, support for datatype=location is now deprecated, and you should use another method, such as the &lt;a href="http://code.google.com/apis/maps/documentation/services.html#Geocoding"&gt;Google Maps API geocoder&lt;/a&gt;, for positional data.&lt;br /&gt;&lt;br /&gt;Second, iGoogle will dynamically rewrite some HTML and JavaScript for faster loading and rendering times. While this is generally a good thing, some malformed HTML and JavaScript can cause problems. Make sure to wrap your JavaScript code as demonstrated by the following example to avoid many common issues:&lt;pre&gt;&lt;br /&gt;&amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&lt;br /&gt;&amp;lt;!--&lt;br /&gt;  // js code goes here...&lt;br /&gt;// --&amp;gt;&lt;br /&gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&lt;/pre&gt;As always, if you have issues, let us know 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;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2373604388319154209-7197131816645211168?l=igoogledeveloper.blogspot.com'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/IgoogleDeveloperBlog/~4/qGi9vjSt9qY" height="1" width="1"/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2373604388319154209/posts/default/7197131816645211168?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2373604388319154209/posts/default/7197131816645211168?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/IgoogleDeveloperBlog/~3/qGi9vjSt9qY/igoogles-getting-some-changes-under.html" title="iGoogle's getting some changes under the hood" /><author><name>Dan Holevoet</name><uri>http://www.blogger.com/profile/14663004239430136422</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="05811300668423425585" /></author><feedburner:origLink>http://igoogledeveloper.blogspot.com/2009/01/igoogles-getting-some-changes-under.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEMFQn06fip7ImA9WxVSGUo.&quot;"><id>tag:blogger.com,1999:blog-2373604388319154209.post-4189044141794900858</id><published>2009-01-14T14:29:00.000-08:00</published><updated>2009-01-14T14:33:33.316-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-01-14T14:33:33.316-08:00</app:edited><title>New ACLs on social features</title><content type="html">Up until today, gadgets installed in the iGoogle developer sandbox had implicit access to social data, with no way for users to opt-out without uninstalling the gadget.  We've added a feature to give more finely-grained control to users and allow users to explicitly grant or deny access to social data to their gadgets. &lt;br /&gt;&lt;br /&gt;When users install gadgets that use social data (indicated by requiring the OpenSocial feature), they will be prompted to give permission to access social data. If a gadget is released without social features and is upgraded, users will be prompted for access within the gadget when the new version is first rendered.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_xawoZs8ARtI/SW5njYLEHgI/AAAAAAAAABA/CDNl-HBlHVA/s1600-h/acl.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 59px;" src="http://2.bp.blogspot.com/_xawoZs8ARtI/SW5njYLEHgI/AAAAAAAAABA/CDNl-HBlHVA/s400/acl.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5291280469688851970" /&gt;&lt;/a&gt;&lt;br /&gt;When OpenSocial gadgets are available to all iGoogle users, users must grant permission before gadgets are allowed access to social data. For sandbox users, we want to ease development, so sandbox gadgets are allowed access to social data before confirmation.&lt;br /&gt;&lt;br /&gt;Developers, this is important, so take note. If users deny access to social data, the gadget should have a good error message and graceful fallback UI.&lt;br /&gt;&lt;br /&gt;Check for the ability to access social data with this snippet of code:&lt;br /&gt;&lt;br /&gt;gadgets.util.hasFeature("opensocial-0.8")&lt;br /&gt;&lt;br /&gt;and fall back gracefully if permission is not granted.&lt;br /&gt;&lt;br /&gt;If you have any questions, please join 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;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2373604388319154209-4189044141794900858?l=igoogledeveloper.blogspot.com'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/IgoogleDeveloperBlog/~4/re_lv0NZHFw" height="1" width="1"/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2373604388319154209/posts/default/4189044141794900858?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2373604388319154209/posts/default/4189044141794900858?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/IgoogleDeveloperBlog/~3/re_lv0NZHFw/new-acls-on-social-features.html" title="New ACLs on social features" /><author><name>Dan Holevoet</name><uri>http://www.blogger.com/profile/14663004239430136422</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="05811300668423425585" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/_xawoZs8ARtI/SW5njYLEHgI/AAAAAAAAABA/CDNl-HBlHVA/s72-c/acl.png" height="72" width="72" /><feedburner:origLink>http://igoogledeveloper.blogspot.com/2009/01/new-acls-on-social-features.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkEHRn47fCp7ImA9WxRaF04.&quot;"><id>tag:blogger.com,1999:blog-2373604388319154209.post-7185607227728917628</id><published>2008-12-19T15:41:00.000-08:00</published><updated>2008-12-19T15:50:37.004-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-12-19T15:50:37.004-08:00</app:edited><title>REST and RPC support in the developer sandbox</title><content type="html">If you've got &lt;a href="https://addons.mozilla.org/en-US/firefox/addon/1843"&gt;Firebug&lt;/a&gt; installed on your iGoogle page, you may have noticed how requests to fetch people, friends, or persistent data are formatted. These requests follow the &lt;a href="http://www.opensocial.org/Technical-Resources/opensocial-spec-v081/rpc-protocol"&gt;RPC specification&lt;/a&gt; that's part of OpenSocial, and, while they've been part of the sandbox for a few months now, never really deserved a mention, until today.&lt;br /&gt;&lt;br /&gt;We've &lt;a href="http://opensocialapis.blogspot.com/2008/12/opensocial-now-friends-with-php-java.html"&gt;just released&lt;/a&gt; four client libraries (&lt;a href="http://code.google.com/p/opensocial-java-client/"&gt;Java&lt;/a&gt;, &lt;a href="http://code.google.com/p/opensocial-php-client/"&gt;PHP&lt;/a&gt;, &lt;a href="http://code.google.com/p/opensocial-python-client/"&gt;Python&lt;/a&gt;, and &lt;a href="http://code.google.com/p/opensocial-ruby-client/"&gt;Ruby&lt;/a&gt;) for using these REST and RPC requests as part of your own gadgets. With these libraries, you can access social data without having to go through an iGoogle page (for instance, if you need to do offline processing), or even write an application without having to write any JavaScript.&lt;br /&gt;&lt;br /&gt;To get started, download the client of your choice and try the included samples, which work on a variety of OpenSocial containers. (For reference, the iGoogle endpoints are http://sandbox.gmodules.com/api for REST calls, and http://sandbox.gmodules.com/api/rpc for RPC calls.) When you're ready to do your own iGoogle development, &lt;a href="https://www.google.com/gadgets/directory/verify"&gt;register your application&lt;/a&gt; to get the authentication keys you'll need to use the API.&lt;br /&gt;&lt;br /&gt;If you have questions or comments, join us in the &lt;a href="http://groups.google.com/group/opensocial-client-libraries/topics"&gt;OpenSocial client libraries group&lt;/a&gt;. Have a RESTful (and RPCful) holiday season!&lt;br /&gt;&lt;br /&gt;&lt;span class="byline-author"&gt;Posted by Dan Holevoet, Developer Programs&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2373604388319154209-7185607227728917628?l=igoogledeveloper.blogspot.com'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/IgoogleDeveloperBlog/~4/jhyKwwK__jk" height="1" width="1"/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2373604388319154209/posts/default/7185607227728917628?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2373604388319154209/posts/default/7185607227728917628?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/IgoogleDeveloperBlog/~3/jhyKwwK__jk/rest-and-rpc-support-in-developer.html" title="REST and RPC support in the developer sandbox" /><author><name>Dan Holevoet</name><uri>http://www.blogger.com/profile/14663004239430136422</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="05811300668423425585" /></author><feedburner:origLink>http://igoogledeveloper.blogspot.com/2008/12/rest-and-rpc-support-in-developer.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0UASXYyfCp7ImA9WxRUEUw.&quot;"><id>tag:blogger.com,1999:blog-2373604388319154209.post-1742208486695211314</id><published>2008-11-19T10:20:00.000-08:00</published><updated>2008-11-19T10:27:28.894-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-11-19T10:27:28.894-08:00</app:edited><title>Sign in to MySpace, AOL Mail, and Google Books gadgets</title><content type="html">See your latest &lt;a href="http://www.google.com/ig/adde?moduleurl=x.myspacecdn.com/modules/common/static/xml/myspacegadget_01.xml"&gt;updates on MySpace&lt;/a&gt;, read and reply to messages in &lt;a href="http://www.google.com/ig/adde?moduleurl=o.aolcdn.com/cdnmailbox.webmail.aol.com/AOLGoogleGadget/OAuth/AOLMail.xml"&gt;AOL Mail&lt;/a&gt;, and keep track of your &lt;a href="http://www.google.com/ig/adde?moduleurl=www.google.com/ig/modules/books/library_gadget.xml"&gt;Google Book Search Library&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_xawoZs8ARtI/SSRaQngswHI/AAAAAAAAAA4/3U0eEF30aMI/s1600-h/chf5z8hh_2194fj9d2c6_b.gif"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 250px;" src="http://1.bp.blogspot.com/_xawoZs8ARtI/SSRaQngswHI/AAAAAAAAAA4/3U0eEF30aMI/s400/chf5z8hh_2194fj9d2c6_b.gif" border="0" alt=""id="BLOGGER_PHOTO_ID_5270436705460863090" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;These are the first three gadgets on iGoogle to use &lt;a href="http://code.google.com/apis/gadgets/docs/oauth.html"&gt;OAuth&lt;/a&gt;, which is a privacy-preserving security standard that defines how a user can give consent for their data on one website to be accessed by another website (or in this case a gadget).  iGoogle never sees the user's password on the other site, and the gadget displays the user's data from the other site without storing any of it on Google's own servers (read more details about OAuth on our &lt;a href="http://googleonlinesecurity.blogspot.com/2008/11/oauth-for-secure-mashups.html"&gt;Security Blog&lt;/a&gt;).  With these gadgets on iGoogle, users can now keep track of even more personalized information from across their online life.  For example, the &lt;a href="http://www.google.com/ig/adde?moduleurl=x.myspacecdn.com/modules/common/static/xml/myspacegadget_01.xml"&gt;MySpace gadget&lt;/a&gt; shows your friends' latest updates, status messages, bulletins, and an inbox preview.&lt;br /&gt;&lt;br /&gt;With the &lt;a href="http://www.google.com/ig/adde?moduleurl=o.aolcdn.com/cdnmailbox.webmail.aol.com/AOLGoogleGadget/OAuth/AOLMail.xml"&gt;AOL Mail gadget&lt;/a&gt;, you can preview all your email messages in home view.  In canvas view, read rich text email, compose, reply, delete, mark as spam, and more.  The gadget even includes autocomplete, attachments, spell check, and sorting options.  If you have an AOL Mail or AIM Mail account, you must try this gadget.&lt;br /&gt;&lt;br /&gt;The &lt;a href="http://www.google.com/ig/adde?moduleurl=www.google.com/ig/modules/books/library_gadget.xml"&gt;Google Book Search Library gadget&lt;/a&gt; allows you to keep track of all the books you want to read, and also offers you personalized recommendations.  Finding new books and removing books from your library is a snap.  You can even preview your books from right within iGoogle's canvas view.&lt;br /&gt;  &lt;br /&gt;These gadgets are also great examples of how to utilize the &lt;a href="http://igoogledeveloper.blogspot.com/2008/10/big-canvas-big-opportunity.html"&gt;canvas view&lt;/a&gt;, which launched last month on iGoogle.  If you want to create a gadget like AOL and MySpace, this &lt;a href="http://sites.google.com/site/oauthgoog/oauth-practices"&gt;overview&lt;/a&gt; will get you started on exposing an API that can be accessed using OAuth.  If you already know which OAuth enabled API you want to access, you can jump directly to the &lt;a href="http://code.google.com/apis/gadgets/docs/oauth.html"&gt;gadgets documentation&lt;/a&gt;.  &lt;br /&gt;&lt;br /&gt;&lt;span class="byline-author"&gt;Posted by Kevin Tom, Product Manager, iGoogle&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2373604388319154209-1742208486695211314?l=igoogledeveloper.blogspot.com'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/IgoogleDeveloperBlog/~4/u9gawnl7_iI" height="1" width="1"/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2373604388319154209/posts/default/1742208486695211314?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2373604388319154209/posts/default/1742208486695211314?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/IgoogleDeveloperBlog/~3/u9gawnl7_iI/sign-in-to-myspace-aol-mail-and-google.html" title="Sign in to MySpace, AOL Mail, and Google Books gadgets" /><author><name>Dan Holevoet</name><uri>http://www.blogger.com/profile/14663004239430136422</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="05811300668423425585" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_xawoZs8ARtI/SSRaQngswHI/AAAAAAAAAA4/3U0eEF30aMI/s72-c/chf5z8hh_2194fj9d2c6_b.gif" height="72" width="72" /><feedburner:origLink>http://igoogledeveloper.blogspot.com/2008/11/sign-in-to-myspace-aol-mail-and-google.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Dk8FSXc_cCp7ImA9WxRWEk8.&quot;"><id>tag:blogger.com,1999:blog-2373604388319154209.post-831112590161817347</id><published>2008-10-28T13:12:00.000-07:00</published><updated>2008-10-28T13:13:38.948-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-10-28T13:13:38.948-07:00</app:edited><title>The sandbox...it lives!</title><content type="html">After a slightly-longer-than-expected hiatus in the sandbox, the gadgets.* and opensocial.* APIs have been brought back from the dead, just in time for Halloween.&lt;br /&gt;&lt;br /&gt;Let &lt;span style="font-style: italic;"&gt;gadgets.util is undefined&lt;/span&gt; haunt you no more!&lt;br /&gt;&lt;br /&gt;&lt;span class="byline-author"&gt;Posted by Dan Holevoet, Developer Programs&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2373604388319154209-831112590161817347?l=igoogledeveloper.blogspot.com'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/IgoogleDeveloperBlog/~4/vtr9EwcCPoM" height="1" width="1"/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2373604388319154209/posts/default/831112590161817347?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2373604388319154209/posts/default/831112590161817347?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/IgoogleDeveloperBlog/~3/vtr9EwcCPoM/sandboxit-lives.html" title="The sandbox...it lives!" /><author><name>Dan Holevoet</name><uri>http://www.blogger.com/profile/14663004239430136422</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="05811300668423425585" /></author><feedburner:origLink>http://igoogledeveloper.blogspot.com/2008/10/sandboxit-lives.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkUASXo7cSp7ImA9WxRXE00.&quot;"><id>tag:blogger.com,1999:blog-2373604388319154209.post-1619604045481556881</id><published>2008-10-17T20:20:00.000-07:00</published><updated>2008-10-17T20:24:08.409-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-10-17T20:24:08.409-07:00</app:edited><title>For every action...</title><content type="html">...there is an equal and opposite reaction. But, even Newton might not have foreseen that when pushing changes to iGoogle, we'd temporarily disable social functionality in the iGoogle developer sandbox. Access to the gadgets.* and OpenSocial APIs should return on Tuesday, along with a properly functioning developer gadget.&lt;br /&gt;&lt;br /&gt;In the interim, watch out for falling apples, and I'll see everyone on Tuesday.&lt;br /&gt;&lt;br /&gt;&lt;span class="byline-author"&gt;Posted by Dan Holevoet, Developer Programs&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2373604388319154209-1619604045481556881?l=igoogledeveloper.blogspot.com'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/IgoogleDeveloperBlog/~4/fbGqhWWiqs0" height="1" width="1"/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2373604388319154209/posts/default/1619604045481556881?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2373604388319154209/posts/default/1619604045481556881?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/IgoogleDeveloperBlog/~3/fbGqhWWiqs0/for-every-action.html" title="For every action..." /><author><name>Dan Holevoet</name><uri>http://www.blogger.com/profile/14663004239430136422</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="05811300668423425585" /></author><feedburner:origLink>http://igoogledeveloper.blogspot.com/2008/10/for-every-action.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEIESH85fyp7ImA9WxRXEUo.&quot;"><id>tag:blogger.com,1999:blog-2373604388319154209.post-6401123946968682209</id><published>2008-10-16T09:52:00.000-07:00</published><updated>2008-10-16T10:01:49.127-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-10-16T10:01:49.127-07:00</app:edited><title>Big canvas, big opportunity</title><content type="html">Some artists say that a blank canvas is daunting.  We think of it as an opportunity, which is why we’re excited to be launching the canvas view feature to &lt;a href="http://www.google.com/ig"&gt;iGoogle&lt;/a&gt; users.  Canvas view will roll out to users in the U.S. over the course of the day, and to international users in the near future.&lt;br /&gt;&lt;br /&gt;Canvas view allows developers to deliver richer content, games, and UI to users on iGoogle as well as the opportunity to monetize.  We’ve seen a lot of great development in the sandbox already, and we are proud to highlight several of our developers' &lt;a href="http://www.google.com/ig/v2landing"&gt;canvas view gadgets&lt;/a&gt;.  To start building a canvas view, check out our &lt;a href="http://sites.google.com/site/igcanvas"&gt;how to guide&lt;/a&gt;, which includes sample code for views, latency tips, and suggested design principles.&lt;br /&gt;&lt;br /&gt;In addition to canvas view, we’re also replacing the tab interface with the left navigation seen in the sandbox.  This allows users to jump from one canvas view to another with only one click.  Going forward, we're working hard to graduate more functionality out of the sandbox and into production, such as OpenSocial.&lt;br /&gt;&lt;br /&gt;Giving developers new opportunities makes for better gadgets, which is ultimately great for users.  We’re eager to see what you create.  If you have any questions, please join the &lt;a href="http://groups.google.com/group/Google-Gadgets-API"&gt;developer forum&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Happy coding!&lt;br /&gt;&lt;br /&gt;&lt;span class="byline-author"&gt;Posted by Jake Quist, iGoogle engineer&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2373604388319154209-6401123946968682209?l=igoogledeveloper.blogspot.com'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/IgoogleDeveloperBlog/~4/VG4z0XNIh4M" height="1" width="1"/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2373604388319154209/posts/default/6401123946968682209?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2373604388319154209/posts/default/6401123946968682209?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/IgoogleDeveloperBlog/~3/VG4z0XNIh4M/big-canvas-big-opportunity.html" title="Big canvas, big opportunity" /><author><name>Dan Holevoet</name><uri>http://www.blogger.com/profile/14663004239430136422</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="05811300668423425585" /></author><feedburner:origLink>http://igoogledeveloper.blogspot.com/2008/10/big-canvas-big-opportunity.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUcDQns5fSp7ImA9WxRRFEs.&quot;"><id>tag:blogger.com,1999:blog-2373604388319154209.post-1325095266341043405</id><published>2008-09-26T13:56:00.000-07:00</published><updated>2008-09-26T14:04:33.525-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-09-26T14:04:33.525-07:00</app:edited><title>What's the difference among friends?</title><content type="html">I'm excited to announce that we've launched two important changes to the iGoogle developer sandbox.  First, we have done a major upgrade on the sandbox friends manager that allows you to import, search and create groups of contacts. To share items with a contact, make sure you are in the iGoogle sandbox, and add a contact to the group called "Friends." If you already have the sandbox friends gadget installed, it should automatically upgrade. If not, you can add it &lt;a href="http://www.google.com/ig/directory?url=hosting.gmodules.com/ig/gadgets/file/105542374478112771668/sandbox-friends.xml"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;For development purposes, if you are sharing with friends in Google Reader, the same contacts in your "Friends" group in Reader will also be in your "Friends" group in the iGoogle sandbox.  Your old sandbox friends will have to be added again to the "Friends" group.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_xawoZs8ARtI/SN1NA_J-rQI/AAAAAAAAAAU/Acs3IIiPqmI/s1600-h/sandbox_friends.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://1.bp.blogspot.com/_xawoZs8ARtI/SN1NA_J-rQI/AAAAAAAAAAU/Acs3IIiPqmI/s400/sandbox_friends.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5250437419932495106" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;In conjunction with the new sandbox friends manager, we are also changing what people and sharing calls return.  You can now share content with contacts in your "Friends" group, even if those contacts have not added you to their "Friends" group.  For example:&lt;br /&gt;&lt;pre&gt;var req = opensocial.newDataRequest();&lt;br /&gt;req.add(req.newFetchPeopleRequest("VIEWER_FRIENDS"), "friends");&lt;br /&gt;req.send(response);&lt;/pre&gt;&lt;br /&gt;Will now return some friends with ids, and some friends without.  Friends with ids are those who have you in their "Friends" group, while friends without ids do not.&lt;br /&gt;&lt;pre&gt;function response(data) {&lt;br /&gt;  var friends = data.get("friends").getData();&lt;br /&gt;  friends.each(function(person) {&lt;br /&gt;    if (person.getId()) {&lt;br /&gt;      alert(person.getDisplayName() + " is a mutual friend.");&lt;br /&gt;    } else {&lt;br /&gt;      alert(person.getDisplayName() + " hasn't put you in their \"Friends\" group."); &lt;br /&gt;    }&lt;br /&gt;  });&lt;br /&gt;};&lt;/pre&gt;&lt;br /&gt;When you post an update, it will be viewable to any person in your "Friends" group.&lt;br /&gt;&lt;br /&gt;If you have any questions about these changes, feel free to contact us in the &lt;a href="http://groups.google.com/group/Google-Gadgets-API"&gt;developer forum&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span class="byline-author"&gt;Posted by Kevin Tom, Product Manager&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2373604388319154209-1325095266341043405?l=igoogledeveloper.blogspot.com'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/IgoogleDeveloperBlog/~4/uyMJKWilGgk" height="1" width="1"/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2373604388319154209/posts/default/1325095266341043405?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2373604388319154209/posts/default/1325095266341043405?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/IgoogleDeveloperBlog/~3/uyMJKWilGgk/whats-difference-among-friends.html" title="What's the difference among friends?" /><author><name>Dan Holevoet</name><uri>http://www.blogger.com/profile/14663004239430136422</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="05811300668423425585" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_xawoZs8ARtI/SN1NA_J-rQI/AAAAAAAAAAU/Acs3IIiPqmI/s72-c/sandbox_friends.png" height="72" width="72" /><feedburner:origLink>http://igoogledeveloper.blogspot.com/2008/09/whats-difference-among-friends.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUIESX84fCp7ImA9WxRSFkw.&quot;"><id>tag:blogger.com,1999:blog-2373604388319154209.post-345561474110619089</id><published>2008-09-16T18:02:00.000-07:00</published><updated>2008-09-16T18:05:08.134-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-09-16T18:05:08.134-07:00</app:edited><title>Getting ready for the canvas view</title><content type="html">It's been a few weeks since I've provided an update on the status of the canvas view launch. Our experiments with a small percentage of users have been going well, and we've been making some small changes and adjustments based on user feedback (such as reducing the width of the left nav). In the next few weeks we plan on ramping up the number of US English users with the canvas view.&lt;br /&gt;&lt;br /&gt;In anticipation of this, we're going to hold a special IRC event on improving existing gadgets by adding a canvas view. During the two hour session, show us your XML and we'll offer suggestions on how you can turn it into a great canvas view gadget. And of course, its a great time to work through any issues you are having in developing canvas view gadgets.  To join us, visit the #opensocial channel on irc.freenode.net next Tuesday (9/23) from 1-3 PDT. See you then!&lt;br /&gt;&lt;br /&gt;&lt;span class="byline-author"&gt;Posted by Dan Holevoet, Developer Programs&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2373604388319154209-345561474110619089?l=igoogledeveloper.blogspot.com'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/IgoogleDeveloperBlog/~4/462bCQhdrwk" height="1" width="1"/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2373604388319154209/posts/default/345561474110619089?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2373604388319154209/posts/default/345561474110619089?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/IgoogleDeveloperBlog/~3/462bCQhdrwk/getting-ready-for-canvas-view.html" title="Getting ready for the canvas view" /><author><name>Dan Holevoet</name><uri>http://www.blogger.com/profile/14663004239430136422</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="05811300668423425585" /></author><feedburner:origLink>http://igoogledeveloper.blogspot.com/2008/09/getting-ready-for-canvas-view.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0YEQ3w-fyp7ImA9WxdaEUo.&quot;"><id>tag:blogger.com,1999:blog-2373604388319154209.post-3547554520427899938</id><published>2008-08-19T11:37:00.000-07:00</published><updated>2008-08-19T11:38:22.257-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-08-19T11:38:22.257-07:00</app:edited><title>Cleaning the sandbox</title><content type="html">&lt;span class="byline-author"&gt;Posted by Dan Holevoet, Developer Programs&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;As a quick heads-up, we'll be pushing a new implementation of the persistence API to the iGoogle sandbox.  When this happens, it will effectively clear the data storage of any OpenSocial applications in the sandbox. Data stored in preferences will not be affected, nor will any data of applications in production.&lt;br /&gt;&lt;br /&gt;Enjoy the fresh, clean scent of an empty datastore, and let us know if you encounter any issues in the &lt;a href="http://groups.google.com/group/Google-Gadgets-API/"&gt;iGoogle Developer Forum&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2373604388319154209-3547554520427899938?l=igoogledeveloper.blogspot.com'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/IgoogleDeveloperBlog/~4/UsF1CBRaodg" height="1" width="1"/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2373604388319154209/posts/default/3547554520427899938?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2373604388319154209/posts/default/3547554520427899938?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/IgoogleDeveloperBlog/~3/UsF1CBRaodg/cleaning-sandbox.html" title="Cleaning the sandbox" /><author><name>Dan Holevoet</name><uri>http://www.blogger.com/profile/14663004239430136422</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="05811300668423425585" /></author><feedburner:origLink>http://igoogledeveloper.blogspot.com/2008/08/cleaning-sandbox.html</feedburner:origLink></entry></feed>
