skip main content

Posts Tagged ‘xmpp’

XMPPFramework + PubSub = RadioAunty + LiveText

posted by Duncan at 10:29 pm on September 14th, 2010

[UPDATE] This is now live, oh and I added the scrobbling support.

I’ve been doing a lot of XMPP lately, so I figured I should share some of this stuff with you all. This all ends up with me telling you that I have added LiveText support to my RadioAunty application (Hah! not even the proper iPlayer Radio console has that).

LiveText is the content that appears on your DAB radio, with information about who’s on, what’s currently playing, and what’s coming up in the show.

livetext

So, XMPP. To start with, two books which I can recommend are:

One is great for understanding what the hell XMPP is, and the other for how you can use it on the web. In traditional style, I read both these cover to cover many times, until I finally got it, and felt I could build something interesting. Here’s a brief overview:

XMPP is the Extensible Messaging and Presence Protocol, a set of open technologies for instant messaging, presence, multi-party chat, voice and video calls, collaboration, lightweight middleware, content syndication, and generalized routing of XML data.

Over the course of the last few months I’ve been building various internal XMPP based apps, which have been primarily web based. This has come about possibly due to this years buzz word seemingly being Real-Time, but possibly more because –in the case of XMPP– modern browsers have implemented Cross-Origin Resource Sharing, which means cross-origin requests can be done with pure JavaScript. Using a fantasic library like Strophe.js coupled with an XMPP server like Ejabberd, you can easily create fantastic broadcast/subscription web applications.

One of the side effects of using this technology so much, has meant that I’ve grasped enough to make a contributions to open source XMPP projects. One of which being the fantastic XMPPFramework. As you’ll guess by the name, this is an XMPP Framework in Objective-C for Mac and iPhone. My colleague Alan wrote last November that the BBC was starting to make it’s LiveText service available over XMPP PubSub. I really wanted to integrate this with RadioAunty, but the XMPPFramework did not support PubSub or SASL ANONYMOUS. Due to my new found knowledge, I was able to help, and submitted a couple of patches adding this support to this library.

So, I will push out the new version of RadioAunty in the next couple of days. There is a limitation at the moment that the LiveText won’t work if you need to go through a SOCKS proxy. I’m hoping I can fix this, but at the moment I’m not quite sure where to start. The radio will continue to work fine.

Oh, and yes, I realise that the elusive Last.fm scrobble support is possible now. One step at a time.

Twammer, sending stuff from Twitter to Yammer

posted by Duncan at 8:12 pm on September 28th, 2008

I use Twitter. I don’t really post much, but I do like to dip in and hear what my friends are doing. Yammer is like a private Twitter for companies. We have just had a network set up for the BBC, which is interesting. Again, I like the idea of posting what I am doing and dipping into what other people are doing around the organisation.

So you can see my problem, I’m doubling up here a bit. When I post something to Twitter, and I think it would be relevant for work too, I don’t want to have to open a different interface and post it again. Now there are services like ping.fm which will sync every site you belong to, but I what to decide what gets posted at work and what doesn’t in this instance. The simple answer is to build something that looks at my Twitter feed and if it sees anything new, then posts it off to Yammer. My friend Mr Humfrey does that very thing. I wanted more than this though, I wanted to filter, plus I wanted to make it easy to use, so I have written this very simple app that does the job:

  1. Read my Twitter feed every n minutes for changes
  2. Keep messages with my chosen keyword
  3. Remove keyword, and send off to Yammer

Twammer usage:

# Display help
./twammer -h
 
# check Twitter messages with last 5 mins (default)
# filter by #bbc but don't send anything to Yammer
./twammer -t 47983 -u user -p pass -f bbc -q
 
# check Twitter messages within last 10 mins
# send anything to Yammer. Show output
./twammer -t 47983 -u user -p pass -d 10 -v

This is designed to be run as a cron job. You must also make sure you run it at the same interval as the –delay in the app. Here’s what my crontab looks like:

0,5,10,15,20,25,30,35,40,45,50,55 * * * * /home/duncan/bin/twammer -t 47983 -u user -p pass -f bbc > /dev/null

[UPDATE] Changed to using the correct API instead of scraping the RSS


back to the top