Thursday, July 22, 2010

The democratization of culture

Back in the day, before the age of the Internet, culture was something that was given to us. Back before the age of the TV, culture was participatory: you made music, you played music. TV ruined that all, people were stuck to the television set, and discussions revolved around what everyone watched at home. When I was growing up, we didn't have TV for our formative years, and it was annoying that I couldn't discuss television shows with my peers. TV used to create culture: when someone you knew appeared on TV, it was a big thing!

Fast forward fifteen years, and TV has lost much of its culture-making powers. For one, there are too many channels, thinning out what people watch. For another, most of TV is a colossal waste of time: ten minutes of good programming inside a forty minute show, with twenty minutes of advertising: for a total of one mind-numbing hour. Even news shows have sunk to pointless blabbery: I was watching a show one day and they were reading messages that people sent to them via Twitter!

A lot of popular culture now is created by people. Some wonderful, down-to-earth videos have hit it big on online video sites. This wedding entrance won the attention of many people. Watch the video: it is simple, beautiful, and has 53 Million hits. It made Chris Brown's song famous. Or Russell Peters, the brilliant comedian. I first heard about him through friends. His videos became massively popular on youtube: college kids were mailing each other the video. Long before TV was aware of him, he was a celebrity. And when he toured, people showed up because they had seen him earlier. Or this kid, playing Paschelbel on his guitar, became insanely popular. A news reporter went to find him, and write an article on the mysterious funtwo. Culture was created by someone that mainstream media was unaware of.

This is just the way it should be: creation is an essential human activity: we want to make, to create, rather than just be passive consumers.

Sunday, July 11, 2010

When monkeys record movies

I'm disappointed by popular TV shows. My friend recently introduced me to 24, a TV show that he said I would completely fall in love with. He has the complete DVD set, which was thrust in my hands, in the hopes that I'd enjoy the show, and we'd have something to talk about.

We started watching the show, and what first struck us was the mad camera shake. It felt like the camera work was done by a monkey. On crack. It wasn't long before my nerves gave up, and I paused to have a shot of vodka to steady my nerves. My wife stuck with it, and watched the entire show. But at the end, she too had a headache.

This isn't the first time we've had to suffer at the hand of monkeys. The recent Star Trek movie had abysmal camera work: every scene was shaking madly, which was headache-inducing in the theater. At the end of the movie, I was glad to be out of the hall. Some Indian movies have had this as well: Wednesday had similar camera work, as did Yuva. In these two movies, the story is gripping and nice, but the shaky camera spoils the entire scene. I've been told that it is supposed to convey suspense or drama. To me, all it conveys is amateurish recording, and a director who is asleep.

Yesterday, we watched "Murder on the Orient Express", directed by Sidney Lumet. The comparison couldn't have been more striking. Scenes were beautifully done: emotion was portrayed by excellent acting, great direction, and a sober human behind the camera. Ingrid Bergman's acting was excellent: as was Lauren Bacall and Anthony Perkins. Despite the weak ending, the film was remarkable and gripping. The scene with Lauren Bacall holding the blood-stained knife was so dramatic, it made me jump from my seat. It was enough for Lauren to have a stern expression, for you to know what she had in her hand. If the director can't make the actor convey emotion, you either need a better actor, or a better director. Placing on a monkey behind the camera doesn't help.

Tuesday, July 06, 2010

Open Source, it isn't just a buzzword

I have got a few Android phones: in addition to my shiny new Nexus One, I also have a first generation HTC G1, also lovingly called the Dream. It is the very first Android phone to ever hit the market. The latest Android version is 2.2 (Froyo), and vendors are pushing this release to their devices. It is more common to see verion 2.1 (Eclair) on devices. In addition to these version numbers, you might also see versions like 1.6 (Donut) or 1.5 (Cupcake).

The G1 came out with the very first version of the OS: 1.0. A user who bought a G1 with a two-year commitment will see his contract expire in December this year, and there are many users still with G1s. In the space of two years, more than four new versions have rolled by, a remarkable achievement for any platform.

Android is open source, which means that the source code is available for anyone to view. Love the alarm clock but want to change one little thing? Here's the source code for the alarm clock: go right ahead. The source code is a wonderful reference when you want to see how the 'official' applications do things: which can save you hours of reading documentation. I referred to the source code for my recent bug fix in Barcode Scanner, for instance. It saved me hours of experimentation, since I could see how the official Settings program worked. There was nothing to guess, nobody to ask. Most of all, I didn't need anyone's permission.

The general view is that customers don't care whether something is open source, that they're not interested in the source. It might be true that the average customer won't read Android source code, but there is an important distinction here. Even if the average customer can't read the source, the availability itself is valuable. Let's go back to my G1 for a second. The final version of the OS that it can support is 1.6. HTC, the manufacturer, doesn't want to put much effort into this device. They would like to invest their valuable engineering effort in their new products. G1 customers, on the other hand, cannot move so fast. Some are tied to a 2-year contract, and might not want to pay $180 for a new phone. If there are a few smart software engineers with G1 devices, they can probably figure out how to load new versions of the Android Operating System on their phones. Once they get it working, they can make it available for everyone to use.

This is exactly what has happened with community-produced firmwares like Cyanogen. There is a vibrant community of software engineers, who have old devices, and can take advantage of the Android source code. Even if it takes a month of developer time, spread over thirty developers, that is a day each: well within the reach of recreational hacking. They recently released Cyanogen 5.0.8, which is based on version 2.1 of the Android source code. They didn't have to ask anyone for permission, and all the work was done in their spare time. I recently downloaded this release, after using Android 1.5 on that phone for a long time. While I downloaded the release mostly out of curiosity, I was amazed at the effort and the skill of the hackers. It is one of the best Android firmwares I have used on the G1. It is stable, it has all the critical Eclair features, and it supports a few features that Eclair did not have: applications can be stored on the SD card, USB and WiFi tethering is available, and the interface is beautiful. That a few hackers can produce something this good is remarkable. Of course, they didn't have to write everything from scratch: they had the source code. An old device like the G1 is given a new lease on life because of the efforts of a few hobbyist hackers and the existence of the source code. Cyanogen is available to everyone, at no charge, and it is very easy to load the new version on phones. Even if you couldn't read and understand source code, you can get the firmware, load it on your phone, and benefit from the source code being available.

The source code gives customers a lot of control over their destiny. Like Cyanogen, customers can develop their own releases. They can add features (tethering, Apps on SD card) that are missing in the official release. They can remove features they don't need or find offensive (privacy intrusions). They can verify that the source code is not malicious. They can continue development if the original project dies out completely. Something like this is impossible with proprietary systems, where customers are completely at the mercy of the vendor to provide updates, features, and releases.

With Cyanogen 5.0.8, I'm loving the Dream even more. Thanks, Cyanogen!

Monday, July 05, 2010

Teach me something!

Just came across "Show me do", a website that contains a wealth of tutorials about programming. All the videos can be downloaded at no charge, and they form a wonderful introduction to computer programming. I wanted to learn Blender for quite some time now, and this series of lectures look perfect for a beginner like me.

Show me do also has great Python tutorials. Python is probably the best introductory language: perfect for kids and adults alike. It works on every computer, and is free to download and use. Give it a shot!

Sunday, July 04, 2010

Crying to Uncle Steve

Will Verizon work with iPhone 4?
Mail Steve!
Mail Steve!

Mail Steve!
Mail Steve!

Waiting for the iPhone, and can't wait a bit?
Mail Steve!
Mail Steve!

Thursday, July 01, 2010

The dictatorship in India

I was recently reading "India: After Gandhi", and was shocked to find out how close India came to a dictatorship with Indira Gandhi. Everyone knows about Emergency, but I didn't know that Indira successfully repealed the writ of Habeas Corpus. And that four out of the five judges of the Supreme Court agreed to having it repealed!

I wonder why this stuff isn't taught in schools: this is exactly the kind of history that is useful and cautionary, unlike the pointless memorization of dates and figures.

At some level, Indians are poor historians. We get a fair amount of our history from external records of visitors: the Arabs, the Greek, the Chinese. We just don't consider History important enough to record and pass to the next generation.

Wednesday, June 23, 2010

Development tools and host platforms

I've spent the last few days hacking up some Android code, and it has been a lot of fun. Android has an excellent development environment, which works on Linux and Mac, in addition to Windows. Once this is done, I will probably hack up a remote control for my Nikon camera using an Arduino board. The Arduino board can also be programmed in Linux and Mac, in addition to Windows.

It is tiring to see embedded hardware makers provide a development environment that only works on a specific platform. It is understandable if Windows software can only be developed on Windows, or Mac software on a Macintosh. I wouldn't advocate it, but I understand it. On the other hand, embedded devices rarely host the dev environment. You could develop Android software using the Android Scripting Environment, but that isn't a common practice. Most probably, you'll be on a big computer. With a big keyboard, and a bigger monitor. In that case, why limit yourself to one environment? Every platform wants developers, and it isn't hard to support at least Windows, Mac and Linux.

Parallax lost out to Arduino, even though Arduino initially could not match all the functionality of a Parallax board. The Arduino board is easy to hack in Linux and Mac, and there are lots of developers with Linux or Mac as a primary computer. Now, partly because of these Mac and Linux hackers, Arduino has a crazy momentum: the number of hardware and software add-ons is mind-boggling.

Something similar is happening with Android. I see much more momentum around Android hacking. Here is a sample:
  1. Serial port on an Android G1 device.
  2. Using a Wii controller to play games on Android.
  3. USB Host mode on a Nexus One.
On that last video, notice how Sven, the person giving the demo, is using Linux?

I thought I'd spend some time learning how to program a Nintendo DS, or Nintendo WII, using the variety of tools that people have written in their spare time. These tools don't always work, and they don't always work well. Nintendo is selective about who should be allowed to program their devices, and will not support these tools. In fact, they'll go out of their way to ensure that you can't program their devices. After some time of struggling with it, I figured it was futile. The tools and dev kits of free environments is so much better. It is a lot more fun to program Arduino or Android instead of a Nintendo device. You don't have to struggle with random library versions, you can make your software available to others, and more importantly, you aren't treated as a criminal. So with that, my DS was quickly sold, my Wii will be given away, and I'm back to devices that I am welcome to program.