Una mezcla heterogénea de tecnología y desvaríos


Butaca: on hold indefinitely

A year and a half ago I published some pictures with the new changes that I was preparing in Butaca, hopefully "to be released soon". Unfortunately, there were some stability issues that I never had the time to investigate and fix properly, so all the new features have been sitting in GitHub for some time already.

As time went on, I had less and less time and motivation to do MeeGo development, and eventually I just assumed that only the brave people having Butaca built from upstream would benefit from the latest changes. This year, back in May, I received an email from The Movie Database announcing that the 2.1 API (the one used in Butaca) was reaching its End Of Life in 15th September, a bit less than a month from now.

I always thought I would just sit during a weekend, fix these stability changes and replace the API, but the truth is that after I moved to the UK, the kind of "relaxed weekend" needed for that doesn't seem to come too often. In short, I don't plan to update Butaca before this deadline, so it will stop working.

So what are your chances as an user? You can use Pop Flix: since they use Rotten Tomatoes, they shouldn't have any issues with deprecated APIs. Regarding your favourite movies and artists, they are saved in a very simple Sqlite database, so you can manually retrieve the values from there. Of course, since it is Open Source, you can go to the repository, fork it and do the changes yourself.

I really enjoyed developing Butaca. Although it didn't get to be extremely popular, it achieved more than 10000 downloads, and a really nice 5-star average of 74 reviews. Thanks to everyone who used it and enjoyed it, and specially to those who sent me an email with feedback... and even patches!


Announcing the Gallery Tilt Shift plugin for the Nokia N9

A couple of weeks ago, we at Igalia got a number of plugins published in the Nokia Store: Enlarge & Shrink, Gallery Tilt Shift plugin, and Facerecognition Reset Plugin. We had them ready for some time already, but still it was very difficult to pass the Nokia Store Quality Assurance: there is a list of valid directories where a Debian package can install its files, and they had missed the ones for Gallery plugins. So, in order to finally get over that problem, my friend and colleague Andrés had to "fight" with the Store QA people quite a bit: don't forget to thank him for this!

Although I developed only the Tilt Shift one, I will briefly introduce you the other two as well :-)

The Enlarge & Shrink plugin is an add-on to the built-in Gallery application. You can use it to apply a radial distortion to a picture, so they look like enlarge and shrink effects (also known as punch or pinch).

The Face Recognition Reset plugin also behaves as an add-on, but doesn't work on individual images. Instead, it forces the deletion or un/protection of the facerecognition database, something that you might need if for whatever reason the database gets corrupted.

And finally, the Tilt Shift plugin lets you make a picture look as a miniature, by applying the following transformations:

  1. Blurring the image using a Gaussian Blur filter
  2. Keep an area of the image focused (either vertically or horizontally)
  3. Combine both parts of the image using a Gaussian filter (so the focus is lost gradually from the focused area to the rest of the image)
  4. Increase the saturation, so the colors seems those of a miniature
Saint Isaac's Square - Saint Petersburg, before applying the effect

Saint Isaac's Square - Saint Petersburg, before applying the effect

Saint Isaac's Square - Saint Petersburg, after applying the effect

Saint Isaac's Square - Saint Petersburg, after applying the effect

There is a problem, however. Gallery uses Quill, and Quill was designed to use tiles in order to minimize the memory footprint and work happily in mobile devices. That tiling mechanism finally proved to be less flexible than it should, so for those edit operations where you can't rely only on the local information in the tile... things won't work.

You can still use these plugins for small images. Gallery doesn't do tiling on images of 512x512px or smaller, so that is what is currently supported. Another option is writing a complete new application to get this miniature effect (either using Quill with a different tiling configuration or not using it at all). You can check the full explanation at the GitHub page of the project.

All these plugins are Open Source, so you can go to their page at GitHub: Enlarge & Shrink, Facerecognition Reset, Gallery Tilt Shift

Take a look at all applications published by Igalia at the Nokia Store.

Download from the Nokia Store


Mixing QML and MeeGoTouch

When trying to invoke a MeeGoTouch application's MSheet from a QML app, I was getting the following error:

There is no instance of MDeviceProfile. Please create MComponentData first.

Using MApplication instead of QApplication would solve that, but still a MApplicationWindow would be needed to make the MSheet appear.

After searching on Google for a while (see after the snippet for the sources) and talking to gri in #harmattan, I've come up with the following solution:

#include <MApplication>
#include <MApplicationWindow>
#include <MApplicationPage>
#include <QDeclarativeEngine>
#include <QGraphicsObject>
#include <QDeclarativeComponent>
#include <QDeclarativeContext>

int main(int argc, char *argv[])
    MApplication app(argc, argv);
    QDeclarativeEngine engine;

    // The context is unused in this example
//    QDeclarativeContext *context = engine.rootContext();

    MApplicationWindow window;

    MApplicationPage page;

    QDeclarativeComponent component(&engine, QUrl("qrc:/qml/main.qml"));
    QGraphicsObject *content = qobject_cast<QGraphicsObject*>(component.create());
    MWidget *centralWidget = new MWidget;

    int result = app.exec();

    delete centralWidget;

    return result;

From QML support in Meego touch Framework I learnt that I had to load the QML into a MeeGoTouch widget, so I followed Loading QML components from C++ to replace the loadQmlComponent non-existing method with the QDeclarativeComponent::create approach.

Also, note that I use MApplicationWindow::showFullScreen instead of MApplicationWindow::show and MWidget::setMinimumSize


Butaca is now available in the Ovi Store

After having improved the movie showtimes support and updated the UI so it aligns better with the Swipe UX, this Saturday I submitted Butaca to the Ovi Store. Yesterday (yes, that quickly!) I got a notification that it had been accepted. I'm really satisfied with this release: I use the application myself a lot, and it's great to be able to check which movies are playing on the cinemas and later review their details and the crew's.

Search movie showtimes

Searching movie showtimes

I've uploaded a screencast to Youtube, displaying how the application works, and -as usual- screenshots are available at my Flickr gallery. You can also review the release details at the project page (where you'll be able to file bugs or get support as well).

If you wonder what's to come next, here's some insight:

  • Localization
  • Check for extras after and during the credits (now that I have an API available for that)
  • Offline mode / better data caching
  • Embed trailer playback in the application
  • UI improvements

Download Butaca for free from the Ovi Store!


Butaca, IMDb and TMDb

Right now, probably all of you know IMDb. The Internet Movie Database is "the place" you'd go to look up a movie or check the filmography of an actor, writer or director. Some of you will also be familiar with IMDb Android and iOS applications, which allow you to check out that very same information on your mobile device, providing the means to settle any arguments (who directed The Terminator? And Aliens?). However, IMDb doesn't provide a free API: it provides a big ZIP file that you can download and parse to get that info. Then... -if you don't want to get a commercial license for the API- what are your chances as an Open Source developer willing to get the same functionality?

The open movie database

TMDb was started in the fall of 2008 as a side project in order to help serve high resolution posters and fan art for the popular XBMC project. What started as just a simple single page linked with some zip files has morphed into one of the most active user built movie databases on the entire Internet. is a free and open movie database. It's completely user driven by people like you. TMDb is currently used by millions of people every month and with our powerful API, also used by the world's most popular media centers.

And indeed it is a powerful API. Butaca uses it to provide you with all the movie information you could need :). At this moment, Butaca implements almost all the API exposed by TheMovieDb, so you can search and get information from people and movies and navigate through genres: the only thing you need is an Internet connection. Besides, Butaca allows you to mark the content as favorite so you'd keep it in your home screen as a shortcut.

Welcome view with favorites

Detailed Movie View

Other available feature in Butaca is movie showtimes. Right now, I couldn't find any world-wide open showtimes API: looks like there are some local ones, which could serve in some countries (or areas inside some countries) but most of these APIs need to be licensed. So what's the solution at the moment? When the user wants to check what's on the theaters around him, the browser is open pointing to Google Movies. The browser is used also, if you want to check if there are shows for a particular movie. In the future (unless I find some good API), instead of opening the browser, a WebView will be used.

So if at this point you're still interested, please check out the project. You'll find plenty of screenshots there, and instructions on how to add the OBS repository (deb ./) to your device so you can install Butaca and start using it. And then, start filing bugs :)


Butaca: getting close to the first release

This time, some screenshots before heading to bed.

Browsing by genres

Browsing Sci-Fi

Searching people

You can check out the full set of screenshots at Picasa, the code at Gitorious, and -only for the braves!- a Debian package. Thanks a lot to Tuomas Siipola, who sent me the placeholder icons for persons and movies, and to Felipe Erias, who is guiding me on the UI design.

EDIT: Also uploaded the screenshots to Flickr, with descriptions in each view.

EDIT 2: You can follow these steps to use my OBS repository and keep Butaca updated :)


Butaca in Harmattan

Three weeks ago, the N9 was announced. Little can be added to what's been written: it's a great achievement, but also a bitter one. Still, I really think that great things can be done on this platform, and that's why I applied to the N950 Devkit Program.

My initial idea was to port Maevies from Fremantle to Harmattan, keeping the same architecture. In the week or so that went between the N9 announcement and the filtering of the candidates for the devkit program, I resumed the development on the client side, bringing the ability to save and load favorite movies, as well as other minor UI fixes, and also updated the D-Bus service so that it would compile on HARMATTAN target.

When I knew I was selected for the program, I started using PySide (specifically Harmattan Python) to quickly get a working UI which could connect to the D-Bus service... but it turned out that I didn't need it, thanks to the powerful way to deal with XML models inside QML. Today I've uploaded "Butaca" application to gitorious. Still a draft of what I expect it to be, it lets the user search and browse through movies, and get detailed information about them. I also created an entry at the MeeGo Wiki at User:Spenap/Butaca.

Butaca - Welcome View

Butaca - Search View

Butaca - Results View

Butaca - Detailed Result