{
  "id": 2440176,
  "title": "My First UWA Widget for Netvibes and iGoogle (2009)",
  "url": "https://urgent.news/2026/08/21/my-first-uwa-widget-for-netvibes-and-igoogle-2009",
  "topic": "tech",
  "section": "Tech",
  "published": "2026-08-21T22:04:16.000Z",
  "source": {
    "name": "Dev.to",
    "slug": "dev-to",
    "url": "https://dev.to/hamdi_laadhari/my-first-uwa-widget-for-netvibes-and-igoogle-2009-2mln"
  },
  "original_language": "en",
  "account": "On January 18, 2009, a developer shared their first UWA widget for Netvibes and iGoogle, which they created to display air times for their regularly watched TV shows. The widget employed a mashup approach, utilizing a service from TVRage to fetch personalized RSS feeds of airing shows. These feeds were messy and inconsistent, requiring additional effort to aggregate them into a clean format. To expedite the widget's development, the author wrote a small PHP5 API to process the feed and sort the data. Although a UWA/JS parser provided by Netvibes existed, the author opted for the PHP solution, as they weren't planning to distribute the widget. The widget required three parameters: the tid and hash from the personalized feed URL, and the API endpoint. Today, Netvibes, iGoogle, TVRage, and UWA have all disappeared, but the approach of aggregating a messy feed into a clean personal widget remains relevant.",
  "summary": "Archival repost — originally published on my old blog on January 18, 2009. Lightly cleaned up for dev.to (translated from French; I also dropped my personal TVRage feed hash from the example URL rather than repost a token — TVRage itself shut down years ago anyway). Netvibes and iGoogle are both long gone as platforms and the UWA widget format died with them, but the \"aggregate a messy feed into…",
  "key_points": [
    "Developer created first UWA widget for Netvibes and iGoogle in 2009",
    "Widget used TVRage service to fetch personalized RSS feeds of TV shows",
    "PHP API developed to process messy feeds and sort data for clean widget"
  ],
  "editors_take": null,
  "illustration": null,
  "coverage": {
    "outlets": 1,
    "also_reported_by": []
  },
  "ai_generated": true,
  "disclaimer": "Summaries, key points and the editor’s take are written by software from other outlets’ reporting and may contain errors — always check the linked original."
}