<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet href="http://blogs.forum.nokia.com/styles/rss.css" type="text/css"?>
<rss version="2.0" 
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"
>
 <channel>
  <title>Widget Workshop&#039;s Forum Nokia Blog</title>
  <link>http://blogs.forum.nokia.com/blog/widget-workshops-forum-nokia-blog</link>
  <description>A Forum Nokia Blog</description>
  <pubDate>Mon, 23 Nov 2009 14:43:43 +0200</pubDate>
  <generator>http://www.lifetype.net</generator>
  <itunes:author>Forum Nokia</itunes:author>
  <itunes:category text="Technology">
    <itunes:category text="Tech News"/>
  </itunes:category>
  <itunes:image href="http://www.forum.nokia.com/piazza/blogs/imgs/forum_nokia_rss_logo.jpg"/>
    <item>
   <title>Developing our first widget: Bombus</title>
   <description>
    Firstly, sorry for the delay in writing up the next installment of our S2F blog - we found it difficult to develop and blog simultaneously. So, with that in mind, let&#039;s start with a confession:&lt;br /&gt;
&lt;br /&gt;
The game&#039;s already finished! It&#039;s called Bombus, and as promised, it&#039;s a side-scrolling arcade game. &lt;br /&gt;
&lt;br /&gt;
&lt;img height=&quot;210&quot; alt=&quot;Bombus screenshots&quot; width=&quot;532&quot; align=&quot;middle&quot; src=&quot;http://blogs.forum.nokia.com/file.html?id=569&amp;amp;file=screenshots.png&quot; /&gt; &lt;br /&gt;
&lt;br /&gt;
Here&#039;s a video showing the gameplay:&lt;br /&gt;
&lt;object width=&quot;425&quot; height=&quot;350&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://www.youtube.com/v/aVQIUtLzZAg&quot;&gt;&lt;/param&gt;&lt;param name=&quot;wmode&quot; value=&quot;transparent&quot;&gt;&lt;/param&gt;&lt;embed src=&quot;http://www.youtube.com/v/aVQIUtLzZAg&quot; type=&quot;application/x-shockwave-flash&quot; wmode=&quot;transparent&quot; width=&quot;425&quot; height=&quot;350&quot;&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;
Whilst developing the game we took notes, but to do each blog entry justice (by including a write-up after the end of each step) would have resulted in delaying the completion date significantly.&lt;br /&gt;
&lt;br /&gt;
However, we now have some free time to write down our experiences, and more importantly, share some code. So whilst this might go against the S2F ethos slightly, we hope you can forgive us and hopefully seeing how the game turned out will help.&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;1. Getting started&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
Our first step was to download the SDK from the &lt;a target=&quot;undefined&quot; href=&quot;http://developer.widsets.com/wiki/Main_Page&quot;&gt;WidSets wiki&lt;/a&gt;. The wiki is an invaluable source of information containing general development guides as well as scripting and configuration documentation. The &lt;a target=&quot;undefined&quot; href=&quot;http://dev.widsets.com/forum/&quot;&gt;WidSets developer forum&lt;/a&gt; also proved useful as members of the WidSets team seem to visit often and are quick to offer help and advice.&lt;br /&gt;
&lt;br /&gt;
The SDK consists of a set of command-line tools for compiling, invoking the emulator, uploading widgets etc (&lt;a target=&quot;undefined&quot; href=&quot;https://dev.widsets.com/wiki/WidSets_SDK&quot;&gt;WidSets SDK wiki article&lt;/a&gt;). We used &lt;a target=&quot;undefined&quot; href=&quot;http://www.ultraedit.com/&quot;&gt;UltraEdit &lt;/a&gt;as our IDE, which is essentially a powerful text-editor. The SDK contains a syntax highlighting file for UltraEdit which helps with code readability. With the SDK installed, we encountered our first minor problem: widgets are distributed centrally from the WidSets server, so in order to login and subsequently upload/publish widgets, a connection to the server is necessary. Here at Lancaster University, we sit behind a proxy server, so we had to define our connection settings before we could connect.&lt;br /&gt;
&lt;br /&gt;
So instead of:&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;&amp;gt; devkit login username password&lt;/pre&gt;
&lt;br /&gt;
We had to use:&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;&amp;gt; devkit --proxy wwwcache.lancs.ac.uk:8080 --auth user1 pass1 login user2 pass2&lt;/pre&gt;
&lt;br /&gt;
Where &lt;em&gt;user1 &lt;/em&gt;and &lt;em&gt;pass1 &lt;/em&gt;are our proxy authentication details and &lt;em&gt;user2 &lt;/em&gt;and &lt;em&gt;pass2 &lt;/em&gt;are our WidSets username and password (the proxy need only needs to be defined once). To register a developer account at WidSets, we visited &lt;a target=&quot;undefined&quot; href=&quot;http://dev.widsets.com/install&quot;&gt;http://dev.widsets.com/install&lt;/a&gt; - currently this link isn&amp;#8217;t easy to find on the main site. N.B. The WidSets developer client is different to the regular client.&lt;br /&gt;
&lt;br /&gt;
After following the guides on the wiki, checking out a few of the &lt;a target=&quot;undefined&quot; href=&quot;https://dev.widsets.com/wiki/Widget_examples&quot;&gt;examples&lt;/a&gt; and with the &lt;a target=&quot;undefined&quot; href=&quot;https://dev.widsets.com/apidocs&quot;&gt;scripting&lt;/a&gt;, &lt;a target=&quot;undefined&quot; href=&quot;https://dev.widsets.com/wiki/Widget_Configuration_2.0&quot;&gt;configuration &lt;/a&gt;and &lt;a target=&quot;undefined&quot; href=&quot;https://dev.widsets.com/wiki/Stylesheet&quot;&gt;stylesheet &lt;/a&gt;documentation open in the browser, we were ready to start.&lt;br /&gt;
&lt;br /&gt;
We used the &lt;em&gt;Hello World&lt;/em&gt; (found in &lt;em&gt;examples/hello_world&lt;/em&gt;) example as the starting template for our own widget. Copying all the files from this directory to our working directory (bombus/) allowed us to bootstrap the development. The wiki provides a good overview of the files to are need to make up a widget &lt;a target=&quot;undefined&quot; href=&quot;https://dev.widsets.com/wiki/Widget_files&quot;&gt;here&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
Here&#039;s what the first version of Bombus looked like...&lt;br /&gt;
&lt;br /&gt;
&lt;img height=&quot;210&quot; alt=&quot;Screenshots first step&quot; width=&quot;355&quot; src=&quot;http://blogs.forum.nokia.com/file.html?id=570&amp;amp;file=bombus-1.png&quot; /&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Not much of a game yet, but we can get an idea of where our game content will be (on the blue canvas). The important files used to create this version are listed below.&lt;br /&gt;
&lt;br /&gt;
Configuration file (widget.xml):&lt;br /&gt;
&lt;pre style=&quot;border-right: black 1px solid; padding-right: 10px; border-top: black 1px solid; padding-left: 10px; padding-bottom: 10px; margin: 20px; border-left: black 1px solid; padding-top: 10px; border-bottom: black 1px solid&quot;&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&amp;gt;&lt;br /&gt;&amp;lt;widget spec_version=&quot;2.0&quot;&amp;gt;&lt;br /&gt;  &amp;lt;info&amp;gt;&lt;br /&gt;    &amp;lt;name&amp;gt;Bombus&amp;lt;/name&amp;gt;&lt;br /&gt;    &amp;lt;version&amp;gt;0.1&amp;lt;/version&amp;gt;&lt;br /&gt;    &amp;lt;author&amp;gt;Widget Workshop&amp;lt;/author&amp;gt;&lt;br /&gt;    &amp;lt;shortdescription&amp;gt;&lt;br /&gt;      A one button side scrolling arcade game&lt;br /&gt;    &amp;lt;/shortdescription&amp;gt;&lt;br /&gt;    &amp;lt;longdescription&amp;gt;&lt;br /&gt;      Guide Bombus through the cave.&lt;br /&gt;    &amp;lt;/longdescription&amp;gt;&lt;br /&gt;    &amp;lt;tags&amp;gt;&lt;br /&gt;      bombus game arcade side scrolling one button&lt;br /&gt;    &amp;lt;/tags&amp;gt;&lt;br /&gt;  &amp;lt;/info&amp;gt;&lt;br /&gt;  &amp;lt;parameters&amp;gt;&lt;br /&gt;    &amp;lt;parameter&lt;br /&gt;      type=&quot;string&quot;&lt;br /&gt;      name=&quot;widgetname&quot;&lt;br /&gt;      description=&quot;Name of widget&quot;&lt;br /&gt;      help=&quot;This is the name of the widget&quot;&lt;br /&gt;      editable=&quot;false&quot;&lt;br /&gt;      visible=&quot;true&quot;&amp;gt;&lt;br /&gt;      Bombus&lt;br /&gt;    &amp;lt;/parameter&amp;gt;&lt;br /&gt;  &amp;lt;/parameters&amp;gt;&lt;br /&gt;  &amp;lt;resources&amp;gt;&lt;br /&gt;    &amp;lt;code src=&quot;bombus.he&quot;/&amp;gt;&lt;br /&gt;    &amp;lt;stylesheet src=&quot;style.css&quot;/&amp;gt;&lt;br /&gt;    &amp;lt;img src=&quot;mobile_radicals.png&quot; scale=&quot;false&quot; /&amp;gt;&lt;br /&gt;  &amp;lt;/resources&amp;gt;&lt;br /&gt;  &amp;lt;layout minimizedheight=&quot;3em&quot;&amp;gt;&lt;br /&gt;    &amp;lt;view id=&quot;viewMini&quot;&amp;gt;&lt;br /&gt;      &amp;lt;label class=&quot;outerFrame&quot;&amp;gt;Bombus&amp;lt;/label&amp;gt;&lt;br /&gt;    &amp;lt;/view&amp;gt;&lt;br /&gt;    &amp;lt;view id=&quot;viewMain&quot;&amp;gt;&lt;br /&gt;      &amp;lt;script id=&quot;gameView&quot; /&amp;gt;&lt;br /&gt;    &amp;lt;/view&amp;gt;&lt;br /&gt;  &amp;lt;/layout&amp;gt;&lt;br /&gt;&amp;lt;/widget&amp;gt;&lt;/pre&gt;
Helium script (bombus.he):
&lt;pre style=&quot;border-right: black 1px solid; padding-right: 10px; border-top: black 1px solid; padding-left: 10px; padding-bottom: 10px; margin: 20px; border-left: black 1px solid; padding-top: 10px; border-bottom: black 1px solid&quot;&gt;class {&lt;br /&gt;    &lt;br /&gt;  // Command IDs&lt;br /&gt;  const int CMD_BACK = 1;&lt;br /&gt;  const int CMD_NEW_GAME = 10;&lt;br /&gt;  const int CMD_INSTRUCTIONS = 11;&lt;br /&gt;  const int CMD_ABOUT = 12;&lt;br /&gt;  &lt;br /&gt;  // Member vars.&lt;br /&gt;  Shell gameShell;&lt;br /&gt;  Flow gameFlow;&lt;br /&gt;  Canvas gameCanvas;&lt;br /&gt;&lt;br /&gt;  // Menu items (mapped to softkeys)&lt;br /&gt;  MenuItem BACK = new MenuItem(CMD_BACK, &quot;Back&quot;);&lt;br /&gt;  MenuItem OPTIONS = new MenuItem(OPEN_MENU, &quot;Options&quot;);&lt;br /&gt;&lt;br /&gt;  // Create options menu (using chaining)&lt;br /&gt;  Menu MENU = new Menu()&lt;br /&gt;    .add(CMD_NEW_GAME, &quot;New game&quot;)&lt;br /&gt;    .add(CMD_INSTRUCTIONS, &quot;Instructions&quot;)&lt;br /&gt;    .add(CMD_ABOUT, &quot;About&quot;);&lt;br /&gt;&lt;br /&gt;  // Push shell onto screen&lt;br /&gt;  void showShell(Shell shell) {&lt;br /&gt;    int w, int h = getScreenSize();&lt;br /&gt;    slideIn(-w, 0, w, h, shell);&lt;br /&gt;  }&lt;br /&gt;  &lt;br /&gt;  // Pop shell off screen&lt;br /&gt;  void hideShell(Shell shell) {&lt;br /&gt;    int w, int h = getScreenSize();&lt;br /&gt;    slideOut(w, 0, w, h, shell);&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  // Called for each view element&lt;br /&gt;  Component createElement(&lt;br /&gt;    String viewId, String elementId, Style s, Object o) {&lt;br /&gt;    &lt;br /&gt;    if(elementId.equals(&quot;gameView&quot;)) {&lt;br /&gt;      &lt;br /&gt;      gameFlow = new Flow(getStyle(&quot;outerFrame&quot;));&lt;br /&gt;      gameCanvas = new Canvas(getStyle(&quot;default&quot;));&lt;br /&gt;      gameCanvas.setPreferredSize(-50, -50);&lt;br /&gt;      gameFlow.add(gameCanvas);&lt;br /&gt;&lt;br /&gt;      return gameFlow;&lt;br /&gt;&lt;br /&gt;    }&lt;br /&gt;    return null;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  // Create minimized view&lt;br /&gt;  void startWidget() {&lt;br /&gt;    setMinimizedView(createView(&quot;viewMini&quot;, null));&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  void stopWidget() {} // Stop&lt;br /&gt;&lt;br /&gt;  // Create maximized view when the widget is opened&lt;br /&gt;  Shell openWidget() {&lt;br /&gt;    gameShell = new Shell(createView(&quot;viewMain&quot;, null));&lt;br /&gt;    showShell(gameShell); // Show main shell&lt;br /&gt;    return null; // We&#039;ve already push shell into view&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  // Release resources&lt;br /&gt;  void closeWidget() {&lt;br /&gt;    gameCanvas = null;&lt;br /&gt;    gameFlow = null;&lt;br /&gt;    gameShell = null;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  // Paint the gameCanvas&lt;br /&gt;  void paint(Component c, Graphics g, Style s, int w, int h) {&lt;br /&gt;    g.setColor(0x0000FF);&lt;br /&gt;    g.fillRect(0, 0, w, h);&lt;br /&gt;    g.setColor(0xFFFFFF);&lt;br /&gt;    g.drawString(&lt;br /&gt;      &quot;Our canvas!&quot;, w / 2,  h / 2, HCENTER | TOP);&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  // Get the menu&lt;br /&gt;  Menu getMenu(Shell shell, Component source) {&lt;br /&gt;    return MENU;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  // Softkey event handler&lt;br /&gt;  MenuItem getSoftKey(Shell shell, Component focused, int key) {&lt;br /&gt;    if(key == SOFTKEY_OK)&lt;br /&gt;      return OPTIONS;&lt;br /&gt;    else if(key == SOFTKEY_BACK)&lt;br /&gt;      return BACK;&lt;br /&gt;    return null;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;  // Key event handler&lt;br /&gt;  boolean keyAction(Component source, int op, int code) {&lt;br /&gt;    return false; // Key event not consumed&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  // Action event handler&lt;br /&gt;  void actionPerformed(Shell shell, Component source, int action) {&lt;br /&gt;    &lt;br /&gt;    switch(action) {&lt;br /&gt;      case CMD_NEW_GAME:&lt;br /&gt;        break;&lt;br /&gt;      case CMD_INSTRUCTIONS:&lt;br /&gt;        break;&lt;br /&gt;      case CMD_ABOUT: // Display &#039;about&#039; info.&lt;br /&gt;        setBubble(&lt;br /&gt;          getImage(&quot;mobile_radicals.png&quot;),&lt;br /&gt;          &quot;Bombusnmobileradicals.com&quot;);&lt;br /&gt;        break;&lt;br /&gt;      case CMD_BACK:&lt;br /&gt;        // Pop shell&lt;br /&gt;        hideShell(shell);&lt;br /&gt;        break;&lt;br /&gt;    }&lt;br /&gt;  }&lt;br /&gt;}&lt;/pre&gt;
Stylesheet (style.css):
&lt;pre style=&quot;border-right: black 1px solid; padding-right: 10px; border-top: black 1px solid; padding-left: 10px; padding-bottom: 10px; margin: 20px; border-left: black 1px solid; padding-top: 10px; border-bottom: black 1px solid&quot;&gt;outerFrame {&lt;br /&gt;  align: hcenter vcenter;&lt;br /&gt;  background: solid #000000;&lt;br /&gt;  color: #FFFFFF;&lt;br /&gt;  width: 100%;&lt;br /&gt;}&lt;/pre&gt;
Please note, blogs after this will not post complete source listings, but instead provide important fragments that demonstrate key game concepts.
   </description>
   <link>http://blogs.forum.nokia.com/blog/widget-workshops-forum-nokia-blog/2007/09/20/developing-our-first-widget-bombus</link>
   <comments>http://blogs.forum.nokia.com/blog/widget-workshops-forum-nokia-blog/2007/09/20/developing-our-first-widget-bombus</comments>
   <guid>http://blogs.forum.nokia.com/blog/widget-workshops-forum-nokia-blog/2007/09/20/developing-our-first-widget-bombus</guid>
      <dc:creator>mobileradicals</dc:creator>
      
    <category>Browsing</category>
      
    <category>Games</category>
      
    <category>Java</category>
         <pubDate>Thu, 20 Sep 2007 12:33:32 +0300</pubDate>
   <itunes:author>Forum Nokia</itunes:author>
   <itunes:subtitle>Developing our first widget: Bombus</itunes:subtitle>
   <source url="http://blogs.forum.nokia.com/rss.php?blogId=107720&amp;profile=rss20">Widget Workshop&#039;s Forum Nokia Blog</source>
     </item>
    <item>
   <title>Game On (down the widget rabbit hole)</title>
   <description>
    &lt;img src=&quot;https://www.widsets.com/3739.res&quot; alt=&quot;Breakout clone&quot; style=&quot;float: right; margin-left: 16px&quot; /&gt;Since announcement of the blog, we have been having conversations on what to develop as our first widget. Our initial thoughts were to develop some form of photo viewer for &lt;a href=&quot;http://www.m3dcam.com&quot; target=&quot;undefined&quot;&gt;m3Dcam&lt;/a&gt;, feeding in to the latest photos submitted to the site. This represents the functionality of a typical widget (accessing RSS text/image feeds).&amp;#160; However, we&amp;#8217;ve decided it would be more interesting (for us at least) to develop a widget that is not represented by those currently available; &lt;strong&gt;a side scrolling arcade game&lt;/strong&gt;. When we last checked, the only other example of a real-time (RT) game was a &lt;a href=&quot;http://www.widsets.com/widgets?publicwidgetid=W1602&quot; target=&quot;undefined&quot;&gt;Breakout&lt;/a&gt; clone (screenshot shown right).&lt;br /&gt;
&lt;br /&gt;
There are a few factors that might explain the lack of this type of game:&lt;br /&gt;
&lt;ul&gt;
    &lt;li&gt;The WidSets framework is compatible with a wide-range of mobile phones (most phones supporting MIDP 2.0/CLDC 1.0+). This includes fairly basic phones that are now a few years old, so they might be lacking in resources that real-time games are so keen to consume, such as processor cycles and memory. WidSets widgets are distributed centrally, and are only made available for download if they are deemed as robust and generally suitable for public use by the WidSets team. A greedy widget could potentially compromise the stability and responsiveness of the Java ME based WidSets framework, so may be rejected on this basis.&lt;/li&gt;
    &lt;li&gt;Creating a real-time game is not a trivial undertaking on any platform and the WidSets framework is tailored more toward applications that make use of internet connectivity rather than (real-time) games.&lt;/li&gt;
&lt;/ul&gt;
So whilst most widgets are understandably oriented toward accessing internet information and services, we think there&amp;#8217;s a case to be made for more diverse (and trivial) widgets, such as games. So why use the WidSets framework instead of creating a Java ME game? The answer is simple; &lt;strong&gt;distribution&lt;/strong&gt;. Independent developers, like us, can create widgets which are catalogued and available for download (via the library widget) alongside those created by larger, more established companies/organisations and it&amp;#8217;s more likely a widget will be downloaded on merit rather than because of a connection to a popular IP, brand, or due to marketing/affiliation etc. Whilst we intend our game to be single-player affair, we could take advantage of some the inherent connectivity of WidSets by perhaps implementing a shared high-score table.&lt;br /&gt;
&lt;br /&gt;
Having decided on creating a game, the next step is our design criteria. Different phones have different performance characteristics. The three main factors which will determine how level our playing field is are; &lt;strong&gt;screen resolution&lt;/strong&gt; (1), &lt;strong&gt;input mechanism&lt;/strong&gt; (2) and &lt;strong&gt;framerate&lt;/strong&gt; (3). So, with this in mind, how are we going to keep the experience consistent across different phone models, which is necessary in order to compare the scores of different users?&lt;br /&gt;
&lt;ol&gt;
    &lt;li&gt;In order to cater for different resolutions, we&amp;#8217;ll use graphics primitives such as lines, rectangles and triangles. In this way, we can easily scale the graphics in proportion to the display dimension in way that&amp;#8217;s not feasible using bitmap graphics. Instead of considering this as a limitation, we&amp;#8217;ll try and use this as a feature by recreating a retro vector game look and feel. Drawing graphics primitives is also generally a lot faster than drawing bitmapped graphics.&lt;/li&gt;
    &lt;li&gt;Different phone models have different keypad layouts, ergonomics, number of keys etc. We&amp;#8217;ll accommodate for this by using a single button interface to control the game. Nokia themselves are proponents of single-button games and have produced an interesting article entitled &lt;a href=&quot;http://www.forum.nokia.com/info/sw.nokia.com/id/8dff4326-3979-4149-96c0-5fa95a14a3cb/Turn_Limitation_into_Strength_Design_One-Button_Games_v1_0_en.pdf.html&quot; target=&quot;undefined&quot;&gt;Turn Limitations into Strength: One Button Games&lt;/a&gt;.&lt;/li&gt;
    &lt;li&gt;Anyone who remembers playing an old real-time DOS game with no framerate limiter will appreciate how machine performance can affect a game&amp;#8217;s difficulty. To mitigate for this, we&amp;#8217;ll base the movement of our game objects on the time difference between frames (delta). Essentially, we&amp;#8217;re scaling movement in the same way that we&amp;#8217;re scaling our graphics.&lt;/li&gt;
&lt;/ol&gt;
One last consideration: as the WidSets framework is currently based on CLDC 1.0, there&amp;#8217;s no floating point support in Helium script (i.e. floats or doubles). We&amp;#8217;ll make use of fixed-point arithmetic to overcome this.&lt;br /&gt;
&lt;br /&gt;
In the next blog, we will start building up the basic framework for the game, posting source code along the way (Helium script).
   </description>
   <link>http://blogs.forum.nokia.com/blog/widget-workshops-forum-nokia-blog/2007/08/25/game-on-down-the-widget-rabbit-hole</link>
   <comments>http://blogs.forum.nokia.com/blog/widget-workshops-forum-nokia-blog/2007/08/25/game-on-down-the-widget-rabbit-hole</comments>
   <guid>http://blogs.forum.nokia.com/blog/widget-workshops-forum-nokia-blog/2007/08/25/game-on-down-the-widget-rabbit-hole</guid>
      <dc:creator>mobileradicals</dc:creator>
      
    <category>Browsing</category>
      
    <category>Entertainment</category>
      
    <category>Games</category>
         <pubDate>Sat, 25 Aug 2007 12:56:04 +0300</pubDate>
   <itunes:author>Forum Nokia</itunes:author>
   <itunes:subtitle>Game On (down the widget rabbit hole)</itunes:subtitle>
   <source url="http://blogs.forum.nokia.com/rss.php?blogId=107720&amp;profile=rss20">Widget Workshop&#039;s Forum Nokia Blog</source>
     </item>
    <item>
   <title>Start of the Widget Workshop (or taking the red widget pill)</title>
   <description>
    &lt;div style=&quot;margin: 0cm 0cm 10pt&quot;&gt;Welcome to our (Paul Coulton and Will Bamford&amp;#8217;s) new Start2Finish blog called &lt;em&gt;Widget Workshop&lt;/em&gt;. This will be an evolutionary series of blogs revealing our experiences developing a range of widgets from a standing start of no prior experience. In other words, we are &#039;Widget Virgins&#039;. We say evolutionary, as we don&amp;#8217;t really have any firm plans of what we are going to develop and principally want to explore as many of the capabilities as possible and hopefully demonstrate the power of the technology.&lt;/div&gt;
&lt;div style=&quot;margin: 0cm 0cm 10pt&quot;&gt;Besides the basic intro to the project we thought we would start by clearing up the difference between &lt;a target=&quot;undefined&quot; href=&quot;http://www.widsets.com&quot;&gt;WidSets&lt;/a&gt; widgets and S60 Widgets (Web Run-Time). &lt;span style=&quot;font-size: 10pt; color: black; line-height: 115%&quot;&gt;There are obvious similarities in terms of ease of distribution and likely use, but we also want to explore the differences between these technologies from a developer&#039;s perspective, so let&amp;#8217;s start with a brief&amp;#160;&lt;/span&gt;overview of each technology (a more comprehensive discussion/comparison is available &lt;a target=&quot;undefined&quot; href=&quot;http://discussion.forum.nokia.com/forum/showthread.php?t=111056&quot;&gt;here&lt;/a&gt;&amp;#160;and &lt;a target=&quot;undefined&quot; href=&quot;http://www.forum.nokia.com/main/resources/technologies/browsing/widgets.html&quot;&gt;here&lt;/a&gt;).&lt;/div&gt;
&lt;div style=&quot;margin: 0cm 0cm 10pt&quot;&gt;&lt;strong&gt;WidSets Widgets&lt;/strong&gt;&lt;/div&gt;
&lt;div style=&quot;margin: 0cm 0cm 10pt&quot;&gt;This is essentially a Java-based platform. Widgets can be developed using the WidSets Studio, a very easy to use online visual editor for developing simple widgets in a matter of minutes. However, these widgets are essentially limited to picking up RSS feeds (for displaying text and photos). To create custom functionality, developers need to delve into Helium script, a &amp;#8216;Java like&amp;#8217; language for controlling all aspect of a widget&amp;#8217;s behaviour. We need to download the &lt;a target=&quot;undefined&quot; href=&quot;http://dev.widsets.com&quot;&gt;WidSets SDK&lt;/a&gt; to create &lt;em&gt;Helium-powered&lt;/em&gt; widgets.&lt;/div&gt;
&lt;div style=&quot;margin: 0cm 0cm 10pt&quot;&gt;&lt;strong&gt;S60 Widgets&lt;/strong&gt;&lt;/div&gt;
&lt;div style=&quot;margin: 0cm 0cm 10pt&quot;&gt;These are lightweight mobile browser applications developed using familiar, standards-based web technologies such as (x)HTML, CSS, JavaScript, and even advanced AJAX. In order to run S60 Widgets, the phone needs the run-time installed (future S60 phones will have this installed as standard).&lt;/div&gt;
&lt;div style=&quot;margin: 0cm 0cm 10pt&quot;&gt;At the present we will be developing WidSets widgets for the workshop, although we hope to cover both in the future when we get access to a suitable phones for development and/or Nokia&amp;#8217;s Web Run-Time SDK is released.&lt;/div&gt;
&lt;div style=&quot;margin: 0cm 0cm 10pt&quot;&gt;We hope you will help, hinder, make suggestions for widgets (preferably fun ones) or just observe our efforts.&lt;/div&gt;
&lt;div style=&quot;margin: 0cm 0cm 10pt&quot;&gt;Cheers&lt;/div&gt;
   </description>
   <link>http://blogs.forum.nokia.com/blog/widget-workshops-forum-nokia-blog/2007/08/16/start-of-the-widget-workshop-or-taking-the-red-widget-pill</link>
   <comments>http://blogs.forum.nokia.com/blog/widget-workshops-forum-nokia-blog/2007/08/16/start-of-the-widget-workshop-or-taking-the-red-widget-pill</comments>
   <guid>http://blogs.forum.nokia.com/blog/widget-workshops-forum-nokia-blog/2007/08/16/start-of-the-widget-workshop-or-taking-the-red-widget-pill</guid>
      <dc:creator>mobileradicals</dc:creator>
      
    <category>Enterprise</category>
      
    <category>Entertainment</category>
         <pubDate>Thu, 16 Aug 2007 19:40:17 +0300</pubDate>
   <itunes:author>Forum Nokia</itunes:author>
   <itunes:subtitle>Start of the Widget Workshop (or taking the red widget pill)</itunes:subtitle>
   <source url="http://blogs.forum.nokia.com/rss.php?blogId=107720&amp;profile=rss20">Widget Workshop&#039;s Forum Nokia Blog</source>
     </item>
   </channel>
</rss>