<?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>Nick Vidal &#187; ios</title>
	<atom:link href="http://nick.iss.im/category/ios/feed/" rel="self" type="application/rss+xml" />
	<link>http://nick.iss.im</link>
	<description>(( nick . iss . im ))</description>
	<lastBuildDate>Wed, 20 Jul 2011 19:57:22 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Logos</title>
		<link>http://nick.iss.im/2010/03/25/logos/</link>
		<comments>http://nick.iss.im/2010/03/25/logos/#comments</comments>
		<pubDate>Thu, 25 Mar 2010 19:00:50 +0000</pubDate>
		<dc:creator>nick</dc:creator>
				<category><![CDATA[ios]]></category>
		<category><![CDATA[iss]]></category>
		<category><![CDATA[itop]]></category>

		<guid isPermaLink="false">http://nick.iss.im/?p=458</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<div id="attachment_464" class="wp-caption alignright" style="width: 106px"><img class="size-full wp-image-464" title="Instant Desktop Environment" src="http://nick.iss.im/wp-content/uploads/2010/03/itop.png" alt="Instant Desktop Environment" width="96" height="96" /><p class="wp-caption-text">Instant Desktop Environment</p></div>
<div id="attachment_463" class="wp-caption alignright" style="width: 106px"><img class="size-full wp-image-463" title="Instant Operating System" src="http://nick.iss.im/wp-content/uploads/2010/03/ios.png" alt="Instant Operating System" width="96" height="96" /><p class="wp-caption-text">Instant Operating System</p></div>
<div id="attachment_462" class="wp-caption alignright" style="width: 106px"><img class="size-full wp-image-462 " title="Instant Syndicating Standards" src="http://nick.iss.im/wp-content/uploads/2010/03/iss.png" alt="Instant Syndicatng Standards" width="96" height="96" /><p class="wp-caption-text">Instant Syndicating Standards</p></div>
<div id="attachment_461" class="wp-caption alignright" style="width: 106px"><img class="size-full wp-image-461 " title="Alpha CrucISS Webtop" src="http://nick.iss.im/wp-content/uploads/2010/03/alpha-cruciss.png" alt="Alpha CrucISS Webtop" width="96" height="96" /><p class="wp-caption-text">Alpha CrucISS Webtop</p></div>
<div id="attachment_460" class="wp-caption alignright" style="width: 106px"><img class="size-full wp-image-460" title="PolarISS" src="http://nick.iss.im/wp-content/uploads/2010/03/polariss.png" alt="PolarISS WebOS" width="96" height="96" /><p class="wp-caption-text">PolarISS WebOS</p></div>
<div id="attachment_459" class="wp-caption alignright" style="width: 106px"><img class="size-full wp-image-459" title="StarCloud" src="http://nick.iss.im/wp-content/uploads/2010/03/starcloud.png" alt="StarCloud" width="96" height="96" /><p class="wp-caption-text">StarCloud</p></div>
]]></content:encoded>
			<wfw:commentRss>http://nick.iss.im/2010/03/25/logos/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>iContent</title>
		<link>http://nick.iss.im/2010/01/20/icontent/</link>
		<comments>http://nick.iss.im/2010/01/20/icontent/#comments</comments>
		<pubDate>Wed, 20 Jan 2010 15:22:14 +0000</pubDate>
		<dc:creator>nick</dc:creator>
				<category><![CDATA[ios]]></category>

		<guid isPermaLink="false">http://nick.iss.im/?p=362</guid>
		<description><![CDATA[One of the main features of the upcoming Drupal 7 is the ability to add custom fields to content types in a user-friendly way. For example, one might add a content type called Recipe, where it has the following fields: Title, Ingredients, Instructions and Photo.  On earlier versions of Drupal, such content type had to be hard-coded by a [...]]]></description>
			<content:encoded><![CDATA[<p>One of the main features of the upcoming Drupal 7 is the ability to add custom fields to content types in a user-friendly way. For example, one might add a content type called Recipe, where it has the following fields: Title, Ingredients, Instructions and Photo.  On earlier versions of Drupal, such content type had to be hard-coded by a web programmer. With Drupal 7, a webmaster may create it with a few clicks.</p>
<p>Now imagine a generic content type called iContent that could be transformed into anything instantly by the average user. This content type would include all available types of fields (text, number, date, file, etc) with an unlimited cardinality (i.e. the fields could be repeated if necessary).</p>
<p>So let us suppose a user wants to enter a Recipe. He selects the iContent and starts building the structure on the fly. He adds the Title, then the Ingredients, later the Instructions, and finally a Photo. Now, he might want to enter a Movie. So he adds a Title, then the Director, later the Duration, then the Release Date, the Genre, a Picture, and finally the Plot. He might want to save both the Recipe and Movie structures for later use as templates. But notice that only one content type was necessary to build such different content structures.</p>
<p>This is a simple idea, but a very powerful one. It makes us rethink how we create information today. Email, for example. You only have the option to enter the Title and the Body. No other fields are allowed, with the exception of Attachments, which provide the flexibility we are looking for since it has an unlimited cardinality. Why not extend that same flexibility to the other fields? Blogs are another example. Imagine how much richer would the Web be (semantically) if blogs had this kind of flexibility?</p>
]]></content:encoded>
			<wfw:commentRss>http://nick.iss.im/2010/01/20/icontent/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>HTTP and the Push Model</title>
		<link>http://nick.iss.im/2009/10/22/http-and-the-push-model/</link>
		<comments>http://nick.iss.im/2009/10/22/http-and-the-push-model/#comments</comments>
		<pubDate>Thu, 22 Oct 2009 16:50:31 +0000</pubDate>
		<dc:creator>nick</dc:creator>
				<category><![CDATA[ios]]></category>
		<category><![CDATA[iss]]></category>

		<guid isPermaLink="false">http://nick.iss.im/?p=317</guid>
		<description><![CDATA[The Real-time Web seems to be the buzz of the moment, and there has been quite a debate comparing HTTP, XMPP and related technologies (Comet, Web sockets). Generally HTTP is associated with the Pull model, while XMPP is associated with the Push model. But it&#8217;s very well possible to design an architecture that follows the [...]]]></description>
			<content:encoded><![CDATA[<p>The Real-time Web seems to be the buzz of the moment, and there has been quite a debate comparing HTTP, XMPP and related technologies (Comet, Web sockets). Generally HTTP is associated with the Pull model, while XMPP is associated with the Push model. But it&#8217;s very well possible to design an architecture that follows the Push model using HTTP.</p>
<p>Let&#8217;s see an example to illustrated the point: Nick and Debbie are friends and they have subscribed to each other&#8217;s feed to receive updates. Their feeds are hosted on different servers.</p>
<p>In the Pull model, Nick has to poll Debbie&#8217;s server every time to check for updates from Debbie, and vice-versa.</p>
<p>In the Push model, the flow goes something like this:</p>
<ol>
<li> Debbie publishes a new entry on her server (Push);</li>
<li> Debbie&#8217;s server lets Nick&#8217;s server know that Debbie has published a new entry (Push);</li>
<li> Nick polls his own server to receive updates (Pull).</li>
</ol>
<p>Notice that the second step is a Push implemented in HTTP. Nick&#8217;s server didn&#8217;t have to poll Debbie&#8217;s server every time to check for updates.</p>
<p>In essence, this is what <a title="RSS Cloud" href="http://rsscloud.org/">RSSCloud</a> and <a title="PubSubHubBub" href="http://code.google.com/p/pubsubhubbub/">PubSubHubBub</a> are trying to accomplish: promoting an architectural design that follows the Push model using HTTP. <a title="Instant Syndicating Standards" href="http://iss.im">ISS</a> implementation on top of Drupal is also promoting this.</p>
<p>Yes, the third step is still the Pull model, but so what? Polling is only performed when the user is online and active, and strategies like the <a title="SessionLink" href="http://nick.iss.im/2009/06/03/the-sessionlink/">sessionLink</a> can help determine how frequently the client has to poll.</p>
<p>Regarding the ISS implementation on top of Drupal, when a user syndicates an entry to a channel, all friends that are subscribed to this channel are notified (even if they are from a different server). The notification to a different server is done via the Services module.</p>
<p>Since ISS encourages a more decentralized social network and the <a title="ISS Policies" href="http://nick.iss.im/2008/05/16/iss-policies/">ISS policies</a> limits who gets notified, this helps in terms of performance and scalability. The speed at which information propagates will only be limited by the speed of the social network to filter information, which guarantees a high quality and very personalized stream of information for each individual.</p>
]]></content:encoded>
			<wfw:commentRss>http://nick.iss.im/2009/10/22/http-and-the-push-model/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Photos from FISL 10</title>
		<link>http://nick.iss.im/2009/06/29/photos-from-fisl-10/</link>
		<comments>http://nick.iss.im/2009/06/29/photos-from-fisl-10/#comments</comments>
		<pubDate>Mon, 29 Jun 2009 16:46:58 +0000</pubDate>
		<dc:creator>nick</dc:creator>
				<category><![CDATA[ios]]></category>
		<category><![CDATA[iss]]></category>
		<category><![CDATA[itop]]></category>

		<guid isPermaLink="false">http://nick.iss.im/?p=279</guid>
		<description><![CDATA[The 10th edition of FISL (International Free Software Forum) was a huge success, with over 8000 participants, including the presence of the president of Brazil, Luiz Inácio Lula da Silva!
Our presentation entitled ISS (Instant Syndicating Standards) was great! We gave a quick overview of ISS and many attendees got interested in our work. One of [...]]]></description>
			<content:encoded><![CDATA[<p>The 10th edition of <a title="FISL 10" href="http://fisl.softwarelivre.org/10/www/en">FISL (International Free Software Forum)</a> was a huge success, with over 8000 participants, including the presence of the president of Brazil, <a title="Lula" href="http://en.wikipedia.org/wiki/Lula">Luiz Inácio Lula da Silva</a>!</p>
<p>Our presentation entitled <a title="Instant Syndicating Standards" href="http://iss.im">ISS (Instant Syndicating Standards)</a> was great! We gave a quick overview of ISS and many attendees got interested in our work. One of the highlights of the presentation was when we used tennis balls to explain how the information would travel in the social network. It was really fun to see the balls been thrown from one side of the room to the other. Some photos of the presentation are shown below:</p>
<div id="attachment_280" class="wp-caption aligncenter" style="width: 310px"><a href="http://nick.iss.im/wp-content/uploads/2009/06/fisl1.jpg"><img class="size-medium wp-image-280" title="Bruna Griebeler at FISL 10" src="http://nick.iss.im/wp-content/uploads/2009/06/fisl1-300x225.jpg" alt="Bruna Griebeler at FISL 10" width="300" height="225" /></a><p class="wp-caption-text">Bruna Griebeler at FISL 10</p></div>
<div id="attachment_281" class="wp-caption aligncenter" style="width: 310px"><a href="http://nick.iss.im/wp-content/uploads/2009/06/fisl2.jpg"><img class="size-medium wp-image-281" title="Tiago Rosa da Silva at FISL 10" src="http://nick.iss.im/wp-content/uploads/2009/06/fisl2-300x225.jpg" alt="Tiago Rosa da Silva at FISL 10" width="300" height="225" /></a><p class="wp-caption-text">Tiago Rosa da Silva at FISL 10</p></div>
<div id="attachment_282" class="wp-caption aligncenter" style="width: 310px"><a href="http://nick.iss.im/wp-content/uploads/2009/06/fisl3.jpg"><img class="size-medium wp-image-282" title="Daniel Schmidt da Silva at FISL 10" src="http://nick.iss.im/wp-content/uploads/2009/06/fisl3-300x225.jpg" alt="Daniel Schmidt da Silva at FISL 10" width="300" height="225" /></a><p class="wp-caption-text">Daniel Schmidt da Silva at FISL 10</p></div>
]]></content:encoded>
			<wfw:commentRss>http://nick.iss.im/2009/06/29/photos-from-fisl-10/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Sharing Information, Services and Interactions in the Next Decade</title>
		<link>http://nick.iss.im/2009/06/16/sharing-information-services-and-interactions-in-the-next-decade/</link>
		<comments>http://nick.iss.im/2009/06/16/sharing-information-services-and-interactions-in-the-next-decade/#comments</comments>
		<pubDate>Tue, 16 Jun 2009 19:54:49 +0000</pubDate>
		<dc:creator>nick</dc:creator>
				<category><![CDATA[ios]]></category>
		<category><![CDATA[iss]]></category>
		<category><![CDATA[itop]]></category>

		<guid isPermaLink="false">http://nick.iss.im/?p=214</guid>
		<description><![CDATA[Introduction
In the 90s, after Tim Berners-Lee created the World Wide Web at CERN research center, scientists around the world were able to share information with their colleagues by setting up their own personal Websites. The key concept behind the Web was the hyperlink, which allowed users to browse Web pages across different networks.
With the popularization [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Introduction</strong></p>
<p>In the 90s, after Tim Berners-Lee created the World Wide Web at CERN research center, scientists around the world were able to share information with their colleagues by setting up their own personal Websites. The key concept behind the Web was the hyperlink, which allowed users to browse Web pages across different networks.</p>
<p>With the popularization of the Web, browsing Web pages just wasn&#8217;t enough. So by the turn of the millennium, the advent of search engines came to people&#8217;s assistance, most notably from a search engine created by Larry Page and Sergey Brin while at Stanford University. Powered by complex algorithms, search engines would rank and present Web pages to users based on keywords.</p>
<p>With further popularization of the Web, searching again wasn&#8217;t enough. The top-down presentation of Web pages selected from a huge collection by an algorithm has created a very undemocratic way of sharing information. In this next decade, users will rely less on monolithic algorithms and more on their own personal social network for sharing information.</p>
<p>While the first decade of the Web was all about browsing and the second decade was about searching, the next decade will be about syndicating. Users will connect with their personal social network to receive and disseminate information in a bottom-up manner. Information, services and interactions will all be syndicated, allowing users to share not only information but also rich and profound experiences.</p>
<p><strong>Sharing Information </strong></p>
<p>As of today, there is no existing technology that allows individuals to share information in a bottom-up manner on a global scale. ISS (Instant Syndicating Standards) is a proposal to create just that: a distributed worldwide recommender system perfectly tuned to output a very personalized stream of information for each individual, where information flows from the personal social network towards the whole wide world. This is accomplished by allowing each individual to create their own broadcasting channels and to connect these channels with the ones created by their personal social network. This trustful and cascading network of syndicated streams filters out irrelevant information, while still letting good information pass through at each level.</p>
<p>The key concept behind ISS is the tagLink. The tagLink is a semantic link created by individuals showing how their friends&#8217; channels are connected with their own channels. If a user becomes interested in a particular channel from a friend, he may subscribe to this channel and add it to his own channel. Thus, each individual receives exactly what he wants based on these subscriptions, and all information that reaches them goes through friends&#8217; approval first.</p>
<p><strong>Sharing Services</strong></p>
<p>ISS is being developed as a set of services on top of Drupal. This service-oriented architecture promotes interoperability and allows individuals from different networks to share information with each other. The ISS services englobes user, channel and content management. These services together with services that provide file, language, search and session management will transform Drupal from a Content Management System into a Web Operating System.</p>
<p>The key concept behind the Drupal WebOS is the serviceLink, which is a structured format that links services together, including services from different networks. For example: a user may browse his way to a friend&#8217;s profile and become aware of her interests by visualizing her channels. If there is a common interest, the user may subscribe to a channel and create a taglink that connects her remote channel with his local channel. The fact that the friend is from another network is totally transparent to the user. This is possible when these systems follow a set of open standards called IOS (Instant Operating System). Users will be served by multiple WebOS.</p>
<p><strong>Sharing Interactions</strong></p>
<p>The services provided by the Drupal WebOS can be accessed through a Webtop, i.e. a Desktop Environment that works on top of the Web. The Ext Webtop is a Webtop created using the Ext JavaScript Library following a set of open standards called ITOP (Instant Desktop Environment). From this Webtop, users can share interactions with each other.</p>
<p>The key concept behind the Ext Webtop is the sessionLink. The sessionLink is a service that follows the publish/subscribe pattern and provides users and applications with (almost) real-time updates for subscribed services. For example, when a chat application is loaded in the Ext Webtop, the Webtop subscribes to the user.im service to be kept aware of any updates. More sophisticated interactions may also be shared, including sharing the whole Desktop Environment (this is called an Instant Session). In an Instant Session, when a user opens a window in the Webtop, his friend sees the window being opened. Likewise, when his friend closes a window, the user sees the window being closed.</p>
<p><strong>Conclusion</strong></p>
<p>In this text, we have presented ISS (Instant Syndicating Standards), an open set of standards that challenges the top-down model of information-sharing and gives place to a bottom-up model, where each person has a unique voice and equal opportunity to contribute and benefit. In this way, we hope to bring people closer together to discuss common interests and share information in a more open and democratic manner.</p>
<p>Also, we have presented the IOS and ITOP open standards, which we believe will help people to have more rich and profound experiences. We want to bring the Instant from Instant Messaging to the Web. And by Instant, the most important aspect that we want to exploit is not so much the When, but the Who. We want to empower individuals to &#8220;exchange&#8221; their Operating Systems and Desktop Environments with friends much the same way that they exchange Messages with friends when using Instant Messaging applications.</p>
<p>Along these two decades, the Web has evolved tremendously. The Web&#8217;s influence in democratizing access to information is evident. Yet, there is still a long way to go before reaching a truly democratic Web, where information flows freely in all directions. Also, there is still a long way to go before reaching a truly interactive Web, where people can connect with each other to create rich and profound experiences. We hope that the work here presented will help shape the way we share information, services and interactions in the next decade, as we believe that this will fundamentally shape us into better individuals and into a better society as a whole.</p>
<p><strong>Acknowledgements<br />
</strong></p>
<p>I would like to thank the following organizations for sponsoring my work:</p>
<ul>
<li>The GIMSCOP research group from UFRGS university for sponsoring the development of the Drupal WebOS and Ext Webtop. Special regards to my mentor Dr. Jorge Otávio Trierweiler.</li>
<li>The PPGC (Computer Graduate Program) from UFRGS university and the CAPES brazilian federal agency, who provided me with a scholarship to develop ISS. Special regards to my mentor Dr. José Valdeni de Lima.</li>
<li>The Knight Foundation, for sponsoring the development of ISS on top of Drupal. Special regards to the UFRGSWeb team for helping me out and for giving me the opportunity to mentor them.</li>
</ul>
<p>I would also like to thank the following open source communities for their contributions:</p>
<ul>
<li>Dries Buytaert and the Drupal community. Special regards to Scott Nelson for the Services Module and Dmitri Gaskin for the JSON Server Module.</li>
<li>Jack Slocum and the ExtJS Community. Special regards to Todd Murdock for the Web Desktop extension and Thorsten Suckow-Homberg for the LiveGrid extension.</li>
</ul>
<p><strong>Further Information</strong></p>
<ul>
<li><a title="Instant Syndicating Standards" href="http://iss.im">ISS (Instant Syndicating Standards)</a></li>
<li><a title="Instant Operating System" href="http://ios.iss.im">IOS (Instant Operating System)</a></li>
<li><a title="Instant Desktop Environment" href="http://itop.iss.im">ITOP (Instant Desktop Environment)</a></li>
</ul>
<p><strong>References</strong></p>
<ul>
<li><a href="http://iss.im/references">http://iss.im/references</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://nick.iss.im/2009/06/16/sharing-information-services-and-interactions-in-the-next-decade/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The sessionLink</title>
		<link>http://nick.iss.im/2009/06/03/the-sessionlink/</link>
		<comments>http://nick.iss.im/2009/06/03/the-sessionlink/#comments</comments>
		<pubDate>Wed, 03 Jun 2009 19:45:04 +0000</pubDate>
		<dc:creator>nick</dc:creator>
				<category><![CDATA[ios]]></category>
		<category><![CDATA[itop]]></category>

		<guid isPermaLink="false">http://nick.iss.im/?p=183</guid>
		<description><![CDATA[The Drupal WebOS provides several services to the Ext Webtop. The structure of these services are well described and they can either be static or dynamic in nature. The difference between static and dynamic services is that the dynamic services can be seen more as a stream of information and they can be used to [...]]]></description>
			<content:encoded><![CDATA[<p>The <a title="Drupal WebOS" href="http://nick.iss.im/2009/03/27/drupal-webos-overview/">Drupal WebOS</a> provides several services to the <a title="Ext Webtop" href="http://nick.iss.im/2009/03/25/ext-webtop-overview/">Ext Webtop</a>. The structure of these services are well described and they can either be static or dynamic in nature. The difference between static and dynamic services is that the dynamic services can be seen more as a stream of information and they can be used to provide users with (almost) real-time updates. If there is a great number of dynamic services being requested at a given time, however, the performance of the application can suffer substantially. To solve this issue, we present the sessionLink.</p>
<p>The sessionLink is a service that follows the publish/subscribe pattern and provides users and applications with updates for subscribed services. For example, when a chat application is loaded in the Ext Webtop, the Webtop subscribes to the <strong>user.im</strong> service to be kept aware of any updates.</p>
<p>The following is a simplified description of the <strong>user.im</strong> service:<br />
<code><br />
{"method": "user.im",<br />
"sessionlink": "payload",<br />
"time": "2000",<br />
"sid": "14"<br />
}<br />
</code></p>
<p>The &#8220;sessionlink&#8221; can either be set to none, payload or timestamp. Services by default are static and there is no need to define sessionlink. A dynamic service on the other hand must have &#8220;sessionlink&#8221; set to payload or timestamp. When payload is set, the <strong>session.link</strong> service will return the payload for the subscribed method. Otherwise, if timestamp is set, it will only return a (unix) timestamp, thus requiring the Webtop to make an additional call to receive the update. For applications like chat, where speed is essential and the content is small, it&#8217;s recommended to set sessionlink to payload.</p>
<p>The time can also be set. This will help determine how often the Webtop will have to poll the <strong>session.link</strong> service. The lowest time of the current set of subscribed services is used. For example, if the Webtop is calling <strong>session.link</strong> every 30 seconds and the user loads the chat application, then the Webtop will start polling <strong>session.link</strong> every 2 seconds (2000 milliseconds).</p>
<p>The subscriptions are managed automatically by the Webtop by calling the <strong>session.subscribe</strong> service:<br />
<code></p>
<p>http://webos.iss.im/services/json</p>
<p>method=session.subscribe<br />
sid=14<br />
</code></p>
<p>The <strong>user.im</strong> service has a sid (Service ID) of 14. The <strong>session.subscribe</strong> service actually handles sid as a string, thus enabling the Webtop to subscribe to several services at the same time (just use a comma to separate the sids).</p>
<p>To unsubscribe, there is the <strong>session.unsubscribe</strong> service that works the same way. If the user closes the chat application and he or she is not talking to anyone else, the Webtop can unsubscribe from the <strong>user.im</strong> service:<br />
<code></p>
<p>http://webos.iss.im/services/json</p>
<p>method=session.unsubscribe<br />
sid=14<br />
</code></p>
<p>In conclusion, the sessionLink is a key component that helps the Webtop to be kept aware of any updates in an easy and straight-forward way. This component will help developers create applications that provide real-time collaboration and offer users a more seamless experience.</p>
]]></content:encoded>
			<wfw:commentRss>http://nick.iss.im/2009/06/03/the-sessionlink/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The serviceLink</title>
		<link>http://nick.iss.im/2009/03/31/the-servicelink/</link>
		<comments>http://nick.iss.im/2009/03/31/the-servicelink/#comments</comments>
		<pubDate>Tue, 31 Mar 2009 20:40:04 +0000</pubDate>
		<dc:creator>nick</dc:creator>
				<category><![CDATA[ios]]></category>

		<guid isPermaLink="false">http://nick.iss.im/?p=128</guid>
		<description><![CDATA[The Ext Webtop and the Drupal WebOS are two independent systems loosely coupled that follow a service-oriented architecture. The Webtop requests and receives services from the WebOS. The serviceLink is a structured format that links services together. All services served by the WebOS are well described, allowing the Webtop to do some intelligent data binding. [...]]]></description>
			<content:encoded><![CDATA[<p>The Ext Webtop and the Drupal WebOS are two independent systems loosely coupled that follow a service-oriented architecture. The Webtop requests and receives services from the WebOS. The serviceLink is a structured format that links services together. All services served by the WebOS are well described, allowing the Webtop to do some intelligent data binding. When a serviceLink is invoked, the Webtop verifies what are the required and optional parameters and matches that with the data provided.</p>
<p>The following is a simplified description of the <strong>user.list</strong> service:<br />
<code><br />
{"method": "user.list",<br />
"args": [{"name": "uid", type: "int", "desc": "User ID", "required": "0"}],<br />
"return": [<br />
{"name": "name", type: "string", "desc": "Name of the User"},<br />
{"name": "sl", type: "int", "desc": "ServiceLink"},<br />
{"name": "uid", type: "int", "desc": "User ID"}],<br />
"type": "list"}<br />
</code></p>
<p>And a simplified description of the <strong>user.load</strong> service is presented below:<br />
<code><br />
{"method": "user.load",<br />
"args": [{"name": "uid", type: "int", "desc": "User ID", "required": "1"}],<br />
"return": [<br />
{"name": "uid", type: "int", "desc": "User ID"},<br />
{"name": "name", type: "string", "desc": "Name of the User"},<br />
{"name": "mail", type: "string", "desc": "Email of the User"},<br />
{"name": "picture", type: "string", "desc": "Picture of the User"}],<br />
"type": "form"}<br />
</code></p>
<p>This might be the JSON result returned when requesting <strong>user.list</strong>:<br />
<code><br />
{"list":{"items":<br />
[{"name":"Ariel Kempf", "sl":"1", "uid":"2"},<br />
{"name":"Jorge Trierweiler", "sl":"1", "uid":"4"},<br />
{"name":"Marcelo Farenzena", "sl":"1", "uid":"7"},<br />
{"name":"Ricardo Duraiski", "sl":"1", "uid":"3"}],<br />
"total_count":"4","version":"1"},<br />
"servicelink":{<br />
"fields":["sl"],<br />
"actions":[<br />
{"Select All":"javascript:selectall()"},<br />
{"Unselect":"javascript:unselect()"},<br />
{"Add New":"local:user.add"},<br />
{"Delete":"local:user.delete"}],<br />
"prefix":[{"local":"http:\/\/localhost\/drupal\/services\/json?method="}],<br />
"alias":[{"1":"local:user.load"}]<br />
}}<br />
</code></p>
<p>The list provided can have special fields representing a serviceLink. This is specified in the serviceLink&#8217;s &#8220;fields&#8221;. In this case, we have only one field: &#8220;sl&#8221;. It&#8217;s also possible to call multiple services simultaneously. All we have to do is add new fields and list them in the serviceLink&#8217;s &#8220;fields&#8221;. This way, we can display a new list, a form, a media, fetch some data, all at the same time.</p>
<p>A serviceLink can be a remote service from any network, or a javascript function. The &#8220;actions&#8221; provides data that populates the menu in the list&#8217;s toolbar. This let&#8217;s users perform actions. For example, the user can select a specific user and delete it (local:user.delete). Or the user may select all users (javascript:selectall()) and perform some other action. The &#8220;prefix&#8221; tells the Webtop that it should substitute &#8220;local&#8221; for &#8220;http://localhost/drupal/services/json?method=&#8221;.</p>
<p>By clicking on the first row (Ariel Kempf), the user.load service is called. This service requires uid as a parameter. The Webtop performs some intelligent data binding and passes the uid from this first row (uid=2). The user.load service returns a form. This form is displayed inline, showing more details about this particular user.</p>
<p>One other interesting thing to notice is the use of &#8220;alias&#8221; as a shortcut. This is important for a long list where for any row we call one unique service (or a few different services). If all services are different, then there is no need to add an alias.</p>
]]></content:encoded>
			<wfw:commentRss>http://nick.iss.im/2009/03/31/the-servicelink/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Drupal WebOS Overview</title>
		<link>http://nick.iss.im/2009/03/27/drupal-webos-overview/</link>
		<comments>http://nick.iss.im/2009/03/27/drupal-webos-overview/#comments</comments>
		<pubDate>Fri, 27 Mar 2009 14:47:41 +0000</pubDate>
		<dc:creator>nick</dc:creator>
				<category><![CDATA[ios]]></category>

		<guid isPermaLink="false">http://nick.iss.im/?p=121</guid>
		<description><![CDATA[While the Ext Webtop acts as the front-end handling user interaction, the Drupal WebOS acts as the back-end providing all the data and services. The key idea behind the Drupal WebOS is the serviceLink, a structured format that creates a link between services. Users can hop from one service to another, including services served by [...]]]></description>
			<content:encoded><![CDATA[<p>While the Ext Webtop acts as the front-end handling user interaction, the Drupal WebOS acts as the back-end providing all the data and services. The key idea behind the Drupal WebOS is the serviceLink, a structured format that creates a link between services. Users can hop from one service to another, including services served by other networks. Services can be combined to create rich mash-ups. The figure below is a screenshot of a service being provided by the Drupal WebOS.</p>
<div id="attachment_120" class="wp-caption aligncenter" style="width: 287px"><a href="http://nick.iss.im/wp-content/uploads/2009/03/servicelink.png"><img class="size-medium wp-image-120" title="Drupal WebOS" src="http://nick.iss.im/wp-content/uploads/2009/03/servicelink-277x300.png" alt="The Drupal WebOS serving the Ext Webtop" width="277" height="300" /></a><p class="wp-caption-text">The Drupal WebOS serving the Ext Webtop.</p></div>
<p>The Drupal WebOS provides the following features:</p>
<ul>
<li> <strong>Services</strong>: Expose web services. Provide access across different networks securely;</li>
<li> <strong>Users</strong>: Register users. Assign Roles. Give permissions. Manage personal contacts lists;</li>
<li> <strong>Content</strong>: Create content with associated fields. Handle form display and validation;</li>
<li> <strong>Channels</strong>: Create channels and link them together. Aggregate and syndicate entries;</li>
<li> <strong>Files</strong>: Store documents and files. Handle image, audio and video. Export file types;</li>
<li> <strong>Language</strong>: Provide localization. Translate strings and content to different languages;</li>
<li> <strong>Search</strong>: Provide federated search results for both structured and unstructured data;</li>
<li> <strong>Sessions</strong>: Save and record sessions. Assist in providing instant sessions among users.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://nick.iss.im/2009/03/27/drupal-webos-overview/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Ext Webtop and Drupal WebOS</title>
		<link>http://nick.iss.im/2009/03/23/ext-webtop-and-drupal-webos/</link>
		<comments>http://nick.iss.im/2009/03/23/ext-webtop-and-drupal-webos/#comments</comments>
		<pubDate>Mon, 23 Mar 2009 17:27:26 +0000</pubDate>
		<dc:creator>nick</dc:creator>
				<category><![CDATA[ios]]></category>
		<category><![CDATA[itop]]></category>

		<guid isPermaLink="false">http://nick.iss.im/?p=106</guid>
		<description><![CDATA[The Web is evolving rapidly and Web applications are starting to reach the same level of functionality of desktop applications. Perhaps we can even risk to say that Web applications will soon surpass desktop applications in functionality given the interconnected and ubiquitous nature of the Web. Despite the differences among Web browsers, there has been [...]]]></description>
			<content:encoded><![CDATA[<p>The Web is evolving rapidly and Web applications are starting to reach the same level of functionality of desktop applications. Perhaps we can even risk to say that Web applications will soon surpass desktop applications in functionality given the interconnected and ubiquitous nature of the Web. Despite the differences among Web browsers, there has been an increasing convergence of standards and practices, mostly promoted by the W3C (World Wide Web Consortium) and the Ecma International. The emergence of powerful JavaScript frameworks has also tremendously helped developers to abstract beyond these differences and create rich internet applications easier and faster. Soon, users will be able to access Web applications much like they access desktop applications by using a Webtop, i.e. a desktop that runs on top of the Web browser.</p>
<p>In the server-side, we have seen a consolidation of the LAMP stack and its derivatives, which consists of an Operating System, a Web Server, a Scripting Language and a Database. On top of this stack we have seen the emergence of Web frameworks for managing content, users, applications and services. Notice that traditionally the management of these has been the responsibility of Operating Systems. However, this responsibility is being delegated up the stack so that it can benefit from the key aspects of the Web. This trend will ultimately lead to a WebOS, i.e. an Operating System that runs on top of the Web server.</p>
<p>The figure below illustrates this evolving architecture. The main goal of this publication is to explain how to develop Web services and applications following this architectural design. More specifically, the objective of this publication is to to explain how to develop Web services and applications using the ExtJS framework as a Webtop and the Drupal framework as a WebOS.</p>
<div id="attachment_105" class="wp-caption aligncenter" style="width: 337px"><a href="http://nick.iss.im/wp-content/uploads/2009/03/itop.png"><img class="size-full wp-image-105" title="itop" src="http://nick.iss.im/wp-content/uploads/2009/03/itop.png" alt="Web Architecture - towards the Webtop ad WebOS." width="327" height="285" /></a><p class="wp-caption-text">Web Architecture - towards the Webtop and WebOS.</p></div>
]]></content:encoded>
			<wfw:commentRss>http://nick.iss.im/2009/03/23/ext-webtop-and-drupal-webos/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Syndicated Search</title>
		<link>http://nick.iss.im/2008/05/20/syndicated-search/</link>
		<comments>http://nick.iss.im/2008/05/20/syndicated-search/#comments</comments>
		<pubDate>Tue, 20 May 2008 13:35:49 +0000</pubDate>
		<dc:creator>nick</dc:creator>
				<category><![CDATA[ios]]></category>
		<category><![CDATA[iss]]></category>

		<guid isPermaLink="false">http://nick.iss.im/2008/05/20/syndicated-search/</guid>
		<description><![CDATA[I&#8217;m currently thinking about syndicated search for ISS. A search that is totally decentralized and served by friends (and friends of friends) for an extended period of time. This is the basic workflow:

Each individual generates a social graph beforehand consulting the cascading taglinks;
A query can be sent to friends up to x degrees apart, where [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m currently thinking about <em>syndicated search</em> for ISS. A search that is totally decentralized and served by friends (and friends of friends) for an extended period of time. This is the basic workflow:</p>
<ul>
<li>Each individual generates a social graph beforehand consulting the cascading taglinks;</li>
<li>A query can be sent to friends up to <em>x</em> degrees apart, where <em>x</em> is define by the user;</li>
<li>This query is published on the users&#8217; <em>searched</em> node with an ID and a TTL;</li>
<li>Friends may accept the query and see if they have entries that match. If so, they send the IDs of the matched entries and publish that to their <em>matched</em> node. The query is kept alive until the TTL expires or according to the policies;</li>
<li> Users receive the matched entries in their aggregator. These appear associated with the original query and separated from the main flow of the aggregator.</li>
</ul>
<p>Further Reading:</p>
<ul>
<li><a title="OpenSearch" href="http://www.opensearch.org">OpenSearch</a>, (2008);</li>
<li><a title="Jabber Search" href="http://www.xmpp.org/extensions/xep-0055.html">XEP-0055: Jabber Search</a>, (2008);</li>
<li><a title="Permanent Link: JQbus: social graph query with XMPP/SPARQL" rel="bookmark" href="http://danbri.org/words/2008/02/11/278">JQbus: social graph query with XMPP/SPARQL</a>, Dan Brickley, (2008);</li>
<li><span class="biblio-title"><a href="http://iss.im/node/59">Decentralized Meta-Data Strategies: Effective Peer-to-Peer Search</a></span>,  <span class="biblio-authors"><a href="http://iss.im/references/author/Joseph">Joseph, Sam</a>; <a href="http://iss.im/references/author/Hoshiai">Hoshiai, Takashige</a></span> , IEICE Transactions on Communications, Volume E86-B, Number 6, p.1740-1753, (2003);</li>
<li><span class="biblio-title"><a href="http://iss.im/node/73">Looking up data in P2P systems</a></span>,  <span class="biblio-authors"><a href="http://iss.im/references/author/Balakrishnan">Balakrishnan, Hari</a>; <a href="http://iss.im/references/author/Kaashoek">Kaashoek, M. Frans</a>; <a href="http://iss.im/references/author/Karger">Karger, David</a>; <a href="http://iss.im/references/author/Morris">Morris, Robert</a>; <a href="http://iss.im/references/author/Stoica">Stoica, Ion</a></span> , Commun. ACM, Volume 46, Number 2, New York, NY, USA, p.43&#8211;48, (2003);</li>
<li><span class="biblio-title"><a href="http://iss.im/node/93">Designing Semantic Publish/Subscribe Networks using Super-Peers</a></span>,  <span class="biblio-authors"><a href="http://iss.im/references/author/Chirita">Chirita, Paul-Alexandru</a>; <a href="http://iss.im/references/author/Idreos">Idreos, Stratos</a>; <a href="http://iss.im/references/author/Koubarakis">Koubarakis, Manolis</a>; <a href="http://iss.im/references/author/Nejdl">Nejdl, Wolfgang</a></span> , Semantic Web and Peer-to-Peer, December, (2005);</li>
<li><span class="biblio-title"><a href="http://iss.im/node/134">EDUTELLA: a P2P networking infrastructure based on RDF</a></span>,  <span class="biblio-authors"><a href="http://iss.im/references/author/Nejdl">Nejdl, Wolfgang</a>; <a href="http://iss.im/references/author/Wolf">Wolf, Boris</a>; <a href="http://iss.im/references/author/Qu">Qu, Changtao</a>; <a href="http://iss.im/references/author/Decker">Decker, Stefan</a>; <a href="http://iss.im/references/author/Sintek">Sintek, Michael</a>; <a href="http://iss.im/references/author/Naeve">Naeve, Ambjorn</a>; <a href="http://iss.im/references/author/Nilsson">Nilsson, Mikael</a>; <a href="http://iss.im/references/author/Palm%C3%A9r">Palmér, Matthias</a>; <a href="http://iss.im/references/author/Risch">Risch, Tore</a></span> , WWW &#8216;02: Proceedings of the 11th international conference on World Wide Web, New York, NY, USA, p.604&#8211;615, (2002);</li>
<li><span class="biblio-title"><a href="http://iss.im/node/69">The anatomy of a large-scale hypertextual Web search engine</a></span>,  <span class="biblio-authors"><a href="http://iss.im/references/author/Brin">Brin, Sergey</a>; <a href="http://iss.im/references/author/Page">Page, Lawrence</a></span> , Computer Networks and ISDN Systems, Volume 30, Number 1&#8211;7, p.107&#8211;117, (1998);</li>
<li><span class="biblio-title"><a href="http://iss.im/node/70">The PageRank Citation Ranking: Bringing Order to the Web</a></span>,  <span class="biblio-authors"><a href="http://iss.im/references/author/Page">Page, Lawrence</a>; <a href="http://iss.im/references/author/Brin">Brin, Sergey</a>; <a href="http://iss.im/references/author/Motwani">Motwani, Rajeev</a>; <a href="http://iss.im/references/author/Winograd">Winograd, Terry</a></span> , (1998).</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://nick.iss.im/2008/05/20/syndicated-search/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

