Category Archives: General

libgda: iterator-based data models

I finally had a chance to test out Vivien Malerba’s cursor support in libgda, and fixed some problems. It lets you use the “ITER_MODEL_ONLY” parameter to get a GdaDataModel that should be used only via a GdaDataModelIter iterator. That uses the SQL “FETCH” command to get chunks of rows at a time instead of getting all the rows even if you are only interested in a few of them. I added an example of this to libgdamm.

For instance, Glom won’t cause libgda to get all one million records to show you a list of all records if the GtkTreeView only has space to show ten at a time. However, I’m not sure if it will get all the intermediate data when someone moves the scrollbar quickly from row 1 to row 500,000, because of this comment in the PostgreSQL documentation for FETCH. I’d like to avoid hacking on Postgres to fix that.

"ABSOLUTE fetches are not any faster than navigating to the desired row with a relative move: the underlying implementation must traverse all the intermediate rows anyway.”

So far this is only implemented for libgda’s PostgreSQL provider. It would be great if people could implement it for the other providers. The “FETCH” command seems to be fairly standard SQL, so it should be easy.

Some new C++ bindings

We released some extra C++ bindings recently:

gtksourceviewmm-2.0

I updated Dodji’s gtksourceviewmm to wrap the new gtksourceview-2.0 API. Here’s the svn, and the tarball download.

libnotifymm and hildon-notifymm

Johannes Schmid created libnotifymm (svn, tarball) to wrap libnotify, and we also wrapped Maemo’s hildon-notify, though there’s no documentation to say what this does beyond regular libnotify. I suspect that Maemo should just use a port of libnotify without requiring use of special API.

There are lots of examples in the libnotifymm source code. It seems quite simple, and particularly useful for code that uses Gtk::StatusIcon.

GNOME 2.20 Release Notes

GNOME 2.20 is out today. Here are the GNOME 2.20 release notes, showing all the enhancements and new features. It’s always more than we expect.

For GNOME 2.20 I returned to release notes duty after the 2.18 disaster. Now I’ve done 2.6, 2.8, 2.10, 2.12, and 2.20. I couldn’t take another aimless group conversation about why we haven’t achieved anything, just because nobody took the time to show what we have achieved.

It’s a lot of work, involving interrogation, investigation, and pestering, and we have to be very tough about what’s meaningful and relevant. Users don’t understand or care about “improved X” or “reworked Y code base”. Developers should be proud enough of their achievements to actually say what they’ve given to users. Empathy is required.

Jorge Castro wrote some initial text, and Andreas Nilsson took care of the screenshots. But, unfortunately, I don’t see anybody else who’s likely to ensure that it gets done for GNOME 2.22. Only by following a strict schedule, starting early enough, can you hope to have enough time to get all the information, correct mistakes, and be finished in time for translation. Maybe I can persuade Dayvd Madeley to take turns.

We put everything on one page this time, instead of splitting it into sections, without a separate start page, and without a separate press release. That’s because we noticed that people often never clicked through to the release notes or never clicked beyond the introduction page. It was frustrating to read comments about how we should have written about what’s actually changed. Now you have no excuse for not actually seeing the content. Hopefully the server can handle the content.

I am again pleased to see the hard work done by the translators. It’s great to see your text translated into incomprehensible languages such as Thai. Many have even taken the time to create localized versions of the screenshots.

developer.gnome.org clean up

GNOME’s new documentation site, library.gnome.org, is now live and usable. Thanks are due to Frédéric Peters, Goran Rakić (and Google for funding Summer Of Code), and Olav Vitters for getting this done. Bugs and suggestions should be filed in bugzilla: List of open library.gnome.org bugs. Submit a library.gnome.org bug.

So a few days ago I did some cleaning-up of developer.gnome.org. I ditched the awfully outdated stuff, and made sure that we now link to library.gnome.org and live.gnome.org where appropriate. The whole of the API section is redirected to library.gnome.org, thanks to Olav. There is still content there that should be moved into the source code modules that it documents (such as gnome-panel). That can then be hosted by library.gnome.org and removed from developer.gnome.org.

I’m not sure what the plan is for developer.gnome.org. It should probably just be a set of links to the library and the wiki, but that will become clearer as we remove the stuff that shouldn’t be there. Now that we have Shaun’s GNOME platform overview document, I think we don’t need much introductory text anywhere else.

Micro system that plays Ogg from USB?

Many “micro systems’ (or “executive systems”), such as the JVC UX-EP25 now have USB host sockets so they can play music from USB sticks or portable audio players. But does anyone know of one that plays Ogg Vorbis? The Ogg Vorbis hardware page doesn’t list any.

I’d like one that plays internet radio too, but that seems even more unlikely. I’d like to avoid having multiple pieces (player, amplifier/hi-fi, powered speakers).

Linux-compatible wireless USB adaptor: Slightly better in Ubuntu Gutsy

Every now and then I retest my collection of wireless USB adaptors, hoping that another one will start working thanks to an Ubuntu update. Today I noticed that the Zyxel G-220 v2 now works perfectly in Ubuntu Gutsy (zd1211b chipset, using the zd1211rw driver, I think). So there is now at least one wireless USB adaptor that’s easily available in both the US and Germany that works out of the box in up-to-date Ubuntu. One is much much better than zero.

I’ve updated my Wireless USB test results, and my (small) Ubuntu Hardware page. I wonder if the newer Zyxel adaptors work too, such as the Zyxel G-270S.

Giving Away The Old Events Box PC

Now that we have the new Fujitsu-Siemens Esprimo Q Mini PC in the GNOME events box, we don’t need the old PC. I have permission from the GNOME Board to donate it to a GNOME developer (or some FOSS contributor) in the Munich area, if someone would like to collect it. It’s a little beaten up, and the hard drive maybe needs replacing (I might have a spare drive for you too), but it’s a perfectly acceptable 3Ghz desktop PC (details). Send me an email if you’re interested.

Update: I gave it to the local Debian people for use at the Munich Systems exhibition.

IMG_2974_001

Small pretty audio player, to replace YP-F1

I’ve been without an audio player since my Samsung YP-F1 was a victim of the ETAP hotel room robberies at the GUADEC conference in Birmingham. Well, I haven’t seen it since then anyway. The YP-F1 was small, pretty, it worked like a USB memory stick, played Ogg Vorbis (essential for me), and recharged without disposable batteries (also essential). But they don’t make them any more.

The YP-F2 doesn’t look too bad. They don’t make that any more either but I think I can still get them here in Germany.

Samsung YP-F2

Now there’s the YP-U3, which is not pretty, though not awful. But it seems to need the MTP protocol instead of allowing music to be loaded as a USB mass storage device. Apparently the YP-U2 had the same problem. (Update: Apparently the YP-U2 works fine as a USB mass storage device.) How confident can I be of MTP support in, for instance, Rhythmbox? Even if it works it would annoy me to have to use music player software just to transfer files to the device.

Samsung YP-U3

I find just about every other audio player large and ugly.

Update: I bought a Cowon iAudio 7. It plays everything but I hate the interface. It’s very difficult to know what the buttons might do at any time, it’s far too easy to brush the buttons accidentally, and touching a button for a moment extra will cause it to recognize a long press, which generally does something unrelated and unexpected. I also miss the belt clip for running.

Work on Modest and C++ for Maemo

Some public statements allow me to now mention some work I’ve been doing recently for Openismus, for Nokia, though the heavy cloak of secrecy still hangs over many Nokia things by default.

Maemo Modest

Since Nokia’s Dirk-Jan Binnema talked about Maemo’s new Modest email-client at the GNOME conference (his slides), I can mention that some of the Openismus people (myself, Armin Burgmeier, Johannes Schmid, and Christian Kellner) have been working on this project quite intensively since May 2007. It consumes most of my time at the moment.

Modest is an email client for the Nokia Internet Tablet that’s actually usable, meaning it can handle real world amounts of email, via both POP and IMAP, and it has presets that make it easy to set it up to use many common email accounts, such as Yahoo and Gmail. If we can get everything done (Nokia’s quality requirements are sensibly high) then this will be used by a lot of people.

It uses Tinymail, which uses Evolution’s camel code, so we obviously get most of the functionality that Evolution has, without using Evolution’s UI, but everything is much faster and responsive. It is by far the best way that I can imagine to write an email client now, not that there’s a lot of competition. I say that even though I think that tinymail is currently not a lot more than a glorified wrapper for camel. It’s just that it’s a very good wrapper. Good APIs cause applications to be better and save developers time. It will get really interesting when there’s a future version that can use something other than camel. Philip Van Hoof knows the Tinymail and camel code very well and is incredibly responsive to our needs. While I might be up all night worrying about a problem, Philip has usually been up all night fixing it properly.

We’ve made some small but significant changes to tinymail’s version of camel (camel-lite) – a big investment of time. I think that Evolution should be ported to our camel-lite in the near future, to get some improved stability (general fixes and better thread locking to avoid intermittent hangs and crashes) and improved error codes (allowing better error messages), and obviously to get the performance improvements (though a one-time cache upgrade would be needed, I think). That would be useful even if they never decide to use Tinymail, which they probably should do too one day.

Maemo C++

The updated C++ bindings for Maemo, which I mentioned recently, will be released and supported by Nokia (with help from Openismus) as part of their regular SDK. This means that people can feel safe about using C++ and gtkmm to develop Maemo applications, should C++ be their programming language of choice.