Sails Ahoy!

Three months ago, I wrote a post about my relationship with mobile devices and how it changed over the years, with the intention that it would give context to any reviews I might write or opinions I might share, related to mobile technology, and computing in general. While I haven't followed it up with any other posts, perhaps I can point to it now, to explain that I've been a fan of Nokia's products over the years, especially their Linux offerings.

In the beginning of this year, I was exploring Windows Phone development and when I set out to purchase a device to develop on, I chose Lumia 800 over the 710, inspite of its poor value-for-money equation, simply because it looked like the Nokia N9, a device that I verily wished I had. I enjoyed the Windows Phone experience and the Lumia 800 became my primary device.

On July 7th, I found myself staring in excitement, at a story coming out of Finland - "Jolla promises MeeGo will live on, plans new smartphone to reward the faithful". While I did have thoughts about acquiring an N9 sitting at the back of my head, perhaps I would not have turned those into action if not for this news. The announcement rekindled my interest and renewed my passion for a platform that allowed me to do things that I enjoyed. I gave away my Lumia, and one week later, I became an owner of its inspiration, the Nokia N9. Ever since, I've been closely following the story, eager to learn and experience the next installment of what started out as Maemo.

The one thing I am saying about the UI is that we want to get away from the open and closed application type of UI. We want to fully take the multitasking and using the device and the UI itself for the function of information rather than just going into applications and closing. So we want to change the paradigm there.
— Jussi Hurmola

My admiration for Jussi Hurmola has grown with each interview that I've read of his. Not because of the above quote, which has more to do with technical aspects of the user experience of Sailfish OS, the platform being developed by Jolla, but generally because of his perception of the industry and how he has represented Jolla, as the CEO (which he isn't any more, in order to focus on the development of Sailfish). 

Coming back to the quote, I like where this is going. After using the Nokia N900 as my primary device for a couple of years, having all my communications in a single place, and integrated with contacts, is something I missed dearly on devices running Android, Windows Phone 7 and Nokia Belle. MeeGo Harmattan on the Nokia N9 added to this "integrated" experience of Maemo 5 with notifications and feeds.

Considering that majority of the people working on Jolla's Sailfish OS are the same folks who brought us the Nokia N9 and Harmattan, and a tweet from Sotiris Makrygiannis (who was the "Director of Applications, MeeGo" at Nokia and was involved with the development of both the N900 and the N9) extending support to Jolla in the form of a framework developed by his company CBTec, it will be interesting to see how pluggable this new descendant of Maemo will be and where they will take this "integrated" experience next.

And see we will, today, for the wait is finally over and Sailfish OS will be revealed to the world at Slush 2012. You can watch the live feed on LiveStream. Onwards sails!

For the love of Go

Learning new language is pretty easy. You learn the semantics, you pick up the data types and then the control structures. You probably get used to key words in a minute and learn to write decent code with it using a decent IDE which will help you through the process.

I have worked with many languages - Starting with Pascal, picking up C, later Java, J2EE, ColdFusion, PHP, Python, and Ruby. I have always been intrigued with some non-mainstream languages which people talk about - Lisp, Clojure, Haskell, Erlang, Scala & Go.

I have been reading and keeping track of how Moore's law isn't working the way it's supposed to work. Meaning, the computing power is still doubling every 18 months, but not vertically but laterally. The clock speeds have been stalling between 2.5Ghz - 3.5Ghz but we have been witnessing a lot of multi-cores on a chip. Dual core and quad core are becoming the norm.

But all that power, we still don't have enough software that is taking advantage of it. It took us a long time to transition from 32-bit computing systems to 64-bit computers. Even still the browser I use to write this post is 32 bit on a 64 bit OS. Similarly, in the IP world - we are struggling to cross over to IPv6. But the truth of it is - we will eventually. Similarly in the multi-core universe, we will soon be creating software which can take advantage of that.

To do that we need a language that can do so. Here comes the pain. With C, you can use concurrent libraries and write concurrent code. But it's not part of the language. It was never meant to. There has been a strong response from Functional part of the programming world to cater to this need - so we see - Erlang, Haskell, Scala & Clojure.

I learned Erlang back in 2008 - the syntax is tough, but with enough iterations you can train yourself. It wasn't easy. It uses the idea of message passing between concurrent processes. Never dwelled in Haskell but heard great things about it. But people also say that it's a tough language to learn. Clojure & Scala are pretty nice too - but I don't like that they are built on top of JVM - I mean, that they depend on this piece of software which is known to all to be very slow. I know, portability and not having to re-write all those libraries which Java already provides is something not to be ignored. But I feel like they both are hitched on a wrong platform which is increasingly controlled by greedy Oracle and it might flip the switch on JVM anytime -like it's being done to MySQL right now.

This brings me to Google Go. So, there has been a 2 things that are trending now. Multi-core chips and ARM spec. The future isn't all about just multiple cores but it's also going to be about cheap ARM chips used in hundreds and thousands. I think Go fits in very nicely to that niche.

Given the syntax is kinda weird. The data type definitions are reversed, hard to get hold of it's weird rules about how it automatically inserts line endings (hint: Javascript) etc. But once you get over the hump, it's all easy.

Go provides the most easy abstraction to concurrency. Goroutines as they call it are simple thread like things run concurrently. Unlike Erlang, Go uses shared (synchronized) memory to make goroutines to talk to each other. There are control structures (Select) built into the language that help you work with the abstraction for Concurrency.

I have had hard time convincing anyone of my friends to work with me on this language. I think because it from Google and seeing what happened with GWT and Dart, people tend to get turned off by it. But I have faith in Rob Pike who works on this project at Google. I believe Go will be one of the few languages that will spear head the transition from single processor based thinking to multi-core architecture.

Surprisingly enough it's a imperative language, unlike Clojure, Haskell & Erlang. It has a lot of documentation and I have seen some big players starting to convert their backends from Python to Go. Ex: Bitly & Canonical.

Go checkout Go and become part of the early adopters who can write code for growing multi-core hardware.

Learning Statistics through R

Statistics has always been very interesting to me. I love to read up on Economy and in general try to keep in touch with what's happening on that side. I come across a lot of stats and think it would be cool if I can not only understand them, but think of them critically and analyze them.

Recently there has been a little change in my career. I am for good have moved to data side of software. Which I am super excited about. So, this time thinking about the amount of data I will be working with and interested in - I would like to take this opportunity to pick up Statistics.

But I have tried to learn Statistics in the past. Once in school (which I did very well in) and then couple of times on my own. But as with any other subject, I lose interest as soon as it gets very theoretical. So, I have been trying to think of how I am doing something different as I am learning Google Go language. Instead of reading up a book and doing the exercises, I am doing the opposite. Thinking of problems, breaking them down into small chunks and then solving them with little Go programs..

So, I am going to apply the same learning concept with Statistics. But I don't think Go has a full fledged Stats package yet. And Python has a couple of them. But I wanted to use some software/scripting language which people in statistics world use. And that predominantly happens to be R.

I am going to learn Statistics and use R to write programs and analyze what I am learning. I will try to find some real life examples as I come across in news etc and try to map them. But the goal mainly would be to learn Statistics through writing programs in R. I will track it's progress here on this blog.

Newton's Square Root Method

Newton's square root method is based on approximation. The more iterations you do, the better approximation you get. The idea is basically this - Say you want to find out the root of 20 (x). You pick a seed number (it could be anything) and then run iterations of the following formula. 

Here is a sample Go program which takes 23 as seed and calculates the square root of number 2 over 10 iterations. You can compare it with the actual Math library's Sqrt() function.

package main

import (
"fmt"
"math"
)

func Sqrt(x float64) float64 {

seed := 23.0
for i:=0; i<10; i++ {
seed = seed - ((seed * seed) - x)/(2 * seed)
}

return seed
}

func main() {
fmt.Println(Sqrt(2))
fmt.Printf("The real math.sqrt value is %f\n", math.Sqrt(2))
}

Gives the output below.

1.414213562373095
The real math.sqrt value is 1.414214

My journey in the cellular world

An infectiously pleasant voice would repeat my message and request for confirmation. So pleasant that I would assume my recognition, musing over the familiarity of her voice and wonder if the same operator answered my call each time. My dad had been using a Motorola pager since the mid-90s, not uncommon at that time, and in 2002, he still had one. Cellular service in India was a privilege, enjoyed only by a small section of the society. It was ridiculously expensive to maintain, with local incoming calls costing more than what international outgoing calls do today.

I've lived through two palindrome years, the first saw the introduction of Linux and the second, also definitely my last, was a turning point for the Indian Telecom industry. Reliance Infocomm officially announced their tariff plans on December 28th, 2002 and suddenly, cellular service became accessible to the common man. My brother was one of the first batches of subscribers to receive the device that was part of their scheme - a basic CDMA mobile phone with a monochrome display, made by LG. It was the first "iPhone-moment" in India, by which I mean you would very likely bump into somebody holding a device that looked exactly like yours. Your neighbour had one. Your best friend had one. Your milkman had one. And so did that autowalah who blasted Kumar Sanu songs from the 90s through the loud speakers of his tuk-tuk.  

Make a phone call cheaper than a postcard and you will usher in a revolutionary transformation in the lives of millions of Indians.
— Dhirubhai Ambani

Nokia 7600 - "The Leaf"

The adroit Nokia 6600

The disruption had been caused and the next few months saw a phenomenal surge in the sales of mobile phones with all the other cellular operators slashing their tariffs, constantly trying to outdo each other. The competition brought variety to the Indian market - mobile phones of different shapes and colours, particularly shapes, some outright crazy like the Nokia 7600. One phone that made an impression on me was my friend, Afzal Ahmed's Nokia 6600. He would check email, browse the web, take pictures, capture video, change TV channels at malls and restaurants, and even set location-aware tasks long before it was cool. I would occasionally find myself on Palm's website drooling at the Treo, but this was right in front of me, it was real and it tickled my inner geek. As tempting as it seemed, I dropped my savings on a digital camera instead. It wasn't until 2005 that I became a mobile phone user, thanks to a gift I received on my 20th birthday - the Samsung SGH-C200. It was more special to me because of where the gift came from, but it was also a pretty good looker for its time - slim, sleek, light and it did what I needed - not that I thought I needed a mobile phone in the first place.

My first  - Samsung SGH-C200

 My first  - Samsung SGH-C200


“Slim, sleek, light and it did what I needed, at a time when I was not keen on carrying a mobile phone.”

Unfortunately, I lost the phone a couple of years later, while in my cricketing whites with loose pockets, riding an auto-rickshaw with two full-sized cricket kit bags, in the middle of a maddening dash to the cricket ground so I could get the equipment to the guys for the pre-match practice session. I don't remember if I made it in time but the C200 had found a new owner and I never saw it again.

My next phone was neither a gift nor a purchase. A Nokia 2300 was lying around at home, unused, after my dad migrated to a more capable phone. I claimed it for myself because a mobile number was convenient for the office folks to get hold of me, given that I was doing my masters then, while also working full time. When I look back at the Nokia 2300, it was perhaps one of the most beautifully designed feature phones with a monochrome display. 

               My second phone - Nokia 2300

“Yes, a simple feature phone can also have a beautiful design.”

Incredibly, I lost this phone in the exact manner as I did my first, just a few weeks later. It was not unfortunate any more, it was plain careless on my part and as a result I had good reason to not consider an expensive phone for my next. And so, the first mobile phone that I purchased with my own money was the cheapest I could find and coincidentally also the toughest - the invincible Nokia 1100 - an extremely rugged phone that I could throw around without care; it had phenomenal battery life and in practice, it was blazing fast. A mobile phone, to me, at that time was a device that I could use to make phone calls and exchange short messages. Nokia 1100 was a practical device that only did the very core tasks of a mobile phone and did them extremely well. Five years later, it still works. If I had to pick one phone for a zombie apocalypse, this would be it, for it even has a torch light.

 
The invincible Nokia 1100

                    The invincible Nokia 1100

“If I had to pick one phone for a zombie apocalypse, this would be it, for it even has a torch light.”

Being a Linux enthusiast, I was looking at the Nokia N810, which I mistook for a phone, initially. It ran the full Linux stack in the form of a Debian-based distribution called Maemo. It was advertised by Nokia as an "internet tablet", just like its predecessors - the N770 and the N800, which did not have cellular radios. None of these devices were available in India and I could not get my hands on any of them, but the reason they get a mention is to put things in perspective with regards to how "enabling" a mobile device could really be even at *that* time.

Not long after that, in November 2007, my manager, Kamal Shah called me into his cabin and handed over a package to me, along with a letter neatly folded into a white envelope. It was a note informing me that I had just received an iPhone as a token of appreciation for my work. My first "smartphone". 

The iPhone was an excellent device - it had a very nice user interface that caused disruption in the market.

The iPhone was an excellent device - it had a very nice user interface that caused disruption in the market. It set new trends, inspiring others to overhaul their UX, and rediscover interface metaphors such as kinetic scrolling. But after a couple of weeks with it, I switched back to my Nokia 1100. Perhaps if it had an integrated instant messaging program, I would be tempted to subscribe to a GPRS plan and use the device for web and communications. Or perhaps not, because it *did* have an instant messaging program, albeit not one that was integrated - the web browser. It had enough capabilities to allow the phone to do more without the need for native applications and there were several web services like Meebo and Beejive that offered a web-based instant messenger optimised for the iPhone. Why did I stop using it then? Perhaps because I had not been a fan of Apple. I disliked their policies for reasons that deserve their own post and I was biased against them. Not that my opinion has changed, and emotions do take over some times, but I stopped pushing my preferences onto others and I respect that different things work for different people.

I had not been a fan of Apple. I disliked their policies and was biased against them.

The iPhone had its limitations and it was not the "full web" experience as was claimed by Apple. I did not get it when Steve Jobs used words such as "desktop-grade" and "multi-tasking". The iPhone was a powerful device for its time, but in terms of pure functionality, the four year old Nokia 6600 could do a heck lot more. An alternative method that did *not* enable me to do more but only came in a very beautiful wrapper was not "desktop-grade" to me. I'm all for beautiful interfaces but does that make it "smart-er" than clunky alternatives with additional functionality? I don't think so. More "usable", yes. "Smarter", no. As for "multi-tasking", it was probably a misleading marketing-friendly term for a "convergence" device. It was misleading because the iPhone could only run one program at a time; playing music in the background wasn't revolutionary. "An iPod. A phone. An internet communicator. An iPod. A phone. An internet communicator. Do you get it?" Convergence. That's what it was and it wasn't new. What was indeed new and very well done was the user experience that was at once, both beautiful and facile.

Are beautiful interfaces smarter than clunky alternatives with additional functionality? I don’t think so. More usable, yes. Smarter, no.

If I was going to use it as a pure phone, I still preferred the Nokia 1100, simply because it was more practical and I never had to be bothered about recharging the device.  Also, T9 typing worked great for me and I had become quite efficient at it, so the full touchscreen keyboard on the iPhone was not an incentive enough to motivate a switch. A hardware keyboard would be a different story however. I attempted to use the iPhone as a media consumption device but it was frustrating to have to convert and re-encode media files which would be hit-and-miss to start with. The battery was not particularly stellar but the same could be said about any other media device. The iPhone eventually found a better home and I continued to use the Nokia 1100.

A Maemo 5 device with cellular capabilities was mentioned in September 2008 but it wasn't until an year later when a teaser was revealed. The Nokia N900.

I was psyched. Linux on a Nokia phone. That was it. That *had* to be my next phone. By then, I had gone back to working as a freelancer, teaming up with Akbar Pasha and taking up new work. It was time for me to graduate to a smartphone for it made sense to be always connected and be available to my clients. Nokia, however, was not treating it like a flagship device and after exchanging emails with Nokia India, it was obvious that they were not planning to launch it here (any time soon). Fortunately, my brother was to visit the US in January 2010, and after a long wait, during which time I would read every article and watch every video related to the device, I finally got my hands on one right after Valentine's in 2010. Perhaps I overdid my enthusiasm and expected too much, but on day one, it still blew me away. A real computer in the palm of your hands. A computer that invited hacking and begged you to push it to its limits; a device that actually belonged to the owner who paid for it.

A computer that invited hacking and begged you to push it to its limits; a device that actually belonged to the owner who paid for it.

I often talk about devices being "enabling", by which I mean they allow you to do something you could not earlier, either because it was too inefficient or it was just not possible. The Nokia N900 is by far the most "enabling" device I have ever used, not just because it was a device you could hack on but also because the company that sold it to you encouraged you to do so - which is one of the reasons I am backing Ouya, but that is another story.

A week later, I found myself amidst a band of fellow-amateur cameramen, in the front row of an auditorium, holding my N900 up, recording a dance performance of my friend at the annual day celebrations of his college, and while I was doing that, I jumped in and out of text conversations, informing one friend about the performance and making dinner plans with another. I received an email from Akbar about a project, after which I connected to a server via SSH to fix something real quick and replied to his email letting him know that the issue was fixed, right after testing it in the web browser. Then I brought the camera application back into focus to wrap-up the video and put it on YouTube to share it with my friends. *That* was "multi-tasking". It let me play different roles, do different things and interact with different people, at the same time. Maemo wasn't the only mobile operating system that had nice multi-tasking, webOS did too, though I'd like to believe that Maemo was more efficient at it while webOS looked a heck lot more beautiful.

The web the way it was meant to be consumed, without compromise.

Another strength of the Nokia N900 was its "desktop-grade" "full-web" experience. Not only could I consume Flash content, which in some cases, was actually very useful, but the combination of a stylus and a feature of the web browser that let me emulate a mouse pointer (jump to 0:56 in the video below) allowed me to consume the web the way it was meant to be consumed, without compromise. Plus, I could also run full Firefox and Chrome.

They say the best camera is the one that is in your hands and while I don't know how well it compared to its competition, I thoroughly enjoyed using the N900 to take pictures.

The best feature of Maemo was something else though - the community - made up of the most amazing people.

The other feature that completed my experience on the N900 was its integrated communications suite. Out of the box, it supported Google Talk, Skype, MSN and Facebook, and I could extend it to support Google Voice, ICQ and pretty much any other protocol with a public API, all seamlessly integrated into Conversations and Voice. The best feature of Maemo was something else though - the community - made up of the most amazing people. 

No matter what you are looking for, there is (an) apt for that.

Being a niche product, its official "app store" lacked the numbers. But it was Debian after all and it was supported by community packages. No matter what you were looking for, there was (an) apt for that.  The community could only do so much though, for unfortunately, messaging services like WhatsApp which had become popular, neither had an official release for Maemo nor an open API that the community could take advantage of. I was just coming out of a long break towards the end of 2011 and I had been thinking about developing applications for mobile phones, so I went out and purchased an Android phone. I had not been a big fan of the green robot, but Android is not something I mind using, especially since Gingerbread. The Nokia N900 is relatively the most disruptive mobile device I have ever used and perhaps it will remain so for a long time - not because other devices were or will not be ground-breaking but because of the impact it had on my life. A mobile device is personal and its impact is a relative experience. I'm sure people have had similar experiences with the original iPhone or their first Android, or perhaps even the Nokia 6600. To each his own.  The N900 will always remain a prized possession and until the Ouya arrives, it will be connected to the TV in my room with a Wiimote tethered to it, allowing me to revisit all the retro classics that I grew up playing on the (Super) Nintendo Entertainment System.

I had not been a big fan of the green robot, but Android is not something I mind using, especially since Gingerbread.
My first Android -Sony Xperia Ray

My first Android - Sony Xperia Ray

After looking at various options, I ordered the Sony Ericsson Xperia Ray. I chose the Xperia Ray over another model with a physical keyboard just for the camera, which used the same sensor that Sony provided to Apple for the iPhone 4S. Overall, it was a nice package and one that I would recommend. I knew very well what to expect from an Android device and there weren't any surprises. The peeps at Sony (Ericsson) have been doing a good job with Android, especially by being open about their plans. I didn't have the phone for very long, not because I disliked it but because I wanted to try something else. In early 2012, I ordered a Nokia Lumia 800 for three reasons :

  1. I wanted to experience Windows Phone 7.
  2. I was porting TriviaBurst to Windows Phone 7.
  3. The Lumia 800 was based on the N9, which in my eyes was the most beautiful phone ever made.
Windows Phone 7 is an operating system that you will instantly love, or hate. For me it was the former, primarily because of how responsive it was.

Windows Phone 7 is an operating system that you will instantly love, or hate. For me it was the former, primarily because of how responsive it was. With typography being the hero, its UI looked stunning on the AMOLED display. I created a few applications for Windows Phone 7 and as part of a Microsoft promotion, I received a free Lumia 710. The thing I like about Nokia's flagship devices is that you get a complete package including offline turn-by-turn navigation in the form of Nokia Maps and free unlimited access to Nokia Music. That adds a lot of value. I used the Lumia 800 as my primary phone for several months and enjoyed it, but one thing that I missed dearly was the integrated communications suite that I experienced on the N900. I didn't want to install a third party app just to be able to chat with my Google contacts. Also, after having used open platforms like Maemo and Android, Windows Phone 7 felt limiting, though not as much as iPhone OS (what iOS was called, back in 2007/08). Fueled by the revelation of Jolla and furthered by a conversation with a cousin, I dropped the Lumia 800 in exchange for a used N9 knowing very well that it was Nokia's "burning platform", but before that, I also picked up a Nokia 808 PureView, which was my first Symbian experience.

Nokia took all the good things about Maemo 5 and put them in a beautiful new package without sacrificing functionality.

Nokia took all the good things about Maemo 5 and put them in a beautiful new package without sacrificing functionality. Today, the N9 is my primary mobile phone and it does everything I need. I do miss a physical keyboard but life isn't as hectic as it used to be, so I can live without one.

I found very little support for my decision to spend Rs.32,500 ($590 USD) on a mobile phone that I intended to use as a camera. Pretty much everybody I knew said I could have purchased an entry-level DSLR for the same price or even dive into Micro Four Thirds. I don't disagree that they are much better cameras, but every once in a while comes a piece of technology that leapfrogs its competition by several years and deserves attention simply because of the marvel under the hood. I believed that the 808 PureView was one such instance. If people can spend just as much on an iPhone 4S or a quad-core Android device that does not necessarily allow them to do anything new that is ground-breaking, then mine is money well spent.

To recap, these are the mobile devices that I've owned. There is a lot of Nokia in the list and I have no qualms in saying that I like what they do. I've owned and liked a Sony Ericsson phone, and at the moment, Sony is my preferred Android handset-maker, though at the same time I would want to own a Galaxy Nexus irrespective of who builds it, just to be able to have a pure Google experience. I would welcome a Samsung Galaxy Note 2 because I think it would goad me to doodle more and that's a good thing. An iPhone will never be my primary device, but that has little to do with the device itself and more to do with my opinion of Apple. That might make me biased against them, but I'd like to believe that I try to be objective when it comes to reviewing devices for other people and I try to keep things in perspective.

  1. Samsung SGH-C200
  2. Nokia 2300
  3. Nokia 1100
  4. Apple iPhone
  5. Nokia N900
  6. Sony Ericsson Xperia Ray
  7. Nokia Lumia 800 / 710
  8. Nokia 808 PureView - current
  9. Nokia N9 - current
  10. HP Pre 3 (coming soon!) (Update : It's arrived!)

Over the years, I've gone from disliking mobile phones to being indifferent towards them, from being a consumer to a power user and now an enthusiast driven by random impulses. The mobile industry is not a three-lane race and I'm glad that there are other players who want to run, even in the absence of applause and cheers. I'm excited about Jolla, about Open webOS, BlackBerry 10 and about Firefox OS. I'm excited about the little guy who wants to take the risk and a leap of faith; the little guy who wants to disrupt the disruption. I'm excited that there is always going to be choice no matter how niche and I'm excited for innovation. I will most certainly purchase a Jolla device when it becomes available later this year, but will that be my next? Probably not.