Monday, May 3, 2010

Introduction to Android



Now that the accepted GSoC projects were announced, I was informed that my proposal was not accepted.

The Maemo project got 87 proposals this year. Here you can find the list of accepted projects:



I asked my potential mentor (he commented on my proposal) about the reason my proposal was refused.

Valério Valério to me
show details Apr 26 (8 days ago)
Hello,
- Hide quoted text -


Bela Balazs wrote:
Hello.

I am sorry to waste your time. But I would like to ask why my GSoC proposal (http://socghop.appspot.com/document/show/user/balazsbela/maemotodo) was rejected.
I just want to know so that I can improve in the future. Please be very honest with me, I won't take it personally. I just want to know the reasons.
I understand that you got a lot a proposals and the places are very limited.
Just a few comments would satisfy my curiosity. What do you recommend for my next gsoc proposal.

Your proposal ranked 1/8 among the to-do application proposals, the simple reason was that we did not picked that project, otherwise your application would be chosen. I can't tell you what is in the private reviews, but is very positive.
From my side I can't point anything and would like to have you as student, due to your OSS background, but we can't pick all the projects :(.

Best regards,

Valério

Thank you very much.


So yeah, that's that. So many ideas in the idea list and only 10 projects get accepted.
I wish them good luck and may Maemo become competitive as soon as possible.
In the mean time I will spend my summer with learning new technologies.
One of these new technologies is Google's shiny new operating system: Android.

So I went ahead, installed the sdk, set up Eclipse and I've dived into Android development.
I wrote my own traditional Hello world type applications, the BMI Calculator.

Here are the images:

The message and the android image is changed according to the result, when Calculate is pressed.
I really like the development environment and the APIs seem cool. The designer is very limited though and I spent too much time searching trough the properties to get a design I'm satisfied with.

I hope they start supporting Qt soon, that would be awesome (since it would work on Maemo and other Qt supported platforms too). Still I don't know if this will be happening any time soon.
I miss signals and slots.

I'll continue to study Android development and if I get the hang of it, maybe I'll implement my GSoC proposal for the Android platform and publish it in the market.


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.


Monday, December 21, 2009

A small update

Now that I have gained entry into my desired University, and I have found that it's just as time-consuming like the last year of high school. Anyway, the second semester seems easier and maybe then I will have the time and energy to concentrate on my projects and plans. I have many ideas regarding qOrganizer, but first of all I need to rewrite the whole codebase, because the current design lacks the flexibility needed to implement these features. If all goes well the new qOrganizer will provide a full API for an extension system to third party developers (anyone interested in writing a plugin for qOrganizer). I hope I can turn it into a platform, since ideas are many and developers are few (err one).
Anyway, a small thing that I could work on is the MySQL feature of qOrganizer under windows.
It has been brought to my attention that Qt for windows has no prebuilt MySQL plugin.
The truth is I've never noticed this, since it worked under linux (on which I do most of my development work), and SQLite worked under windows I just assumed it works by default.
Soon I learned this is not the case, so I went ahead and compiled my own QMySQL driver (after recompiling qt with mysql support and various tricks to compile qmysql with mingw). This was not an easy task and I hope that the developers from Nokia will find a way to make it just work in the future releases of Qt. But the point is that now it works.
If you need to use qOrganizer with mysql, go ahead and download the mysql enabled version.

Merry Christmas to everyone and a happy new year!

Wednesday, December 10, 2008

Net in KDE4 works finally

After a total recompile of Qt4, KDE4 apps can finally access the internet.
Too bad the weather plasmoid can't find my city :))

Monday, December 8, 2008

KDE4 got a lot better

After I installed Debian, I wanted a KDE4 desktop, just to play with it.
My first option would have been installing the kde 4.1.3 packages from the experimental repository. This would remove my kde3, which I wanted to avoid.
My other option would have been to use this tutorial to make a chroot environment in which I could install these packages without removing kde3.
I did this, it worked, but chroots aren't notorious about their comfort, besides KDE 4.2 beta was out. So I decided that I'll build the current SVN snapshot.
I followed this techbase article. But, you can use kdesvn. My friend, DjDarkman, has written a nice tutorial for Intrepid, although this one is good too.

After resolving many dependencies, getting optional packages, checking out from svn, stuff like that, I was ready to compile a subset of my choice of kde4 modules. Again, I have to give credit to Debian, most of the dependencies can be easily installed from apt and if you need something very new (like the last version of cmake), you can install it from the experimental repository.

After a few hours of compiling KDE4 was ready to use, it still needed some configuring and fine tuning though. Now it's up and running as my default desktop environment.
My desktop:

Dolphin is looking nice too:

As you can see, the look and feel of the desktop is very nice and professional, a bit mac like, but still original.
Mostly everything runs fast and smooth. The desktop effects are light years faster than compiz. They are very subtle, they don't attract my attention, but I'm sure I'd miss them if I would turn them off.
Amarok 2 looks very promising too.

I have some problems with kopete kde4, but it's better than the last time I tried it. It's too buggy for me. I did report some of those bugs. So ,for the time being, I'm using kopete kde3. I installed a nice kde4 like theme for kde3, so the apps blend in. Also, there is a nice theme for firefox. The gtk-qt engine takes care of gtk apps. So the desktop is pretty much uniform.

My biggest problem is that kde4 apps except kopete kde4, can't access the net.
I can ping google.com from konsole kde4, but amarok can't retrieve lyrics, the weather plasmoid can't get data from it's servers, gethotnewstuff can't access it's serverlist and krusader kde4 can't connect to my favorite ftp servers.
I tried asking everywhere on irc and it seems that only I have this problem.
I tried recompiling kdebase with the networkmanager backend, but no results.
I simply don't have net in kde4 apps (except a few of them). Not even in konqueror.
kde-devel@debian:~$ solid-network query status
solid-network(8683)/kdecore (KSycoca) KSycocaPrivate::openDatabase: Trying to open ksycoca from "/var/tmp/kdecache-kde-devel/ksycoca4"
solid-network(8683)/Solid (NetworkManager) NMNetworkManagerPrivate::fillNetworkInterfacesList: Got device list
solid-network(8683)/Solid (NetworkManager) NMNetworkManagerPrivate::fillNetworkInterfacesList: adding: "/org/freedesktop/NetworkManager/Devices/eth0"
solid-network(8683) Solid::Control::ManagerBasePrivate::loadBackend: Backend loaded: "NetworkManager"
solid-network(8683)/Solid (NetworkManager) NMNetworkManager::isNetworkingEnabled:
solid-network(8683)/Solid (NetworkManager) NMNetworkManager::isNetworkingEnabled: got state: 3
networking: is enabled
solid-network(8683)/Solid (NetworkManager) NMNetworkManager::isNetworkingEnabled:

As I saw in many cases, the net should work regardless of the network management backend in solid, so I guess that's not the problem.
I'm sure that I set kde to connect directly, without proxies.
I use pppoe, and the internet works in every non kde app, in konsole kde4 and in kopete kde4, so I have no idea what causes this problem.
Anyway, I'm sure it will be fixed till the release. But if anyone has any idea please leave me comments.

Yesterday, I decided that it's time I tried writing software with the KDE api.
So I headed to the kde techbase programming tutorials. After doing a few variations of the Hello World! application, I decided to write the application that I write every time I learn a new language/toolkit/api, the BMI calculator application. I used Qt-designer for the ui. I quickly familiarized myself with cmake and the guys from freenode #kde-devel helped me when I got stuck.
So here it is, along with the other BMI calculators, the KBMICalc application:

Top-left : Qt, top-right: Java (Eclipse RCP, SWT) , bottom-left: Java (Swing), bottom-right: KDE.


It is pretty nice for a first app, the KDE api is a great complement of the Qt toolkit.
The last year of high school is pretty rough on me, so I doubt I'll have time for any serious kde app. Also I would like to see how KDE4 works on Windows, it will be a very nice cross platform development framework.
So in conclusion, my faith in KDE4 is restored, I'm excited again about this project and I can't wait till January for a truly stable and functional release, aimed at the masses.


P.S. : Tomorrow I'll have an exam to obtain the Cambridge University Certificate in Advanced English (CAE), so wish me luck :).



Sunday, November 23, 2008

Shifting to Debian

Well, it has been a long time and no post. So I reckon it's time for an update.
Since I need a stable and usable system, I wasn't willing to upgrade to Kubuntu Intrepid. I heard a lot about Debian from friends and I knew that it's a great distribution, so I thought I'd give it a try.
I went to the site and downloaded the latest torrent for the testing DVD.
The installer was very friendly; I chose the expert gui mode.




It was simple and straightforward, it even allowed me to choose what modules to load. As an example, I could load a pppoe module to set up my networking.
It simply asked me if I wanted to install non-free software, I answered yes and it installed all the codecs and drivers I needed. No questions asked. No need to google forums to find out which packages to install to get my mp3 working.
It automatically detected my video card, installed the open source radeon driver and set up the optimal video mode. I was impressed.
It installed Gnome by default, but I downloaded the kde packages with one command from the Romanian Debian mirrors. In 4 minutes I had kde. Great.

I disabled the services I don't need and now it boots really fast.
KDE works better. I can see everyone's avatars in kopete (I couldn't under kubuntu), and even amarok works great (even with crossfading).
I was really happy with it.

I enabled the unstable (sid) repositories and installed qOrganizer with one command. Yes, there is a qOrganizer package in the Debian repository, and now Ubuntu has one too.

This is what my desktop looks like:



After I configured my system, I went on and compiled kde4 by hand from the SVN repositories. It wasn't hard and SVN is a lot better than the release.
But it's still not good enough for me (I'm too picky).

So, in conclusion, Debian rulz! :)