The vanguard in the war of ideas

Language is interesting; it tells you about what’s going on inside somebody’s mind, but also; it tells you what’s going on inside the minds of a society.

At some point somebody came with the word “thought”, which changed the way we communicate forever. Same with many other words, like “racism”. There was a point where “racism” wasn’t a thing, and it’s essentially impossible to fight a concept for which you have no word.

“Racism” and “bigotry” are easy enough (although we don’t even have a word for “bigotry” in Spanish), but with them come more complicated notions, like “affirmative action”, and “the soft bigotry of low expectations”, both real things we should worry about.

I like “the soft bigotry of low expectations”, because it gives a name to an idea I adhere to; do not forgive a person that wronged you just because you are “morally superior”; hold other people to the same ethical and moral standards you hold yourself to, and you want others to hold you. It’s part of the golden rule, and it’s something the left doesn’t do with other cultures; we give them a free pass in the name of multiculturalism. It’s an issue.

But progressives don’t stop; while society catches on with ideas like “the soft bigotry of low expectations”, there’s even more novel ones, like “the regressive left” (also a real issue), which was coined only recently.

There’s a constant war of ideas, and it feels good when an issue finally gets identified and named, because all of us who felt the same way can rally and say; “yes! I feel the same way you do: the regressive left is an issue”. It feels good to be on the vanguard on the war of ideas, it feels good to know you are on the right side of history, just as I imagine the first people that said “racism is an issue” must have felt.

Social justice warriors and feminism, poster boys of the regressive liberals

Feminism symbol

A new term has been coined; the “regressive left” (or liberal), which perfectly describes a kind of thought that has become more and more prevalent of late, and it’s a real danger to real liberals, or “progressive” liberals, in fact, a danger to society in general.

Liberalism vs. conservatism

First of all, we have to define what a liberal person is. In it’s essence it’s the opposite of a conservative, a conservative is a person that doesn’t embrace change, that wants things to remain the same, because if it has been the same way for decades, centuries, or even millennia, it must be good, right? A liberal believes the opposite: we need to move forward, away from barbaric and backwards behaviors and thinking, that’s the way we progress as a species. A more appropriate term might be “progressive”, because, well, we want progress.

However, the crux of the matter is to find such things that need to be changed in order to progress. It might seem obvious to a rational person, but it turns out most liberals don’t realize this simple fact: not all change is good. Do we really need to even discuss about this? Apparently we do, as we will later see in this blog post; many liberals do not realize that just because a change is proposed, we must embrace it. Obviously just because we’ve frowned upon stealing for thousands of years, does it mean it’s time to change it? No.

So that is the key point: is the change progress or regress? Liberals tend to think change means progress, conservative that it’s regress. More often than not, liberals are right, and they end up being on “the right side of history“. Studies have shown that liberals tend to be smarter and better educated than conservatives, they tend to attend university and travel more, etc. However, society needs conservatives as much as liberals, in order to make sure that changes are going in the right direction. Sure, we need change in order to progress, but we also need devil’s advocates in order to make sure it’s progress, and not the opposite. Change for the sake of change is not good, and sometimes things are better the way they are, sometimes conservatives are right (although not often).

One of the best examples of progress in society was the abolition of slavery. In general, liberals were on the right side of history (as they often are), however, some conservative arguments did actually make sense, for example: some black people ended up worst being free that being slaves. We have moved ahead since those times, but still, in the United States black people fill their prisons and thus provide a good chunk of essentially free labor. Perhaps conservatives were right that you “can’t just abolish slavery”, maybe USA should have done it differently. Sometimes resisting change is a good thing, not just to make sure the change is in fact progress, but if change must be made, to find the best way to go about it, and not just go balls to the wall about it.

So it should now be clear what a “regressive liberal” is; a person that advocates change for the sake of change, and is in reality moving society towards the wrong direction; regressing.

Regression and reality

Lately there has been a tendency for liberals to act in an irrational manner, something that has historically not been the case. That is one of the problems with being right so often; you sometimes forget you can be wrong.

There are numerous examples of this way of thinking, too many to explore them all in dept, but I’ll mention a few.

Vegetarianism today is viewed as a liberal tendency; most vegetarians are liberal, many of them see it as a moral statement, some think we all should be vegetarians, and even go as far as saying that humans are vegetarian in nature. It’s the latter argument I want to tackle. I don’t have a problem if you are a vegetarian and say you do it for moral reasons, or health, or even push it to the rest of society for economic reasons, those are all valid arguments, and I might disagree, but the jury is still out.

The problem comes when people deny reality. It is very obvious to everyone that humans are not herbivores: first of all; we can eat meat, herbivores can’t. You give meat to a deer, and it will die of starvation. The opposite is true of carnivores as well. But we humans are in neither of these categories, we are omnivores, like dogs, and bears. We eat everything. It’s also very obvious from our physiology; we don’t have the stomachs of herbivores, nor the teeth. Since we have the technology and resources to gather vegetables from all over the world, we might be able to sustain a vegetable-only diet and be healthy, although it’s probably not economically feasible, not to mention that many vegetarians have health issues, precisely because it’s not easy to find all the nutrients with such diet (not impossible, it can be done, but it’s certainly not easy). The fact of the matter is that through most of the history of our species we have been omnivores; we are omnivores, we can eat both meat and vegetables in large amounts, and that’s an uncontroversial and undeniable scientific fact.

Yet there are some people–liberals, who deny those facts, who deny science, and claim that humans are vegetarians by nature. Things would be much easier if we were vegetarians, perhaps it would be ideal, but we are just not. When you deny reality, and reject facts in order to fit your ideal of how things should be, you are engaged in what is called wishful thinking. Reality doesn’t care about your ideals, things just are the way they are, it might not be fair, it might not be nice, but it just is. Is it fair–or ideal–for the female praying mantis to eat the head of the male during sex? Probably not, but that’s nature, that’s reality, we have to accept that such is the case.

A more controversial example is the whole idea that “Islam is a religion of peace”. In order to explore this topic I’m going to use many of Sam Harris’ arguments, which has done a superb job of shining light on the issue.

First of all, we have to understand that religions are different, that’s why there are so many of them, and they are not interchangeable. Religions are different, in the same way that sports are different; you can’t compare rugby with golf, and you can’t compare Jainism with Christianity; they are way too different to make any meaningful comparison. And you can’t generalize either; say that all sports are violent, or that all religions are peaceful. Different religions are different, and their differences matter.

Second, religions are ideologies, ideologies affect the behavior of people, and while it’s true that ideologies can be twisted to the point of breaking their core principles (at which point it can be argued you are not really following that ideology), the ideology itself remains having certain ideas, independently of how people interpret them. For example, a nazi that doesn’t consider the aryan race superior can’t really be considered a nazi, a nazi that adores the state can be said to be perfectly within the ideology. A Jainism follower that advocates violence is not really a Jane (violates the core principles), but one that is vegetarian is perfectly within.

The question then becomes; can a violent person be called a Muslim? By extension; does the ideology condone violence? There’s many verses on the Qur’an about violence, for example: (8:12) “I will cast terror into the hearts of those who disbelieve. Therefore strike off their heads and strike off every fingertip of them”. It’s pretty clear to anyone reading the Qur’an that it not only condones violence, it advocates it.

So it’s that simple: Jainism doesn’t condone violence, Islam does; Jainism is a religion of peace, Islam is not. Yet some people, liberals, like Reza Aslan, claim that all religions are exactly the same, and their holy books interpreted in any way, the problem is not the ideologies, but the people, the followers of the ideologies. We know this not to be true with ideologies like nazism, Islam is no different; we have to look at the ideology in order to decide if it’s peaceful or not, and just because an ideology happens to be a religion, that doesn’t mean it’s inherently peaceful.

It would be nice if what Reza Aslan said was true; all religions are equally peaceful and/or violent, all religions are faces of the same prism through which we see the same truth. But just because something is nice doesn’t mean it’s true; that is wishful thinking. However, many liberals drink this Kool-Aid, precisely because of that; it would be nice if it was true, therefore it must be true. The evidence is clear; not all religions are equal, Islam is a violent religion, the Qur’an endorses violence, as much as we would want it to be otherwise, we shouldn’t deny reality, the praying mantis is the way it is, and the Qur’an is the way it is.

Now, there’s a difference between is and ought. One thing is to recognize human nature, another is accept it as desired behavior. We humans have a tendency to crave sugar, does that mean we ought to eat a lot of sugar? No. In order for humans to progress, we first must recognize our nature, in order to reject it and actively fight against it. If science demonstrates humans are xenophobic by nature (which seems to be the case), the answer is not to close our ears to the evidence, the answer is to accept it, and find ways to fight against our nature.

By rejecting evidence, and thus denying reality, liberals are doing a disservice to society, and pushing for changes that might as well be moving us backwards. If liberals push for vegetarianism because humans are herbivores, that’s wrong. If liberals want to label every criticism of Islam as islamophobe, on the basis that it’s a peaceful religion, like any other religion, that’s also wrong. Both liberals and conservatives must seek to be in contact with reality, even if reality is not nice.

Third wave feminism

This is the definition of feminism:

1: the theory of the political, economic, and social equality of the sexes
2: organized activity on behalf of women’s rights and interests

Once upon a time, not long ago, women did not have the same rights nor opportunities as men, so a movement was needed to achieve equality between the sexes by pushing for women’s rights, and that was perfectly fine, that was feminism.

Today, the world is different (at least the western modern world ), and women have as many rights as men, if not more, women have as many opportunities as men, some argue even more. Today, the need to push exclusively for women’s rights is just not as urgent as before, and perhaps even not necessary.

Today the discourse about sexism and gender issues has advanced tremendously, in part thanks to the first wave feminists, and that’s why today we recognize that actually men have gender issues as well, like being raped in prisons, be victims of domestic violence, much more likely to commit suicide, and die earlier than women from disease. Males are also raped, but society doesn’t want to hear about it, even ridicules them, that’s an issue, why are feminists who supposedly fight for the “equality” of sexes not fighting to change this? Why is Emma Watson’s movement called “he for she”? What happened to “she for he”?

The fact of the matter is that feminism was never about male issues, we all know that, even the name itself implies which gender was the focus of the movement. That might have been necessary in the first wave of feminists, but now?

Some people argue that in fact, women are the privileged gender today, and with good reason, yet third wave feminists continue to push to privilege women even more. Society is catching up to the fact that perhaps liberals pushed way too hard and we are in effect moving backwards in terms of gender equality.

These third wave feminists want still more change, as liberals that’s expected, but they are doing so denying plenty of evidence that goes against their agenda.

One particularly worrying aspect is that many deny that men and women are in effect different. We all know we are different from our anecdotal evidence, we have always been different since the dawn of time, and plenty of parents of boys and girls see this obvious fact. Yet these “sameness” feminists deny that fact and argue that it’s all due to culture, even though it has happened in all cultures in history.

Differences in men and women are not just obvious, they are scientifically proven. Sexual dimorphism happens through all the animal kingdom, why would humans be the exception? Yes, some differences can be explained by culture, like blue for boys, pink for girls, but certainly not all of them.

Let’s keep in mind that being different doesn’t mean one is better than the other, just different. Women seem to be better at some things, men at others, there’s nothing wrong with that. But more importantly; if our understanding of human nature advances to the point where we find that in truth, men are better than women (in general), what does that mean? Nothing. That’s just reality. But fortunately for us, no gender seems to have a leg up, and even if it did, it probably wouldn’t be by much, and evolution is always happening anyway, so things might flip in the future.

Let’s look at a very concrete example: chess. Men dominate the competitive chess scene, even though women have been given every opportunity, and many women have become indeed pretty good at chess; they haven’t reached the top positions. Why is that? “Sameness” feminists would argue that it’s all because of culture; women are discouraged from such endeavors, the culture of chess is toxic, women feel inferior, therefore they act inferior. While all of that might be true to some extent, there are always exceptions, and there are strong women who don’t give a damn about society’s expectations of them, or the culture around an activity, and that’s why many women through history have achieved great things despite the fact that they were not supposed to. Still, no woman has become a chess world champion, even come close to that, even with all the help from feminists to “empower” them in such activities.

IQ might be a controversial way to measure general intelligence, but certainly not the intelligence needed to play chess; if you are good at chess, you have high IQ, if you have high IQ, you have potential to be a good chess player. So, is men’s IQ higher than women’s?


The answer is; not likely, but this graph shows the distribution is different. You are likely to find a good amount of really stupid men, but also, really intelligent ones, on the other hand, the average woman is smarter than the average man. Does this not match to pretty much everyone’s experience? Most of the women I know are pretty smart, smarter than most men, yet, the smartest people I know, are men. And that’s why we don’t see women in the top chess competitions; exceptional men are more exceptional than exceptional women, at the same time stupid men are more stupid than the stupidest woman. It’s just a matter of distribution.

Why would we want to change that? It’s just chess. Plenty of men are bad at chess, the vast majority of men are bad at many disciplines that require exceptional people. Women are better at plenty of other things that men, and that’s fine.

The more science finds about the nature of the human brain, the more we find that there are plenty of inherent differences between the genders, that’s just a fact, that’s reality, and there’s still plenty more to find.

Why can’t we embrace and accept our differences? One example scientists have found is that a region of the brain called the corpus callosum tends to be bigger in women, what does that mean? It means women in general are more likely to associate seemingly unrelated ideas, which is very useful in the arts in general, so is it really a surprise that women are more artsy than men? Plenty of men have complained that when discussing with their partners, women often bring issues of the past, issues that–in the opinion of men–are not related at all. Why can’t we just accept this and say: “I’m sorry honey, but I just don’t see what X has to do with Y, I’m a man, remember?”? It’s not an excuse for us men, but it’s an explanation, and a reason for us to try harder.

It’s not sexist to say that praying mantises females eat the males’ heads, that’s just a fact, so if science proves that men and women are different in certain aspect, that’s not sexist either, just reality. Yet “sameness” feminists insist–and will keep insisting–that we are the same, and to argue otherwise is sexist. I don’t see a better recipe for unhappiness than denying our human nature.

In fact, studies have shown that women have become unhappier of late, in a pretty significant way, and this trend started–unsurprisingly–when feminism started. Maybe women really like to feel protected, maybe demonizing stay-at-home moms was not such a great idea, maybe there was nothing wrong with women being feminine. I personally don’t know, but what seems to be clear is that the feminist movement doesn’t seem to be moving us forward as a society any more.

Every indication seems to suggest that third wave feminism might be the first liberal movement that is actually on the wrong side of history (as far as I know). Society, especially millennials, are starting to turn away from this bitter form of feminism, and people are realizing that maybe there’s nothing wrong with masculinity. Polls suggest that the feminist movement is collapsing, and in a couple of years the amount of women that identify themselves as feminists have decreased from 28% to 18% in the US (source). Given the fact that feminism has never pushed for men’s rights, and has no intention of doing so, and really have failed completely to try to understand the male position, and discover the reality of gender differences, it seems that such backlash is well deserved. Perhaps it’s time to stop talking about feminism, and start talking about equalism.

True equality

Richard Dawkins when asked about MRAs said “I hardly know there was–is there a men’s rights movement? I mean… If there is discrimination against men, then that’s bad too. I don’t know whether there is, I haven’t heard of it”. I think that is pretty much the experience the vast majority of people, including men, and including me, until not long ago.

However, there are two possibilities: a) either there is no discrimination against men, or b) there is discrimination, but we haven’t heard of it.

There is in fact a men’s rights movement, and it is largely ignored or attacked. They do claim there are men issues, I won’t go through all of them, I’ll just focus on one: men are held financially responsible for fathering a child.

In the face of it, it seems perfectly reasonable to hold men responsible for the future of a child they bred, but let’s look at the women’s perspective. If a woman doesn’t want a child, she can just have an abortion (depending on the local laws), the father doesn’t even have a say on that, he might not even know about it, but even leaving the controversial issue of abortion aside, a woman can chose to give the baby away for adoption. Let’s look at this closely; a woman can opt out of parenthood. It also seems reasonable; a woman’s life is a woman’s choice, and the baby might not suffer at all from that choice, it might benefit him/her, and perhaps never be aware that such choice was made. Where is the man’s choice? Can a man opt out of parenthood? No. Can a man hold a woman responsible, raise the child, and demand alimony from the mother? No. Where is the equality in that? It seems to me this is a real gender issue, one that genuinely destroys many lives of men.

To be honest, I never really thought about it, but now that I’m aware of it; it’s impossible not to see the discrimination against men in this case. So, maybe it’s b): there is discrimination against men, but we just haven’t heard of it.

Well, no problem, we just have to make a social movement to bring these men’s issues to light, and surely enough society will mobilize to fix these problems, just like it happened with the women’s right movement. Wait a second, wasn’t there already a movement that claimed to advocate for the rights of both genders? I have never heard a feminist bring up this issue, in fact, I have never heard a feminist complain about any male issue.

When an educated man like Richard Dawkins is not even aware of men’s right issues, it becomes pretty clear that somebody has not been doing their job of shining a light on these issues. If feminism truly aims to advocate for men’s rights, they have done such a poor job.

We are all perfectly aware of feminism, we all know all the women’s issues, or at least the claims, some of us might not agree with all of them, or the severity of them, but we are aware of the claims.

If anybody laughed at a women’s issue, that person would be harshly criticized, but not only we can’t laugh at the issues, we can’t even criticize them. A commonly mentioned issue is the wage gap: women earn 77 cents for every dollar a man earns—for doing the same work. This factoid is repeated again and again by the media, politicians, celebrities, activists, you name it. In reality, it turns out to be a myth.

Wage gap

The only way this number could be true is if you ignore a variety of factors, like life and career choices, but if you take those into account, the gap essentially disappears. Yet we can’t even say the wage gap is a myth without being labeled as sexist, misogynist, patriarchal.

However, when Richard Dawkins claimed he didn’t know about men’s issues, the whole audience laughed, even more, I saw shows where people replayed this bit, and the host laughs as well. What is there to laugh about? The fact that men have gender issues too? The fact that some men complain about these issues? Wasn’t feminism supposed to advance equality for both genders? Maybe that was a joke too.

The fact of the matter is that feminism has managed to mobilize entire societies to the pursuit of wellbeing solely for women, while at the same time completely ignoring the male perspective. Men rights activists are mocked, bullied, and completely ignored. Every time somebody mentions a gender issue that affects men, they are ignored, and immediately people point out a women’s issue, because apparently, those are the only ones that truly matter.

Perhaps it is because men are privileged, and women are oppressed, but is that truly so? Maybe it was at some point in history, perhaps most of history, but it certainly doesn’t seem to be the case now. Yet hardcore feminists insist men are privileged, men hate women, men are patriarchal, and prefer men over women for work. None of this is really true, but I can’t provide a succinct way to prove otherwise, except for the claim that men hate women, for which I will provide an excellent comment by Karen Straughan:

I don’t think there is a universe that could exist where men, in general, hate women.

So maybe the first thing would be to stop accusing men of hating women? And to call out the women in positions of power who accuse men of hating women? And to call out the women like Quinn Norton who claim that men are raised to hate women, or Chloe Angyal of Feministing who claim that our entire society hates women?

Honestly, the Nazis hated the Jews. The Hutus hated the Tutsis. The KKK hated blacks. And yet this male dominated society, where men hold the majority of the positions of power, somehow HATES women despite not a single lynching of a woman for wronging a man, despite NOMAAS and the White Ribbon Campaign and HeForShe and a male feminist president, despite Boko Haram’s sparing of girls while burning boys in their dormitories, despite the unbelievable (and unbelievably unspoken-of) gender gap in executions and criminal sentencing in Islamic countries, despite males being the primary receptacles of violence by both males and females from infancy to old age GLOBALLY, despite not a single genocide in history that DIDN’T begin with the systematic extermination of almost exclusively men and boys.

And you think men hate women. If men hate women, then how do men feel about men? On any given day, any given male is more likely to assault a male, undermine a male, ignore a male in need, murder a male, celebrate the suffering of a male wrongdoer, hit his male child, make a decision to mutilate his male child, arrest a male, convict a male, and sentence a male to incarceration or death, than he is a female.

And yet women–yes, women–have allowed a narrative to become entrenched in all our systems and institutions that males favor other males at the expense of females. That somehow, there is a “team men” that has been oppressing, subjugating and subordinating women since the dawn of human history. That men have waged a “war on women” since we descended from the trees and first tottered on two legs on the African Savannah.

Men have bled for their women, fought to protect their women, died for their women, and admonished each other for millennia to love their virtuous women as Christ loves the Church, to treat their honorable women as queens and as jewels, to present to them the heads of the men who displease them, and to duel to the death to defend their honor. The literary canon, written primarily by men, has always lauded a masculinity that protects women–the villains identified by their willingness to harm women, and the heroes identified by their willingness to avenge those harms.

And you think men hate women?

Men have never hated women. Men will never hate women.

(complete comment)

In fact, we love women so much, that we have given them many rights and privileges without asking anything in return, so much that more and more men give up their masculine human nature, just because of the fear of being labeled as misogynistic.

We have done so much just to please women that quite honestly, it’s ridiculous.

I wouldn’t go as far as saying that men are being oppressed, but we are certainly suffering. The worst jobs are done by men (military, trash collection, construction), the most job-related injuries are suffered by men, men have a huge societal pressure to succeed, men are much more likely to commit suicide, men die at a younger age. On top of that, we can’t complain about any of these issues, because apparently we are oppressing women, and we can’t argue that either. We can’t follow our masculine nature, because doing that would be sexist, apparently now even smiling to a woman is sexist.

If a woman breaks her hand hitting a man in the face, guess who is going to jail?

Call me crazy, but this doesn’t seem to be fair towards men.

Social justice warriors

If staunch feminism wasn’t enough, we now have social justice warriors, which do exactly the same things as feminists do (most of them are feminists anyway), because well, feminism has done such great things for our society! But they do it on all aspects of it.

The modus operandi seems to be: find an ideal, make it a cause, do everything in your power to advance that ideal, ignore any evidence that it’s really not the best thing to do, and label everyone that criticizes this ideal as a backwards, close minded, bigoted person.

For example, ideally all religions should be peaceful, therefore we should tolerate all religions, some people are intolerant towards Islam, that must be changed, there is evidence that Islam is in reality not a religion of peace, ignore that, label anybody that criticizes Islam as a racist and an islamophobe, and you win.

What doesn’t seem to enter into this equation is: what if you are wrong? For some reason SJWs never entertain the possibility that they might be wrong, which is the quintessential feature of a rational person. If you don’t entertain the possibility that you might be wrong, well, you will end up being wrong plenty of times. If you are wrong with your life choices, well, so bad for you, but if you push society towards the wrong direction, that’s actually terrible.

A study showed that you only need 10% of the population to believe in an idea in order for it to spread to the rest of the population. It doesn’t matter if the idea is true or false, if 10% of the population believes in this idea wholeheartedly, it will spread. Feminists believe it’s absolutely true we live in a misogynistic society, so, we all as a society believe that. It doesn’t matter if it’s indeed true or not. Such is the danger of herd mentality, and such is the power of ideas.

Even worse, apparently universities today have a concept called “safe places”, where susceptive people can go when there’s a talk about a subject they find distressing, but even more, prevent certain talks to happen altogether. Universities are supposed to be the place where all ideas are discussed, if you can’t discuss a topic in a university, where can you? Endangering free speech because some people might find the comments offensive, especially in a university, is certainly one of the worst policies ever.

Why would SJWs act this way? Why would anybody reject evidence, reality? When you are confronted with evidence that contradicts your beliefs, you enter into a state called cognitive dissonance, which doesn’t feel good. If the objective is to better society, then you must confront your wrong beliefs, and you must risk feeling bad, and realizing you were wrong. So why don’t they do that? It seems pretty clear that their objective is actually not to better society, but to feel good about themselves, thinking they are bettering society, while in effect they might be doing the opposite.

The way forward

This is where we are today, thanks to staunch feminists, thanks to SJWs, thanks to the whole “political correctness” idea. We can’t criticize feminism, we can’t criticize Islam, we can’t criticize certain ideas, because some people find that “offensive”. It is such a recipe for disaster.

It is quite ironic that the places where most women are genuinely objectively oppressed are Islamic countries, however, even the most staunch feminists wouldn’t touch the subject, because, well, it’s not politically correct (a few feminists truly do). So the people that push for women’s rights the most around the globe, might very well be atheists (or new atheists as some people like to say). The people that prevent the women’s right to choose (pro-choice), are not actually men, or “the patriarchy”, but the ones that follow “christian values”, in fact mostly christian women.

The whole situation is incredibly depressing. Even if feminism seems to be on the way out, pretty much the same manner of dealing with social issues is spreading through liberal circles. Such an epidemic of–quite frankly–stupid liberals, deserves a name: regressive liberals.

Hopefully the majority of liberals can recognize this toxic behavior and distance themselves from these regressive liberals, otherwise we are heading to a period of pretty much no progress in society.

Feminism symbol

Los salarios en México y las malas estadísticas del INEGI


Update: Inicialmente mis cálculos no consideraban el factor de ponderación que usa el INEGI. Los números han sido actualizados para reflejarlo.

Yo crecí en México en lo que consideré la clase media, pero después viví en E.U.A y en Europa, por lo que tal vez mi concepción de las diferentes clases dejó de estar apegada a la realidad. Yo pensaba que un salario mensual de $20,000 (una cantidad módica en países del primer mundo) se consideraría clase media, y cuando una persona me dijo que el salario promedio era $8,000 no lo creí, y así comenzó la tarea de buscar los salarios de las diferentes clases en México que resultó no ser tan fácil como parecía.


El INEGI realizó una encuesta (Encuesta Nacional de Ingresos y Gastos de los Hogares) que supuestamente contiene estos datos, sin embargo, estos son los resultados:

I $1,674
II $3,033
III $3,977
IV $4,900
V $5,959
VI $7,183
VII $8,800
VIII $11,313
IX $16,012
X $42,120
* Trimestral.

En teoría ahí está toda la información y la tarea está hecha, sin embargo hay un problema al tratar de entender estos números. La tabla se titula “ingreso corriente total promedio trimestral per cápita en deciles de personas”. Ahí vemos los diez grupos, pero un decil se define como: “cualquiera de los nueve valores que dividen los datos ordenados en diez partes iguales”; nueve valores, y en la tabla hay diez, esos números no son deciles.

Básicamente, la tabla es completamente inútil. Si una persona gana $10,000 trimestrales, ¿Está en el grupo VII o VIII? El número que necesitamos para saber eso no está en esta tabla.

A mano

Afortunadamente el INEGI provee los datos originales, y gracias a mis habilidades de programación pude hacer las manipulaciones necesarias para sacar los datos de interés. Desafortunadamente en el proceso noté discrepancias en las tablas del INEGI, así que tuve que hacer los cálculos por mi cuenta.

10% $835
20% $1,180
30% $1,478
40% $1,798
50% $2,182
60% $2,632
70% $3,306
80% $4,315
90% $6,753

Estos números sí son deciles, y es fácil saber a qué grupo perteneces. Si tu ingreso mensual es de $3,000 pesos (y no tienes familia), eso significa que ganas más que el 70% de la población (grupo VII). Curiosamente es fácil ver la media (50%), que es $2,182, es decir: 50% de la población gana menos de $2,182, 50% gana más.

De forma similar podemos dividir la población en tres grupos:

baja menos de $1,579
media de $1,579 a $3,033
alta más de $3,033

Parece difícil de creer, pero estos números se pueden comprobar fácilmente. El tamaño de la muestra del INEGI son 19479 personas, con un filtro para ver cuántas personas ganan más de $3,033, el resultado es 8040 (41.28%), sin embargo al usar el factor de expansión el resultado es 33.32% (una tercera parte).

Cabe mencionar que los números son per cápita. Es decir, si ganas $8,000 pesos y mantienes a una familia de 4, cada persona se considera que percibe un ingreso de $2,000 pesos. Más detalles abajo.

Los números para la clase súper rica son:

91% $7,156
92% $7,663
93% $8,325
94% $9,130
95% $10,065
96% $11,516
97% $13,159
98% $16,475
99% $22,763


Los promedios pintan un panorama muy diferente. Por ejemplo; la clase alta es más de $3,033, sin embargo hay mucha diferencia entre un ingreso de $4,000 y $400,000 pesos, y ambos están en el mismo grupo. Al promediar a toda la gente de éste grupo, el resultado cambia mucho. El promedio de la clase alta (top %33) es de $7,262, el promedio del top 90% es de $14,040, y el promedio del top %1 es de $42,910.

Por eso son peligrosos los promedios. A pesar de que el promedio de todo el país es de $3,499, el promedio del bottom 99% es de $3,101, pero al juntarlo con el top %1 de $42,911 se eleva a $3,499 (3101 * 0.99 + 42910 * 0.01).

Ingresos por trabajo

Hay muchos detalles de estos números, pero en general es el ingreso de todo el hogar: salarios, utilidades, rentas, transferencias, y estimado de alquiler, dividido por el número de integrantes.

Si tomamos en cuenta sólo el ingreso por trabajo de las personas ocupadas, el resultado es más prometedor.

10% $782
20% $1,545
30% $2,201
40% $2,872
50% $3,563
60% $4,303
70% $5,324
80% $7,008
90% $10,492

En tres grupos:

33% $2,413
66% $4,937

Y el top 10%:

91% $11,041
92% $11,848
93% $12,739
94% $13,960
95% $15,473
96% $16,988
97% $19,565
98% $24,508
99% $32,983



Existe un número que se usa para medir la desigualdad de forma rápida, el coeficiente Gini. Aunque no es perfecto, es el más utilizado, y no deja de ser útil. Una sociedad perfectamente igual tendría un valor de 0%, mientras que una totalmente desigual 100%. Alemania, un país con mucha igualdad social tiene un valor de 27%, Estados Unidos, conocido por su desigualdad, 45%. Según el INEGI México tiene un valor de 48%, pero según mis cálculos el valor es 49.70%. La diferencia se debe a que el INEGI usa sus promedios por decil (10 datos), mientras que yo uso todos los registros (19479 datos), por lo que mi cálculo es más preciso.


Probablemente la forma más fácil de visualizar la increíble desigualdad que hay es graficando todos los ingresos de la muestra:


Errores del INEGI

Ya mencioné el hecho de que para empezar su tabla de deciles no contiene deciles,  contiene promedios de los diversos grupos, que como ya vimos los promedios son peligrosos por que pueden pintar las cosas más positivas de lo que son.

Además hay discrepancias muy curiosas. La misma tabla de ‘ingresos’ está en un formato “tradicional” y de “nueva construcción”.

folioviv foliohg numren clave ing_5
0860298316 1 01 P043 8000
0860298316 1 01 P071 8237
folioviv foliohg numren clave ing_5
0860298316 1 01 P043 8000
0860298316 1 01 P071 58237

Aquí vemos dos ingresos de una persona; P043 es un beneficio de PROCAMPO, P071 es la clave de negocios agrícolas. En una tabla dice que sacó $8,237 de negocios agrícolas, y en la otra $58,237. Parece ser un error de dedo (que cambia las cantidades drásticamente), pero por qué no comparan sus propias tablas?

Como éste tipo de errores parece haber muchos. Por ejemplo en la documentación de la variable ‘ing_cor’:

inc_cor: ingreso corriente
La suma de ing_cor y percep_tot

Eh? Para sacar ‘ing_cor’ necesito ‘ing_cor’?

Otro ejemplo son registros marcados como “indemnizaciones” (P034), que no parecen usarlos en ningún lado.

Todo indica que al INEGI le hace falta revisar su propia información.

Mapa de la muestra

Update: Mucha gente preguntó que de dónde sacaron las encuestas, aquí hay un mapa para visualizarlo. Por alguna extraña razón en el centro de Tabasco es donde tomaron más información. Se ve muy evidente que a el norte no le prestaron mucha atención.



No queda más que aceptar que estamos mucho peor de lo que pensaba, no solo en cuestión de salarios, pero desigualdad, e incluso disponibilidad de la información. Si el organismo dedicado a proveer datos estadísticos no sabe ni lo que es un decil, realmente no se puede esperar mucho del futuro.

Nota: Estos números son confiables sólo si la muestra del INEGI es realmente aleatoria. Dado que ya detecté muchos errores en sus tablas, es posible que la muestra del INEGI también deje que desear. Desafortunadamente no hay mejores datos, así que hasta donde yo sé, estos son los números más confiables.


Cualquier persona puede verificar los datos si le interesa. Todo el código se encuentra en GitHub, yo utilicé Linux, pero es posible correr Ruby en Windows también.

Best TV series of all time

After watching a lot of TV series, here is my list of what I consider the best TV series of all time. It’s mostly based on this list by IMDB, but also my personal preferences.

1. Game of Thrones

This one doesn’t really need an explanation, it’s the best TV series of all time by far. Not only it’s based on an amazing series of books, but it has an unparalleled production value. Each character is incredibly rich and complex, and there’s scores of them, many which will die sooner than you would expect.

It’s a huge phenomenon and if you haven’t watched it already, you should be ashamed and do it now.

Yes, it’s fantasy, but only the right amount. Paradoxically it is more realistic than most shows; there is no such thing as good or evil, just people with different points of view, motivations and in different circumstances. Good people die, bad people win, honor can kill you, a sure victory can turn into crap. And just when you think you know what will happen next; your favorite character dies.

2. Breaking Bad

Breaking Bad is the story of a high school teacher going, as the title suggests, bad. Step by step a seemingly average family man starts to secretly change his life. While at first you might think you would do the same morally dubious actions, eventually you will reach a point where you will wonder if the protagonist has gone too far.

It is incredibly rewarding to see how a teacher of chemistry, a man of science, would fare in the underworld of drug cartels. His knowledge and intelligence come in handy in creative ways to find solutions to hard problems.

His arrival to the scene doesn’t go unnoticed, and a host of characters are affected by this new player, and the chain reaction that follow is interesting to see to say the least.

3. The Wire

The Wire is simply a perfect story. It is local, and although you might not relate with most of the characters; it feels very real. The politics, the drama, the power dynamics, the every day struggles, everything is dealt with masterfully.

The characters are rich, some drug dealers are human, some politicians monsters, street soldiers incredibly smart. This show would give you insight into why a clean police detective would choose not to investigate a series of (possible) murders, why breaking the law can be sometimes good, and why in general violence is a much deeper problem that won’t be solved by simply putting some bad people in jail.

4. True Detective

What are Matthew McConaughey and Woody Harrelson doing in a TV series? History. True Detective is anything but a typical show. It might start slow, and if you are not keen in admiring the superb acting that shows in every gesture, you might find it boring, but sooner or later it will hit you like a truck.

This is not CSI, do not expect easy resolutions to multiple cases, in fact do not expect any resolution at all. The show is about the journey of investigation and everything that goes along with it, including the political roadblocks, and the toll it has on the people doing it (officially or unofficially), and their loved ones.

Also, thanks to the beloved character played by McConaughey (Rust); we are greeted with a heavy dose of philosophy, human relations, and in general; life.

6. Last Week Tonight with John Oliver

John Oliver is relatively new to the world of comedy, and as many students of The Daily Show, he graduated to be one of the best. Now he has his own political/comedic show dealing with subjects that actually matter, weekly, and deals with them masterfully, and at length.

Since the show is in HBO, it is not afraid of the reprisal of advertisers, and fiercely attacks commercial companies (as any real news show should) when they do something bad (which is very often).

The first season became and instant hit, and since all the important segments are available in YouTube for free, and are from 10 to 30 minutes in length, you really have no excuse not to watch it. In fact, do it now. Seriously.

6. Sherlock

Imagine the most egotistical asshole you know, add a big dose of raw pure genius, spray a chunk of autistic disregard to what anybody else thinks, disinterest in money, love, or hobbies. Finally add a side-kick who is well mannered, polite, and in general: normal. Use this concoction to solve crimes, and what you have is Sherlock.

Sherlock is a very uncommon show, starting from the fact that each episode feels more like a movie. so if you don’t want to watch a movie, perhaps you shouldn’t watch an episode of Sherlock either.

The show is not without its flaws, and sometimes caricaturesque endings–as I said, it’s different–but it is definitely worthwhile.

7. The Sopranos

Can you ever sympathize with a psychopath? After watching The Sopranos you might. The show follows the life of Tony Soprano, the boss of a New Jersey-based mafia. As you would expect, there will be violence, betrayals, and a constant supply of lies. However, you would also experience Tony’s human side, including caring for a family of ducks, and his constant duel with his psychologist.

Can you actually get better if you can’t even tell your psychologist that you killed one of your closest friends? How do you take care of your friend’s family with a straight face? These are the problems Tony faces all the time, not to mention trying to raise a couple of teenagers, and keep a marriage together which is surrounded by mystery.

And can you even blame him for being the way he is after you learn about his mother and father? Can a monster have a conscience?

After watching the show a lot of these questions will have clearer answers.

8. Rick and Morty

Rick and Morty is a cartoon, but it’s deep, funny, witty, definitely not for children. It centers around an old mad drunk scientist, and his grandson companion (which is not so smart). Together they have so many ridiculous adventures, so crazy that the mere premise of them will make you laugh.

Yet, despite the overblown adventures they have (due to the impossibly advanced technology the old man has developed), the show is at times deep and will leave you thinking with a renewed perspective about life, family, love, priorities, the human race and its place in the universe, and all the things that could have been, and might be… In a parallel universe.

9. Firefly

Cowboys in space. Star Wars but better. Relatable, warm and interesting characters. Renegades, an empire, the wild outskirts of the galaxy in a distant future that is so different, yet feels so familiar.

Easily the best science fiction series of all time, unfortunately there’s only one season, which is why Firefly became so much of a cult, and a phenomenon. There’s a movie (not as good), and even a documentary about the phenomenon. It is really something else.

There is only one drawback; after watching it, you will become one of us and wonder–why the f*ck did they cancel this wonder?

10. Better Call Saul

Better Call Saul is a spin-off of Breaking Bad. A good honest lawyer in an extremely precarious situation tries his best to succeed with integrity, but it turns out it’s not so easy to achieve that.

The show is very recent, and the first season hasn’t finished yet, so there is really not much more to explain, except that it is dark and intense.

So why is it in the list of the best tv shows of all time? I just know 🙂

Understanding the Enigma machine

I was fascinated by the movie The Imitation Game, not just because it brings awareness of a great man that advanced our civilization tremendously, and the great injustice he suffered, but also because it presents the study of cryptanalysis, something that most people don’t even know it exists, but it’s incredibly important when dealing with information, specially in our modern day and age.

However, the Enigma machine to me was simply that; an enigma. I’m not a mechanic, so you put that thing in front of me, and it would take me forever to understand what it does, if I ever manage to find the interest to do so. I was happy thinking it was a magic box.

That was until Albert Still decided to write the code of the machine in Ruby (my favorite computer language), which he explained in a blog post. I’m a programmer, code I understand, and this was 30 lines, in a minute I understood the machine (literally).

I was blown away by the simplicity of it, and I thought: hey! anybody can understand this. And ultimately that’s the beauty of cryptography; it doesn’t matter if you know exactly how the algorithm works; you still cannot decrypt the message. This is what security today relies on; everybody knows the algorithms running in your web browser, yet you are secure accessing your bank account, because those algorithms are cryptographically secure. The phrase “cryptographically secure” might not mean much to most people, but it’s really important.

I will try to explain how the Enigma machine works in simple terms, if you are a programmer, you might be better off just reading the code.

The reflector

You don’t need to understand this code, but it might help to understand the algorithm.

$reflector = Hash[*CHARS.to_a.shuffle]


So, what this means is that we pair each one of the 26 characters (A to Z) with another one randomly, so for example W is paired with L, which means that whenever we find a W, we switch it with an L, and when we find and L, we switch it with a W.

If we run this algorithm with the text HI, we get RF (H=>R, I=>F), pretty simple. The interesting thing is what happens when we feed this back to the algorithm; it becomes HI again (R=>H, F=>I). This is why it’s called a reflector.

This is actually so simple that you don’t even need a machine to do the conversion, you can even do it manually by looking to a piece of paper with the mapping. And there’s nothing cryptoraphic about this; if the Enigma machine only had this algorithm, you only need to steal one machine, and you could decypher every message immediately. It’s not cryptographically secure at all.

You intercept the message RFJWNH, you feed this to the machine, and you get HITLER. And that’s it.

Let’s put a cryptographic value to this algorithm: 0. It’s useful, but not for cryptographic reasons.

The rotor

Let’s jump to something more complicated.

$rotor = Hash[]


This time each character gets another character, randomly, and there’s no reciprocity (A=>K, K=>V). This is the twist; here the rotor starts with K, however it could be configurable, so let’s say, tomorrow it starts with N, then the values associated rotate, and you get this:


Now it’s not so easy any more. You receive the message DGOKIP, but you can’t do anything with that unless you know which was the first value, or “key” (in this case it was E). The only alternative you have is to do what is called a brute force attack; you try every possibility. Fortunately there are only 26 possibilities, so soon enough you will stumble with the key E, and unlock the message: HITLER.


The value of this is: 26. It’s not much, but it’s better than zero.

The rotor, part two

We’ve managed to make things a bit difficult for our cyrptoanalysists, however if say, they notice the character G appearing too often in today’s messages, they’ll assume that perhaps G is actually a vowel, we need to make things mote difficult for them.

As right know, the message III would be encrypted into GGG; that’s too easy. Instead, what we can do is rotate the first part of the rotor each time a character is processed, so III, becomes GDM (I=>G, rotate, I=>D, rotate, I=>M)


This doesn’t really increase the possibilities to test, but makes their job harder.

The rotor, part three

Since the thing is already rotating it would make sense to start with something other than A. This starting position is also part of the key, and again, you need to get it right in order to decrypt the message properly.

So you have 26 ways to configure the rotor, and 26 ways to start it, now the value is: 676. This would take quite a bit of time to go through each and every possibility now.

The plugboard

This is where the fun begins.

$plugboard = Hash[*CHARS.to_a.shuffle.first(20)]


We take 20 random characters and we pair them to each other. In a way, this is similar to the reflector, except this is configurable, and this time we are not picking 1 out of 26, the combinations are many more than that.

The formula to find the number of ways to choose m pairs out of n objects is: n! /((n-2m)! m! 2m). We are picking 10 pairs out of 26 objects, so: 26! / (6! 10! 2^10). The result is: 150,738,274,937,250.

That would take a bit more to test :/

More rotors

Each rotor needed 676 tries to brute force, why not add two more? That moves us up to 308,915,776.

While we are at it, make the order if the rotors part of the daily key, that’s 3 * 2 * 1: 6 possibilities.

And why not add two more to pick from, so every day you pick 3 out of 5; 5 * 4 * 3: 60 possibilities.

In total, that’s 18,534,946,560 just from the rotors.

And hey, make them rotate at different speeds to make the job of the analysts even harder.

Bring it home

Put everything together, and the process goes like this:

Enigma machine

  1. Plugboard
  2. Rotor 1
  3. Rotor 2
  4. Rotor 3
  5. Reflector
  6. Rotor 3
  7. Rotor 2
  8. Rotor 1
  9. Plugboard

So, here is a simple message: YWXRVH. In order to decrypt it you need the full key: the whole plugboard, the configuration of the rotors, and their starting position. Even if I tell you the original message was HITLER, you would still need to do a lot of work.

For the record, this was the key used to generate that message:


If you try every key until you find it, you potentially would need 2,793,925,870,508,516,103,360,000 tries. Clearly, pure brute force is not the way to solve the problem :/

This is just the machine itself, on top of that there were many protocols to cypher the message even more, but let’s just leave it at that.

Back to the present

That is the power of cryptography; understanding the machine, understanding the algorithm gives you absolutely no leverage, that is the easy part. You are supposed to understand it, and still be unable to crack it.

The algorithm in Enigma is puny compared to modern algorithms which are incredibly complex and with a lot of research behind them. That’s what keeps the communication to your bank secure, and even though most people don’t know it, you can use these algorithms to send secure messages to anyone that in theory not even the government using the most powerful supercomputers can decrypt.

I think it’s time we stop saying “this is not rocket science”; rocket science is easy, we should be saying “this is not cryptanalysis”.

The white and gold dress, and the illusion of free will

Original dress

At first I didn’t really understand what was all the fuzz about, the dress was obviously white and gold, and everybody that saw it any other way was wrong, end of story. However I saw an article in IFLScience that explained why this might be an optical illusion, but I still thought I was seeing it right, the other people were the ones getting it wrong. Then I saw the original dress:

Original dress

Well, maybe it was a different version of the dress, or maybe the colors were washed away, or maybe it was a weird camera filter, or a bug in the lens. Sure, everything is possible, but maybe, I was just seeing it wrong.

I’ve read and heard a lot about cognitive science and the more we learn about the brain, the more faults we find in it. We don’t see the world as it is, we see the world as it is useful for us to see the world. In fact, we cannot see the world as it is, in atoms and quarks, we cannot, because we don’t even fully understand it yet. We see the world in ways that managed to get us where we are, we sometimes get an irrational fear of the dark and run quickly up the stairs in our safe home even if we know there can’t possibly be any tigers chasing behind us, but in the past it was better to be safe than sorry, and the ones that didn’t have that fear gene are not with us any more; they got a Darwin award.

I know what some people might be thinking; my brain is not faulty! I see the world as it truly is! Well, sorry to burst your bubble, but you don’t. Optical illusions are a perfect example, and here is one:

Optical illusion

If you are human, you will see the orange spot at the top darker than the one at the bottom, why? Because your brain assumes the one at the bottom is a shadow, and therefore it should be darker. However, they are exactly the same color (#d18600 in hex notation), remove the context, and you’ll see that, put the context back, and you can’t see them the same, you just can’t, and we all humans have the same “fault”.

This phenomenon can be explained by the theory of color constancy, and these faults are not limited to our eyes, but ears, and even rational thinking.

So, could the white and gold vs. blue and black debate be an example of this? The argument is that the people that see the dress as white and gold perceive it to be in a shadow behind a brightly lit part of a room, the people that see it as blue and black see it washed in bright light. Some people say they can see as both; some times white, some times blue.


I really did try not to see it in a shadow, but I just couldn’t, even after I watched modified photos; I just saw a white and gold dress with a lot of contrast. I decided they were all wrong, no amount of lighting would turn a royal blue dress into white.

But then I fired GIMP (the open version of Photoshop), and played around with filters. Eventually I found what did the trick for me, and here you can see the progress:

So eventually I managed to see it, does that mean I was wrong? Well, yes, my brain saw something that wasn’t there, however, it happened for a reason, if the context was different, what my brain saw would have been correct. Perhaps in a parallel universe there’s a photo that looks exactly the same, but the dress was actually white and gold.

At the end of the day our eyes are the windows through which we see reality, and they are imperfect, just like our brains. We can be one hundred percent sure that what we are seeing is actually there, that what we remember is what happened, and that we are being rational in a discussion. Sadly one can be one hundred percent sure of something, and still be wrong.

To me the most perfect example is the illusion that we are in control of our lives. The more science finds out about the brain, the more we realize how little we know of what actually happens in the 1.5 kg meatloaf between our ears. You are not in control of your next thought any more than you are of my next thought, and when people try to explain their decisions, their reasons are usually wrong. Minds can be easily manipulated, and we rarely realize it.

There’s a lot of interesting stuff in the Internet about the subconscious and how the brain really works (as far as we know). Here’s is one talk that I particularly find interesting.

So, if you want to believe you are the master of your own will, go ahead, you can also believe the dress was white and gold. Those are illusions, regardless of how useful they might be. Reality, however, is different.

My favorite public intellectuals

Here’s a selection of my favorite public intellectuals. I love how these guys talk, write, and generally everything they do. Might be worth checking them out 🙂

Sam Harris

Sam Harris is an author, philosopher, and neuroscientist. Among his most notable books are The End of Faith, and The Moral Landscape. He has a blog, is on Twitter, appears on many TV shows as guest, has been on many debates, as well as lengthy talks, and has written numerous articles in respectable magazines such as The New York Times.

His topics mostly concentrate around religion, faith, morality, and science.

What I like about Sam Harris the most is the way he conveys very complex and nuanced ideas in a very effective way. He is very precise with words and has the patience to go on for ages in order to explain his ideas, but also, he is very witty and can deliver crushingly funny one-liners.


In the following video Harris is in a debate with a religious apologist and shows with very funny train of thought the ridiculousness of believing in things without evidence.

This is a quick talk at TED in which he explains how science can answer moral questions, which is the main idea behind The Moral Landscape.

Finally, my favorite talk, in which he basically destroys the idea of free will. Every minute in this hour long talk is pure gold.

Steven Pinker

Steven Pinker is an experimental psychologist, cognitive scientist, linguist, and popular science author. He is best known for his advocacy of evolutionary psychology, and the computational theory of mind.

Being an expert of language, the way he communicates in every medium is simply superb. Aside from linguistics, he goes into other topics, such as the history of violence, religion, and reason.


Here Pinker explains why taboos are bad, and political correctness can be dangerous.

This is a quick video where Pinker explains the importance of language in order to understand human nature.

Here’s a much longer version in which he goes into a lot of detail to explain language, and what we know about it.

Noam Chomsky

Noam Chomsky should need no introduction, he is a linguist, philosopher, cognitive scientist, logician, political commentator, anarcho-syndicalist activist. He has hundreds of books, countless articles, has been in many debates, constant talks all around the globe, in fact, he has done so many things in his life that there is even a documentary devoted to him; Noam Chomsky: Rebel Without a Pause. Not content with defining the whole field of modern linguistics at an early age, he devoted his life to political activism, even risking the well being of his own family. Today he is considered the most influential living intellectual, and the most cited author alive, right after Plato. Even at his advanced age and after losing his wife of almost 60 years, he continues to tirelessly inform the public about what happens in the world, and as he stated before, he will continue to do so as long as he is ambulatory.

Chomsky might not be the most entertaining public speaker, but what he lacks in charisma, he provides in full of content. He is basically a human encyclopedia, and he rarely states his opinion, everything he says is basically facts gathered from one place or another, and for every fact he says, he knows the reference where you can verify it.

It’s hard to find a short video that shows Chomsky’s brilliance, but this interview seems to do the job perfectly. Watch this interviewer get completely owned by Chomsky. Don’t forget part two.

Manufacturing Consent is one of Chomsky’s most powerful ideas, and if you are not in the mood of reading the book, this documentary explains the idea very well. It’s long, but you wouldn’t regret watching it.

Sorry Lennart, but you are wrong once again

Lennart Poettering’s post in G+ is gathering a lot of attention these days, most of the feedback is supportive, and positive, which is not surprising to me, because although Poettering would like us to believe otherwise, most of the open source community is pretty accommodating and non-confrontational.

I am however going to go against the current here, and criticize him, but first let me state clearly that I do not condone any physical attacks towards his person, or the threats of such. His ideas however are a different matter.

Lennart’s chief mistake is to attack the way the Linux’s kernel community is run, and say their success happens despite this. How does he know? Has he ever run a more successful community? Has anybody ever? Linux is the most successful software project in history, by more than one order of magnitude from any way you look at it. It would be presumptuous for anybody to say they know how to run this project better, specially without any evidence to back such claim, which is precisely what Poettering is doing.

In this blog I’ve analyzed the many reasons why the Linux kernel is so successful, and one of them is its combative style of discussion in which ideas are not exempt from ridicule, and strong language is often used to drive one’s point home as efficiently as possible. Many people in the community agree this is desirable, and there’s even scientific evidence that supports this notion; the best ideas arise in a confrontational environment, not in a protective one.

What’s more, Poettering himself accepts he hasn’t been involved in this community. So what the hell does he know about it? Nothing.

Poettering’s second mistake is to assume that for non-white, non-western, non-straight people the situation surely must be worst… That is not the case. Maybe, just maybe, he receives such vitriolic feedback not just because of what he does, but because of the horrible way he does it. Of course not, Poettering doesn’t need to change, his approach is perfect, in fact, the only reason he receives criticism is because he is too progressive, too audacious, too efficient, surely, that must be the reason!

Personally, my beef with Poettering starts from the fact that he blocked me from Google+. Why? Because I was complaining about a technical issue with systemd, which he initially spotted and commented, but then ignored. In the middle of the discussion I made some value judgements about certain systemd code, and he stopped responding and blocked me. That is the worst way to end a discussion; block the people who disagree with you.

Sorry Lennart, but actions have consequences, and you can only do so much disruptive changes to the Linux ecosystem without much care or consideration for others, there’s a limit to the amount of people you can block, and the criticism you ignore. You can grow as thick a skin as you want, you are still wrong. No community is going to let you continue being wrong and acting as if you are beyond reproach just like that (unless you run that community and have blocked any dissident voices of course).

Maybe it’s time to take a hard look in the mirror.

What’s missing in Git v2.0.0

I recently blogged about the Git v2.0.0 release, what changed, and why should you care. Unfortunately the conclusion was that nothing much changed (other than the usual new features and bug fixes). In this post I will discuss what should have changed, and why.

What is needed

Fortunately, Git has had the Git User’s Survey in the past, so we know what users want.

  1. user-interface: 3.25
  2. documentation: 3.22
  3. tools (e.g. GUI): 3.01
  4. more features: 2.41
  5. portability: 2.34
  6. performance: 2.28
  7. community (mailing list): 1.70
  8. localization (translation): 1.65
  9. community (IRC): 1.65

Obviously, since user-interface and documentation are the areas that need more improvement, that’s what Git v2.0.0 should have focused, right?


I already mentioned this in the other post, but I’ll do it again.

First of all, Git as a long history of never breaking user expectations (other than the Git v1.6.0 fiasco (which changed all the git-foo commands with ‘git foo’)), and as such a lot of thought is devoted into ways to minimize changes in behavior, or even how to avoid it completely. Perhaps too much care is devoted into this.

The preparation for Git v2.0.0 started more than three years ago with a mail from Junio C Hamano, asking for developers to submit ideas for changes that normally would not happen because they break backwards compatibility, he invited us to think as if “we were writing Git from scratch”. This big release that would break backwards compatibility was going to be named “1.8.0″ and people started to submit ideas for this important release. Eventually too much time passed, the versioning scheme changed, v1.8.0 was released, and the changes proposed for v1.8. slipped into what is now v2.0.

Since no substantial changes in behavior happened since v1.0, it would follow that v2.0 was an important release, and a good opportunity to gather all the ideas about what needs to change in Git. However, seemingly out of nowhere, without any discussion or even a warning, the maintainer tagged v2.0.0-rc0, and therefore all the features that were not already merged couldn’t be merged for v2.0.0.

Thus v2.0.0 was destined to have a small list of changes, and that’s how it remained.

What could have changed

The following is a list of things that I argued should be part of Git v2.0.0.

git update

I wrote a whole post about the issue, but basically, ‘git pull‘ is broken for the most common use-case: update the current branch.

This is a known issue that has been discussed over and over, and everyone agrees that it is indeed an issue, and something needs to be done to fix it.

There have been different proposals, but by far the most comprehensive and simple is to add a new ‘git update‘ command.

This way when you want to merge a pull request, you do ‘git pull‘, and when you just want to update the current branch, you do ‘git update‘, which by default would barf if there’s divergence between your local branch (e.g. ‘master’), and the remote one (e.g. ‘origin/master’), instead of doing a merge by default. This should decrease substantially the amount of “evil merges”, merges that happened by mistake, usually by somebody that is not familiar with Git.

The patches are relatively new, but the command is simple, so there isn’t much danger of screwing things up.

The publish tracking branch

I also wrote a blog post about this; basically Git’s support for triangular workflows is not the best.

A triangular workflow is when you pull from one location (e.g. central repo), and push to another (e.g. personal GitHub fork). If you are using upstream tracking branches (you should), you have to make a decision where you set your upstream; the central repo, or your personal one. Depending on which you use, is the advantages you get, but you cannot have it all.

But with the publish tracking branch you can have all the advantages.

I’ve been cooking these patches for a long long time and I have to say this is one essential feature for me, and they patches work perfectly.

Support for Mercurial and Bazaar

Support for Mercurial and Bazaar repositories has been cooking for a long time in the “contrib” area (you can both pull and push). At this point in time the code is production-ready, and it was already graduated and merged to be released in Git v2.1.

However, the maintainer suddenly changed his mind and decided it would be better to distribute them as third party tools. He didn’t give any valid reason and clearly didn’t think it through, but they are now separate.

The code is already widely used (git-remote-hg, git-remote-bzr), and could easily be merged.

Use “stage” instead of “index”

Everybody agrees that “index” is a horrible name for Git’s “staging area”, however, nobody has done much to fix the problem.

One first step is to replace all the –cached and –index options with –staged and –no-work, which are much simpler to understand.

Another step is to add a ‘git stage‘ command that acts as a helper to work with the staging area: ‘git stage add‘, ‘git stage diff‘, ‘git stage reset‘, ‘git stage rm‘, ‘git stage edit‘, and so on.

The patches are very straight-forward.

Default aliases

Virtually every version control system has default aliases (e.g. hg co, cvs ci, svn di, etc.), except Git.

Adding default aliases is very simple to do and only brings advantages. If you don’t like the default alias, you can override it.

Patches here.

Shoulda coulda woulda

It would have been great if you could just do ‘git clone hg::mercurial-repo‘ without installing anything extra, if everybody could start using ‘git update‘ instead of ‘git pull‘, if you could do ‘git stage diff‘, or ‘git reset --stage‘. Also, if triangular workflows were properly supported.

Unfortunately that’s not the case, and Git v2.0.0 is already released, and there isn’t much to be excited about.

You might think “perhaps for Git v3.0” (which could happen in two years, or ten, how knows), but if the past is any indication of the future, it won’t happen, specially since I’ve given up on all these patches.

The fact of the matter is that in every release of Git, there is only one focus: performance. Despite the fact that it’s #6 in the list of concerns of users, Git developers work on this because that’s their area of expertise, because it’s fun for them, and because they get paid to do so. There are occasional new features, and a bit of portability now and then, but for the most part Windows support is neglected in Git, which is why the msysgit project was born.

The documentation will always remain cryptic, because for the developers, it’s not cryptic, it’s very clear. And the user-interface will never change, because the developers don’t like change.

If you don’t believe me look at the backwards-incompatible changes in Git v2.0.0, or in fact, try to think back to the last time Git changed anything. Personally other than the git-foo -> ‘git foo’ change in v1.6.0 (which was horribly handled), I can’t think of anything but minor changes.

Anyway, you can use all these features I listed today (and more) if you use git-fc instead of Git. It is my own fork of Git that has all the features of Git, plus more.

Is there anything in that list that I missed? Do you think Git v2.0.0 has enough changes as it is?

Git v2.0.0, what changed, and why should you care

Git v2.0.0 is a backward-incompatible release, which means you should expect differences since the v1.x series.

Unless you’ve been following closely the Git mailing list, you probably don’t know the history behind the v2.0 release, which started long time ago (more than three years). It all started with a mail from Junio C Hamano, asking for developers to submit ideas for changes that normally would not happen because they break backwards compatibility, he invited us to think as if “we were writing Git from scratch”. This big release that would break backwards compatibility was going to be named “1.8.0” and people started to submit ideas for this important release. Eventually too much time passed, the versioning scheme changed, v1.8.0 was released, and the changes proposed for v1.8. slipped into what is now v2.0.

Parts of v2.0 have been already been deployed one way or the other (for example if you have configured ‘push.default = simple’), but finally today we have v2.0 final. And here are the big changes that we got.

‘git push’ default has changed

Here’s what the release notes say:

When "git push [$there]" does not say what to push, we have used the
traditional "matching" semantics so far (all your branches were sent
to the remote as long as there already are branches of the same name
over there).  In Git 2.0, the default is now the "simple" semantics,
which pushes:

 - only the current branch to the branch with the same name, and only
   when the current branch is set to integrate with that remote
   branch, if you are pushing to the same remote as you fetch from; or

 - only the current branch to the branch with the same name, if you
   are pushing to a remote that is not where you usually fetch from.

You can use the configuration variable "push.default" to change
this.  If you are an old-timer who wants to keep using the
"matching" semantics, you can set the variable to "matching", for
example.  Read the documentation for other possibilities.

Is that clear? Given the bad track record of Git documentation it wouldn’t surprise me if you didn’t get what this chunk of text is trying to say at all. Personally I find it much easier to read the code to figure out what is happening.

So let me try to explain. When you type ‘git push’ (without any arguments), Git uses the configuration ‘push.default’ in order to find out what to push. Before ‘push.default’ defaulted to ‘matching’, and now it defaults to ‘simple’.

The ‘matching’ configuration essentially converts ‘git push‘ into ‘git push origin :‘, which means push all the matching branches, so if you have a local ‘master’, and there’s a remote ‘master’, ‘master’ is pushed; if you have a local and remote ‘fix-1’, ‘fix-1’ is pushed, if you have a local ‘ext-feature-1’, but there’s no matching remote branch, it’s not pushed, and so on.

The ‘simple’ configuration pushes a single branch instead, and it uses your configured upstream branch (see this post for a full explanation of the upstream branch), so if your current branch is ‘master’, and if ‘origin/master’ is the upstream of your ‘master’ branch, ‘git push’ will basically be the same as ‘git push origin master‘, or to be more specific ‘git push origin master:master‘ (the upstream branch can have a different name).

Note: If you are not familiar with the src:dst syntax; you can push a local branch ‘src’ and have the ‘dst’ name on the server, so you don’t need to rename a local branch, you can do ‘git push origin foobar:feature-a’, and your local branch “foobar” will be named “feature-a” on the server. This has nothing to do with v2.0.

However, if the current branch is ‘fix-1’ and the upstream is ‘origin/master’, ‘git push’ will complain that the name of the destination branch is not the same, because it doesn’t know if to do ‘git push origin fix-1:master‘ or ‘git push origin fix-1:fix-1‘.

Additionally if you do ‘git push github‘ (not the remote of your upstream branch), Git will simply use the name of the current branch, essentially ‘git push github fix-1‘ (‘fix-1’ being the name of the current branch).

This mode is anything but simple to describe. But perhaps the name is OK, because you can expect it to “simply work”.

Would I care?

If you don’t type ‘git push’, but instead specify what and where to push… you don’t care.

If you have configured ‘push.default’ already, which most likely you already did, because otherwise you will be getting the following annoying message all the time since two years ago… you don’t care.

warning: push.default is unset; its implicit value is changing in
Git 2.0 from 'matching' to 'simple'. To squelch this message
and maintain the current behavior after the default changes, use:

  git config --global push.default matching

To squelch this message and adopt the new behavior now, use:

  git config --global push.default simple

When push.default is set to 'matching', git will push local branches
to the remote branches that already exist with the same name.

In Git 2.0, Git will default to the more conservative 'simple'
behavior, which only pushes the current branch to the corresponding
remote branch that 'git pull' uses to update the current branch.

See 'git help config' and search for 'push.default' for further information.
(the 'simple' mode was introduced in Git 1.7.11. Use the similar mode
'current' instead of 'simple' if you sometimes use older versions of Git)

So, most likely you don’t care.

‘git add’ in directory

Here’s what the release notes say:

When "git add -u" and "git add -A" are run inside a subdirectory
without specifying which paths to add on the command line, they
operate on the entire tree for consistency with "git commit -a" and
other commands (these commands used to operate only on the current
subdirectory).  Say "git add -u ." or "git add -A ." if you want to
limit the operation to the current directory.

Although this is a clearer explanation, it’s not very clear what is changing, so let me give you can example.

Say you have modified two files, ‘README’ and ‘test/basic.t’, then you go to the ‘test’ directory, and run ‘git add -u‘, in pre-v2.0 only ‘test/basic.t’ will be staged, in post-v2.0 both files will be staged. If you run the command in the top level directory, nothing changes.

Would I care?

If you haven’t seen the following warning while doing ‘git add -u‘ or ‘git add -A‘, or if you don’t even use those options, you are fine.

warning: The behavior of 'git add --update (or -u)' with no path argument from a
subdirectory of the tree will change in Git 2.0 and should not be used anymore.
To add content for the whole tree, run:

  git add --update :/
  (or git add -u :/)

To restrict the command to the current directory, run:

  git add --update .
  (or git add -u .)

With the current Git version, the command is restricted to the current directory.

‘git add’ adds removals

Here’s what the release notes say:

"git add " is the same as "git add -A " now, so that
"git add dir/" will notice paths you removed from the directory and
record the removal.  In older versions of Git, "git add " used
to ignore removals.  You can say "git add --ignore-removal " to
add only added or modified paths in , if you really want to.

Again, it should be clearer with an example. Say you removed the file ‘test/basic.t’ and added a new file ‘test/main.t’, those changes are not staged, so you stage them with ‘git add test/’, pre-v2.0 ‘test/basic.t’ would remain tracked, post-v2.0, ‘test/basic.t’ is removed from the stage.

Would I care?

If you haven’t seen the following warning while doing ‘git add‘, you are fine.

warning: You ran 'git add' with neither '-A (--all)' or '--ignore-removal',
whose behaviour will change in Git 2.0 with respect to paths you removed.
Paths like 'test/basic.t' that are
removed from your working tree are ignored with this version of Git.

* 'git add --ignore-removal ', which is the current default,
  ignores paths you removed from your working tree.

* 'git add --all ' will let you also record the removals.

Run 'git status' to check the paths you removed from your working tree.

The rest

The "-q" option to "git diff-files", which does *NOT* mean "quiet",
has been removed (it told Git to ignore deletion, which you can do
with "git diff-files --diff-filter=d").

Most people don’t use this command, thus don’t care.

"git request-pull" lost a few "heuristics" that often led to mistakes.

Again, most people don’t use this command, which is mostly broken anyway.

The default prefix for "git svn" has changed in Git 2.0.  For a long
time, "git svn" created its remote-tracking branches directly under
refs/remotes, but it now places them under refs/remotes/origin/ unless
it is told otherwise with its "--prefix" option.

If you don’t use ‘git svn’, you don’t care. If you don’t see a difference between ‘trunk’ and ‘origin/trunk’, you don’t care.


You probably don’t care about these backward-incompatible changes. Sure, Git v2.0.0 received a good dosage of new features and bug-fixes, but so did v1.9.0, and all the versions before.

Given the fact that Git v2.0.0 has been cooking for three years, I think it’s a big missed opportunity that nothing really changed, specially given that in previous user surveys people have said the user-interface and documentation needs to improve, and there have been patches to try to do so. In a separate post I discuss what I think Git v2.0.0 should have included.