Wednesday, August 31, 2005

Pappu

Ever heard of words like pappu, baburao, chhotu, tumhara chhotu. If you hear these terms from a group containing males that too of north indian variety then rest assured it refers not to a neghbour kiddo but you know what - the male organ.

I was wondering why is it that penis is sometimes treated as mental self image of male body. As if the sole purpose of male anatomy is embedded in it.

Second observation was about the four lettered word. In hindi as well as english sometimes it is used not only for sexual intercourse but other fateful events in ones life. Like "I got f***ed", "I f***ed him (even though i didnt f***ed him!!)"

Why is f***ing treated as an act of subverting someone or suppresing some one. Is it really related to human anatomy that physically a femal cannot rape a man (never heard of the reverse)? Is it purely cultural dominance of male gender?

Why are sexual terms, reference to private parts (non reproductive parts) and incestual remarks are used in curses and abuses?

Monday, August 22, 2005

Software Documentation

Why do we do documentation?Various answers may be to have a formal approach, to keep track of changes, to describe software creation process and to describe the software itself.
The basic necessity is knowledge sharing between different individuals across space and time. The documentation creator and consumer can access it at different times and across different spaces the information needs to be formalized and concretize.

But why should we follow template based files stored in hierarchical folder system. The ultimate requirement is "knowledge transfer" from "knowledge creator" to "knowledge consumer". Why not look at the least noisy and most compressed form of communication in this process? Or infact a data code with an interface surrounding it, which will answer various aspects of documentation (this idea came because if I have ot search a particular aspect of a doc i have to search the whole doc manualy or put a text search)
Why not model the software as a 3-D object which a viewer can manipulate and see how twisting one module strains and effects other modules. This can help in visualization and deeper insight into the software rather than a 2-D diagram followed by loads of text to support it.

Why cant it all be done using diagrams, movies and sounds?

Sunday, July 31, 2005

Digital Revolution

Revolutions come when the thesis of ruling paradigm creates its own antithesis. Marx predicted that the very thing which constitutes capitalism will lead to its downfall. Though it didnt happen Marx was really right in the way revolutions occur.
So is the case of digital computing or computing in a "discrete" "digital" manner. The inherent discreteness in its nature the clear cut division of 0 and 1. The logic crispness of if then else tends to limit it. Though modern dey computers are good number crunching machines and bear there lineage to Turing's machine and Neumann architecture the need for today is not number crunching but networking, data analysis(much more than statistical analysis), AI etc.
(To be continued)

Monday, July 25, 2005

Software Engineering and Religion

I had a course on software engineering where different life cycle models, stages of a software creation process is given. Different processes and methods are given to manage the process. When i had a similar session in the company it said that these things should be a second nature to you not a checklist or laws to be followed to the word each and every time.
So i think is religion it is a set or collection of principles rules general rule of thumb which are not "that" sacrosanct to be not to violated. They are "GUIDE"lines which can be broken in cases.
It is when we concretize these knowledge wisdom that we create laws as a bar beyond which one cannot fall. This let people to fall to the common level so as to be on the safer side.

We all cry about public conduct of indians and our habits. Can these be encompassed in law? Can we really encompass ethics, morality, intent within concrete and crisp definitions of law. NO

Law as a father to the truant child can work in extreme cases who will provide the solace that things dont get out of hand but what will happen when things are not in an emergency state but the soceity is slowly degrading without anybody noticing. This same problem comes in the form of cinema censorship, ip copyrrights.
I think it needs mother of ethics and culture.
-----------------------------------------------------------------------------------------------
Following is another related article written by me which could not get published, Though similar thoughts are given do read it whole:

What exactly is religion? One of the many perspectives is belief in and reverence for a supernatural power. But hardly anybody sees miracles (except some movies) in this life. Alternate view of religion could be a way of life which prescribes some do's and dont's so as to create individual and social harmony. They are principles, guides to be followed so that society doesn't go astray.

Religion is belief on what has been written in sacred text, spoken by great leaders for humans to follow for happiness of all. So is software engineering.

Let me clarify my point. You may differ in it in many ways.Let us identify both of there domains. Both of them tend to be dogmatic i.e. they will preach about practises which would best result in work or life. Both of them have a connection to source of knowledge, priests in religion and software engineering (SE) practitioners who would reveal sacred secrets of the field.

Now comes my main point. Religion and SE are both guidelines, heuristics, thumbrules or synthesis of knowledge that great people have made and told to lesser mortals. You can use them in case they are helpful but those are not absolute truths. You should have a pragmatic approach and look for yourself wether you are being benefitted by them rather than blindly following them.

They should be like second nature to you.

PS: Matters of religion are quite touchy these are my personal views and you can always differ with them

Thursday, July 21, 2005

We look at the software creation process and analyze it from starting by requirement analysis. We look at what the software has to do but we dont look at the process of computing as such. Probably it is from the evolution of computing for calculating. Computers where started as number crunching machines. But nowadays who uses it for pure number crunching we have concepts like logic programming where the user/programmer gives/states the problem not how to solve it. Why not apply it on the machine level?
Why not have machines which dont processon numbers like 0/1 but on symbols? That way the whole basics of computing will change . To bring a revolution we have to identify the underlying conflicts and provide newer solutions? Question everything. What was best 10 year back may not be the best today. We chose binary system because it is easy to identify two levels of electronic signals. We chose 0 and 1 so that we can do complex mathematics in series of small steps. But why do we still do it. Why not lookup for alternatives.

Friday, July 15, 2005

Computing creates a different world which is not easily manageable. Why ?
let me be more clear.

We have a raw resources, developers/manufacturer and end -user. Now if i have an object say knife it is really multipurpose for the "end-user". The developer/manufacturer doesnt specify as to how this knife may be used or it can be used for killing only or cutting vegetable only.

The argument software(s/w) companies give is that "knowledge" as to the the "know how" of making a s/w or doing a task by s/w is easily transferable and copyable so they would be out of business if they give there knowledge for free with the product

This is not so with knife. Because one cannot create another knife out of a knife and call it his own.

now let me get back to the origianl statement.
If i give a product to my customer he can push it pull it throw it he can do anything but software is such a "constraint" thing. A software module can be used in only one way. Try seeing software as an object and see the differences.....

Wednesday, April 20, 2005

meaning of meaning

Our notions of meaning is that of dictionary as a list of words and some text related with each word. But these are sentences themselves who are composed of other words. So either they are in a loop or a netoork in which meaning cannot be assigned to an entity in isolation but to network of relationship amongst these words.

Tuesday, April 19, 2005

Blabbering of the cerebrum

Is there an absolute truth an axiom around which things can be implicated or are there a network of words/ideas which collude to make a meaning out of it. Let me take an example of search for a meaning. In a simpler case we search for meanings of words(on a different level we search for meaning of life). We look for words and then there meaning which themselves are words we can go on and on and on would there be an end of it. No. so out of this loop where does meaning arise.

In the case of absolute truth as in mathematics we define an axiom around which we implicate there is no questioning of the axiom. it is always right. Take geomtery we define a point as a figure with no shape, size which has no length or breadth and moving on we define lines, planes etc then implecate there relations.

Saturday, February 19, 2005

Tale of three cities

went ahmedabad baroda and back for GATE. The school had stocious facilities. The exam was supposed to start at 9:30 but we got the ORS sheet at 9:25 only. That too I was the only CS candidate in the whole centre. It was given 10 min late !!!! what man is this supposed to be practise of one of our greatest engineering centers of India.

Tuesday, February 08, 2005

I feel computing in general needs a paradigm shift. We should rethink about what exactly is a computer and computation. All that we think of is bits and bytes but we dont challenge the basic assumptions. Why is that we should have a binary system? Okay some people may say that electronic circuits can work best if there are only two levels/states. But can we do the same thing using different technology may be optical computing???(that is only stuff that came to my mind) Why is necessary to have the same one CPU, input and output device??? Can we create an array of small size somethings with computation going on in each of them and they synchronize somehow so as to give a coherent, meaningful thing. Please dont think i am talking of many CHIPS (I like that word though) working together....

Thursday, February 03, 2005

!!

I was reading a book called 'Sync'. It deals with synchronization amongst animals, insects, brain/heart cells out of disorganized systems. The guy has studied fireflies and gives numerous examples of such stuff. The problem is like there are numerous oscillators(say pendulum or RC-Circuits) and they can start with any charge(phase) with certain affect on each other soon they synchronize like crickets chirping together. There is no central control over the process. Somehow democratically they manage it amongst themselves. But doesnt exist in all the systems.
I could not understand the whole stuff but it said that in general there is a threshold value till which there is anarchy then the order appears. the graph that shows this behaviour reminded me of something.
In another book "Six Degrees: Science of Connected Age" the author dealt with random graphs and how social networks develop. He also showed the within a random graph the connectedness tended to be disordered but after a threshold the behaviour rised to a saturation level exponentially moving upwards but bend downwards.....
Strange and wierd non-linear is the new World gonna be....

Sunday, January 30, 2005

Context Free Grammar

In the context of context free grammar i thought of one thing which may help someone in making a grammar/testing ones own while developing. There are terminal and non terminals in a grammar. we start with a starting non-terminal(S) then apply any of grammatical rules any number of times to it to finally create a string of alphabets with terminals only. eg. S->aAb S->ab will give all those non empty string which have a's followed by equal number of b's.

Now the thing is we can look the other non-Terminals here (A in this case) as representative of the property of the string that we want to produce (equal a's followed by equal b') So what all can we do to maintain this property. add a's and b's before and after the string

Now one can propose the grammar S->A and A->Ab A->aA but it fails in one fact mentioned above (any of the grammar rules any number of times) so if i apply S->Ab 3 times and S->aA 4 times then the numbers dont match. So the rules can be applied in any order and any number of times.

We can imagine so because in context free grammars except for null transistion (A->e e is null string) all other possible rules can only increase the length of unprepared string. And it is a qood visualization technique also it looks like loop invariance i learned in formal program developement course...

Friday, January 28, 2005

Played CounterStrike for the whole day at least I fagged lesser today because of that. Now I can say that I can play okay. Atleast I can kill one or two people in that.

Then "Meri Aatma Jag Gayi" I had to do my BTech Project work. The optimization algorithm was a bit easier as given in CLR. Atleast I could get a hang of it what was going on. The name of algo was simplex i though it was because of some simplicity it should :-) but simplex is some sort of n-dimensional figure obtained by all the points that satisfy all the constraints. In 2-d it may form a polygon

Basically the problem is Combinatorial Auctioning. Insted of auctioning individual items now the auctioneer shows them multiple items and each one of them have to submit "a" price for a subset of items they want. Note that they dont price the items individually but price the set of items they want. Now there are two problems to it. One is given a bidder has some amount of money she/he wants to invest it in ""best"" manner. The other computationally hard task is to determine who the winner is given the bids.

No there are two approaches to the problem 1. Constraint Programming 2. Linear Programming (LP)
After much deliberations I have to follow the second one. Actually a variant of the second one called Mixed Integer Programming (MIP).

Though i have studied MIP a little but how to model our problem as MIP is still foggy
Adios .....

Tuesday, January 18, 2005

Industrial Revolution and Computer Architecture

Integration/Centralization/Concentration was one of the key features of Industrial Revolution (IR). By this term I not only mean changes in methods of production, distribution or economy in general, but the whole change that took in the world view during those times. Alvin Toffler termed it as Second Wave because it was not a single phenomenon or a single independent variable over which other depended.

Nation States, Factories, Corporate Organizations show high degree if concentration activities. Earlier the geography was divided amongst kingdoms which were more or less a power mesh(mess) amongst king and nobles and allegiances of landlords. The control of the powerful diminished with the distance from the power source. Second Wave gave birth to nation state were the control was strictly defined with barb wired or precisely defined geographical areas of a nation, similar laws of a single nation, an integrated economy. A behemoth represented by single entity a monarch/president/prime minister.

Factories where a huge place where all the raw material was "concentrated" for production and then distributed there after. The power structure of corporate was clearly defined in a central head/group with clear cut heirarchical roles.

We can find few analogies in Computer Architecure as well. What we have as a computer is a three stage device Input/Processing/ Output. For processing we have a microprocessor or a Central Processing Unit. where all the inputs are concentrated to be dealt with.

Although we are now talking of distributed computing where the processing load is distributed but this processing is different from that one. This one is a more higher level of information dealing where in a high level query or a http request may be distributed. But it seems more of the same we have lots of CPUs distributed over.

The earler devices are "peripherals" or the boundaries of this central scheme. Minial state subjects that are to be kept at the "periphery".

What i want to say is that we have to move to a different type of processing at the most basic level . We have to change our strictly defined views of computation as number crunching or binary jugglery and secondly find computation in different physical processes may be.

We can have a host of devices each a separate entity in itself with minimal, small processing unit and through this decentralized, fragmented network a convergence/meaning should emerge.

I know the last part of this blog is highly vague and absurd but these are jsut my thoughts not a whitepaper..............

Monday, January 17, 2005

Starting

Just started blogging here do look out some of them in thequark.blog.com