Nov 25, 2013

‘Mujhe chhod do mere haal pe…’

Golden age of Indian cinema is back after a long period of mediocrity of 80’s and 90’s and the trials of 00’s. I consider ‘Dil Chahta Hai’ as the film which started the change. I had a great weekend watching three beautiful movies ‘Lootera’, ‘Lunchbox’ and ‘Madras Cafe’. All three have nothing in common except that all three are director’s films. And hence, the golden age or maybe better because these films also have the backing of professional production houses.

‘Lootera’ is a textbook illustration of what a poetic expression of film could mean. And the poetry that makes its songs just adds to that. I understand that Vikramaditya Motwane (Director) has been Sanjay Leela Bhansali’s assistant. I did not know that and still my observation after watching the movie was that Bhansali should learn how his movies should actually be. His films are supposed to be poetry but lost in too much of grandeur (according to me). Also, while watching the film, I somehow was reminded of ‘Meet Joe Black’. I do consider ‘Meet Joe Black’ as a poetic expression and maybe that’s the reason. But it could also be due to the measured performance by the actors in both the films (drama without the dramatic or rather melodramatic which is so common in Hindi cinema.) Or it could just be the male lead’s interactions with the female lead’s father :-).

‘Lunchbox’ has been talked about a lot and the Oscar related drama has added to the hype. Though I would not consider it to be as great as the buzz it created, it certainly is a director’s film but the buzz also means that the marketing muscle (it was produced by Balaji) was also behind it and that’s the good thing. Imagine a movie like this in the 90’s - nobody would have known when it came and where it went.

‘Madras Cafe’ could have been the typical Bollywood potboiler, if it wanted - action, thriller, love and drama (with few songs). But it is such a straight forward film, that it almost seems like a documentary with a subject unheard of, in Hindi cinema.

All the three films have their flaws (for ‘Lootera’, those are very difficult to find while watching the film) but they are more honest in what the director wants the audience to see rather than the other way around.

‘Zinda hoon yaar, kaafi hai…’

Sep 28, 2013

Need to trace the alphabets again

Author: Nana Patekar (Published in Loksatta on Sunday, 19th May 2013)
Translation: Sandeep Meher

There were only alphabets in the dream.
Unknowingly, started tracing them with fingers.
Didn’t realise when the earlier letters had started moving on their own.
There was just a jumble of letters.
A B C D did not have an existence on their own.
It had to be words.
Words that grew with self.
Or the self that grew with the words.
Unknowingly, these words teach you.
And it is beautiful because it is not known.
Everything is unknown when one learns the A B C D.

Anger, love… everything.
Everything happened before deciding. It was the age.
There was no caste, class or colour. Everything was pure.
Not bothered about investment. Not interested in interest.
It ended with small quarrels. In a moment.

Today, A B C D is forgotten.
Forgotten or lost?
Everything’s getting lost in this town?
Air has been lost, rain has been lost,
Sunshine has lost its gentleness.

The infertile sky just has one cloud to make it up…
One which seems like a lost sheep from its herd.
A weak flutter, that remains of the birds in the tree on the corner.
Colourful ants, spread all over the place, in the shape of human beings.
Barren mountain, under siege from the embers strewed by the sun.
A dry leaf, lifted up by a dust devil, momentarily
Again lying in the dust.
Tarred roads are lazing shamelessly with injuries on their bodies.

There are tombs of ideals built in every square.
True faces cannot be seen now behind the veils of religion.
Everybody a crony. Bending and kneeling for favours and kickbacks.
And that is why faces have been replaced by arses.

Flesh trade is numero uno.
Caged parrots are happy though. No need to worry about the daily meals.
Pimping has a esteemed status.
Gangs are ruling here.

I don’t have a big heart to say
‘Forgive them, for they do not know what they are doing’.
I am carrying the crucifix on my own shoulders.
Cursing along the way.

There are throngs of people on the river banks for salvation of the dead.
Crows are in demand. But those ***** are conceited,
no time to complete the ritual.
The dead, though, are held on the gates of the heavens.

The ghost is getting on the nerves with his new tales.
Would like to throw away the burden.
But I fear if the head will shatter in hundred pieces.

Breathing has lost its rhythm.
Suddenly there’s a spasm and the throat becomes dry.
I quench my thirst looking at the tears in the eyes of others.
Everybody around is as miserable as me, that’s the only consolation to live.

Light has gone. Shadow of darkness is deeper still.
Horizon has gone far.

Strange sounds from the unknown seems to tell something;
But I cannot understand,
I have lost the sense of time.

It seems the blue-throated one has spit the poison from the churning.
Ailing almighty is counted among the invalids.
Gods have a rate card, have lost their value.

I die everyday, but why do I fear of death?
All slaves to the powerful.
Gang leaders have shared us among themselves to gulp.
They have five years to ruminate.

Far away in the mountainous forests, there are gathering
Some hapless victims, supporting each other.
They are also forming their gangs.
“Will that mountain air suit me?”
I question myself everyday and suffocate here.

Everything’s being lost slowly in the crowd here…
Me too.
Need to trace the alphabets again.

May 20, 2013

2050 - A fishing village

After reading Bruce Sterling’s vision of the future city on BBC, I decided to write about what could happen with my birthplace, a big fishing village in Maharashtra. You could say the following is a pessimistic view. But I feel today is the time when steps need to be taken to avoid this becoming a reality.

In 2050, Satpati’s population is expected to be 10,000 - that is no more that what it is today. The young would have already left and what would be left are 70 year olds with diseased livers, kidneys, hearts and blood. There would be a stench, throughout the village (town?), emanating from the open sewers (not manmade but auto-generated from the flowing waste) which nobody has bothered to clean up for last 20 years. The houses are crumbling on one another or balancing precariously waiting for the right moment to relieve a lucky resident of his misery.

The buses from and to Palghar had stopped 30 years back, the rickshaws followed 10 years later. It is back to the horse-carriage days of 70 years past. Nobody comes here, nobody goes out. Nothing comes here, nothing goes out.

This fishing village, which was once was the biggest fishing port in Maharashtra, does not have any fish for anybody. In fact, there is no such metrics to define the biggest fishing port in Maharashtra as there are no fish in the sea.

The boats use had moved from fishing to mining sand. Sand followed the fish - hard to get. And the boats were sent to other coasts. But many were anyway too old. Then the decay started. The village, houses, boats, residents. No actually, the residents decay had started the first long before the decay of the physical items.

The residents’ decay was similar to the nuclear decay. First, people left for education and jobs with the intention to leave the hard work of fishing. Then people left because no more fishing was possible. Then people left because sand mining was over. Then people left because there was no water. Then people left because the buses had stopped and then people left because rickshaws had stopped. Then people left because the livers, kidneys and heart were damaged. None of the people came back.

With the people gone, the loudspeakers stopped blaring during festivals. And so stopped the praising of the Gods. Liquor was always the God in the background, worshipped by the young and the elderly, and omnipresent. First, they drank as there was lots of fish. Then they drank because there was no fish.

The boats started to crumble. The salty air and water were vicious. The flags on the boats disappeared first, then the colours. No, the people on the boats disappeared first, there were nobody to work on the boats as compensation could not match the daily wages at the industries in Taluka. But after the local trains started, the industries in Taluka faced the same problem from the city. Haa. The engines rusted - later sold to scrap dealers who made a killing for a short time. The nets just withered away. The floats still float in the creek and line up the shores where it is difficult to distinguish them from the faeces.

No fish - that was the only problem. No fish - to eat, the residents didn’t know anything else to eat. Before there was no fish - there was substitute fish - fish that no one ate, before there was no usual fish. But now it is absolutely no fish. No fish - to sell in the village, taluka and city markets. No fish - to sell in the co-operative societies. No fish - no life.

Apr 10, 2012

Trishanku

I was fascinated by Trishanku’s story which I came to know through the Ramayana TV serial which I saw during the school days. For the last 20+ years, there have been innumerable times when Trishanku has made his appearance in my thoughts. Most of the times, it has been while trying to find answer to the question ‘What am I doing here?’.

I just spent the last weekend at my Mama’s village which is just two and a half hours drive from Mumbai. The contrast between the two places (my village and Mumbai) has always been stark and still is. Proximity means there was always an ever increasing influence from the city on the village. But fortunately, the pace of growth and change in the city results in a gap as there is only so much that can be absorbed by the village.

I spent my school days in a town between these two places - much much closer to the village rather than the city but at that time and still, I consider it as a place in between.

Now, I am part of the maximum city but I yearn for the village. And the mind has been in an unstable equilibrium between these two places. I never faced such thoughts for UK and India (maybe the distance did not allow that). And for the same reason, people who have migrated from long distances in India have an easier decision.

The generation before me always thought about going back to the roots after retirement because at that time the distance was considerable due to the means of travel. Now the same distance has become easier to traverse. And so has made it easier to entertain the thoughts of a choice.

But travel and communication may have reduced the problems in connectivity but on a lot of other parameters, issues remain and have a more polarising impact. The most striking ones are the lack of proper water and electric supply, public transport, waste management and sanitation. So any idea of moving to the countryside gets nipped in the bud. And so the Trishanku state of mind. Lucky are those who can avoid this.

The King did not manage to enter Heaven with his human form. You cannot have the cake and eat it too.

Dec 14, 2011

Mobile Architecture using jQuery, Node.js (+ express) and CouchDB

Apache Couchdb is the chosen one and now we have a complete (sort of) lightweight architecture for mobile apps. For those who think that the first line was an abrupt one, please refer to the previous post.

I now have a working example (a shoddy one) of a web app for entering fantastic details of the fauna you might be a keen observer of. The web app works but is without any validation, without any error handling and bloody hell - without even a feedback. So what the hell is a working app?

  1. Does this look good on a mobile? Does it actually look like it was built for mobile?
  2. Is it lightweight? (Define lightweight)
  3. Is it easy to develop? What are the skillsets required?
  4. Is it scalable? (Think reverse of what you just thought i.e. extremely small to start with not whether it can cater to your prospective 2.5million users after 2 years. Maybe that too.)
  5. Is it secure?

For question 1, I picked up the popular jQuery Mobile Framework after reading a couple of comparisons. It is very easy to use and the online documentation is very well organised and detailed. And the primary reason, it looks great on both iOS and Android. You can actually see a silly web app called Numbers, to help your kid fall asleep while counting sheep. It just uses a couple of jQuery Mobile elements.

The second question is the most difficult one and depends on how lightweight is defined. For some, it could mean less CPU intensive, less disk space or uncomplicated licensing model. For others, it could mean easy to setup, easy to configure and easy to debug. I am no authority on this, but Node.js seems to give a positive reply to many of these. And so does CouchDB. There are other NoSQL options - MongoDB, being a very popular choice. But what impressed me about CouchDB was the fantastic RESTful design it has implemented. And how does it matter? Well, inquiring and manipulating data through a middleware using simple HTTP GET, PUT, DELETE calls gets amazingly simple, while handling the HTTP requests from the front-end, without any extra learning curve.

Question 3 is the easiest to answer - we don’t need anything other than HTML/Javascript. How much easier can it get?

Both Node.js and CouchDB are being touted as the ultimate in scalability and performance. But as I said, let’s see those from the current situation rather than the future. When you are starting with the business idea and expect the volumes to pick up only after a certain period or if you just want to test the waters, do you have to invest heavily upfront in an unpredictable business model? And does it offer the flexibility to change rather than build to last? Solutions such as Node.js and NoSQL are good answers to this predicament. Q4 answered.

These are still very early days to say much about Node.js security. So no idea yet. But we can at least rule out SQL injection :-)

Anyway, too much rambling above. Here is the action (Linux or Mac) -

1. Simple 'untar Node.js source, ./configure, make, sudo make install' routine in Linux/Mac OS X. No major dependency issues other than Python and OpenSSL. (test using 'node -v')

2. Install npm - Node Package Manager using the one line install. It didn’t work due to proxy settings as I was trying with superuser credentials and environment variables exported in normal login are available only by using the -E option. Also, I had to replace sh with bash. Eventually, 'curl npmjs.org/install.h | sudo -E bash' worked. (test using 'npm -v')

3. 'npm install express' - for the Node.js module, express - a web framework on node, which will be our middleware.

4. Installing CouchDB on Mac was easy using Homebrew - 'brew install couchdb'. But on Ubuntu, building with source was a safe bet. There are quite a few dependencies to be handled on Ubuntu. (test using 'couchdb' or 'sudo couchdb')

The above are just hints, search on the net and ample of instructions (detailed) can be found.

Though I went through a few trials and errors, the following is how to make it work.

1. After starting CouchDB, create your database from the command line 'curl -X PUT http://127.0.0.1:5984/acme_fauna' or accessing http://localhost:5984/_utils/ through a browser and selecting the appropriate options.

2. Create the index.html (in a folder called ‘public’) which will be your data entry screen with the jQuery Mobile niceties in.

<!DOCTYPE html>
<html>
<head>
  <title>ACME Fauna Entry</title>
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link rel="stylesheet" href="jquery.mobile-1.0.min.css" />
  <script type="text/javascript" src="jquery-1.6.4.min.js"></script>
  <script type="text/javascript" src="jquery.mobile-1.0.min.js"></script>
  <script language="JavaScript" type="text/javascript">
  </script>
</head>
<body> 

<div data-role="page" data-theme="b" data-content-theme="b">

  <div data-role="header">
    <h1>ACME Fauna Entry</h1>
  </div><!-- /header -->

  <div data-role="content">
    <form action="http://localhost:3000/fauna" method="post">
      <fieldset>
        <div data-role="fieldcontain" class="ui-hide-label">
          <label for="type" class="select">Type</label>
          <select name="type" id="type">
            <option value="bird">Bird</option>
            <option value="moth">Moth</option>
            <option value="mammal">Mammal</option>
            <option value="reptile">Reptile</option>
          </select>
          <label for="cname">Common Name</label>
          <input type="text" name="cname" id="cname" value="" placeholder="Common Name"></input>
          <label for="sname">Scientific Name</label>
          <input type="text" name="sname" id="sname" value="" placeholder="Scientific Name"></input>
          <label for="subtype">Subtype</label>
          <input type="text" name="subtype" id="subtype" value="" placeholder="Subtype"></input>
          <label for="Description">Description</label>
          <textarea name="desc" id="desc" value="" placeholder="Description"></textarea>
          <input type="submit" id="submit" value="Submit"></input>
          <input type="reset" id="cancel" value="Cancel"></input>
        </div>
      </fieldset>
    </form>
  </div><!-- /content -->

  <div data-role="footer">
    <div data-role="navbar">
      <ul>
      <li><a href="#" style="text-align:center" onclick="List()">List</a></li>
      <li><a href="#" style="text-align:center" onclick="Review()">Review</a></li>
      </ul>
    </div><!-- /navbar -->
  </div><!-- /footer -->

</div><!-- /page -->

</body>
</html>

3. The form in index.html will be submitted through a POST method to a web server (webserver.js) that will be implemented using express on Node.js

var http = require('http');
var express = require('express');

var getcuuid = {
  host: 'localhost',
  port: 5984,
  path: '/_uuids',
  method: 'GET'
};

var createcdoc = {
  host: 'localhost',
  port: 5984,
  path: '',
  method: 'PUT'
};

var app = express.createServer();
app.use(express.bodyParser());
app.use(express.static('public'));
//app.use(express.static(__dirname + '/public'));

app.get('/', function(req, res){
  res.send('Hello World');
});

app.post('/fauna', function(req, res){
  // GET http://localhost:5984/_uuids to get a new UUID for each entry
  var cuuid = '';
  var cureq = http.request(getcuuid, function(cures) {
    cures.setEncoding('utf8');
    cures.on('data', function(cuuiddata) {
      cuuid = JSON.parse(cuuiddata).uuids[0];
      //console.log(cuuid);

      // PUT http://localhost:5984/acme_fauna/<UUID> with data in JSON form i.e. req.body
      createcdoc.path = '/acme_fauna/'+cuuid;
      //console.log(createcdoc.path);
      var ccreq = http.request(createcdoc, function(ccres) {
        ccres.on('data', function(ccdata) {
        //console.log(ccdata);
        });
      });
      //console.log(JSON.stringify(req.body));
      ccreq.write(JSON.stringify(req.body), encoding='utf8');
      ccreq.end();
    });
  });
  cureq.end();
  //res.send(req.body);
  res.redirect('home');
});

app.listen(3000);

4. Run the webserver using 'node <path/to>webserver.js'. This should be run from the folder containing the folder ‘public’ and providing the correct path of webserver.js to the node command.

5. Access the web app through any browser by pointing to http://localhost:3000/

6. Add birds, mammals, moths and insects in the database to your heart’s content.

The diagram is still pending!

Next Page »