Ejabberd global roster
June 30, 2011 § 2 Comments
Recently we needed a “global roster” for our ejabberd server. By this I mean that we wanted to be able to see all users currently online and allow other users to initiate a chat with them. This isn’t as easy as it sounds— the way XMPP normally deals with who’s online (i.e., who has announced their presence) is through rosters. If you’re not familiar with Jabber, a roster is simply the contact list in a chat program.
You might quite sensibly think “why not make a user that is friends with everyone?” That way every time a user comes online the special user will be notified and will have a list of all online users. Whilst this idea works, you will quickly discover that XMPP doesn’t deal with large rosters very well and if your user base is large this method will seriously slow down your chat server.
Whats the solution then?
I don’t like the Ruby 1.9 hash syntax
June 20, 2011 § 67 Comments
There, I said it, I don’t like it. And I don’t know why you do either.
I assume you like it anyway, everyone else I talk to seems to. My heart sank over and over again whilst I was at the recent and saw respected rubyist after respected rubyist using the new Ruby 1.9 hash syntax in their presentations.
I just don’t get it.
But I’m not one to just moan. I plan to justify my feelings. Then maybe you can tell me why you do like it?
« Read the rest of this entry »
Pragmatic Semantics
June 7, 2011 § Leave a comment
HTML5, Microformats, ARIA roles, CSS3 and a whole host of other technologies are making our lives as front end developers easier and better.
We usually have to rely on the user’s browser supporting these new technologies. That is fine for a site with fairly technical readers, but we also work on sites for a much broader (and potentially less tech-savvy) audience.
So what can we use now to make our markup more semantic and how can we ensure backwards compatibility for our clients? Let’s run through a list (because the internet loves a list). « Read the rest of this entry »