Recursive VNC Cubes

Recursive VNC Cubes

I’m giving a demo tomorrow remotely and wanted to see how much VNC could take. Enable VNC server, run vncviewer against yourself, and play with Compiz — or just move some windows around. The infinite mirror effect is always good for hours of entertainment, now in 3D.

Software EQ in Banshee

A wonderful patch just landed in Banshee trunk, revived by Alexander Hixon that adds software equalization support — the typical 10-band deal with a pre-amp. We had added most of what was necessary for this about 1.5 years ago, but never got around to finishing it. Ivan Zlatev did much of the player engine work at the time and actually started the effort, I did much of the UI work, and Alexander has revived it all for our new codebase in trunk.

Here’s the old screenshot of the Equalizer UI designed so long ago — I still like it very much, though it does need a bit of tweaking still:

Banshee Equalizer

That being said, I hate software equalization. I’m reminded of “The Death of High Fidelity”, a wonderful and sad article in Rolling Stone from a few weeks ago. Very much worth the read, and be sure to listen to the samples at the end of it.

I’m still very happy that we finally have this beast enabled in Banshee though. Thanks to both Ivan and Andrew, and Gabriel for staying on top of the patch.

Banshee and openSUSE 11

I had the privilege this morning of being the guest “speaker” for the multimedia-themed openSUSE GNOME community meeting where I discussed some of the high level plans for the future of Banshee and what that may mean for openSUSE 11.

I discussed the incredible performance and memory usage improvements, the new model/view, the album/artist browser, the playback queue, our fantastic new Xesam-based search and smart playlist infrastructure, and so on.

As a result of feedback from the meeting, I wrote a guide for building Banshee from trunk on openSUSE 10.3+.

And here are some related links:

And of course, if you’re interested in making your voice count in openSUSE, please join the meetings!

Mono.Zeroconf 0.7.4 and cross platform glory

I released Mono.Zeroconf 0.7.4 last night which is a minor bug fix release. Packages are available for openSUSE, SUSE Linux Enterprise, and Fedora. Sources and binaries are available for Linux, Windows and OS X.

What I have found interesting about Mono.Zeroconf is a growing adoption by the Windows crowd. I have been getting almost weekly emails from a new Windows developer using Mono.Zeroconf. A few bugs have been fixed in the process, though mostly in the Bonjour provider, which doesn’t affect modern Linux distros (because they use the Avahi provider, of course).

Since there’s been good feedback from the Windows world, I spent a little time making Mono.Zeroconf actually build on Windows in Visual Studio (yikes!). I am producing .zip files of the regular sources as well to make releases more accessible on Windows. Additionally, I generate a file which contains just pre-compiled assemblies.

The fun thing with all of this is validating how truly remarkable Mono is. I had never written any of Mono.Zeroconf specifically for Windows, never tested it on Windows, yet released the precompiled assemblies (built in Linux by Mono) for the hell of it. And without any changes, everything “just works” on Windows/.NET (and Mac OS X as well).

Andy made the leap to Linux.

So what’s so important about this? These new Mono.Zeroconf users on Windows inherit the fact that Mono.Zeroconf is truly cross platform, which means their applications are immediately more portable to Linux and other platforms that Mono supports. By luring Windows developers with delicious, easy to use libraries that are already cross platform, we make it easier and more enticing for those developers to bring their awesome applications to Linux.

Awesome. Mono rocks.

Nightly Inkscape Packages

I am building nightly, or semi-nightly, packages from the inkscape-current tarballs in the openSUSE Build Service. If you follow Inkscape and are running openSUSE 10.3, you may wish to subscribe to my home project repository and update your inkscape package from there:

Enjoy! The latest builds have been very awesome, I’m loving the new dockable tool windows, though they do need a lot of UI work still.

Dear Firefox 3 Lazy Web

I’ve been using Firefox 3 Beta 2 for weeks now, and it’s absolutely amazing. There’s not much else to say other than that. Just a few quick points, and then I have a gripe.

The Good

  • Memory consumption is so amazingly low compared to Firefox 2. I actually don’t find myself constantly killing my browser these days.

  • GNOME/GTK+ integration is finally up to par I think. Browser shell widgets look more native, web controls look native. Fantastic icon theme integration. Firefox finally feels like part of my desktop now. Kudos to all the great GNOME love. It’s about time!

  • The new location bar drop down is awesome.

  • There are subtle attempts of humor.

  • It’s been rock solid, more-so than Firefox 2 ever has been, barring the typical Adobe Flash freezes.

  • We have packages with proper distro-integration patches for openSUSE 10.3 (1click Install and yes, it will replace your Firefox 2. I live on the edge!)

The Gripe

I hate the new full page zoom! So many people rant and rave about how awesome this feature is. It’s horrible. It breaks usability and accessibility of web pages.

When reading a page in a properly designed web site (proper semantic markup and good CSS) in Firefox 2, text would re-flow properly when I zoomed. This allowed me to read a page with increased zoom without breaking the layout of the page, but also not causing it to scroll horizontally. In Firefox 3, everything zooms in, often causing me to have to scroll horizontally to read the page in question. Utterly bad.

The closest thing I’ve been able to do is set mousewheel.withcontrolkey.action to 3, causing text zoom to happen when I hold control and use the scroll wheel. The problem with this is that it’s hard to know how many levels you’ve zoomed (I have an insane scroll wheel with ball bearings… it’s very fast and sensitive) and there is no reset (like CTRL+0, traditionally). Also… I just like CTRL++, and CTRL+-.

Firefox 3 - about:config

So how can I completely disable the full page zoom and have my normal buttons behave like I’m used to?

This is the biggest downfall in Firefox 3, but on the whole, it’s awesome.

Banshee 0.13.2 … at last!

The new Banshee logo Only a few months overdue, we’ve finally released a new stable Banshee. This release includes a slew of important bug fixes and a handful of new features.


On the iPod side of things, there have been some pretty heavy changes since the last release. We now require PodSleuth and the latest ipod-sharp. This is the first release that drops libipoddevice, the hardware layer that was obsoleted by PodSleuth.

What users should care about is that this release supports the new Nano and Classic iPods. We currently are not supporting the iPod Touch nor the iPhone. Of course, my personal stance towards any iPod, especially the iPod Touch and the iPhone is to simply avoid the hardware and the lock-in that goes with it.

The biggest new feature users will notice is the streaming plugin that Gabriel Burt wrote a few months ago. This plugin allows you to listen to radio stations with all the love/ban glory expected from clients.

We have opted to disable this plugin at runtime by default for now, but it is built by default and can easily be enabled through the plugins dialog. Gabriel has blogged in detail about this awesome new plugin.

Album Track Editing… now even easier… again

A couple of months ago I found myself in the position, yet again, of wanting to import a CD that didn’t have metadata in MusicBrainz. I have blogged about the excellent track editor in Banshee before, but I continue to want to improve it. Editing an entire album’s metadata can be a tedious task, but I think I have greatly simplified it yet again.

Now you can select a table or list (from a web site, for example) of track names for the album you are editing and paste the entire selection into the first “Title” field in the track editor. The selection will be parsed and applied to all of the tracks in the editor.

For example, I went to, found the album, selected all of the tracks, and pasted it into the first title entry in the Banshee track editor. I didn’t have to type any of the titles on the CD. I created a screencast of the entire process of filling in all of the album metadata manually. Slick, though it’s still of course always better if the metadata can be found in the first place via MusicBrainz.

Batch pasting titles into the track editor for an album
Screencast demoing the new batch title editing for albums without automatically resolved metadata. Ogg/Theora, 46 seconds, 3.2 MB.

With metadata on the mind, I should note that Banshee’s metadata services stack is very versatile and allows for any number of metadata providers. We have a few, including MusicBrainz, Rhapsody, and Amazon. However, the Amazon provider does not fetch metadata, it just downloads cover art (and same applies for the Rhapsody one). It would be really nice if someone provided a full Amazon provider (or Rhapsody) that used their web services API.

The problem with this however, for Amazon, is that it requires a developer key (at least it did in years past), and this is why we have never invested time into implementing one. Instead we just rely on MusicBrainz, and perform cover art downloads from Amazon if the MusicBrainz metadata has an associated ASIN.

Ugh, this song sucks!

Another minor little feature users may notice is a new “Play next song” button that shows up in the notification area bubbles. It’s quite nice when you’re listening to music in the background and a song you hate starts playing. Easy to skip without switching interfaces. Of course, if you have multimedia keys set up, I suppose that’s even easier.

Notification bubble allows skipping songs
Notification bubble allows skipping songs!


Alan McGovern has nearly completely rewritten our MTP support and we are close to enabling it by default. The next release should have solid MTP support, and we hope to roll 0.13.3 within the next two weeks. The new MTP support uses libmtp instead of libgphoto2. This decision was made for a number of reasons, though I am really not informed enough to convey them properly. Alan has blogged a bit about his changes and his reasons for switching libraries.

We encourage users to try the new MTP support in this release, but we do not want to see distributions packaging it at this time. To enable MTP support from source, pass --enable-mtp to configure. There are a handful of known issues with many MTP devices, and these will be addressed in 0.13.3. Nevertheless, we wanted to get something out the door.


I blogged about my new Mono.Zeroconf library a few weeks ago, and this release of Banshee is the first to require it. It greatly simplifies zeroconf logic inside Banshee itself by allowing us to target only one API instead of two (Bonjour and Avahi). Only the DAAP plugin uses it, so if you do not wish to install Mono.Zeroconf, pass --disable-daap to configure.

Great, but what about the really cool stuff?

While 0.13.2 is a solid release with some exciting new features, the real goodies are in our unstable trunk. We have done a ton of work on trunk, rewriting Banshee nearly from the ground up. Performance improvements are massive, and we expect to have some sort of preview release out within the next two months. Now that we are winding down with this stable series, 0.13.2 is out the door, and winter holidays are over, we will be heads down on trunk, making great strides.

Expect lots of blogging in the coming months about details of trunk. In the mean time we have a high level roadmap that can be tracked. Stay tuned, because a lot of really exciting stuff is happening in the Banshee universe!