Sunday, March 20, 2016

Helicopter money - A savior of Capitalism or a glimpse to a Socialist Society?

I recently read Michael Roberts analysis on the merits of Helicopter money as a savior of Capitalism.

You can read his analysis in his blog:
https://thenextrecession.wordpress.com/2013/02/21/helicopter-money-and-the-chicago-plan/

I argue that Helicopter money should be viewed as a glimpse to a future socialist Society, not as a savior to Capitalism. Here is my response to Michael's article:

Michael,
I think that you have tried to answer two different problems with the same answer.

Helicopter money cannot save capitalism from itself as profits are the determinant force that drives investment.

Helicopter money is an alternative to Capitalism in which investment is decided democratically. If used inside Capitalism, then it is like a drug that prevents Capitalism from destroying itself for a period of time, if of course the money go to the real economy.

Thus Keynesians make a double mistake.

First, they believe that printing money will save Capitalism from itself. It can’t. It is just an aspirin.

Secondly, because of the first mistake, they do not see that helicopter money works because it is not controlled by profits and thus the only solution is to go to an economy without profits with increased democratic control.

Helicopter money is anticapitalist. Keynesians do not see it that way.
In your effort to explain the errors of Keynesian Economic thinking, you have accepted helicopter money as a method to save Capitalism rather than what it is, a glimpse into an economy not driven by profit.

Friday, January 1, 2016

Testing Complex Software manually is impossible

Suppose that we have a program that we managed to split into multiple pure functions.

Each pure function has one a switch statemenet with 5 possible cases, thus 5 different paths of code execution.
Let us assume that the output of one function is the input of another. In other words, our main program is the composition of those functions.

Let us assume that the total number of functions is n.

How many unit tests do we need to make if n=6?
number of functions * number of code execution paths = 6 * 5 = 30

How many tests do we need to make to test the global behavior of our program if n=6?

5^6 = 15624

One may say then that we should only do unit tests and avoid global tests. This is wrong.
Testing allows us to check whether the behavior of a function matches our intuition and our expectations. Does it have the results we designed it to give?

Thus the global behavior might indeed be determined by the behavior of all the functions, but can that tell us anything about the behavior of the whole system? Can it tell us if the global function does what it is supposed to do from our design?


So, the only way to test the global behavior of programs is to use fuzzers that check all possible paths of our code.

But fuzzing doesn't mean giving random data as input. That would not work. One needs to create data that will trigger new paths of execution. A good article on fuzzing can be found here.

Friday, October 23, 2015

Measuring Democracy and its Cost.

In my previous blog post, I have pointed that it is important to create a political and social movement around democracy and being driven by those ethics, to propose new forms of social organizations as they become available with new technological innovations.

The problem that arises, if we have the goal of democracy, is that there are multiple types of democracies. Most of us live in so-called Democracies. Others like me do not consider this a Democracy. Instead I say that it is an oligarchy.  Leninists prefer democratic centralism in their party and delegative democracy in Society. Anarchists prefer direct democracy.  New software applications allow the practice of liquid democracy. We all consider ourselves democrats but noone considers the other a democrat. It is apparent that any social movement based on democracy would fail because of the ambiguity of the goal.

The problem with the above definitions is that they mingle the implementation with the result. 
In the same way that software developers use tests to check the output of a function and do not care about the implementation of the function if the results are the same, our social movement about democracy should develop such tests to check whether an implementation is democratic or not. 

What is democracy?

It is a decision process in which the majority opinion is accepted as the decision of the whole.

A simple test

 Thus for any of the above systems, a way to test its level of democracy would be to make surveys about different topics and check whether the majority opinion is the one that has been accepted.

This is not as simple as it seems though.  The output of any democratic implementation should be checked if it has certain characteristics.


* Cost

The cost of the decision making process is determined by the sum of the decisions of the persons that participate in the democracy divided by the number of subjects that were decided upon.

* Speed of decision making - latency

The latency of the decision making process is determined by the time it takes to make a decision. This is unrelated of the fact that the decision is the majority opinion or not.

* Convergence speed of the decisions to the majority opinion.

Here we measure the speed in which a decision changes to reflect the opinion of the majority. This could happen for many reasons:

** In order to reduce the latency and/or the cost, the implementation hastily takes decisions that can be changed in the future with a more costly decision process.

** The opinion of the people changes and that needs to be reflected on the decisions as fast as possible.

* Per-topic analysis

All of the above wouldn't be sufficient if we didn't point that each subject matter has different requirements for the above characteristics. A nuclear power plant that has a leak would require a decision mechanism that is quick when it comes to emergency situations. For the working conditions of the personnel, latency requirements can be relaxed. For non-reversible decisions, the majority opinion should be reflected immediately in the decision.

Conclusion

I think that it is time to introduce a scientific analysis of the different types of democracies. This way, we can have plenty of statistical or theoretical data to show that the world we live in is not as democratic as it seems to be and that we should fight for a better democracy.

Wednesday, October 21, 2015

It is about Democracy, not economic Efficiency, Robustness or Equitable distribution of revenue.

Following the 2008 economic crisis worldwide and the crisis in Greece, people around the world are trying to change the world.

There are many ways we can improve society:

* A recent credit suisse report has pointed once more the great wealth distribution inequalities among people with the one percent owning 50% of the wealth.

* The free market is not as free as it seems. Private interests control most of the production sectors, doing deals behind the tables, setting prices as they like and blocking competition from entering. At the same time , the non collaboration of firms in research and in production leads to the doubling of research and production costs.

* The market doesn't care about the environment or any other externalities that might affect the local communities.

* Most economic activity is orchestrated by centralized points(page 200) of power. It those points fail, look at the failure of the recent banking sector, then all of the economy will fail.

All of the above problems are a good reason to try to improve society. Below are some of the solutions that have been proposed:

* Political activists have proposed Socialism.
* Libertarians have proposed technological solutions:

** Bitcoin is trying to reduce the cost of financial transactions while at the same time remove the control of the financial system by the central bank.

** The free/open software movement has reduced the costs of producing software. The open hardware movement is trying to do the same for hardware. Big firms have invested in this sector. IBM has recently committed to spending 1 billion dollars on linux. Facebook has created the open compute project to create open datacenter server designs.

** New types of economic organizations have emerged that remove friction in the job market. Anyone can participate in the production process with a tap on their phone. Uber has created a smartphone app that allows any person to become a taxi driver. Amazon has created an app for everyone to become a delivery boy in their 24-hour delivery system.
  The open value network model has proposed a new form of organization in which networks of producers form naturally so as to produce value that is then redistributed equitably to the participants.
  Blockchain activists want to enable the creation of DAOs, or decentralized autonomous organizations that enable the production of value across the internet by any person and at the same time be independent from the state and its interference.

** My work on ryaki is building a new financial system that removes the banks and the firms. Instead the production is done in an open value network and investments happen in a distributed way while at the same time guaranteeing that inequalities in wealth and production control will never emerge.

All of the above problems and solutions have to do with practical problems. In others words, we do not do this because it is ethically correct bu rather because of efficiency or robustness of the economy. One interesting question then arises:

If an ethical solution required a reduction in efficiency or robustness, would one propose the inefficient ethical solution or the efficient unethical?

This question has already been posed and answered by the Free Software Foundation.

When it tries to explain the difference between open source software and free software, this is what it writes:

'The fundamental difference between the two movements is in their values, their ways of looking at the world. For the Open Source movement, the issue of whether software should be open source is a practical question, not an ethical one. As one person put it, “Open source is a development methodology; free software is a social movement.” For the Open Source movement, non-free software is a suboptimal solution. For the Free Software movement, non-free software is a social problem and free software is the solution.'

I think that it is time to stop speaking about the new open and distributed structures in practical terms and introduce an ethical framework. This will allow us to speak about our values and we will be consistent to those values even if technology changes what is efficient and what is not.

If the Free Software foundation has freedom as its main ethical point, the movement around distributed open organizations should have Democracy as its ethical value.

We want openness so that everyone can participate in the production process. We want distributed organizations because we want the control to be distributed to as many people as possible. We want people that are affected by political or economic decisions to be the only ones that decide. In other words we want the give the power back to the people.

With the goal of Democracy as the primary goal of a political and social movement, this allows us to look critically at organizations that are part of the wider movement.

* Most political parties do not care about democracy that much. For them , the end result is more important than the process. Thus, their structure has nothing to do with democracy. For them democracy is a theoretical thing that will happen when they succeed in their goals. A good example to this is the English SWP party's undemocratic rule over the movement. Syriza, the greek political party that won the elections in 2015 is not in any way democratic. Decisions are made by a closed group of people that are in the government disregarding the decisions of the party. They do not want to give the power to the people but instead to rule over the people as a benevolent oligarchy.

* One of the organizations that has been influential in the peer to peer movement, the p2pfoundation, doesn't care about democracy as well. Their argument is simple. The internet and the open source movement have introduced new forms of production that are unavoidable. Thus the only thing we can do is to help them succeed as soon as possible and shape them in a form that are in favor of society. Then, they believe that through this economic transformation, we will also have a political transformation. This has led the p2pfoundation to sacrifice political movements form below in order to collaborate with governments for certain economic reforms. To put it another way, political change will not come by the people through democratic political movements from below.

By emphasizing our ethics over practicality, we remain consistent with our ethics both on our process of transforming society and on the qualities of our proposals.

Laws defined on Sets


I have been thinking on how to define laws that take effect only on the people that agree with them. The main problem in this case is that each person would define laws for himself and reject the laws of the others.

The solution that I found is a very simple one. Each one of us can decide to extend his laws to other people and then decide on the laws in a democratic way.

What I think will happen is that the boundaries of the sets will stabilize.

Let me give you an example:

Let's say that 3 people are in a neighborhood and the 2 people decide that it is prohibited to smoke. They extend that law to the other person. For the other person to change this law, he would have to extend this law to other people that agree with him. Others that do not live in this neighborhood will not care for the applicability of that law and will be indifferent. (except due to other reasons). On the contrary, smokers of the neighborhood will join the democratic process and will reject that law.

As we understand from the example, the majority will always win when they care to participate in the democratic process. That allows laws to be applied only to specific people without having to define the boundaries based on a priori knowledge of the locality of the problem.

For example,  Laws to protect the environment will be applied globally, because all the people of the earth will be interested in them. The boundary of the set will be formed naturally.