<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Psi on Notes</title>
    <link>https://www.simplicidade.org/tags/psi/index.xml</link>
    <description>Recent content in Psi on Notes</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en-us</language>
    <managingEditor>melo@simplicidade.org (Pedro Melo)</managingEditor>
    <webMaster>melo@simplicidade.org (Pedro Melo)</webMaster>
    <copyright>(c) 2016 Pedro Melo.</copyright>
    <atom:link href="/tags/psi/index.xml" rel="self" type="application/rss+xml" />
    <atom:link rel="hub" href="https://pubsuhhubbub.superfeedr.com/"/>
    
    <item>
      <title>Google Talk client is too simple = Great!!!</title>
      <link>https://www.simplicidade.org/notes/2005/08/24/google-talk-client-is-too-simple--great/</link>
      <pubDate>Wed, 24 Aug 2005 19:57:33 +0000</pubDate>
      <author>melo@simplicidade.org (Pedro Melo)</author>
      <guid>https://www.simplicidade.org/notes/2005/08/24/google-talk-client-is-too-simple--great/</guid>
      <description>&lt;p&gt;Guys, yes, I agree that the Google Talk client is too simple:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;no offline messages;&lt;/li&gt;
&lt;li&gt;no &amp;ldquo;spiffy&amp;rdquo; flash stuff and emoticons with gazilion skins;&lt;/li&gt;
&lt;li&gt;no file transfer;&lt;/li&gt;
&lt;li&gt;no multi-user chat;&lt;/li&gt;
&lt;li&gt;etc, etc, etc.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That&amp;rsquo;s great!&lt;/p&gt;

&lt;p&gt;That only means that we can build our own clients, with those features, and compete. Imagine that, real competition in the IM world. The best client wins. I&amp;rsquo;m not letting go of my Psi, I can tell you that.&lt;/p&gt;

&lt;p&gt;And Yahoo, AOL, Apple and Google will always be able to innovate and integrate services. There is no big risk to them, to provide extra services to their customers, using their clients.&lt;/p&gt;

&lt;p&gt;The difference is that, like SMTP for mail, they will all be using a standard and open protocol.&lt;/p&gt;

&lt;p&gt;That&amp;rsquo;s the real issue about Google Talk: they are using something open and therefore, you can compete with them on the client side.&lt;/p&gt;

&lt;p&gt;If you don&amp;rsquo;t understand what I&amp;rsquo;m saying, try this:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://www.saint-andre.com/blog/2005-08.html#2005-08-24T22:17&#34;&gt;Peter Saint-André&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://www.michaelrobertson.com/archive.php?minute_id=187&#34;&gt;Michael Robertson&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://www.michaelrobertson.com/archive.php?minute_id=187&#34;&gt;Mark Ward, BBC News&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The only thing for this to become a reality is server-to-server interop. :)&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Psi nightly builds</title>
      <link>https://www.simplicidade.org/notes/2005/04/15/psi-nightly-builds/</link>
      <pubDate>Fri, 15 Apr 2005 11:38:14 +0000</pubDate>
      <author>melo@simplicidade.org (Pedro Melo)</author>
      <guid>https://www.simplicidade.org/notes/2005/04/15/psi-nightly-builds/</guid>
      <description>&lt;p&gt;So I&amp;rsquo;m a lazy bastard, so far nothing new. But I also want to look at the latest &lt;a href=&#34;http://psi.affinix.com/&#34;&gt;Psi&lt;/a&gt;, ze mozt powerfull Jabber client out there, releases for Mac, and lo and behold &lt;a href=&#34;http://psi.affinix.com/?page=development#nightlies&#34;&gt;they have nightly builds&lt;/a&gt;&amp;hellip;&lt;/p&gt;

&lt;p&gt;This is the script I ended up with to update my Psi every day:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;melo@RoadRunner(~/Desktop/psi-night-build)$ cat update_psi.sh
#!/bin/sh
#
# Updates Psi with latest nightly build
#

today=`date +%Y%m%d`

if [ -d &amp;quot;psi-mac-$today&amp;quot; ] ; then
  echo &amp;quot;You already have build $today, restart your Psi to use it, maybe?&amp;quot;
  exit 1
fi

curl -O http://spike.ulyssis.org/psi/mac/psi-mac-$today.zip

unzip psi-mac-$today.zip
rm psi-mac-$today.zip
rsync -a into_frameworks/ psi-mac-$today/Psi.app/Contents/Frameworks
rm -f psi-latest
ln -s psi-mac-$today psi-latest
growlnotify -n &amp;quot;Psi Nightly build updater&amp;quot; -s -a Psi &#39;Psi is updated!&#39; &amp;lt;&amp;lt;EOF
You Psi was updated with the latest nightly build, $today. Please Quit and restart you Psi.
EOF
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Make sure you &lt;code&gt;chmod 755 update_psi.sh&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Now you just need to restart you Psi every morning after the nice growl notification appears. I keep &lt;code&gt;~Desktop/psi-night-build/psi-latest/Psi.app&lt;/code&gt; on my Dock.&lt;/p&gt;

&lt;p&gt;Couple of notes: on the directory where you run &lt;code&gt;update_psi.sh&lt;/code&gt;, you must have a directory &lt;code&gt;into_frameworks&lt;/code&gt;. Inside you need to put all the Frameworks required to run Psi. Right now, you need to have the &lt;code&gt;libqt-mt.3.dylib&lt;/code&gt; (found on the same directory where you can find Psi nightly builds), and the &lt;a href=&#34;http://growl.info/&#34;&gt;Growl&lt;/a&gt; framework.&lt;/p&gt;

&lt;p&gt;I used the copy of the Growl framework that comes with Ecto. Use &lt;code&gt;locate Growl.framework&lt;/code&gt; to find a copy on your system, and copy it into &lt;code&gt;into_frameworks&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;My &lt;code&gt;into_frameworks&lt;/code&gt; looks like this:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;melo@RoadRunner(~/Desktop/psi-night-build)$ ls -la into_frameworks/
total 18376
drwxrwxr-x  4 melo  melo      136 15 Apr 11:01 .
drwxrwxr-x  9 melo  melo      306 15 Apr 11:29 ..
drwxr-xr-x  7 melo  melo      238  4 Apr 04:17 Growl.framework
-rw-r--r--  1 melo  melo  9404804 16 Aug  2004 libqt-mt.3.dylib
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;The main directory where I keep &lt;code&gt;update_psi.sh&lt;/code&gt; looks like this:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;melo@RoadRunner(~/Desktop/psi-night-build)$ ls -la
total 128
drwxrwxr-x   9 melo  melo    306 15 Apr 11:29 .
drwx------  23 melo  melo    782 15 Apr 11:21 ..
drwxrwxr-x   4 melo  melo    136 15 Apr 11:01 into_frameworks
lrwxrwxr-x   1 melo  melo     16 15 Apr 11:12 psi-latest -&amp;gt; psi-mac-20050415
drwxr-xr-x   5 melo  melo    170 15 Apr 02:25 psi-mac-20050415
-rwxr-xr-x   1 melo  melo    598 15 Apr 11:27 update_psi.sh
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Although the Growl framework is required in latest builds, I cannot seem to get it working. If you know how, xmpp me at melo funnychar simplicidade.org.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Update:&lt;/em&gt; Growl works very well if you use the Remko versions. See his &lt;a href=&#34;http://www.cs.kuleuven.ac.be/~remko/psi/&#34;&gt;Psi page&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Update 2:&lt;/em&gt; small bug in the &lt;code&gt;if [ -d ...&lt;/code&gt; in the script, change &amp;ldquo; to &amp;ldquo;&amp;rdquo;. Thanks go to &lt;a href=&#34;http://pensamentos.profundos.org/&#34;&gt;rebarbado&lt;/a&gt;.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>XMPP, Jabber and Growl: notification systems</title>
      <link>https://www.simplicidade.org/notes/2004/12/02/xmpp-jabber-and-growl-notification-systems/</link>
      <pubDate>Thu, 02 Dec 2004 13:30:44 +0000</pubDate>
      <author>melo@simplicidade.org (Pedro Melo)</author>
      <guid>https://www.simplicidade.org/notes/2004/12/02/xmpp-jabber-and-growl-notification-systems/</guid>
      <description>&lt;p&gt;&lt;em&gt;Updated:&lt;/em&gt; fixed all the links, sorry, I&amp;rsquo;m a markdown beginner. Thanks Ralph.&lt;/p&gt;

&lt;p&gt;&lt;a href=&#34;http://the.taoofmac.com/space/&#34;&gt;Rui&lt;/a&gt; did some work on
&lt;a href=&#34;http://www.growl.info/&#34; title=&#34;Growl homepage&#34;&gt;growl&lt;/a&gt; remote notifications, and then he made a question: &lt;a href=&#34;http://the.taoofmac.com/space/blog/2004-12-01&#34;&gt;why don&amp;rsquo;t
we make this a standard&lt;/a&gt;?
In doing that, he also talks about &lt;a href=&#34;http://www.jabber.org/&#34; title=&#34;Jabber Software Foundation&#34;&gt;Jabber&lt;/a&gt; and the failure of that
project. I don&amp;rsquo;t agree with the last part at all, and I&amp;rsquo;ll try to answer
his question.&lt;/p&gt;

&lt;p&gt;First, let&amp;rsquo;s talk about Growl. I really really like Growl, I think it is
the second best thing that has happened to the Mac this year (the first
being Quicksilver). I like the fact that with it I can have a single app
and a single prefpane that controls all my notifications. I even changed
IM clients (from Proteus to Adium) because I could not find Growl
support in Proteus, and Adium 0.7 had it.&lt;/p&gt;

&lt;p&gt;But Growl has some problems. First, I don&amp;rsquo;t have a history of
notifications. Sometimes I&amp;rsquo;m away from my TiBook, and I lose
notifications. I don&amp;rsquo;t have a place where I can see the last 20 minutes
of notifications.&lt;/p&gt;

&lt;p&gt;Second, when I&amp;rsquo;m offline, I cannot receive notifications, and while the
servers could keep on trying to send them, it wouldn&amp;rsquo;t work very well.
The moment you get online, you&amp;rsquo;re bombarded with notifications, so
you&amp;rsquo;ll probably just skip most of them. If you want to see what I&amp;rsquo;m
saying, download &lt;a href=&#34;http://homepage.mac.com/jeremy_knope/&#34;&gt;Rawr-endezvous&lt;/a&gt;,
connect your Mac to a local network with lots of other Macs,
and fire it up. Expect to be looking at several screens worth of
notifications.&lt;/p&gt;

&lt;p&gt;Third, you can specify a title and a text for each notification, but you
cannot follow it through to the tool/site/server where you can fix the
problem. Growl really needs support for a URL, a clickable one. The lack
of a &amp;ldquo;tell me more&amp;rdquo;-action limits the usefulness.&lt;/p&gt;

&lt;p&gt;Fourth, I have 200+ systems, in several places, behind several types
of firewalls. My own laptop is behind another corporate firewall, and
I don&amp;rsquo;t expect the local firewall admins to open up yet another port
for notifications. Also, I don&amp;rsquo;t think it is reasonable to have
systems on the other side of the planet sending me notifications
directly to my laptop.&lt;/p&gt;

&lt;p&gt;Growl is the last mile of notification systems. It&amp;rsquo;s a personal
notification system, not a network notification system. Does it need to
receive events from the network? Sure! Should we create another protocol
for that? Maybe not.&lt;/p&gt;

&lt;p&gt;A network notification system needs a lot more than displaying the
notifications. It needs aggregation of events, it needs to know that the
user is online or offline, to route the notifications to the most
available person to handle it. And that brings us to IM systems.&lt;/p&gt;

&lt;p&gt;If you use an IM system for transport of notifications, you get a lot of
those things for free. When I say IM system, I don&amp;rsquo;t limit myself to
XMPP/Jabber. You can use SIMPLE if you want. I really don&amp;rsquo;t care. I use
XMPP/Jabber because that&amp;rsquo;s what I know. I&amp;rsquo;ll use XMPP in the rest of
this article because of that. Fell free to s/XMPP/IM system/g.&lt;/p&gt;

&lt;p&gt;With XMPP you get a lot of things out-of-the-box:
  * You get an extensible protocol;
  * You get all the authentication stuff (with TLS support);
  * you get a bi-directional protocol, so you can ask the source of the
    notification &amp;ldquo;Tell me more&amp;rdquo;;
  * you get a global scalable reliable protocol;
  * you get powerful publish/subscribe primitives.&lt;/p&gt;

&lt;p&gt;Let&amp;rsquo;s look at each of these in turn. XMPP is an extensible protocol and
that allows you to define new packets (stanzas in XMPP lingo) to
transport all the information and semantic hints you want.&lt;/p&gt;

&lt;p&gt;You can ask people who know me, I&amp;rsquo;m not a big fan of XML. I think it is
over-hyped and over-used. It seems that, like IBM mainframes in the 60&amp;rsquo;
and Cisco gear in the 90&amp;rsquo;, you won&amp;rsquo;t be fired if you use them. XML is
also lousy for transport of information. Network protocols should be
efficient and XML is not. An XML parser is more complex and heavy than a
XDR or ASN.1 parser, for sure. Also the amount of useless information in
XML is very high. &lt;a href=&#34;http://en.wikipedia.org/wiki/David_A._Huffman&#34; title=&#34;David A. Huffman&#34;&gt;Huffman&lt;/a&gt; must be turning in it&amp;rsquo;s grave.&lt;/p&gt;

&lt;p&gt;I don&amp;rsquo;t see XML as the reason for XMPP extensibility, I really don&amp;rsquo;t,
but XML is a very high-level method of encoding information, and for now
it helps to use it as the base of XMPP. Eventually, you could put a XML
dictionary-based compression scheme between XMPP clients and servers,
and still use the same protocol. Only compressed in transit. Gzip is
also an option, and it&amp;rsquo;s even mentioned in XMPP RFC (this is from
memory, I need to check the negotiation phase).&lt;/p&gt;

&lt;p&gt;Before people start telling me something like &amp;ldquo;you stupid person, my
p4 x ghz machine does not have performance problems with XML&amp;rdquo;, or &amp;ldquo;you
moron, my 2mbit ADSL is mostly empty, so if I need 400 bytes to send a
simple hello, that&amp;rsquo;s not a problem&amp;rdquo;, I have two things for you to
think about:
  * always-on mobile networks &lt;em&gt;will&lt;/em&gt; charge you for bytes transfered, at
    least in the mass-market plans;
  * it&amp;rsquo;s a waste of resources having 20000 clients connected to my
    server and having 20000 XML parsers: machines don&amp;rsquo;t need human-
    readable protocols.&lt;/p&gt;

&lt;p&gt;Back to our list, the second point is TLS support. It&amp;rsquo;s mandatory in
XMPP. It&amp;rsquo;s a standard, it works and it&amp;rsquo;s well understood.&lt;/p&gt;

&lt;p&gt;The third point is bi-directional protocol. Having a bi-directional
protocol allows you to use your notification system to query your
systems. It allows your notifications to be short and to the point,
giving you the possibility to ask for more information, so that you can
correctly evaluate the problem.&lt;/p&gt;

&lt;p&gt;The fourth point, a scalable network, is very important if you have more
than 50 or so servers. You need aggregation points for notifications,
and you need server-to-server communications. You also need reliability,
you need the assurance that if an application sends a notification to
the local notification center, the message wont be lost (insert regular
acts of god disclaimer here). You need store-and-forward semantics, or
end-to-end acknowledge of notification. Maybe a mix of both.&lt;/p&gt;

&lt;p&gt;Finally, you probably work in a team, with a on-duty staff, and with
escalation procedures for notifications. If a disk is 100% full, I don&amp;rsquo;t
care if you&amp;rsquo;re offline, someone must be notified, right? Here we get
into pubsub systems, probably the best way to deal with the problem of
one to many communications right now. You can subscribe to applications,
servers, clusters, any node or object in your infrastructure. It&amp;rsquo;s your
decision, it&amp;rsquo;s under your control.&lt;/p&gt;

&lt;p&gt;Pubsub is available in XMPP in two forms: the lazy one, and the standard
one. The lazy one is multi-user chat rooms. You can use a multi-user
chat room as a basic quick and dirty pubsub. Just create a chat room for
each topic. Whoever wants to be notified, just joins the chat room. It&amp;rsquo;s
a one-to-many system, and it works. Imagine this: all your mail servers
connected to the same chat room, and having one of them say &amp;ldquo;Hey people,
this dude at 127.0.0.1 is spamming me hard. block the sucker&amp;rdquo;, and
having all the other machines in the cluster do it. You can even go into
the chat room to monitor those events, or even to say &amp;ldquo;guys, unblock
127.0.0.1, please&amp;rdquo;. Yes, notifications can be sent between applications.&lt;/p&gt;

&lt;p&gt;The standard for pubsub is &lt;a href=&#34;http://www.jabber.org/jeps/jep-0060.html&#34; title=&#34;Publish-Subscribe&#34;&gt;JEP-0060&lt;/a&gt;, and you have at least two
implementations today: ralph&amp;rsquo;s &lt;a href=&#34;http://idavoll.jabberstudio.org/&#34; title=&#34;Idavoll&#34;&gt;Idavoll&lt;/a&gt; and &lt;a href=&#34;http://ejabberd.jabberstudio.org/&#34; title=&#34;Ejabberd&#34;&gt;ejabberd&lt;/a&gt; (which
also seems a very nice, mostly-XMPP compliant server. If only virtual
hosts where supported&amp;hellip;)&lt;/p&gt;

&lt;p&gt;So with all of this, using an IM protocol for transport of notifications
has a lot going for it. XMPP is by no means perfect. I&amp;rsquo;m still not sure
if XMPP can really assure delivery of messages between servers. I don&amp;rsquo;t
think you have the same store-and-forward with acknowledges you have in
SMTP. And I really think that a low-bandwidth version of the Jabber
network protocol is needed. But it&amp;rsquo;s a start.&lt;/p&gt;

&lt;p&gt;So answering Rui&amp;rsquo;s question: why not make Growl a standard? Well, by all
means, do it. But as a last mile solution for the notification problem,
not for the network part of the problem. The network part is complex and
we already have protocols that do it very well, we just need to glue
them together.&lt;/p&gt;

&lt;p&gt;How do we do that? Well, I have an idea, but I&amp;rsquo;ll need to talk about
something else first, to clarify something about XMPP/Jabber that Rui
also mentions (yes, the &amp;ldquo;jabber is dead part&amp;rdquo;&amp;hellip;).&lt;/p&gt;

&lt;p&gt;Saying that XMPP is an IM protocol, is like saying that SMTP is for
sending text messages. Yes, you can do it, and it&amp;rsquo;s probably the most
common use. But XMPP is so much more if you look into it. It has a
powerful resource discovery protocol (See &lt;a href=&#34;http://www.jabber.org/jeps/jep-0030.html&#34; title=&#34;Service Discovery&#34;&gt;JEP-0030&lt;/a&gt;) and at least
one decent client implementation, &lt;a href=&#34;http://psi.affinix.com/&#34; title=&#34;Psi&#34;&gt;Psi&lt;/a&gt;, very decent publish and
subscribe capabilities, and it also does IM :).&lt;/p&gt;

&lt;p&gt;Regarding the lack of clients, my answer is &amp;ldquo;it depends&amp;rdquo;. You can have
great clients today if you want the IM part only. Adium works very well,
Fire also works OK. If you really need a XMPP client (and that&amp;rsquo;s an
entirely different ball game), then no, there aren&amp;rsquo;t any good clients
out there. Again, &lt;a href=&#34;http://psi.affinix.com/&#34; title=&#34;Psi&#34;&gt;Psi&lt;/a&gt; is probably the best one.&lt;/p&gt;

&lt;p&gt;The way I see it, XMPP is much more powerful than traditional IM
systems, and most client implementations stop after having the IM part
done. The rest of the XMPP doesn&amp;rsquo;t seem to have reached critical mass.
In XMPP, you can use pubsub to publish the current music you are
listening to, and I can subscribe to that topic to know that (and then
probably use Growl to tell me whenever that changes). But there is a lot
of framework missing that needs to be in place to make it work: how does
my XMPP client talk to my music player? In a Apple environment this is a
little bit easier, due to the iTunes domination, but these are the
problems that face XMPP extensions adoption for now.&lt;/p&gt;

&lt;p&gt;Now back to Rui&amp;rsquo;s answer: how do we do it? Well, you could build a XMPP
client not for IM, but for notifications only. Your own personal
notification avatar. Julian &lt;a href=&#34;http://missig.org/julian/blog/2004/11/27/jabber-vision/&#34; title=&#34;Jabber vision&#34;&gt;mentioned&lt;/a&gt; this recently. You can even
built it into Growl itself.&lt;/p&gt;

&lt;p&gt;This would allow you to use Growl to subscribe to topics. You still need
to solve Growl shortcomings (at least the lack of URL support), but the
rest is pretty much already in place.&lt;/p&gt;

&lt;p&gt;My own jab at the problem, &lt;a href=&#34;http://www.simplicidade.org/pocs/ambrosio.html&#34; title=&#34;Ambrosio&#34;&gt;Ambrosio&lt;/a&gt;, does some of it, but I&amp;rsquo;m
still finishing it&amp;rsquo;s infrastructure to be able to do what I&amp;rsquo;ve been
talking about. We&amp;rsquo;ll see what happens in the next weeks.&lt;/p&gt;
</description>
    </item>
    
  </channel>
</rss>