How much is an idea worth? Between $100 and $1000 is what I got.

If you are an engineer or a programmer I’m sure people come to you with “awesome” ideas all the time, and they probably are protective of their ideas as if they have a brick of rhodium in their hands.

Now if you have some experience trying to convert an idea into a profitable business then you know that ideas aren't worth very much. And a lot has been said about this.

Here, as I always try in my posts, I would like to give you another point of view, approaching this issue in a more mathematical way of reasoning. So let’s use something similar to the beautiful logic tool of proof by contradiction.

Let’s think that you have a great idea. Let’s suppose you have an idea for a search algorithm that is ten times better than Google’s algorithm and let’s suppose that nobody will have a similar idea and nobody will be able to copy it or steal it.
Now you need to think if it is possible to implement it. Is it theoretically, technically and economically possible and you have enough money to implement it? Let’s suppose the answer is yes.
Now you need to make people use it. Do you have the money to advertise it and attract users? Let’s suppose the answer is yes.
Now you need to earn money each time people use it. You can charge them or put advertising. Let’s suppose here that you copy the advertising model of Google.
Now you need to make sure that your revenue is greater than the operating cost and taxes. Let’s suppose you can achieve this.
Now you are rich!

Like you can see its not impossible but there are a lot of suppose between the idea and the “you are rich” and each suppose seems to be pretty hard.

In general, and theoretically, the best idea would be something that only you can do (or you can patent), that is very simple for you to do it and that you can charge other people a lot.

An important thing to consider is that there are a lot of people in the world and the way all think is pretty similar so probably there are a lot of people thinking about something that is very similar to your idea. In fact I’m sure that this already happened to you. You have an idea then you search on the internet and there is someone already trying to do the same thing. It probably also happened to you when studying science, you read a couple of theorems in a book and you came up with a new one just to realize that it is in the next page of the book.

Beside all of this I really like to think about new ideas. I have a lot of ideas written down and I usually sell them or give them for free if I think that I can’t implement them or I can’t get enough money or I can’t achieve any of the issues I mentioned before. Lately I’ve been participating in idea generation contests on TopCoder where you submit your idea and if the client chooses it then you get paid. I got paid between $100 and $1000 per idea and I’ve been quite successful there, some of my ideas where selected by companies like Alcatel-Lucent, PayPal, AOL, Truveo, Ribbit, BestBuy, TopCoder and others. It’s not a lot of money but I think it’s fair enough for just an idea.

While what I have stated before is kind of disappointing about ideas this shouldn’t discourage you to pursuit your idea, it should motivate you because making that idea a reality is what it worth a lot. In fact besides that I have sold a lot of ideas I’ve been working for more than three years now on my own startup which is now profitable and growing. Maybe it’s not the coolest or innovative idea but it’s the one that I thought it was achievable considering where I am (Latin America), the money I got (almost nothing) and a lot of other aspects. And I have to say that I’m pretty happy with the choices I’ve made.

Learning isn’t fun. It was never fun. And it will never be fun.

If you agree with the following definition of learning:

Learning is the process of failing repeatedly in the pursuit of achieving something until you finally succeed.

Then learning isn’t fun by definition. Let’s prove it:
  • If you don’t like failing then obviously it’s not fun because failing is part of the process of learning.
  • If you do like failing then you won’t learn anything because you are already happy with the result of failing so you don’t have much incentive to succeed.

But trying to make learning fun is something that everybody is trying to do these days so probably they mean something different than fun. Usually this new wave of people proposing fun learning put games as an example. So let’s create a couple more definitions in order to understand where this new wave goes:

Benefit: is the benefit or reward that a student gets when the student achieves the task that it is supposed to learn. Examples: if she is learning to play guitar then the reward can be being able to play a song that she likes or becoming a famous guitarist.

Cost: is the cost of failing in the learning process. This can mean the cost of mental and physical effort. It can mean the cost of spending a lot of time. It can mean the cost of humiliation in front of other people. Etcetera.

Every time a person wants to learn something the person weights the Benefit versus the Cost of learning. If the benefit is zero or the cost is infinite then nobody will want to learn that.
An interesting property of learning is that the higher the cost the faster people learn because people don’t want to make the same costly mistake again, but if the cost is higher than certain threshold the person will quit learning.
Also interesting is that both the Benefit and the Cost of learning a specific activity are assigned by each person independently and it also varies in function of time for the same person. For example getting hurt can have a very low associated cost for one person and very high for another.

In games, especially video games, in order to make people play more the Cost is reduced to nearly zero, you usually play alone or in anonymous mode so there is almost no chance of other people mocking you, the physical and mental effort is also minimal, you only need to make a couple of clicks or press a couple of buttons in order to construct an entire city or to make your character play golf even better than Tiger Woods. With the rewards, game creators try to trick the mind to make rewards look as if they were bigger, like telling you that you are the best of the world. While this doesn't fool many people, the ratio Reward/Cost is still very engaging due the low Cost.

The problem when you want to translate this technique to the learning world is that the Costs are much much higher than in games. Learning to play an instrument, or learning to write a computer program or getting in shape take at least between 6 and 12 month and a lot of physical and mental effort in comparison with learning to play a video game which actually takes a couple of clicks and less than a day.

While almost everything I wrote before is not very positive about game mechanics I think there are some good things in this new wave of gamification or game mechanization. A lot of people are trying to break hard and complex things to learn into smaller parts and give rewards for small progress which helps people to measure progress, keeps them motivated and reduce the number of people that quits.

Understanding

Here I just want to share one of the greatest quotes I've heard from one of my teachers:

"At first you probably won't understand this but then you will do a lot of exercises until suddenly one day you start thinking you understand it." .- Nicolas Wolovick

He obviously said this as a joke, partly at least, but what he said help me a lot with the way I try to understand things. Now I can deal much better with not understanding some parts of some complex theories.

I leave the interpretation of this quote to the reader. But here is a hint of my interpretation.

Breaking the The Zen of Python

I think the Zen of Python is great. It's a list of good practices that will make your code less error prone and easier to understand for you and other programmers.

But if you are trying to create a programming language for a machine with artificial intelligence you will likely want to break several of the principles of the Zen of Python.

Why is that? Because the most "intelligent" machine that we know today is the human. Humans are "programmed" using natural languages like English. And natural languages break a lot of the principles of the Zen of Python.

These are at least some of the principles that you would like to break:
  • Simple is better than complex: This is subjective, simple for one person can mean complex for another person. And more important, the world is complex as Vladimir Vapnik said
  • Errors should never pass silently: People give orders and want results, no excuses about why the order was not executed. You want as much error tolerance as you can get.
  • In the face of ambiguity, refuse the temptation to guess: Ambiguity is not that bad because it can lead to creativity.
  • Explicit is better than implicit: Not always

For current programmers this may sound like hell, why would you want a programming language that doesn't always do what you asked to do? But that's the way we talk with other people. Every time you ask something to a person you expect some reaction from that person but you are never 100% sure what the reaction of that person will be.

These kind of "fuzzy programming languages" will not replace current programming languages but they will allow to create new and interesting applications.

One thing that will be paradoxical is that this kind of programs will be harder to understand by another programmer but easier to maintain: harder to understand because each programmer would use a different sintax to do the same functionality. Easier to maintain if you can delete the old functionality and add new one. Because it's easier to learn.

To Be Good at Math You Don't Need to Understand Everything

I always thought that when you study something you need to understand absolutely everything, specially in Math and Physics. One of my high school teachers told me once that you really understand something when you are able to explain that to someone who doesn't know anything about it. First I thought he was right and I wanted to learn absolutely everything and it worked great for the basic stuff. Then when I was studying more complex things I realized that it was impossible to keep doing this. Finally I realized that my teacher's statement is partially wrong and what it is worst is that it will slow down your learning and creativity process. I realized this after learning a lot of math, logic, formal languages and how definitions and theorems work.

The problem can be easily seen in this Einstein anecdote: A journalist asked Einstein "Can you explain the Law of Relativity?" and Einstein replied, "Can you explain how you fry an egg?". The reporter looked puzzled and replied, "Well, yes, yes I can", to which Einstein replied, "Well, do it, but I guess I do not know what an egg, or a pan, or oil, nor the fire are".

But here is a Richard Feynman's video that points out the problem much better:


A Definition is something that you accept without questioning, maybe there are good reasons for that definition or maybe not but you don't care, the only thing that you need to know is that it can be useful for something later. So every time you find the word definition there is nothing to understand.
A Theorem is something that you must prove by using only the definitions that you have accepted. So every time you see the word theorem there is something important that you need to understand.
But (and this is the important thing) once a theorem is proved then you can take it as a definition. So you can put your effort in trying to find a new theorem instead of trying to understand an old one that was already proved. Of course, leaning the proof of old theorems will help you to find new ones but what I really want to point out is that there is a trade-off between where you want to start and how far you want to go, there are things that you won't need to understand in order to create new and useful things.
For example you take that 2+3=5 is a definition and this allows to use it to make really fast calculations when you are shopping for something so you get the correct change and don't lose money. But 2+3=5 can be actually a theorem and you will need to prove it and this will take you probably a couple of hours instead of a second. Another good example is to take math as a tool, in the same way as a hammer is a tool, if you want to build a house and you just want a hammer to hit a nail then there is no need to know how the electromagnetic forces of the atoms of the hammer work in order to make the nail go inside the wood.

My approach now is: learn or memorize something and try to apply that to create something new or more complex, and only try to understand it if you really need it to do one of those two things.
Today knowledge is so vast that you must specialize in order to came up with new things.

The Future of Education on the Web and The Curse of Multiple Choice Tests

Is great to see new startups doing great things for education, it seems that finally something useful is emerging for students who want to learn something on the web.

I just want to warn about something I realized when I was doing my final work about online education at my university: Multiple Choice Tests.

Multiple Choice Tests are bad because of the same reason they are good. Let me explain this, Multiple Choice Tests were created to be easily checked for correctness, this makes possible that anyone with the answers can correct these tests even when they don’t know anything about the subject of the test. This “advantage” of Multiple Choice Tests makes them perfect to be processed by computers. So when you are developing an eLearning program implementing Multiple Choice Tests is great because is really easy to implement. But is it also good for helping students to learn?

The answer is no. They were conceived to be easy to correct but not to be a great way of teaching. They are great for the developers who are programming the eLearning site but not for the students.

A good method for testing and allow learning at the same time will be one where the student has more feedback about the solution she entered. Where the student can see intermediate results of her solution, where the student can modify some parts of her solution and then be able to see the different outcome. In conclusion something where the student can learn from mistakes.

Natural Language Processing and Artificial Intelligence would be a perfect solution but that is not possible now and won't be possible in the near future.

The solution now are Programming Languages or Formal Languages in general. If students can write the solution to an exercise using a formal language this can be parsed and executed step by step giving the students a lot more feedback about their solutions and will allow much more interaction.

Take for example a problem were you need to find a function as the solution. Instead of giving a multiple choice, the computer can parse the function typed by the student and show a graph and a lot of real time information about what is she doing that will help her to understand much better what is she doing.
This is just one example, if instead of using just math we add loops and conditional statements things can become much more interesting. In my opinion, allowing students to execute their solutions step by step and getting feedback on each step helps them to improve their knowledge.

This can be applied to several subjects like Math, Physics, Chemistry, Computer Science and Economy but can’t be applied to other subjects which don’t use Formal Languages. For those subjects, sadly, Multiple Choice Tests seems to be the best option so far if you want to create automated computer tests.

Memorizing, Understanding and Minimum Description Length

When I was at school I heard teachers say to students the phrase “you must not memorize, you must understand”. But I never really understood what they meant by that until I studied Machine Learning. Now I think that I have understood what they really meant but I have also have realized that memorizing and understanding are complementary things. Let me explain this:

In Machine Learning to teach a machine something you show it several examples and then the machine must learn from those examples and predict the outcome of new examples. When the machine can only predict the provided examples we say the machine is overfitted and when it can predict correctly the outcome of new examples we say it can generalize.

Let’s see an example, we want to teach a machine the function f(x) = 2x+1. So we show some examples to the machine like
x = 1 => f(x) = 3
x = 0 => f(x) = 1
x = 2 => f(x) = 5
Then we ask the machine what is the value of f(x) if x is equal to {1,2,3,4,5,…} if the machine only guess the correct answer for x = {0,1,2} it is overfitted and if it can predict correctly f(x) for other values of x then we say the machine can generalize. Notice that generalization can be measured by the percentage of the overall new examples that a machine can guess correctly were 0% of correctness correspond to the maximum overfitting.

Now we can make an analogy by saying that by Memorizing teachers refer to Overfitting and by Understanding they refer to some degree of Generalization greater than 0.

My biggest concern about teachers saying to students that they must not memorize instead of saying that they need to learn to generalize is that Memorizing is a fundamental and mandatory part of the process of learning, understanding and generalizing.

Let’s do an interesting experiment. Read carefully and try to remember the next two sequences:
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, …
1, 19, 17, 7, 3, 6, 21, 4, …
Interesting right?
You can remember the longest one but you can’t remember the last and shortest one. This is because you compressed the first one by using things that you already know, things that you memorized before and saved in your brain. You probably compressed the first sequence to one of the following patterns: x0=1 xn=xn-1+1 or “count from 1 to 16” or for(i=1 to 16) print i; or you just pointed to the part of your brain where that sequence is saved. The second sequence is given by the recurrence equation x0 = 1 xn = (51*xn-1+37)%23 but like you don’t have nothing like this saved in your brain you need to remember the whole sequence without compressing it. We can say that you “Understood” the first sequence but you didn’t understand the second one.

There are two amazing state of the art theories that study the best way of generalize without overfitting even with a small amount of data:
Vapnik’s Statistical Learning Theory: this is a great theory about how to find the best function that separates two classes of data points in the hyperspace and it has a great practical implementation called Support Vector Machines.
Rissanen’s Minimum Description Length Theory: this is a really beautiful theory that relates compression with learning algorithms.

Conclusion: if you see that your students are “memorizing” too much, a good solution would be to give them more examples that they can relate with something they already know.

Creativity, Inspiration and Permutations

Is creativity something magical that comes from divine inspiration or is it something that machine algorithms can also achieve?

Well I’m an Engineer so sadly I don’t believe in magic or divine inspiration but luckily I feel mathematics have something magical. So I will try to prove that creativity is an algorithmic process.

Fact 1: you can’t think or imagine things that you don’t know, in other words, you can’t think or imagine things that you never sensed (saw, tasted, felt, smelled, heard). For example if someone tells you “thing about a horse” and you never saw a horse then it will be impossible to imagine a horse, or if someone tells you “remember the taste of an alligator” and you never tasted an alligator then it would be impossible for you to remember the taste of an alligator because you don’t have that taste saved in your brain. If we accept this fact we can infer that everything that we think about depends on what we know and like creativity is a thinking process then it depends on how much we know. We can write Creativity(Knowledge)

Fact 2: we can combine two or more things that we have already sensed or that we have in our brains to imagine something that we never sensed and this is what I call creativity. For example if you know what zebra, stripes and remove means then you can imagine something like a horse by mentally removing the stripes from a zebra, or if you know the taste of a chicken and a frog taste then you can imagine the taste of an alligator by combining those tastes in your brain (not sure about this because I never tasted an alligator but I hope you get the example). Another universal example is to create a fictional animal like the unicorn by combining a horse and a horn. With this second fact we can define creativity as the process of permuting knowledge. Creativity = Permutations(Knowledge)

If we divide the number of permutations over time we can know how fast a person is permuting her knowledge. This means that to increase creativity a person needs to increase her knowledge and to increase her permutation speed.

Something interesting to note is that more detailed sensors like our eyes allow us to create more detailed combinations in our brains and less detailed sensors like our tongue don’t allow us to create good combinations, this is why everything that we don’t know taste like chicken.

Can a machine algorithm be creative?

If you accept the definition of creativity that I gave above then the answer is yes and in fact computers have been doing creative things for a while. Take your smartphone for example and take a picture, then the smartphone will combine the picture with a distortion filter and it will create a new picture that you have never seen. Computers can also create drawings and musing by combining random pixels or musical notes but those creations wouldn’t make much sense for a human. That next step of deciding which creation is useful is a much important step and is a step that humans still do much better than computers. I will analyze this process of deciding which creation is useful in other post.

Past, Future and Counterintuitive Probabilities

I will present two famous real world problems of probabilities that will convince you to start learning probability and statistics.

The Monty Hall Problem

You're given the choice of three doors: behind one door is a prize; behind the others, nothing. You pick a door, and the host, who knows what's behind the doors, opens another door, which has nothing. She then says to you, "Do you want to pick the other door?"
The problem here is to know if it is to your advantage to switch your choice. The answer is yes. This is counter intuitive because you see two doors, the one you have chosen and the other that is not opened yet, and you think the probability is the same if you switch or if you stick to your first choice, 1/2, but this is not true because the host have added information when she opened a door which has nothing.
When you choose the door you have a probability of 1/3 of choosing the prize and a probability of 2/3 of choosing a door which has nothing. So your probability of choosing a door with nothing behind doubles the probability of choosing the door with the prize. Now if you have chosen a door with nothing behind (which is more probable) then the host will only have one door to choose, the other door with nothing behind and the door that left is the one with the prize so you should switch you choice.

The Casino Roulette Four Blacks in a Row

The problem here is that many people believe that if four blacks appear in a row then the probability that a black appears again is very low. So they bet on the red.
Let’s analyze why this is wrong. Assume there is no zero on the roulette to make the probability analysis simpler. The probability counter intuitiveness here surges by the fact that five blacks appear in a row is 0.5 x 0.5 x 0.5 x 0.5 x 0.5 = 0.03125 This is true but it is true only when you are predicting the future, i.e, if you can bet that the next five turns of the roulette are not going to be all black then the probability of that will be 0.03125 and you will make a lot of money but in the case where you already know that four blacks already appeared then the probability that the next will be black is 1.0 x 1.0 x 1.0 x 1.0 x 0.5 = 0.5 The probability of getting the first four blacks is 1.0 because this is already a fact, this already happened.
Probability only works when you are predicting the future; everything that has already happened has a probability of 1.0

Both problems show the importance of knowing conditional probabilities.

Statistics and probabilities are two of the newest branches of mathematics and they will become increasingly important in the next few decades because the amount of data we are collecting. A change in the education system that takes this into account must be performed like Arthur Benjamin's formula for changing math education propose.

Sports Psychology: Eliminating Regret

Sports Psychologists are doing a great job eliminating regret. Today after a sport match you will probably hear the the phrase "I'm happy because I did my best" from the loser, and you rarely will hear the phrase "I could have done better". The interesting fact that I want to analyze here is that the phrase "I did my best" is always true and the phrase "I could have done better" is always false.

These assertions can be inferred from knowing how the brain works. The brain is like a computer, it has certain amount of data that it process and gives you the best solution that it finds. Like computers, the brain never fails, it always gives you the best solution that it can find with the data it has.

In short:
I did my best. -> Yes you did.
I could have done better. -> No you couldn't.

So why we feel like we could have done better. We think we could have done better because after we choose what to do then we have the result of that action and now the brain has more information so it can choose a better solution for the same problem.

Summarizing, the player's mentality should be:
I did my best. -> Yes you did.
I could have done better. -> No you couldn't.
I can do better next time. -> Yes you can. (because now you know more)

The conclusion is, you should never regret what you did when you have lost a match or failed a test, you should focus on improving your skills over time.

Impossible is Nothing but There are a Lot of Things with Very Low Probability

If you read the title maybe you think that I'm a negative person, but this post is not about motivation, it is a post about the importance of probabilities.

When someone tells you that "impossible is nothing" I would somewhat agree with that person but the point is that he is not giving you much information. For example suppose you want to win 1,000,000 dollars, then you can buy a lottery ticket and win that million, it is not impossible but it is very improbable.

I've been participating in programming competitions for a while and I've been very successful. Programming competitions are really tough because you compete with people from all around the world who are really skilled and the difference between working and competing is that if you don't win the competition then you don't win any money, so you must pick very well in which competitions you are going to participate because if you don't pick well you will end up working a lot for no money at all.

This is why knowing if something is possible or impossible is not important, what is important is to know an accurate probability of how possible it is. If you know the approximate probability of success then you can calculate if its worth trying it. The calculation is very simple and involves two values:
  • Benefit Expected Value: Benefit x Probability of Success
  • Cost Expected Value: Cost x Probability of Failure
With this simple calculation you can know the expected benefit and the expected cost, then it is up to you to play safer or riskier.
This applies for every project that you start in your life. Precisely calculating the probabilities of success is a hard task but if you are good at doing this you will be much more successful in your ventures.

Final tip: if you really want to do something were you have very low probability of success, lets say 1 out of 100, then remember that if you try that thing 1000 times it is almost certain that you will succeed.

Like Laplace said: "Les questions les plus importantes de la vie ne sont en effet, pour la plupart, que des problèmes de probabilité."

You Can't Change Your Destiny

You can't change your destiny but not because of free will or something like that, you can't change your destiny because of what destiny means, because of the definition of destiny. If you really understand what destiny is then you will find that the phrase "change your destiny" is paradoxical.

Let me explain this:

Definition of Destiny: sequence of future events that is inevitable, i.e., sequence of future events that have a 100% probability of happening.

Then using simple logic you have two alternatives:
1. You don't know with 100% probability what the sequence of future events is and then it will be impossible to change your destiny because you don't know what your destiny is.
2. You know with 100% probability what the sequence of future events is and then you make something to change that destiny, but in this case your prediction would have been incorrect and you end with a paradox.

Education, Comunication and Languages

When I was at high school subjects like maths and physics were easier for me but tasks of the mechanical shop (I went to a school for mechanical technicians) like lathe or milling weren't my strength. Some of my mates were awesome doing those tasks and not that good on the theoretical classes. There were also some mates that were good at both but they completely lack of skills for sports. My point here is that everyone is pretty good at something, everyone has his unique ability but the problem is that the current education system doesn't improve their skills. The current education system seems to standardize everyone skills instead of improving the student skills. This video of Ken Robinson explains the problem in more detail.
Later at college I found the same problem while teaching computer programming. I had students who really liked the subject and other students who really didn't care about it. In order to avoid the standardization of the class I tried teaching the basics to the whole class and giving more complex exercises to those who were more skilled at computer programming. This resulted in two times more work and two times more questions from students but I hope I have helped those students to improve their computer programming skills a little bit.

I think one of the main reasons of this problem is that there is one teacher for many students. For improving each student skills we need more teaching diversity, this means, more specialized teachers teaching fewer students. Another reason to do this is that the amount of information that we are trying to push to students is huge and is growing faster every year. It is impossible to teach each kid what the entire humanity has learned in the last two thousand years or more. Like Wolfram proposed, we need to redefine the basics and rely more on computers.

We can make a comparison with computer chips industry, at the beginning the industry was obsessed with doing more powerful and faster chips until they reached a limit because if they try to make the chips more powerful the chips will melt. So they search for another way to keep improving the processing power of chips and they became with two solutions: multi-core processing and specialization. In my opinion that is exactly what future education needs.

Specialization means to improve each student skills from a young age so each student can become really good at a specific discipline. Now if everyone is specialized then you will need to work in groups (multi-core processing) and to do that we will need great communication skills.
The basis of communication are Languages and they should be the basis of education too. There are three types of languages that play an incredible important part in society and each one makes a special contribution to communication:
Artistic Languages: Such as paintings, music, dance, movies, etc. These are fuzzy languages because the receivers of the messages produced by these languages rarely interpret the message as the sender does. This contributes enormously to creativity.
Natural Languages: The written and spoken language (English, Spanish, etc.). In my opinion the most important language, it has the flexibility to be fuzzy or formal if it is correctly used.
Formal Languages: Like logic, mathematics and programming languages. These are the most newer languages and are extremely powerful to communicate with other people in a very precisely way. The porpoise of these languages is to allow just one interpretation.

If we want to work better in groups we need to understand and master the basics of these three different types of languages.

UPDATE: I recently found this What Is Intelligence, Anyway? By Isaac Asimov which is related with my post.

The Six Steps of a Successful Startup

  1. The Idea: This is the first step, is the most simple and the cheapest one.
  2. The Implementation: Consist of taking the idea and converting it into a reality. You need the skills, the tools and the money. Depending on the idea this can be affordable, expensive or even technically impossible.
  3. The Advertisement: Once you have implemented the idea then you need people to know it and start using it. This step should be wisely planned because you can end expending a lot of money in an inefficient way.
  4. Charging your Customers (or your Clients): If you have achieved the first three steps then you have a working product or service and several people using it. Now you just need to start charging somebody for that product or service. Yes giving free stuff is not a business, that is called charity unless that you can add a lot of advertising on it.
  5. The Profit: Do you think you were done by now? Not really. If the cost of making the product or service is greater than what you actually are charging for then you are still doing charity. So now you have to raise your prices until you get profits without losing your clients.
  6. The Happiness: Now you are done. You have now a money making machine. You can just keep making money or sell it.
That's it. Pretty simple right? No. Pretty hard actually. But that is the entrepreneurs life, only a few survive. Do you have what it takes?

The Missing Research Papers

When I was doing research about machine learning I read a lot of papers and I realized something interesting. When you are a researcher you have the pressure of getting research papers published, if you don't publish anything your scholarship will probably end or you will receive less funding from the company that you are researching for. But the real problem is that in order to get your papers published you need came up with something new that shows an improvement over the actual technology or theory or algorithm, and that is something very hard to accomplish because that is the nature of research by definition, you need to invest a lot of money and you will only succeed very few times. So most people end up writing papers where they prove the improvement of their methods by using statistical data that is not solid enough to provide statistical confidence to the results. A prove of this is how easy it is to find two research papers saying that opposite algorithms are better than each other in very similar situations.

I think this problem would be easily addressed if researchers start to publish more of the missing papers, by missing research papers I mean research papers about ideas that didn't work. A well written research paper about an idea that didn't achieve an improvement it is much more useful than a bad written paper of an idea that shows a questionable statistical proof. They not only save time for the readers who don't need to find out the paper flaws but also teach and encourage to write more solid statistical proofs.

UPDATE: Actually, there are journals where you can publish negative results, http://jinr.org/, http://www.jnrbm.com/, http://www.jnr-eeb.org/ I think this is great.

The Important Thing Is Not What You Know But What Others Don't

Information value is given by the number of people that know that information. The more people that know that information the less it is worth. Let me give you a simple example: let's suppose that you know which ticket will win tomorrow's lottery which is giving a prize of one million dollars, then that information about the winning ticket its worth one million dollars. But what happens if you have read that information in a newspaper which is deliver to ten million people? Then all those ten million people will run to buy the winner ticket and each one will earn just ten cents. So now the value of the information its worth almost nothing because everybody knows it. This fact is very well known by stock market traders, if they use the newspaper as they source of information to make transactions they will probably end losing a lot of money.

An interesting question is why people read (and even pay) the newspaper if it doesn't give any value to the reader. I think the answer is that newspapers have become a form of entertainment, they have to do less with news and information and more with emotions. People can choose which stories to read in order to satisfy their emotional requirements.

But the important point here is where to search for information to gain value. Obviously it's not easy but here are the two things you'll need to check to avoid wasting your time:
1. That the information is valuable. You can get some profit with that information.
2. Only very few people know that information

How To NOT Get NOT Rich

I learned from Math that there are two ways of seeing things: to see and to not not see. I'm going to explain this better with an example. A lot of people try to figure out how to get rich, but a fast analysis will lead you to learn that only 1% of the world is rich and 99% is poor. In statistics is well known that you can't infer anything if you don't have enough amount of data. So if you want to extract a pattern of that 1% you will fail but you can find a pattern of that 99% and not do that.

So the next time you want to know how to get rich don't try to find out how others get rich, instead find out what not rich people do and don't do that. In other words, try to figure out what you can do that 99% of people can't. (tip: it's pretty hard, you can infer this if you know statistics)

Natural Languages, Formal Languages and Javascript

I always liked to study and analyze languages in all their forms, natural languages and formal languages. I find fascinating to try to understand how we understand, so I want to describe in this post how I see the evolution of natural languages, formal languages, the gap between those two and a possible future convergence.

First we need to start with some definitions, I will take them from wikipedia:
Natural Language: is any language which arises in an unpremeditated fashion as the result of the innate facility for language possessed by the human intellect.
Formal Language: those strings accepted by some automaton.
The definition of formal language is a very precise definition and the natural language definition is very loose, but in fact if we think humans as very complex automatons any language can be defined as formal. Let's do some research on both terms to try to understand we put them in two different classes.

Let me pick one example for each language to be more illustrative, I will choose "English" as a Natural Language and "C++" as a formal language. I think the main difference is the number of different "interpreters" or "compilers" for each language. In the case of "C++" you have just a few different "interpreters"* if you execute the same code using gcc and then visual studio you will probably get a different result. In natural languages there are no two interpreters that are the same, if you say something to a person you will get a result and if you say the same thing to a different person the result will be different.

Languages with more interpreters evolve faster but they aren't much appreciated in computer science because you usually want that your computer always give the same output for the same input, but recently a "formal language" called javascript has been acquiring a lot of attention from computer scientists and developers besides the fact that everyone hates it. In my opinion this is because is the formal language with more different interpreters in the world, each browser, Safari, Chrome, IE, Firefox, etc, and each version of them interpret the language in a different way and this allow the language to evolve faster.

* I use the word interpreter to describe the action of reading a language and executing it. I don't want to differentiate between compiled languages and interpreted languages.

Defining Philosophy

When I studied Philosophy in college I got this book that when I searched for the definition of Philosophy I found "Philosophy is what philosophers do". Then the book keeps talking about some nonsense avoiding to give a good definition about the term. The funny thing is that in the first chapter the book talks about the Laches dialogue in which I think Socrates establishes the foundation of philosophy and logical thinking when he says that you must define, as precisely as you can, the problem or subject that you are going to talk about. Like I would like to do philosophy in the next posts I am going to give my own definition so you can know what to expect.
Philosophy: is the use of a natural language to try to solve problems or at least to give a good start for a formal approach.

First Post

I've been wanting to start writing on my own blog for a couple of years now but I have never really had something interesting to say. Now I don't have nothing interesting to say either so I'm just going to put the first thing that comes to my mind.

I always like to do things that fall outside the two standard deviations of the normal distribution so I will try to keep that behavior when writing my posts.