<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>picoBeat Blog &#187; Programming</title>
	<atom:link href="http://blog.picobeat.com/category/programming/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.picobeat.com</link>
	<description>Just another WordPress weblog</description>
	<lastBuildDate>Wed, 18 Aug 2010 05:12:40 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Another SyncML story &#8211; broken by design</title>
		<link>http://blog.picobeat.com/2010/01/another-syncml-story-broken-by-design/</link>
		<comments>http://blog.picobeat.com/2010/01/another-syncml-story-broken-by-design/#comments</comments>
		<pubDate>Tue, 12 Jan 2010 13:29:38 +0000</pubDate>
		<dc:creator>Pierre</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[picoBeat]]></category>

		<guid isPermaLink="false">http://blog.picobeat.com/?p=50</guid>
		<description><![CDATA[There used to be an issue synchronizing with SyncML a whole range of Nokia phones based on the S60 3rd Edition (including such models as E65, N70 or N80). I&#8217;m happy to say that after weeks of hunting down the source of the problem, which would prevent the phones from receiving and decoding updates sent [...]]]></description>
			<content:encoded><![CDATA[<p>There used to be an issue synchronizing with SyncML a whole range of Nokia phones based on the S60 3<sup>rd</sup> Edition (including such models as E65, N70 or N80). I&#8217;m happy to say that after weeks of hunting down the source of the problem, which would prevent the phones from receiving and decoding updates sent from the server, a fix has been found and put into place. But I think this deserves a bit more explanation that the technically inclined might be interested in reading.</p>
<p>To exchange contacts or calendaring data, the SyncML specs requires the use of the well established standards that are vCard and vCalendar. While these standards are somewhat loose, they have the advantage of being widely supported and easy to read and write: they are just a bunch of lines with a key-value association (ie a line with &#8220;ORG:ACME Inc.&#8221; for the contact&#8217;s organization name). These standards require that each line is terminated MS-DOS style, with both a carriage-return and line-feed character to mark each end of line &#8211; this is however just an arbitrary choice as a simple line-feed would be enough (this is how lines are terminated on Unix systems).</p>
<p>Problem is, the SyncML specs is also built on XML, which treats spaces, carriage returns, tabs and lines feeds as special &#8220;white spaces&#8221; and allows XML tools to change them. As such most of these tools consider the carriage-return sign as unimportant, as it is redundant with the line-feed to mark the end of a line.</p>
<p>So what happens when you put a format that requires carriage-return such as vCard inside another format that doesn&#8217;t preserve them? Lots of hair pulling, because most XML programming tools will merrily remove any carriage returns they happen to find. Thankfully almost every SyncML application out there doesn&#8217;t mind reading vCard or vCalendar data with the wrong line ending as this is trivial to do and doesn&#8217;t any difference to the data. But a few will not.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.picobeat.com/2010/01/another-syncml-story-broken-by-design/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Why doesn&#8217;t SyncML synchronization works?</title>
		<link>http://blog.picobeat.com/2009/10/why-doesnt-syncml-synchronization-works/</link>
		<comments>http://blog.picobeat.com/2009/10/why-doesnt-syncml-synchronization-works/#comments</comments>
		<pubDate>Thu, 29 Oct 2009 12:04:54 +0000</pubDate>
		<dc:creator>Pierre</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[picoBeat]]></category>
		<category><![CDATA[SyncML]]></category>

		<guid isPermaLink="false">http://blog.picobeat.com/?p=9</guid>
		<description><![CDATA[The short answer
This is most often because:

You haven&#8217;t supplied the proper database names (spelling mistake or just didn&#8217;t change the default ones)
You haven&#8217;t supplied the proper user name and passwords (the later is case sensitive)
There is a bug in your device/program or in picoBeat SyncML module. Or possibly both (ugh!).

The long answer
There&#8217;s a lot to [...]]]></description>
			<content:encoded><![CDATA[<h3>The short answer</h3>
<p>This is most often because:</p>
<ol>
<li>You haven&#8217;t supplied the proper database names (spelling mistake or just didn&#8217;t change the default ones)</li>
<li>You haven&#8217;t supplied the proper user name and passwords (the later is case sensitive)</li>
<li>There is a bug in your device/program or in picoBeat SyncML module. Or possibly both (ugh!).</li>
</ol>
<h3>The long answer</h3>
<p>There&#8217;s a lot to say about the standards developed by the telecom industry. Somehow, while a cell-phone is just a tiny computer, the telecom guys seem to live on a different planet than the computer guys, and they seem to insist on doing things &#8220;their way&#8221;.</p>
<p>When it was decided to bring the Internet to cell-phones, HTML would have been an obvious choice. But no, a different standard was built from scratch: WML. WML 1.0 wasn&#8217;t really a big success, <a href="http://en.wikipedia.org/wiki/Wireless_Application_Protocol#Criticism">for many reasons</a> including the fact that Web developers do not like having to learn a whole new markup language, so WML 2.0 tried to correct this by being some limited form of HTML. Similarly, pictures were expected to be stored in a new WBMP format, rather than one of the many existing image format that already exists and are widely supported.</p>
<p>This bring us to <a href="http://en.wikipedia.org/wiki/SyncML">SyncML</a>: it&#8217;s a synchronization standard by the telecom industry. Two good things about it: it&#8217;s built with XML and it&#8217;s pretty flexible. Two bad things about it: XML is encoded in a new custom format called <a href="http://en.wikipedia.org/wiki/WBXML">WBXML</a>, somewhat negating the advantage of using XML, and it&#8217;s way too flexible. This comes from contradicting constrains: making the standard as flexible and open-ended as possible, but making it work on underpowered devices such as entry-level cell phones. As such the standard requires devices to accept informations in many different ways and to be very flexible in exchanging data, which requires complicated programming and a lot of processing power. But at the same time it allows the phone to signal that it has little memory capacity and bandwith. Why would a device capable of processing a complex XML-based protocol be only capable of storing a handful of appointments or processing more than 2,5 Kb at a time is beyond my understanding.</p>
<p>This flexibility is also the reason there&#8217;s no standard name for databases (tasks, appointments, contacts, etc.)  in SyncML and why users have to type them in when configuring their cell-phone. This complexity also means a lot of cell-phones have bugs &#8211; some of them so bad as to reboot when receiving certain standard-compliant SyncML data. Sadly there are dozens of phone manufacturers and thousands of models out there and it&#8217;s impossible to properly test every one of them with picoBeat, so I know for a fact that some phones just won&#8217;t work. Things will improve over time and hopefully <em>most </em>devices will work.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.picobeat.com/2009/10/why-doesnt-syncml-synchronization-works/feed/</wfw:commentRss>
		<slash:comments>19</slash:comments>
		</item>
	</channel>
</rss>
