<?xml version="1.0"?>
<rdf:RDF
	xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:foaf="http://xmlns.com/foaf/0.1/"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns="http://purl.org/rss/1.0/"
>
<channel rdf:about="http://planet.jabber.org/">
	<title>Planet Jabber</title>
	<link>http://planet.jabber.org/</link>
	<description>Planet Jabber - http://planet.jabber.org/</description>

	<items>
		<rdf:Seq>
			<rdf:li rdf:resource="http://blog.prosody.im/prosody-0-9-0rc3-available-for-testing/" />
			<rdf:li rdf:resource="http://xmpp.org/?p=2801" />
			<rdf:li rdf:resource="http://www.tigase.org/4071 at http://www.tigase.org" />
			<rdf:li rdf:resource="http://blog.movim.eu/?p=86" />
			<rdf:li rdf:resource="tag:stpeter.im,1489" />
			<rdf:li rdf:resource="tag:stpeter.im,1488" />
			<rdf:li rdf:resource="http://blog.prosody.im/prosody-0-9-0rc2-available-for-testing/" />
			<rdf:li rdf:resource="http://www.ag-software.de/?p=1435" />
			<rdf:li rdf:resource="http://community.igniterealtime.org/blogs/ignite/2013/05/28/openfire-382-has-been-released" />
			<rdf:li rdf:resource="http://www.tigase.org/4059 at http://www.tigase.org" />
			<rdf:li rdf:resource="tag:metajack.im:/2013/05/26/servo-update-navigation-scrolling-gpu-rendering-underlines-and-more/" />
			<rdf:li rdf:resource="http://code-bear.com/bearlog/2013/05/24/google-hangout-chat-and-the-missing-xmpp/" />
			<rdf:li rdf:resource="tag:stpeter.im,1487" />
			<rdf:li rdf:resource="tag:stpeter.im,1486" />
			<rdf:li rdf:resource="http://code-bear.com/bearlog/2013/05/19/xmpp-features-now-missing-from-gtalk-aka-hangout-chat/" />
			<rdf:li rdf:resource="http://code-bear.com/bearlog/2013/05/19/i-welcome-google-as-the-new-borg/" />
			<rdf:li rdf:resource="tag:el-tramo.be,2013-05-18:/blog/vim-plugins/" />
			<rdf:li rdf:resource="tag:el-tramo.be,2013-05-18:/blog/my-favorite-vim-plugins/" />
			<rdf:li rdf:resource="tag:el-tramo.be,2013-05-18:/blog/my-favorite-plugins/" />
			<rdf:li rdf:resource="http://blog.process-one.net/?p=1159" />
			<rdf:li rdf:resource="http://blog.prosody.im/prosody-0-9-0beta1-available-for-testing/" />
			<rdf:li rdf:resource="http://blog.process-one.net/?p=1155" />
			<rdf:li rdf:resource="http://isode.com/company/wordpress/?p=2105" />
			<rdf:li rdf:resource="tag:blogger.com,1999:blog-2875641587368436167.post-9173745859332246931" />
			<rdf:li rdf:resource="http://community.igniterealtime.org/blogs/ignite/2013/05/04/smack-33-is-released" />
		</rdf:Seq>
	</items>
</channel>

<item rdf:about="http://blog.prosody.im/prosody-0-9-0rc3-available-for-testing/">
	<title>Prosodical Thoughts: Prosody 0.9.0rc3 available for testing</title>
	<link>http://blog.prosody.im/prosody-0-9-0rc3-available-for-testing/</link>
	<content:encoded>&lt;p&gt;After everyone's wonderful help at finding bugs (&lt;em&gt;cheer&lt;/em&gt;), we've another release candidate for you
from our 0.9 branch.&lt;/p&gt;

&lt;p&gt;The primary reason for this RC is to keep compatibility with the just-released
&lt;a href=&quot;http://lua-users.org/lists/lua-l/2013-06/msg00255.html&quot;&gt;LuaSocket 3.0rc1&lt;/a&gt;. The new LuaSocket is now available
from our package repository, and we have updated our &lt;a href=&quot;http://prosody.im/doc/ipv6&quot;&gt;IPv6 documentation&lt;/a&gt; accordingly.
If you have previously installed &lt;code&gt;lua-socket-prosody&lt;/code&gt;, it is now recommended to install the &lt;code&gt;lua-socket&lt;/code&gt; package
instead.&lt;/p&gt;

&lt;p&gt;Summary of changes made since rc2:&lt;/p&gt;

&lt;ul&gt;
    &lt;li&gt;Ensure &lt;code&gt;select()&lt;/code&gt; backend acts correctly when reaching its limits.&lt;/li&gt;
    &lt;li&gt;PEP: Reflect generated id back to the client.&lt;/li&gt;
    &lt;li&gt;Pubsub: Check whether node exists, when deleting.&lt;/li&gt;
    &lt;li&gt;Add missing SSL options for Diffie-Hellman and Elliptic-Curve parameters, with the latter enabled by default&lt;/li&gt;
    &lt;li&gt;Moved function for listing local IP addresses from LuaSocket to &lt;code&gt;util.net&lt;/code&gt;.&lt;/li&gt;
    &lt;li&gt;Add server:memory() command to view details of Prosody's memory usage in the telnet console.&lt;/li&gt;
    &lt;li&gt;A couple of input validation fixes in the telnet console.&lt;/li&gt;
    &lt;li&gt;MUC: Small variable name fix.&lt;/li&gt;
    &lt;li&gt;BOSH: Remove various unused headers.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Don't forget to keep your &lt;a href=&quot;http://prosody.im/discuss&quot;&gt;feedback on the release&lt;/a&gt; coming to us!&lt;/p&gt;

&lt;h2&gt;Download&lt;/h2&gt;

&lt;h3&gt;Debian/Ubuntu&lt;/h3&gt;

&lt;p&gt;If you are using our &lt;a href=&quot;http://prosody.im/doc/package_repository&quot;&gt;package repository&lt;/a&gt; then you can simply install
the &lt;em&gt;prosody-0.9&lt;/em&gt; package, which automatically tracks our 0.9 branch. This release is build 142.&lt;/p&gt;

&lt;p&gt;Alternatively you can download packages manually from &lt;a href=&quot;http://packages.prosody.im/debian/pool/dev/p/prosody/&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;Windows&lt;/h3&gt;





&lt;ul&gt;
    &lt;li&gt;Windows builds are coming soon!&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;Source&lt;/h3&gt;

&lt;ul&gt;
    &lt;li&gt;&lt;strong&gt;Source tarball&lt;/strong&gt;: &lt;a href=&quot;http://prosody.im/tmp/0.9.0rc3/prosody-0.9.0rc3.tar.gz&quot;&gt;prosody-0.9.0rc3.tar.gz&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</content:encoded>
	<dc:date>2013-06-18T23:15:53+00:00</dc:date>
	<dc:creator>The Prosody Team</dc:creator>
</item>
<item rdf:about="http://xmpp.org/?p=2801">
	<title>The XMPP Standards Foundation: Hackfest in Berlin on July 27</title>
	<link>http://xmpp.org/2013/06/hackfest-in-berlin-on-july-27/</link>
	<content:encoded>&lt;p&gt;The XSF will hold a developer hackfest on July 27, 2013 in Berlin, Germany. This is the Saturday before &lt;a href=&quot;https://www.ietf.org/meeting/87/index.html&quot;&gt;IETF 87&lt;/a&gt;. Details are available at &lt;a href=&quot;http://wiki.xmpp.org/web/Berlin_Hackfest&quot;&gt;http://wiki.xmpp.org/web/Berlin_Hackfest&lt;/a&gt;.&lt;/p&gt;</content:encoded>
	<dc:date>2013-06-11T22:43:31+00:00</dc:date>
	<dc:creator>stpeter</dc:creator>
</item>
<item rdf:about="http://www.tigase.org/4071 at http://www.tigase.org">
	<title>Tigase Blog: Tigase Load Balancing</title>
	<link>http://www.tigase.org/content/tigase-load-balancing</link>
	<content:encoded>&lt;p&gt;Starting with version 5.2.0 Tigase introduces a load balancing functionality allowing users to be redirected to the most suitable cluster node. Functionality relies on a &lt;a href=&quot;http://xmpp.org/rfcs/rfc6120.html#streams-error-conditions-see-other-host&quot;&gt;see-other-host&lt;/a&gt; XMPP stream error message. Basic principle behind the mechanism is that user will get redirect if the host returned by the implementaion differ from the host to which user currently tries to connect. It is required that the user JID to be known for the redirection to work correctly.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Available implementations&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Tigase implementation is, as usual, extensible and allows for different, pluggable redirection strategies that implement &lt;span style=&quot;font-family: 'courier new', courier;&quot;&gt;&lt;em&gt;SeeOtherHostIfc&lt;/em&gt;&lt;/span&gt; interface.&lt;/p&gt;&lt;p&gt;Currently there are three strategies available:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;span style=&quot;font-family: 'courier new', courier;&quot;&gt;&lt;em&gt;SeeOtherHost&lt;/em&gt;&lt;/span&gt; - most basic implementation returning either single host configured in init.properties file or name of the current host;&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;font-family: 'courier new', courier;&quot;&gt;&lt;em&gt;SeeOtherHostHashed&lt;/em&gt;&lt;/span&gt; (default) - default implementation for cluster environment of &lt;em&gt;SeeOtherHostIfc&lt;/em&gt; returning redirect host based on the hash value of the user's JID; list of the available nodes from which selection would be made is by default composed and reflects all connected nodes, alternatively hosts list can be configured in the init.properties;&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;font-family: 'courier new', courier;&quot;&gt;&lt;em&gt;SeeOtherHostDB&lt;/em&gt;&lt;/span&gt; - extended implementation of SeeOtherHost using redirect information from database in the form of pairs &lt;em&gt;user_id&lt;/em&gt; and &lt;em&gt;node_id&lt;/em&gt; to which given user should be redirected.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;Configuration options&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Most basic configuration is related to the choice of actual redirection implementation:&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: 'courier new', courier;&quot;&gt;--cm-see-other-host=&lt;/span&gt;&lt;/p&gt;&lt;p&gt;Possible values are:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;tigase.server.xmppclient.SeeOtherHost&lt;/li&gt;&lt;li&gt;tigase.server.xmppclient.SeeOtherHostHashed&lt;/li&gt;&lt;li&gt;tigase.server.xmppclient.SeeOtherHostDB&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;All the remaining options are configured on per-connection-manager basis thus all options need to be prefixed with corresponding connection manager ID, i.e. &lt;span style=&quot;font-family: 'courier new', courier;&quot;&gt;c2s&lt;/span&gt;, &lt;span style=&quot;font-family: 'courier new', courier;&quot;&gt;bosh&lt;/span&gt; or &lt;span style=&quot;font-family: 'courier new', courier;&quot;&gt;ws&lt;/span&gt;; we will use c2s in the examples:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;span style=&quot;font-family: 'courier new', courier;&quot;&gt;c2s/cm-see-other-host/default-host=host1;host2;host3&lt;/span&gt; - a semicolon separated list of hosts to be used for redirection;&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;font-family: 'courier new', courier;&quot;&gt;c2s/cm-see-other-host/active=OPEN;LOGIN&lt;/span&gt; - a semicolon separated list of phases in which redirection should be active; currently possible values are: &lt;em&gt;OPEN&lt;/em&gt; which enables redirection during opening of the XMPP stream; &lt;em&gt;LOGIN&lt;/em&gt; which enables redirection upon authenticating user session.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;For &lt;span style=&quot;font-family: 'courier new', courier;&quot;&gt;SeeOtherHostDB&lt;/span&gt; implementation there are additional options:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;span style=&quot;font-family: 'courier new', courier;&quot;&gt;c2s/cm-see-other-host/db-url&lt;/span&gt; - a JDBC connection URI which should be used to query redirect information; if not configured &lt;span style=&quot;font-family: 'courier new', courier;&quot;&gt;--user-db-uri&lt;/span&gt; will be used;&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;font-family: 'courier new', courier;&quot;&gt;c2s/cm-see-other-host/get-host-query&lt;/span&gt; - a SQL query which should return redirection hostname;&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;font-family: 'courier new', courier;&quot;&gt;c2s/cm-see-other-host/get-all-data-query&lt;/span&gt; - a SQL helper query which should return all redirection data from database;&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;font-family: 'courier new', courier;&quot;&gt;c2s/cm-see-other-host/get-all-query-timeout&lt;/span&gt; - allows to set timeout for executed queries.&lt;/li&gt;&lt;/ul&gt;</content:encoded>
	<dc:date>2013-06-10T14:49:12+00:00</dc:date>
	<dc:creator>wojtek</dc:creator>
</item>
<item rdf:about="http://blog.movim.eu/?p=86">
	<title>Movim Blog: Ubuntu Party Paris 13.04: Podcast of the conference</title>
	<link>http://blog.movim.eu/ubuntu-party-paris-13-04-podcast-of-the-conference/</link>
	<content:encoded>&lt;p&gt;Vincent has given a conference in french last week, &lt;a href=&quot;http://ubuntu-party.org/paris-1er-juin-2013/&quot;&gt;on the 2nd June&lt;/a&gt;.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;video controls=&quot;controls&quot;&gt;&lt;br /&gt;
          &lt;source src=&quot;http://influence-pc.fr/media/movim/2013/Ubuntu%20Party%2013.04/Movim,%20r%c3%a9seau%20social%20d%c3%a9centralis%c3%a9%20-%202013-06-02%20-%20Vincent.webm&quot; type=&quot;video/webm&quot;&gt;&lt;br /&gt;
          &lt;source src=&quot;http://influence-pc.fr/media/movim/2013/Ubuntu%20Party%2013.04/Movim,%20r%c3%a9seau%20social%20d%c3%a9centralis%c3%a9%20-%202013-06-02%20-%20Vincent.ogv&quot; type=&quot;video/ogg&quot;&gt;&lt;br /&gt;
          &lt;source src=&quot;http://influence-pc.fr/media/movim/2013/Ubuntu%20Party%2013.04/Movim,%20r%c3%a9seau%20social%20d%c3%a9centralis%c3%a9%20-%202013-06-02%20-%20Vincent.mp4&quot; type=&quot;video/mp4&quot;&gt;&lt;br /&gt;
    &lt;/source&gt;&lt;/source&gt;&lt;/source&gt;&lt;/video&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://influence-pc.fr/media/movim/2013/Ubuntu%20Party%2013.04/Movim,%20r%c3%a9seau%20social%20d%c3%a9centralis%c3%a9%20-%202013-06-02%20-%20Vincent.webm&quot;&gt;Download video in webm&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://influence-pc.fr/media/movim/2013/Ubuntu%20Party%2013.04/Movim,%20r%c3%a9seau%20social%20d%c3%a9centralis%c3%a9%20-%202013-06-02%20-%20Vincent.ogv&quot;&gt;Download video in ogv&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://influence-pc.fr/media/movim/2013/Ubuntu%20Party%2013.04/Movim,%20r%c3%a9seau%20social%20d%c3%a9centralis%c3%a9%20-%202013-06-02%20-%20Vincent.mp4&quot;&gt;Download video in mp4&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://influence-pc.fr/media/movim/2013/Ubuntu%20Party%2013.04/Movim,%20r%c3%a9seau%20social%20d%c3%a9centralis%c3%a9%20-%202013-06-02%20-%20Vincent.odp&quot;&gt;Download slideshow in odp&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://influence-pc.fr/media/movim/2013/Ubuntu%20Party%2013.04/Movim,%20r%c3%a9seau%20social%20d%c3%a9centralis%c3%a9%20-%202013-06-02%20-%20Vincent.pdf&quot;&gt;Download slideshow in pdf&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;http://www.flickr.com/photos/ubuntuparty/8924735005/sizes/o/in/set-72157633855612114/&quot;&gt;&lt;img src=&quot;http://farm4.staticflickr.com/3824/8924735005_b254d5ef55.jpg&quot; alt=&quot;Vincent at the conference&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;http://www.flickr.com/photos/ubuntuparty/8925348024/sizes/o/in/set-72157633855612114/&quot;&gt;&lt;img src=&quot;http://farm6.staticflickr.com/5328/8925348024_4a46fe37e1.jpg&quot; alt=&quot;Vincent at the conference&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;We are also pleased to announce that the PSES2013 (&lt;em&gt;&lt;a href=&quot;http://www.passageenseine.org/pses-2013&quot;&gt;Pas Sage en Seine 2013&lt;/a&gt;&lt;/em&gt;, in Paris) has invited us to present Movim at this event!&lt;br /&gt;
&lt;strong&gt;=&amp;gt; You can meet us on the saturday 22th June from 6.30PM to 7.30PM&lt;/strong&gt;&lt;/p&gt;</content:encoded>
	<dc:date>2013-06-09T10:11:39+00:00</dc:date>
	<dc:creator>movim</dc:creator>
</item>
<item rdf:about="tag:stpeter.im,1489">
	<title>Peter Saint-Andre: Musical Parallels</title>
	<link>http://stpeter.im/journal/1489.html</link>
	<content:encoded>I've been listening to the Bach Cello Suites a lot lately, with the intent of applying some of their spirit to the collection of Yes transcriptions I'm working on. For instance, my transcription of &quot;Turn of the Century&quot; was already more measured than the Yes performance on their 1977 album Going For The One, but inspired by the sarabandes of the Cello Suites I'm experimenting with slowing it even further.&lt;p&gt;...&lt;/p&gt;</content:encoded>
	<dc:date>2013-06-08T00:00:00+00:00</dc:date>
</item>
<item rdf:about="tag:stpeter.im,1488">
	<title>Peter Saint-Andre: Ninety-Proof Ink</title>
	<link>http://stpeter.im/journal/1488.html</link>
	<content:encoded>I have come to love short books. As evidence: both The Tao of Roark and Letters on Happiness are less than 60 pages long in the print-on-demand versions I recently produced.&lt;p&gt;...&lt;/p&gt;</content:encoded>
	<dc:date>2013-06-08T00:00:00+00:00</dc:date>
</item>
<item rdf:about="http://blog.prosody.im/prosody-0-9-0rc2-available-for-testing/">
	<title>Prosodical Thoughts: Prosody 0.9.0rc2 available for testing</title>
	<link>http://blog.prosody.im/prosody-0-9-0rc2-available-for-testing/</link>
	<content:encoded>&lt;p&gt;After a very successful &lt;a href=&quot;http://blog.prosody.im/prosody-0-9-0beta1-available-for-testing/&quot;&gt;beta&lt;/a&gt;, we decided it's time for a release
candidate. We have made only a few small changes since beta1:&lt;/p&gt;

&lt;ul&gt;
    &lt;li&gt;With &lt;a href=&quot;http://prosody.im/doc/s2s#security&quot;&gt;s2s_secure_auth&lt;/a&gt; enabled, we required encryption for
    domains listed in s2s_insecure_domains, even if s2s_require_encryption was not set.&lt;/li&gt;
    &lt;li&gt;Some minor fixes to commands in the &lt;a href=&quot;http://prosody.im/doc/console&quot;&gt;telnet console&lt;/a&gt;.&lt;/li&gt;
    &lt;li&gt;Automatically disable SSL compression if &lt;a href=&quot;http://prosody.im/doc/depends/luasec/prosody&quot;&gt;luasec-prosody&lt;/a&gt; is installed.&lt;/li&gt;
    &lt;li&gt;Fix a traceback in mod_bosh when used in combination with some plugins.&lt;/li&gt;
    &lt;li&gt;Fix &lt;a href=&quot;http://prosody.im/doc/pubsub&quot;&gt;pubsub&lt;/a&gt; &quot;get subscriptions&quot; action.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;As always, we depend very much on your feedback. If you give 0.9.0rc2 a try, &lt;a href=&quot;http://prosody.im/discuss&quot;&gt;let us know&lt;/a&gt;
how you get on, even if it's only to tell us it's a complete success!&lt;/p&gt;

&lt;h2&gt;Download&lt;/h2&gt;

&lt;h3&gt;Debian/Ubuntu&lt;/h3&gt;

&lt;p&gt;If you are using our &lt;a href=&quot;http://prosody.im/doc/package_repository&quot;&gt;package repository&lt;/a&gt; then you can simply install
the &lt;em&gt;prosody-0.9&lt;/em&gt; package, which automatically tracks our 0.9 branch.&lt;/p&gt;

&lt;p&gt;Alternatively you can download packages manually from &lt;a href=&quot;http://packages.prosody.im/debian/pool/dev/p/prosody/&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;Windows&lt;/h3&gt;

&lt;ul&gt;
    &lt;li&gt;&lt;a href=&quot;http://prosody.im/tmp/0.9.0rc2/ProsodySetup-0.9.0rc2.exe&quot;&gt;Windows installer&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;http://prosody.im/tmp/0.9.0rc2/Prosody-0.9.0rc2.zip&quot;&gt;Windows zip&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;Source&lt;/h3&gt;

&lt;ul&gt;
    &lt;li&gt;&lt;strong&gt;Source tarball&lt;/strong&gt;: &lt;a href=&quot;http://prosody.im/tmp/0.9.0rc2/prosody-0.9.0rc2.tar.gz&quot;&gt;prosody-0.9.0rc2.tar.gz&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</content:encoded>
	<dc:date>2013-06-05T10:15:11+00:00</dc:date>
	<dc:creator>The Prosody Team</dc:creator>
</item>
<item rdf:about="http://www.ag-software.de/?p=1435">
	<title>Alexander Gnauck: Web clients with MatriX and SignalR</title>
	<link>http://www.ag-software.net/2012/08/20/web-clients-with-matrix-and-signalr/</link>
	<content:encoded>&lt;p&gt;Persistent realtime connections for ASP.NET in code behind to the web browser were hard to implement in the past. There hasn’t been a ASP.NET component for this for a while.&lt;/p&gt;

&lt;p&gt;With &lt;a href=&quot;https://github.com/SignalR&quot;&gt;SignalR&lt;/a&gt; there is an asynchronous realtime signaling library for ASP.NET now that a team at Microsoft is working on. Using &lt;a href=&quot;https://github.com/SignalR&quot;&gt;SignalR&lt;/a&gt; its pretty easy to build real-time web applications.&lt;/p&gt;

&lt;p&gt;Using &lt;a href=&quot;https://github.com/SignalR&quot;&gt;SignalR&lt;/a&gt; and &lt;a href=&quot;http://www.ag-software.net/matrix-xmpp-sdk/&quot;&gt;MatriX&lt;/a&gt; its very easy to write scalable XMPP web applications with a very small amount of JavaScript code.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Let’s get started:&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Create a new ASP.NET MVC web application project first. Then install &lt;a href=&quot;https://github.com/SignalR&quot;&gt;SignalR&lt;/a&gt; using the NuGet Package Console with the following command:&lt;/p&gt;

&lt;pre class=&quot;brush: plain;&quot;&gt;install-package SignalR
&lt;/pre&gt;

&lt;p&gt;This will add &lt;a href=&quot;https://github.com/SignalR&quot;&gt;SignalR&lt;/a&gt; with all required references to the new project we just created.&lt;/p&gt;

&lt;p&gt;Now we create a &lt;a href=&quot;https://github.com/SignalR/SignalR/wiki/Hubs&quot;&gt;Hub&lt;/a&gt; for MatriX. &lt;a href=&quot;https://github.com/SignalR/SignalR/wiki/Hubs&quot;&gt;Hubs&lt;/a&gt; are a higher level framework API to exchange different messages between server (code behind) and client (web browser) bidirectional in realtime.&lt;/p&gt;

&lt;p&gt;We First implement the IConnected and IDisconnect interfaces to the Hub. Our Hub has a static Dictionary for all XmppClients instances. Whenever a new client connects to the bidirectional realtime channel of &lt;a href=&quot;https://github.com/SignalR&quot;&gt;SignalR&lt;/a&gt; we create a new XmppClient instance for it, setup the event handlers and add the client to the dictionary. When a browser disconnects from &lt;a href=&quot;https://github.com/SignalR&quot;&gt;SignalR&lt;/a&gt; we disconnect all event handlers and remove the XmppClient from the dictionary.&lt;/p&gt;

&lt;pre class=&quot;brush: csharp;&quot;&gt;public class MatrixHub : Hub, IConnected, IDisconnect
{
    private static readonly Dictionary&amp;lt;string, XmppClient&amp;gt; XmppClients = new Dictionary&amp;lt;string, XmppClient&amp;gt;();

    public Task Disconnect()
    {
        if (XmppClients.ContainsKey(Context.ConnectionId))
        {
            var xmppClient = XmppClients[Context.ConnectionId];

            xmppClient.OnReceiveXml -= xmppClient_OnReceiveXml;
            xmppClient.OnSendXml -= xmppClient_OnSendXml;
            xmppClient.OnMessage -= xmppClient_OnMessage;

            XmppClients.Remove(Context.ConnectionId);
        }

        return Clients.leave(Context.ConnectionId, DateTime.Now.ToString());
    }

    public Task Connect()
    {
        if (!XmppClients.ContainsKey(Context.ConnectionId))
        {
            var xmppClient = new XmppClient();

            xmppClient.OnReceiveXml += xmppClient_OnReceiveXml;
            xmppClient.OnSendXml += xmppClient_OnSendXml;       
            xmppClient.OnMessage += xmppClient_OnMessage;
            
            XmppClients.Add(Context.ConnectionId, xmppClient);
        }

        return Clients.joined(Context.ConnectionId, DateTime.Now.ToString());
    }

    public Task Reconnect(IEnumerable&amp;lt;string&amp;gt; groups)
    {
        return Clients.rejoined(Context.ConnectionId, DateTime.Now.ToString());
    }    
}
&lt;/pre&gt;

&lt;p&gt;Now we add a &lt;strong&gt;Open&lt;/strong&gt; and &lt;strong&gt;Close&lt;/strong&gt; function to our Hub which can be executed from the webpage via JavaScript. The JavaScript passes the username, password and XMPP domain as a string to the &lt;strong&gt;Open&lt;/strong&gt; function.&lt;/p&gt;

&lt;p&gt;Context.ConnectionId is the Id of the JavaScript client calling this Hub. We use this ids for our XmppClient dictionary and need it to lookup the correct XmppClient instance from the dictionary. After retrieving the XmppClient instance we set Username, Password and XmppDomain. Then we call Open() and MatriX starts to login to the XMPP server with the given credentials.&lt;/p&gt;

&lt;p&gt;The same applies to the Close function. We first lookup the correct XmppClient and then call Close on it to close the XMPP stream.&lt;/p&gt;

&lt;pre class=&quot;brush: csharp;&quot;&gt;public void Open(String username, String password, String xmppDomain)
{
    XmppClient xmppClient = XmppClients[Context.ConnectionId];
    xmppClient.Username = username;
    xmppClient.Password = password;
    xmppClient.XmppDomain = xmppDomain;

    xmppClient.Open();
}

public void Close()
{
    XmppClient xmppClient = XmppClients[Context.ConnectionId];
    xmppClient.Close();
}
&lt;/pre&gt;

&lt;p&gt;Now we implement the &lt;strong&gt;OnSendXml&lt;/strong&gt; and &lt;strong&gt;OnReceiveXml&lt;/strong&gt; handlers we subscribed to in the Connect Task. This is server side C# code telling the client to call &lt;strong&gt;sendXml()&lt;/strong&gt; and &lt;strong&gt;receiveXml()&lt;/strong&gt; JavaScript functions.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Clients&lt;/strong&gt; is a dynamic object of &lt;a href=&quot;https://github.com/SignalR&quot;&gt;SignalR&lt;/a&gt;. &lt;strong&gt;Clients[Context.ConnectionId]&lt;/strong&gt; gets the correct client and executes the function on this single client only.&lt;/p&gt;

&lt;pre class=&quot;brush: csharp;&quot;&gt;void xmppClient_OnSendXml(object sender, Matrix.TextEventArgs e)
{
    var text = HttpUtility.HtmlEncode(String.Format(&quot;Send: {0}&quot;, e.Text));
   
    Clients[Context.ConnectionId].sendXml(text);
}

void xmppClient_OnReceiveXml(object sender, Matrix.TextEventArgs e)
{
    var text = HttpUtility.HtmlEncode(String.Format(&quot;Recv: {0}&quot;, e.Text));
   
    Clients[Context.ConnectionId].receiveXml(text);
}
&lt;/pre&gt;

&lt;p&gt;The last step before we goto our JavaScript is the &lt;strong&gt;OnMessage&lt;/strong&gt; function. &lt;a href=&quot;https://github.com/SignalR&quot;&gt;SignalR&lt;/a&gt; can also send complex objects. So lets create a simple Message class to send the message properties as an object to our JavaScript. The Message class has 2 simple String properties. &lt;strong&gt;Body&lt;/strong&gt; for the Text of the message and &lt;strong&gt;From&lt;/strong&gt; for the full Jid of the sender.&lt;/p&gt;

&lt;pre class=&quot;brush: csharp;&quot;&gt;public class Message
{
    public string Body;
    public string From;
}
&lt;/pre&gt;

&lt;p&gt;Whenever MatriX receives a message in the &lt;strong&gt;OnMessage&lt;/strong&gt; handler we raise the callback &lt;strong&gt;onMessage&lt;/strong&gt; in our JavaScript and pass a new instance of the Message object we just created.&lt;/p&gt;

&lt;pre class=&quot;brush: csharp;&quot;&gt;void xmppClient_OnMessage(object sender, MessageEventArgs e)
{
    Clients[Context.ConnectionId].onMessage(
           new Message
           {
           		From = e.Message.From,
           		Body = e.Message.Body
           }
    );       
}
&lt;/pre&gt;

&lt;p&gt;The backend and code behind stuff is done now. Now we have to add JavaScript to our web page to setup the &lt;a href=&quot;https://github.com/SignalR&quot;&gt;SignalR&lt;/a&gt; connection.&lt;/p&gt;

&lt;p&gt;First we have to include some JavaScript files. We need jquery, the &lt;a href=&quot;https://github.com/SignalR&quot;&gt;signalR&lt;/a&gt; script and the hubs which get created dynamically by &lt;a href=&quot;https://github.com/SignalR&quot;&gt;SignalR&lt;/a&gt; on the server.&lt;/p&gt;

&lt;pre class=&quot;brush: xml;&quot;&gt;&amp;lt;script src=&quot;@Url.Content(&quot;~/Scripts/jquery-1.6.4.js&quot;)&quot; type=&quot;text/javascript&quot;&amp;gt;&amp;lt;/script&amp;gt;
&amp;lt;script src=&quot;@Url.Content(&quot;~/Scripts/jquery.signalR-0.5.2.js&quot;)&quot; type=&quot;text/javascript&quot;&amp;gt;&amp;lt;/script&amp;gt; 
&amp;lt;script src=&quot;@Url.Content(&quot;~/signalr/hubs&quot;)&quot; type=&quot;text/javascript&quot;&amp;gt;&amp;lt;/script&amp;gt;
&lt;/pre&gt;

&lt;p&gt;The following code shows how to create our MatriX Hub in JavaScript and connect it to the &lt;a href=&quot;https://github.com/SignalR&quot;&gt;SignalR&lt;/a&gt; server. &lt;strong&gt;matrixHub&lt;/strong&gt; is defined in the dynamically created JavaScript file we added before.&lt;/p&gt;

&lt;pre class=&quot;brush: xml;&quot;&gt;&amp;lt;script type=&quot;text/javascript&quot;&amp;gt;
    $(function () {
        var matrixHub = $.connection.matrixHub;
        
		// TODO, callbacks and hub invoker
        
        $.connection.hub.start();
    });
&amp;lt;/script&amp;gt;
&lt;/pre&gt;

&lt;p&gt;Now we add the JavaScript code which gets executed when we press the Login and Logout buttons on our wegpage.&lt;/p&gt;
&lt;p&gt;The Login button executes the &lt;strong&gt;Open&lt;/strong&gt; function in our C# Hub and passes username, password and XmppDomain. The Logout button executes the &lt;strong&gt;Close&lt;/strong&gt; function without any parameters.&lt;/p&gt;

&lt;p&gt;This is all that has to be done to execute a Hub function from JavaScript in realtime.&lt;/p&gt;

&lt;pre class=&quot;brush: jscript;&quot;&gt;$(&quot;#loginButton&quot;).click(function () {
    matrixHub.open(
        $(&quot;#txtUsername&quot;).val(),
        $(&quot;#txtPassword&quot;).val(),
        $(&quot;#txtXmppDomain&quot;).val());
});

$(&quot;#logoutButton&quot;).click(function () {
    matrixHub.close();
});
&lt;/pre&gt;

&lt;p&gt;The last pieces which are missing are the JavaScript functions we execute form the Hub to send data to the webpage from the server.&lt;/p&gt;

&lt;p&gt;The &lt;strong&gt;sendXml&lt;/strong&gt; and &lt;strong&gt;readXml&lt;/strong&gt; callbacks append the Xml debug to a div. The &lt;strong&gt;onMessage&lt;/strong&gt; callbacks appends a incoming message to a div.&lt;/p&gt;

&lt;pre class=&quot;brush: jscript;&quot;&gt;// signalR callback for outgoing xml debug
matrixHub.sendXml = function (message) {
    $(&quot;#log&quot;).append(&quot;&amp;lt;span class='log send'&amp;gt;&quot; + message + &quot;&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;&quot;);
};

// signalR callback for incoming xml debug
matrixHub.receiveXml = function (message) {
    $(&quot;#log&quot;).append(&quot;&amp;lt;span class='log recv'&amp;gt;&quot; + message + &quot;&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;&quot;);
};

matrixHub.onMessage = function (msg) {
    $(&quot;#messages&quot;).append(
            &quot;&amp;lt;span class='from'&amp;gt;&quot; + msg.From + &quot;:&amp;lt;/span&amp;gt;&quot; +
            &quot;&amp;lt;span class='message'&amp;gt;&quot; + msg.Body + &quot;&amp;lt;/span&amp;gt;&quot; +
            &quot;&amp;lt;/br&amp;gt;&quot;
    );
};
&lt;/pre&gt;

&lt;p&gt;&lt;a href=&quot;https://github.com/SignalR&quot;&gt;SignalR&lt;/a&gt; can also send data to all connected clients or a group of clients, but we don’t need these features.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://github.com/SignalR&quot;&gt;SignalR&lt;/a&gt; handles all the connection stuff for the client and the server automatically for us, and keeps the connection always alive. It chooses the right connection technique for your browser and scales on the server with modern async and await techniques.&lt;/p&gt;

&lt;p&gt;Under the hood &lt;a href=&quot;https://github.com/SignalR&quot;&gt;SignalR&lt;/a&gt; is using the same techology as &lt;a href=&quot;http://xmpp.org/extensions/xep-0124.html&quot;&gt;BOSH&lt;/a&gt;. On the web server MatriX connects to the XMPP server directly over the default TCP transport. This means you can connect to any XMPP server including Google Talk, Facebook or Windows Live Messenger without using a BOSH proxy from your web page.&lt;/p&gt;

&lt;p&gt;The complete example is included in the latest &lt;a href=&quot;http://www.ag-software.net/matrix-xmpp-sdk/download/&quot;&gt;MatriX download&lt;/a&gt;.

&lt;/p&gt;&lt;p class=&quot;note&quot;&gt;This post refers to a SinalR version 0.5.x. There were many incompatible API changes in SignalR, so many stuff in this post in not compatible with the current SingalR versions.&lt;br /&gt;
The example included in the &lt;a href=&quot;http://www.ag-software.net/matrix-xmpp-sdk/download/&quot; title=&quot;Download&quot;&gt;MatriX download&lt;/a&gt; should be always up to date.&lt;/p&gt;</content:encoded>
	<dc:date>2013-05-30T18:51:01+00:00</dc:date>
	<dc:creator>gnauck</dc:creator>
</item>
<item rdf:about="http://community.igniterealtime.org/blogs/ignite/2013/05/28/openfire-382-has-been-released">
	<title>Ignite Realtime Blog: Openfire 3.8.2 has been released</title>
	<link>http://community.igniterealtime.org/blogs/ignite/2013/05/28/openfire-382-has-been-released</link>
	<content:encoded>&lt;div class=&quot;jive-rendered-content&quot;&gt;&lt;p style=&quot;font-size: 12px; font-family: 'Lucida Grande', Arial, Helvetica, sans-serif;&quot;&gt;The Ignite Realtime community is happy to announce the release of version 3.8.2 of Openfire! Downloads for various platforms are available &lt;a style=&quot;color: #355491;&quot; href=&quot;http://www.igniterealtime.org/downloads/&quot; class=&quot;jive-link-external-small&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;&lt;p style=&quot;height: 8pt; padding: 0px;&quot;&gt; &lt;/p&gt;&lt;p style=&quot;font-size: 12px; font-family: 'Lucida Grande', Arial, Helvetica, sans-serif;&quot;&gt;Openfire is a real time collaboration (RTC) server licensed under the Open Source Apache license. It uses the only widely adopted open protocol for instant messaging, XMPP (also called Jabber). Openfire is incredibly easy to setup and administer, but offers rock-solid security and performance.&lt;/p&gt;&lt;p style=&quot;height: 8pt; padding: 0px;&quot;&gt; &lt;/p&gt;&lt;p style=&quot;font-size: 12px; font-family: 'Lucida Grande', Arial, Helvetica, sans-serif;&quot;&gt;This release adds BOSH functionality for setting CORS headers and improves Pub-Sub support. There is also a new Atlassian Crowd provider!  Various stability improvements were made as well. The &lt;a style=&quot;color: #355491;&quot; href=&quot;http://www.igniterealtime.org/builds/openfire/docs/latest/changelog.html&quot; class=&quot;jive-link-external-small&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;changelog&lt;/a&gt; lists these and other changes in more detail.&lt;/p&gt;&lt;p style=&quot;height: 8pt; padding: 0px;&quot;&gt; &lt;/p&gt;&lt;p style=&quot;font-size: 12px; font-family: 'Lucida Grande', Arial, Helvetica, sans-serif;&quot;&gt;As always, we welcome your feedback, suggestions, tips, hints, questions and other contributions in the &lt;a style=&quot;color: #f06500;&quot; class=&quot;jive-link-anchor-small&quot; rel=&quot;nofollow&quot;&gt;Ignite Realtime Community pages&lt;/a&gt;.&lt;/p&gt;&lt;/div&gt;</content:encoded>
	<dc:date>2013-05-28T15:10:34+00:00</dc:date>
	<dc:creator>Ignite Realtime Blog (communityadmin@igniterealtime.org)</dc:creator>
</item>
<item rdf:about="http://www.tigase.org/4059 at http://www.tigase.org">
	<title>Tigase Blog: --data-repo-pool-size</title>
	<link>http://www.tigase.org/content/data-repo-pool-size</link>
	<content:encoded>&lt;div class=&quot;field field-type-text field-field-conf-prop-def-val&quot;&gt;
    &lt;div class=&quot;field-items&quot;&gt;
            &lt;div class=&quot;field-item odd&quot;&gt;
                      &lt;div class=&quot;field-label-inline-first&quot;&gt;
              Default value: &lt;/div&gt;
                    10        &lt;/div&gt;
        &lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;field field-type-text field-field-conf-prop-example&quot;&gt;
    &lt;div class=&quot;field-items&quot;&gt;
            &lt;div class=&quot;field-item odd&quot;&gt;
                      &lt;div class=&quot;field-label-inline-first&quot;&gt;
              Example: &lt;/div&gt;
                    --data-repo-pool-size = 25        &lt;/div&gt;
        &lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;field field-type-text field-field-conf-prop-values&quot;&gt;
      &lt;div class=&quot;field-label&quot;&gt;Possible values: &lt;/div&gt;
    &lt;div class=&quot;field-items&quot;&gt;
            &lt;div class=&quot;field-item odd&quot;&gt;
                    Number of db connections as integer        &lt;/div&gt;
        &lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;field field-type-text field-field-conf-prop-description&quot;&gt;
      &lt;div class=&quot;field-label&quot;&gt;Description: &lt;/div&gt;
    &lt;div class=&quot;field-items&quot;&gt;
            &lt;div class=&quot;field-item odd&quot;&gt;
                    &lt;p&gt;&lt;code&gt;DataRepository&lt;/code&gt; is an abstraction layer between any higher level data access repositories such as &lt;code&gt;UserRepository&lt;/code&gt; or &lt;code&gt;AuthRepository&lt;/code&gt; and SQL database or JDBC driver to be more specific. Many implementations use &lt;code&gt;DataRepository&lt;/code&gt; for DB connections and in fact on many installations they also share the same &lt;code&gt;DataRepository&lt;/code&gt; instance if they connect to the same DB. In such a case it is desired to specific a connection pool on this level to avoid excessive number of connections to the database.&lt;/p&gt;
&lt;p&gt;It recommended to control number of DB connection using this property rather than &lt;a href=&quot;http://www.tigase.org/content/user-repo-pool-size&quot;&gt;--user-repo-pool-size&lt;/a&gt; or &lt;a href=&quot;http://www.tigase.org/content/auth-repo-pool-size&quot;&gt;--auth-repo-pool-size&lt;/a&gt;.&lt;/p&gt;
        &lt;/div&gt;
        &lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;field field-type-text field-field-conf-prop-available-since&quot;&gt;
    &lt;div class=&quot;field-items&quot;&gt;
            &lt;div class=&quot;field-item odd&quot;&gt;
                      &lt;div class=&quot;field-label-inline-first&quot;&gt;
              Available since: &lt;/div&gt;
                    5.1.0        &lt;/div&gt;
        &lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;field field-type-userreference field-field-feature-author&quot;&gt;
    &lt;div class=&quot;field-items&quot;&gt;
            &lt;div class=&quot;field-item odd&quot;&gt;
                      &lt;div class=&quot;field-label-inline-first&quot;&gt;
              Author: &lt;/div&gt;
                    &lt;a href=&quot;http://www.tigase.org/users/kobit&quot; title=&quot;View user profile.&quot;&gt;Artur Hefczyc&lt;/a&gt;        &lt;/div&gt;
        &lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;field field-type-text field-field-conf-prop-product&quot;&gt;
    &lt;div class=&quot;field-items&quot;&gt;
            &lt;div class=&quot;field-item odd&quot;&gt;
                      &lt;div class=&quot;field-label-inline-first&quot;&gt;
              Product: &lt;/div&gt;
                    Tigase XMPP Server        &lt;/div&gt;
        &lt;/div&gt;
&lt;/div&gt;</content:encoded>
	<dc:date>2013-05-28T03:19:06+00:00</dc:date>
	<dc:creator>kobit</dc:creator>
</item>
<item rdf:about="tag:metajack.im:/2013/05/26/servo-update-navigation-scrolling-gpu-rendering-underlines-and-more/">
	<title>Jack Moffitt: Servo Update: Navigation, Scrolling, GPU Rendering, Underlines, and more</title>
	<link>http://feedproxy.google.com/~r/metajack/~3/6_-0-UtS7AI/</link>
	<content:encoded>&lt;p&gt;Servo is changing rapidly, and with two new interns joining the team the pace
will only accelerate. The last few weeks have seen some big changes starting
to land in the tree.&lt;/p&gt;

&lt;p&gt;The Servo team welcomes and encourages new contributors and I'll note
particular projects where new contributors can easily get involved
below. These aren't the only places you can help, of course, but I thought it
might be useful to know a few good places to start.&lt;/p&gt;&lt;h1&gt;Navigation and Scrolling&lt;/h1&gt;

&lt;p&gt;&lt;a href=&quot;https://twitter.com/pcwalton&quot;&gt;Patrick Walton&lt;/a&gt; has landed the beginnings of
navigation and scrolling support. The
&lt;a href=&quot;https://github.com/mozilla-servo/rust-alert&quot;&gt;rust-alert&lt;/a&gt; library provides
simple popup dialog support, and using this, you can now hit &lt;code&gt;Ctrl-L&lt;/code&gt; to bring
up a dialog to enter a new
URL. &lt;a href=&quot;https://github.com/mozilla-servo/rust-glut&quot;&gt;rust-glut&lt;/a&gt; also got keyboard
handler support. Note that this only works on Mac OS X right now due to
missing support for Linux in rust-alert.&lt;/p&gt;

&lt;p&gt;Scrolling is another important UI feature, and you can now pan the content in
the window. Servo does not currently draw new parts of the content that were
hidden, but that should be simple to add.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;For new contributors:&lt;/strong&gt; If you're looking to get started hacking on Servo or
just want to learn more about Rust, adding popup dialogs on Linux to
rust-alert would be a good project. Adding drawing of previously hidden areas
to the scrolling code should also be an easy project for someone.&lt;/p&gt;

&lt;h1&gt;Underlined Text&lt;/h1&gt;

&lt;p&gt;Eric Atkinson, one of Servo's new interns, has just landed his first pull
request, adding the first bits of CSS's &lt;code&gt;text-decoration&lt;/code&gt; support for
&lt;code&gt;underline&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;For new contributors:&lt;/strong&gt; Eric didn't know any Rust or anything about Servo
internals before he started last week. It doesn't take much to get started,
and there is lots of low hanging fruit to pick on the Servo tree. For example,
based on Eric's &lt;code&gt;underline&lt;/code&gt; work, it should be fairly easy to add
&lt;code&gt;strike-through&lt;/code&gt;.&lt;/p&gt;

&lt;h1&gt;Performance metrics&lt;/h1&gt;

&lt;p&gt;Tim Kuehn, another of Servo's new interns, has also been busy his first
week. He started overhauling how performance data is collected in
Servo. Instead of simply timing bits of code and output the results to the
console, there is now a separate task that handles performance data.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;For new contributors:&lt;/strong&gt; We're not yet doing anything with this data yet, but
we should be. It should be a pretty easy project to start outputting it more
systematically and doing something with the results. Another idea would just
to be report numbers for different platforms and compare them to similar
numbers from other browsers so we know where we should improve.&lt;/p&gt;

&lt;h1&gt;GPU Rendering&lt;/h1&gt;

&lt;p&gt;The first parts of GPU accelerated rendering have started to land in Servo,
specifically updates to &lt;a href=&quot;https://github.com/mozilla-servo/skia&quot;&gt;Skia&lt;/a&gt; and
&lt;a href=&quot;https://github.com/mozilla-servo/rust-azure&quot;&gt;Azure&lt;/a&gt; to support
framebuffer-backed draw targets. These framebuffers render to textures which
are shared with the GPU-based compositor. This avoids needing to render to CPU
memory and then upload textures to the GPU. There is still a bug or two to
work out with tiling support, but I expect GPU rendering to land in the tree
pretty soon.&lt;/p&gt;

&lt;h1&gt;Miscellaneous&lt;/h1&gt;

&lt;p&gt;Servo now has continuous integration via Bors, the wonderful CI bot that the
Rust team has already been using for some time. Not only that, but Servo's
Bors is now running on Mozilla's release engineering infrastructure instead of
being hosted by the Rust team. This should keep the tree building cleanly from
now on. If you've previously had trouble compiling Servo, now would be a good
time to try again.&lt;/p&gt;

&lt;p&gt;Patrick Walton has been heavily refactoring Servo's directory layout and many
of its subsystems. &lt;code&gt;util&lt;/code&gt; and &lt;code&gt;net&lt;/code&gt; libraries were split out from the &lt;code&gt;gfx&lt;/code&gt;
library, and compositing was made quite a bit simpler. He has also refactored
layout and is working on splitting Servo into more libraries, which make it
both easier to understand and build faster. Much documentation has been added
in these refactorings.&lt;/p&gt;

&lt;p&gt;Samsung continues to work on Android support, improving the Rust compiler
along the way. That work should land in the tree in the near future.&lt;/p&gt;

&lt;p&gt;Give all these new things a try and report any issues you find. The team hangs
out in &lt;code&gt;#servo&lt;/code&gt; on irc.mozilla.org and is happy to answer questions or help
you get started hacking on Servo.&lt;/p&gt;
    &lt;img src=&quot;http://feeds.feedburner.com/~r/metajack/~4/6_-0-UtS7AI&quot; width=&quot;1&quot; height=&quot;1&quot; /&gt;</content:encoded>
	<dc:date>2013-05-26T19:32:00+00:00</dc:date>
	<dc:creator>Jack Moffitt (jack@metajack.im)</dc:creator>
</item>
<item rdf:about="http://code-bear.com/bearlog/2013/05/24/google-hangout-chat-and-the-missing-xmpp/">
	<title>Mike Taylor: Google Hangout chat and the missing XMPP</title>
	<link>http://code-bear.com/bearlog/2013/05/24/google-hangout-chat-and-the-missing-xmpp/</link>
	<content:encoded>&lt;p&gt;My friend &lt;a href=&quot;https://plus.google.com/u/0/116113014152499702246&quot;&gt;Jason Salas&lt;/a&gt; (who is an amazing and smart man – you should follow him in all of his endevours) asked me to comment on a post on &lt;a href=&quot;https://plus.google.com/u/0/+AndroidAuthority/posts/eJAN664PeZE&quot;&gt;Google+ from the Android Authority&lt;/a&gt; about &lt;a href=&quot;http://xmpp.org/about-xmpp/&quot;&gt;XMPP&lt;/a&gt; being dropped by Hangout(s). I wanted to repost what I said here for anyone who reads my posts but is not on G+.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://plus.google.com/u/0/116113014152499702246/posts/C7RhkXsF7dY&quot;&gt;From Google+&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;it’s a good summary about the issue with &lt;a href=&quot;http://xmpp.org/about-xmpp/&quot;&gt;XMPP&lt;/a&gt; – I may quibble with some of his thoughts about how Google “helped” XMPP but not enough to reject the post completely.&lt;/p&gt;
&lt;p&gt;We in the &lt;a href=&quot;http://xmpp.org/about-xmpp/&quot;&gt;XMPP&lt;/a&gt; community have seen this before and we will continue to support everyone who wants to use a stable, robust and &lt;b&gt;open&lt;/b&gt; protocol. In some ways it may be an odd blessing as Google did not support some of the more secure features of federation and now that the largest (public) client base is out of the picture we will be able to revisit some items that were previously put on hold.&lt;/p&gt;
&lt;p&gt;I’m also sensing that Google itself may not be completely aware of what just happened, this may be a case of the marketing/product folks driving the release of a product(s) that were not yet set in order to meet the I/O deadline – which is in-of-itself another worrying point.&lt;/p&gt;
&lt;p&gt;But yea, there have been a number of great non-&lt;a href=&quot;http://xmpp.org/&quot;&gt;XSF&lt;/a&gt; folks posting concerns and questions. The &lt;a href=&quot;http://xmpp.org/&quot;&gt;XSF&lt;/a&gt; is ready to help when Google realizes the full impact of what has happened ;)﻿&lt;/p&gt;</content:encoded>
	<dc:date>2013-05-25T00:27:17+00:00</dc:date>
	<dc:creator>bear</dc:creator>
</item>
<item rdf:about="tag:stpeter.im,1487">
	<title>Peter Saint-Andre: Seventeen Years in the Making</title>
	<link>http://stpeter.im/journal/1487.html</link>
	<content:encoded>Today I took the final steps toward publishing The Tao of Roark as an ebook and print-on-demand title, seventeen years to the day after I first posted a germ of the idea (although I didn't start composing it in earnest until 2008). Much as I like my Letters on Happiness, The Tao of Roark is the best thing I've written to date and it holds great personal meaning for me -- not least because it was the last rung on the ladder of my intellectual encounter with Ayn Rand.&lt;p&gt;...&lt;/p&gt;</content:encoded>
	<dc:date>2013-05-24T00:00:00+00:00</dc:date>
</item>
<item rdf:about="tag:stpeter.im,1486">
	<title>Peter Saint-Andre: RFC 6963</title>
	<link>http://stpeter.im/journal/1486.html</link>
	<content:encoded>RFC 6963, released today, is the latest document I've had published in the RFC series. This RFC provides a way for specification authors to generate documentation examples using Uniform Resource Names (URNs), similar to domain names like &quot;example.com&quot; (see RFC 2606). So if you've been dying to put &quot;urn:example:foo&quot; in your documentation or you need to generate random URNs for testing purposes, have at it!&lt;p&gt;...&lt;/p&gt;</content:encoded>
	<dc:date>2013-05-24T00:00:00+00:00</dc:date>
</item>
<item rdf:about="http://code-bear.com/bearlog/2013/05/19/xmpp-features-now-missing-from-gtalk-aka-hangout-chat/">
	<title>Mike Taylor: XMPP features now missing from GTalk (aka Hangout Chat)</title>
	<link>http://code-bear.com/bearlog/2013/05/19/xmpp-features-now-missing-from-gtalk-aka-hangout-chat/</link>
	<content:encoded>&lt;p&gt;I posted a snarky Twitter message about not wanting to spam the people following me with the features I’m now missing from GTalk, but I now really want to track them so…&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Features that are now missing&lt;br /&gt;&lt;/b&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Outside IM clients can no longer send messages to Google+ (aka GTalk, aka GMail) users&lt;/li&gt;
&lt;li&gt;Outside IM clients can no longer receive messages from Google+&lt;/li&gt;
&lt;li&gt;Presence updates to/from outside networks not allowed&lt;/li&gt;
&lt;li&gt;Invisible status is missing&lt;/li&gt;
&lt;li&gt;Unable to block other Google+ users from seeing my status&lt;/li&gt;
&lt;li&gt;Contacts are now in whatever order some silly person at Google thinks is accurate/friendly/useful instead of the at-least-it’s consistent alphabetical order&lt;/li&gt;
&lt;li&gt;The only way to remove someone from the active Contacts list is to … wait for it… &lt;b&gt;block them&lt;/b&gt;!&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;ok, so it’s not the 15 that I said on Twitter but it’s still damn annoying&lt;/p&gt;
&lt;p&gt;&lt;b&gt;EDIT&lt;/b&gt;:&lt;br /&gt;
ok, so I may have been a bit harsh and in a really cranky mood when writing the above – here is a post from the G+ conversation where some of the community members correct me ;)&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;
  Buried in a conversation over on this post &lt;a href=&quot;https://plus.google.com/u/0/107968525907303243288/posts/HFe3W7A9Dor&quot; class=&quot;ot-anchor&quot; rel=&quot;nofollow&quot;&gt;https://plus.google.com/u/0/107968525907303243288/posts/HFe3W7A9Dor&lt;/a&gt; is some comments from &lt;span class=&quot;proflinkWrapper&quot;&gt;&lt;span class=&quot;proflinkPrefix&quot;&gt;+&lt;/span&gt;&lt;a href=&quot;https://plus.google.com/107968525907303243288&quot; class=&quot;proflink&quot;&gt;Ben Eidelson&lt;/a&gt;&lt;/span&gt; about how XMPP support is still in the plans for Hangouts, just either not implemented or buggy.&lt;/p&gt;
&lt;p&gt;  So it could be that I’m just reacting poorly to some really bad coding and/or product management – don’t get me wrong, i’m still irked.&lt;/p&gt;
&lt;p&gt;  I just may be restructuring and changing my reaction over the next couple of updates.&lt;/p&gt;
&lt;p&gt;  Thanks to +Fernando Miguel for pointing that out.﻿
&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;and here is the conversation:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;
  &lt;a href=&quot;https://plus.google.com/u/0/107968525907303243288&quot; class=&quot;Sg Ob qm&quot; rel=&quot;nofollow&quot;&gt;Ben Eidelson&lt;/a&gt; &lt;span class=&quot;Uy Du&quot;&gt;&lt;span class=&quot;Bf&quot; title=&quot;May 15, 2013, 8:35:06 PM&quot;&gt;May 15, 2013&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;+&lt;a href=&quot;https://plus.google.com/113498798332314665976&quot; class=&quot;proflink&quot;&gt;Daniel Rose&lt;/a&gt; currently those settings affect who causes invites to you, not who shows up for you to send messages to. Once you start using Hangouts for a few days the list should re-order based on who you are contacting most often.&lt;/p&gt;
&lt;p&gt;  +&lt;a href=&quot;https://plus.google.com/102699684098900408933&quot; class=&quot;proflink&quot;&gt;Thomas Heinen&lt;/a&gt; Thanks for your report of the issue. Hangouts supports basic interop with XMPP, so you can-for the time being-continue to use 3rd party clients. It does not work the same way as Talk, and so I believe the issue you’re having with the XMPP bridge will not resolve in Hangouts.﻿&lt;/p&gt;
&lt;/blockquote&gt;</content:encoded>
	<dc:date>2013-05-20T00:43:20+00:00</dc:date>
	<dc:creator>bear</dc:creator>
</item>
<item rdf:about="http://code-bear.com/bearlog/2013/05/19/i-welcome-google-as-the-new-borg/">
	<title>Mike Taylor: I welcome Google as the new Borg</title>
	<link>http://code-bear.com/bearlog/2013/05/19/i-welcome-google-as-the-new-borg/</link>
	<content:encoded>&lt;p&gt;yea, that’s a subtle title alright :/&lt;/p&gt;
&lt;p&gt;I posted this earlier on Google+ and decided to cross-post it here as I realized that it was more hipster ironic than I wanted to be (to post about Google changing things on the same G+ stream they are changing things to focus on.)&lt;/p&gt;
&lt;p&gt;So here is a cut-n-paste of what I said over &lt;a href=&quot;https://plus.google.com/u/0/103825681530404900115/posts/EF2XUnjYArj&quot;&gt;there&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I just found out the hard way that GTalk on Android has been silently replaced by Hangouts &lt;b&gt;and&lt;/b&gt; the do-no-evil geniuses have removed everything dealing with XMPP from it … &lt;b&gt;everything&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;The “hard way” is from the fact that I did not get a server alert on my phone because Hangouts no longer supports outside messages from XMPP sources (also known as Federation.)&lt;/p&gt;
&lt;p&gt;This has me all worked up in a lot of ways:&lt;/p&gt;
&lt;p&gt;Personally – a lot of my friends are XMPP users so now I no longer have a single client for my messaging needs and this means that GTalk will not be my primary tool, heck I may not load it at all now.&lt;/p&gt;
&lt;p&gt;Professionally – I’m a member of the XMPP Software Foundation and we have been very proud about XMPP being the core of a lot of commercial communication products (Google, Facebook, Microsoft, Cisco and many others) and even tho each commercial entity does odd things (heck, breaks them also) the one thing that stood out was Federation.&lt;/p&gt;
&lt;p&gt;Now Google is removing a core part of their messaging and replacing it with something that is not an Open standard and hell, to be blunt, is a horrible implementation of a messaging system. The Hangouts support forum is full of people wondering, like me, what happened to many features they depended on and also asking WTF&lt;/p&gt;
&lt;p&gt;So even tho I know Google engineers may not ever see this, I just have to ask: when will you be changing your motto from “do no evil” to “meh, we just do what we want because we are now the new borg”&lt;/p&gt;
&lt;p&gt;yea, I’m pissed, pissed enough that I won’t be buying Android as my next phone and I’m going to be putting my full effort behind the infrastructure behind Firefox OS&lt;/p&gt;</content:encoded>
	<dc:date>2013-05-19T22:12:05+00:00</dc:date>
	<dc:creator>bear</dc:creator>
</item>
<item rdf:about="tag:el-tramo.be,2013-05-18:/blog/vim-plugins/">
	<title>Remko Tronçon: My Favorite Vim Plugins</title>
	<link>http://el-tramo.be/blog/vim-plugins/</link>
	<content:encoded>&lt;p&gt;After &lt;a href=&quot;http://el-tramo.be/blog/sublime-text-experiment/&quot;&gt;a brief affair with another editor&lt;/a&gt;, I’m now back
to using
my beloved &lt;a href=&quot;http://www.vim.org&quot;&gt;Vim&lt;/a&gt; again. What’s more, I decided to invest the time I should have put in years ago when I started using
it, and learned to do things more efficiently. Besides reading
&lt;a href=&quot;http://pragprog.com/book/dnvim/practical-vim&quot;&gt;Practical Vim&lt;/a&gt; and watching some
&lt;a href=&quot;http://vimcasts.org&quot;&gt;VimCasts&lt;/a&gt;, I went through my list of plugins I collected over the years, removed the
ones I wasn’t using, learned about a couple of new ones I didn’t know, and re-learned some of the ones
I forgot about. Here’s the list of my favorite plugins I ended up with.&lt;/p&gt;




&lt;ul&gt;
&lt;li&gt;
&lt;a href=&quot;http://www.vim.org/scripts/script.php?script_id=2332&quot;&gt;&lt;code&gt;pathogen&lt;/code&gt;&lt;/a&gt;:
  Easy management of Vim plugins. I put all my Vim settings in a Git
  repository, and this plugin allows me to add plugins as a Git submodule
  somewhere in my settings tree. For an extensive tutorial, have a look at the
  &lt;a href=&quot;http://vimcasts.org/episodes/synchronizing-plugins-with-git-submodules-and-pathogen/&quot;&gt;&lt;code&gt;pathogen&lt;/code&gt;
  VimCast&lt;/a&gt;.
  Several other plugins with similar functionality have emerged since I started
  using &lt;code&gt;pathogen&lt;/code&gt;, but I haven’t tried them since this one does the trick for
  me.&lt;/li&gt;
&lt;li&gt;
&lt;a href=&quot;http://www.vim.org/scripts/script.php?script_id=4391&quot;&gt;&lt;code&gt;sensible&lt;/code&gt;&lt;/a&gt;:
  Have sensible, safe defaults for a modern day Vim setup. Allows me
  to trim down my vimrc a bit.&lt;/li&gt;
&lt;li&gt;
&lt;a href=&quot;http://www.vim.org/scripts/script.php?script_id=3736&quot;&gt;&lt;code&gt;ctrlp&lt;/code&gt;&lt;/a&gt;: Open files anywhere below your
  current directory very quickly, using
  fuzzy search. This is similar to Sublime’s “Go to anything” (which even uses the same
  shortcut). I almost exclusively open files using &lt;code&gt;ctrlp&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;a href=&quot;http://www.vim.org/scripts/script.php?script_id=1590&quot;&gt;&lt;code&gt;unimpaired&lt;/code&gt;&lt;/a&gt;: Easy to remember extra
  &lt;code&gt;]&lt;/code&gt; and &lt;code&gt;[&lt;/code&gt; shortcuts for a handful of useful tasks:
  cycling through files, buffers, arguments, SCM conflict markers, spelling errors; exchange
  lines, switch options, insert empty lines, … Also comes with shortcuts to
  toggle options, such as &lt;code&gt;col&lt;/code&gt; (toggle invisible characters), &lt;code&gt;con&lt;/code&gt;
  (toggle number column), &lt;code&gt;cos&lt;/code&gt; (toggle spell correction), …&lt;/li&gt;
&lt;li&gt;
&lt;a href=&quot;http://www.vim.org/scripts/script.php?script_id=1171&quot;&gt;&lt;code&gt;detectindent&lt;/code&gt;&lt;/a&gt;: Automatically detects whether tabs are expanded or not. Handy
  for working on multiple codebases with different tab preferences.&lt;/li&gt;
&lt;li&gt;
&lt;a href=&quot;http://www.vim.org/scripts/script.php?script_id=31&quot;&gt;&lt;code&gt;a&lt;/code&gt;&lt;/a&gt;: Switch between corresponding &lt;code&gt;.h&lt;/code&gt; and &lt;code&gt;.(c|cpp|mm)&lt;/code&gt; headers easily&lt;/li&gt;
&lt;li&gt;
&lt;a href=&quot;http://www.vim.org/scripts/script.php?script_id=2572&quot;&gt;&lt;code&gt;ack&lt;/code&gt;&lt;/a&gt;: Lightning fast greps across a project. I actually use &lt;code&gt;ag&lt;/code&gt; as backend.&lt;/li&gt;
&lt;li&gt;
&lt;a href=&quot;http://www.vim.org/scripts/script.php?script_id=3302&quot;&gt;&lt;code&gt;clang_complete&lt;/code&gt;&lt;/a&gt;: C/C++ code completion that works. Requires &lt;code&gt;clang&lt;/code&gt; to be on your system (which it is by default on MacOS X)&lt;/li&gt;
&lt;li&gt;
&lt;a href=&quot;http://www.vim.org/scripts/script.php?script_id=2386&quot;&gt;&lt;code&gt;endwise&lt;/code&gt;&lt;/a&gt;: Automatically adds &lt;code&gt;end&lt;/code&gt; when
  you write a &lt;code&gt;begin&lt;/code&gt;, but does it conservatively so it never inserts anything unwanted.&lt;/li&gt;
&lt;li&gt;
&lt;a href=&quot;http://www.vim.org/scripts/script.php?script_id=2975&quot;&gt;&lt;code&gt;fugitive&lt;/code&gt;&lt;/a&gt;. An extremely powerful Git integration for
  Vim. Apart from providing an interface for doing all kinds of (interactive) Git tasks from within Vim, also
  provides a status line entry for showing your current branch etc.
  There are
  &lt;a href=&quot;http://vimcasts.org/episodes/fugitive-vim---a-complement-to-command-line-git/&quot;&gt;a&lt;/a&gt;
  &lt;a href=&quot;http://vimcasts.org/episodes/fugitive-vim-working-with-the-git-index/&quot;&gt;couple&lt;/a&gt;
  &lt;a href=&quot;http://vimcasts.org/episodes/fugitive-vim-resolving-merge-conflicts-with-vimdiff/&quot;&gt;of&lt;/a&gt;
  &lt;a href=&quot;http://vimcasts.org/episodes/fugitive-vim-browsing-the-git-object-database/&quot;&gt;VimCast&lt;/a&gt;
  &lt;a href=&quot;http://vimcasts.org/episodes/fugitive-vim-exploring-the-history-of-a-git-repository/&quot;&gt;episodes&lt;/a&gt;
  about how to use this plugin.&lt;/li&gt;
&lt;li&gt;
&lt;a href=&quot;http://www.vim.org/scripts/script.php?script_id=1545&quot;&gt;&lt;code&gt;abolish&lt;/code&gt;&lt;/a&gt;: A set of search/replace/conversion commands
  that support plurals, case (MixedCase, camelCase, snake_case, …), … Can be used to rename variables
  easily, change case of avariable, … There are also
  &lt;a href=&quot;http://vimcasts.org/episodes/smart-search-with-subvert/&quot;&gt;some&lt;/a&gt;
  &lt;a href=&quot;http://vimcasts.org/episodes/supercharged-substitution-with-subvert/&quot;&gt;VimCasts&lt;/a&gt;
  &lt;a href=&quot;http://vimcasts.org/episodes/enhanced-abbreviations-with-abolish/&quot;&gt;about&lt;/a&gt; this plugin.&lt;/li&gt;
&lt;li&gt;
&lt;a href=&quot;http://www.vim.org/scripts/script.php?script_id=3304&quot;&gt;&lt;code&gt;gundo&lt;/code&gt;&lt;/a&gt;: Graphical overview of Vim’s undo tree.
  If you undid a couple of changes,
  did some other stuff, and decided that your initial version was actually better,
  you can easily revert back. This has saved me and my undecisive mind a couple
  of times already. Also has a &lt;a href=&quot;http://vimcasts.org/episodes/undo-branching-and-gundo-vim/&quot;&gt;VimCast&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;a href=&quot;http://www.vim.org/scripts/script.php?script_id=39&quot;&gt;&lt;code&gt;matchit&lt;/code&gt;&lt;/a&gt;: Match more than just braces with &lt;code&gt;%&lt;/code&gt;. Cycles through if/else, matches
  HTML/XML tags, …&lt;/li&gt;
&lt;li&gt;
&lt;a href=&quot;http://www.vim.org/scripts/script.php?script_id=1697&quot;&gt;&lt;code&gt;surround&lt;/code&gt;&lt;/a&gt;: change/delete/add surrounding quotes, parentheses, tags, …&lt;/li&gt;
&lt;li&gt;
&lt;a href=&quot;http://www.vim.org/scripts/script.php?script_id=2736&quot;&gt;&lt;code&gt;syntastic&lt;/code&gt;&lt;/a&gt;: Checks the syntax of your current file on save, and displays
  errors using markers in the sidebar. Saves you a round trip to your terminal
  when trying to compile/run the file.&lt;/li&gt;
&lt;li&gt;
&lt;a href=&quot;http://www.vim.org/scripts/script.php?script_id=273&quot;&gt;&lt;code&gt;taglist&lt;/code&gt;&lt;/a&gt;: A navigation window with an overview of all functions/variables in
  your current file. Uses &lt;code&gt;ctags&lt;/code&gt; behind the screens, but doesn’t require you
  to run &lt;code&gt;ctags&lt;/code&gt; yourself on the codebase. It can also put an entry with the
  current function in your status bar (which is useful when editing files
  with large functions).&lt;/li&gt;
&lt;li&gt;
&lt;a href=&quot;http://www.vim.org/scripts/script.php?script_id=1173&quot;&gt;&lt;code&gt;tcomment&lt;/code&gt;&lt;/a&gt;: Quickly comment out lines and code blocks. I used &lt;a href=&quot;http://www.vim.org/scripts/script.php?script_id=1218&quot;&gt;&lt;code&gt;NERDCommenter&lt;/code&gt;&lt;/a&gt; for a
  while, but &lt;code&gt;tcomment&lt;/code&gt; came with more natural Vim shortcuts (and is also supported
  by &lt;a href=&quot;http://vrapper.sourceforge.net&quot;&gt;Vrapper&lt;/a&gt;). I also tried
  &lt;a href=&quot;http://www.vim.org/scripts/script.php?script_id=3695&quot;&gt;&lt;code&gt;commentary&lt;/code&gt;&lt;/a&gt; (mostly because it’s by Tim Pope, and
  because it supports &lt;code&gt;repeat&lt;/code&gt;), which uses the same shortcuts, but this one doesn’t
  comment indented code blocks the way I want it to (i.e. put the indentation after
  the comment string instead of in front).&lt;/li&gt;
&lt;li&gt;
&lt;a href=&quot;http://www.vim.org/scripts/script.php?script_id=3526&quot;&gt;&lt;code&gt;easymotion&lt;/code&gt;&lt;/a&gt;:
  Makes it easy to jump to any word in your buffer, by assigning
  a single letter to each word, highlighting it, and drilling down with each keystroke.
  Although this plugin is probably
  as fast and intuitive as it gets, in a GUI mode, it may be a tad faster to
  simply reach for the mouse and click in the document. However, when editing
  remote files without mouse support, this plugin is great!&lt;/li&gt;
&lt;li&gt;
&lt;a href=&quot;http://www.vim.org/scripts/script.php?script_id=2540&quot;&gt;&lt;code&gt;snipmate&lt;/code&gt;&lt;/a&gt;: An engine for
  inserting snippets of code. There’s also a
  &lt;a href=&quot;https://github.com/honza/vim-snippets&quot;&gt;standard repository of standard snippets&lt;/a&gt;, but I
  mostly only use my own snippets for larger snippets
  (e.g. create a new class, insert copyright headers, …).
  Downsides: it no longer works with &lt;code&gt;clang_complete&lt;/code&gt; (although it used to), and
  it seems hard to override already existing snippets (which is why I don’t
  use the default repository).&lt;/li&gt;
&lt;li&gt;
&lt;a href=&quot;http://www.vim.org/scripts/script.php?script_id=521&quot;&gt;&lt;code&gt;mru&lt;/code&gt;&lt;/a&gt;: Easily access recently opened
  files through the MRU list.&lt;/li&gt;
&lt;li&gt;
&lt;a href=&quot;http://www.vim.org/scripts/script.php?script_id=4504&quot;&gt;&lt;code&gt;dispatch&lt;/code&gt;&lt;/a&gt;:
  Asynchronous version of &lt;code&gt;:make&lt;/code&gt;, so you can still edit your code while your project is
  building. The downside is that it requires &lt;em&gt;iTerm&lt;/em&gt; on MacOS X or fires off a separate command
  shell on Linux and Windows, so it’s still not as nice as a native window running a build in
  its own thread, but it gets the job done.&lt;/li&gt;
&lt;li&gt;
&lt;a href=&quot;http://www.vim.org/scripts/script.php?script_id=1658&quot;&gt;&lt;code&gt;NERDtree&lt;/code&gt;&lt;/a&gt;: A better file system explorer than the default one. I don’t really use it
  that often (since I use &lt;code&gt;ctrlp&lt;/code&gt; to open files), but it’s handy for when you need
  to look around your project tree.&lt;/li&gt;
&lt;li&gt;
&lt;a href=&quot;http://www.vim.org/scripts/script.php?script_id=2136&quot;&gt;&lt;code&gt;repeat&lt;/code&gt;&lt;/a&gt;: ‘&lt;code&gt;.&lt;/code&gt;’ support for some of the plugins I use.&lt;/li&gt;
&lt;li&gt;
&lt;a href=&quot;http://www.vim.org/scripts/script.php?script_id=2120&quot;&gt;&lt;code&gt;speeddating&lt;/code&gt;&lt;/a&gt;: Increment dates using
  &lt;code&gt;Ctrl-A&lt;/code&gt;/&lt;code&gt;Ctrl-X&lt;/code&gt;. Not that I often do this,
  but since it just adds extra support to &lt;code&gt;Ctrl-A&lt;/code&gt;/&lt;code&gt;Ctrl-X&lt;/code&gt;, I just load it.&lt;/li&gt;
&lt;li&gt;
&lt;a href=&quot;http://www.vim.org/scripts/script.php?script_id=2340&quot;&gt;&lt;code&gt;molokai&lt;/code&gt;&lt;/a&gt;: A beautiful dark gray
  color scheme,
  based on the Monokai scheme from TextMate, and popular in other modern editors as well.&lt;/li&gt;
&lt;li&gt;
&lt;a href=&quot;http://vrapper.sourceforge.net/&quot;&gt;Vrapper&lt;/a&gt;: Not really a Vim plugin, but worth the mention: this Eclipse plugin
  provides a wide variety of Vim bindings to use inside Eclipse, so you can stay efficient when working on
  Java/Eclipse projects.&lt;/li&gt;
&lt;/ul&gt;</content:encoded>
	<dc:date>2013-05-17T22:00:00+00:00</dc:date>
</item>
<item rdf:about="tag:el-tramo.be,2013-05-18:/blog/my-favorite-vim-plugins/">
	<title>Remko Tronçon: My Favorite Vim Plugins</title>
	<link>http://el-tramo.be/blog/my-favorite-vim-plugins/</link>
	<content:encoded>&lt;p&gt;After &lt;a href=&quot;http://el-tramo.be/blog/sublime-text-experiment/&quot;&gt;a brief affair with another editor&lt;/a&gt;, I’m now back
to using
my beloved &lt;a href=&quot;http://www.vim.org&quot;&gt;Vim&lt;/a&gt; again. What’s more, I decided to invest the time I should have put in years ago when I started using
it, and learned to do things more efficiently. Besides reading
&lt;a href=&quot;http://pragprog.com/book/dnvim/practical-vim&quot;&gt;Practical Vim&lt;/a&gt; and watching some
&lt;a href=&quot;http://vimcasts.org&quot;&gt;VimCasts&lt;/a&gt;, I went through my list of plugins I collected over the years, removed the
ones I wasn’t using, learned about a couple of new ones I didn’t know, and re-learned some of the ones
I forgot about. Here’s the list of my favorite plugins I ended up with.&lt;/p&gt;




&lt;ul&gt;
&lt;li&gt;
&lt;a href=&quot;http://www.vim.org/scripts/script.php?script_id=2332&quot;&gt;&lt;code&gt;pathogen&lt;/code&gt;&lt;/a&gt;:
  Easy management of Vim plugins. I put all my Vim settings in a Git
  repository, and this plugin allows me to add plugins as a Git submodule
  somewhere in my settings tree. For an extensive tutorial, have a look at the
  &lt;a href=&quot;http://vimcasts.org/episodes/synchronizing-plugins-with-git-submodules-and-pathogen/&quot;&gt;&lt;code&gt;pathogen&lt;/code&gt;
  VimCast&lt;/a&gt;.
  Several other plugin managers (such as
  &lt;a href=&quot;https://github.com/MarcWeber/vim-addon-manager&quot;&gt;&lt;code&gt;VAM&lt;/code&gt;&lt;/a&gt; and
  &lt;a href=&quot;https://github.com/gmarik/vundle&quot;&gt;&lt;code&gt;Vundle&lt;/code&gt;&lt;/a&gt;) have emerged since I started
  using &lt;code&gt;pathogen&lt;/code&gt;, but I haven’t tried them since this one does the trick for
  me.&lt;/li&gt;
&lt;li&gt;
&lt;a href=&quot;http://www.vim.org/scripts/script.php?script_id=4391&quot;&gt;&lt;code&gt;sensible&lt;/code&gt;&lt;/a&gt;:
  Have sensible, safe defaults for a modern day Vim setup. Allows me
  to trim down my vimrc a bit.&lt;/li&gt;
&lt;li&gt;
&lt;a href=&quot;http://www.vim.org/scripts/script.php?script_id=3736&quot;&gt;&lt;code&gt;ctrlp&lt;/code&gt;&lt;/a&gt;: Open files anywhere below your
  current directory very quickly, using
  fuzzy search. This is similar to Sublime’s “Go to anything” (which even uses the same
  shortcut). I almost exclusively open files using &lt;code&gt;ctrlp&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;a href=&quot;http://www.vim.org/scripts/script.php?script_id=1590&quot;&gt;&lt;code&gt;unimpaired&lt;/code&gt;&lt;/a&gt;: Easy to remember extra
  &lt;code&gt;]&lt;/code&gt; and &lt;code&gt;[&lt;/code&gt; shortcuts for a handful of useful tasks:
  cycling through files, buffers, arguments, SCM conflict markers, spelling errors; exchange
  lines, switch options, insert empty lines, … Also comes with shortcuts to
  toggle options, such as &lt;code&gt;col&lt;/code&gt; (toggle invisible characters), &lt;code&gt;con&lt;/code&gt;
  (toggle number column), &lt;code&gt;cos&lt;/code&gt; (toggle spell correction), …&lt;/li&gt;
&lt;li&gt;
&lt;a href=&quot;http://www.vim.org/scripts/script.php?script_id=1171&quot;&gt;&lt;code&gt;detectindent&lt;/code&gt;&lt;/a&gt;: Automatically detects whether tabs are expanded or not. Handy
  for working on multiple codebases with different tab preferences.&lt;/li&gt;
&lt;li&gt;
&lt;a href=&quot;http://www.vim.org/scripts/script.php?script_id=31&quot;&gt;&lt;code&gt;a&lt;/code&gt;&lt;/a&gt;: Switch between corresponding &lt;code&gt;.h&lt;/code&gt; and &lt;code&gt;.(c|cpp|mm)&lt;/code&gt; headers easily&lt;/li&gt;
&lt;li&gt;
&lt;a href=&quot;http://www.vim.org/scripts/script.php?script_id=2572&quot;&gt;&lt;code&gt;ack&lt;/code&gt;&lt;/a&gt;: Lightning fast greps across a project. I actually use &lt;code&gt;ag&lt;/code&gt; as backend.&lt;/li&gt;
&lt;li&gt;
&lt;a href=&quot;http://www.vim.org/scripts/script.php?script_id=3302&quot;&gt;&lt;code&gt;clang_complete&lt;/code&gt;&lt;/a&gt;: C/C++ code completion that works. Requires &lt;code&gt;clang&lt;/code&gt; to be on your system (which it is by default on MacOS X)&lt;/li&gt;
&lt;li&gt;
&lt;a href=&quot;http://www.vim.org/scripts/script.php?script_id=2386&quot;&gt;&lt;code&gt;endwise&lt;/code&gt;&lt;/a&gt;: Automatically adds &lt;code&gt;end&lt;/code&gt; when
  you write a &lt;code&gt;begin&lt;/code&gt;, but does it conservatively so it never inserts anything unwanted.&lt;/li&gt;
&lt;li&gt;
&lt;a href=&quot;http://www.vim.org/scripts/script.php?script_id=2975&quot;&gt;&lt;code&gt;fugitive&lt;/code&gt;&lt;/a&gt;. An extremely powerful Git integration for
  Vim. Apart from providing an interface for doing all kinds of (interactive) Git tasks from within Vim, also
  provides a status line entry for showing your current branch etc.
  There are
  &lt;a href=&quot;http://vimcasts.org/episodes/fugitive-vim---a-complement-to-command-line-git/&quot;&gt;a&lt;/a&gt;
  &lt;a href=&quot;http://vimcasts.org/episodes/fugitive-vim-working-with-the-git-index/&quot;&gt;couple&lt;/a&gt;
  &lt;a href=&quot;http://vimcasts.org/episodes/fugitive-vim-resolving-merge-conflicts-with-vimdiff/&quot;&gt;of&lt;/a&gt;
  &lt;a href=&quot;http://vimcasts.org/episodes/fugitive-vim-browsing-the-git-object-database/&quot;&gt;VimCast&lt;/a&gt;
  &lt;a href=&quot;http://vimcasts.org/episodes/fugitive-vim-exploring-the-history-of-a-git-repository/&quot;&gt;episodes&lt;/a&gt;
  about how to use this plugin.&lt;/li&gt;
&lt;li&gt;
&lt;a href=&quot;http://www.vim.org/scripts/script.php?script_id=1545&quot;&gt;&lt;code&gt;abolish&lt;/code&gt;&lt;/a&gt;: A set of search/replace/conversion commands
  that support plurals, case (MixedCase, camelCase, snake_case, …), … Can be used to rename variables
  easily, change case of avariable, … There are also
  &lt;a href=&quot;http://vimcasts.org/episodes/smart-search-with-subvert/&quot;&gt;some&lt;/a&gt;
  &lt;a href=&quot;http://vimcasts.org/episodes/supercharged-substitution-with-subvert/&quot;&gt;VimCasts&lt;/a&gt;
  &lt;a href=&quot;http://vimcasts.org/episodes/enhanced-abbreviations-with-abolish/&quot;&gt;about&lt;/a&gt; this plugin.&lt;/li&gt;
&lt;li&gt;
&lt;a href=&quot;http://www.vim.org/scripts/script.php?script_id=3304&quot;&gt;&lt;code&gt;gundo&lt;/code&gt;&lt;/a&gt;: Graphical overview of Vim’s undo tree.
  If you undid a couple of changes,
  did some other stuff, and decided that your initial version was actually better,
  you can easily revert back. This has saved me and my undecisive mind a couple
  of times already. Also has a &lt;a href=&quot;http://vimcasts.org/episodes/undo-branching-and-gundo-vim/&quot;&gt;VimCast&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;a href=&quot;http://www.vim.org/scripts/script.php?script_id=39&quot;&gt;&lt;code&gt;matchit&lt;/code&gt;&lt;/a&gt;: Match more than just braces with &lt;code&gt;%&lt;/code&gt;. Cycles through if/else, matches
  HTML/XML tags, …&lt;/li&gt;
&lt;li&gt;
&lt;a href=&quot;http://www.vim.org/scripts/script.php?script_id=1697&quot;&gt;&lt;code&gt;surround&lt;/code&gt;&lt;/a&gt;: change/delete/add surrounding quotes, parentheses, tags, …&lt;/li&gt;
&lt;li&gt;
&lt;a href=&quot;http://www.vim.org/scripts/script.php?script_id=2736&quot;&gt;&lt;code&gt;syntastic&lt;/code&gt;&lt;/a&gt;: Checks the syntax of your current file on save, and displays
  errors using markers in the sidebar. Saves you a round trip to your terminal
  when trying to compile/run the file.&lt;/li&gt;
&lt;li&gt;
&lt;a href=&quot;http://www.vim.org/scripts/script.php?script_id=273&quot;&gt;&lt;code&gt;taglist&lt;/code&gt;&lt;/a&gt;: A navigation window with an overview of all functions/variables in
  your current file. Uses &lt;code&gt;ctags&lt;/code&gt; behind the screens, but doesn’t require you
  to run &lt;code&gt;ctags&lt;/code&gt; yourself on the codebase. It can also put an entry with the
  current function in your status bar (which is useful when editing files
  with large functions).&lt;/li&gt;
&lt;li&gt;
&lt;a href=&quot;http://www.vim.org/scripts/script.php?script_id=1173&quot;&gt;&lt;code&gt;tcomment&lt;/code&gt;&lt;/a&gt;: Quickly comment out lines and code blocks. I used &lt;a href=&quot;http://www.vim.org/scripts/script.php?script_id=1218&quot;&gt;&lt;code&gt;NERDCommenter&lt;/code&gt;&lt;/a&gt; for a
  while, but &lt;code&gt;tcomment&lt;/code&gt; came with more natural Vim shortcuts (and is also supported
  by &lt;a href=&quot;http://vrapper.sourceforge.net&quot;&gt;Vrapper&lt;/a&gt;). I also tried
  &lt;a href=&quot;http://www.vim.org/scripts/script.php?script_id=3695&quot;&gt;&lt;code&gt;commentary&lt;/code&gt;&lt;/a&gt; (mostly because it’s by Tim Pope, and
  because it supports &lt;code&gt;repeat&lt;/code&gt;), which uses the same shortcuts, but this one doesn’t
  comment indented code blocks the way I want it to (i.e. put the indentation after
  the comment string instead of in front).&lt;/li&gt;
&lt;li&gt;
&lt;a href=&quot;http://www.vim.org/scripts/script.php?script_id=3526&quot;&gt;&lt;code&gt;easymotion&lt;/code&gt;&lt;/a&gt;:
  Makes it easy to jump to any word in your buffer, by assigning
  a single letter to each word, highlighting it, and drilling down with each keystroke.
  Although this plugin is probably
  as fast and intuitive as it gets, in a GUI mode, it may be a tad faster to
  simply reach for the mouse and click in the document. However, when editing
  remote files without mouse support, this plugin is great!&lt;/li&gt;
&lt;li&gt;
&lt;a href=&quot;http://www.vim.org/scripts/script.php?script_id=2540&quot;&gt;&lt;code&gt;snipmate&lt;/code&gt;&lt;/a&gt;: An engine for
  inserting snippets of code. There’s also a
  &lt;a href=&quot;https://github.com/honza/vim-snippets&quot;&gt;standard repository of standard snippets&lt;/a&gt;, but I
  mostly only use my own snippets for larger snippets
  (e.g. create a new class, insert copyright headers, …).
  Downsides: it no longer works with &lt;code&gt;clang_complete&lt;/code&gt; (although it used to), and
  it seems hard to override already existing snippets (which is why I don’t
  use the default repository).&lt;/li&gt;
&lt;li&gt;
&lt;a href=&quot;http://www.vim.org/scripts/script.php?script_id=521&quot;&gt;&lt;code&gt;mru&lt;/code&gt;&lt;/a&gt;: Easily access recently opened
  files through the MRU list.&lt;/li&gt;
&lt;li&gt;
&lt;a href=&quot;http://www.vim.org/scripts/script.php?script_id=4504&quot;&gt;&lt;code&gt;dispatch&lt;/code&gt;&lt;/a&gt;:
  Asynchronous version of &lt;code&gt;:make&lt;/code&gt;, so you can still edit your code while your project is
  building. The downside is that it requires &lt;em&gt;iTerm&lt;/em&gt; on MacOS X or fires off a separate command
  shell on Linux and Windows, so it’s still not as nice as a native window running a build in
  its own thread, but it gets the job done.&lt;/li&gt;
&lt;li&gt;
&lt;a href=&quot;http://www.vim.org/scripts/script.php?script_id=1658&quot;&gt;&lt;code&gt;NERDtree&lt;/code&gt;&lt;/a&gt;: A better file system explorer than the default one. I don’t really use it
  that often (since I use &lt;code&gt;ctrlp&lt;/code&gt; to open files), but it’s handy for when you need
  to look around your project tree.&lt;/li&gt;
&lt;li&gt;
&lt;a href=&quot;http://www.vim.org/scripts/script.php?script_id=2136&quot;&gt;&lt;code&gt;repeat&lt;/code&gt;&lt;/a&gt;: ‘&lt;code&gt;.&lt;/code&gt;’ support for some of the plugins I use.&lt;/li&gt;
&lt;li&gt;
&lt;a href=&quot;http://www.vim.org/scripts/script.php?script_id=2120&quot;&gt;&lt;code&gt;speeddating&lt;/code&gt;&lt;/a&gt;: Increment dates using
  &lt;code&gt;Ctrl-A&lt;/code&gt;/&lt;code&gt;Ctrl-X&lt;/code&gt;. Not that I often do this,
  but since it just adds extra support to &lt;code&gt;Ctrl-A&lt;/code&gt;/&lt;code&gt;Ctrl-X&lt;/code&gt;, I just load it.&lt;/li&gt;
&lt;li&gt;
&lt;a href=&quot;http://www.vim.org/scripts/script.php?script_id=2340&quot;&gt;&lt;code&gt;molokai&lt;/code&gt;&lt;/a&gt;: A beautiful dark gray
  color scheme,
  based on the Monokai scheme from TextMate, and popular in other modern editors as well.&lt;/li&gt;
&lt;li&gt;
&lt;a href=&quot;http://vrapper.sourceforge.net/&quot;&gt;Vrapper&lt;/a&gt;: Not really a Vim plugin, but worth the mention: this Eclipse plugin
  provides a wide variety of Vim bindings to use inside Eclipse, so you can stay efficient when working on
  Java/Eclipse projects.&lt;/li&gt;
&lt;/ul&gt;</content:encoded>
	<dc:date>2013-05-17T22:00:00+00:00</dc:date>
</item>
<item rdf:about="tag:el-tramo.be,2013-05-18:/blog/my-favorite-plugins/">
	<title>Remko Tronçon: My Favorite Vim Plugins</title>
	<link>http://el-tramo.be/blog/my-favorite-plugins/</link>
	<content:encoded>&lt;p&gt;After &lt;a href=&quot;http://el-tramo.be/blog/sublime-text-experiment/&quot;&gt;a brief affair with another editor&lt;/a&gt;, I’m now back
to using
my beloved &lt;a href=&quot;http://www.vim.org&quot;&gt;Vim&lt;/a&gt; again. What’s more, I decided to invest the time I should have put in years ago when I started using
it, and learned to do things more efficiently. Besides reading
&lt;a href=&quot;http://pragprog.com/book/dnvim/practical-vim&quot;&gt;Practical Vim&lt;/a&gt; and watching some
&lt;a href=&quot;http://vimcasts.org&quot;&gt;VimCasts&lt;/a&gt;, I went through my list of plugins I collected over the years, removed the
ones I wasn’t using, learned about a couple of new ones I didn’t know, and re-learned some of the ones
I forgot about. Here’s the list of my favorite plugins I ended up with.&lt;/p&gt;




&lt;ul&gt;
&lt;li&gt;
&lt;a href=&quot;http://www.vim.org/scripts/script.php?script_id=2332&quot;&gt;&lt;code&gt;pathogen&lt;/code&gt;&lt;/a&gt;:
  Easy management of Vim plugins. I put all my Vim settings in a Git
  repository, and this plugin allows me to add plugins as a Git submodule
  somewhere in my settings tree. For an extensive tutorial, have a look at the
  &lt;a href=&quot;http://vimcasts.org/episodes/synchronizing-plugins-with-git-submodules-and-pathogen/&quot;&gt;&lt;code&gt;pathogen&lt;/code&gt;
  VimCast&lt;/a&gt;.
  Several other plugins with similar functionality have emerged since I started
  using &lt;code&gt;pathogen&lt;/code&gt;, but I haven’t tried them since this one does the trick for
  me.&lt;/li&gt;
&lt;li&gt;
&lt;a href=&quot;http://www.vim.org/scripts/script.php?script_id=4391&quot;&gt;&lt;code&gt;sensible&lt;/code&gt;&lt;/a&gt;:
  Have sensible, safe defaults for a modern day Vim setup. Allows me
  to trim down my vimrc a bit.&lt;/li&gt;
&lt;li&gt;
&lt;a href=&quot;http://www.vim.org/scripts/script.php?script_id=3736&quot;&gt;&lt;code&gt;ctrlp&lt;/code&gt;&lt;/a&gt;: Open files anywhere below your
  current directory very quickly, using
  fuzzy search. This is similar to Sublime’s “Go to anything” (which even uses the same
  shortcut). I almost exclusively open files using &lt;code&gt;ctrlp&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;a href=&quot;http://www.vim.org/scripts/script.php?script_id=1590&quot;&gt;&lt;code&gt;unimpaired&lt;/code&gt;&lt;/a&gt;: Easy to remember extra
  &lt;code&gt;]&lt;/code&gt; and &lt;code&gt;[&lt;/code&gt; shortcuts for a handful of useful tasks:
  cycling through files, buffers, arguments, SCM conflict markers, spelling errors; exchange
  lines, switch options, insert empty lines, … Also comes with shortcuts to
  toggle options, such as &lt;code&gt;col&lt;/code&gt; (toggle invisible characters), &lt;code&gt;con&lt;/code&gt;
  (toggle number column), &lt;code&gt;cos&lt;/code&gt; (toggle spell correction), …&lt;/li&gt;
&lt;li&gt;
&lt;a href=&quot;http://www.vim.org/scripts/script.php?script_id=1171&quot;&gt;&lt;code&gt;detectindent&lt;/code&gt;&lt;/a&gt;: Automatically detects whether tabs are expanded or not. Handy
  for working on multiple codebases with different tab preferences.&lt;/li&gt;
&lt;li&gt;
&lt;a href=&quot;http://www.vim.org/scripts/script.php?script_id=31&quot;&gt;&lt;code&gt;a&lt;/code&gt;&lt;/a&gt;: Switch between corresponding &lt;code&gt;.h&lt;/code&gt; and &lt;code&gt;.(c|cpp|mm)&lt;/code&gt; headers easily&lt;/li&gt;
&lt;li&gt;
&lt;a href=&quot;http://www.vim.org/scripts/script.php?script_id=2572&quot;&gt;&lt;code&gt;ack&lt;/code&gt;&lt;/a&gt;: Lightning fast greps across a project. I actually use &lt;code&gt;ag&lt;/code&gt; as backend.&lt;/li&gt;
&lt;li&gt;
&lt;a href=&quot;http://www.vim.org/scripts/script.php?script_id=3302&quot;&gt;&lt;code&gt;clang_complete&lt;/code&gt;&lt;/a&gt;: C/C++ code completion that works. Requires &lt;code&gt;clang&lt;/code&gt; to be on your system (which it is by default on MacOS X)&lt;/li&gt;
&lt;li&gt;
&lt;a href=&quot;http://www.vim.org/scripts/script.php?script_id=2386&quot;&gt;&lt;code&gt;endwise&lt;/code&gt;&lt;/a&gt;: Automatically adds &lt;code&gt;end&lt;/code&gt; when
  you write a &lt;code&gt;begin&lt;/code&gt;, but does it conservatively so it never inserts anything unwanted.&lt;/li&gt;
&lt;li&gt;
&lt;a href=&quot;http://www.vim.org/scripts/script.php?script_id=2975&quot;&gt;&lt;code&gt;fugitive&lt;/code&gt;&lt;/a&gt;. An extremely powerful Git integration for
  Vim. Apart from providing an interface for doing all kinds of (interactive) Git tasks from within Vim, also
  provides a status line entry for showing your current branch etc.
  There are
  &lt;a href=&quot;http://vimcasts.org/episodes/fugitive-vim---a-complement-to-command-line-git/&quot;&gt;a&lt;/a&gt;
  &lt;a href=&quot;http://vimcasts.org/episodes/fugitive-vim-working-with-the-git-index/&quot;&gt;couple&lt;/a&gt;
  &lt;a href=&quot;http://vimcasts.org/episodes/fugitive-vim-resolving-merge-conflicts-with-vimdiff/&quot;&gt;of&lt;/a&gt;
  &lt;a href=&quot;http://vimcasts.org/episodes/fugitive-vim-browsing-the-git-object-database/&quot;&gt;VimCast&lt;/a&gt;
  &lt;a href=&quot;http://vimcasts.org/episodes/fugitive-vim-exploring-the-history-of-a-git-repository/&quot;&gt;episodes&lt;/a&gt;
  about how to use this plugin.&lt;/li&gt;
&lt;li&gt;
&lt;a href=&quot;http://www.vim.org/scripts/script.php?script_id=1545&quot;&gt;&lt;code&gt;abolish&lt;/code&gt;&lt;/a&gt;: A set of search/replace/conversion commands
  that support plurals, case (MixedCase, camelCase, snake_case, …), … Can be used to rename variables
  easily, change case of avariable, … There are also
  &lt;a href=&quot;http://vimcasts.org/episodes/smart-search-with-subvert/&quot;&gt;some&lt;/a&gt;
  &lt;a href=&quot;http://vimcasts.org/episodes/supercharged-substitution-with-subvert/&quot;&gt;VimCasts&lt;/a&gt;
  &lt;a href=&quot;http://vimcasts.org/episodes/enhanced-abbreviations-with-abolish/&quot;&gt;about&lt;/a&gt; this plugin.&lt;/li&gt;
&lt;li&gt;
&lt;a href=&quot;http://www.vim.org/scripts/script.php?script_id=3304&quot;&gt;&lt;code&gt;gundo&lt;/code&gt;&lt;/a&gt;: Graphical overview of Vim’s undo tree.
  If you undid a couple of changes,
  did some other stuff, and decided that your initial version was actually better,
  you can easily revert back. This has saved me and my undecisive mind a couple
  of times already. Also has a &lt;a href=&quot;http://vimcasts.org/episodes/undo-branching-and-gundo-vim/&quot;&gt;VimCast&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;a href=&quot;http://www.vim.org/scripts/script.php?script_id=39&quot;&gt;&lt;code&gt;matchit&lt;/code&gt;&lt;/a&gt;: Match more than just braces with &lt;code&gt;%&lt;/code&gt;. Cycles through if/else, matches
  HTML/XML tags, …&lt;/li&gt;
&lt;li&gt;
&lt;a href=&quot;http://www.vim.org/scripts/script.php?script_id=1697&quot;&gt;&lt;code&gt;surround&lt;/code&gt;&lt;/a&gt;: change/delete/add surrounding quotes, parentheses, tags, …&lt;/li&gt;
&lt;li&gt;
&lt;a href=&quot;http://www.vim.org/scripts/script.php?script_id=2736&quot;&gt;&lt;code&gt;syntastic&lt;/code&gt;&lt;/a&gt;: Checks the syntax of your current file on save, and displays
  errors using markers in the sidebar. Saves you a round trip to your terminal
  when trying to compile/run the file.&lt;/li&gt;
&lt;li&gt;
&lt;a href=&quot;http://www.vim.org/scripts/script.php?script_id=273&quot;&gt;&lt;code&gt;taglist&lt;/code&gt;&lt;/a&gt;: A navigation window with an overview of all functions/variables in
  your current file. Uses &lt;code&gt;ctags&lt;/code&gt; behind the screens, but doesn’t require you
  to run &lt;code&gt;ctags&lt;/code&gt; yourself on the codebase. It can also put an entry with the
  current function in your status bar (which is useful when editing files
  with large functions).&lt;/li&gt;
&lt;li&gt;
&lt;a href=&quot;http://www.vim.org/scripts/script.php?script_id=1173&quot;&gt;&lt;code&gt;tcomment&lt;/code&gt;&lt;/a&gt;: Quickly comment out lines and code blocks. I used &lt;a href=&quot;http://www.vim.org/scripts/script.php?script_id=1218&quot;&gt;&lt;code&gt;NERDCommenter&lt;/code&gt;&lt;/a&gt; for a
  while, but &lt;code&gt;tcomment&lt;/code&gt; came with more natural Vim shortcuts (and is also supported
  by &lt;a href=&quot;http://vrapper.sourceforge.net&quot;&gt;Vrapper&lt;/a&gt;). I also tried
  &lt;a href=&quot;http://www.vim.org/scripts/script.php?script_id=3695&quot;&gt;&lt;code&gt;commentary&lt;/code&gt;&lt;/a&gt; (mostly because it’s by Tim Pope, and
  because it supports &lt;code&gt;repeat&lt;/code&gt;), which uses the same shortcuts, but this one doesn’t
  comment indented code blocks the way I want it to (i.e. put the indentation after
  the comment string instead of in front).&lt;/li&gt;
&lt;li&gt;
&lt;a href=&quot;http://www.vim.org/scripts/script.php?script_id=3526&quot;&gt;&lt;code&gt;easymotion&lt;/code&gt;&lt;/a&gt;:
  Makes it easy to jump to any word in your buffer, by assigning
  a single letter to each word, highlighting it, and drilling down with each keystroke.
  Although this plugin is probably
  as fast and intuitive as it gets, in a GUI mode, it may be a tad faster to
  simply reach for the mouse and click in the document. However, when editing
  remote files without mouse support, this plugin is great!&lt;/li&gt;
&lt;li&gt;
&lt;a href=&quot;http://www.vim.org/scripts/script.php?script_id=2540&quot;&gt;&lt;code&gt;snipmate&lt;/code&gt;&lt;/a&gt;: An engine for
  inserting snippets of code. There’s also a
  &lt;a href=&quot;https://github.com/honza/vim-snippets&quot;&gt;standard repository of standard snippets&lt;/a&gt;, but I
  mostly only use my own snippets for larger snippets
  (e.g. create a new class, insert copyright headers, …).
  Downsides: it no longer works with &lt;code&gt;clang_complete&lt;/code&gt; (although it used to), and
  it seems hard to override already existing snippets (which is why I don’t
  use the default repository).&lt;/li&gt;
&lt;li&gt;
&lt;a href=&quot;http://www.vim.org/scripts/script.php?script_id=521&quot;&gt;&lt;code&gt;mru&lt;/code&gt;&lt;/a&gt;: Easily access recently opened
  files through the MRU list.&lt;/li&gt;
&lt;li&gt;
&lt;a href=&quot;http://www.vim.org/scripts/script.php?script_id=4504&quot;&gt;&lt;code&gt;dispatch&lt;/code&gt;&lt;/a&gt;:
  Asynchronous version of &lt;code&gt;:make&lt;/code&gt;, so you can still edit your code while your project is
  building. The downside is that it requires &lt;em&gt;iTerm&lt;/em&gt; on MacOS X or fires off a separate command
  shell on Linux and Windows, so it’s still not as nice as a native window running a build in
  its own thread, but it gets the job done.&lt;/li&gt;
&lt;li&gt;
&lt;a href=&quot;http://www.vim.org/scripts/script.php?script_id=1658&quot;&gt;&lt;code&gt;NERDtree&lt;/code&gt;&lt;/a&gt;: A better file system explorer than the default one. I don’t really use it
  that often (since I use &lt;code&gt;ctrlp&lt;/code&gt; to open files), but it’s handy for when you need
  to look around your project tree.&lt;/li&gt;
&lt;li&gt;
&lt;a href=&quot;http://www.vim.org/scripts/script.php?script_id=2136&quot;&gt;&lt;code&gt;repeat&lt;/code&gt;&lt;/a&gt;: ‘&lt;code&gt;.&lt;/code&gt;’ support for some of the plugins I use.&lt;/li&gt;
&lt;li&gt;
&lt;a href=&quot;http://www.vim.org/scripts/script.php?script_id=2120&quot;&gt;&lt;code&gt;speeddating&lt;/code&gt;&lt;/a&gt;: Increment dates using
  &lt;code&gt;Ctrl-A&lt;/code&gt;/&lt;code&gt;Ctrl-X&lt;/code&gt;. Not that I often do this,
  but since it just adds extra support to &lt;code&gt;Ctrl-A&lt;/code&gt;/&lt;code&gt;Ctrl-X&lt;/code&gt;, I just load it.&lt;/li&gt;
&lt;li&gt;
&lt;a href=&quot;http://www.vim.org/scripts/script.php?script_id=2340&quot;&gt;&lt;code&gt;molokai&lt;/code&gt;&lt;/a&gt;: A beautiful dark gray
  color scheme,
  based on the Monokai scheme from TextMate, and popular in other modern editors as well.&lt;/li&gt;
&lt;li&gt;
&lt;a href=&quot;http://vrapper.sourceforge.net/&quot;&gt;Vrapper&lt;/a&gt;: Not really a Vim plugin, but worth the mention: this Eclipse plugin
  provides a wide variety of Vim bindings to use inside Eclipse, so you can stay efficient when working on
  Java/Eclipse projects.&lt;/li&gt;
&lt;/ul&gt;</content:encoded>
	<dc:date>2013-05-17T22:00:00+00:00</dc:date>
</item>
<item rdf:about="http://blog.process-one.net/?p=1159">
	<title>ProcessOne: Google Cloud Messaging Update Boosted by XMPP</title>
	<link>http://blog.process-one.net/google-cloud-messaging-update-boosted-by-xmpp/</link>
	<content:encoded>&lt;p&gt;As you know, ProcessOne is about realtime messaging. Our core component is XMPP ejabberd scalable and ubiquitous server. We recently acquired Boxcar to use a familiar and popular brand for our large scale push notification service for mobile as well.&lt;/p&gt;
&lt;p&gt;From this perspective, Google’s huge update on its Cloud Messaging service is the &lt;strong&gt;biggest announcement&lt;/strong&gt; from this year Google I/O, as it mixes our two core strengths. We strongly believe this is a big deal for mobile developers and we will explain why.&lt;/p&gt;
&lt;p&gt;&lt;span id=&quot;more-1159&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h2&gt;&lt;b&gt;What is Google Cloud Messaging (GCM) ?&lt;/b&gt;&lt;/h2&gt;
&lt;p style=&quot;text-align: center;&quot;&gt; &lt;a href=&quot;http://blog.process-one.net/wp-content/uploads/2013/05/google-io-keynote-cloud-1.jpg&quot;&gt;&lt;img src=&quot;http://blog.process-one.net/wp-content/uploads/2013/05/google-io-keynote-cloud-1-300x168.jpg&quot; alt=&quot;google-io-keynote-cloud-1&quot; width=&quot;300&quot; class=&quot;size-medium wp-image-1164 aligncenter&quot; height=&quot;168&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;In case you never heard about it, here is a quick overview.&lt;/p&gt;
&lt;p&gt;Google Cloud Messaging have been announced last year as a replacement of Google Cloud to Device Messaging. This is a service that allows mobile developer to notify mobile devices (but also Chrome browser) about important changes on the server-side component of the application. It makes it possible for the device to stay up to date, without the need to use polling. Polling is about checking periodically for updates on your server and is bad for several reasons:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;it consumes lot of battery, periodically waking up the mobile device network stack.&lt;/li&gt;
&lt;li&gt;it consumes a lot of useless resources on the server as most of this resource lead to a “no update” reply.&lt;/li&gt;
&lt;li&gt;it introduces latency as the request for new data can happen long after the data availability (unless you put a very low polling interval, which is even worse for the mobile battery). You can get your news alert hours after every one already knows about it, which defeat the purpose of the alert in the first place.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Push notifications avoid all those drawbacks, saving battery life, providing lower latency, reducing server load. As a permanently connected session to Google servers, it get the important notification messages as soon as they happen, in a battery efficient way.&lt;/p&gt;
&lt;p&gt;Being a service that runs at device level, it can be optimized across applications running on the same device and perform further battery saving benefits.&lt;/p&gt;
&lt;p&gt;So, this is a really critical feature to implement in application relying on data coming from the network (which actually covers a lot of applications).&lt;/p&gt;
&lt;p&gt;GCM offers nice outstanding features like:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style=&quot;line-height: 15px;&quot;&gt;Support two use cases:&lt;/span&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;“send to sync”&lt;/strong&gt;: short notification to tell client to get update from developer server.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;“send data”&lt;/strong&gt;: larger notification containing the data payload, avoiding an extra client to developer server roundtrip.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Time to live&lt;/strong&gt; can be used to destroy message without notification if device was not online before its expiration. Pending messages can also be replaced with the &lt;strong&gt;collapse&lt;/strong&gt; feature.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Delay when idle&lt;/strong&gt; can be use for less urgent notifications. Device will get it when becoming active again.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Multicast messages&lt;/strong&gt; to send the same notification to up to 1000 devices.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;&lt;b&gt;What does GCM update brings to developers ?&lt;/b&gt;&lt;/h2&gt;
&lt;p&gt;The new update is a brand new service deployment bringing a large set of new features for developers.&lt;/p&gt;
&lt;p&gt;In short, it brings:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Persistent connections&lt;/strong&gt; are supported between developer backend and Google, allowing sending a larger number of notifications faster.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Upstream messaging&lt;/strong&gt;: This allows the device to send back notifications to the developer server, through Google platform.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Notifications synchronization&lt;/strong&gt; between devices. Basically, this allows a developer to remove a notification from a device when it has been read / processed on another device.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;GCM Cloud Connection Service (CCS): Persistent connections using XMPP&lt;/h3&gt;
&lt;p&gt;Google choose to use XMPP to allow developers to keep a persistent connection. It works as follow:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;You open an &lt;strong&gt;XMPP client&lt;/strong&gt; connection to Google XMPP GCM server (Port 5235 on gcm.googleapis.com).&lt;/li&gt;
&lt;li&gt;You can then keep the secure connection open for as long as you wish.&lt;/li&gt;
&lt;li&gt;You can then send your usual GCM JSON payload in XMPP message packets.&lt;/li&gt;
&lt;li&gt;This is streaming so you receive possible errors asynchronously and you can match it to original push thanks to XMPP message id.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This alone brings you a huge performance increase, allowing your server to send up to 4000 messages per second on the persistent connection. Knowing you are allowed up to 10 connections, you can possibly send many notifications fast (up to 40k notifications per second).&lt;/p&gt;
&lt;p&gt;A few things to note:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style=&quot;line-height: 15px;&quot;&gt;You cannot use multicast messages with XMPP persistant connection (at least yet).&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;However, you can mix HTTP connexions and XMPP persistant connections in your use case to optimize the performance depending on the use case.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Upstream messaging&lt;/h3&gt;
&lt;p&gt;Upstream messaging allows your client to send data asynchronously to your server. Compared to HTTP posts, it offer several advantages:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;It is &lt;strong&gt;easy&lt;/strong&gt; for client developer, with a simple &lt;em&gt;gcm.send&lt;/em&gt; command. This is “fire and forget”. Client developer sends the data. Android GCM framework save it locally, with the commitment to deliver it.&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;line-height: 15px;&quot;&gt;It is &lt;strong&gt;reliable&lt;/strong&gt; with reliability handled transparently by GCM mobile framework on the client. There is acknowledgement mechanism on the client and between GCM and your server that ensure no message can be lost.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;Timing to send is &lt;strong&gt;optimized&lt;/strong&gt; across mobile applications. This allow significant battery saving for messages that are not very time sensitive. Optimization is even performed based on the server side down stream needs. If client or server send messages first, the other direction queue is flushed at the same time.&lt;/li&gt;
&lt;li&gt;It supports &lt;strong&gt;time to live&lt;/strong&gt;. If the message could not be send, because network is unavailable and is not relevant anymore, it is discarded.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;As a developer, your server will receive the message through an XMPP connection. However, be very careful about your server efficiency: you have to be robust and read data fast as the GCM server will queue for you 100 messages before starting to overwrite them (and if you are offline for 24 hours it will discard your messages).&lt;/p&gt;
&lt;h3&gt;Multi-devices notification synchronisation&lt;/h3&gt;
&lt;p&gt;The goal of this feature is to makes your notifications state becomes up to date and consistent across a user devices, by propagating state change between the user application installations on your various devices.&lt;/p&gt;
&lt;p&gt;This feature is designed to bring many added benefits in the way multiple devices are handled.&lt;/p&gt;
&lt;p&gt;First, to know that your app is used by the same users, you can group your device Registration Ids under the same &lt;em&gt;notification_key&lt;/em&gt;. Notification key is typically a hash of the username. You are allowed up to 10 devices linked to that notification_key.&lt;/p&gt;
&lt;p&gt;Once you have done that, you can use that notification_key as a user id to send notifications to all devices of a given user. By doing so, you let GCM performs lots of optimizations under the hood. Notification will be send in priority to the active device or the last active device. Other devices will get the notification a bit later in a delay while idle type of delivery.&lt;/p&gt;
&lt;p&gt;Once the notification has been processed and dismissed, other devices are notified and they can remove the notification as well. If they were not notified yet, notification is directly canceled from the notification queue.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;As you see, update to Google Cloud Messaging is really a big update for developers, increasing the number of situation this platform is relevant.&lt;/p&gt;
&lt;p&gt;We are already working on supporting those improvements on our push notification platform to help you all benefits of those improvements.&lt;/p&gt;
&lt;p&gt;Stay tuned for more information on this support very soon.&lt;/p&gt;
&lt;p&gt;Here is the video of Francesco Nerieri’s talk on GCM:&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;</content:encoded>
	<dc:date>2013-05-17T17:55:34+00:00</dc:date>
	<dc:creator>Mickaël Rémond</dc:creator>
</item>
<item rdf:about="http://blog.prosody.im/prosody-0-9-0beta1-available-for-testing/">
	<title>Prosodical Thoughts: Prosody 0.9.0beta1 available for testing</title>
	<link>http://blog.prosody.im/prosody-0-9-0beta1-available-for-testing/</link>
	<content:encoded>&lt;p&gt;It's the news you've all been waiting for! We present the first beta of our upcoming 0.9.0 release. For those
of you not already following our development and nightly builds, here are a few of the major changes in this
development branch (codenamed 'Prosody Everyone Edition') since 0.8:&lt;/p&gt;




&lt;p&gt;&lt;/p&gt;&lt;div style=&quot;clear: both;&quot;&gt;&lt;p&gt;&lt;/p&gt;

&lt;ul&gt;
    &lt;li&gt;Full IPv6 support for all services (c2s, s2s, HTTP, etc.)&lt;/li&gt;
    &lt;li&gt;Server-to-server authentication using certificates (SASL EXTERNAL)&lt;/li&gt;
    &lt;li&gt;A new and improved HTTP subsystem, supporting virtual hosts and fully-reloadable modules&lt;/li&gt;
    &lt;li&gt;Basic pubsub service&lt;/li&gt;
    &lt;li&gt;Many other fixes and improvements, see our &lt;a href=&quot;http://prosody.im/doc/release/0.9.0&quot;&gt;release notes&lt;/a&gt; for more information.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Important:&lt;/strong&gt; This release introduces some changes that require attention from people who upgrade from previous
releases. Please read the upgrading section of our &lt;a href=&quot;http://prosody.im/doc/release/0.9.0#upgrading&quot;&gt;release notes&lt;/a&gt; to
avoid any surprises.&lt;/p&gt;

&lt;p&gt;We expect there to be one or two more betas before rc1, and then the final release soon after that.&lt;/p&gt;

&lt;p&gt;As always, we appreciate all the help that we get testing Prosody. If you find any issues, please &lt;a href=&quot;http://prosody.im/bugs&quot;&gt;report them&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;Download&lt;/h2&gt;

&lt;h3&gt;Debian/Ubuntu&lt;/h3&gt;

&lt;p&gt;If you are using our &lt;a href=&quot;http://prosody.im/doc/package_repository&quot;&gt;package repository&lt;/a&gt; then you can simply install
the &lt;em&gt;prosody-0.9&lt;/em&gt; package, which automatically tracks our 0.9 branch.&lt;/p&gt;

&lt;p&gt;Alternatively you can download packages manually from &lt;a href=&quot;http://packages.prosody.im/debian/pool/dev/p/prosody/&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;Windows&lt;/h3&gt;

&lt;ul&gt;
    &lt;li&gt;&lt;a href=&quot;http://prosody.im/tmp/0.9.0beta1/ProsodySetup-0.9.0beta1.exe&quot;&gt;Windows installer&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;http://prosody.im/tmp/0.9.0beta1/Prosody-0.9.0beta1.zip&quot;&gt;Windows zip&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;Source&lt;/h3&gt;

&lt;p&gt;Finally, for you old-school folks...&lt;/p&gt;

&lt;ul&gt;
    &lt;li&gt;&lt;strong&gt;Source tarball&lt;/strong&gt;: &lt;a href=&quot;http://prosody.im/tmp/0.9.0beta1/prosody-0.9.0beta1.tar.gz&quot;&gt;prosody-0.9.0beta1.tar.gz&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;</content:encoded>
	<dc:date>2013-05-16T17:08:13+00:00</dc:date>
	<dc:creator>The Prosody Team</dc:creator>
</item>
<item rdf:about="http://blog.process-one.net/?p=1155">
	<title>ProcessOne: Google I/O 2013: Services, services, services</title>
	<link>http://blog.process-one.net/google-io-2013-services-services-services/</link>
	<content:encoded>&lt;p&gt;Today was the keynote of Google I/O developer conference. The keynote is usually the place where major announcements are made regarding the Google ecosystem.&lt;/p&gt;
&lt;p&gt;Despite impressive announcements, the most important thing that strikes me is not what has been released, but what has not been mentioned.&lt;/p&gt;
&lt;h2&gt;Services, services and more services&lt;/h2&gt;
&lt;p&gt;First, what are the main areas of focus this year ?&lt;/p&gt;
&lt;p&gt;Either on Android, on Chrome or on the Cloud and server engine architecture Google is showing its consistency in pushing further existing services, adding new ones, and integrating all the pieces together. Here is the impressive list of highlights to their service stack:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style=&quot;line-height: 15px;&quot;&gt;Google &lt;strong&gt;Maps API V2&lt;/strong&gt; and &lt;strong&gt;location API&lt;/strong&gt; improvements, with:&lt;/span&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style=&quot;line-height: 15px;&quot;&gt;&lt;strong&gt;Fused location&lt;/strong&gt; = faster, more accurate and more battery friendly.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Geofencing&lt;/strong&gt;, ability to save up to one hundred location triggers per application.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Activity recognition&lt;/strong&gt; based on the phone accelerometer. Device can know if your are walking, cycling, walking, driving. This is a battery efficient, not relying on GPS.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Google+ Sign in&lt;/strong&gt;, brings deep integration between website and Android apps with Google+ service.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Google Cloud Messaging&lt;/strong&gt;, Google Push Notification service, with three major highlights:
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Persistent connections&lt;/strong&gt; are supported between developer backend and Google, allowing sending a larger number of notifications faster.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Upstream messaging&lt;/strong&gt;: This allows the device to send back notifications to the developer server, through Google platform.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Notifications synchronization&lt;/strong&gt; between devices. Basically, this allows a developer to remove a notification from a device when it has been read / processed on another device.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;padding-left: 30px;&quot;&gt;Google Cloud Messaging is one our main area of interest. We are already working on the new features and we will have announcements to make soon under our mobile &lt;strong&gt;Boxcar&lt;/strong&gt; brand. Stay tuned :)&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Google Play &lt;strong&gt;Game Service&lt;/strong&gt;, with:
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Cloud Save&lt;/strong&gt; to synchronize your game progress across devices.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Achievements and Learderboard&lt;/strong&gt;, integrated with Google+.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Multiplayer API&lt;/strong&gt; to help developer with networking part.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Matchmaking&lt;/strong&gt; to find players to play with.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cross-platform&lt;/strong&gt; experience on Android and iOS.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Google Wallet&lt;/strong&gt;: low profile (aka not really promoted in the keynote) improvements, like GMail payments, or easier checkout on mobile.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Better developer console&lt;/strong&gt; to analyse how Android apps are doing and optimize their performance, more specifically:
&lt;ul&gt;
&lt;li&gt;Optimization tips&lt;/li&gt;
&lt;li&gt;App Translation Service.&lt;/li&gt;
&lt;li&gt;Referal tracking&lt;/li&gt;
&lt;li&gt;Usage metrics (Google Analytics from the developer console).&lt;/li&gt;
&lt;li&gt;Revenue graph&lt;/li&gt;
&lt;li&gt;Beta testing and stage rollout management&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;There have also been announcements focusing on Google services improvements or addition for main users (as opposed to developers):&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Google Play Store improvements&lt;/strong&gt; to better promote apps to users.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Google Music&lt;/strong&gt; subscription service (US only for now).&lt;/li&gt;
&lt;li&gt;Huge &lt;strong&gt;Google Maps&lt;/strong&gt; rework and redesign.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Search improvements&lt;/strong&gt; with focus on:
&lt;ul&gt;
&lt;li&gt;more knowledge graph integration in search.&lt;/li&gt;
&lt;li&gt;more integration of personal information and Google+, circle based personnalisation in search results.&lt;/li&gt;
&lt;li&gt;Better conversation (aka iteratively refined voice search), with conversation-based queries coming to Chrome on the desktop.&lt;/li&gt;
&lt;li&gt;Google Now improvements with more cards, to anticipate your search needs on the go.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Google+ improvements&lt;/strong&gt;, mostly for end users:
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Stream&lt;/strong&gt; redesign&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Hangouts&lt;/strong&gt; chat system, which is a cross platform merge of all Google chats. It is cross-platform, focus on conversation, realtime, photo sharing and video group calling.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Photos&lt;/strong&gt; management, with impressive auto-enhancement and sorting features.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Note from an XMPP developer perspective: Does the new Hangouts mean Gtalk and XMPP will disappear, along with interoperability ? There was not word about it, but I think so.&lt;/p&gt;
&lt;p&gt;Impressive, isn’t it ?&lt;/p&gt;
&lt;p&gt;Still, as a developer, that first day strangely leaves me with a feeling of unfullfilled expectations. Why ? I think to understand it, we need to list what Google did not talk about.&lt;/p&gt;
&lt;h2&gt;What Google did not talk about&lt;/h2&gt;
&lt;p&gt;In previous Google I/O, the center stage is usually taken by:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Android&lt;/strong&gt; updates: There was none announced today.&lt;/li&gt;
&lt;li&gt;Shiny new &lt;strong&gt;devices&lt;/strong&gt;, usually prerelease to developers. Nothing on this part as well.&lt;/li&gt;
&lt;li&gt;New &lt;strong&gt;unexpected projects&lt;/strong&gt;, like Chrome, Google Glasses, Google TV, or even the now dead Wave.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;On this side, nothing has been announced. No mention of Android for home or TV. No successor for the now dead Nexus Q. No update on Android Accessory Developement Kit. No glasses push. No new wearable computer.&lt;/p&gt;
&lt;p&gt;Despite a few talks on Google glasses tomorrow, there have been little mention of the progress so far in the keynote.&lt;/p&gt;
&lt;p&gt;This year, Google is focusing on services for several (valid) reasons:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Those services are &lt;strong&gt;updated&lt;/strong&gt; directly on the devices through Google Play Store. They can more easily push the updates to the end users.&lt;/li&gt;
&lt;li&gt;Services are perceived are &lt;strong&gt;Apple’s Achille heel&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Services are a way to put Google at the front stage and &lt;strong&gt;differenciate&lt;/strong&gt; the Google experience from the various Android forks. It also allow Google to differenciate from device manufacturers that are increasingly trying to get the front stage with their Android devices.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;But as Google focus on Services, the story they tell is increasingly about themselves.&lt;/p&gt;
&lt;p&gt;For Android developer, on the most major highlight (outside of Google Services) was Android Studio, a development environment based on Jetbrains Intellij, release today in early preview (version 0.1!).&lt;/p&gt;
&lt;p&gt;Google have even been heavily promoting Chrome on Desktop, but now also on Android and iOS, focusing on bringing the same experience from all the environment. Along with the fact that both Chrome and Android and under the unique direction of Sundar Pichai, this leave a strange confusing impression.&lt;/p&gt;
&lt;p&gt;My conclusion is that for Google, devices do not matter. When Larry Page says that he wants the technology, the device to disappear, he actually means it in the proper sense. Google Glasses and conversational search are a steps in that direction. They are the most straightforward access to Google services. Ideally, they should not even be needed.&lt;/p&gt;
&lt;p&gt;It does not matter if you use Chrome, Glasses, Android or iOS to access Google Services. What matter are the services themselves and the contextual data that can be gathered to improve relevance and personnalisation of the service.&lt;/p&gt;
&lt;p&gt;Sundar Pichai said two days ago that Google I/O will not be centered on the devices. It is because devices are not an end but a mean for Google.&lt;/p&gt;
&lt;p&gt;I feel at this Google I/O, the goal of Google has never been more clear (if you look through the confusion I mentioned earlier).&lt;/p&gt;
&lt;p&gt;At this very moment, the path of Apple and Google may split there:&lt;/p&gt;
&lt;p&gt;Google wants to improve people lifes with services, making the technology totally hidden. Apple wants to improve people life by focusing on how people interact with the technology (touch, voice, and more). This goes through devices improvements (lighter, faster, easier to use), not making the devices disappear.&lt;/p&gt;
&lt;p&gt;Today, I feel that we are at a turning point, I am really looking forward WWDC to see what will be Apple move.&lt;/p&gt;</content:encoded>
	<dc:date>2013-05-16T02:22:17+00:00</dc:date>
	<dc:creator>Mickaël Rémond</dc:creator>
</item>
<item rdf:about="http://isode.com/company/wordpress/?p=2105">
	<title>Isode: The M-Link IRC Gateway: new whitepapers</title>
	<link>http://isode.com/company/wordpress/irc-gateway/</link>
	<content:encoded>&lt;img src=&quot;http://isode.com/company/wordpress//wp-content/uploads/2011/11/whitepaper.png&quot; alt=&quot;&quot; title=&quot;Whitepapers&quot; width=&quot;24&quot; height=&quot;50&quot; /&gt;&lt;br /&gt;&lt;p&gt;Military deployments make extensive use of text chat services, mostly for multi-user chat (MUC). A vast majority of new deployments use the XMPP (eXtensible Messaging and Presence Protocol) standard but there are significant legacy text chat installations using IRC (Internet Relay Chat).&lt;/p&gt;
&lt;p&gt;Communication between IRC and XMPP networks is often problematic.  In the next major release of the Isode product set, R16, we’re introducing an IRC gateway into our M-Link XMPP Server product. We are doing this because we believe that existing gateways do not include functionality appropriate to our target markets.&lt;/p&gt;
&lt;p&gt;Existing gateways allow individual XMPP users to connect into IRC channels (where they adopt a username derived from their XMPP JID). In this model the XMPP user is downgrading to IRC capabilities. The Isode gateway associates an XMPP MUC room with an IRC channel, giving a number of benefits over existing approaches:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The 	involvement of IRC is totally transparent to the XMPP user. The user will see a normal MUC room which just happens to be connected to an IRC channel.&lt;/li&gt;
&lt;li&gt;Full 	MUC functionality is available locally, for example MUC access control and affiliation management.&lt;/li&gt;
&lt;li&gt;There is no downgrade of security for XMPP users with XMPP traffic. XMPP users are still authenticated and connections are protected with TLS.&lt;/li&gt;
&lt;li&gt;M-Link security label support is available, including translation to IRC users as FLOT (First Line of Text) labels in the IRC messages.&lt;/li&gt;
&lt;li&gt;The 	XMPP administrator has control of MUC room naming, which does not have to match IRC channel naming.&lt;/li&gt;
&lt;/ul&gt;
&lt;div style=&quot;width: 310px;&quot; class=&quot;wp-caption aligncenter&quot; id=&quot;attachment_2111&quot;&gt;&lt;a href=&quot;http://isode.com/company/wordpress/wp-content/uploads/2013/05/xmpp-irc51.png&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://isode.com/company/wordpress/wp-content/uploads/2013/05/xmpp-irc51-300x294.png&quot; title=&quot;xmpp-irc&quot; height=&quot;294&quot; width=&quot;300&quot; alt=&quot;Chat from the perspective of IRC and XMPP&quot; class=&quot;size-medium wp-image-2111 &quot; /&gt;&lt;/a&gt;&lt;p class=&quot;wp-caption-text&quot;&gt;Chat from the perspective of IRC and XMPP&lt;/p&gt;&lt;/div&gt;
&lt;p&gt;We’ve released two whitepapers today which talk about IRC, XMPP and the new capabilities in M-Link R16.&lt;/p&gt;
&lt;p&gt;In [&lt;a href=&quot;http://www.isode.com/whitepapers/interconnecting-xmpp-and-irc.html&quot; target=&quot;_blank&quot;&gt;Interconnecting XMPP and IRC&lt;/a&gt;] we describe the operation of both XMPP and IRC and then look at the different approaches to gateways between these two services, comparing the existing approach with Isode’s solution.&lt;/p&gt;
&lt;p&gt;In [&lt;a href=&quot;http://www.isode.com/whitepapers/irc-fmuc-and-xmpp-guards.html&quot; target=&quot;_blank&quot;&gt;Deploying IRC, Federated MUC and XMPP Guards&lt;/a&gt;]  we look at how IRC would operate with a Federated Multi-User Chat (FMUC) deployment. FMUC is a new standard, more information here. The paper also looks at how the solution would work in a cross-domain environment using XMPP Guards.&lt;/p&gt;
&lt;p&gt;R16 is currently in late beta and will be released in June 2013.&lt;/p&gt;</content:encoded>
	<dc:date>2013-05-14T15:18:04+00:00</dc:date>
	<dc:creator>Will Sheward</dc:creator>
</item>
<item rdf:about="tag:blogger.com,1999:blog-2875641587368436167.post-9173745859332246931">
	<title>Rodrigo Duarte (GSoC 2012): Media Server user authentication - XEP-0070</title>
	<link>http://rodrigodsousa.blogspot.com/2012/07/media-server-user-authentication-xep.html</link>
	<content:encoded>XEP-0070 is a known specification of how verify HTTP requests via XMPP. It has basically &lt;a href=&quot;http://xmpp.org/extensions/xep-0070.html#usecase&quot; target=&quot;_blank&quot;&gt;8 steps&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;In the Media Server, when a HTTP request arrives, the HTTP side forwards the request to a AuthVerifier class, this class has control over an XMPP component, to send and receive packets in a synchronous way, via a SyncReplySend util class. Once the AuthVerifier class receives the request, it &quot;asks&quot; if the client has sent it, if yes, the request is authorized, if not, the HTTP side returns a 403 error.&lt;br /&gt;&lt;br /&gt;Here is the sequence diagram:&lt;br /&gt;&lt;br /&gt;&lt;div style=&quot;clear: both; text-align: center;&quot; class=&quot;separator&quot;&gt;&lt;a style=&quot;margin-left: 1em; margin-right: 1em;&quot; href=&quot;http://2.bp.blogspot.com/-F94I8XMKnos/UBCdiiMD9gI/AAAAAAAAAUM/1yN60MxMdO8/s1600/index.png&quot;&gt;&lt;img src=&quot;http://2.bp.blogspot.com/-F94I8XMKnos/UBCdiiMD9gI/AAAAAAAAAUM/1yN60MxMdO8/s1600/index.png&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;/div&gt;To send its credentials, the client has two options:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Via HTTP auth: &lt;span style=&quot;color: #444444;&quot;&gt;&lt;span style=&quot;font-family: Courier, monospace; font-size: x-small; line-height: 16px;&quot; class=&quot;typ&quot;&gt;Authorization&lt;/span&gt;&lt;span style=&quot;font-family: Courier, monospace; font-size: x-small; line-height: 16px;&quot; class=&quot;pun&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;font-family: Courier, monospace; font-size: x-small; line-height: 16px;&quot; class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span style=&quot;font-family: Courier, monospace; font-size: x-small; line-height: 16px;&quot; class=&quot;typ&quot;&gt;Basic&lt;/span&gt;&lt;span style=&quot;font-family: Courier, monospace; font-size: x-small; line-height: 16px;&quot; class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span style=&quot;font-family: Courier, monospace; font-size: x-small; line-height: 16px;&quot; class=&quot;typ&quot;&gt;QWxhZGRpbjpvcGVuIHNlc2FtZQ&lt;/span&gt;&lt;span style=&quot;font-family: Courier, monospace; font-size: x-small; line-height: 16px;&quot; class=&quot;pun&quot;&gt;==&lt;/span&gt; &lt;/span&gt;&lt;/li&gt;&lt;li&gt;Via URL: &lt;span style=&quot;background-color: white; color: #444444; font-family: Courier, monospace; font-size: x-small; line-height: 16px;&quot; class=&quot;typ&quot;&gt;/media/test@topics.buddycloud.org?auth=QWxhZGRpbjpvcGVuIHNlc2FtZQ&lt;/span&gt;&lt;span style=&quot;background-color: white; color: #444444; font-family: Courier, monospace; font-size: x-small; line-height: 16px;&quot; class=&quot;pun&quot;&gt;==&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;In both ways, the client's JID and transaction id, are separated by a &lt;i&gt;;&lt;/i&gt; and are base 64 encoded.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This week, we hope to do the first deploy, to finally see the Media Server running in a production environment!&lt;/div&gt;</content:encoded>
	<dc:date>2013-05-07T14:41:11+00:00</dc:date>
	<dc:creator>Rodrigo Duarte (noreply@blogger.com)</dc:creator>
</item>
<item rdf:about="http://community.igniterealtime.org/blogs/ignite/2013/05/04/smack-33-is-released">
	<title>Ignite Realtime Blog: Smack 3.3 is released</title>
	<link>http://community.igniterealtime.org/blogs/ignite/2013/05/04/smack-33-is-released</link>
	<content:encoded>&lt;div class=&quot;jive-rendered-content&quot;&gt;&lt;p&gt;The Ignite Realtime community is happy to announce the latest release of Smack (version 3.3).  It is now available for &lt;a href=&quot;http://www.igniterealtime.org/downloads/index.jsp#smack&quot; class=&quot;jive-link-external-small&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;download&lt;/a&gt;.  There have been a large number of issues addressed for this release, including new functionality with support for several more protocol extensions (XEP's) and many improvements on existing features.&lt;/p&gt;&lt;h4&gt;        New Features &lt;/h4&gt;&lt;ul&gt;&lt;li&gt;[&lt;a href=&quot;http://issues.igniterealtime.org/browse/SMACK-331&quot; class=&quot;jive-link-external-small&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;SMACK-331&lt;/a&gt;] -         Add support for XEP-0184: Message Delivery Receipts &lt;/li&gt;&lt;li&gt;[&lt;a href=&quot;http://issues.igniterealtime.org/browse/SMACK-345&quot; class=&quot;jive-link-external-small&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;SMACK-345&lt;/a&gt;] -         Inproved detection of last activity &lt;/li&gt;&lt;li&gt;[&lt;a href=&quot;http://issues.igniterealtime.org/browse/SMACK-361&quot; class=&quot;jive-link-external-small&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;SMACK-361&lt;/a&gt;] -         Add support for XEP-0115 Entity Capabilities &lt;/li&gt;&lt;li&gt;[&lt;a href=&quot;http://issues.igniterealtime.org/browse/SMACK-376&quot; class=&quot;jive-link-external-small&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;SMACK-376&lt;/a&gt;] -         Setting a custom trust manager to control certificates from outside &lt;/li&gt;&lt;li&gt;[&lt;a href=&quot;http://issues.igniterealtime.org/browse/SMACK-388&quot; class=&quot;jive-link-external-small&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;SMACK-388&lt;/a&gt;] -         XEP-199 XMPP Ping support &lt;/li&gt;&lt;/ul&gt;&lt;p style=&quot;height: 8pt; padding: 0px;&quot;&gt; &lt;/p&gt;&lt;p&gt;In addition to these, there have been many bugs fixed and a variety of other tasks done, the complete listing can be viewed &lt;a href=&quot;http://www.igniterealtime.org/builds/smack/docs/latest/changelog.html&quot; class=&quot;jive-link-external-small&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;here&lt;/span&gt;&lt;/a&gt;.&lt;/p&gt;&lt;/div&gt;</content:encoded>
	<dc:date>2013-05-04T13:46:04+00:00</dc:date>
	<dc:creator>Ignite Realtime Blog (communityadmin@igniterealtime.org)</dc:creator>
</item>

</rdf:RDF>
