<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet href="http://blogs.forum.nokia.com/styles/rss.css" type="text/css"?>
<rdf:RDF 
  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" 
  xmlns="http://my.netscape.com/rdf/simple/0.9/"
>

 <channel>
  <title>Paul Todd&#039;s Forum Nokia Blog</title>
  <link>http://blogs.forum.nokia.com/blog/paul-todds-forum-nokia-blog</link>
  <description>&lt;p&gt;Hi, I&#039;m Paul, but you can also call me Todd and I won&#039;t get upset.&lt;/p&gt;
</description>
 </channel>
    <item>
   <title>Microsoft Airsync protocol now released</title>
   <description>&lt;p&gt;
As part of Microsofts ongoing API release program, the AirSync protocol specs and docs are now avaliaible for download
&lt;/p&gt;
&lt;p&gt;
Grab them here 
&lt;/p&gt;
&lt;p&gt;
&lt;a href=&quot;http://msdn.microsoft.com/en-us/library/cc425499.aspx&quot; title=&quot;Airsync Protocol&quot;&gt;http://msdn.microsoft.com/en-us/library/cc425499.aspx&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;And of course the obligatory licencing notice here
&lt;/p&gt;
&lt;p&gt;
&lt;a href=&quot;http://msdn.microsoft.com/en-us/library/cc433488.aspx&quot;&gt;&amp;nbsp;http://msdn.microsoft.com/en-us/library/cc433488.aspx&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
 Note that there is no partnering API or support incident cost involved in getting or using them.... 
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;</description>
   <link>http://blogs.forum.nokia.com/blog/paul-todds-forum-nokia-blog/2008/12/19/microsoft-airsync-protocol-now-released</link>
      <pubDate>Fri, 19 Dec 2008 13:48:34 +0200</pubDate>   
  </item>
    <item>
   <title>Mobile Firefox for Symbian just kicked off today</title>
   <description>&lt;p&gt;
Mozilla have today officailly kicked off their port for Fennec (ie Firefox Mobile) for Symbian 
&lt;/p&gt;
&lt;p&gt;
 More info over at Christian Sejersen&#039;s blog including links to the repository.... 
&lt;/p&gt;
&lt;p&gt;
http://www.christiansejersen.com/blog/2008/12/10/fennec-mobile-firefox-for-symbian/
&lt;/p&gt;
&lt;p&gt;
Various people have already started contributing.
&lt;/p&gt;</description>
   <link>http://blogs.forum.nokia.com/blog/paul-todds-forum-nokia-blog/2008/12/11/mobile-firefox-for-symbian-just-kicked-off-today</link>
      <pubDate>Thu, 11 Dec 2008 17:47:35 +0200</pubDate>   
  </item>
    <item>
   <title>Reading DM Adapter DDF&#039;s</title>
   <description>&lt;p&gt;
DDF&#039;s can be represented as a tree structure and so naturally lead themselves to be described by recursion which most people find difficult to understand. Reading a ddf from the supplied adapter is fairly easy, the problems are the recursive nature of the solution that describes the ddf.
&lt;/p&gt;
&lt;p&gt;
The two important methods on CSmlDmAdapter are DDFStructureL and the other one is DDFVersionL. The DDFStructureL function takes as an arguement, an implementation for an MSmlDmDDFObject. This will be the root node for the DDF and typically this will be the name of the DDF&amp;nbsp; e.g. AP for access points)
&lt;/p&gt;
&lt;p&gt;
As the adapter builds the DDF, it will call back on the methods of MSmlDmDDFObject to set the &lt;br /&gt;
various parameters that describe the node. You will need to derive a class from this and &lt;br /&gt;
CBase and provide implementations to all the methods of the MSmlDmDDFObject. &lt;br /&gt;
It is up to you to track the relationships between the nodes, so each time AddChildObjectL&lt;br /&gt;
or AddChildObjectGroupL is called, it will require a new instance of the object implementing&amp;nbsp; &lt;br /&gt;
the MSmlDmDDFObject interface to be created. This new node will be added as a child of the&lt;br /&gt;
current node. If the DDF tree is being stored then it will be up to you to keep track of &lt;br /&gt;
the objects you create.&lt;br /&gt;
&amp;nbsp;&lt;br /&gt;
In order to construct the tree, AddChildObjectL is used to add a named node and &lt;br /&gt;
AddChildObjectGroupL is used to add an anonymous or ununamed node (these are denoted as &lt;br /&gt;
&amp;lt;x&amp;gt; is in the ddf specification). Both of these functions return a new instance of an &lt;br /&gt;
object implementing the MSmlDmDDFObject.
&lt;/p&gt;
&lt;p&gt;
One of the tricky aspects to this is that some of the adapters put their name in the ecom data and others do not, so generally you need to read the DDF for the adapter in order to get the name of the adapter if you are using it to set specific settings. 
&lt;/p&gt;
&lt;p&gt;
A partial example to read the ddf..&lt;br /&gt;
For the purposes of this example, we will assume that we already have an adapter &lt;br /&gt;
instantiated via RECOMSession::CreateImplementationL&lt;br /&gt;
&lt;br /&gt;
//This class is used to store the ddf&lt;br /&gt;
class CDmDDFNode : public CBase, public MSmlDmDDFObject&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
public:&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; CDMDDFNode();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; ~CDMDDFNode()&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; iChildren.ResetAndDestroy();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
public: // MSmlDmDDFObject&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; .... // Implementations of the pure virtual &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // get and set methods of MSmlDmDDFObject&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; MSmlDmDDFObject&amp;amp; AddChildObjectGroupL()&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; return AddChildObjectL(_L8(&amp;quot;&amp;lt;x&amp;gt;&amp;quot;));&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; MSmDmDDFObject&amp;amp; AddChildObjectL(const TDesC8&amp;amp; aNodeName)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; CDmDDFNode* node = new (ELeave) CDmDDFNode;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; CleanupStack::PushL(node);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; iChildren.AppendL(node);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; CleanupStack::Pop(node);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; return *node;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
private:&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; RPointerArray&amp;lt;CDMDDFNode&amp;gt; iChildren;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }; &lt;br /&gt;
&lt;br /&gt;
When calling DDFStructure...&lt;br /&gt;
&lt;br /&gt;
CDMDDFNode* root = new (ELeave) CDMDDFNode;&lt;br /&gt;
CleanupStack::PushL(root);&lt;br /&gt;
adapter-&amp;gt;DDFStructureL(*root);&lt;br /&gt;
CleanupStack::Pop(root);&lt;br /&gt;
&lt;br /&gt;
const TDesC8&amp;amp; name= node-&amp;gt;Name(); // the root node is the adapter name.&lt;br /&gt;
....&lt;br /&gt;
&lt;br /&gt;
Once the DDF has been read, it is then possible to get the version of the DDF.&lt;br /&gt;
The DDF version is important as it allows differentiation of features as well as identifying&lt;br /&gt;
possible issues with bugs fixed from earlier releases.&lt;br /&gt;
&lt;br /&gt;
CBufFlat* buf = CBufFlat::NewL(64);&lt;br /&gt;
CleanupStack::PushL(buf);&lt;br /&gt;
adapter-&amp;gt;DDFVersionL(*buf);&lt;br /&gt;
HBufC8* DDFVersion = buf-&amp;gt;Ptr(0).AllocL();&lt;br /&gt;
// .... create store this somewhere&lt;br /&gt;
CleanupStack::PopAndDestroy(2, buf);&lt;br /&gt;
&lt;br /&gt;
Next Part...&lt;br /&gt;
Setting simple single values...
&lt;/p&gt;</description>
   <link>http://blogs.forum.nokia.com/blog/paul-todds-forum-nokia-blog/2008/11/30/reading-dm-adapter-ddf-s</link>
      <pubDate>Sun, 30 Nov 2008 18:21:24 +0200</pubDate>   
  </item>
    <item>
   <title>Scalability</title>
   <description>One of the things engineers are going to have to think about when the new &lt;a href=&quot;http://www.forum.nokia.com/main/resources/technologies/browsing/widgets.html&quot; target=&quot;undefined&quot;&gt;widgets api&#039;s&lt;/a&gt; come out is not just to think about the device, but rather to think about the server side. I mean how great is your widget going to be if your server is being hosed by millions of clients.&lt;br /&gt;
&lt;br /&gt;
The biggest problem I believe is going to be dealing with scalability issues on the server side as there are plenty more phones than laptops and with wifi being cheap and data plans becoming cheaper there could be a whole load of problems dealing with orders of magnitude more connections than a regular windows based clients.&lt;br /&gt;
&lt;br /&gt;
That why one of my favourite feeds is the &lt;a href=&quot;http://highscalability.com/&quot; target=&quot;undefined&quot;&gt;high scalability&lt;/a&gt; website where they cover how the really big sites on the web work and scale.&lt;br /&gt;
Recently they have covered the architectures for flickr, youtube, digg and typepad.</description>
   <link>http://blogs.forum.nokia.com/blog/paul-todds-forum-nokia-blog/2007/08/22/scalability</link>
      <pubDate>Wed, 22 Aug 2007 23:47:48 +0300</pubDate>   
  </item>
    <item>
   <title>Google Developer Day</title>
   <description>Between moving house, two projects in crisis, no broadband and google dev day I hav&#039;nt had the chance to do any decent coding for the blog.&lt;br /&gt;&lt;br /&gt;I was however really impressed with what google gears potentional was on a mobile device, especially for Enterprise applications.&lt;br /&gt;&lt;br /&gt;It makes development much simpler as the code can be written in Javascript and the code takes care of syncing it with the backend services.&lt;br /&gt;&lt;br /&gt;Currently C++/Symbian Signed&amp;#160; is just too expensive for Enterprise applications and whilst Red Five&#039;s .net version is awsome, its not 3rd edition compliant yet.&lt;br /&gt;&lt;br /&gt;Hopefully Nokia will add the needed extensions to the webkit to allow native javascript addons via ecom.&lt;br /&gt;&lt;br /&gt;Google refused to be drawn on this issue when the question was asked :(</description>
   <link>http://blogs.forum.nokia.com/blog/paul-todds-forum-nokia-blog/2007/06/06/google-developer-day</link>
      <pubDate>Wed, 06 Jun 2007 14:22:18 +0300</pubDate>   
  </item>
  </rdf:RDF>

