justCheckers for Android is On the Move

I’m pleased to announce that I have gotten back to developing justCheckers.  I missed coding on my own projects.  And I am glad that I motivated myself to get back on it.  This time around I went the Android route, since the Android framework makes development of multimedia, threaded applications really easy in Java.  And it gets around the nasty distribution problems involved with desktop applications.

I also decided against working with a team this time around.  I came to this decision after realizing how much more productive I am coding by myself.  And how much solo coding I do at my day job.  Also I spent more time organizing teams and tasks then actually getting them done.  So I quietly disbanded the potential dev teams and closed down the mailing list.  At least for now.  I might look to building a team after I scale up.

At the moment I finished building a decent looking first draft user interface.  Now I am trying to hook the UI to the existing game engine/controller.  Once that works, I’ll get back to fixing the game engine to make it generic enough to handle the different rules for the different variants of checkers.  Hopefully I’ll be able to release something soon.

Nokia and Qt, I Choose You!

Since I commented on this post about MeeGo here, I really should explain.

I went to a Wavefront/Nokia seminar about Nokia’s Qt and Ovi store on Friday.  Partially out of curiosity, partially to network and partially to perhaps win a brand new spanking N8.  Not that I want to hand in my N900, but I like new kit.  And as a research & development mobile developer it is my responsibility to learn about the whole of the mobile ecosystem.

First of all I want to say is that I am amazed by the pains that Nokia goes through to maintain being a market leader.  Not to sound like a PR person for Nokia, but the number of countries and languages that Ovi is available is astounding.  And for anyone wanting to integrate their app purchases with a carrier’s billing system Ovi is the only way to go.  Why?  The Google Market integrates with 2 carriers.  Nokia’s Ovi Store integrates with 99 carriers.  So while Apple iOS and Google Android do a remarkable job, they don’t scale like Ovi does.

Another thing that Nokia does well is compete in various markets against various vendors at the same time.  In the superphone market it is up against Apple, Samsung, HTC, Motorola, Microsoft, Google, etc.  In the business space against RIM’s BlackBerry.  And it wipes the floor in the feature phone market.  Yes, the superphone market is proving difficult for them.  Hopefully MeeGo will change all that.

Qt is amazing, and Nokia is pushing Qt hard.  Very, very hard.  This is awesome news for the KDE community.  And it also provides a glimmer of hope for developers who would love to learn one framework very, very well and use everywhere.  Java failed, and if Android (which ONLY works on smartphones or smartphone-like handsets) is the best we can do then we have failed.  This is coming from someone who earns his bread and butter as an Android developer.  I love working in Android, even with all of its quirks and oddities.  But Qt… thats a whole new level, especially if the market accepts MeeGo.

So know there is a bunch of speculation about Nokia CEO Stephen Elop dropping a platform and merging with something Microsoft.  And everyone is speculating Symbian, Symbian^3 or MeeGo.  Symbian is not going away.  And I don’t think MeeGo will go for three reasons: it took years to get MeeGo to where it is.  Second is that already most of the up and coming in-vehicle interface systems will run MeeGo.  And third is this interesting tidbit:

Audience: So when is the next Qt training session for Toronto?

Nokia Rep: There is one in March for Montreal.  There will be one in Vancouver in April.  And there will be a whole new set of sessions including Toronto, around MeeGo devices.

That and other comments at the seminars point to MeeGo device appearing sometime before May.  So what about this mysterious announcement?  Well everyone seems to have forgotten that Nokia has a gaming platform: NGage.  Yes, that NGage.  The one that is not doing so well.  So how will they compete in the mobile gaming space with the iPhone/iPad and Sony’s next PSP that is Android based?  How about bringing Microsoft’s XBox to mobile devices?  Hmm…

Discuss!

As a sidenote, I’m planning to learn Qt while working on my current work project.  I can’t wait.

The MeeGo Comeths

A few weeks ago, Nokia and Intel announced a merger of the Maemo and Moblin projects. The resulting platform shocked the world. OK, it only shocked the communities (the third amigo) involved. Yours truly wanted to blog about it badly weeks ago. But I apparently never got the knack of timing and priorities just right. So please forgive my late entry into the fray, and accept this out-of-sync piece of journalism.

Sidenotes for the Technically Curious

I will touch on a few things that uninitiated might find confusing.  Without getting into the nitty-gritty technical details there are a few things some readers should know.  A stack or platform refers to a collection of software that works together to perform some larger task.  In the context of this article, a stack includes the operating system, libraries for supporting applications and system programs that provide services for user applications.  User applications being any program a user would use and identify on a device.  UI refers to the user interface for a program, namely all the buttons, sliders and widgets a user can interact with.  Packages refer to installable applications in the Linux world. A library is just a bit of code shared by different applications.

Aside from that glossary, please keep in mind that due to physical constraints small mobile devices will always be underpowered compared to full-scale computers.  There is just so much processor power and memory that can be crammed into a small handheld device before the device will use so much power that it will drain a conventional battery in minutes.  Batteries can only hold so much power without being physically bigger and heavier.  Thats why it is essential for anyone programming something like a cellphone to write code that is fast, efficient and doesn’t use too much memory.  On that note, programmers have the option of writing native or interpreted applications.  Native applications essentially instruct a device using machine code.  Interpreted applications need to first run on a special interpreter program that transform the code into machine code.  For that reason alone, the same code/algorithm running on native application will always be faster than an interpreted application.

The Birth of MeeGo

The MeeGo project comes from two very different but equally important platforms: Maemo and Moblin.  Intel created Moblin as a Linux stack optimized for netbooks.  Nokia created Maemo as a Linux stack optimized for pocket computers/handheld Internet tablets.  Aside from using Linux, a conventional GCC and Gtk technologies,  the Moblin and Maemo platforms are radically different.  Moblin targets Intel Atom (x86) powered netbooks.  Maemo runs on ARM powered mobile devices.  Moblin uses RPM package management.  Maemo stems from Debian and uses DEBs.  The UI is radically different for both platforms.  Moblin exists as a developer preview and doesn’t ship on any production run of netbooks (as far as I am aware).  Maemo runs on Nokia’s N700, N800, N810 Internet tablets and the N900 smartphone.  Oddly enough Nokia still considers Maemo a “developer” platform.  Or rather considered it a developing platform, up until the announcement of MeeGo.  Now Maemo is effectively a dead platform.

The Reaction

Quite naturally both the Maemo and Moblin communities were shocked at the announcement.  Considering how MeeGo is structured, the Moblin community just reacted with a surprised “Oh, thats nice.”.  The Maemo crowd didn’t take the news as well.  No wonder considering that many early adopters and developer paid a lot for the expensive must-have toy, the N900.  Mine own cost around 550 USD, but came out to over 600 USD after taxes, parcel forwarding to Canada (damn you CRTC, Bell , and Rogers for having a bizarre GSM network) and customs.  Many people were looking forward to a bright future with Maemo6.  Instead lots felt that Nokia pulled the rug from underneath their feet.  Needless to say a lot of dust and fuss got kicked up.

We Go into the Future

As soon as the announcement came out, the Nokians found themselves with a farther despondent and worried Maemo community.  The Maemo community felt that their expensive toys would  eventually become expensive paperweights.  However Nokia announced that the new MeeGo platform will work on Maemo devices, especially the N900.  No promises that MeeGo will get optimized to work smoothly on N900s, but a working platform is better than no platform.  So with the community calmed down but cautious, what are the next steps for the MeeGo project?  Well most of the Maemo community web resources are transitioning to MeeGo.  Maemo developers and packagers will need to learn how to build RPMs instead of DEBs for MeeGo.  The MeeGo folks chose to go with Moblin developer tools, simply because the tools are far more mature than Maemo’s.  Fortunately the majority of the Maemo community applications are open source, so in theory simply recompiling and repackaging the applications is all that is required to get Maemo apps running in MeeGo.  Also the MeeGo platform will use the Qt library heavily.  Since Qt is one of the most cross-platform toolkits/libraries out there, developers will benefit from learning a single library that will run on nearly ALL operating systems.

As a Non-Maemo/Non-Moblin User Why Should I Care?

Now most people who use netbooks or smartphones do not use either Maemo or Moblin.  No surprise since both platforms are currently targeted toward developers and early adopters.  Most netbook users use either Windows 7 or a Linux variant.  While most smartphone users use Symbian, Windows Mobile, Apple’s iPhone OS or Android.  Heck even Palm’s WebOS supports more devices than what MeeGo will support from the get-go.  So why should anyone care?  Well in the netbook category, Linux at least is consider a serious alternative to the Windows monopoly.  However the user experience on most Linux netbooks ranks from “decent” to “ho-hum”.  The Moblin (now MeeGo) project worked heavily on making the user experience on netbooks a lot,  a lot nicer.  I would even dare say, a sexy user experience.

On the smartphone side, iPhone is the game in town for good user experience.  Windows Mobile and Symbian are good but still lag behind.  Open sourcing Symbian hopefully will rejuvenate that platform.  Real competition comes in the form of Android (Google Java stack mixed with a rather unorthodox Linux setup) and WebOS.  However WebOS is counting on pure web (HTML & Javascript) applications which are limited in terms of rich user experience.  And Java is yet to be fast on ANY mobile platform.  Building on top of a full Java-Linux stack like Android does, will always be a performance hit.

This is were MeeGo can shine, by providing native Qt applications with rich user experiences.  Nokia and Intel want to work with other device manufacturers to build MeeGo powered solutions.  Solutions such as advanced in-car entertainment systems.  By building on a single platform, there will a lot less repeated work on building the necessary underlying platform.  Instead everyone can focus on building interesting new user experiences, and applications that link with systems in new, unimagined ways.  Of course, only time will tell if any of these blue sky dreams will become reality.  A MeeGo release for currently existing hardware such as netbooks or N900s, will be a definite step in the right direction.

Desktop versus Mobile Computing

Despite my best attempts to avoid the desktop, I can’t seem to completely avoid it.  Not that I can’t in practice.  Rather the desktop proves to be mindbogglingly useful as a productivity platform.  For one, typing with a full ten fingers really gets things done.  Second, screen real estate is cheap and allows for vast expanses for a UI to cover.  I can not understate the joys of working on a widescreen with a large resolution.  The only greater joy is working on multiple HUGE widescreen monitors with massive resolutions.  At work, I envy the graphics folk who get the large screens.  Coding and graphics works becomes a joy.  Third, the desktop or notebook out-competes in terms of sheer computing power.  Thats one aspect that I fear will always plague mobile computing platforms.

The last advantage is *gasp* openness.  Thanks to open source and open standards, I can freely arrange my desktop computing experience as I see fit.  Yes, there is always room for improvement but mostly it comes to avoiding some icky technical limitations.  And most of that is thanks to legacy code.  Ugh.  On the mobile, well… I tried to connect two apps together: a web browser and an office suite.  Fail.  Most likely a Symbian faux pas.

I have great hope that platforms like Android and Maemo along with more powerful and robust smartphones, will make mobile computing be as comfortable as desktop computing.  But for now, hold on to that desktop… you’ll still need it at least as a harness for your mobile gadgets.