California Dreaming

Good morning all!

Maybe there are better things to do than to update your blog, right before you start work.  And looking at my e-mails and my to-do lists make me feel like this will be a long day.  But considering my recent silence I thought an update on me is in order.  Plus if blogging doesn’t get my creative energies flowing… I’m not sure what will.

As I sit at the table of my hotel room, I can not but be amazed.  For a little over a month, I started a new job and showed up at my client’s office.  My client being located in the south San Francisco Bay area.  The first week I felt overwhelmed by the prospect of travelling, working on a serious project for a serious client and living on my own.  While the initial shock wore off, I am still overwhelmed both in the good and bad sense.

A month later I still love the travelling aspect.  Visiting San Francisco and Los Angeles all were worthwhile.  Flying never gets old, but I could do without the insane travel “security” at the airports.  Everyday I still can not believe that I am in California, right smack in the middle of Silicon Valley.  The fact that my client wanted to fly me in from Toronto to Silicon Valley is amazing.  A huge ego boost.  This is me making it in my career.  Sort of like an actor ending up in Hollywood or performer on Broadway.  Plus I get to work on Android development and build a tablet system from the ground up.  All of this overwhelms me in a good way.

Living on my own in a new city, without a car overwhelms me in a bad way.  Living out here, away from the inner-city makes everything so far and inconvenient.  Groceries, getting places, and all that jazz is tricky and time-consuming.  Taxies take too long, and the only real viable option is biking.  Unfortunately I bought a bike that just broke down on me the same day.  Plus since I will not be living here for longer, it doesn’t make sense to plan too long term.  Being away from friends and family also takes its toll.  Originally I assumed I would at least be able to catch up on my long overdue work.  That is partially true, but I still struggle with that.

Still as with anything in life, there are pros and cons.  Overall I’ve learned a lot, and have a greater appreciation of life’s small things.  I do miss Toronto, but I love also living here.  Flying solo does have its advantages.  And I’ve never been able to take the initiative and be more spontaneous like I can now.  I have learned to be truly independent in work and in life.  And I have started to make friends here too.  Now if only the weather here started being more like stereotypical Californian, as in warm and sunny.  Even the Sun has been shy recently.  But other than that–and if the overwhelming amount of catch-up work would just go away–I am happily dreaming big dreams and living it up down here in California.

Innovation in Increments

I have the good fortune of working in a Research & Development group. That means I get to learn about new ideas, experiment with them and apply them appropriately. Unfortunately I can not discuss my current project, other than it involves automating the creation of mobile applications. While I can not say that I am building something that is so deeply innovative that it has no precedence. But then again what most people do not realize that innovation happens mostly in small increments. You take an interesting idea, see if it makes your life easier and better. If not you review your work and options, and you try again. If it works, you get innovation!

So while I can not comment on my own work… 🙁 I can point some interesting work happening in the libre software community.

Canonical’s New Take on Scrollbars

Many of today’s computing innovations like tablets deal not with radical new technologies.  But rather making technology more usable for non-developers and non-engineers.  It might not sound like much, but Canonical is working on improving the usability of scrollbars in their Gnome desktop: http://www.markshuttleworth.com/archives/615

Take a look at the video in Mark Shuttleworth’s post.  I definitely think that abstracting the line indicator and the actual control is a great idea.  It also makes it more touch friendly and intuitive.

MeeGo and Qt Lives for KDE and the N900

While not so much an innovation per se, I am happy to hear that the development of Qt and MeeGo will continue.  The KDE crew came out and pointed out that Qt back when KDE started was a great framework and is even better now.  Back when I started using KDE, I was amazed at how well everything integrated together in look and feel terms.  This was all possible with KDE settling on one good UI framework, Qt.  Now that it is more cross-platform and rounded out, it still is a great compelling framework to learn and use.  There are some governance issues that need to get worked out, but it is nothing that won’t be resolved nicely soon.  I indeed intend on learning Qt, as soon as my own schedule clears up.

[Another analysis on the Nokia/Qt/MeeGo/KDE question.  Man isn’t life in the libre software world messy at times.]

As for MeeGo, sounds like Nokia will be supporting the N900 as an official development device for MeeGo.  So maybe Mr. Elop changed direction, but at least there is a way forward for MeeGo handset developers.  Hopefully that’ll mean that we can get started hacking on MeeGo.  And once more devices come out, all developer efforts can get carried over.  Maybe, just maybe we’ll finally have a good libre software platform for new disruptive devices, that won’t be threatened by the domination of one massive vendor.  I’m looking at you Google, Microsoft and Apple.

MeeGo Nowhere

My previous blog post about MeeGo was completely off-base. So it looks like Nokia decided to go with Windows Phone 7. Personally I don’t see the point, but then again I don’t run a Fortune 500 firm either. Apparently there are still plans for a MeeGo powered handset/mobile computer. Sometime in May, maybe? However it does not bode well for us from the Maemo community.

So what about the dreams of having a real Linux running on handsets, netbooks and all that jazz? Well it looks like WebOS gets that privilege and honour. Maybe others will run with MeeGo, but this all is starting to all look a lot like the OpenMoko or LiMo. In other words, a Linux + GCC + X + Gtk + Qt stack is something that for now will remain in the corner. Something that the free software idealists, early adopters and researchers will run. But otherwise, rather irrelevant to the rest of the world. I’m also worried that closed, locked down garden walled ecosystems will prosper rather than something totally free and flexible. So Stallman’s dystopian future of the Luna colonies looks all the more real, each and every day.

So what about our man, Nokia, jumping off a burning oil platform into the “safety” of the North Sea, as CEO Elop so eloquently quipped? Hope they don’t die of shock. The North Sea is not exactly a safe and nice place to take a pleasant dip into. I wish them the best and hope they don’t end up washed up on the shore of some strange mobile country as a frozen corpse. Because baby, it is cold outside (the mainstream mobile ecosystems).

So where does that leave us? Knowing Qt is still a good idea for other reasons. The Maemo user and developer community should prepare to become self-sufficient because there probably will not be anymore Maemo-like devices out there. As for MeeGo? Come back in May and we’ll see if anyone gives a damn. The most widely adopted, open and flexible mobile OS right now is Android. At least thats how I see things playing out.

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.

Getting Back into the Swing

This post is actually a few minutes into the next day.  But I’m still trying to get into the swing of things.  One of my New Year’s resolutions is to put parts of my life that aren’t on track, back on track.  Of course this is easier said than done.  But like Matthew Kelly–an amazing Catholic inspirational speaker and evangelist–says: “Our life changes when our habits change.”  Changing habits is a long and difficult process, and honestly I’ll be happy if I can get everything in place by the end of THIS year.

In totally unrelated things, I found out that the original Starcraft runs beautifully under Wine.  I’m going to try some of my other Windows games in the future, and see if I can realistic ignore using my Windows partition.

Do Android Devs Dream of Electric Sheep?

I can’t speak for all the other Android developers in the world, but I know that I don’t. But I can’t pass up a good opportunity for a terrible pun at the late Phillip Dick’s expense.

However I am enjoying living in the Android ecosystem both as a developer and as a user. Just right now I am trying out a blogging application for Android. And even without the slide-out keyboard, using the Swype input app and using an unfamiliar app, I feel more at home on the Samsung Galaxy S than on my Nokia N900…

As a developer I really enjoy working with the APIs. And I appreciate using a widely used platform. No it is not a perfect platform. But it is a joy to work with compared to some mobile platforms and much better than plain old Java development. I guess the saying that the Android development is where old Java developers feel young again is true.

Now if only Google keeps on doing and good job, the manufacturers keep on churning out good handsets, and the fine legal team at Oracle lays off then we’ll all be well off.

In the Beginning of November…

A new month begins and a new twist to life. This is the first day at a new office in downtown Toronto. Not that I’ve changed positions, I’m still working as a mobile developer for Web Impact. For my coworkers, this is nothing new since they all worked at the Toronto office before moving out to Mississauga. Unfortunately the Mississauga location did not provide what we needed and so we are moving back for now.

This morning everything is a little different. Figuring out new schedules, new routes and a new location. Should be fun. Other than that I’ll still get to enjoy working on mobile coding, with all its unique challenges.

One challenge I worked on this past while is writing. Not a lot of progress on the novel. But I did manage to submit two short stories for publishing. One to the Fall issue of the Alexandrian, which should come out soon. And one to 365 Tomorrows, which will hopefully get accepted too.

Other than that I still have load of catching up on work. I still feel a bit behind. Anyways, this next stop is mine. Catch you later.

Gliders, Italy and Androids

What an incredible summer and it is funny how it all started.  I found myself without a job at the end of April.  A week or two later I started a crazy schedule of fencing, archery and hiking amongst the usual day-to-days at home.  I even got to try out some serious tree climbing and zip-lining.  And I met new friends at a retreat and a number of parties too.  I even got to hang out with and host Anna and Behnaz, two friends from Montreal for over a week.

At the beginning of July, after months of preparation my brother, Martin went for the Air Cadet’s gliding summer camp.  After over 6 weeks of intensive work, training and practise, my brother can now legally fly a glider by himself.  I am incredibly proud of him and we now have a real pilot in the family.  Wow.

The past month and a half I had the honour and pleasure of hosting one of my very good friends from Italy, Laura.  Laura came to visit us, see Canada and learn English.  We did that and a whole lot of hiking, sightseeing and partying in Toronto, Niagara, Tobermory and Hamilton.  And her English became a lot better too.  I am so thankful that you came Laura and I hope you enjoyed being with us as much as we having you over.  Thanks!

After a full summer, I’ve come full circle.  About three weeks ago, I interviewed and got hired as a mobile developer for Web Impact.  I get to work on building Android mobile applications in a great environment with awesome coworkers.  I have always wanted to get into mobile programming.  But I never imagined that I would be doing what I get to work on.  Unfortunately I can not disclose the details of what I am working on and the technology behind it.  However I can say that the technology and the way we apply it is how I envision the future of mobile, web and desktop computing will look like.

This year has been an amazing ride so far.  And from what I can tell there is even more awesomeness in store.

Beautifying the Boot – GRUB2 & Plymouth Themes in Ubuntu 10.04

I like eyecandy especially when it comes to my Linux workstation.  I was pleasantly surprised when I first booted up my fresh install of Kubuntu 10.04.  However after installing the NVIDIA drivers (Sigh.  NVIDIA when will you learn?  Open sourcing your drivers is not going to kill you.), I lost the pretty Kubuntu splash screen.  After a lot of experimentation and searching the Web for a sane solution, I managed to not only bring back the splash screen but also add a pretty background for GRUB.  Here is how:

1. Install the v86d package

sudo aptitude install v86d

Why exactly a daemon is needed to execute x86 code is beyond me.  But without it GRUB2 and the initialization scripts refuse to show the proper splash screen.  Instead you get the fallback purple Ubuntu text theme.

2. Edit Your Grub Config (/etc/default/grub)

This is a big step.  You need to edit the GRUB2 configuration to add a few modsetting options.  Otherwise things will not work out.  You’ll need to edit the configuration first use your favourite text editor to edit the file.  I use Vi for this example.  If you prefer Kate or gedit to change the “sudo vi” parts to “kdesudo kate” or “gksudo gedit” throughout the manual.

sudo vi /etc/default/grub

You’ll need to change the following lines:

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
GRUB_CMDLINE_LINUX=" splash quiet vga=769"

To something like this:

#GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
#GRUB_CMDLINE_LINUX=" splash quiet vga=769"
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash nomodset
  video=uvesafb:mode_option=1280x1024-24,mtrr=3,scroll=ywrap"

Commenting out those lines prevents the original configuration.  Note that the GRUB_CMDLINE_LINUX_DEFAULT should be one line, I put it on two lines for readability.. Instead we want to manually set the video mode of the framebuffer.  Namely we want to use the uvesafb driver and to run the resolution at 1280×1024 with 24-bits of colour.  If your screen uses a different resolution substitute it in the mode_option option.  [It always good to check what resolutions your graphics card supports, by using the vbeinfo command when running inside of grub.]

mode_option=1280x1024-24

In addition, to you’ll need to change the following line:

GRUB_GFXMODE=640x480

To something like this:

GRUB_GFXMODE=1280x1024
GRUB_GFXPAYLOAD_LINUX=1280x1024x24

The first line sets the correct mode for the graphical console.  The second one keeps the changes when switching over to Plymouth.  If the second line sounds magical, I can just vouch it worked for me.  Other users reported not needing this line or using the “keep” instead of an actual resolution.

3. Edit /etc/initramfs-tools/modules

Next up we need to update what options get included in our initramfs (initial ramdisk that gets loaded up first by Grub and that is used to initialize the entire system at boot).  On the very bottom of the /etc/initramfs-tools/modules file, just add the following new line.  This will make initramfs load up the right splash mode at boot.

uvesafb mode_option=1280x1024-24 mtrr=3 scroll=ywrap

4. Fixing the Splash Delay

This next step fixes the delay that normally happens when Plymouth runs at boot.  Open and edit the /etc/initramfs-tools/conf.d/splash file.  All you need is to add the following line on the bottom of the file:

FRAMEBUFFER=y

5. Updating GRUB2 and Initramfs

Before you can see the changes in actions, you need to update your initram and Grub installs.  First you need to rebuild the initramfs image with:

sudo update-initramfs -uv

Then you need to update your Grub installation with:

sudo update-grub2

And you are done!  Below I also mention how to modify which Plymouth theme gets used, and how to add a nice background image to Grub.

Changing the Plymouth Splash Theme

Before you can change the Plymouth theme, you will need to either install or build your own theme.  I did not bother with building my own but the second link below gives instructions on how to build your own.  Once you have some additional themes, you can switch between them by running:

sudo update-alternatives --config default.plymouth

Follow the on-screen instructions and rebuild your initramfs image as you did above.

Changing Grub’s Background

Just like with the Plymouth themes, you’ll need to install an extra package (e.g. grub2-splashimages) or create your own images.  Next you will need to edit the script that sets up your Grub2 image.  It seems a bit hackish, but at the moment there isn’t a better way to do this.  So open the /etc/grub.d/05_debian_theme file with your favourite text editor.  Look for the following line (should be line 10):

WALLPAPER="/usr/share/images/desktop-base/moreblue-orbit-grub.png"

All you need to do is to change the WALLPAPER value, to the full path of the image you want to use as your background.  The third link below contains some useful guidelines for picking a background image with the correct dimensions and colour value.  I would stick with an image that is 640×480 and 16 bit colours.  Once you finish editing that line, remember to update your Grub2 install just like we did above.

And there you have it – a much nicer looking booting experience.  I’d like to thank the following sources for letting me piece together this guide: