Qt Developer Days 2012, Santa Clara

It was -17°C and snowing when I left from snowy Tampere. About 24h later I was at San Francisco Airport. I did not sleep too much and I was dead tired the whole next day. Unfortunately I still needed to stay sharp for the whole day since there was important stuff to be done. In the official program it was a training day. I had registered to Effective QML -training, but after sitting there for couple of hours I realized it was not really targeted for me since pretty much all the stuff trainer covered I knew already.

We had agreed to give a hands-on demo and interview of Sailfish OS to Engadget in the afternoon so I decided to skip the training and prepare for Engadget and for the Jolla BoF -session in the evening. I think it was the right choice, since the interview and the hands-on went pretty well even though I was dead tired due to jet lag. The article is now available at Engadget.

In the evening we had a Jolla BoF session that we had agreed just couple of days before the conference. I gave demo of the UI and David talked about SDK, Mer, Nemo Mobile, and Sailfish. It was quite nice to give the UI demo, but the best part of the session was the chats with Qt people after the "official" part. People seemed genuinely curious and sympathetic towards what we do at Jolla.

The next day the conference really started.

Qt5 release candidate was obviously the big news from Qt-project and Digia. Qt5 is definitely interesting technology. Since Nokia doesn't anymore control Qt, the cross platform aspect of it is gaining more support again, even on mobile. In Digia's booth they had demos of Qt5 running on iOS, WP, Androrid, and other platforms. Official support for Android and iOS will be coming later in 5.x releases.

RIM had a strong push to motivate developers to code for BlackBerry 10. The platform is interesting and their UI seems quite nice. I think they do have same kind of thinking behind their UI choices as we do, but that is just inevitable when you try to optimize for single handed use or optimal screen estate use.

In the afternoon I attended Open Source Tablets -panel as one of the panelist and had my own presentation in the last patch of sessions. I talked about Jolla Developer Story and gave a short overview of Sailfish architecture. My slides are available here.

One great thing about Qt Developer Days presentations were that almost all had live-coding part that showed what the subject is really about. In my presentation I took an open source Google Reader -client called Grrok and ported it from N9 to Jolla Sailfish OS. Since the original app is QML/JS and utilizes MeeGo QML Components, porting it to use Jolla Components really was quite quick and easy. I haven't yet published sources of my port, but will do as soon as Jolla Components will be publicly available.

Conference diner was fun. I was still a bit jet lagged so I didn't even drink more than two beers, but I sat down with interesting people from various backgrounds and we had really good discussions. I enjoyed the food too.

In the last day I listened to David's presentation about Mer-project and couple of other interesting sessions. From the technical sessions, I found desktop Qt Components session quite impressive. I was also curious about the QtWebkit in Qt5 and it seems so promising. Can't wait for that to get it in Mer.

In the evening I ended up having diner with couple of Digia's Qt guys. Again, nice people and we ended up agreeing that we would go together to drop our luggage to airport in the following day and then go sightseeing in SF.

Sightseeing in San Francisco was great. It's a nice city and it was especially cool to take a cruise at the bay. It was 20°C and sun was shining. Perfect ending for a great trip.



Jolla's Sailfish OS has now made first public appearance at Slush conference. I think this video shows quite nicely what the UI is all about:

It took a lot of hard work and determination to get here. At the moment, I'm tired after working long days and then partying hard at Slush. I'm happy and so darn proud of what we have achieved. I know that there is still a long road ahead and a lot to do, but in a very short time we have already achieved a lot. We were able to show pretty impressive UI.

It's amazing what a small, talented, and motivated team can do with right technologies and tools.


MeeGo Tale

Taskumuro did a pretty cool job in collecting the story of MeeGo. Despite all the chaos, annoyances, and all, I loved working there. I'm happy that I stayed until the end and I'm extremely proud of the N9 product.

After the WP announcement in Feb11, when I still was at Nokia, I felt a bit like I had a deckchair on Titanic and most of the stuff we had been doing was just rearranging the seats while the boat hit iceberg. All that was left to do was to see the boat sinking and save whatever we could. If you read the article, I think you will understand my feelings at the time.

Luckily, a lot of the stuff we did is out there as contributions to various open source projects, and there is Jolla to continue coming out with cool Linux-based devices.


HeliumReborn on Harmattan

HeliumReborn is now the default browser in Nemo Mobile. I haven't done any development on it lately, but people contributing to Nemo have done couple of really nice contributions. The most important one was the addition of pinch-to-zoom functionality. It works quite nicely.

Since some people using N9 with Harmattan might also be interested in trying out HeliumReborn, I grabbed the latest sources from its Github repository, and packaged it for Harmattan. HeliumReborn 1.1.3 debian package is downloadable from here.


Getting started in hacking Nemo Mobile

We had a nice Devaamo Hackday here in Tampere yesterday. Topics were Jolla, Nemo Mobile, and Mer.

CIO of Jolla was present. He gave a short presentation of what the company is about and answered questions from the audience. There was also presentations from Mer and Nemo Mobile contributors (many of them work nowadays at Jolla).

I did a presentation about getting started in development. Here are my slides:

I did not get a lot of feedback on how the presentation went. I guess it was more or less ok. I do think that I could've done a better job, if I had presented with my own computer. However, I'm not having a laptop at the moment, so I had to use somebody else's laptop for presentation. Anyway, I had many interesting discussions with many people after the presentation part of the day was over.

It was a really nice event and I had a good time. Big thanks to Devaamo people for arranging the event and for all the presentators and attendees.


New Job

After my job at Nokia ended, I was originally thinking of doing something different like becoming independent software developer writing for different app stores or perhaps trying to get some kind of a management job in one of the big tech. giants. During the summer I however realized that I'd prefer to work in team with other people and that I would really prefer to stay in Tampere instead of relocating.

When Jolla announced in public that they are recruiting I quickly realized that Jolla offered almost everything I was looking for. It is a cool company, it works with interesting technologies, and builds its own product. They have great team, and the company offers possibility to stay in Tampere. Also, as bonus I already knew many of the cool people already working at Jolla. I made the obvious choice and applied. Luckily, everything went well and I got the job.

Tomorrow will be my first working day at Jolla.


Is there future for feature phones?

A lot of people think that in the future there will be only smart phones. I think that is the main reason Nokia desperately tries to make WP at all costs, despite the fact that they could just concentrate on feature phones that they do so well.

Smart Phones are winning

Cheaper devices get more powerful CPUs all of the time thanks to Moore's Law and thus are able to run more complex apps and operating systems. Cheapest Android devices are already now selling as cheap as some of the Asha phones. The other thing is the assumption of smart phones actually being better than feature phones. Obviously, successful smart phone operating systems offer more features and provide access to app ecosystems. Trends are showing that transition from feature phones to smart phones is happening. Smart phone market is booming and feature market is stable or in slight decline.

Opportunities for feature phones

Despite all of this things, I'm still not so sure about the inevitable decline of feature phones. I've got a feeling that there are a lot of people that just want a phone so that they can call or send text messages. These people are poorly serviced by our current crop of smart phone operating systems. Having all the functionality of smart phone makes the OS more complex and usability of main features is not on par with with feature phones. Also many would prefer a real keypad.

I'd also argue that most people are not really interested in apps as long as the phone includes support for the most important services and has few games. These people have a bit more complex needs than users that just want SMS and calls, but I do think that well made feature phone could also cater for a big part of this crowd as long as service integration and usability are good.

Nokia's S40 has definitely gone to right direction to offer a call, text centric devices with smarter and smarter features. If it is being developed into right direction and core benefits (like simplicity, affordability, durability, battery life) are kept in good shape, there should be a big market for it for a long time.

Maybe there is still room for revolution?

I still think that one could revolutionize the whole low-end market by coming out with completely new phone feature centric UI that is built using modern technologies but still targeted at people that find smart phones too complex and unnecessarily feature packed.


Way forward for Nokia

To me it looks like that nose dive that Nokia has been in is about to end. Latest cost cutting should be enough to cut spending so much that company no longer makes significant loss. However, I do not believe that current strategy can be hugely profitable. Nokia needs to find it's way again.

Nokia Siemens Networks and mobile phones unit do not seem to have any synergy anymore so NSN needs should be either listed or sold to a competitor. This is obvious and likely will happen.

Secondly, while Nokia Maps is a cool app and very useful, developing it and the map asset costs and is a complex operation. Location & Commerce -unit is not really producing a lot of profit. The unit made a solid 41 million euro operating profit (non-IFRS) with 283 million euro revenue in Q2/2012, but I suspect that the "profit" was mostly achieved with internal accounting. When Nokia sells a device with Maps, L&C gets "money". Also, the main competitor, TomTom is not looking good. Last year it made a loss of 434 million euros. Mapping is not a strong growth business and smaller companies like Yelp seem to be the real innovators in mapping based services.

I'd sell the whole unit and would just license the data for the phones from wherever it can be obtained the cheapest. Since map -asset clearly has value, selling the unit should be relatively easy and should help Nokia in this transition period, where running out of cash has seen as a one major threat and even Nokia's credit rating has been downgraded to junk status.

Windows Phone gave Nokia a modern OS and support payments from Microsoft. I'm sure WP8 will be a nice, but I have concerns. Android's openness and popularity practically guarantees that it enjoys way wider hardware support than any other platform can get. I think success of Samsung's Galaxy SIII shows that competing with cutting edge hardware is possible and able to create huge profits. Also, since Microsofts approach has been Qualcomm only, Nokia is in mercy of single chipset producer. Due to the tight device specifications by MS (display resolution, etc.) this makes all the phones using WP pretty same in terms of hardware. From these I conclude that on the highest end devices WP -platform devices will not be competitive for a lot of the time. Android guys and Apple are in better positions to constantly push out devices with cutting edge HW. Android guys will have edge since HW vendors target them first and Apple will survive since it designs its own system-on-chips and thus is able to control all aspects it finds relevant. This is particulary bad since obviously in the high end the margins are best. For example Apple makes 73% of mobile industry profits with just 8.8% unit share.

The other issue I have with MS partnership is the example of PC world. Windows OEMs are not making good profits. Many of the old technology giants, like IBM, have pulled off from Windows PC business or are considering in pulling out like HP. Profit margins are razor thin. There is also a risk of Microsoft coming aggressively out with its own devices like is already happening with Surface -tablet. License for WP is only cheap now and would get a lot more expensive if the platform was success.

To combat the WP situation Nokia could either drop WP exclusive deal and adopt Android as additional OS or just focus on feature phones. Developing an own OS or choosing something else is no longer an option. It would just require too much time and money. My solution for short term would be just to focus on feature phones.

So far Nokia has done a really good job in Asha -series. They are selling in high volumes. In Q2/2012 almost 90% of phones Nokia sold are feature phones and compared to year over year Nokia even managed to increase sales of feature phones by 2%. In feature phones Nokia made 98 million Euros of operating profit and the latest cost cuts should improve that significantly. My educated guess is that after the latest cuts are in full effect in 2013 the profit will be between 150-200 million per quarter. In smart devices Nokia made operating loss and number of shipped devices shrunk by 39%. To me it makes more sense to focus now on the feature phone business that is low-margin, but sustainable, instead of making huge bets to high-risk smart phones business, where competition is fierce and Nokia's business is still in rapid decline while making huge losses.

Like everybody knows overall market of smart phones market is growing and feature market is either shrinking or stable at best. However, Nokia has been increasing its share in the feature phones. With its efficient logistics and own manufacturing capability I'm sure that Nokia could remain extremely competitive in feature phones also in future.

For the future, Nokia needs to make its feature phones smarter and nicer to use, while at the same time keeping them affordable. In reality there are a lot of people that do not need a smart phone as such, they just want a bit more service integration, internet capabilities, and nicer user interface than traditional feature phones have offered. This is already happening in Nokia's Asha -series. The devices are connected to the internet services we find most important.

What to do with smart phone unit then? "Sell it!" is my answer. MS probably would want to buy it. A lot of the Nokia Design has to be included in the deal. MS needs to create more desirable HW than it has done so far. Along with Smart Phones, MS may be interested in buying location and commerce.

My feature phone only Nokia would be a lot leaner company. Creating smart phones and services has been a distraction for the company and has required huge R&D resources and a lot of focus from the leadership. People have forgotten that one of the Nokia's biggest competitive edges has always been in logistics and operational efficiency. In practice these have meant that Nokia is almost only company that has been able to make profits in the cheapest phone segments. Ashas have already somewhat revitalized the feature phone business after what seemed like few years of neglect.

These would be only the first steps. After the company is clearly profitable, a new growth strategy is needed.


Couple of words about RIM

RIM is in a lot of trouble. The situation is a bit similar than Nokia had. Their own old OS is not competitive anymore against iOS and Android, and their own new OS is not ready yet. The new modern OS will utilize Qt heavily and will be hopefully be shipping soon.

Today's Qt announcement (Digia acquires Qt asset and core personal from Nokia) should be good news for RIM in two ways. Firstly the news means that Qt will have a future. Digia has been doing successful business with it already and it has clear motivation to expand the business and improve Qt. Second thing is that now RIM can utilize Digia better. Previously, Digia was mostly involved with non-mobile clients, probably due to contractual reasons with Nokia. After the deal Digia and the brightest trolls it employes can support RIM's efforts of building a Qt based OS a lot more. This could bring a big boost in what the OS can do and how it performs.

Industry Analysts and business people are eager to give advice to RIM's leadership. The most popular suggestions are 1) Start making WP8 devices 2) Start making Android devices and 3) Licence your new OS to others. I think all of those are bad ideas. Major strategy changes are really painful and could only solve the problem in long-run and thus would probably burn all the cash RIM has and thus lead to bankrupt, unless there would be big monetary support from somewhere (for example MS). Nokia's WP choice shows how rocky road that is. Also in the Android camp there only seems to be two players that are profiting: Samsung and Google.

Licensing out the new OS initially sounds like a nice idea. It should expand the ecosystem and help in cash flow as license income should help paying R&D bills. The reason I do not like this approach either is because of two major downsides.

The first one is that licensees will very likely cannibalize the most lucrative part of the market. When Apple started licensing Mac OS, licensees focused most of their efforts on high end where Apple had its highest profit margins. So instead of expanding market, the licensees mostly just ate away Apple's profits. It's likely that this would happen also to RIM.

Second issue is that when you license a mobile OS to an OEM, the contracts are very complicated. Since mobile operating systems are much more tightly bound to device hardware than traditional computer operating system, the operating system vendor and device manufacturer will have a quite intimate relationship. This would not be a problem for a pure operating system vendor, but it is a problem when vendor like RIM that develops its own devices and then licenses the OS out to others. The problem comes from licensees requiring similar kind of treatment as the internal device development teams.

In practice, one solution is to establish firewall between the OS development team and device development teams or separate the OS development to separate company. The problem is that this leads to bloated organization and makes communication a lot harder. Nokia's S60 licensing business was one example of this. Having the licensees meant that Nokia had to have quite complex organization in building S60 and S60 based devices. This led to a lot of inefficiencies. Since RIM is already behind in features and desirability of its major competitors, becoming a more complex organization is unacceptable. The need to reduce complexity in their operation, not increase it.

If I led RIM, I would just continue on the current path. I would definitely try to avoid major reorgs or strategy changes. Those are the quickest ways to doom. Instead, I'd focus on operational excellence and R&D efficiency. I'd prefer to keep R&D teams small, smart, agile and hungry, instead of big bloated armies of outsourced and offsite engineers as seen in so many corporations nowadays.


New Release of VeskuMaps

I just released of VeskuMaps 0.3.0. Main new features are Street View -support, Traffic -support, and use of Google Places API. Debian package is available at the project page.

I also made a YouTube video to demonstrate the new features:

VeskuMaps now has pretty much all the features I wanted it to have, so I'm not going to do much new development for it now. I'll probably port VeskuMaps to Jolla when they will have SDK available for third parties. And when Nemo Mobile starts to support GPS, I'll then package VeskuMaps for Nemo. However, in the immediate future, I'm going to concentrate on other things for now.


Thoughts on Jolla

Firstly, I'm not in anyway involved with Jolla Mobile. I know some of the people there and I've been hearing about it for a while now. There are seriously talented people involved and I'm sure that they will be able to push real stuff out. I'm really looking forward to see what these people are able to produce.

Based on the information Jolla has published, they are going to continue the work started in MeeGo and are going to utilize Mer -core as basis for their operating system and Qt/QML as UI toolkit. They are also contributing back to the Mer -project. This is an excellent starting point. I think we demonstrated in the Nemo Mobile, that even with a relatively small team you can develop modern phone software using these technologies and existing open source components.

For Jolla it will be vital that they will concentrate their limited resources correctly. The main part of this must be the user interface, since all the other building blocks needed (ofono, bluez, gstreamer, pulseaudio, connman, etc.) were already pretty well stabilized in MeeGo and are now available in either Mer- or in Nemo Mobile and thus can be quite easily utilized in Jolla. I would build the new user interface with QML and I would utilize some of the existing Qt Components implementations as components. One option would be to use Qt Components from Harmattan. Those already exist in Nemo Mobile and can provide quite easy compatibility with QML based Harmattan apps.

Jolla has already gotten quite a lot of press coverage. This is obviously good. There are a lot of people that really want alternatives to currently successful platforms. There is a downside though. Many people are having unrealistically high expectations. People seem to expect that the actual product would be having all the features N9 has with much better HW and then all the annoying bugs fixed and missing features added. I do not think that will happen. I'd expect to see more focused product at first. A product with good HW, great user experience, but fairly limited set of built-in features (for example I would not expect to see MMS in first release). And in time there would be SW updates to bring more features to the platform.

Other problem with high visibility is that people are already talking about Jolla as challenger to iOS, Android, and others. In reality smartphone market is huge and there should be plenty of niches where an agile company can make a good profitable business without having a big global market share. If the expectation level is too high, people would easily deem Jolla as a failure, even if Jolla would find a niche for itself. This may make raising the needed capital investments difficult later on when Jolla would be ready to grow out of the niche.

Ecosystem is a big deal for global mass market mobile operating systems, because the devices need to be able to connect to all the popular services. Easiest way to do that is to allow the service providers to write apps to access the services. Pretty much all the major mobile operating systems integrate to all the most popular services. iOS with its huge developer ecosystem has a big advantage since it is the platform that startups target first.

Initially, there can't be a big ecosystem of software providers around Jolla. However, I do not think this is too bad problem as long as Jolla targets correct market and is able to provide solutions to integrate to the services that are the most relevant in that particular market.

The N900 and the N9 showed a bit different way of integrating to various services on the cloud. Both included a pluggable interface that allows seamless UI integration of 3rd party services for sharing, chat, and contacts. Both included implementations of various popular services (Facebook, Google, Twitter, etc.) out of the box and developers provided plugins that supported additional services. By utilizing similar approach Jolla should be able to integrate the most popular services, and they need to obviously extend the support to any services that are popular on the market they select.

This is not enough to satisfy all, but should be enough for a lot of people. For example on my N9 I only frequently use 3rd party Google Reader -app in addition to the services that come with device. If Jolla comes out with decent support of services and provides interface for community to integrate new ones, like N9 does, that should be enough to satisfy a lot of customers.

One of the most positive thing about Jolla is that it will raise awareness that you do not need to be a huge corporation to build consumer products. Things like Mer -core and QML really make it easier even for small companies to build interesting, connected products with cool user interfaces. Good example of QML's power on low-end hardware is presentation Andrew Baldwin held on Devaamo 2012 -summit.

I really wish all the best for Jolla. While it is not yet clear if Jolla will be success, I do think that it is showing us the future. There will be small companies utilizing open source technologies and ways of working to build cool stuff.


Job Hunting

I visited Berlin for job interview for a Product Manager position for a very interesting product about a month ago. I had interview with the head of the department, the team lead, senior product manager and with HR.

The head of the department was mostly interested on my views on how the development should ideally be organized for example what are my views on utilizing subcontracting or what to do when the amount of work from incoming requirements exceeds the capacity of the team. The interview with the head was mostly ok, not good, but not bad either.

As the role had a strong "hands-on" element as part of the job, the team lead wanted to cover my technical expertise. I have to admit that I wasn't really on my best form. He asked me about few technical problems and how would I go about on solving those. He also showed me a crash he had encountered and asked me to take a look and tell what was happening. Unfortunately, I had no idea what was wrong. The debugger showed a pointer to an object in a container, and when object was accessed the program crashed. In the following day I realized what had probably happened. It was a question of dangling pointer. Somebody had already deleted the object. Such an obvious thing I really should have realized at the interview. I was not happy with how the technical talks with the team lead went, but even though it did not go well I do not think that it was a total disaster either.

With the senior product manager we talked about my experience with similar products, about managing the requirements and my view on what the product should be. I think we got along well and that he appreciated my insights on the vision about the product.

Finally with the HR person we talked about my motivation for the job, my past experience, and practicalities in relocating if I get the job. They told me that they were going to interview another candidate later and that they will tell me afterwards which way they will go.

After the trip, I felt that I was good enough for the job, but it just depended on how good the other candidates were.

Last week I heard the result. I did not get the job. The reason they said was that hiring was put on hold. If they get new positions later they may come talking to me again. Even though this did not end the way I wanted I feel quite positive about the whole experience. It was nice to visit the site in Berlin and to meet the people. Based on the interview the position was pretty close to what I thought it was.

Next I'm going to continue my job hunt. I'm looking for positions where I feel that I can contribute in deciding what the products are and/or organizing how they are being made.


Minor update to VeskuMaps

I just released VeskuMaps 0.2.0. It's available as debian-package here.

There is one cool new feature, which was actually really simple to implement. VeskuMaps now uses magnetometer to detect the orientation of the device and shows it on the map. First I was thinking of adding traditional compass to the bottom corner of map view, but then I realized that most of the time people are actually not that interested where the north is, instead they want to understand that which way they are facing. This they should be able to see now quite easily. In the map view north is still always up, and in the bottom left corner there is miniature N9 rotated to show what orientation the device is pointing.

Another new feature is that now it is possible to get back to map view from details-page of a location by clicking the minimap in the details-page. Main map is centered to the selected location and the map marker is opened.

In addition I added loading indicator to show when the app loads initial map and an error message to show when connecting to Google's server failed.



Preview release of VeskuMaps

My hobby project, a simple Google Maps -client, called VeskuMaps is ready for its first public release.

VeskuMaps 0.1 Features:

  • Show map
  • Pan map
  • Pinch-to-zoom map
  • Show current location on Map
  • Find near by service
  • Show list of search results
  • Show details of search result
  • Show service on Nokia Maps
  • Open service contact card for dialing/saving
  • Open service details on browser
  • disable GPS while on background

    The app is for Nokia N9 and N950. I'm calling it 0.1 release. Most important stuff is there, but the functionality is quite minimal. There are few bugs and usability issues I already know of and there is plenty of improvements I'd like to make. Since the basic functionality is there, the app should be useful in some situations. That is why I decided to make the app now public.

    The app is not meant to replace the built in Nokia Maps as most of the time the built in app is great. The main point of the app is that it starts quickly and you are able to search local services with it easily. Once you find what you are looking for you can easily up the details in browser, make a call, or if you want to navigate to the place, you can open Nokia Maps for directions.

    Download the debian package for N9 from here.

    Currently my plan is to polish the app and push the next version to Nokia Store. This might take few months though. In the meanwhile, I hope you find the app useful.

  • 2012-02-11

    Next Steps

    It was a year ago when Nokia's Windows Phone strategy was announced. I remember being very curious about the new strategy. I didn't feel that MeeGo was under any threat, since just few days earlier Elop had said that he thinks that N9 is great. My guess at that point was that Nokia would take Windows Phone to make products for operators in USA since that was the market where Nokia had most troubles with customers and operators.

    I took the news pretty hard, I was very passionate about what we were doing. I had been working on Harmattan from its beginning and I was always confident that when it was finished it would be great OS. Developing Harmattan had been rocky ride with a lot big changes both in UI and technologies used. In february it was finally starting to look like we were on the final stretch. I was totally convinced that finally we had all the pieces (OS, HW, design) needed for challenging iPhone. My confidence on the OS made hearing the bad news even worse. I was not the only one who took the news pretty bad. That night there were plenty of drunk Nokia engineers in bars around Tampere. There was a lot of very committed and passionate people working on the N9.

    The great "Unfollow"-ad for N9 pretty well describes my feeling about N9 now.

    I've been now working on the open source MeeGo (MeeGo Community Edition first, and now Nemo Mobile) for almost a year. Unfortunately, after this month my current position ends, and I will have couple of months to look for new job within Nokia. I've been actively following internal job market, and HR has proposed few jobs for me, but unfortunately most interesting opportunities so far have not been in Tampere or the role's offered have not been what I'd want to do. Relocating further up north in Finland is not an option, since I hate winter already here. I do not think I want to relocate to capital area either unless I get a nice salary increase, and knowing Nokia HR I do not see getting one so likely. I've been eyeing on few positions abroad, but so far I have not yet found the perfect match. It is starting to look that I will not find interesting enough opportunity anymore in Nokia and I'll just take the resignation package and do something else.

    I would be sad to leave, the company has been good to me. I've worked with brilliant, fun, and interesting people in interesting projects at Nokia. If I'll leave I will wish the people remaining all the best.

    One of the options I've been pondering is to found a one man company that would develop mobile software to be sold at app stores. With the resignation package, my savings and if I could get funding from the company through the bridge program I would have quite good nest egg. According to my calculations I could comfortably live with the money for 1-2 years even if the apps I develop would not bring any income. The problem here is that I do not have any good ideas of apps to develop and I'd really prefer to develop my own apps instead of doing contract work.

    I'm also looking for good opportunities in big technology corporations. I could relocate to an European city like London, Berlin, or München for an interesting enough opportunity. So far I have not yet applied to anything, but I've seen few interesting job postings in London. However the positions were not detailed enough to know how interesting those positions really are. Too bad that nowadays mobile operating systems seem to be developed in the other side of the pond. I'd really love to develop iOS, Android, or Web OS.

    I've talked with couple of different startups that my former colleagues are founding. There are couple of really interesting ones even in Tampere. Some of these have been very tempting, but so far I haven't said yes to anything.

    I'm quite excited about taking next step in my career. I've been pondering my options almost too much, because I want to really be sure that I know what I want to do. I want to make sure that I'm stepping forward. I really want do something meaningful and I want it to be challenging. I want to find the next thing I will be passionate about.


    Work-in-progress: VeskuMaps

    I've been working on a simple Google Maps -client for N9 as a hobby project on my spare time. At the moment I'm calling it VeskuMaps, but I'm going to figure out better name hopefully soon.

    I originally got interested in writing my own Google Maps -client when I started using Nokia N900. Quite quickly I got frustrated on the built in Maps app. It was too slow, had strange UI, and worst of all it often failed to find what I was looking for. My previous phones before N900 had nice simple Google Maps -clients.

    I decided to write a simple Google Maps-client optimized for searching services. In my work I had gotten familiar with Qt and QtWebkit, so it wasn't a big effort to write a simple client using them. After I got basic functionality working, my role in work changed a bit and I got a lot more busy. I did not have enough time or motivation to really polish what I had done and publish it. In anycase, it already worked for my occasional needs. The screenshot shows what it was about.

    Nokia Maps in N9 is a lot better than the maps app N900 had. It's not quick to start, but otherwise I'm pretty happy with it, and I use it a lot. Still, sometimes I want to use Google Maps for finding services, since their database of services and points of interest covers couple of places that Nokia's doesn't. This is why I took my old N900 app's code and decided to port it to Harmattan.

    I did a first version before QML was chosen as the main UI framework, so I did it using MeeGo Touch Framework. I basically threw away all the QWidget code and replaced it with MTF. Not a big effort and worked quite nicely too. It was far from complete though and I had to use Scratchbox for development since QtSDK support for Harmattan was nowhere to be seen at that time. History repeated itself and again I got more busy at work so my motivation to work on the app on my spare time disappeared.

    Lately I've been working more and more with QML apps, like Helium-browser. I enjoyed working on making QtComponents version of Helium. This was because QtSDK finally supports QtComponents in Qt Simulator. This makes development really quick and easy. Last weekend I remembered my old Maps-client and picked up the MTF-based sources and started to port it to QtComponents.

    I threw away all the C++ code and just kept HTML/JavaScript/CSS and started adding QML around it. In the application HTML and JavaScript is used for accessing Google's APIs and for the map content. QML defines the user interface around the map content and provides the location information. Only C++ is only used for loading the QML and for setting configuration options for the WebView. After couple of long days and few evenings I'm starting to be quite happy about the result. There is plenty of things still to polish and few features I'd like to implement, but I think already now the app is usable. Probably after this weekend I'll make the .deb for N9 available and after some polising I may even publish it in the store. This time it very likely that I'm not going to be busy at work.

    The app also runs on Nemo Mobile, but I have not yet done the packaging since it is not as useful in Nemo, because GPS does not work in Nemo yet.


    A Bugs Life

    In this post I collected the things I did to fix a bug and get it released in Nemo Mobile. While this is not exactly guide on the matter, this might help if you are interested in helping Nemo.

    Every monday morning at 10 o'clock Nemo-project is having a error triage meeting to set priority for new bugs. We do it as open IRC meeting, everybody is welcome, like the project does all of its meetings. One of the bugs we discussed yesterday was bug 56: "VKB overlaps with terminal content in landscape". Originally we thought it might be issue in the virtual keyboard code and therefore we decided to file bug to upstream (maliit) bugzilla. This I agreed to do. I marked the bug status as assigned and myself as assignee.

    I had taken a look at terminal code already earlier and knew that it had some strange looking code related to virtual keyboard handling. I decided to take one more look at the terminal, before filing the bug. Quickly I saw where where problem likely was. Terminal checked if the screen area of virtual keyboard started from edge of device for detecting if screen was in landscape orientation. Since in N950 the virtual keyboard does not fill the whole width of the device in landscape, its screen area does not start from edge and therefore terminal does not understand that it is in landscape. That is why it miscalculates the available size for the content.

    I decided to test if using MInputMethodState::instance()->activeWindowOrientationAngle() to check orintation would fix the bug.

    I pulled terminal sources from its gitorious repository and created a local branch for my fix. Since terminal does not have dependencies to internal APIs I was pretty sure that I could just compile it using QtSDK for Harmattan and test the resulting binary on Nemo. This turned out to be true. I opened the the project with Qt Creator and added Harmattan as the only target. I added my fix and did a build. As result I got a binary, which I copied to my device with scp. Binary worked fine on my N950 with Nemo. The bug was gone.

    Since the fix worked I decided to submit my fix to Nemo. First I commited the change to my local git bug fixing branch. Then I created a patch file that included the fix with git format-patch. I logged into community OBS Web UI and searched for meego-terminal. From the search results I choce the version of the package that was in project CE:Apps:MTF, since I knew that it is the repository that we use in release.

    I branched the package to add my fix.

    I added the patch file as part of the sources.

    Then I edited .yaml to include the patch. At this point I changed from community OBS's web UI to command line on linux. I checked out my branched package with:
    osc -A https://api.pub.meego.com/ co home:vesku:brances:CE:Apps:MTF/meego-terminal

    I changed into the directory that I checked out and for updating .spec file I executed: specify meego-terminal.yaml Finally, I updated .changes file by adding the following on the top:

    * Mon Jan 23 2012 Vesku H <vesku.h@gmail.com> - 0.2.2-1
    - Fixes NEMO#56: VKB overlaps with terminal content in landscape

    Both the header and the fixes line follow a specific syntax so that build system can automatically parse them and make certain checks and do some automated tasks.

    I was now ready to check in my changes and see if package builds and works. I checked in my changes to OBS with: osc ci -m "Fix for Nemo#56"

    I went back to web ui and checked my packages build status. OBS built it quite quickly. From repositories I had to change publish flag true for all architectures. To grab the generated .rpm I clicked: CE_MW_MTF_armv7hl -> Go to download repository -> armv7hl from there I copied url to the generated rpm. Then I logged into my device and pulled the rpm with wget and installed it with rpm -U meego-terminal*.rpm.

    Since the package worked fine I went back to Web UI and submitted my package. I marked the bug as fixed and added link to the submit request as comment.

    I had to do a minor change to my initial submission based on automated review and another minor change based on comment I got from Nemo maintainer (Sage) at irc before the submission was approved. If you do contributions it is good to hang around at #nemomobile and #mer channels (@freenode) for feedback.

    Finally the submission was approved and fixed package is now at the repository. After approving the submission request Nemo maintainer marked the bug as released in bugzilla and the fixed package will be included in the next weekly build of Nemo.

    As a last step I should contribute my fix back to upstream project (gitorious), so that future versions of terminal would have the fix by default and the patch would no longer be needed.