Saturday, April 3, 2010

Playing around with Maemo

Since Nokia acquired Trolltech we all knew that something awesome would come out of it. The days of Symbian and other slow and unstable mobile operating systems are coming to an end.
The best showcase of the Maemo operating system is the Nokia N900. Shiiiiiiny.
Now every time a good phone comes out people can't help compare it to the so called iPhone.
I deeply despise that device, and don't get me started on it because you'll get a post which you won't have the time to read.
I really think that we shouldn't trade our freedoms for sparkling, dumbed down interfaces under the banner of usability.

I have often been praised for the Keep Things Simple and Clean approach I took when designing the interface of qOrganizer, now I don't believe it's the best I could come up with, but even my 55 year old father can use it and that must mean something.

So back to Maemo, as you can see , despite having a touch screen, the N900 has a real keyboard which is something I can respect after being frustrated by writing sms-es on a touch screen (even with vibration and noise as feedback, it's just not the same).

I don't know enough about Android to compare Maemo to it, but my friend has an Android phone and it's pretty cool.

I went ahead and installed the Maemo SDK. This is fairly easy on Debian, you can find some instructions here. The Maemo SDK was brought to my attention in an e-mail by a user who suggested that I should port qOrganizer to it, so I went ahead and installed Qt in Scratchbox and tried to compile qOrganizer but some classes are missing(like QSystray and Printing related classes).
The Maemo operating system is simply a debian based linux, installed from scratch.
The package manager is fully integrated in the phone and it handles debian packages, which you can install from the shiny App manager interface of the phone or from the Scratchbox command line using apt-get, like on any Debian based system.

It can run any Qt application, and it has a great interface for them called Hildon.
Here you can see my classic BMI calculator (it's like a hello world for me) running in the SDK (with no modification to the code at all).

So Maemo has the full awesomeness of Debian package management combined with the best tools used to write Desktop Linux applications on the embedded mobile platform. It already has many free applications and it's basically community maintained and open source (take that Apple!). Freedom and ease of use. Now we only have to wait for the price to drop.

On a related note I have been thinking about participating in Google Summer of Code and I checked the idea list of the Maemo project and I've found this:

Advanced To-do list Creating an advanced To-do list, with the ability to attach files, including audio recording, messages, emails, etc., linking multiple tasks and updating the priority of a task based on the time left maemo SDK, Qt

The current To-do lists in most Nokia mobiles are disappointing. These added functionalities could make one's phone their own 24 hr assistant

It's listed under easy, but hey I'm in my first year, and that doesn't mean that I can't expand on the idea and make it powerful and easy to use. I think this would suit me well and I'll be working on my idea description this week. We'll see how it goes.

Wish me luck!

PS: Happy Easter y'all!

University Experiences

For those of you who have just tuned in: I am currently a student in the second semester of the first year at the English section of Computer Science at Babeş-Bolyai University in Cluj Napoca.
I have found the second semester a lot more interesting than the first, we currently learn Object Oriented Programming (in C++) and programming under Unix (fork(),exec() that stuff), pretty basic stuff, but essential.
I had the illusion that I would have time for development in my free time this semester. Boy was I wrong. Although we learn basic stuff, there is always a lot of work to do. I have laboratory projects that have to be properly documented (some documentations reach 20 pages) every week. That basically keeps me pretty busy, but as an extra feature my timetable is pretty intense and keeps sleep deprivation at a constant level. But other than that, I like it and it keeps me interested, I only wish I had more time for my own ideas. I have detailed in my last post some ideas I would like to implement in qOrganizer, but it needs serious work. I recently turned 20 and I'm not the 10th grader who wrote that application in 2006 without having any real ideas about good coding practices and software design decisions anymore, so I guess waiting for some technologies to mature and make it into Qt doesn't hurt (I'm looking at you MySQL embedded).
Anyway, qOrganizer is usable in it's current form and I can always work on smaller projects just for the fun of it.

Qt is great, and it's not a secret that I'm a great fan of it, but sometimes it makes the most basic things like capturing right clicks in a QCalendarWidget unnecessarily difficult.
Read this to get and idea what I'm talking about.