SyncML
I finished the first stage in my SyncML implementation work, which was a converter from the WBXML encoding to XML -- I want only to cope with one encoding in the actual SyncML processor itself. The WBXML converter's written in C++, but I intend to do the SyncML manipulation in Python. (This is partly because I couldn't find a C++ XML parser that supported namespaces and had a GPL license, but also partly because I want the flexibility of a scripting language while I fool around with this project.) I've started a SyncML page, which has the first release of this software on it.
As I was starting to write this work up, I discovered a WBXML implementation that must have been started around the same time as mine, released on SourceForge: wbxmllib. If I'd seen this before I'd have been saved days of work, but sometimes things happen this way, I guess. I've now got to decide whether my WBXML parser has a long term future or not.
At the end of the day if nothing else, I figured out some automake for building and installing Python extensions with SWIG.
plone
Over the holiday break I worked on a relaunch of one of my existing web sites, using plone, a content management system based on Zope. I'm very impressed! Combined with my modest Zope skills, I've been able to get an impressive amount of work done in a short time.
The FTP/WebDAV features of Zope made importing the old content pretty easy. My legacy content was in a PHP/MySQL system: I just wrote another template which created barebones HTML with some information into metatags, spidered these with wget, and then copied them via WebDAV into plone.
Been doing more work on Bluetooth-related stuff. Phone Manager and the GNOME Bluetooth subsystem now have their own web page, and versions 0.1.1 and 0.1 respectively are released. The code doubtless has many flaws, and the underlying Bluetooth SDP API is currently a moving target, but in the spirit of release early and often, I got them out there.
Took a first proper look at the Debian OpenOBEX packages I've adopted. I've made a small change or two to the existing packages to help migration towards the new upstream release, which I expect to go gold shortly. Packaged up preview packages of the new release, which gave me the pointers to the changes I needed to make to the existing release. Learnt even more about sonames in the process. Got the OBEX test app talking to my phone over Bluetooth, so there's the basis there for more Phone Manager functionality.
This week, besides the usual work and the acceleration in planning for XML Europe, I'm going to be studying SyncML. I'm starting from scratch, but my general idea is to see if I can whip up a basic Python implementation.
Crawling out from under the work...
The last week or so has been spent in manic hacking. Recently I wrote about my GNOME 2 applet that listens to a mobile phone for incoming text messages. Well, I wanted a decent UI for hooking it up to Bluetooth controlled phones.
This led me into writing a Bluetooth device subsystem for GNOME. Basically it's a Bonobo component that knows about the Bluetooth devices available to the computer, and brokers interrogation of this database to applications. It can also set up serial port connections to Bluetooth devices for clients.
Everything's in its early stages. For instance, the manager component needs a prefs app written for it so users can look at Bluetooth devices from the control center. The Phone Manager applet itself needs a lot of polish and user-friendliness added.
Once it's a bit more mature (read: I know it'll compile and run for someone else but me), my intent is to see if the GNOME project at large wants this work. It'd certainly be very cool to have the GNOME desktop have as easy control over Bluetooth devices as, say, Mac OS X does.
Oh, and everyone loves a screenshot.
And now, a call for victims. I'm looking for people who run GNOME 2, have a Bluetooth-enabled cellphone and a Bluetooth dongle. Also those with an IR or serial cable connection to their cellphone, too, but the fun's not as great for you :) Also, for now, you need to be happy with compiling the program from source. If you meet all these requirements, and are interested, drop me a mail to edd at usefulinc dot com or find me on irc.gnome.org/#gnome, nick 'edd'. IRC's probably going to be a must in the early days.
Some responses to a couple of GNOME related diary entries...
Uraeus: I really appreciate the work you do with the GNOME Summaries. Your observation is right about journalists, sadly. The daily pressure for stories often wins out against a real concern for fact checking. For a fun read, check out Avabanana's corrections page. (Disclaimer, I'm a journalist myself. Of sorts, anyway...)
snorp: I do wonder if those 'users' currently making a noise about the file selector are in fact typical GNOME users at all. Also, we should never give what users ask for, give them what they need :) The sort of work you and hadess are doing is really useful. I find the flames around the file selector tiresome. It made me wish for moderation on gnomedesktop.org when I read that story.
Making some headway with writing mobile phone software for GNOME 2. Got a basic applet up and running which listens on a serial port for incoming SMS messages and notifies you. The idea is to make it bind either to a Bluetooth phone, infrared port, or conventional serial port. I've been testing it over Bluetooth with my Ericsson r520m.
Thanks to gsmlib, the comms parts of this are proving to be the simplest. I've been on a rollercoaster ride through gtkmm/gnomemm and also on creating applets for GNOME 2. Not for the first time I'm grateful for apt-get source that lets me grab examples to copy from!
As the panel stuff for GNOME 2 hasn't been wrapped for C++ yet, I've had to mix up C and C++ together for this project. That's not been as bad as I feared it might be, once the issue of initialising gnomemm was sorted out.
Lots of other things going on but after a day in the coding "zone" I forget what they are.
Recently published: Whither Web Services? (XML.com) and Exploring alternative syntaxes for XML (IBM developerWorks).
Oops, left it too long before updating, so I've forgotten some of the things that have happened. Been doing plenty of work with BlueZ, tracking down some interesting bugs. As I said before I want to put some time in on user applications. One thing I found out about recently was MultiSync, the beginnings of a personal information synchronization tool that supports Bluetooth.
As I said to Bo, its author, for a few moments I hated him for implementing something I'd been wanting to do for months, but quickly realised that left to me it'd probably carry on as a dream for several more months too. Nice work, Bo!
Instead I decided to start some work on phone-related software. I found Peter Hofmann's excellent gsmlib and decided to put this to work over Bluetooth. After fixing a bug in Bluetooth's rfcomm handling, it worked like a dream. What I want to do is add a GNOME 2 interface on top of some gsmlib functionality.
As gsmlib is a C++ library, this motivated me to pick up gtkmm. An amazing piece of work. It's been a while since I did any C++ and the return to it was a bit hairy, but I've been very glad of murrayc and colleagues' efforts on gtkmm. If it goes well it may well permanently tempt me away from using plain C for my GNOME 2 programming.
In other hacking news, I've been playing around with IPv6 and got myself set up with a tunnel. There's a lot of fun to be had here, and some pain too. It's been nice to discover that there's a reasonable amount of work going on porting applications to IPv6. It may also provide the final reason I need to take a look at Apache 2.
9 Oct 2002 (updated 9 Oct 2002 at 14:15 UTC) »
BlueZ. Just finished a two-day Debian packaging session for the BlueZ Bluetooth utilities. The latest release of the BlueZ kernel modules includes really easy-to-use RFCOMM support. Put simply, this means it's trivial to make your cellphone appear as a normal modem would on /dev/rfcomm0 or similar.
For me, packaging these tools introduced some new things: getting the installation right to create these new devices in a way that works both for devfs and normal systems.
I'm keen to get more time to write some GUI tools for Bluetooth: things are reaching the point now where we have to think about how to make it easy to use for users.
Stuck in that sleepless void induced by returning back to Europe from California I find myself with time on my hands. As a result I've managed to upload bluez-sdp 0.8 to Debian unstable, and do the first packaging of bluez-hcidump, a handy Bluetooth diagnostic tool.
During my trip I also reactivated work on my GNOME2-based Bluetooth neighborhood exploration tool. Who knows what will come of it yet, but it's providing lots of fun and opportunity for learning about GTK2 widgets.
jfleck: I too have been very impressed with Havoc's philosophy. Indeed, that kind of thinking is one of the things that makes GNOME 2 very impressive. I'm trying to carry that on into my own programs.
Back in the days when I used to build web sites for a living, there was always a lot of pressure for "personalization" technology. I never believed that it was actually of much use: making the right choices in the first place can take you a long, long, way.
10 Sep 2002 (updated 10 Sep 2002 at 22:44 UTC) »
Regret is ... not having convinced your mother that Linux would be a good choice for her new desktop computer, and then wasting two days on installing Windows three times over onto a fresh machine in an attempt to get a working system. When will I learn?
In Bluetooth-related news, looks like an issue with the Linux USB OHCI controller prevents bluefw from loading firmware onto Broadcom 2033-based devices. This is quite ironic, as it means the Bluetooth dongle sold by Apple will only work with Linux on UHCI systems (most x86 PCs) and not on OHCI ones (most PowerPC boxes, including my iBook!). There is hope though, if I can speak nicely to the folks maintaining the OHCI driver.
FOAF updates: Trust rankings are now exported, making the data available to other users and websites. An external FOAF URI has been added, allowing users to link to an additional FOAF file.
Keep up with the latest Advogato features by reading the Advogato status blog.
If you're a C programmer with some spare time, take a look at the mod_virgule project page and help us with one of the tasks on the ToDo list!