Category Archives: Software

It’s been a hard day’s night

It’s almost a month since I last posted something here, but it’s because these last weeks I have been really busy.

However it was definitely worth it. Last Wednesday the first beta of Modest, the new e-mail client for the Maemo platform was released.

Modest

I’ve been working on Modest with some colleagues at Igalia for some time now and we have been doing our best to create a good e-mail client. Modest is still in beta, but I think that it’s reasonably usable now and we’re looking forward to improving it. The reviews we’ve seen so far have been positive and that encourages us to keep on working! Thank you all!

I’d also like to thank Philip, the author of Tinymail, for all his help and contributions and for being such a nice guy.

And, of course, the great Dirk-Jan from Nokia, the best possible leader and an amazing guy who had the good taste to announce Modest quoting one of the greatest records ever made. And he even uses Vagalume! ๐Ÿ˜‰

Well, and what happened to Vagalume then? Of course I haven’t forgotten about it, it’s just that I haven’t had much time to work on it. However I managed to introduce some new features and bugfixes, so Vagalume 0.4 is here. As usual, details in my webpage but for the impatient here are the highlights:

  • New dialogs for tagging and recommending tracks
  • Ability to edit existing tags for a track, and to see the list of the most popular tags set by other people
  • HTTP proxy support so you can use Vagalume at work ๐Ÿ˜‰
  • ConIc support: Vagalume will connect your N8x0 to the Internet if it’s offline (thanks Calvaris!)
  • New Vagalume icon (thanks Felipe!)
  • …and some other optimizations and minor fixes

Here’s how Vagalume looks on a PC:

Vagalume 0.4

By the way, this time I compiled Vagalume packages for Ubuntu too. I haven’t tested them but they should work.

And that’s all! I hope you enjoy both programs!

Vagalume 0.3: now with some images too

I’ve just released Vagalume 0.3, the Last.fm client for Gnome and Nokia 770/N800/N810.

Although I said that I’d begin to improve the UI after releasing version 0.2, I finally decided to implement some other basic features first. Fortunately these last two days I’ve had some time to work a bit on the UI too, and thanks to the help of my mates Felipe and Mario now we have some icons and other minor UI enhancements ๐Ÿ™‚ (by the way, check Felipe’s blog for new ideas concerning Vagalume)

Here’s a screenshot of Vagalume 0.3 on a Nokia N800. There’s still a lot to do but at least I hope that it doesn’t look so boring:

Vagalume 0.3 on the N800

What’s new in Vagalume 0.3?

Major changes in this release include:

  • Support for lastfm://play/ URLs. These are the 30-second previews (and sometimes full-length tracks) that you get clicking on most of the songs in the Last.fm webpage.
  • If you click on a lastfm:// link in other application (the web browser, the e-mail client) now it will be opened with Vagalume (Maemo only feature)
  • Some of those full-length tracks can be downloaded (see examples below). There’s a new button to download the mp3 file in Vagalume for those tracks. Right now they’re always stored in the Audio Clips folder and there’s no progress bar, but I’ll improve that in future releases.
  • As you can see in the above screenshot, now Vagalume shows the album cover of the track being played
  • We have new buttons to love, ban and download tracks, and icons for all of them

And now a bit of spam: I’d like to recommend a couple of tracks from some local bands for you to test these new features ๐Ÿ™‚

The first one is a band from Ourense called Annie Hall. They sing mostly in Spanish and their guitar pop is (in their own words) influenced by bands such as Teenage Fanclub and The Jesus and Mary Chain. You can listen to their whole record in its page at Last.fm, or you can play it with Vagalume clicking on these links (all tracks are downloadable):

The other band is 6PM, a Galician band whose first record, Far From Perfect, has received some good reviews. 6PM sing in English and their music is darker, more electronic and sometimes a bit experimental. Their music is often compared to that of The Postal Service. They uploaded their whole album to Last.fm and here’s the link to my favourite track: Homemade Screener

More info, packages, source code, etc., here.

Update: It seems that in the 770 all buttons appear without images, I’ll try to debug it later and release new packages for the 770.

Update: The problem in the 770 described above has been fixed in Vagalume 0.3a (so that is a 770-only release).

Vagalume 0.2: it’s amazing and flies!

I have been busy lately so I haven’t had much time to work on my little Last.fm client, but I finally managed to prepare a new release, so here is Vagalume 0.2!

First of all I’d like to start with an introduction because some people asked me about the name of this program…

So what does Vagalume mean?

Vagalume is Galician Portuguese for firefly.

The name has absolutely no relation to Last.fm and it doesn’t have anything to do with music either. I chose it just because I liked how it sounded ๐Ÿ™‚

How do you pronounce Vagalume?

This word is composed of four syllables and it’s stressed on the third one: va-ga-LU-me.

To pronounce each syllable you can follow these examples:

  • va as in vast, vantage or varnish (*)
  • ga as in garden, garlic or gasp
  • lu as in lucid, luminary or lunacy
  • me as in medal, melody or medical

(*) although we Galicians pronounce it as in bargain, basket or bathroom

(Updated 10 Nov 2007: as stated in the comments of this post, the Galician phonological representation of the word is /bagalume/ and the usual pronunciation is [bษ‘ษฃษ‘lumษช]. Thanks Marcos and Cameron)

What’s new in this release?

There haven’t been many big changes, I basically added support to some parts of the protocol that weren’t implemented in the previous version. Here’s the quick summary:

  • Support for recommending tracks to other users
  • Support for adding tracks to your playlist
  • Volume control for the Nokia devices using the hardware +/- keys
  • A combo box to select a friend instead of having to type his/her name
  • More visual feedback for some actions
  • Some bugfixes and other minor changes

Now that most of the core features are more or less working, from now on I think I’ll begin to work on the UI. But beware! I’m not a good UI designer, so be prepared for the disaster ๐Ÿ™‚

Where can I get it?

You can get Vagalume from my page or from garage.maemo.org.

There are packages for the Nokia 770, N800 and N810, as well as a package for Debian etch (x86).

And that’s all for now. I’d like to thank again all of the suggestions and positive comments that I received these last days. Thank you all! ๐Ÿ™‚

UPDATE: It seems that this post has just entered planet.gnome.org. This is my first post there, so hi all! ๐Ÿ™‚

Vagalume 0.1 released: come and get it!

After a couple of pre-releases, version 0.1 of Vagalume, the Last.fm client for the Nokia N800, is finally here.

Vagalume 0.1

This is the first proper release and it comes with full source code licensed under the GNU GPL.

There haven’t been many changes since the first pre-release from last monday, but this version includes some nice new features such as:

  • Proper support for loving/banning tracks.
  • Support for tagging artists, tracks and albums (with multiple tags at once).
  • More menu entries to select Last.fm radios. Avoid typing long lastfm:// URLs.

I have also compiled packages for Debian etch (x86) and Tablet OS 2008 (using Maemo chinook beta), so if there is any lucky owner of an N810 out there, I’d appreciate feedback ๐Ÿ˜‰

I haven’t tried to compile Vagalume for the Nokia 770. I don’t have one of those and I haven’t had the time to find out if it’s easy/possible to make it work there, but if someone tries please let me know. For those interested, this program depends on GTK+2, GStreamer 0.10, libcurl and libxml2.

You can get Vagalume from my webpage.

I’d like to thank all the people who tested the initial pre-releases and sent me their comments. I’ll take them into account for future versions!

Enjoy!

Updated 02 Nov 2007: Vagalume seems to compile with gregale SDK, so I’ve just put a package for the Nokia 770 in my webpage. If anyone can try it and tell me if it works I’d appreciate it!

Updated 02 Nov 2007:Solmis has confirmed that the package for the Nokia 770 works!

Vagalume: a Last.fm player for the Nokia N800

These days I have been working on Vagalume: a Last.fm player for the Maemo platform (Nokia N800 and N810, though it’s designed to work on a regular PC Gnome desktop as well).

It’s still very small and doesn’t do much (I started it just a few days ago) but since it already works and has the most basic features that a Last.fm player must have I decided to release it.

Don’t expect a UI with lots of colours and shiny buttons in this release: I have been concentrating mostly on the protocol so the UI is stripped to the bare minimum.

Here’s a sample screenshot (taken from the scratchbox):
Vagalume Last.fm player

Features:

  • It plays Last.fm radio streams (using the Last.fm protocol v1.2)
  • You can select any radio (Personal, Neighbours, Loved Tracks …, or any arbitrary URL)
  • It implements the Audioscrobbler Realtime Submission Protocol v1.2, specifically:
    • It sends Now Playing information
    • It scrobbles tracks (so you’ll see what you’ve been listening to in your profile).
  • It is stable, I’m using it everyday and I haven’t experienced hangs or other strange behaviours so far.
  • It’s small (the binary is less than 50K).

What it doesn’t do (yet):

  • It doesn’t have the ability to Love/Ban/Recommend tracks
  • It doesn’t have a nice UI
  • It doesn’t show album covers on the screen
  • …and many other things

You can install Vagalume in your N800 (with Internet Tablet OS 2007) using this package.

I plan to release the source code under the GNU GPL later this week and I’ll probably build packages for Debian and Ubuntu as well, so you can use this program in your PC. And of course there will be packages for the upcoming Internet Tablet OS 2008 (N800 and N810) too.

And that’s all, folks!

Updated 31 Oct 2007: more packages here.

Converting office documents into PDF from the command line

One of the best-known features of the OpenOffice.org suite is its ability to export files into PDF format.

Combined with the ability to read files in many formats such as the ones used in WordPerfect and MS Office, this makes OpenOffice.org a good converter.

Of course there are more free office converters (example: wvWare) but OpenOffice.org is probably the best one due to the large number of formats that is supports and the good quality of its filters.

Its main drawback, however, is that it’s not trivial to convert documents using this suite in batch mode from the command line.

Of all the methods I’ve seen, this is probably the easiest one. Here are the steps:

  1. Start OpenOffice.org:
    $ openoffice "-accept=socket,host=localhost,port=2002;urp;"
    
  2. Download this script.
  3. Use it!
    $ ./ooextract.py --pdf mydocument.odt
    

OpenOffice.org has to be running in background for this script to have effect, so to avoid the annoyance of having the office window laying around in your desktop (or to use it in a machine with no display) you can use Xvfb or a VNC server. Example:

$ Xvfb :1 &
$ DISPLAY=:1 openoffice "-accept=socket,host=localhost,port=2002;urp;"

And that’s it. It would be nice if OpenOffice.org had direct support for conversion from the command line, but meanwhile this method will do the job.

Summer’s last sound

Although it doesn’t officially end until 21 September, the best days of summer are gone, so I’m using the title of a single by British band Disco Inferno to post again after two months of inactivity.

This has been a good summer overall. I went a lot to the beach, attended many concerts, spent a lot of time with my friends and met people who I thought I’d never meet again. But everything has an end (and holidays too) so I’m back again at work.

I’ll seize this post to tell you that I’ve just updated my Last.fm backports for Debian and Ubuntu.

It seems that Last.fm’s protocol has changed recently, and older versions of the client have problems skipping and banning songs. This obviously affects unofficial clients as well.

So although you still can play songs in the old player, now you need at least version 1.3 of the client to do it properly. This is bad news for sarge and dapper users, as Last.fm 1.3 requires a version of Qt too recent for those distributions. Those using etch, edgy or feisty can still benefit from my backports. Users of more recent distros can install the official Debian packages created by John Stamp.

For those interested, the semi-official Debian backports (not compiled by me) are also available at backports.org so sooner or later my work with Last.fm won’t be necessary anymore. I hope that it has been useful during all this time ๐Ÿ™‚

Comparing virtualization software performance: QEMU vs UML vs KVM

I have been making some quick tests comparing the performance of some different popular virtualization programs.

This test is far from perfect but I think that at least you can get a basic idea of how all these virtualization techniques perform.

The test
The test was very simple: unpacking the source code of Linux 2.6.21.1 (from a .tar.bz2) and compiling it. I know it’s not an elaborate test but at least it involves both computation and I/O so the results shold be fairly realistic.

All the tools used were the ones that come with Debian 4.0 etch x86 (not x86_64): gcc 4.1, bzip2 1.0.3, etc. The filesystem used was ext3.

The host and the guests used basically the same software.

The host
I first compiled the kernel in the host:

  • Intel Core 2 Duo E6300
  • 1 GB RAM
  • Debian GNU/Linux 4.0 (etch)
  • Linux 2.6.21.1

As the machine has a dual-core processor I compiled the same kernel twice: first with a classic make and then with two simultaneous jobs (‘make -j2‘).

The guests
Besides compiling the kernel in the host I tested the following virtualization software:

  • User-mode Linux 2.6.17.13 in skas0 mode
  • User-mode Linux 2.6.17.13 in skas3 (v9-pre9) mode
  • QEMU 0.8.2
  • QEMU 0.8.2 using KQEMU 1.3.0-pre11
  • KVM 28

The results
Here are the results of the test ordered by total compilation time (best results are shown first).

Mode Time
Native (-j2) 4m 49s
Native 8m 38s
KVM 11m 12s
UML skas3 12m 47s
UML skas0 14m 30s
QEMU + KQEMU 17m 55s
QEMU 2h 13m 04s

Here’s a couple of charts showing the results. Both were constructed using the same data, but the latter omits QEMU as its performance is not comparable to the others. Click on the images to enlarge them.

Chart 1 Chart 2

Conclusions
As expected, native compilation is the best and making use of both cpu cores is really worth it.

KVM performed a bit worse than I expected but it’s still faster than any of the the other ones and reasonably close to native compilation.

Regarding User-mode Linux I was a bit surprised that the skas0 mode did not perform much worse than the skas3 mode. I also expected KQEMU to perform a bit better… unlike KVM, this one is even slower than plain User-mode linux running in skas0 mode (that doesn’t require any kernel module nor patch). Of course they’re very different programs, but you get what I mean.

And last but not least, I was really amazed on how slow is QEMU with no helper module. Of course in this mode (and unlike the other solutions tested) it emulates the CPU so it has to be obviously an order of magnitude slower than the rest, but still in everyday,
interactive usage, it doesn’t feel that slow.

Some extra remarks that I’d like to point out:

  • Native mode is the only one that benefits from parallel compilation. All the other virtualization solutions perform (as expected) a bit slower when compiling with -j2. QEMU and KVM have a -smp flag to emulate a machine with several CPUs but neither one boots properly with that flag enabled.
  • I made some tests comparing QEMU performance with qcow and raw disk images. The results were more or less similar.
  • KQEMU didn’t even boot if I tried to use the -kernel-kqemu flag
  • KVM requires hardware support to work properly. Only recent processors have this kind of functionality (mine has) so it doesn’t make sense to use it if your processor is older.
  • Of course there are many other virtualization programs that I did not use in this test: OpenVZ, Xen, Linux-VServer, VirtualBox, VMWare… I expect OpenVZ and Linux-VServer to perform more or less like native mode, but I’d really like to know about the other ones.

And that’s all!! I hope that this article is useful to anyone and of course comments are welcome.

Finally: Last.fm again in Debian!

I’m glad to announce that, after some months of unofficial packages, John Stamp is now the official Debian maintainer of the Last.fm client.

You can find his packages in the official Debian and Ubuntu repositories. So if you’re using the development version of either distribution you can forget about this page and install this software using apt-get.

However, as many people are using etch, feisty, or some previous version of Debian or Ubuntu, I’ll keep compiling backports of John’s packages for these distributions, at least for some time.

You can get them from my home page, as usually.