Few things happened at Jammu Airport which defies all economics:
1) Taxi service is controlled by a union guy. I wanted a taxi for a day without specifying how much kilometer I will travel. The guy simply refused to give me a per km rate as his commission depends on total value of the travel charges. With per KM model he doesn't knows beforehand what is his commission and hence the refusal to act on this stupid per KM model.
2) The taxis are assigned in round robin fashion. As the number of taxis increase without any increase in tourist traffic (less demand and more supply) the taxi charges will be increased to compensate the decrease in per taxi profit.
Rohit Karlupia's Blog - Moved to https://znvy.substack.com
Monday, August 30, 2010
Sunday, August 29, 2010
Demand & Supply
One of the fundamental premises of classical economics is the rule of demand and supply. In a free market when demand is more and supply is less, prices go high and when demand is less and supply is more, the prices go down. This works most of the time but not all the time. Here is when it doesn't works.
- Free markets are hard to achieve. Typically we have less number of producers and high number of consumers in any market. This gives unfair advantage to producers to artificially keep the prices high simply because their number is small enough to organize. Real Estate, Sabzi Mandi, Auto Stand, etc are some of the places where producers will typically unite and charge high prices. With GroupOn and other demand aggregator sites, what we now see in consumers uniting to create artificially lower demand to impact the prices. This would not be required in a free market.
- The second factor is how many times the buying decision is taken. We don't change phone numbers often, which means even if the new plan from Airtel is very good, it will not create enough demand. If I have bought a house at some price, any changes is price later are irrelevant for me. The same is the case with home loan, because of the switching charges and no guaranty by the bank on the floating home loan rate. Only when the buying happens over and over again, it is possible for the demand/supply rule to be effective. If it doesn't happens often enough, the equilibrium is lost. Same is the case with representative democracy where we end up voting only once in five years. Demand/Supply will not work if consumers just have to make this decision only once or twice. The markets will only be fair if consumer needs to choose over and over and not when they are stuck with their choice for lifetime or a big duration of time.
- The third factor is the time of delivery of the product or service. If the product is only scheduled to be delivered, the decision of payment has already been made and the quality of service/product doesn't comes into picture, only its expectation. When an enterprise buys some software from other company, it is paying for the product as well as the maintenance charges which will happen only in the future. When we sit in an auto, we will know if his meter is bad or the driver is slow or reckless only when have made the buying decision. Or when buying a house, the house will be delivered only in the future which means actual cost of house will be known only in the future. What this really means is that it is impossible for us to take an informed decision about the purchase or at least is fairly complicated decision to make, which gives the producer unfair advantage it terms of setting prices.
What I want to say is that their exist enough markets which appears to be free but are not, because they don't give consumers enough time/chances to revise their decisions and this gives unfair advantage to the producers, which means fair market theory fails and we need government intervention or group buying or really establish fair prices in these markets.
Sunday, August 22, 2010
Principles
Every subject, philosophy, area of interest defines some set of principles which provide the basic framework for thinking about the subject. Be it physics or computer science or politics or economics, every subject will define something. It is impossible to talk about anything unless we define it. This act of definition does two things: it simplifies thinking about the subject and at the same time what is doesn't defines becomes insignificant, forgettable. Think of a clean sheet of paper and then think of a line drawn on it or a circle. Suddenly we have a left side and a right side or inside of circle and outside of the circle. The act of definition allows us to focus on somethings and make us blind to what is not defined.
Einstein talked about countable and uncountable things, I am taking this one step behind....only what is defined could be countable or uncountable, what is not defined is simply outside the scope, irrelevant, unknown, unthinkable.
As a programmer I need to define endless concepts to simplify my code. And often the concepts become weak when new features are added, which break the existing code contracts. I don't think it is possible to avoid inventing concepts, but I feel the less the better. If it was possible to write code without inventing these concepts, I would be happy, but they are necessary evil. They allow understanding the code, they make some things very easy to do, but the very act of defining them limits the kind of problems that can be solved using them. And eventually the code rewrite/refactoring is needed.
I find this very similar to what happens in life, except that the code is the "language" we talk (the sum total of human knowledge) and every one speaking that language is its "developer". The whole world is writing a software called "language" and it is hard to change meanings when everyone in the world is working on the same piece of code. So the human race continues to be backward compatible, maintaining the legacy code, even though we might be badly needing a rewrite. Things like nation states, religion, money, government, inheritance, etc. the foundations of our existence may already have reached their end of life, but we will continue to be trapped because we defined them sometime in our history. May be the problem of poverty, corruption, unemployment, wars, nuclear race, global warming, religious intolerance, alienation, etc cannot be solved in the realm of our "language". They are end result or logically valid outcomes of the conceptual models of world we have defined over the years.
May be we need a redesign but that too will need to be defined...and then thousands of years later it will also becomes obsolete.
Einstein talked about countable and uncountable things, I am taking this one step behind....only what is defined could be countable or uncountable, what is not defined is simply outside the scope, irrelevant, unknown, unthinkable.
As a programmer I need to define endless concepts to simplify my code. And often the concepts become weak when new features are added, which break the existing code contracts. I don't think it is possible to avoid inventing concepts, but I feel the less the better. If it was possible to write code without inventing these concepts, I would be happy, but they are necessary evil. They allow understanding the code, they make some things very easy to do, but the very act of defining them limits the kind of problems that can be solved using them. And eventually the code rewrite/refactoring is needed.
I find this very similar to what happens in life, except that the code is the "language" we talk (the sum total of human knowledge) and every one speaking that language is its "developer". The whole world is writing a software called "language" and it is hard to change meanings when everyone in the world is working on the same piece of code. So the human race continues to be backward compatible, maintaining the legacy code, even though we might be badly needing a rewrite. Things like nation states, religion, money, government, inheritance, etc. the foundations of our existence may already have reached their end of life, but we will continue to be trapped because we defined them sometime in our history. May be the problem of poverty, corruption, unemployment, wars, nuclear race, global warming, religious intolerance, alienation, etc cannot be solved in the realm of our "language". They are end result or logically valid outcomes of the conceptual models of world we have defined over the years.
May be we need a redesign but that too will need to be defined...and then thousands of years later it will also becomes obsolete.
Understanding
Everybody wants people in their lives to be understanding. The point at which we believe we understood is exactly the point at which we stop understanding. This is fairly obvious. What is the point of trying to understand when you have understood. But what if you have not understood but you think you have? When we are in conversation with the belief that we may not have understood, that is when we really are in a position to understand and are being understanding.
Saturday, August 14, 2010
Thoughts on OS
OS design has not changed much from what we read in the text books. This says a lot about progress in Operating Systems. Yes the OS has become much more complex, much more efficient and much more faster, but we have not changed it fundamentally for a long time now. The computing industry as a whole has had a fantastic run in the last two decades but somehow OS was missed.
Here is my vision for the next generation of Operating Systems.
Here is my vision for the next generation of Operating Systems.
- OS is free and can be open source.
- Applications can only be installed via Application Store (iPhone/iPad Model). Someone verifiable owns every application that runs on the OS.
- Application updates are owned and installed via Application Store. No need to write your own update installer and delay system startup.
- Non Application Store owned Applications run in Virtualized Environment. To make sure you can run your hello world.
- Applications are all free to install, with may be one month trial period and zero commitment. No need to ask for email address and how you found us to get a license key. OS ensure that your application is not used without user agreement to pay for the services.
- Applications are charged by usage. OS defines usage. Applications define charges. The usage could be how much time the app was running or was being viewed or interacted with or amount of data saved or amount of memory used.
- Applications can use user data, with users permission. Access is defined and controlled by OS. Don't store everything about user in your own format. Use what user has already defined. This could be font sizes or my picture or folder to save things or auto backup policy, etc
- Applications can add new system calls and interfaces. Other applications can use those "system calls and interfaces". These higher level "system calls" can be the basis for new Applications. This is the API model. First everyone was making websites and now everyone is exposing API's. What if the API was dynamically available in the OS itself and instead of people writing new websites using the API, used the same API to build native applications.
- The higher level system calls can be local as well as remote. Thus Applications would have the choice of implementing these system calls by sending over code to the OS or ask OS to send over the API arguments to the remote service.
- Every one in the API stack is paid by usage. If someone writes a good cypto algorithm and tons of applications use it, he is paid, even though he never created an application in the current sense of software development. My dear dear open source developers would finally avoid putting GNU license in the code and can easily make some money.
I guess the place I am coming from is that instead of making browser the OS, why not let OS be the browser. It is much better place to implement the functionality that browsers are being called upon to support.
The other problem worth fixing is the licensing. SaaS providers have done a good job but the problem is everyone needs to handle the scalability aspects of it. If OS could handle the subscriptions based pricing, SaaS companies can let the code run on the client machine itself. Downloaded software is the best scalable software architecture I have ever seen.
Yet another problem is the open source free software. I hate it. Well not exactly hate it but it is unfair. Developer should get credit for the software he writes and hence the whole concept of higher level system calls. Write whatever part of the software you are comfortable with and OS will ensure you get the money when someone decides to use it. The app store funda essentially ensures responsibility for your software. It is like a license to drive a vehicle..doesn't prevents accidents but everyone knows whom to blame. More than OS, what I am proposing is a business model for open software development. Don't worry about marketing, don't worry how you will get the money, don't worry how to patch and upgrade the software, don't even worry about scalability -- just write quality software. Reuse what you can from existing "high level system calls" without signing deals and just focus on getting things done for your customer. Amen.
The other problem worth fixing is the licensing. SaaS providers have done a good job but the problem is everyone needs to handle the scalability aspects of it. If OS could handle the subscriptions based pricing, SaaS companies can let the code run on the client machine itself. Downloaded software is the best scalable software architecture I have ever seen.
Yet another problem is the open source free software. I hate it. Well not exactly hate it but it is unfair. Developer should get credit for the software he writes and hence the whole concept of higher level system calls. Write whatever part of the software you are comfortable with and OS will ensure you get the money when someone decides to use it. The app store funda essentially ensures responsibility for your software. It is like a license to drive a vehicle..doesn't prevents accidents but everyone knows whom to blame. More than OS, what I am proposing is a business model for open software development. Don't worry about marketing, don't worry how you will get the money, don't worry how to patch and upgrade the software, don't even worry about scalability -- just write quality software. Reuse what you can from existing "high level system calls" without signing deals and just focus on getting things done for your customer. Amen.
Subscribe to:
Posts (Atom)