Tuesday, September 07, 2010

A new era in technology..

If you have tapped the pulse of the tech industry, you would have smelled the winds of change. This is an exciting time to be in the bay area.. rarely does anything makes me come out of my blogging slumber (blame it on twitter). 

Let me list a few facts to start with and then we'll extrapolate the trends (just google them to verify):
  • Intel bought Infineon's wireless division.
  • Newer Android smartphones sport 720p hdmi ports, 1GHz processor, 20GB memory (more or less), 512MB memory, some have a separate graphics processor. A phone with a dual core processor will be a reality before the end of this year.
  • Google is pushing forward on web apps, use case of these is still not obvious.. they don't really believe that someone will open a browser and then click on a button rather that type the web address. 
  • Google is working with Verizon and Motorola to push out new android phones.
  • Google worked with Verizon to support net neutrality *excluding* wireless networks.
  • IP TV/Hulu is becoming more and more popular.
Clearly all the big wigs are in on this (whatever this is).. everyone except Microsoft that is. Google has positioned itself as the next Microsoft.. not by coming up with a new OS and trying to displace Windows from the computers, but by just making Windows irrelevant. Android is now what Windows was 20 years ago.. By making Android freely available to the hardware vendors as the kitchen sink mobile OS that can run on any hardware (by totally leeching off Linux, but that's not the point here), Google has made sure that Android will go farther than what WinMo or iOS can ever dream of.

Most of you reading this blog will agree that the phones we have now are more powerful than the first computers we owned (even if that was just 10-12 years ago).. ofcourse we don't need a 1GHz processor to make phone calls or play small games.. where is this all going?

I believe that smartPhones ( or lets call them just phones because single purpose phones might soon be in museums) are set to displace our computers and even our cable connection. Why would we need a cable connection if we can view all the content online? and if we can view the online content on TV?! Why would we need an internet connection if our phones are connected via 4G(in a not too distant future). What if when connected our phones to our television sets and desktop environment were to magically appears?!

Let me describe a device that has been cooking in my head (not too radical). This device is an android phone.. just a run off the mill evo or droid. As soon as you connect it to your TV (via some micro usb dock), you desktop automagically appears.. running android or some variant of chromeOS. You can run android apps or some apps that are not suited on a cellphone like google Docs, photoshop etc. I'm guessing Google will be releasing a web app store just for this platform. Open the verizon Vcast app or some app from one of the network houses to watch streaming television (maybe via some sort of "tv" mode).. Throw in a bluetooth keyboard/mouse if you wanna use it like a regular computer. Once 4G becomes prevalent, this sort of device can easily be as pervasive as a toaster.

Google has positioned itself well.. It owns the whole content delivery mechanism and if Google and Verizon's recent proposal is accepted, it's own content will get preferential treatment. In one fell swoop it would have monopolized multiple markets.


Intel knows this very well.. it also knows that majority of its revenue comes from desktop market, so it acquired Infineon to get itself in the mobile game. It went a step further and acquired McAfee. If android's market penetration reaches the same level as that of MS Windows.. it will unfortunately suffer the same fate.. which is.. become the main target for malware/viruses etc. Acquiring McAfee was just a logical step to ensure that it has a safe ride when android has its "Windows 95/Windows Me" phase :) .. plus since more and more of our data is moving onto the cloud, cloud security is still a new and emerging market.


Well.. all you can do now is grab some popcorn and enjoy the ride.. some day you'll be telling your kid about computers that just sat on a desk or that needed a separate bag.

Thursday, February 11, 2010

Picking a bone with google buzz

Love it or hate it; people are using Google buzz... mainly because they don't have a choice (or are not aware of it). For the record, I like it, but mainly because I'm an egotist..
Google came up with Google wave couple of moons ago. Even though based on a solid concept, it failed to generate any traction because people were not really interested.. well they might be interested, but if they are anything like me.. they were mostly lazy and didn't want to build up a circle they can wave with separately. I've tried couple of social networking sites; hi5, 360, orkut, facebook.. they only cater to the people who are interested in social networking, and even if something new came along, which is much better than say facebook, people won't switch because all their contacts are still on facebook.Google seem to acknowledge this fact.

Google has employed gazillion PhDs, but what a waste it would be to not have the products they designed be used by the public. Gmail user base is waay bigger than facebook's, so it makes sense to pork down the products down the existing user's throats... whether they want it or not. They might add a disable button once the media hullabaloo dies down and stupid bloggers stop blogging about it :P. Although the strategy is nothing short of genius, it is somewhat similar to forced labour. The end user is forced to beta test their products, whether they want to or not. (In Google's defense,  they own you because you use their awesome free email service).

Another issue the GBuzz exacerbates is "parallel posts" (a term I just made up). To get more visibility, people typically plug their contents on various websites (facebook, Buzz, twitter etc). When I post my pictures on flickr, they are pulled by Buzz and facebook automatically, and sometimes I post links to them on twitter too. People leave comments for the same content on flickr, twitter, facebook and Buzz; I have to follow 4 threads of conversation, which is more or less redundant. Same issue with my tweets that are pulled by Buzz, Orkut and facebook. All these websites have their own API, why don't they use the api's of the other websites to post back the comments to the original source (more work but better for the users).

People have been shouting about privacy issues in GBuzz (and for that matter in any famous webapp).. here's the truth, if you care about privacy, don't log in... and nobody really cares what you do in your basement. You can always disable your profile, filter "label: Buzz" directly to your trash/archives if you don't want GBuzz..

That been said, Google, if you are listening, here are few feature requests:
  1. Some sort of a RBAC (Role based access control), at the very least let me separate my contacts into groups and make my buzzes public to only the group I choose. I want to discuss my weekend at Vegas with ONLY my friends and my cousin's report card with ONLY my family.
  2. The buzz page is a mess right now, I have no idea which buzzes are new and which are old and which are the old buzzes with new comments. Some sort of color coding would be great.
  3. Add a Gbuzz pane to the bottom of Inbox and have the buzz notification skip the inbox by default.
  4. Integrate twitter/blogger/wave/facebook/orkut/flickr api so that the comments on the original site and buzz are always synchronized.
  5. Send me that Nexus 2 you've been working on.
You know what Google, even if you choose to ignore these requests/gripes, I think you are gonna be alright.. don't worry.. the force will always be with you.

Sunday, January 24, 2010

What does the new year promise me?

It is pretty late to post a new year post, but.. meh..
I made tons of resolutions last year. Of course, I didn't follow up with all of them, but some of them did stick. Notably I read 4.5 books, made $3K in the stock market, started cooking regularly, hiked regularly and backpacked across Europe. And few of them I failed miserably to keep up (got two speeding tickets :P). So all in all, 2009 was a good year for me.

I have been blogging alot less lately, mainly because I'm tweeting more and because I have to censor some contents (politics, culture, religion etc). To vent it out, I've been maintaining an anonymous blog where I can bitch and moan about all the issues I want.

This year I just have one resolution: to make 2010 more dynamic that 2009, to grow more, to do more, and to be more. Growing up is a strange process; people tend to develop tunneled vision (they see what they want to see and shut everything else out), become more cynical, throw their ideals for something more practical and short term.. needless to say, I hate growing up. In 2010, I promise myself to keep open to ideas, stay optimistic about the future and never ever compromise on my ideals for any sort of instant gratification.

Does that mean I'm not putting anything concrete on paper for 2010?.. Absolutely not. It means that my 2010 resolutions are the same as my 2009 resolutions. I'll just learn from the mistakes I made in 2009 and attack the list with new found experience.

2009 was also a year of profound realizations. Over the years I've gradually been turning into an atheist/agnostic. My belief system is somewhat closer to what Deepak Chopra preaches, which simply put, says that if God is divine, humans can't imagine what God would look like or even want, so there's no such thing as "acting on his behalf". Since religion is so closely tied with "culture", I had dismissed it as another construct used to divide human society... I was mistaken. Culture is snapshot of the society; loosely put, it is just an average of the phenotypes. If you think of cultures as states in a state machine (human evolution), you can almost plot the evolution of the human society. There are hundreds of cultures on this planets, which are constantly evolving, effecting each other and in contention with each other. This will always be the case and is some what necessary for cultural evolution, but at the very grass root level, all humans are the same; they hate change, want to be loved, and want to be happy. As long as we accept these facts and not care too much about where the culture is heading or how "cultured" we are (which seems more like the std deviation now :P ), we'll be fine as a human race. If you don't agree with me, I'd suggest that you travel more :).. Once you break your cultural boundaries, it is easy to see that everyone is the same. I've been really lucky to have experienced it first hand..

So 2010, here I am with an open mind, free of prejudice, knapsack full of dreams and a list of what needs to be done this year :).. help me become a better, more accomplished man.

Saturday, November 07, 2009

Eurotrip: Prologue.. with 20/20 hindsight

So as most of you know, I had been planning a Eurotrip earlier this year. Well.. I did it. Backpacked across western Europe.. had a crazy schedule. Covered 6 countries(1 city per country :)) in 15 days. Here's something for people who are planning to do so too but just couldn't get off their collective asses or think its too expensive or think its dangerous or don't know how to go about it.

Things I did right, and thing you SHOULD do too:
  • Get a good backpack. Can't stress this enough. You have to carry something equal to twice the size of your torso, about 15-20kg, on your back. You might have to walk a mile or two(unless you are rolling in money, in which case don't backpack). Get a good backpack.. I got a 65lt Osprey Waypoint.. worth every single penny.
  • If you are directionally retarded(for the lack of a better word), like I am, get a friend to tag along with you who isn't. Frankly, I need a GPS to walk to my restroom(that's bathroom for the non-American junta), so treading my way across the cobbled streetways of Prague was an unlikely possibility. My friend just used to look at the map and used to guide me to all the places like a local.
  • Buy a guidebook. There's no shame walking around with the fat book in a foreign place. I just used to mark the places we HAD to visit and we MIGHT visit, factor in the time to travel, and time allotted to the city, and use TSP to do the rest :)
  • Concentrate on soaking up the culture and the history, not just looking at buildings. Just go to all the small alleyways, drink the local wine, taste the local favourite dish in a bistro. Look for places that are not really close to a touristy place (like the restaurant right next to Eiffel tower or on the Old town square in Prague). Its fun talking to complete strangers in a different country.. the language barriers just fade away.
  • Surprise yourself. I'm not the artsy/emo sortta guy, try to analyze everything, so I was vary of visiting any museums. But boy was I wrong. Went to about 3-4 museums, took the audio tour in each one of them. It is one thing reading about it in history books and quite different experience altogether to really see them. You have no idea how human you feel after seeing/touching artifacts from 2000BC, paintings of Van Gough, Remembrandt and Da vinci, pages from the diary of Anne Frank ( I can go on and on about the things I saw and felt.. if you care to listen just call me and I'll eat you head off with my long philosophical rant about humanity and mankind in general). Bottom line, don't judge yourself.
  • Suck it up when need be. I'm a lacto ova vegetarian, that been said, I had meat in Europe. Not that I couldn't find Subway/Salad bars/Indian vegetarian restaurants in Europe.. I just didn't want a superficial view of the cities. As I said earlier, I wanted to soak up the local culture and custom. After all, what Eurotrip is complete without the German currywursts. :)
  • Relax when you need to. Backpacking is a hectic affair. If you are not a marathon runner, backpacking tires you out soon. Just kick back and call it a day early on.
  • If you are into photography, carry lots of memory card. I carried 10GBs in CF cards, filled about 8GB. Shoot some artsy good pictures, but when push comes to shove, shoot anything and everything. You are making memories here, not trying to sell prints. That being said, a non-photog friend helps. I used to study the composition, look at photogenic stuff and angles and then take the pics. The non-photog friend used to cry "photo please" at every damn place, so sometimes I used to shoot photos, begrudgingly, without properly composing the picture. Although irritated then, I'm thankful to him for pushing me take all those photos. Shot about 650 photos.
  • Check out craigslist and other local websites to find cheap accommodation. Some people let you crash on their couch or just rent a room for a night for pretty decent price. Hostels again are not that expensive. Avoid backpacking in summer.. just too many tourists in Europe during that time. I went in autumn.. just the right weather.. just the right crowd.
  • Any backpacker should know the importance of a towel (what? you haven't read hitchhiker's guide to the galaxy?.. what are you doing here). Please O please don't carry a thick towel, its hard to dry and gets stinky pretty soon.

Things I did wrong. Learn from my mistakes:
  • I booked accommodation and inter-country travel tickets just 3 weeks before the departure date (that too when I HAD to because I needed it for the shengen visa interview). Ideally you should always travel at night so you can sleep on the bus/train/plane and keep the days for sightseeing. Unfortunately we were cursed to travel during the day, which made our days shorter by 4 hours.
  • If you are a photographer, carry all your gear, all your lenses, even your big ass tripod, the backpack is gonna be heavy anyway, but atleast you wont crib about needing an extra 5mm of focal length to get the perfect shot, or about not having a tripod for capturing the eye popping nightlife in Europe (unless you like the shitty ISO 1600 pics of course).
  • Get a proper shoe. I had a relatively new Nike Air, but all the cushiony, airy, squeaky comfort goes for a toss when you are lugging 20kgs around and walking for miles at end. Within 2-3 days, your feet will conspire against each other to kill you. Research shoes before you get one for backpacking.
  • Get lots of socks, lots. Atleast get a pair for each day (or you can use the laundromats which are easily accessible from the hostels). Failure to comply to this advice might result in a "biohazard" symbol sutured on your forehead.
So what I did in Europe, i.e Paris,Zurich,Munich,Prague, Brussels, Brugge and Amsterdam, is a completely different blog post.. stay tuned in.

Monday, August 10, 2009

The Buildbot Experience..

I've had been pushing myself to submit a patch to buildbot and then write a post about it, but days,weeks and months have passed by and I haven't even read the source code (let alone writing some of my own).. well what can I say, I've been incredibly lazy (the word "busy" can be substituted here.. but that would be a lie). Let me spread some buildbot love rather than just be yet another leach.
Now what is buildbot? According to the website:
The BuildBot is a system to automate the compile/test cycle required by most software projects to validate code changes. By automatically rebuilding and testing the tree each time something has changed, build problems are pinpointed quickly, before other developers are inconvenienced by the failure. The guilty developer can be identified and harassed without human intervention.
It's a build/test automation system that can run on a variety of platforms. Well there are a variety of free and commercial apps out there which do the same. I chose it because it was relatively light weight and was written in python (an impressive list of clientèle was a factor too).

As the relatively small company (note "small" here just means employee strength) where I work in grew; software maintenance, integration and the task of porting the code to all the platforms and then testing them just became an incredibly arduous task. We already had a semi-agile system in place and were using version control, but it was just not enough. In a small firm, even a single dev day spent on anything other than coding/design is a day wasted (and we devs are known to be lazy and don't really like doing the same things again and again).

Our product is supported on many different platforms, ranging from the ancient(linux 2.2, mac 10.2, Sun Sparc 5.8 etc) to relatively new ones(freebsd7, macosx-universal, windows 2008 etc) totaling to about 13 different platform. Commercial systems were out of the question because none of them supported all the platforms that we had, so were any .NET based ones (not possible for *nix systems) and we preferred python based system over java because our test bed was completely in python and we just didn't think that adding another language to the mix would be a good idea in the longer run. Setting up buildbot on the newer systems was a breeze (just apt-get/yum/portage etc was good enough in most of the cases, a rare recompile on some others). The older systems and Windows were a bit messy (big surprise there!). Some of the systems didn't even have python (or had a really old version), let alone twistd (a buildbot dependency). After 3 days of hushed cursing, head banging and a lots of ugly hacks, I got buildbot to run on all of the *nix platforms. Windows kind of made me feel completely handicapped because once the install failed, I had absolutely no idea how to get around the situation. I ended up setting up a proxy Linux system for windows (credit for the idea goes to one of my colleagues), which identified itself as a windows machine and just did the needed compilation over ssh on Windows (using VS2008).

Once the crude system was setup, we started adding bells and whistles. Every svn update now triggers a build on all the 12 different platforms, sends emails to a group of people who want to be notified if something is broken and to the person who broke the code. Another process triggers a nightly builds which updates the code,does a clean build, run a set of core regression tests, creates a package(tagged with date and revision number) and posts the status on a pretty page. The status page (html and css) was also hacked to list the tests that failed on particular machines. It also uploads the package to a different repository which can then be used by the QA team. Later some more hacks were done to maintain just a small history of packages (nightly builds, not the production builds) and then some (idiosyncratic to the product)... Check out Google Chrome's buidbot page.. now imagine that for 12 different platforms!!.

We did get the obvious benefits:
  • no integration downtime.
  • no downtime to port the product to different OSes.
  • continuous integration made the development process more robust/agile.
There were some not-so-obvious benefits too:
  • Since creating a package on all the platforms just involved clicking a button on the web interface, debugging->packaging->testing cycle was made a lot faster as the QA didn't have to wait for developer to create the package (who would normally try to include all the fixes in a package before creating a package), which means faster feedback on the remaining issues/builds, which means a happy PM :)
  • Automating build across different platforms meant that all the platform specific hacks would have to be cleaned up, which meant a more elegant build process, which lead to faster build time and did point to some issues that were being overlooked.
  • The green color signals a "pass" on the buildbot status page. Surprisingly we(all the devs) find it rewarding to see a green on the status page with our names beneath it, I think I can safely say that our productivity has gone up and our favorite color is "buildbot green" :) .
The whole system works so well and has relieved me of so much of repetitive/boring work, that I was guilty of using it for free. And since I am a poor developer, all I could do was offer some CPU cycles on my home machine (did that for about 4-5 months, until the summer heat forced me to switch off my PC) and offer my help to write some code (which I'll get around to doing one of these days).

On a totally unrelated note, I'll be taking a trip to Europe (Paris, Zurich, Munich, Prague, Brussels, Brugge, Amsterdam), so drop me a line if you've been to any of these places and would like to recommend me something that I should not miss.