SeriesFinale for Harmattan (N9/N950)

November 18th, 2011

As promised before, here is the first release of SeriesFinale for MeeGo Harmattan.

This summer Micke Prag, a fellow programmer from Sweden contacted me because he was starting a port of SF for Harmattan. By then I still didn’t have an N950 because of having missed the deadline for the first developers program. Later, when the second developers program was launched I managed to finally get one. At that point, even though I already had my Samsung Galaxy S (yes, with Android) I still wanted to have a port of SeriesFinale as I had received many emails asking for this port so I started from Micke’s code and finally here it is!

The Harmattan port

SF first version for MeeGo

Maybe it is something obvious but this version is not written in PyGTK/PyMaemo. It uses part of the “old” Python backend that was changed to play well with the new UI code written in QML.

This port’s code is a bit dirty by now and I’m sure there are bugs in this first version but at least it can be used and I didn’t want to make people wait much more. The support and feedback that SeriesFinale’s users have given me is amazing (some people even saying they still use the N900 only for SF!), thank you all for it.
My heart is still filled with GNOME/GTK+ love but QML is really impressive; there are some things I still need to spend some time with to figure out but I like how quick and flexible one can do stuff in QML.

The OVI Store

It was also the first time I published something on Nokia’s Ovi Store and the process took around 2 weeks before it finally got approved (it was rejected twice before due to weird stuff like “they” thinking bugs.maemo.org was not a good place to report issues or the fact that an application that says it works only with English US is eligible only for the USA, not for all the countries…).

The future

I really like the N9/N950. The user experience is something awesome and I believe this was the phone that could really compete with the iPhone and Android. Unfortunately someone at Nokia disagrees and the future of this incredible phone is doomed even though Nokia’s alternative is not better. Due to this mainly, I’m not using the N950 as my main phone. This and the fact that my personal time, in which I develop SF, is very limited, means that unless things change, I don’t know how much more releases I will do but I still wanted to add some cool features. It will probably depend again on the feedback and support.

Anyway here it is at an Ovi Store a few taps/swipes away and for free, as always (although I appreciate when someone buys me a beer :) ):

Get SeriesFinale from Ovi Store

A Couple of Weeks in Turkey, Part 1: Istanbul

November 6th, 2011

As it says in a previous post, back in June I got married.
The original plan for the destination of the honeymoon was to go to Japan. Ever since I can remember, I’ve been attracted to Asian culture in general and to Japan in particular. Helena also loved the idea of going to a country with such a different culture so we thought the honeymoon was the perfect opportunity to go there.
We were thinking of buying the plane tickets in the middle of May when a very big tragedy occurred and we changed our plans. I am obviously talking about the Tōhoku earthquake and tsunami and the following events related to the Fukushima Nuclear Power Plant. Our thoughts go to the victims of this sad event and their families.

After that, we wanted a place that was exotic (as in, not very European/Western) but affordable (because we still wanna go to Japan, probably next year). After a little brainstorm with Helena I came up with a good one: Turkey!
Yes, it might probably one of these days enter the E.U. but it is still “differently” attractive.

Off to Istanbul!

The two return trip plane tickets cost as much as one ticket to Japan, around 700 € (with insurance and taxes included). Also, we decided not to go with a travel agency (the Lonely Planet guide is our travel agency :) ). We don’t really like those classic guided tours. Going with everything planned isn’t much of an adventure is it? We even only booked the hotel one week before we departed and for two days only, for the rest, we followed the true Portuguese spirit of: let’s see about it then… :D

As for the bags, given that we would be also visiting outside of Istanbul, we decided to take our InterRail backpacks and just like this last year’s trip, I didn’t take my laptop! Instead I used my faithful N900 smartphone for everything: calls, booking hotels, research about places, twitting…

On June 15, we arrived at the Atatürk International Airport, went straight to the currency exchange and that was the first time we got ripped off… 11% of commission if I remember well. WTF! Here is a little advice, don’t run to the first currency exchange, instead wait and go to one that doesn’t take commission (what these ones do is that they exchange it at a fixed rate that benefits them but it’s not much and certainly not 11%).

The hotel, Naz Wooden House Inn, was cozy and the staff was even nicer (we found Turkish people nice in general). The room was tiny but from what I had read, that’s pretty normal in Istanbul. The hotel was right behind the Blue Mosque (or Sultan Ahmed Mosque) and so we visited the area in the first two days. We hate waiting in queues and there was a big line to enter the Blue Mosque so we were still deciding if we should wait when it started raining like hell. The people in the line dispersed, hurrying to escape the rain and it was a nice opportunity for us to get in a much smaller line. Anyway, it would have been totally worth the wait. The mosque is really big and beautiful:

Inside the Blue Mosque

Being a coffee lover I could finally taste a Turkish coffee after having seen what it was in the TV. If you don’t know what’s it like, the coffee is strong-ish (how strong a coffee is really depends on what you’re used to) and you choose the quantity of sugar in advanced. Despite the fact that I drink my espressos without sugar, I chose “orta şeker” (medium sugar) for the Turkish coffees because they tasted better this way. Another particularity of this coffee, probably the most known one, is that you’ll find that coffee grounds fill about a quarter of the cup. Tradition says that when you finish your coffee, you place the cup upside down on the saucer, let it cool down and when you lift the cup, your future can be read in the coffee grounds left in the cup.

Turkish kahve

Another curious thing that can be found in the streets of Istanbul is the way people treat animals. We saw people giving food and water to stray dogs, cats and even ducks (as the photo below shows) and I assume these weren’t simply leftovers as we saw a restaurant employee cutting meat from the kebab stick and giving it to some cats. I later read somewhere that this is a common thing in there. Really nice!

Looks tasty!

Let the bargaining begin!

We had decided to stay one more night in Istanbul so I asked for an extra night at the hotel but they were fully booked and said they had a room in their “sister hotel” nearby but it would cost me 65 € instead of the 49 € I was paying. I said no, I could only afford the same price and I would look for another hotel, thank you very much. The guy said: “Wait wait, let me explain it to my colleague and see what we can do…”. He called the other guy and then told me: “Okay, you can go to our sister hotel for the same price, 49 €.”! And this was the first time I bargained in Turkey; even without knowing I was bargaining!

The other hotel, Sultan’s Inn, was more luxurious and we got a very nice large room (with a double bed and 2 single ones).
In this hotel we also used the functioning internet to book the flight to our next destination, Izmir (more on that in the next article).

Trip in the Bosphorus

The third day in Istanbul we traveled for the first time the Bosphorus‘s ferries and visited the Asian shore. It’s impressive if you think about it, one river cross for ~30 cents and you’re in a different continent. This part (we arrived at the Kadıköy station) was clearly not made for tourists, with less appealing buildings and lower prices. We just wondered around a bit, took some photos, drank yet another Turkish coffee and had the cheapest lunch in ages: 1 kebap + 1 ayran for 2 TRL, that’s right, 1 €. There was no way it could taste bad after such a good price.

After the cheapest lunch on earth we hurried again for the ferry and visited the island of Burgazada (about 1 hour from Kadıköy). I had heard about this island in an episode of the TV show “Españoles en el Mundo” (it is about Spanish people living abroad). It is a nice small island that has no cars (apart from firemen and police ones) and for this reason one can find roads that are occupied by trees like in the photo below. The island turned out to have less things to see and probably there were other more exciting islands to visit but it was okay.

A tree in the middle of a road

On our way back we had some interesting show in the ferry. People buy some kind of bread at the ferry and feed the seagulls with it by throwing it out while the seagulls flying by catch it in the air! It’s really something worth seeing.

Feeding the Seagulls "On The Fly"

That night, back in Istanbul, we went again to the Marmara Cafe to relax with some coffee and waterpipe for the next day we would fly to Izmir!

to be continued…

SeriesFinale 0.6.9

October 14th, 2011

Yup, after some months, here is a new version of SeriesFinale.

This new version doesn’t have many new features but brings an important one related to my previous blog post: the context menu.
When long-pressing a show or a season, a dialog will be shown with some actions. On the show’s context menu (or context dialog?), the user can update it, delete it, view its info or, more importantly, mark the next episode to watch as watched. On the season’s context menu, it can be deleted or, as many users have requested, mark all episodes.

Here are a couple of screenshots:

SF Context Menus Screenshots

SF Context Menus Screenshots

Of course that by only seeing the screenshots you don’t get the same feeling has when you quickly open the dialog and mark the next episode to watch so give it a try.
It it already in Extras Testing and if it works well for you, please vote for it to get into Extras.

The Future

This summer I bought myself an Android phone. That’s right, because of pure curiosity and with the help of Nokia’s decisions regarding MeeGo, I bought a Samsung Galaxy S.
I’ve been using it ever since as my main phone but I didn’t want to leave SF unattended yet. There are a couple of things more that I want to do and I’ll keep an eye on the download statistics to try to guess how many people is still interested in this app.

I haven’t yet found a full replacement for it on Android. I’ve installed a few apps that either don’t work well, require login or are bloated with features making it harder to use so I don’t know if I’ll end up contributing to some FOSS one or developing an official port of SF. Do you think that developing an official version for Android makes sense?
Also, people have asked me for a Symbian and Blackberry versions of it but I just don’t own any phone with these systems.

As for SF on the N9/N950, a release could be out there soon so stay tuned.

Long press GTK+ TreeView on Maemo

October 13th, 2011

Yesterday was a holiday so I got some time to hack a bit in SeriesFinale.
One of the things I wanted to do was to have a context menu for shows and seasons. Something to apply individual actions like deleting, updating, viewing information, etc when there is a long press on a tree view’s item.

In Maemo the way to do this is to use the TreeView’s tap_and_hold_setup method but the problem is that I hate how this context menu is implemented: I have accidentally deleted stuff because of this menu. Can you think of a less intuitive widget for a touch screen? One that shows below your thumbs, only while you’re touching the screen and triggers some action when you lift it.
Instead, I wanted to show a dialog with the different actions so users could easily know what their doing.
Also, the fact that the API only allows me to use this long-press action to trigger a menu widget doesn’t seem like the best design…

Because of this I decided to implement a TreeView’s subclass that makes it better!
In my opinion, the way to implement this in the TreeView is to treat it like any other functionality: emit a signal when it occurs.

Though it wasn’t difficult, I thought the job would be easier. I had already implemented the “long-press” signal emission but the “row-activated” signal kept being emitted as well. Contrary to what I thought, re-implementing do_row_activated didn’t do it so I had to take a look at the GTK+’s source and though the row_activated method is indeed the one that emits the signal, there is also a “hildon-row-tapped” signal being emitted from the button_release_event. I don’t know if this signal is related or if it is the Python bindings fault but I had to prevent the “row-activated” signal from the mouse_released_event method in a hackish way

Finally, when running the dialog, the application would freeze and not respond after this.
It was related to the emission being done from the timeout callback which, without having the time to look further, smelled like some race condition so I had to wrap the signal emission with the threads_enter/leave.
After this, everything worked well.

Like the “row-activated”, the “long-press” signal gives the tree path and the column that was pressed. It is emitted after pressing for 0.5 seconds and is cancelled if meanwhile the user moves the finger more than 25 pixels. These values are completely arbitrary and have just worked good enough for me. Of course you can easily change them.

And that’s it. I’ve called it EnhancedTreeView and if you want to use it in your Maemo application go ahead and copy/tweak the file (it has less than 60 lines).

The day I married my best friend

October 2nd, 2011

As announced in last year’s Summer, I proposed to Helena and we got married in Portugal, last June.

Planning a wedding almost 900 Km away is not easy so you can imagine the busy first half of the year we had.
Still, it could have been much harder if it wasn’t for our families and for Mr. João Patameira, manager of Boavista Golf Resort, the little paradise where we had the wedding. He knows how to plan a wedding, he was nice and professional and always made us relax, saying everything was gonna be okay and it was. At least to us, it was perfect!

Sight<br />
from the Boavista Golf Resort
(Sight from the Boavista Golf Resort)

This wedding had no religion implied, instead we had a little ceremony with a lady from the government (from the registry office). She gave a little speech apart from reading a bunch of laws but “that’s a recent thing that is mandatory by the government”, she said.
My friend Seco (who takes cool photos of beautiful places) was really nice to propose himself to be the photographer of the wedding and he did a great job! Thank you man!

Of course we couldn’t invite all the people we thought of but we had people coming from Portugal, Spain, Finland, Angola, The Netherlands and The UK!
It was especially nice also to get together again with some of our best friends from the University.

Casamento Joaquim & Helena

In the end of the night, having had already live music and karaoke, we had live performances by some guests and myself.
In what wedding do you have a Cuban and a Mexican singing “Gimme tha power” (by Molotov)? I had it in mine thanks to my dear friends Edu and Victor. As for me, I played “Bad Things” (by Jace Everett) which I can never do completely well normally, let alone when already half-drunk :)

And that was it, I am now married to my best friend and got the best wedding I have ever attended.

I would like to thank our friends (especially those who were so far away but came for us), our families and the restaurant staff and entertainers.
Thank you!

Casamento Joaquim & Helena