Open Source

I’m free, and things *work*

Woo! Yesterday marked my last day of finals. Though now I’m finding that I miss my classes. Ah well, plenty to do this summer.

The computer situation has been fixed. The motherboard, it seems, had some “issues.” On top of that, two drives were going bad. The reason for all the lockups and kernel panics were probably a result of bad sectors where the virtual memory was. So now I have a new, better motherboard and a replacement harddrive for the two that were failing.

Oh, but now that that’s all fixed up, the mouse decided it’s time to die. No real surprise there.

I wonder what I’m going to do with 8 USB ports and 3 firewire ports…

Computer Issues and Filesystem Corruption

It’s never a good thing when your daily alarm on your computer (which is basically XMMS here) doesn’t go off in the morning. Seeing the keyboard LEDs blinking and a frozen screen saver aren’t much better. Once again, this new box kernel panicked in the middle of the night.

I’m not sure whether to blame the hardware, or the 2.4.26 kernel. The RAM checked out fine, and nearly everything works otherwise, with a few exceptions. My IntelliMouse Explorer keeps losing the ability to function, and I have to unplug it from the USB port and plug it back in every 20 minutes or so. I replaced mice, and it seems to work now. However, now the IntelliMouse is working fine in the iMac. I can’t tell if the mouse is going dead or if it’s a kernel issue.

I couldn’t get 2.4.26 working on the server box (which used to be my main desktop). It would lose all network connectivity, no matter what I did. Oddly, the same configuration works on this box, using the same network card. I suspect 2.4.26 is just a buggy kernel, but I haven’t seen a whole lot from other people to indicate that.

So anyhow, this morning, I rebooted and it came up with a whole bunch of filesystem errors. All kinds of stuff. Several of the errors said, "attempt to read block from filesystem resulted in short read." A quick google search indicates that this could be the disk going bad, so I’m sure I’m in for a lot of fun these next few days. Fortunately, the only data I lost were a bunch of KDE .desktop files and some .m4 files that apparently weren’t even lost. No clue what happened there. *sigh*

Some days, I really miss using my Commodore 64.

Projects picking up speed

I’ve been making some rather good progress with both Galago and the Gaim status rewrite as of late. Galago is becoming a lot more stable, and the structure is being more fine-tuned. Interest in the project has picked up as well. I have a guy working on some patches for Galago, and possibly working on GnomeMeeting integration. The Adium, Gnumail (so I’m told), and Proteus projects are interested in using it, so we’ll be getting a MacOS X port soon.

I’m in the process now of integrating Galago into Evolution. Very little work has been done on that yet, as I started tonight, but the results so far please me.

The Gaim status rewrite is coming together, and is forcing me to remove a lot of the old cruft still in Gaim. I don’t plan to finish this before 0.80, but we’ll see.

I’ve been spending a bit too much time on these projects lately, so I decided to learn to draw. I’m rather happy with the first drawing (shaded) I attempted, although I realize it has a lot wrong with it. I can only improve, and I’m striving to do as well as my “Harem” girls (which is what my friends are calling themselves lately).

Speaking of which, at some point soon, I’m heading over to one of their houses so they can use me as a model while they draw. That should be.. interesting.

Finally, a robot slave of my own

The property notification stuff in Galago now works (more or less :). The test program’s status icons update instantly when a buddy in Gaim changes status. Of course, that’s not Gaim-specific. I have small test utilities for manipulating statuses that also work quite nicely.

So, now the next step (aside from cleaning up some code and adding a few more features) is Evolution support! Woo.

On a related note, I just created #galago on Freenode, and have a few people hanging out there now. Hopefully I’ll get a couple contributors. But for now, bed.

Galago Status Update

It’s been awhile since I posted anything regarding Galago, so I’m about due for a status update.

SourceForge handed over the galago project to me, so I’ll be getting a site up in the next couple of days, as well as listservs.

Much of the daemon and libgalago library have been fleshed out. I still have some of the querying and signal stuff to do, and automatic merging of people, but it’s getting there fast.

I recently added a couple of new widgets to libgalago-gtk. One displays a list of services that Galago currently knows about, and the other displays a list of accounts that Galago knows about. An account list can be linked to the service list with one API call, and the account list will automatically be updated when the service is changed.

Galago presence test screenshot
Galago presence test and widgets

I’m in the process of writing the signal/property watch code now. When that’s done, programs will receive new presences and such as soon as they’re known, instead of querying. I haven’t had this functionality since before the rewrite, so it should be neat to see. As soon as that’s done, work on Evolution integration begins.

Nearing presence goodness

Although I took most of spring break off to attempt to relax (something that didn’t end up happening much at all), I’ve managed to make some really good progress with Galago. The library’s API is for the most part stable, and my work as of late has been with the daemon. Most of the functionality is there as well, though some stability issues need solving. I expect to have those issues fixed within a week. Then work begins on Evolution integration, as well as other applications.

The galago project name on SourceForge has been in use for some time, but the project is dead. I filed an abandoned project takeover request earlier this month, and today (well, yesterday now) was the deadline for the maintainers to respond, so we’ll see how that goes.

If all goes well this month with the Galago work, I should have a release out soon. I’ll get a page up before that, with example code, the details behind Galago, a FAQ, etc. Hopefully it’ll clear up some confusion that a few people still have.

Less Work is More Work

I began a rewrite of the Galago framework a few days ago. The original design was good for my initial testing, but I didn’t plan to stick with it. One of the neat things in this rewrite is that unless a feed wants to, it doesn’t have to manually push any presence info. Instead, the code (either via a plugin or the main code of the program) just keeps a couple structs (GalagoAccount, GalagoPerson, GalagoPresence, etc) updated as it does things, and the events automatically propagate.

This has required a number of new considerations when developing this, but I’ve worked out most of them. From an API standpoint, developing an application to work with Galago is really easy now, even easier than before.

The new framework allows for basic identity information, so you can say, “Give me all presence information for Christian Hammond.” Each feed will have a GalagoPerson per each user, which may or may not have a name or other info associated with it. When the daemon receives the presence info, it will get the person info along with that. The people and accounts are stored in a graph in order to determine if accounts are shared anywhere. If so, it can merge the person daemon-side and feed it to any watches or queries.

So, if Gaim sends presence for MyUsername, and Evolution sends a GalagoPerson with some GalagoAccounts for Christian Hammond, and one of the accounts is MyUsername, the daemon will associate them and pass it along. It should work well, barring any unforseen problems.

On a side note, Movable Type is being very strange and only listing one blog entry on the index page. I’m hoping this post bumps it and makes it work again, as it was working just a few days ago. Oh well.

Gaim Goodies

I’ve finally been getting back into Gaim development a bit lately, outside of the status rewrite. The multi-field request API, which is used for abstracting request dialogs with various forms of input for a Gaim UI to generate dialogs from, got several improvements.

Some fields are marked now as required fields. If set, the UI can grey out the OK button when those fields aren’t filled out. This only applies to text entry fields at the moment, but support can easily be added for other types (if it makes sense for them).

An account field type was also added, which was the final piece allowing us to replace the New Instant Message and Get User Info dialogs with the request API. A lot of GTK+ code was removed from this change, and it improved consistency and HIG compliance.

And last but not least in this department, type hints have been added to fields, which the UI can use for additional functionality. The first use in Gaim is that if a text field has a type hint of “screenname,” the text field will get support for auto-completion of screen names.

And with that fun out of the way, work continues on the status rewrite. Oh so fun…

Emotional Presence

I’ve been toying around with an idea for some time now for a form of emotional presence. The idea being that not only can you tell somebody’s active state, but how they’re feeling. This would conceptually be integrated into instant messengers (although no protocol that I know of supports such a thing currently), and of course Galago would supply the info as well.

So say you decide you want to talk to somebody on your buddy list. Before sending him/her a message, you can check on the buddy’s emotional presence. Then you can make an estimate as to whether or not the person is in a good mood, bad mood, ready to kill someone, contemplating, horny, etc.

The best way to convey such information is by using an eye. The eye is our best way of judging a person’s response, so why not? Smilies could work, but that’s just not good enough. Now, there are a couple of ways to do this. The easiest way is to let the user just set his/her emotional state in the instant messenger like they would an away message. This, like away messages, would just come naturally to some people over time, but others wouldn’t think about it.

Another way of doing it is to have a camera and some face recognition software going that can scan the guy, take a little snapshot, and display it. This is obviously not going to work for everybody, and is a bit more work. This is all just concept stuff right now, though, so implementation is something we can put off just a bit.

I’m sure many of us know people who never use any form of smiley/emoticon during a conversation. They often seem almost machine-like, or perhaps not in a good mood, even if they’re feeling on top of the world. Emotional presence during a conversation could help to fix this. Even if the person showed no emotion in his/her text, the eyes would paint a different picture.

Of course, as someone said, not everyone would want to see a big eyeball on their desktop. Depending on the implementation, this could be changed to text, or a smiley, or hidden altogether.

Oh yeah, and DanielS just put the new Planet Freedesktop.org site up with my new layout. Woo!

Moving On

Life took a bit of a turn for the worse recently, relationship-wise. My now ex-girlfriend, whom I cared deeply for, and I broke up, and it ended pretty badly. So, it’s time to move on, find someone who perhaps is more compatible, and get some code written again.

Gaim’s status rewrite is now moving along well, aside from the past few days, when I’ve just been dealing with the aforementioned issues. I still don’t have a definite ETA for completion, but the core code is now mostly there. It likely won’t be able to do some of the really complex status combinations people wanted, but that can be done through a second layer (as it should). Anything more complex than what it currently is would require a really complex API, and none of us wants that.

Galago has been moved to SVN over on freedesktop.org, and I’ll likely get a page up soonish, after tests and other responsibilities. After I figure out a couple of design issues, support for presence feed capabilities will go in, and the work on Evolution’s Galago support will be nearly finished.

Sometime this week, I plan on finishing up a bug fix for Gaim for Qtopia and releasing 0.5. It’s long overdue, and people are waiting for some of the fixes to go in.

Just got to get my motivation back after the break-up. Metroid Prime is also sucking up my time, but that’s probably not a bad thing right now.

Scroll to Top