Older blog entries for pycage (starting at number 82)

Tablet Python #4 - Sources of Memory Leaks

Marius Gedminas blogged an interesting article about memory leaks in Python. On the tablet you don't have much memory available, so memory leaks will annoy the users very quickly.

Python is a garbage-collected language (like Java or C#), so memory leaking is normally not an issue, but there are situations where you should be careful.

Bindings to C libraries

Many modules are bindings to C or C++ libraries, and memory leaking is unfortunately quite common in those languages, esp. in complex libraries. A hot candidate for memory leaking on the maemo platform are the GdkPixbuf operations.

GdkPixbufs get not automatically garbage collected by Python. Always use del on a GdkPixbuf explicitly when you don't need it any longer.

The __del__ destructor method

Classes can have some sort of destructor method in Python.

def __del__(self):


This is called when you use del on the last reference you are holding. But be very careful! Classes overriding this destructor method are not eligible for breaking reference cycles by the garbage collector anymore! They have to be released manually. It's normally not necessary to override the __del__ method, so you better stay away from it.

Always take special care when dealing with classes overriding the __del__ method. Cyclic references involving such classes cannot be resolved by the garbage collector automatically.

Syndicated 2008-06-12 14:32:00 (Updated 2008-06-12 16:21:29) from Martin Grimme

MediaBox 0.95 released

The new version 0.95 of the MediaBox Media Center is finally available. Thanks to all users who reported bugs and made suggestions for new features. Thanks to lot of feedback, many things have improved since the last release.

With the new MediaBox you can finally compose playlists and rearrange them on the fly. If your internet tablet has a keyboard connected, you can also search for tracks in long playlists or albums by just typing a few letters of the title.

The new version has an improved easy and finger-friendly user interface and reduces memory consumption, especially when dealing with large collections of media.

You can view the release notes at http://mediabox.garage.maemo.org/data/release-notes.

MediaBox 0.95 is available in the Maemo Extras repository. Click the arrow below for quick install.

Have fun!

Syndicated 2008-05-09 19:06:00 (Updated 2008-05-09 19:15:03) from Martin Grimme

MediaBox Walkthrough: Search as You Type

Today I'm showing you another new feature of the upcoming version 0.95 of the MediaBox Media Center. Search-as-You-Type works on any internet tablet with a keyboard, either built-in or connected via Bluetooth or USB.

Find a track
If you have many tracks in an album or the playlist and want to quickly scroll to a particular track, just type some letters from its title.

While typing, MediaBox searches your tracks for a match and scrolls the list to bring the track into view. You can see your search term displayed in the title bar while typing.

You don't have to type the full title as it's sufficient to type just a few subsequent letters from anywhere in the title.

Make a new search
The search text field clears automatically after a few seconds.

In order to make a new search, wait for the search text to disappear in the title bar, and enter your new search term.

Syndicated 2008-05-02 20:10:00 (Updated 2008-05-02 20:15:22) from Martin Grimme

Mediabox Walkthrough: Playlist Editing

In a few days the new version 0.95 of the MediaBox Media Center will be released for the Nokia internet tablets. Let me introduce a few of the new features until then. Today I'm showing you a bit about the new playlist feature.

Enter the music viewer

You can edit the playlist in the music viewer. To get there, press on the tiny arrow button in the bottom left corner once.

The screen will slide up to reveal the viewer menu where you can switch between the different viewers of MediaBox.

Tap on the music viewer icon to select it. You're in the music viewer now.

Choose an album

On the left-hand side of the screen you can see a strip of images representing your album folders which MediaBox has found on your device.

You can drag the strip with your thumb to scroll through it.

When you've found the album you're looking for, press on the little arrow button on the album image to open it.

Add tracks to the playlist
After opening an album, you can see all its tracks on the screen. Again, you can use your thumb to scroll through this list.

The top item of this list represents the album itself and shows you the album cover (if available) and the number of tracks in the album. The other items represent the tracks in the album.

On each track there is a menu button to the right. Tap on it to reveal the track menu, where you can choose between [play] and [add to playlist]. The album item does not (yet) have a menu button. Instead it has the [add to playlist] button there.

That way you can either add particular tracks or complete albums at once to the playlist.

Switch to the playlist view

There is a button in the toolbar where you can switch between album view and playlist view. Press it once to get to the playlist view.

The playlist view shows all your playlist items in a list. Use your thumb to scroll through this list.

The album cover on the left side of each playlist item shows you where this particular track comes from.

Play or remove tracks

Each playlist item has a menu item on the right-hand side.
Press it once to reveal the item menu, where you will find buttons for [play], [remove from playlist], [remove succeeding], and [remove preceeding].

The [remove succeeding] and [remove preceeding] buttons are special because they do not only remove the selected item, but also all items preceeding or succeeding it.
That way you can quickly clean up large portions of the playlist.

Reorder the playlist

You can use your thumb to drag playlist items in order to reorder them.

Use the tiny dragging area at the left of an item to drag it around.

Syndicated 2008-05-01 16:07:00 (Updated 2008-05-01 16:27:26) from Martin Grimme

Laptop, External Monitor, and xrandr to the Rescue

I have just upgraded to Ubuntu Gutsy (I know I'm very very late) on my laptop. The installation went fine but when I connected an external monitor with a higher resolution than my laptop has, gdm and GNOME were not able to detect this, and instead displayed the picture in the upper left corner of the screen.

This was especially funny with GNOME, because the desktop actually used the full resolution, and I could move windows over the whole screen. Only the panels were stuck in the middle of the screen.

Apparently I'm not the only one with this problem, so let me tell you what I found out and how to fix this.

Everything was fine with Ubuntu Feisty. When I connected an external monitor, the laptop screen switched off and the higher resolution was used. But now when I connect an external monitor, the laptop screen doesn't switch off automatically.

Because the laptop screen is still on, the system now has two screens and GNOME will automatically adapt to the screen with the lower resolution.

The moment I manually switched off the laptop screen with the tool xrandr

$ xrandr --output LVDS --off

the GNOME panels jumped to their correct position. So let's investigate this xrandr a bit more.

xrandr is a powerful tool for managing multiple video outputs, rotating the screen, and setting up multihead displays.

You can get a list of what the graphics driver thinks it has connected by invoking

$ xrandr -q

This will give you something like this:

Screen 0: minimum 320 x 200, current 1680 x 1050, maximum 1680 x 1200
VGA-0 connected 1680x1050+0+0 (normal left inverted right) 433mm x 271mm
1680x1050 60.0*+ 60.0
1280x1024 75.0 59.9
1440x900 75.0 59.9
1280x960 59.9
1152x864 74.8
1280x720 59.9
1024x768 75.1 60.0
800x600 75.0 60.3
640x480 75.0 60.0
720x400 70.1
LVDS connected (normal left inverted right)
1024x768 60.0 + 60.0
800x600 60.3
640x480 59.9
S-video disconnected (normal left inverted right)

The interesting entries are LVDS (the laptop screen) and VGA-0 (the external monitor). Both are connected. VGA-0 might be called VGA or similar on your system, as this name is driver-dependent.

If I wanted to check if an external monitor was connected, I'd just run

$ xrandr -q | grep "^VGA.* connected"

VGA-0 connected 1280x1024+0+0 (normal left inverted right) 338mm x 270mm

I want the system to switch off the laptop screen whenever an external monitor is connected, so that GNOME will use the higher resolution. This easily can be done by adding the following lines to /etc/gdm/Init/Default just before the

exit 0


xrandr -q | grep "^VGA.* connected" >/dev/null
if [ $RC = 0 ]; then
xrandr --output LVDS --off

It will also make gdm use the full resolution.

Syndicated 2008-03-26 09:14:00 (Updated 2008-03-26 09:21:24) from Martin Grimme

"Native" PAN support for maemo

maemo in a PAN
The waiting is finally over. There is now support for phone-tethering via the PAN Bluetooth profile, which is so popular on Windows Mobile smartphones.

By "native" I mean that it's quite well built into the system and does not appear as a separate application. And you no longer need a command line or root access for making PAN connections.

After you have installed the maemo-pan add-on (sorry, only OS 2008 supported so far), you can get online with just a few simple steps:
  • Go to the system preferences and add your phone in the phone settings. Do not enter the wizard for configuring the dialup settings. PAN does not use them.

  • Start internet sharing on your phone. It depends on your phone how and where to do this. On Windows Mobile 5, open the Start menu and select "internet connection sharing" from there.

  • Make sure that Bluetooth is enabled on your internet tablet. Now open the connection dialog and you will see that there is a new connection called "Bluetooth-PAN". Select it and you will be connected to the internet via PAN.

  • When you're finished, just close the connection the usual way. Wasn't this easy? :)

Thanks go to aleksandyr for figuring out stuff and to Frantisek Dufka for writing the initial PAN connection shell script for OS 2008. Without you guys maemo-pan wouldn't have happened!

Syndicated 2008-02-26 21:56:00 (Updated 2008-02-26 22:08:09) from Martin Grimme

26 Feb 2008 (updated 11 Dec 2008 at 06:08 UTC) »

No, MediaBox Media Center is NOT developed by Nokia

Somebody at maemo.org must have thought MediaBox was a Nokia application while tagging some pages. The MediaBox entry on maemo.org/downloads is tagged with "Application developed by NOKIA". This is plain wrong!

No, I am not working for Nokia, and MediaBox Media Center is not related to Nokia in any way.

Syndicated 2008-02-26 21:11:00 (Updated 2008-12-11 05:06:13) from Martin Grimme

MediaBox once again - 0.94.2 this time

Maybe I was too quick releasing MediaBox 0.94.1 yesterday. The config reader bug which could cause hanging during startup was only partially fixed in 0.94.1. So here's release 0.94.2 with even more bug fixes hitting the maemo download servers.

Syndicated 2008-02-21 20:03:00 (Updated 2008-02-21 20:09:56) from Martin Grimme

MediaBox 0.94.1 fixing a few things

I have just released Version 0.94.1 of the MediaBox Media Center. This is a bugfix release and will help you if you experienced MediaBox 0.94 hanging on startup.

The new version also adds support for non-UTF-8 character encodings in ID3 tags, such as ISO-8859-1 and UTF-16.

Thanks to all users who reported bugs and made suggestions!

Syndicated 2008-02-20 20:15:00 (Updated 2008-02-20 20:18:08) from Martin Grimme

MediaBox 0.94 - the New Enhancements and a Big Thank You!

Thank you all for reporting bugs and giving new suggestions for MediaBox Media Center! You help me a lot making this the best and friendliest media center for the tablets! Keep on reporting; you decide what's important!

MediaBox Track Info

So here is release 0.94 with a lot of small improvements.

The media scanner will now cache already loaded thumbnails so it will be quicker after you add or remove a media folder. You can also specify for each folder which kind of media you have in there. Thus you will be able to avoid getting all your album cover art listed in the image viewer, for example.

Configuring the media collection

If you've always wanted to play the FM radio through the loudspeakers, you can do so now. MediaBox can finally switch from headphones to loudspeakers when the headphones are plugged in as FM radio antenna. The FM radio is only available on the N800, though.

The button on the Nokia headset is now also supported and you can press it to pause and resume playback.

I have also added a tag parser for FLAC tags and fixed some flaws regarding FLAC playback. FLAC is a free and lossless audio codec for high quality audio.

MediaBox is now powered by player backends for mplayer and the native osso-media-server. By selecting between two backends, more media formats can be played back. This especially adds support for real media and real internet radio streams (.ram), as well as MP4 and 3GP videos.

The new MediaBox release is available from the website as well as through the application manager in the Maemo extras catalogue. The package installs on OS 2006 (video playback not yet supported on the 770), OS 2007, and OS 2008.

Syndicated 2008-02-11 19:50:00 (Updated 2008-02-11 19:58:55) from Martin Grimme

73 older entries...

New Advogato Features

New HTML Parser: The long-awaited libxml2 based HTML parser code is live. It needs further work but already handles most markup better than the original parser.

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!