May, 2006
PyAIMt and PyICQt security releases
I have just released minor code change updates for PyICQt and PyAIMt. These updates fix a security hole in the MySQL XDB backend. I highly recommend you update immediately if you are using the MySQL XDB backend. If you are not, then you can ignore these releases.
I’ve been trying to make it a personal policy not to post every release on my blog unless I simply have some blog type observations to make about the releases. However, this one is a security release set and I want to get the word out as much as I can.
The Migration
I’ve been playing with Loudmouth and JWGC. So far so good. Quite easy to use and intuitive. (well assuming I’m doing things right) However, at the moment I am stuck at something more base than Loudmouth. I’m stuck with glib. I’m trying to replace the mux stuff that I had entirely with the glib based event handlers. Should be trivial. I’m missing some aspect of it though. I can’t seem to find any good documentation. I’ve got a book on the way about gnome programming, but that really doesn’t help me “now”, ya know? I can see the glib api, but that about covers it. Guess I’ll go probing around other peoples’ code.
If anyone has any good online docs for glib that they’re aware of, -especially- the main event loop stuff, please post me a link.
On a side note, scriptrepo is coming along. Still a fair amount to go.
It’s interesting to be messing with c code again though. Been a while.
Thinking Based Coding
… In case you are wondering, that title is a take off of a bizarre workshop name that occured where I work. “Thinking Based Learning”. I mean I understand what they were aiming for, but man does that sound amusing when you first see it.
Anyway, I find that a lot of my coding time is spent running through scenarios and ‘writing code, editing, erasing, etc’ in my head instead of actually typing the whole time. I’d say a good portion of my time is spent doing this. Sometimes it’s dismaying to look down after working on something for an entire day and only seeing a paltry number of actual changes. No matter.
ScriptRepo is coming along. It’s full name is the “Jabber Script Repository”. I’m not sure whether I want to abbreviate that to JSR when I don’t want to type it out, or stick with ScriptRepo as the abbreviation. I kinda like ScriptRepo and JSR is kinda taken by someone’s name. ;D
I’ve got the entire login/registration/etc mechanism worked out and since I’ve been working on the real meat of it… occasionally getting caught in the trap of “well, this looks prettier this way”.
That’s ok, it will come. Hoping it serves it’s purpose. On an interesting note, a couple of things I am doing with ScriptRepo I may backport over to BlatherCore. Added a couple of concepts that I liked.
Been tweaking the transports just a tad as some bug reports roll in. Nothing major yet. Couple of Google Talk tweaks mainly. Pondering around making use of a branch in SVN for the first time (for me at least) and playing with Loudmouth as a backend. Despite my not reallllly wanting to add an extra dependency level of glib, I’ve been looking over glib and it’s got some neat features that I could really use…. so I may bite the bullet and work with it. It’s apparantly very portable. I think it might make some of my socket operations more stable.
Enough of my babble for now…
Scriptrepo, cont.
Ah plans don’t always come out as they seem, do they? I think I’m going to vow to stop giving any sort of time frame on anything I do. Life often defeats timeframes. In a lot of cases, the conflicting life = work.
No matter, just I need to learn to stop saying “I’ll probably have this out by Monday”.
That said, the new ScriptRepo is not done. I have, however, put up a link to the old script repo stuff at the new site (http://scriptrepo.blathersource.org) for folk to get access to in the mean time. Hopefully I’ll get some time to work on it here soon. I’m quite excited about it. =)
So I’ve gotten a lot of questions as to what ScriptRepo is. Much to my surprise, not many knew of it. What it is is a repository of various scripts that folk have written that relate to Jabber. This includes init scripts for various servers, monitoring scripts, migration scripts from one jabber server to another, all kinds of things. Often folk write wonderfully helpful shell scripts and such and wouldn’t really justify creating an entire project somewhere to house it, so this fills that need.
The new site will basically allow folk to upload their own scripts and update them on the fly as they see fit. I’m thinking about incorporating some sort of tutorials and such ‘amongst the scripts’. For example, there might not be a script to migrate from, say, jabberd2 to ejabberd. However, there might be a script to migrate from jabberd2 to jabberd1, and then another to migrate from jabberd1 to ejabberd. So I wanted to incorporate some way to show stuff like that amongst the scripts so you only really have one place to look.
ScriptRepo coming along
Well, this is taking longer than I expected. I’ve got old stuff copied over and have gotten a good deal of the new interface worked out. Have a batch of other things to add and need to import the old scripts over. Then I will try to contact the original authors and “own them” their own scripts. Anyway, I’m ceasing work on the new site today and will pick it up tomorrow.
Come hell or high water . . .
I will have scriptrepo moved to blathersource today. The new location will be http://scriptrepo.blathersource.org/. It’s dead on jabberstudio, and you know what, I don’t really care. It just means I’m moving the site quicker than I expected. I’ll post something on the various lists once it’s moved and ready.
Idle time (again)
How bizarre to effectively be having a conversation with Ralphm via blog postings. BlogIM. =) Anyway. Ralph, I didn’t see a way to reply directly to your post, so here goes.
I must admit the use of things like relaxing, and partying, and such is what offput me from thinking that user activity was what I was looking for in JEP-0108. If I can indeed simply specify something like this:
<iq type='set'
from='juliet@capulet.com/balcony'
to='pubsub.shakespeare.lit'
id='activity1'>
<pubsub xmlns='http://jabber.org/protocol/pubsub'>
<publish node='generic/juliet-activity'>
<item id='current'>
<activity xmlns='http://jabber.org/protocol/activity'>
<inactive/>
</activity>
<headers xmlns='http://jabber.org/protocol/shim'>
<header name='Start'>2005-03-17T19:00:00Z</header>
</headers>
</item>
</publish>
</pubsub>
</iq>
Then yes, that seems like it would do the trick. I wasn’t entire sure if
Well Peter M…
I didn’t know you all that well, and I only spoke to you a few times, but you always seemed to be a good guy and did wonderful things for the Jabber world. I am saddened that I missed the opportunity to speak with you more and for the great void that is left in the Jabber world and with your family. Wherever you are now, I am certain you will do great things and keep a watch over your family. I’ll be keeping an eye out for JEP-0200: XMPP from the Afterlife. =) We miss you man!!!
Idle Time
On a mild aside before I get into this, I added a little project tracker to my blog. Pretty nice. Obviously I’m always working on JWGC (to a lesser extent lately), PyAIM, and PyICQ, but I often have little side project spinoffs or “major” things I want to do with the transports or JWGC. I dunno, they seem to fit well into a little mini project tracker. =)
Anyway, so people keep asking me to implement idle status in a better way. Currently I am aware of only a couple of methods of doing this:
1) jabber:iq:last, requires polling this attribute regularly if you want to keep up with idle time, eww
2) adding the idle time to a presence status string, useful if you are reading said status field, not useful otherwose
3) simply setting the status to away, and extended away, as the person gets more and more idle… many folk don’t like this way of handling idle. I don’t either. I think idle is ‘it’s own thing’
So my proposal is this… PEP seems to be the way and the light nowadays. I believe idle status fits well into the pubsub model. If you want to know the person’s idle status, you subscribe to it, and you get update as the client itself ‘sends’ updates. More importantly, it doesn’t have to be updated much. If your client decides that you are idle, it sets your PEP idle status to the timestamp when you started being idle. At that point, it doesn’t have to be updated until you come back. Pretty efficient if you ask me. Anyway, I believe this is a good way to go and on top of that, it would allow idle and away and such to be independent of each other. You could easily see Away but only idle for 5 minutes. Or away but idle for 3 days. You get the idea. Clients could easily handle this and set a cute little idle icon or something. So I’m aiming to write up a JEP for this and submit it.