Wouter Bolsterlee (uws) just pointed me to a blog entry of his on how to test D-Bus and HAL when using JHBuild. Thanks Wouter for sharing this wonderful document with all. Everyone should be running to their jhbuild shells right about now and filing bug reports on D-Bus and HAL ![]()
August 2005
Tue 30 Aug 2005
Sun 28 Aug 2005
I decided to try running Cedega again. I have yet to ever get it to successfully run a windows game but having payed them for quite a long time I thought I would give it a try again. I think my main problem is having an ATI card when their main focus is Nvidia but then again I never thought things would be perfect but I had always hoped to be able to use it for at least Counter Strike which I got addicted to in college. So when they said they got it working with Counter Strike: Source I had to try. No dice. The Half-Life 2 demo doesn’t work so I am not enthusiastic about CS:S, which is based off the HL-2 engine, working.
I did however dig up my old Casper game. It was my first commercial programming project and I still get nostalgia for it once in awhile. While it was completely unplayable I did manage to get past the first few screens before graphics corruption made me kill the process. Perhaps I can find an NVidia board lying around and try it again. Here are some screen shots:

Opening screen - you can already seen the corruption. I worked for the since defunct Morning Star Multimedia. The rest of the names are companies we licensed Casper or code off of.

That blob in front of the fountain is Casper. It seems that all the animations show up like this. The graphics were amazing for the time and hardware we had. It was released in 1997. Each scene took a day to render and then we had to reduce the colors to fit into a 256 color palette. Making cell animation look good in 256 colors with lighting and shadows was a tough task. I wish I could show the insides of the the Manor. The lighting is amazing there, but alas I can’t get that far.

This is the intro movie. There is casper waiting for you on the doorsteps. The movie uses the smacker codex and displays well through Cedega. The biggest problem is after that scene the last frame of the movie doesn’t go away and the game becomes unplayable. Such a shame.

Ah my one credit. I was supposed to get Lead programmer since I did everything from the code design, to implementation with a few other programmer chipping in here and there. They were going to give me the grand title of “Other Programmers” until our audio/video man went to bat for me - thanks Chris. One thing is for sure, the guy listed on top of me is the least deservings of that title. I only ended up doing what I did because no code was being produced and I didn’t want my first project to never see the light of day.
Sun 28 Aug 2005
Slashdot recently had an article on The Gimp signing up for evaluation at OpenUsability.org.
I have to be skeptical because Diana Fong, one of Red Hat’s Visual Designers filed a couple of usability bugs against The Gimp some months ago. The response she got in a private e-mail was less than courteous, basically belittling Diana and informing her to stop filing bugs. When I say belittling, I mean it was downright insulting and if Diana gives me the permission to post it I will. I don’t know if the person who sent the e-mail speaks for Gimp as a whole though they did come off that way.
If The Gimp as a project is serious about usability then I commend them. It is a complicated project with a long history. To step back and say let us focus on usability is a good step for any project. It doesn’t mean they have to take every usability suggestion and implement it but it also doesn’t mean it is right to be derogatory to someone who took time out of their day to file a bug. Hopefully they won’t be so brash with the folks over at OpenUsability.
[read this post in: ar de es fr it ja ko pt ru zh-CN ]Fri 26 Aug 2005
Christian, Mike and I have been having productive discussions on changes I have felt were needed in the notification protocol and library. To that effect I have been working on revamping both and I am happy to say I have got the library compiling and sending messages over the bus. It is not ready to be checked in yet but that should come relatively soon.
The major changes were simplifying the protocol so it fit more into the mold the newer D-Bus protocol and better designing the input interactions. Desktop Notifications were started way back when D-Bus was still passing nul’s over the bus and didn’t have a recursive type system. On the library side I made it more gtk centric - using gobject, being able to be attached to widgets for x, y location and also utilizing the glib D-Bus bindings for better readability in the code. Actions will also attach to callbacks and such once I get to that part.
Sorry, no pretty screenshots. That is next week when I move on to revamping the server. Once I can get the server showing notifications and I can test thing more thoroughly I will be asking for permission to branch the old stuff and check this code in. I was hoping to do this all sooner but D-Bus releases and debugging along with other stuff kept popping up.
Protocol Changes:
org.freedsektop.Notifications.Notify has a much more terse signature:
* s, app name
* i, notification id #
* s, icon name(the name of a system icon or URI)
* s, summary
* s, message
* as, actions (this will be an action id/action label pair. we could have used an aas signature but why complicate things)
* a{sv}, dictionary of hints
* i, timeout (-1 = use server default, 0 = never, > 0 = time in milliseconds)
There is also an int32 returned as the message id
Library Changes
Using the library looks something like this:
notify = notify_notification_new (summary, body, icon_str, NULL);
notify_notification_set_category (notify, type);
notify_notification_set_urgency (notify, urgency);
notify_notification_set_timeout (notify, expire_timeout);
notify_notification_set_hint_string ("author", "J5");
notify_notification_send (notify, error);
For all the sets there are sane defaults so you don’t even have to set urgency or timeout if the defaults work for you. Also there will be an easy way to update the contents so all you have to do is update the contents and call send again to get the notification to update. Also as I said before sending in a widget instead of NULL to the constructor will have the library automagicly extract the x, y attributes and add them to the hints when you send your notification. A small but nice little convenience.
When the library will really kick into high gear is when I get to implementing actions. The library will take care of setting up filter functions and what ever else to handle the D-Bus messages which will be routed directly to the owner of the notification instead of broadcast as a signal. All a programmer will have to do is integrate D-Bus with their mainloop and then use this method to setup the action and callback:
gboolean notify_notification_add_action (NotifyNotification *notification,
const char *action,
const char *label,
NotifyActionCallback callback);
The callback will passed in the notification and the action. The ability to attach userdata to the notification gives even more flexibility.
[read this post in: ar de es fr it ja ko pt ru zh-CN ]Fri 26 Aug 2005
Trent your frustrations with D-Bus comes not from any mistakes D-Bus has made in its design choices but in the fact that you are using it ways no one has before. Obviously the API is accommodating since a couple of e-mails revealed there is already ways to get private connections, it is just that most applications are happy with the connection sharing method so that is where the docs and code point. As for getting the address of the system bus patches are welcome.
I think part of the problem is you are trying to force a client/server API into a shared library mold. Having both the core and client libs be drop in replacements might sound good but it also might prove limiting. Either way if that is how you want to use the library it is up to you. Avahi looks like a cool project and the D-Bus devs are open to making your life easier if we can. We can also always use a helping hand so if something is not quite right, again, patches are always welcome.
[read this post in: ar de es fr it ja ko pt ru zh-CN ]Wed 24 Aug 2005
Aggressive Inline relegated to a Demo Sport at the ESPN X Games
Posted by J5 under Politics , Recreation , Sports , SkatingNo Comments
This year Aggressive Inline has been demoted to a “demo” sport. That means no competitions or awards, just a show. It is kinda funny when a genre of sports - they call it Action Sports now - which up until recently was called counter-culture, “alternative” and unpopular would turn its back on a sport which it is now calling unpopular. Inline skating as a whole sport is actually one of the fastest growing sports with 17 million people who participate. While the aggressive segment is much smaller percent of that cutting it from the market seems to ignore the fact that those who do recreational blading my also be interested in watching the rougher side of the sport and even participating at some point.
Yes the US market is in a lull but the international market has been picking up in recent years. No offense to skateboarders, but they didn’t really explode until Tony Hawk entered the market and his namesake game came out for the PlayStation. I have to pay some respect there because as much as people talk about sellout I think it is what made Action sports widely accepted. I have also had kids come up to me and ask me if I could do a triple nolie heel flip - and get disappointed when I pointed out I’m not on a skateboard and on characters in a video game could do that. What it seems like now is that they gained this power to say what should and should not stay - both through proxy which comes from their money making abilities and directly from becoming decision makers for Action Sports as a whole.
What always comes up and shows their true bias is that they feel that in-line skating is uncool and too easy to learn, not that it doesn’t draw crowds or make money. Market share is just a scapegoat. With the first triple flip being thrown on vert today it is only getting harder and pushing the limits of what can be done on skates. It is amazing to see this stuff live and hopefully the industry will see that there is a market. Like skateboarding of the 80’s aggressive inline is a counter-culture underground sport. We will survive and push our limits no matter what the mainstream sports culture thinks. It is just a shame that we are being forced out by the same entities that felt that they weren’t getting the respect due to them years ago.
[read this post in: ar de es fr it ja ko pt ru zh-CN ]Wed 24 Aug 2005
Wrote up the regression testing framework for the D-Bus python bindings. It is quite easy to add tests now and I have a few basic ones up. All one has to do is edit the test/python/test-service.py and test/python/test-client.py files to add a D-Bus transaction. If you don’t get back what you expected from the server raise an exception in test-client.py and the test will fail.
These tests will be run every time someone does a make check, so, if you have a complicated D-Bus Python application and don’t want me to break it I would suggest sending some patches to the tests. If the tests get complicated I can always split them up into seperate test bundles.
[read this post in: ar de es fr it ja ko pt ru zh-CN ]Wed 24 Aug 2005
This fixes some problems found with hal-device-manager in the Python bindings and also switches to installing all the python module files to lib64/ on 64bit platforms instead of splitting the noarch files into lib/ and the arch files into lib64/. Apparently Python gets confused otherwise since it does not support multilib.
As usual:
http://dbus.freedesktop.org/releases/dbus-0.36.1.tar.gz
Wed 24 Aug 2005
People have been trying to pawn off invites to Google Mail to me for some time. When I finally saw a need for one I had to go searching but I finally am one of the cool kids with an @gmail account.
John.J5.Palmieri@gmail.com
Kudos on Google for using an open protocol. I now have a reason to run Gossip though I don’t have anyone in my lists yet. If Google would allow signups instead of just referrals I would even advocate defaulting to them in Gnome provided they are committed to open protocols and formats everywhere. If they have a pay for Sip service that works with the upcoming GnomeMeeting I would sign up in a second.
The point is Google really has the power and momentum to bring open protocols and formats to becoming the defacto standards. This tells me they want to compete in an open market and if they stick to that goal I want to support them as much as I can.
Update
Gossip works but…if you are not in my buddy list I can’t reply back. Must go file some bugs.
[read this post in: ar de es fr it ja ko pt ru zh-CN ]Tue 23 Aug 2005
I seem to be unsubscribed from the dbus-list and can’t resubscribe, I’m guessing due to the hard drive meltdown a week ago, so I’ll post the e-mail here:
D-Bus 0.36 is released. Hopefully this will go smoother than the last release but if there are problems please let me know. This release includes numerous bug fixes and a couple of enhancements.
For the low power consumption crowd you can now have the bus match on arguments to avoid those pesky NameOwnerChanged signals from waking up every process.
The python bindings now support match on args and also adds the ability to specify timeouts on calls and explicitly cast to D-Bus types. The much talked about Introspection isn’t done yet but the foundations for
it are already in.
In the GLib bindings we see a lot of bugs being squashed and support for deeply recursive types was added. Watch out, some of the API has been taken private and is no longer exported. It shouldn’t affect anyone but if it does at least you know why.
As usual:
http://dbus.freedesktop.org/releases/dbus-0.36.tar.gz
What is D-Bus?
D-BUS is a message bus system, a simple way for applications to talk to one another.
D-BUS supplies both a system daemon (for events such as “new hardware device added” or “printer queue changed”) and a per-user-login-session daemon (for general IPC needs among user applications). Also, the message bus is built on top of a general one-to-one message passing framework, which can be used by any two apps to communicate directly (without going through the message bus daemon).
Update
I was trying to figure out why hal-device-manager wasn’t getting any signals and finaly realized a couple of hours later that my version of HAL didn’t import dbus.glib to get the mainloop integration. Doh, but it wasn’t a complete waste as I did uncover some other bugs. New release tomorrow morning. I’m also going to write those regression tests for Python.
[read this post in: ar de es fr it ja ko pt ru zh-CN ]