Friday, February 28, 2014

Best Introduction to GIT


I attended an interview recently, where my interviewers seemed more interested in what kind of Revision Control system I had used than my actual technical skill set. I think they use CVS internally, and almost all the interview questions was around change management, and conflict resolution during code merges. Now I made it very clear that as a Siebel developer, I had got to use very little revision control systems so far, the most common reason being cost. My clients did not want to invest in a full revision control software, as it would jack up the project cost. Siebel’s own inbuilt one-object-can-be-checked-out-only-by-one-person system worked most of the time, beautifully.

But this got me thinking..revision control is a big problem in huge and specially long software projects. I have been hearing a lot about this new free revision control software called GIT, built by Linus Torvalds himself. When I got some time, I began reading about it online.

After going through many text and video based tutorials about GIT, I finally hit pay-dirt when I saw this video. Simply put, the best introduction to GIT and GITHUB there is.

Check it out. Its your fastest way to get started.

Tuesday, February 25, 2014

Android ICS 4.0.3 cannot connect to Ad hoc Wifi


About a year ago I bought a cheap Chinese made 7 inch android tablet. It runs Android version 4.0.3, otherwise called Ice Cream Sandwich. I bought it only to use it to read e-books, in EPUB and PDF format, but soon I started craving for news feeds. I wanted to use my favourite RSS feed reader (Google Reader, RIP) on the tablet, so I can catch up to tech blogs during my numerous bus and train journeys.

Now this tab did not have a slot for a SIM card, it did have Wifi connectivity. And I had my trusted personal Toshiba Satellite laptop. So I figured, I can easily setup an ad-hoc Wifi connection from the laptop and share internet to the tablet. I soon found out, it was not that easy.

For some reason, Android does not work as expected on Ad hoc Wifi connections, ie, wifi networks setup without a Wifi router/hub. There are issues across different versions of Android, some versions can recognize and show you the Wifi connection name, but does not connect to it. Other (mostly later) versions do not even recognize Adhoc wifi. My version (ICS 4.0.3) was showing me the newly setup Adhoc Wifi name, but refused to connect to it. It was just showing..”connecting..” , “receiving ip address..” and giving up.

Now a quick google search showed me that there were more than one fix for the problem. Some involved upgrading or downgrading the android version. Others advised using a custom ROM, or swapping some system files for hacked versions, after rooting the android device. And there was always the sure shot solution of buying an actual  Wifi router. I tried some options, did not want to root my device so soon, and definitely did not want to buy a Rs 6K router for my Rs 2K/- tablet.

I started playing around with the tablet system, and tried turning some settings on and off. And found a easier way to setup the connection. 

I was setting up an Adhoc wifi using WPA2 security from my laptop. The tab was recognizing the connection but was not connecting to it.

I tried removing the security fully, and setup an unsercured Ad hoc Wifi. BAM ! The tab was able to connect !

Now I live in an apartment, and did not want to expose an unsecured Wifi in the building.

So I changed the security on the Wifi to WEP, that is lower than WPA2. The ICS tablet happily connected to the new connection after prompting me for the password.

So that’s it. If your device is not connecting to the secure Adhoc Wifi , try lowering the security on it. This has worked for me for last one year, I use it to browse the net, read RSS feeds and download apps.


App-pocalypse Now


I'm getting pretty sick of being nagged to install your damn apps.


XKCD helpfully translates:


Yeah, there are smart app banners, which are marginally less annoying, but it's amazing how quickly we went from "Cool! Phone apps that finally don't suck!" to this sad, eye rolling, oh-great-of-course-you-have-an-app-too state of affairs.

"Would you like to install our free app?!?" is the new "It looks like you're writing a letter!"

— Jeff Atwood (@codinghorror) January 9, 2013

Four years, give or take a few months, if you were counting. So what happened?

Millions of pointless apps

Your platform now has a million apps? Amazing! Wonderful! What they don't tell you is that 99% of them are awful junk that nobody would ever want.

Let's start with the basics. How do you know which apps you need? How do you get them installed? How do you keep them updated? How many apps can you reasonably keep track of on a phone? On a tablet? Just the home screen? A few screens? A dozen screens? When you have millions of apps out there, this rapidly becomes less of a "slap a few icons on the page" problem and more of a search problem like the greater web. My son's iPad has more than 10 pages of apps now, we don't even bother with the pretense of scrolling through pages of icons, we just go straight to search every time.


The more apps out there, the more the app stores are clogged with mediocre junk, the more the overall noise level keeps going up, which leads directly to this profligate nagging. Companies keep asking how can we get people to find and install our amazing app instead of the one question they really should have asked.

Why the hell are we building an app in the first place?

I want to know who exactly is going to all the trouble of installing the McDonalds app on their device instead of simply visiting the McDonalds website in the browser as needed. What problem does that app solve forfrench fry enthusiasts that it needs to be permanently installed on your device? Why are they giving away free Big Macs just to get people to install this thing?

Fragmentation into parallel and incompatible app worlds

It was so much easier when iOS was totally dominant and the iPhone was the only player. Before the iPad and tablets. Before Android got decent in 4.0 and Google standardized the Play store. Now there are, at minimum, four radically different mobile platforms that every serious app player has to support:

  1. Android phone
  2. iOS phone
  3. iOS tablet
  4. Android tablet

(For extra credit: how many of these are actually "mobile"?)

Unless you're careful to build equivalent apps in all those places, it's like having multiple parallel Internets. "No, sorry, it's not available on that Internet, only the iOS phone Internet." Or even worse, only on the United States iOS phone Internet.

If you're feeling generous, we should technically include Windows 8 and Windows Phone in here too. All with different screen dimensions, development stacks, UI guidelines, and usage patterns. Oh and by the way, that's assuming no other players emerge as serious contenders in the computing device market. Ever.

At the point where you find yourself praying for a duopoly as one of the better possible outcomes, that's … not a good sign.

Paying for apps became a race to the bottom

Buying an app is the modern Support Your Favorite Small Software Vendor Day. I was always fine with dropping ten or twenty bucks on software I loved. I'm a software engineer by profession; apps are cheaper so I can buy even more of them.

Have you ever noticed that the people complaining about apps that cost $3.99 are the same people dropping five bucks on a cup of fancy coffee without batting an eyelash? Me too, and I'm with the coffee people. $3.99 for your app? Outraaageous!

Now, contrast this with your app, Mr. Developer. I don’t know you from Adam. You’re pitching digital Instant Refresher Juice 1.0 to me in the form of a new app. The return I’m going to get is questionable at best. I already have 30 apps on my phone, some of them very good. Do I need another one? I don’t use the 30 I have. The experience I’m going to get from adding one more app is not trustable. I’m assured of nothing. Last week I bought an app for 99 cents and it was terrible. I used it once, for 15 seconds. I could be shoving $1 straight down the toilet again for all I know. Your app, good sir, is a total gamble. Sure, it’s only a $1 gamble… but it’s a gamble and that fact matters more than any price you might place on it.

For some reason I don't completely understand, mobile app review systems are frequently of questionable value, so all you really have to go on are the screenshots and a bit of text provided by the developer.

Imagine you bought your coffee, only to open the lid and find it was only half full, or that it wasn't coffee at all but lemonade. If only 1 in 5 cups of coffee you bought actually contained coffee, a $3.99 price for that coffee starts to seem unreasonably high. When you buy an app, you don't really know what you're going to get.

Turns out, the precious resource here isn't the money after all. It's your time. In a world of millions of apps, free is the correct and only price for most apps except those rare few of extreme, easily demonstrable value – probably from well known brands of websites you already use daily. So hey, everything is free! Awesome! Right? Well…

When apps are free, you're the product

I know, I know, I'm sick of this trite phrase too. But if the market is emphatically proving that free is the only sustainable model for apps, then this is the new reality we have to acknowledge.


Nothing terrifies me more than an app with no moral conscience in the desperate pursuit of revenue that has full access to everything on my phone: contacts, address book, pictures, email, auth tokens, you name it. I'm not excited by the prospect of installing an app on my phone any more. It's more like a vague sense of impending dread, with my finger shakily hovering over the uninstall button the whole time. All I can think iswhat shitty thing is this "free" app going to do to me so they can satisfy their investors?

For the sake of argument, let's say the app is free, and the developers are ethical, so you trust that they won't do anything sketchy with the personal information on your device to make ends meet. Great! But they still have to make a living, don't they? Which means doing anything useful in the app requires buying three "optional" add-ons that cost $2.99 each. Or there are special fees for performing certain actions. Isn't this stuff you would want to know before installing the app? You betcha. Maybe the app is properly tagged as "offering in-app purchases" but the entire burden of discovering exactly what "in-app purchases" means, and how much the app will ultimately cost you, is placed completely on your shoulders.You, the poor, bedraggled user.

The app user experience is wildly inconsistent

Have you ever tried actually using the Amazon app on iOS, Android, and Windows? iOS does the best, mostly because it's been an app platform for longer than the others, but even there, the Amazon app is a frustrating morass of missing and incomplete functions from the website. Sure, maybe you don't need the full breadth of Amazon functions on your phone, though that's debatable on a tablet. But natural web conveniences like opening links in new tabs, sharing links, the back button, and zooming in and out are available inconsistently, if at all.

The minute you begin switching between platforms – say you use an iOS tablet and an Android phone and a Windows 8 touch laptop, like I do – you'll find there are massive differences between the Amazon apps (and the eBay apps, and the Netflix apps, and the..) on these different platforms. At some point, you just get fed up with all the inconsistencies and oddities and quirks and say to hell with these apps, can I please just use the website instead?

Now, if your website is an awful calcified throwback to 2003, like eBay, then the mobile apps can be a valuable opportunity to reinvent your user interface without alienating all your existing users. If there's one thing I love about tablet and phone design it's that their small screens and touch interfaces force people to think simpler. This is a good thing. But if you don't eventually take those improvements home to the mothership, you're creating two totally different and incompatible UIs for doing the same things.

It seems like a fool's errand to dump millions of dollars of development time into these radically different app platforms when Amazon could have spent it improving their website and making that experience scale a bit better to every device out there.

The World Wide App

But that's not an option, because apparently the web is dead, and mobile apps are the future. I'm doing my best to resist a sudden uncontrollable urge to use my Ledge Finder app to find the nearest ledge to jump from right now.

The tablet and phone app ecosystem is slowly, painstakingly reinventing everything I hated about the computer software industry before the web blew it all up. Even fans are concerned:

I’m waiting for something that will unify the world of apps and make manually going to an App Store to find a new app as weird as typing in a URL to find a new website. My bet is that this won’t be Facebook. Instead, I would not bet against some young upstart, perhaps one inspired upon reading about a $19 billion deal, to go heads-down and come up with something crazy.

I'll have more to say about this soon, but I expect there to be an explosion of new computing devices all over the world in the next few decades, not a contraction. Sometimes the craziest solution is the one that's been right there in front of you the whole time.

Thursday, February 20, 2014

The tablet love affair


I subscribe to the Hackernews feed, and recently came across a post, someone was declaring that Our Love Affair With the Tablet Is Over. An excerpt:

Back in 2011, I was having an all-consuming love affair with tablets. At the time, I was the first-ever head of mobile at Netflix. I saw tablets in my sleep, running apps that would control homes, entertain billions and dutifully chug away at work. Tablets, I was convinced, were a third device category, a tweener that would fill the vacuum between a phone and a laptop. I knew that was asking a lot — at the time, however, I didn’t know just how much…..

…The tablet couldn’t possibly shoulder all the expectations people had for it. Not a replacement for your laptop or phone — but kinda. Something you kick back with in the living room, fire up at work and also carry with you everywhere — sort of. Yes, tablets have sold in large numbers, but rather than being a constant companion, like we envisioned, most tablets today sit idle on coffee tables and nightstands. Simply put, our love for them is dying.

Nice revelation. But I had arrived at this conclusion over two years ago. Good to see the rest of the world catching up.

The tablet frenzy as we know it, began with Apple’s launch of it’s Pads. Having used a computer for more than 20 years, and laptop for the last 3, I really couldn’t see how this puny device could revolutionize my personal computing experience. I used a decent enough feature phone, smart enough to browse the net. And I had a desktop and laptop for my core programming needs. And I didn’t buy it that a tablet could replace my laptop anytime soon. After all, its not just about processor speeds and memory, right ? The interface of a tablet was programmer un-friendly, and the fact that you needed one hand just to hold it up, meant that it was more like a book.

A book. That is where this device could help me. Reading has always been my only hobby, but lately I was finding lesser time everyday to read. And the fact that book prices were not coming down, and that books of my favorite  genres was even harder to find, meant that I was not buying enough books. A quick search online revealed that free , and even hacked/pirated ebook/pdf versions of books were easily available. Much much easier to get, and cheap (read free).

Over a year ago, I decided to get a cheap 7” tablet, strictly for reading. And maybe some browsing. But nothing more than that. The cheapest android based tablets available online as well as at retailers in Bangalore back then was around 12000 /-. The cheapest ebook reader was a 3 year old kindle at 7000, and the Pi at 1000 /- !

Seriously. Something was wrong here. Whatever happened to those cheap chinese knock offs ?

One sunday, I walked to Bangalore’s Burma bazar. This is the hub of all grey market electronics in the city. You may not get a warranty on the stuff you buy from here, but you are guranteed lowest prices.

After 4 hours of searching, I finally decided and purchased  a Chinese made Allwinner tablet for 2000/- rupees. A pretty decent design, light enough, and strong build. It was running Android 4.0.4 ICS. And had Wifi, but no 3G.

This has to be one of my best investments so far. I did have my share of problems with the battery and Wifi connectivity issues on it. But being a trained engineer, and a  DIYer by passion, I found ways every time.

And exactly as I had expected, the device has not replaced my laptop. I use it to read. I have rediscovered reading, my long lost hobby. Right now I have over 200 ebooks on it, and some songs. I carry it with me on all my long journeys, I imagine carrying my own library of books with me. My favorite genre is Victorian English literature, the ones I grew up with. Most of the books from this time have gone into public domain, and are freely available. My other favourites: PG Wodehouse, Agatha Christie, Michael Crichton , Dan Brown and Tolkein – I was able to find every book by these authors online.

Being an RSS fan, I catch up with my feeds on Google reader, now Greader and Feedly. Its nice to have a device which serves it’s purpose just right, without putting a hole in your wallet.

I am happy to say my affair with my tablet is still on. Open-mouthed smile

Tuesday, February 18, 2014

7 years in IT


I just noticed, today is February 18th, 2014. That would mean I have completed 7 (long) years in the Indian Information Technology Industry today.

While most people would look back proudly at what they achieved, honestly, I feel bad. That’s all it has been ? Life and Career has been very hectic for me. And I can feel age and tiredness catching up with me.

Here is my wish: I wish, the coming years bring me more leisure and fun. That I get time to catch up with whatever I missed the last 7 years.

I want to say, that the worst is behind us. But at my point in my career, I know for sure the journey ahead will only get rough.

And this brings me to a poem I grew up with. It is called Leisure.


What is this life if, full of care,
We have no time to stand and stare.

No time to stand beneath the boughs
And stare as long as sheep or cows.
No time to see, when woods we pass,
Where squirrels hide their nuts in grass.
No time to see, in broad daylight,
Streams full of stars, like skies at night.
No time to turn at Beauty's glance,
And watch her feet, how they can dance.
No time to wait till her mouth can
Enrich that smile her eyes began.
A poor life this if, full of care,
We have no time to stand and stare.


                                                        -William Henry Davies