GeistHaus
log in · sign up

Felipe Contreras

Part of wordpress.com

stories
How Dilbert’s creator trolled a Nobel laureate
PoliticsRandomTruthhoaxtrump
I explain how Scott Adams trolled Nobel laureate Paul Krugman. The rabbit hole goes deeper than you think.
Show full content

With the passing of Scott Adams (creator of Dilbert) I thought I would write about my favorite interaction of his, which was with Nobel laureate Paul Krugman. I love this interaction not only because it highlights one of the topics I write extensively about, which is how highly intelligent (or seemingly intelligent) people fall for the most obvious tricks, but also because it’s the epitome of what Adams was at his core: a very persuasive satirist.

It also shows something fundamental about the nature of our reality, which is that two people can see exactly the same information and arrive at very different conclusions. Just like in The Matrix, some people may see an attractive blonde woman in a red dress, other people would see an obvious honeypot. We all live in epistemological bubbles, but some people’s bubbles prevent them from seeing a reality that is very obvious and easy to verify. You’ll see what I mean soon.

First, let’s explore the two realities, then you decide which one is more likely. I contend this is not some kumbaya situation where the truth lies in the middle and everyone is kinda “right”.

Krugman’s world

Paul Krugman is an economist and distinguished professor as well as columnist and Nobel Prize laureate. He is la crème de la crème of intellectual academic heights, so of course many intelligent people rely on his insights in order to make sense of the world, especially when it comes to economics.

In 2020 Krugman made a comment on Twitter about the importance of debates for uneducated voters:

A quick thought about Dilbert turning on Donald Trump: for people who follow politics seriously, debates can seem nonsensical. We know who these guys are, and you shouldn’t choose a president based on the ability to deliver sound bites. But there are still some people who have managed to remain oblivious: people who rely on news sources that sanitize Trump’s rantings, long-time Republicans in denial about what their party has become. For some of them, Tuesday was revelatory. Debates, in other words, remove some of the filters, external and internal, that keep people from seeing the obvious. And that’s bad for Trump.

Paul Krugman

Now, this comment did not happen in a vacuum, it happened because of a comment Adams made in Episode 1140 of Real Coffee with Scott Adams: I Tell You Who Won the Debate and Why.

I’m just going to come out and say it: the President lost my vote last night… In my mind the President had to do one thing to win the election… disavow white supremacy if asked. That’s it.

Scott Adams

This, of course, is itself in reference to the first presidential debate between Donald Trump and Joe Biden.

After Adams’ comment, the corporate news cycle and Democrat social media went wild with it, and Krugman wasn’t the only one rejoicing in a Republican finally seeing the light about Trump.

So, with the full context we can understand Krugman’s point of view.

He is not saying Adams is stupid, just uninformed about Trump. Obviously a cartoonist capable of creating a successful and witty strip such as Dilbert must be at least somewhat intelligent, but it just so happens that Adams’ view of the political landscape is filtered by news sources that paint Trump in a favorable light (Fox News?), therefore Adam’s view is not accurate. Krugman is much more informed and his news sources are not biased, therefore he has an accurate view of the political landscape.

For Krugman and his informed friends, Trump’s flaws are as clear as day and they don’t need a debate to confirm what they already know. But for uninformed voters such as Adams, debates such as this are a perfect opportunity for them to realize who Trump really is.

Try as I might to be charitable to Krugman’s view, I don’t think there’s any reading in which this doesn’t show contempt. He is quite literally separating voters into us — the elite informed intelligentsia — and them — the uninformed plebeians.

We’ll soon find out how this strategy played out.

Adams’ world

The first thing to understand is that actually… that was not the full quote:

I’m just going to come out and say it: the President lost my vote last night, the President lost my vote last night. Now, that doesn’t mean he cannot get it back, it doesn’t mean that Biden is going to be a good president, I don’t think he would be, I think he’d be a disaster. But here’s my thing — and I get what you are going to argue, so before you jump in with the comments, you should trust that I will say your argument for you, so I’m not ignoring the argument, I will say it for you, here’s my problem… In my mind the President had to do one thing to win the election — just one thing, he had one thing he needed to do, and it wasn’t to make Biden go crazy, it wasn’t make strong points, it wan’t be accurate, it wasn’t make a good case for the coronavirus, it wan’t any of the those, he had one thing he needed to do — disavow white supremacy if asked. That’s it.

Now, it would have been nice if he had gone at the Fine People Hoax, to decry it as a hoax. He mumbled something under his breath when Chris Wallace asked him the question about “would you disavow white supremacists and the militia?”…

Scott Adams

The salient missing context is that second paragraph where Adams mentioned the “Fine People Hoax”. What is that? Is it important?

First, the “Fine People Hoax” is a meta subject. Adams talked extensively about it, and I could write an entire article about it, but in the interest of brevity: it’s like a red pill. Adams called it the “The ‘Fine People’ Hoax Funnel“, because people who investigate it are funneled from the mainstream bubble (Krugman’s world) to an alternative bubble (Adam’s world). It’s a funnel because — to use another analogy — like The Wizard of Oz, once you pay attention to the man behind the curtain, there’s no going back.

In fact, Adams himself showed the two realities by comparing the results of Google: “Fine People Hoax”, with those of DuckDuckGo: “Fine People Hoax”. It’s no surprise to anyone paying attention that Google’s employees live in an ideological bubble, and they filter results they don’t like. Something that the Twitter Files clearly showed. That’s why the site “finepeoplehoax.net” is buried by Google, even though it was created expressly to explain the “Fine People Hoax”. And why this blog post is likely going to be silently suppressed as well.

Reality couldn’t get more ironic than that. Except maybe if UK’s surveillance system was named Big Brother.

But you don’t have to trust any site, you can find out the unedited full video and transcript of the conference about Charlottesville on August 15 of 2017 where Trump explicitly said:

and I’m not talking about the neo-Nazis and the white nationalists, because they should be condemned totally

Donald Trump

The corporate media took this statement to mean that he was talking about neo-Nazis, when he explicitly said he was not talking about neo-Nazis.

It couldn’t be any clearer. It takes 5 minutes of research from anyone to find out what Trump actually said, and yet somehow professional reporters couldn’t find it? The only logical conclusion is that these reporters intentionally lied about what Donald Trump said. That is why Adams calls it a “hoax“: because it is.

This is the core of the onion, which we can now unpeel back. Once anyone finds out about this hoax, it becomes impossible not to see the corporate media in a new light. Quite literally like a red pill, it forces people to consider that if they lied about this, perhaps they lied about other things, maybe a lot of things, maybe even most. And it’s not a mistake, because to this day (2026) people still keep repeating this lie.

So that’s what Adams was talking about. It would have been very easy for Trump to take this opportunity to dismantle this hoax in real-time on live TV for the entire nation, and he didn’t take it.

It was a layup. It was free money sitting on the fucking table and he left it there.

Scott Adams

Adams explained in that very same video that he felt “personally abused” by this situation. So it stands to reason that perhaps he was going to do something about it, since clearly Trump wasn’t going to.

We are still nowhere near seeing the full picture.

Adams’ underworld

So far we’ve seen Adams’ view of the facts, but not his psyche or motivation for those comments.

Adams is not just a cartoonist, he is also a trained hypnotist. In his own words, this training helped him understand just how manipulable humans are. He wrote a book about “persuasion” (in other words: manipulation): Win Bigly: Persuasion in a World Where Facts Don’t Matter.

If the title of the aforementioned book doesn’t give it away, Adams is not a big proponent of “truth” or ethics. However, I’m not going to attempt to write a full psychological profile in order to understand a tweet, we can look at examples of everyday life to understand where Adams is coming from.

If a teenage daughter says “yeah dad, this trip has been sooo fun”, shall we take this as a true statement? Anybody who has dealt with teenagers understands sarcasm — which includes all adults, because we’ve all been teenagers. Therefore all adults understand the psyche of a satirist, because satirists take sarcasm to an extreme in order to find deeper truths about the nature of our world.

Is it possible that a satirist wasn’t being 100% honest when he said “Trump lost my vote”?

That was a rhetorical question, by the way. We don’t need to wonder, because with the benefit of hindsight we can see what happened literally the same day, hours after Krugman and most of corporate media made a big deal about Trump “losing” Adams’ vote.

Adams: Today I learned that agreeing with Democrats and saying I won't vote for Trump makes them hate me extra and threaten me. So I'll be voting for Trump.
Royce: BOOM! Trap closed.
Adams: Too easy

Today I learned that agreeing with Democrats and saying I won’t vote for Trump makes them hate me extra and threaten me. So I’ll be voting for Trump.

Scott Adams

There is no hypothetical “if Adams was toying with Democrats”, it’s a fact that he was, and most of his fans saw it a mile away.

First of all, Adams doesn’t vote, in fact he has written and talked about the reasons why he doesn’t vote. This is what he said in Joe Rogan’s: Joe Rogan Experience #874 – Scott Adams.

It’s weird, there was a space for this… of somebody who didn’t have a team. It’s part of the reason I don’t vote. I don’t join a party… It would bias me. As soon as you vote you join a team.

Scott Adams

Adams consciously did not vote in order to remain objective, in his own words. So how on Earth did Trump lose the vote of a conscientious objector of voting? He didn’t. Adams was never going to vote for Trump in the first place.

So why did he say that Trump lost his vote? It’s almost like he was trolling…

That’s another rhetorical question by the way. Adams was 100% trolling.

Nowadays (2026) it’s a little bit difficult to find sources of Adams’ view on voting, but back in 2020 I remember I found immediately an article he wrote: Who’s Afraid of Donald Trump?

For new readers:

I have already disavowed Donald Trump for being scary. And by that I mean he scares my fellow citizens, which I find unacceptable.

My policy views don’t line up with any of the candidates’ positions, including Trump’s. I don’t vote and I am not a member of a political party. I try to avoid identifying with any political label because doing so would make me biased and less credible.

Scott Adams

If you want to find other instances of Adams saying variations of the same thing on Google, you would have to use a very specific query: site:scottadamssaid.com “i don’t vote”.

Not only did Adams say he did not vote, he said he disavowed Trump. That is not to say that Adams was anti-Trump, he had a nuanced view, and if you are interested in it, go and read his entire series of posts: The Trump Master Persuader. I’m not going to try to summarize it, and it’s not relevant. The only relevant fact is that he was not going to vote for Trump.

I didn’t expect Krugman to know all of Adams’ corpus, but I did expect him to do a simple google search. Adams being a master on persuasion and understanding how humans tick, knew a lot of people were not going to do even the most basic research. Most humans when they find information that conforms to their preestablished beliefs, simply accept it without question. Krugman being a predictable member of the human race did precisely what most humans do.

Adams’ true target

This situation was funny to Adams, it was hilarious to Adams’ followers, it was priceless to me. But to a satirist, mockery is not the end goal, it’s the means.

The true target of Adams were Krugman’s followers who clicked the link and wondered: “what is the Fine People Hoax?” I already knew, but a lot of people did not. That day a lot of people were funneled from Krugman’s world into Adams’ world, never to come back. And therein lies the true genius of Adams. He abused Krugman’s gullibility in order to spread his message.

If Trump wasn’t going to debunk the Fine People Hoax, Adams was going to take matters into his own hands, and because the end justifies the means, trolling wasn’t off the table.

I bet Krugman never even realized what happened, even after Adams twitted “too easy”.

Adams’ legacy

I realized after the fact that I refereed to Scott Adams in the present tense, but that’s because to me he is not really gone. I watched a few episodes of Real Coffee with Scott Adams, but not a lot. I didn’t read most of his posts, I did not watch Joe Rogan’s episode, and I haven’t read any of his books. So to me there’s still a lot of “new” content to consume.

Now, I hinted in the introduction one of the reasons I’m writing about this episode is because I find it hilarious how easy it is to trick supposedly highly intelligent people. But the deeper reason is that both Krugman an Adams saw the same debate, however, their understanding of reality is completely different. Because Krugman is not blackpilled as Adams, he is completely unable to see Adams’ reality. To Krugman and corporate media it’s not even conceivable that a mere cartoonist like Adams could play them like a violin, but my contention is that’s precisely what happened.

For an even clearer example of Adams’ persuasion (aka trolling), you can look at Episode 1995: Get In Here!. This episode became viral because on an excerpt in which he clearly and unequivocally admits defeat. However, if you watch the entire episode he even says that he is only doing that in order for people to stay and listen to the rest of what he has to say, and then flips it over and states that his analysis was right. But it’s not just that, at the beginning of the episode he claims this might be his most important stream, which could change history. It does seem he tried to make the episode viral in order to get people to listen about a Tucker Carlson’s episode in which he debunked a lot of myths about Richard Nixon and how the CIA has been running the country throughout the years. In Adams own words: “it might be the one of the greatest things I’ve seen in television in all genres”. Adams was redpilled by Carlson, and wanted his audience to have the same experience. Nah, Adams couldn’t possibly have planned all that, could he?

The fact is, Scott Adams is going to keep persuading people, long after he is gone.

Krugman / Dilbert
FelipeC
http://felipec.wordpress.com/?p=5718
Extensions
Cambios históricos del ingreso en México
MexicoPoliticsincomeobradorstatistics
Muestro los cambios en ingreso mediano por hogar de México en los últimos 40 años.
Show full content

Llevo años analizando datos del INEGI para comprender mejor el comportamiento de los ingresos en México, pero ya que se han liberado los datos de la encuesta del 2024, es momento de hacer un análisis histórico que incluye el periodo completo de López Obrador.

En ésta gráfica se puede observar que crisis tras crisis el ingreso no ha podido aumentar. Hasta el 2024. En 1994 todo parecía viento en popa, hasta que hubo un a crisis, lo mismo en el 2006. Por 30 años el ingreso mensual por hogar estuvo oscilando al rededor de los $16,000, hasta que finalmente se despegó después del 2020.

Los datos no mienten y la mayoría de las familias en México lo sienten.

Lo críticos de Obrador seguramente dirán que éstos datos fueron manipulados por el INEGI, excepto que éste dato en particular no es reportado. Yo lo obtuve de los datos brutos usando software estadístico, pero cualquiera puede replicar éstos resultados.

Vamos a analizarlos paso por paso.

Mediana

Mucha gente se enfoca en el promedio, porque es el valor más fácil de obtener. Sin embargo, cuando la distribución es asimétrica — como es la distribución de ingreso, puede ser engañoso. Más aún si existe mucha desigualdad.

El ingreso promedio mensual de los hogares en México es de al rededor de $27,000, pero sólo el 35% llegan a tener ese ingreso. Muchos piensan que el 50% de los hogares deberían llegar al promedio, pero no es cierto: ese es el ingreso mediano.

Aquí podemos ver que el ingreso que divide al 50% de los hogares es $20,450. Es decir, la mitad de los hogares perciben un ingreso mayor, la otra mitad uno menor.

El INEGI sólo reporta el promedio, que siempre va a ser mayor a la mediana, por lo cuál la situación puede parecer mejor de lo que realmente es.

Vamos a suponer que en un auditorio hay 100 profesionistas que en promedio perciben un ingreso de $50,000 al mes. Entra Carlos Slim, y ahora el promedio es $60,000,000. ¿Eso realmente representa la situación de la mayoría de la gente?

El promedio se ve sumamente afectado por la desigualdad, la mediana no. Mientras más desigualdad, más engañoso puede ser el promedio.

Por eso es que la mayoría de los economistas usan la mediana para analizar los ingresos de una población, y es lo que usaremos aquí.

Hogares

Al momento de hacer comparaciones, mucha gente se enfoca en individuos, pero para analizar ingresos, los economistas se enfocan en hogares.

Hay muchas razones, pero la principal es que en un hogar se comparten recursos. Dos individuos que ganan $10,000 viviendo juntos están en una situación muy diferente que viviendo separados. Por ejemplo se comparten los servicios como la energía de un refrigerador, y el Internet. Ni hablar si hablamos de una familia de 6 con 4 dependientes. Ver economía de escala.

Además, no todo mundo trabaja, hay estudiantes, niños, jubilados, y gente con discapacidades. Si sólo consideramos a la gente trabajadora ocupada, mucha gente se queda fuera del análisis.

Finalmente, los impuestos y programas sociales están enfocados en familias, no individuos.

El ingreso mediano per capita es $5,732. Pero ese dato no es de mucha utilidad ya que es básicamente el ingreso por hogar dividido por los integrantes del hogar (en promedio 3.4).

Inflación

No es lo mismo $1,000 en el 2025 que en 1980. Debido a la inflación, el poder adquisitivo de un hogar cambia con el tiempo.

En 1984 el ingreso mediano era N$40 ($40,000 pesos “viejos”), pero debido al 32,644% de inflación, en el 2025 eso equivale a N$13,144 ($13,144,000 pesos “viejos”).

Aquí está la tabla de los ingresos medianos por año de la encuesta ENIGH y la inflación correspondiente desde el período anterior.

1984$401989$7581529.88%1992$1,48777.20%1994$1,75816.55%1996$2,42788.03%1998$3,45937.96%2000$4,91725.07%2002$5,74311.19%2004$6,3629.50%2006$7,6637.45%2008$7,9169.87%2010$8,0668.61%2012$8,5807.93%2014$8,9607.83%2016$10,5895.59%2018$11,88311.65%2020$12,2086.92%2022$15,77615.38%2024$19,7399.18%

Claramente esos valores nominales no son comparables. Incluso el ingreso del 2024 se debe ajustar para la fecha de hoy (2025-10). La formula es sencilla usando el INPC: x / (a / b). El promedio cuando se realizó la encuesta en el 2024 fue de 136.7773, y en octubre del 2025 es de 141.7080. Por lo tanto: 19739 / (136.7773 / 141.7080), que es 20451.

Hice lo mismo para todos los años de todas las encuestas. Así podemos comparar manzanas con manzanas, a precios reales del 2025.

Sexenios

Además de ver la variación por año, podemos agrupar los cambios por sexenio. Así podemos observar cómo las políticas de cada presidente impactaron el ingreso de los hogares.

Claramente el periodo de Obrador tuvo un impacto muy positivo, y el de Zedillo uno muy negativo.

Aunque también hay que considerar que Zedillo tuvo que lidiar con una crisis muy significativa (Efecto Tequila), pero también Obrador tuvo que lidiar con la crisis mundial de COVID-19. De hecho, prácticamente todos los presidentes lidiaron con una crisis económica (excepto Peña Nieto).

Deciles

No todos los hogares se ven afectados de la misma forma. Si dividimos a los hogares en 10 grupos (i.e. deciles), podemos comparar el 10% de los hogares con más ingresos, y el 10% de menos ingresos.

En el periodo de Obrador (2018 → 2024), todos los deciles se vieron afectados de forma positiva, sin embargo el decil 1 (los más pobres) fue el que tuvo un mayor incremento: +36%. En cambio el decil 10 (los más ricos) sólo un +4%. Ésto concuerda con la política que se expresó: enfocarse en los más pobres. Aunque todo mundo se benefició.

Por otro lado en el periodo de Calderón (2006 → 2012) todos los deciles se vieron perjudicados. Sin embargo el decil 1 fue el que experimentó una mayor reducción: -19%, mientras que el decil 10 sólo -13%. Ésto parece indicar que Calderón se preocupó más por el grupo demográfico más adinerado.

Es importante comprender que los cambios económicos no sólo se perciben de forma diferente por los diferentes deciles, sino que varía de estado a estado, nivel de estudios, y también es diferente de las zonas rurales a las urbanas.

Comentario

En éste artículo me he enfocado en los datos y no en opiniones. Sin embargo, sería negligente de mi parte no comentar sobre lo que los datos claramente demuestran.

Yo no voté por Obrador, y he tratado de analizar la información sin partir de una conclusión previa. A partir de los datos, mi conclusión es que el periodo de Obrador fue positivo para la mayoría de los hogares mexicanos, especialmente para los más pobres. Esto coincide con su nivel de aprobación de alrededor del 76%, el más alto en los últimos 30 años.

Quien afirme que los hogares más pobres no se beneficiaron durante el periodo de Obrador confronta evidencia contundente: el decil 1 incrementó su ingreso en aproximadamente +36%, y la pobreza extrema disminuyó de 7% a 5.3%.

Estos resultados son aún más notables considerando que el sexenio incluyó la recesión global más profunda en 40 años: una caída del PIB de 21.5 pp, comparada con 10.4 pp durante la crisis de 1994. Aun así, el ingreso mediano cayó solo -4%, frente al -36% observado en 1994. Y esto ocurrió en un contexto en el que la economía mundial ya mostraba signos de desaceleración, incluso antes de la pandemia de COVID-19.

No hay evidencia que convenza a quien no quiere ver.

A pesar de que la mayoría de los hogares mexicanos se encuentran hoy en una situación notablemente más sólida que en cualquier otro momento de los últimos 30 años, la oposición seguirá negando todas las métricas positivas e inventando negativas.

Para quien quiera ver la evidencia objetiva, hay mucho que celebrar.

Los datos no mienten.

Explicación

Para los que quieran ver cómo obtener éstos datos, aquí hay un video explicando a detalle.

main
FelipeC
http://felipec.wordpress.com/?p=5679
Extensions
On being wrong
MexicoPoliticsScienceTruthcovid-19statistics
I go through some of the arguments I had regarding COVID-19 testing to show how people were wrong, using data from 2025. But not amount of evidence ever makes anyone accept they were wrong.
Show full content

I’m often being told that I never accept when I’m wrong, despite the fact that I’ve actually done that many times, for example: I was wrong about Trump. Being stubborn — or as I see it: passionately defend the truth — is a different thing.

One thing I like about programming is that very often it’s possible to sort out who is right and who is wrong in a relatively cheaply manner, and overwhelmingly often it turns out I was right, and some “expert” in the field was wrong. This must annoy many people, but it is what it is.

Unfortunately it’s not so easy in other fields, like geopolitics or culture — where I think I’m often correct, but there’s no sure way to prove it. But occasionally there are events in real-life (not software) where beliefs can truly be put to the test. That’s the case with COVID-19, which — unlike any other event in my lifetime — this time everyone was paying attention, and it turns out almost everyone was wrong, especially the “experts”. Me and a few outliers were right, about pretty much everything.

People are still in denial mode, so they are not yet ready to accept how wrong they were, but the data doesn’t lie, and it’s only getting worse as the years pass.

I already wrote an article about the outcomes of COVID-19 (in particular about Mexico), but it was censored by Google, so pretty much no one has seen it. This time I’m going to focus only on one claim: more testing meant less deaths.

I argued at the time that it was nonsensical to believe that more testing somehow was going to result in less deaths, but corporate media, politicians, and the experts, all said otherwise. “Everyone” believed them, and said I was wrong.

The data should be clear now: more testing did nothing to reduce deaths. So “everyone” was wrong, and I was right.

I’m not going to spell out why pharmaceutical companies might have had some vested interest in mass testing, but I think it’s obvious.

Did anyone who argued against me at the time accept they were wrong? No. Even when the data is overwhelmingly clear now. Yet, I‘m the one that never accepts when I’m wrong.

Perhaps it’s because I’m not wrong?

Our World in Data

One argument that someone said to me back then is that running more tests is important, because OWID (Our World in Data) says so, and who am I to contradict them, right? Let’s skip over the fact that this is an obvious appeal to authority fallacy. It turns out I was right, and OWID was wrong.

This is what they said:

According to criteria published by WHO in May 2020, a positive rate of less than 5% is one indicator that the epidemic is under control in a country.

Our World in Data

Although this is correct, they read it wrong, and used it to reach the wrong conclusion. Guess what: they removed it in Feb 25 2022. They didn’t explain why, but later they did another change that could explain it. But that’s not the only thing they changed, they used to say “the positive rate is a good metric for how adequately countries are testing because it indicates the level of testing relative to the size of the outbreak”, and they changed it to “the positive rate can be a good metric for how adequately countries are testing because it can indicate the level of testing relative to the size of the outbreak”.

Why? This should be obvious to anyone who understands likelihood, but I’m going to spell it out. Recently I saw in a congressional hearing a gentleman asking the question “does this treatment produce this result?” and the answer the witness gave was “it can“. That doesn’t answer the question. Everything is possible, rational people are not interested in what can happen, we care about what is likely to be the case.

Obviously OWID realized the positivity rate wasn’t a good metric. Because it never was.

They committed the most obvious fallacy in the book: converse error (which I call appearance fallacy: the most common mistake). If a country has a positivity rate below 5%, that’s a good indicator that the country is doing well, but if the country does not have such positivity rate, that does not mean it’s necessarily doing poorly.

Apparently these experts don’t understand basic logic.

But it gets even worse, because OWID cited a criteria by the WHO, and they clearly didn’t actually read the document, because it clearly states “countries should focus on the criteria most relevant for them”. I don’t know how else anyone is supposed to read that, but it’s the exact opposite of “pick one criteria and use it to compare all countries”, which is precisely what OWID did.

Not only that, but right below that criteria, there’s another criteria which says: less than 5% “among influenza-like-illness (ILI) samples tested at sentinel surveillance sites”, which is how Mexico measured the positivity rate.

And it doesn’t end there, because there’s five more criteria. Any one of those could indicate that the country is doing well.

If a country is not doing well in one of those criteria, that does not necessarily mean the country is not doing well. Obviously.

I understood that from the beginning, but hey, I’m not an expert.

Then in 23 June 2022 OWID stopped providing updates about testing altogether:

Our data on COVID-19 tests and positive rate is no longer updated since 23 June 2022.

Why are we stopping updates?

Firstly, reporting methods have become very different between countries, and the type of tests (PCR, antigen, at-home self-tests) included in the data is increasingly unclear.

Secondly, testing and case confirmation criteria have diverged significantly between countries: the type of test necessary to confirm a case; if a referral from a GP is required for laboratory tests; if laboratory tests are free or subsidized; if at-home self-tests are available; whether vaccination status influences these parameters. These factors have made harmonizing data definitions across countries difficult to sustain.

Our World in Data

Different countries measured things differently? No shit. Who could have guessed that?

If Mexico was using a statistical method (sentinel surveillance) and USA was mass testing everyone, obviously the results are going to be different. Yet another fallacy: comparing apples to oranges.

This was the case from the very beginning. Mexico always used the sentinel surveillance method, from the start. So it never was logical to conclude that Mexico was doing poorly because the overall positivity rate wasn’t below 5%, especially when it wasn’t the only positivity rate listed in the WHO criteria. OWID’s own cited WHO document explained that.

So I was right from the start, OWID was wrong. There’s no other logical conclusion.

Did the people who made this argument ever accept they were wrong? Of course not. No one ever does.

Paper-thumping

Somebody else used a “scientific” paper published in Nature to show that a high number of tests was associated with less deaths, proving that tests were very important. However, I bet they only read the title and didn’t bother to read any of it, because the conclusion didn’t match with the data. I call this “paper-thumping” (a portmanteau of bible-thumping): their objective wasn’t to find out the truth, their objective was to prove me wrong, using any evidence available, regardless of its validty.

I’m going to spoil the ending: they were wrong.

Newer studies have found that the correlation is unlikely to be meaningful: Is COVID-19 mortality associated with test number?

We found very little correlation between the number of the testing and COVID-19 mortality. Although the association was statistically significant, we consider the correlation was so weak and is unlikely to be meaningful both clinically and epidemiologically. Based on our findings, the number of the testing is not likely to affect disease mortality.

Kentaro Iwata, Chisato Miyakoshi

Really? Does that mean that sometimes even “scientific” research papers are wrong? Shocking.

But you didn’t need a new research paper to arrive to that conclusion, because logic alone was enough. If a person tests positive, that person obviously should isolate, right? But if a person tested negative, they were supposed to isolate as well. So if everyone was supposed to do the same thing regardless of the outcome of the test, how was a test supposed to prevent deaths? Don’t ask me, I operate in the realm of logic.

But let’s look at this allegedly “scientific” paper: Covid-19 mortality is negatively associated with test number and government effectiveness.

Right away they didn’t spell “COVID-19” correctly, but I’m sure that’s not a harbinger of things to come. This is what their conclusion was:

In conclusion, we found that higher Covid-19 mortality is associated with lower test number, lower government effectiveness, aging population, fewer beds, and better transport infrastructure. Increasing Covid-19 number of tests and improving government effectiveness have the potential to reduce Covid-19 related mortality.

Li-Lin Liang, Ching-Hung Tseng, Hsiu J. Ho & Chun-Ying Wu

There we go again with a statement that it can reduce mortality, not that it likely does.

What data did they use to arrive to that conclusion?

Covid-19 mortality rate was negatively and significantly associated with test number for high-income (r = − 0.32, P = 0.015), middle-income (r = − 0.28, P = 0.015) and low-income (r = − 0.67, P = 0.002) countries, respectively.

Li-Lin Liang, Ching-Hung Tseng, Hsiu J. Ho & Chun-Ying Wu
Is this supposed to be showing correlation?

This correlation already seems weak, but that’s splitting countries in that particular way. I recovered the data from the graphs and calculated the overall correlation: it turns out to be r=-0.07. That’s nothing. Here’s the Observable notebook: Reproducing study.

So it’s misleading to say “Covid-19 mortality rate is negatively associated with test number”, when in fact it’s only weakly correlated at best, but that’s not even the beginning of the problem.

This is the smoking gun:

  • Covid-19 mortality rate was negatively associated with Covid-19 test number per 100 people (RR = 0.92, P = 0.001)
  • one additional Covid-19 screening test per 100 people was associated with a 8% reduction in mortality risk (RR = 0.92; 95% CI 0.87 to 0.96, P = 0.001)

I’m no scientist, but I know how to read — they are using the same metric for two completely different claims. A rate of reduction due to one additional test is not the same as a negative correlation between test number and mortality rate. If this is not evidence that they are intentionally trying to mislead people, I don’t know what is.

There is in fact a second smoking gun:

Covid-19 mortality rate was defined as the number of deaths per 100 Covid-19 cases.

Li-Lin Liang, Ching-Hung Tseng, Hsiu J. Ho & Chun-Ying Wu

The number of detected COVID-19 cases is obviously going to depend on the number of COVID-19 tests. They tried to find a correlation between two variables that we already know are related, and they still couldn’t find it. The mortality rational people care about is deaths per 100 k people in the general population, not a rate that depends on a denominator which varies depending on the number of tests.

But remember I mentioned a more recent paper which found the correlation “unlikely to be meaningful”? The correlation coefficient they found was r=0.34. That’s a positive correlation. That means the more tests a country did, the more deaths.

Call me crazy, but it seems to me it’s entirely possible that it was the high number of deaths that caused countries to do more tests, not the other way around. In other words: the direction of causality was the opposite of what people assumed.

Finally, we have to be aware of the possibility that a large number of testing might be the result of, but not the cause of, the disease impact and subsequent mortality.

Kentaro Iwata, Chisato Miyakoshi

But it doesn’t really matter, because in either study the correlation wasn’t strong.

However, I’m the one that’s wrong for not reflexively believing the title of Nature’s paper “Covid-19 mortality is negatively associated with test number and government effectiveness”. Right.

Also, I find it funny that 100% of the comments are critical of this paper, one said “how did this get through peer review?”, another “this paper should be removed from the journal”, yet another “they are paid to push this crap”. And finally: they closed the comments. Of course.

Nevertheless, we are just getting started, because if you really want to know if tests did anything, you shouldn’t be comparing them with deaths, you should be comparing them with excess deaths. People die in different months of the year at different rates. You can’t assume and increased number of deaths in January is necessarily due to a particular disease, especially when every year more people die in January.

Am I the only one that understands that mortality is seasonal?

Excess deaths

There aren’t many studies which compare the number of tests to excess deaths, however, I found one that tangentially mentions them: The underlying factors of excess mortality in 2020: a cross-country analysis of pre-pandemic healthcare conditions and strategies to cope with Covid-19.

Confirming arguments suggesting that targeted testing focusing on workplaces, care homes, schools and areas of high infection risk is key to the achievement of an efficient epidemiological surveillance and strong contact-tracing capacity [12], the estimated association between the number of Covid-19 tests per 100 k people and excess mortality was not statistically significant in any version of the model. Therefore, the number of tests undertaken proved to be a less effective weapon in the battle against the pandemic, given that the only way to control the pandemic was through targeted testing in places with high infection risk [49]. By contrast, other countries, resting upon self-tests or population-wide invitations to be tested, regardless of any symptoms, had less chances to detect positive cases and, thereupon, trace their contacts, regardless of the number of tests.

Nikolaos Kapitsinis

This should be the nail in the coffin: no, tests were not an effective weapon in the reduction of deaths (how could they?).

But we don’t have to rely on this paper, because there are other ways to show this. By the way, why aren’t there more papers doing this comparison? For some reason researches don’t seem to be interested in finding out how effective tests really were, after years of relentless propaganda pushing for them. Weird.

As usual, I had to do my own research, which as it turns out wasn’t difficult. All I had to do is pull data from two sources. One was the incredible research done by Ariel Karlinsky and Dmitry Kobak: Tracking excess mortality across countries during the COVID-19 pandemic with the World Mortality Dataset, which fortunately had all the data available on GitHub: dkobak/excess-mortality. The other was OWID’s own positive rate.

If your eyes aren’t able to guess the correlation coefficient, it’s r=0.085, which means: jack shit.

There’s no correlation whatsoever between the positive test rate and excess mortality. None.

Just compare Mexico with Cuba. Both have roughly the same excess mortality, but Cuba has substantially lower positive test rate, in fact, it’s below the 5% that the WHO said was one of the criteria which suggested a country was “doing well”.

All the data is available in this Observable notebook: COVID-19 tests correlation.

I also made a comparison between deaths per capita and tests per capita, the result was also a positive correlation, although very weak: r=0.15.

But obviously this can’t be right. There must be some way in which I’m wrong. Despite the fact that all the data shows I was right.

Statistics

I think I’ve already shown beyond reasonable doubt to any rational person why tests did not reduce mortality. But there’s another subtle point “everyone” missed, and it has to do with the whole reason statistics were invented in the first place.

Statistics were invented precisely because it’s impossible to measure everything. That’s literally it.

The way reasonable people handle this is by using math to figure out a sensible threshold — a range where the value of interest is very likely to fall — without having to spend endless time or resources measuring every single case.

That, in essence, is what statistics is for.

So when “everyone”, from corporate media, to politicians, to public policy “experts”, argued that every COVID-19 case had to be tested, I was baffled. Why? There’s absolutely no gain in trying doing that, never mind the fact that it’s impossible.

Statistics was invented precisely in order to avoid doing that!

Mexico went for the statistical approach, while most countries of the world aimed for mass testing.

Dr. López-Gatell was Mexico’s Dr. Fauci, and he argued precisely this point many times. I clipped one of the many several-hour daily videos of him explaining the reasoning behind, on 8 April 2020, so pretty much at the beginning of the pandemic: Dr. Hugo López-Gatell explains the sentinel model.

Corporate media in Mexico harshly criticized him for not following the lead of most countries in the world and mass test everyone, like USA. But he stood his ground and explained again and again why that didn’t make sense.

His argument can be boiled down to “not everything can be measured”.

Can any reasonable person disagree with that? That’s the whole reason why statistics was invented.

Am I tripping?

He explicitly argued that just because USA was running more tests, that doesn’t mean they were finding all the cases (an impossible task to begin with), so obviously they were missing some cases, and with the benefit of hindsight, we now know that he was right: USA missed tons of cases. When they actually tried to estimate the real cases, they were 2.4 times more. So needless to say they didn’t manage to do the impossible. Duh.

This is a graph that comes pretty much straight from Karlinsky & Kobak, and it shows that although there’s a strong correlation between excess mortality and the official number of COVID-19 deaths for USA, it’s not a one-to-one relationship. And they had to do 913 million tests to achieve that.

Mexico tried a completely different approach: they never attempted to do what was already known to be impossible. They only did 16 million tests, and as a result they tracked excess mortality better than USA.

Mexico’s r=0.97 is higher than USA’s r=0.86, therefore the official deaths better tracked excess mortality, using 56x less resources.

Who would have thought that using the science of statistics — which was invented precisely to do this kind of thing — would pay off?

Oh, that’s right: I did.

Conclusion

It doesn’t actually matter that every actual scientific study shows that I was right, and so does all the available information in 2025.

I’m a person who is unable to accept when I’m wrong — even when I have publicly done precisely that multiple times — therefore by definition I have to be wrong every single time.

So even though it’s not possible to demonstrate that a single thing I’ve said in this article is wrong, I’m just wrong.

This not just about COVID-19. There’s a ton of easily demonstrable falsehoods being spread about Trump, China, Palestine, Maduro, you name it. I just picked COVID-19 because it’s the easiest to dismantle, and the one no one can say is not important and they were not paying attention.

I think it’s pretty clear we are living a post-truth era. And really, truth is an outdated concept that many people clearly have an allergy to.

Unfortunately, there’s no amount of evidence that’s going to change that. The people who by some accident of luck have the intellectual tools to discern what’s true, have to necessarily be wrong every single time, by definition.

wrong
FelipeC
http://felipec.wordpress.com/?p=5606
Extensions
Open Ideas; a new project to refactor freedom of speech
PoliticsTruthfreedom-of-speechopen ideas
I explain my new project: Open Ideas as a reframing of what freedom of speech was always meant to be.
Show full content

In my mind the reason why freedom of speech is quintessentially important is quite obvious, but after years (more like decades) of debates, it’s very clear many people don’t understand it.

So in search for inspiration I’ve read what great thinkers of the past have said about freedom of speech, their insights are invaluable, and I’ve use that to try to convince people of what freedom of speech was supposed to mean. To no avail.

In this day and age, people are genuinely uninterested in what great thinkers of the past had to say (fucking boomers am I right?). But they are not interested in my rationale either.

It seems society is doomed to believe freedom of speech is whatever the majority says it is. Never mind the fact that the quote “freedom of speech doesn’t mean freedom from consequences” comes from nowhere, and has zero rationale behind it. In fact, John Stuart Mill — perhaps the most influential thinker regarding freedom of speech — coined the term “tyranny of the majority” to argue that freedom of speech should mean that the majority doesn’t get to dictate what “truth” is.

And now the tyranny of the majority gets to dictate that this cancerous slogan “freedom of speech doesn’t mean freedom from consequences” — that was probably coined by some cancel culture activist around 2010 — correctly synthesizes the essence of freedom of speech. Despite the fact that it runs contrary to what every free speech thinker has argued.

In addition to this, most people seem to believe freedom of speech is identical to the First Amendment, while the former was a philosophical idea mainly about an engine of progress, and the later a mere law of one particular country. While one uses the other as rationale: they are not the same.

After thinking arduously how to correct these misconceptions, writing extensively about it, and arguing ad infnitum in various forums, it has become clear to me that the only way to get out of this hole we’ve dug ourselves in, is to just throw away the term “freedom of speech”, come up with a completely new term, and defend that instead.

The term I came up with is Open Ideas.

If people want to wrongly believe that freedom of speech was just an individual right, so be it. Open Ideas is not a right, it’s a philosophical notion which affirms that the censorship of ideas stops the engine of progress, in other words: what freedom of speech has always been about.

Substack

There’s too much to write about this, I could probably write a book, but for now I’ve written an essay in my Substack: Open Ideas; a refactor of free speech.

In my Substack Heterodox Skepticism I write a about a bit more serious topics in more philosophical terms. Mainly about skepticism, logic, and truth.

Project

In addition, I published a project on GitHub: Open Ideas. There I wrote a manifesto, a rationale, a declaration, a bunch of slogans, and more.

It’s not complete yet, but no project ever is.

Conclusion

If the great thinkers of the past are right — and I believe they are — freedom of speech is the most important idea a society can hold. Therefore it is paramount that it’s the right idea, and not a bastardization modern activists hijacked to justify censorship.

We can’t just let the tyranny of the majority dictate what freedom of speech is, we have to reframe it in terms that actually make sense philosophically, and if that requires getting rid of the term “freedom of speech” altogether, so be it.

Open Ideas is what freedom of speech has always ought to be.

open-ideas
FelipeC
http://felipec.wordpress.com/?p=5595
Extensions
The Ruby community doesn’t have a DHH problem
CultureDevelopmentPoliticsSocialruby
A response to another blog post that states that the Ruby community as a DHH problem. If we look at every individual claim, it's obvious that it doesn't.
Show full content

This is a response to the blog post: The Ruby community has a DHH problem.

First let’s start with some objective guidelines. The Ruby community has a notion of MINASWAN: “Matz is nice and so we are nice”. After decades of heated debates, I believe in order to try to follow that code, we need to do three things:

  1. Assume good faith
  2. Interpret charitably
  3. Be tolerant

I think it’s reasonable to say that anyone who does the opposite of these points is not being nice: assuming bad faith isn’t nice, neither is interpreting what an interlocutor said in the least charitable way possible, and obviously neither is being intolerant.

If we follow these precepts while reading DHH’s controversial blog post: As I remember London, we arrive to a very different conclusion that many self-described “nice” people are reaching.

But I’m going to follow Tekin Süleyman’s critique (author of the aforementioned blog post), which I think is representative.

Natives

Before addressing what Tekin wrote about what DHH wrote, we need to understand what “native” means. And before doing that we need to consider what words are.

It’s just semantics.

Everyone

Many people dismiss semantics, but semantics is the study of meaning. So how can we possibly have a profitable debate if we don’t understand the meaning behind the words we are using? In order to explore what DHH actually said, we need to consider what he actually meant.

So we need to understand two things:

  1. A word can have multiple meanings
  2. We need to consider the meaning the speaker meant

The word “run” can have many different meanings, for example in “running to the store”, which has a different meaning than in “running the store”. So when trying to parse what someone said, we need to consider more than one potential meaning.

Moreover, language is ambiguous, when a person says “kill me now”, they probably didn’t mean that literally, same with “yeah dad, that joke was really funny”. Just like Occam’s razor is usually useful in problem-solving, Grice’s razor is useful in interpretation: consider what the speaker meant instead of what they literally said.

One definition of “native” is this:

living or growing naturally in a particular region : indigenous

Merriam-Webster

I strongly believe this is what DHH meant by “native”.

For example, I’m Mexican, and my family probably has more than 10 generations living in Mexico, but I don’t look “indigenous” (i.e. native American), I look more Spanish (Whitexican). Am I “native” in the sense that DHH meant? I don’t think so.

That doesn’t mean I’m not Mexican, it just means I’m not native to the region. In other words: most of my DNA doesn’t come from people who have lived in the region for thousands of years.

Reality is much more nuanced that “native” versus “non-native”, because I’m not Spanish either: I’m a mixture (mestizo) — as 99% of Mexicans are. But I’m probably 90% non-native, so “non-native” is a good approximation.

But we can’t expect writers to come up with a whole essay on every word they use, at some point they have to use shortcuts, and it’s our job as readers to try to guess what they most likely meant.

In his post, DHH complains that London is no longer a city he wants to live in because it is now only a third “native Brit”. His use of “native Brit” is as a proxy for “White British”. The implication is clear: if you are not White, you are not British.

Tekin Süleyman

I’m extending to Tekin the same charity I extend to DHH, but try as I might, I don’t see any other explanation for what he wrote.

I see two problems with that paragraph. The first one is the “implication”: “if you are not White, you are not British”. I don’t see anything that DHH wrote that could support that implication. My reading of DHH is quite different, and the closest implication to that statement in my view is: if you are not white, you most likely are not native British.

As a non-native Mexican, I don’t see what is the problem in stating that someone isn’t native. The fact that you aren’t a “native Brit” doesn’t mean you aren’t British. These are just facts. I don’t understand why Tekin has a problem with facts. There’s nothing wrong with being a non-native Brit.

The second problem is statistical. If native Brits are 99% white, that doesn’t imply that if you aren’t white you are necessarily not a native Brit. For example, if 99% of NBA players are above 1.8 m and Earl’s height is below that, does that mean that Earl isn’t an NBA player? This is a hasty generalization fallacy. If you aren’t white that doesn’t mean you aren’t a native Brit, it means you are likely not a native Brit.

But it doesn’t really matter, because the fact is that DHH never said that non-white people aren’t British. That is an uncharitable interpretation of what he actually said, and it is not nice to mischaracterize what people actually said.

Tommy Robinson

In the same post he praises Tommy Robinson

Tekin Süleyman

This is what DHH actually said about Tommy Robinson:

That frustration was on wide display in Tommy Robinson’s march yesterday.

David Heinemeier Hansson

DHH didn’t even say anything about Tommy Robinson: he was talking about a march.

I’m not going to bother investigating if what Tekin said about Robinson is actually true, because it doesn’t matter: it’s a lie that DHH praised Robinson.

I hope I don’t have to explain why lying about what somebody else’s said is not nice.

Generalizing

He then goes on to describe those that attended last weekend’s far-right rally in London as “perfectly normal, peaceful Brits” protesting against the “demographic nightmare” that has enveloped London, despite the violence and disorder they caused.

Tekin Süleyman

What did DHH actually say?

The easy way out of this uncomfortably large gathering of perfectly normal, peaceful Brits who’ve had enough is to tar them all as “far right”.

David Heinemeier Hansson

It wasn’t DHH that described them as “perfectly normal”, it was Trevor Phillips from Sky News.

But Tekin claimed “they” caused “violence and disorder”. As evidence he provides an article which states that 26 officers were injured, and 24 people were arrested for “violence”. That’s 24 out of 150,000 (or more).

So 0.016% people were arrested for “wholly unacceptable” violence, and that’s proof that “they caused violence”. “They” being the 150,000+ people that gathered in the march. If this is not a hasty generalization fallacy, I don’t know what is.

Moreover, only 4 police officers were seriously hurt. So one would have to wonder how many of those 24 people did any serious violence.

But none of that has anything to do with DHH, because he wasn’t in the march. His description of the march was based on third-party reports, which could be inaccurate. Maybe he didn’t know about the “violence”, maybe he didn’t know how many police officers were hurt.

Let’s go back to the principle of assuming good faith. Why do we have to assume that DHH’s “misrepresentation” of the march has to mean he is a racist? Isn’t that the least charitable interpretation of what he wrote? Couldn’t we assume he just didn’t know about the violence?

In my view the fact that 0.02% of people did engage in violence doesn’t contradict the claim 150,000+ people in the march were predominantly “perfectly normal”.

To assume bad faith and the least charitable interpretation is not nice.

Chain

To all of that he ads a dash of Islamophobia, citing “Pakistani rape gangs” as one of the reasons for the unrest, repeating a weaponised trope borne from a long since discredited report from the Quilliam Foundation, an organisation with ties to both the the US Tea Party, and Tommy Robinson himself.

Tekin Süleyman

This is such an archetypal causal chain fallacy that it’s ridiculous.

Let’s begin at the end.

Tekin claims the Quilliam Foundation has ties with the Tea Party movement and Tommy Robinson — presumably because he believes anyone with such ties is incapable of issuing accurate statements. This is an obvious guilt by association fallacy, but let’s give the benefit of the doubt and assume it’s true: anyone associated with the Tea Party is incapable of accurate reporting.

Also, let’s ignore the fact that one of the founders of Quilliam Foundation is a Muslim: Maajid Nawaz.

We don’t even need to read Dr. Ella Cockbain’s article regarding this “discredited report”, because by association we know that anyone with ties with the Tea Party cannot be accurate. Even though Cockbain’s work has been discredited as well: Statement on misinformation regarding the work of Dr Ella Cockbain.

Tekin claimed the “Pakistani rape gangs” was cited as one of the reasons for the unrest, but actually: DHH never said that.

So finally we reach the beginning: “he ads a dash of Islamophobia”. Which obviously is true because we were just bamboozled by a chain of obvious proofs. Never mind the fact that DHH linked to an article by The Economist: The grooming-gangs scandal is a stain on the British state.

This article linked to a report by the government of the UK: National Audit on Group-based Child Sexual Exploitation and Abuse.

That report states:

Many cases of group-based child sexual exploitation have involved men from Asian or Pakistani ethnic backgrounds.

GOV.UK

But worse than that, it acknowledges that ethnicity data has been intentionally hidden and should be better tracked: “report after report criticises the lack of ethnicity data and calls for better data collection and research into ethnicity and cultural issues that might improve our understanding of offending and increase our chances of tackling it”.

So, even when ethnicity data is “lacking”, a picture is very clear:

What does this have to do with the Tea Party, the Quilliam Foundation, or Dr. Ella Cockbain? Nothing.

We are talking about verifiable facts, presented in an official UK government report.

It seems according to Tekin, believing UK government reports is a “dash of Islamophobia”.

I think unfairly accusing someone of “Islamophobia” for verifiable facts as reported by the UK government is not nice.

They’re still reeling from the Pakistani rape gangs that were left free to terrorize cities like Rotherham and Rochdale for years on end with horror-movie-like scenes of the most despicable, depraved abuse of British girls.

David Heinemeier Hansson

Even if DHH was wrong, he is operating based on a report that came from the UK government, so how can you in good faith accuse someone of “Islamophobia” by simply believing a UK government report?

And that’s before we consider the crimes per-capita (there’s clearly less Pakistani people per 100 K UK residents).

I think it’s Tekin the one that is not being nice.

Conclusion

According to DHH, there is nothing racist or xenophobic in saying “Britain primarily a united kingdom for the Brits”, which again let’s be absolutely clear; by “Brits” he means White people.

Tekin Süleyman

No. 99% of native Brits are write, that doesn’t mean all native Brits are white, and it doesn’t mean that all Brits are white.

This is an intentional misrepresentation of what DHH wrote. This is not nice.

Because in 2025 racism against white people is acceptable, let’s switch the category to Mexican brown people.

Mexico is a country primarily for Mexicans.

Felipe Contreras (a Mexican)

As a white Mexican, I don’t see anything wrong with that statement. As an example I’m going to use a famous Mexican quote:

We Mexicans are born wherever the fuck we want.

Chavela Vargas

Chavela Vargas was a famous Mexican singer, but she was born in Costa Rica.

Why is Vargas considered a true Mexican? Is it her skin colour? No. There’s white, brown and black Mexicans. It doesn’t really matter. Was it her place of origin? No. She wasn’t born in Mexico. So what made Vargas a true Mexican? Her attitude.

Mexicans have an attitude of irreverence, defiance, pride, and freedom. Vargas had all of those.

More than that: her quote actually stated “donde se nos da la rechingada gana” (wherever the fuck we damn well please). But “rechingada” is not a Spanish word. “Chingada” is a Mexican word that has a lot of history, but ultimately comes back to native betrayal.

Actually, Mexicans coined a scornful word to refer to the act of idolizing the foreign at the expense of the native: malinchismo — a kind of anti-nationalism or self-hatred. The term comes from La Malinche, a famous native woman who betrayed her people by aiding the Spanish conquistadors, sometimes derisively called as a “chingada”.

The fact is that anyone with Mexican values can be a Mexican, regardless of skin colour or place of origin.

That excludes most people from Pakistan, and yes: I intimately know people from Pakistan.

Is it such a stretch to say that most people from Pakistan can’t be British either?

That doesn’t mean anyone. If a person from Pakistan can share Mexican values, she can be Mexican, just like if she shares British values, she can be British.

Skin colour is such a distraction in the case of Britain, but in the case of Mexico it’s not. What is racist about saying “not everyone can be a Mexican”?

What is wrong about Mexican people exalting our values irrespective of skin colour or place of origin?

If you assume something racist about the values that constitute a nationality, you are not nice. Period.

So, as a Mexican who has experienced actual racism in Eastern Europe, I don’t see anything racist in what DHH wrote. In fact, I see the opposite: to assume the worst about what he wrote isn’t just “not-nice”, it’s mean.

FelipeC
http://felipec.wordpress.com/?p=5558
Extensions
The murder of Charlie Kirk proves the woke left has lost it
CulturePoliticsSocialTruthwoke
I drill down the woke ideology to explain the inhuman response coming from the regressive left.
Show full content

I would rather not write about politics on this blog, but as I grow older I realize more and more that politics is inescapable, even in technology, which is supposed to be apolitical. The truth is politics affects everything, and I’ve seen its effects in plenty of open source projects, from the Git project attempting to rename the “master” branch, to the Linux project removing Russian maintainers. The longer you live on this world, the more you realize that if you care about anything, you should care about politics.

The last time I wrote about wokeness was in 2015: Social justice warriors and feminism, poster boys of the regressive liberals. Back then there wasn’t even an established name for this ideology and few people recognized its dangers, but I did, and I warned about the potential danger to society. Other than that I’ve taken a jab against the woke ideology here and there, but it’s time to take it head on.

The assassination of Charlie Kirk did shock me, but it did not surprise me in the least. I’ve seen plenty of examples of these self-described “tolerant” people snapping after being unable to control their emotions and resort to violence, so it was really a matter of time before one of them decided to take an extreme action. But what really made me sick is the reaction of the woke left: forget about condemnations, these people celebrated the murder, made jokes, and even rejoiced.

These reactions are so wrong on so many levels that they deserve a proper response. They are not just in poor taste, they are immoral, and they are a clear signal that society is in a state of degeneracy, and it’s probably only going to get worse unless we do something about it.

And for context, I’m not a fan of Charlie Kirk. I disagree with many of his positions, perhaps most. But the way to deal with disagreements is with discourse, not violence or slander.

Woke

One of the many retorts I hear when debating the woke ideology is that no such thing exists, or that I’m uneducated about its history. This couldn’t be further from the truth.

I am well aware of the history of the word “woke”. In the 1970s the word was used in black communities in USA as a reminder to stay conscious of racial injustices, and in that context it was probably a good thing. But there’s something many people forget: words change.

The word “gay” doesn’t mean the same thing in 2025 that it did in 1950, does it?

By the mid-2010s the meaning broadened to include all perceived social issues. At that point in time it was not used as a pejorative. Social justice warriors adopted the term, and that’s what lead to conservatives eventually criticizing it by 2019. But not just conservatives, centrists and progressives also criticized “performative wokeness”.

Being aware of the history of the word doesn’t change one iota how it’s used today. We can refer to this ideology as the “regressive left” (a term used in 2015), and it doesn’t change anything. In my 2015 blog post I called them “regressive liberals”, but I was talking about the exact same ideology.

You can actually see a debate between Tim Pool and Twitter executives in 2019 (Joe Rogan Experience #1258 – Jack Dorsey, Vijaya Gadde & Tim Pool) where they are clearly talking about the woke ideology, but they don’t use that word, because it wasn’t mainstream yet. In fact, Vijaya Gadde (who later was fired by Elon Musk when he acquired Twitter) pretended she had no idea what Tim Pool was talking about when he referred to the “regressive left”.

I don’t know what those terms mean to be honest with you…

Vijaya Gadde

That’s why words matter. It’s hard to talk about empathy, if you don’t have a word for that. In a similar way all the criticism of the “regressive left” from 2015 to 2020 fell on deaf ears because it’s not a term that sticks. However, once the critics of this ideology called it “woke”, everyone understood what we were talking about.

By the time the Black Lives Matter riots erupted in 2020, there was no going back: it was clear to everyone that the woke ideology existed, and it was a problem.

However, to prove that the complaints against the word “woke” are a red herring, I’m not going to use that term in the rest fo this article, I’m going to call it “regressivism“.

As an example of what I mean by “regressivism” I’m going to use eugenics. Contrary to popular belief, “progressive” people are sometimes wrong and what they consider “progressive” is actually the opposite. That’s what happened with eugenics, which was considered progressive around the 1910s.

Nobody is against progress. Conservatives are not against progress, they are just more careful in defining what progress is. And that’s the fundamental issue: how do you know that a specific “progressive” idea is actually going to move society forward? You can’t know.

Reality

Many critics of regressivism argue about what is the fundamental problem at the core of the ideology, but to me it’s actually really simple: postmodernism.

You don’t need a degree in philosophy to understand the problem with postmodernism, all you need to do is compare it with the Enlightenment in one critical aspect: the appreciation of reality. In the Enlightenment reason and rationality were paramount in order to have a proper relationship with truth. Obviously what was real mattered, otherwise anyone could argue anything, as it happened before, and there would be no way to disprove it. On the other hand postmodernism dismisses reality as an outdated concept, which is why you often hear postmodernists using the phrase “my truth”.

Under Enlightenment the phrase “my truth” makes no sense, because there’s only one objective reality, and what matters is what rational people can discern from it. On the other hand “my truth” make sense under postmodernism, because there’s no such thing as objective reality.

In reality most women can’t compete physically against most men, in postmodernism there isn’t such a thing as a woman.

Once you detach yourself from reality, anything can be argued without evidence, and your beliefs are indistinguishable from those of a mentally ill person (a term that cannot be defined either), and that’s precisely what people following the regressivism ideology do.

Because a lot of people deny that this is in fact what regressives do, here’s a clip where a prominent cultural studies profesor argues that there’s no such thing as a “man”: Joe Rogan and Thaddeus Russell Debate Gender Being a Social Construct.

I think it’s the category of “men” becomes meaningless.

Thaddeus Russell

That’s how regressives are able to believe that 2+2=4 is “colonialist math”, and other forms of math should be considered equally valid. The reality that 2+2 does actually equal 4 does not matter, because there’s no such thing as “reality” in the first place (according to them).

I hope I don’t have to explain to any rational reader why detaching yourself from reality increases the chances of believing in ideas that could move society backwards, not forwards.

Principles

Right after abandoning reality, the first casualty of the regressive ideology are principles.

I’m going to contrast the Establishment idea of deontological principles with the postmodernist tendency to cozy with consequentialism.

This may sound like unnecessarily complicated jargon, but it’s actually really simple: regressives believe the end justify the means. That’s it.

Consequentialism can be summarized as “the end justifies the means”, and that’s something pretty much all regressives believe. For example, they might agree that punching somebody is not OK, but if that somebody is a Nazi, and as a result of the punching a lot of people from minority groups will be happier, then it’s not only acceptable, but a moral duty.

Deontological principles are the opposite, if something is bad, it’s always bad. Under the Establishment view, punching somebody is assault, which is not only illegal, but also immoral. So if assaulting a person is always bad, then assaulting a Nazi is also bad.

The beauty of deontological principles is that they serve as a north star in order to cut through moral ambiguities.

If we don’t believe in freedom of expression for people we despise, we don’t believe in it at all.

Noam Chomsky

In my view, if you have a “principle” that you sometimes don’t uphold, then it’s simply not a principle. If it was easy to uphold principles, then everyone could be said to have integrity, but it isn’t.

As an example of a person with integrity there’s Atticus Finch, the lawyer who defended a black man in To Kill a Mockingbird, even though everyone assumed he was guilty. He didn’t do it because it was easy, quite the opposite: it required courage. He did it because it was the right thing to do.

It would be easy to let a person you dislike rot in prison, but that’s not what a principled person does.

If you believe that lives matter, except those of the people you dislike, then you have no principles. It’s that simple.

Slander

What does any of this has to do with Charlie Kirk?

Immediately after being shot, people started to say Kirk was a bigot, fascist, neo-Nazi, transphobe. None of these things is remotely true.

But to regressive people the reality of what Kirk said or did does not matter, because there’s no such thing as reality.

If the objective is to shut down people like Kirk, and you believe you are always on the right side of history, and the means justify the end, then you are going to justify anything that achieves that objective, because in the end that’s going to be beneficial to society, therefore it’s progress.

The problem is that nobody is perfect, so even if you are 100% sure Kirk was a fascist, you could be wrong.

There’s an obvious rational reason why you shouldn’t punish an alleged rapist as if he was a rapist: you could be wrong. Everything done to Tom Robinson was justified from the point of view of the perpetrators, because he was a damned rapist… except he wasn’t.

I guess the only time most people think about injustice is when it happens to them.

Charles Bukowski

If we are upstanding people who follow deontological principles, then we understand that everyone deserves a fair trial, even a “rapist”, who is actually an alleged rapist, which are not the same thing. There’s a reason due process is important.

But none of that matters to regressives. There’s no difference between an alleged fascist and a fascist because they can never be wrong, and they are always in the right side of history, by definition.

That’s why labeling Kirk as a “fascist” is important, because that way everything done to him is justified.

Jan Wildeboer explaining that fascists killing other fascists is common.

Just like lynching Tom Robinson was justified, because he was a damned “rapist”.

And for regressives there’s no need to stop and think “what if I’m wrong?”, because you can only be wrong in reality, and they don’t even believe in that. It doesn’t really matter how much evidence you can find that Kirk wasn’t a fascist, because that’s only going to be in “your truth”, not theirs.

To be clear: Charlie Kirk was not a fascist.

Here’s a video of him explaining why he is not a fascist: Charlie Kirk SLAMS College Student ACCUSING Him of FASCISM. Although I don’t think he does a great job at explaining, Kirk did mention Antonio Gramsci — a vocal critic of fascism in the Mussolini era — and his view contrasts how many university students today view fascism. In Gramsci’s view, the ultra-nationalism often attributed to fascism was not the core of the movement, but merely an instrument used by elites to achieve their true goal: defending the status quo. According to Gramsci, fascists used nationalism to manufacture consent of authoritarian measures, which then were used to defend capitalism from the masses.

Kirk didn’t believe in authoritarianism, quite the opposite.

Kirk tried to change his opponents’ minds through conversation, not force. The irony is that the people trying to cancel and shut up Kirk were employing fascistic tactics.

He wasn’t alt-right, or neo-Nazi, or bigoted either. But that can only be demonstrated in reality.

I can’t go into details of all the lies told about Charlie Kirk, but here are a couple of summaries:

Like a duck

If it quacks like a duck, then it must be a duck, right?

The is the kind of rigorous thinking that passes as intellectual among regressives. For clarity: to assume that something is a duck because it appears to be a duck is a fallacy I’ve written about: Appearance fallacy: the most common mistake.

No, just because something glitters doesn’t mean it’s gold… not necessarily.

I call this fallacy the appearance fallacy, but it’s known as converse error. It’s a very simple mistake, but unfortunately people commit it all the time.

If you are fascist, you believe in strong borders, therefore if you believe in strong borders, you are a fascist. This is fallacious thinking, but also incredibly stupid. It’s as stupid as: if you are a chicken, you have two legs, therefore if you have two legs, you are a chicken.

Just because two entities share a characteristic doesn’t mean they are the same. If I have two legs like a chicken, that doesn’t mean I’m a chicken. If Charlie Kirk believes in strong borders like a fascist, that doesn’t mean he is a fascist.

This is so obvious it shouldn’t need to be explained, but unfortunately regressives have abandoned rationality, so they can just brand logic as “Western imperialism” and dismiss the idea of fallacies altogether.

No. The fact that Kirk believed some things that neo-Nazis also believe doesn’t make him a neo-Nazi.

The appearance fallacy is so basic, that I’m certain there isn’t anything more basic in logic. This is basically 1+1=2 of logic.

If regressives are not capable of understanding why punishing someone for who they appear to be, there’s absolutely nothing rational they can understand.

In other words: they are beyond hope.

Freedom of speech

At the center of Kirk’s assassination is the regressive idea that some people should not be allowed to speak publicly.

Just like the term fascism, regressives don’t understand what the term “freedom of speech” means either. But unfortunately neither does anybody else.

Today the notion of what freedom of speech was supposed to be is lost, which is why there’s endless debates between the right and the left, mostly talking past each other, and no one really nailing the essence of freedom of speech.

Trying to recover the history of freedom of speech and explaining why its first proponents created it in the first place would take an entire article on its own (if not a book). Rather than trying to do that, I’m going to issue a hacky definition that embodies its true spirit.

Freedom of speech is the belief that censoring ideas is bad.

Felipe Contreras

Once you aim freedom of speech specifically at the censorship of ideas, everything becomes clear, and tricky cases such as shouting fire on a theater or lewd images of children become straightforward.

I’m a freedom of speech maximalist, yet, I’m not opposed to censorship. To many people those to notions are contradictory, but that’s because they don’t understand freedom of speech. Moderation and censorship do not contradict freedom of speech, unless it’s an idea that is being censored.

That’s why the regressive practice of cancelling people and disrupting talks is not freedom of speech: because no idea is being presented. Punching somebody on the face in order to stop them from presenting their ideas is not freedom of expression because a physical action is not an idea.

Needles to say: a bullet is not an idea either.

Suppressing ideas using force is the antithesis of freedom of speech, which I really wish we renamed to “open ideas”. In yet another ironic turn, using force to suppress ideas is precisely the kind of thing fascists would do.

Regressives use catchy slogans like “words are violence” in order to justify authoritarian measures like the censorship of ideas. Ironically they often use actual violence in order suppress ideas they view as pseudo-violence.

Once again they never stop to consider “what if I’m wrong?”. That’s by definition not possible, because they self-describe as progressives, and we all know progressives are always on the right side of history.

However, people who censor ideas often turn out to be wrong, as in the iconic case of Galileo Galilei. Just because a group of people deem an idea “dangerous”, that doesn’t mean it should be censored, nor does it mean it must be wrong.

Censoring ideas that are potentially true is too obviously bad, but regressives are incapable of considering the possibility that they might be wrong. However, it turns out freedom of speech philosophers argued that even wrong ideas should be defended. John Stuart Mill famously explained three reasons why it’s detrimental to silence ideas, and the third reason is particularly interesting.

Mill argued that even if an idea is wrong, it still should be allowed. It turns out ideas are antifragile: just like our immune system benefits from pathogens constantly testing it, so do the right ideas benefit from being confronted with wrong ideas. According to Mill, an idea that is not challenged is like a zombie: dead dogma.

Ironically this is what happened to freedom of speech. Because as a society we didn’t properly challenge the notion for so long, today we have forgotten what it’s all about.

XKCD is completely wrong

People are getting fired because of insensitive things they said about Charlie Kirk’s murder. This does not contradict the spirit of freedom of speech, because they are not being fired for expressing an idea. But the right is wrong in stating that it’s because the First Amendment allows it. No, just because it is legal to do something in USA doesn’t mean it’s moral. It was legal to fire James Damore because the First Amendment doesn’t protect such speech, but that doesn’t mean it was moral. Damore was fired because of his ideas, that means it contradicted the spirit of freedom of speech.

When it comes to freedom of speech, both the right and left are wrong.

Freedom of speech was never about the rights of individual people: it’s society the one that benefits from being exposed to all kinds of ideas, even wrong ones. That means people should feel free from reprisals due to expressing those ideas, otherwise it’s exactly the same effect as censorship.

Nazis have rights

I already established that Charlie Kirk wasn’t a neo-Nazi, or bigoted, or any of the adjectives the regressives want to label him as, but it doesn’t matter, because even if he was, it’s still not OK to murder a Nazi. Murdering a Nazi is still murder.

We know that regressives don’t have principles, but for us that do, when a charter is named The Universal Declaration of Human Rights, the “universal” adjective there means for everyone. That means even Nazis.

If everyone has a right to a fair trial, then so do Nazis, or more correctly: alleged Nazis.

It’s hard for many people to uphold the rights of detestable people in our society, like pedophiles, murderers, or racists, but they are human, and they have rights.

Being a Nazi is not a crime. We are not in 1984 yet, where certain thoughts could be considered criminal. Today a non-violent Nazi is not a criminal, so they don’t deserve to be put in jail, assaulted, or killed.

That even includes Nazis who lived under Hitler’s German Reich, even Nazis who gassed Jewish people had rights.

These monsters had a right to a fair trial, which is what the Nuremberg trials were about. And remember: they were alleged monsters.

Franz von Papen was a Nazi, but he didn’t commit any war crime, so he was acquitted. As hard as it is for many people to conceive — especially regressives: not all Nazis were criminals.

Because I believe in deontological principles, I would always defend the right of a Nazi (alleged or otherwise) to a fair trial, not only that, I would defend their ability to express any of their ideas.

You may think I’m an exception for believing that, but in 1977 the National Socialist Party of America decided to hold a white-power demonstration in Skokie, resulting in a series of decisions which eventually lead to a Supreme Court decision to allow the march, along with Nazi uniforms and swastikas.

This may sound like the wrong decision to many people, but that’s what upholding principles looks like.

Freedom of speech means neo-Nazis should be allowed to express their ideas, and expressing an idea is not a crime.

So even if what regressives believe was true — that Charlie Kirk was a neo-Nazi, it still would be immoral to murder him.

Now, I don’t have any particular urge to defend neo-Nazis, but if regressives want to use violence to silence people whose opinions they don’t like, and they are going to use “Nazi” as an excuse to achieve their ends, I have to point out that even punching a passive neo-Nazi is immoral.

But he was not a neo-Nazi, so it’s doubly wrong.

Tolerance

The group of people who self-describe as “tolerant” are anything but. In fact, they are the most intolerant group I know of.

Tolerate doesn’t mean respect or agree, it just mean allow.

I don’t respect or agree with Nazism, yet, I’m able to tolerate it. All that means is that I would be able to have a civil debate with a Nazi without punching him on the face or spitting on him. Nothing more.

People don’t read what this actually says

Regressives often use the paradox of tolerance as a response to say that we can’t be tolerant of intolerant ideas, but they don’t actually read what the paradox of tolerance actually says.

If we extend unlimited tolerance even to those who are intolerant, if we are not prepared to defend a tolerant society against the onslaught of the intolerant, then the tolerant will be destroyed, and tolerance with them.

Karl Popper

The key word that regressives never read is unlimited. Popper didn’t say the intolerant shouldn’t be tolerated at all, in fact, the next sentence explains in which cases they should be tolerated: “In this formulation, I do not imply, for instance, that we should always suppress the utterance of intolerant philosophies; as long as we can counter them by rational argument and keep them in check by public opinion, suppression would certainly be most unwise.”

Even if you believe that Charlie Kirk held intolerant ideas, according to Popper you should still tolerate people like him because he is prepared to engage in rational argument: a battle of ideas.

Popper is warning us against the people who are not prepared to engage in rational argument: “they may forbid their followers to listen to rational argument”. It is regressives the ones that don’t want to engage in rational argument and would rather shun people who debate people like Kirk. They are doing the exact thing Popper is warning against.

It’s the regressive ideology the one that is intolerant, and Popper is expressly warning against people like them, not Kirk.

Inhuman

So far I’ve presented a rational case. Any rational person would understand why this anti-reality ideology is so dangerous, and why people have written books equating it to a mind virus: Parasitic Mind: How Infectious Ideas Are Killing Common Sense.

However, we don’t need to rely on rationality to see how sick these people are, because even if Charlie Kirk was an intolerant fascist neo-Nazi who deserved to die, he was a father.

Imagine being a 3-year-old girl witnessing the death of your father in the most gruesome way possible. I haven’t watched the graphic video, but I’ve heard many resilient adults describe the effect it had on them and warning others to not watch it. Now imagine the effect this event is going to have on this 3-year-old.

It’s pretty obvious that regressive people are incapable of empathy, but even a sociopathic serial murderer like Dexter could pretend to have some. Not these people. They didn’t even bother to pretend to be human.

Instead what they did is gleefully celebrate publicly and online the horrid murder of a person they probably have never listened to. Their mind is truly beyond twisted.

This is what detaching yourself from reality and never considering the possibility that you might be wrong does to your mind.

I have no words to describe how despicable I think these people are.

Regressives are truly gone.

We are not the same

As a pretense for a rational response many people on the left have agreed that the murder was not acceptable, but at the same time claim that the right also does the same.

This is just a shameless lie. There is no comparison between the amount of assassination attempts by the left compared to the right, none. To pretend that this is a bipartisan issue is disingenuous. But it’s not just assassinations, the calls to violence are almost exclusively on the left, almost all the censorship comes from the left. Cancellations, boycotts, disrupting talks and conversation, all come from the left.

And of course nobody on the right has celebrated anybody’s cold-blooded murder.

I’m not actually a right-wing person, not even a centrist, I’m politically on the left, so it’s not my bias that makes me see this discrepancy, it’s my own eyes. Nobody on the right has attempted to censor me, only leftists.

There’s nothing on the right that is remotely similar to the extremism of the regressive left, not even the “alt-right” is remotely close. And BTW, Charlie Kirk was not on the alt-right either, he was actually pretty moderate as conservatives go.

When Melissa Hortman — Democrat legislator — was murdered, not a single voice from the right celebrated. Unlike the regressive left, the right has principles, like respecting the rule of law and the sanctity of life.

That’s why nobody on the right is suggesting that Tyler Robinson be murdered as retaliation. On the other hand: they want a fair trial where Robinson has the opportunity to defend himself. That’s how principled people operate.

Graph shows 54% of Democrats think violence is sometimes acceptable, versus 19% of Republicans.

A recent survey found that 54% of Democrats believe that violence is sometimes acceptable, versus 19% of Republicans. That’s almost 3 times as much. And that’s not the only poll that found similar results: the NCRI Assassination Culture Brief found that 56% of left-wing people in USA would find the murder of Donald Trump at least partially justifiable. Fifty six percent.

To even entertain the notion that there’s a similarity between the right and the insanity of the left is preposterous.

Conclusion

It’s time to call a spade a spade: the woke left is beyond insane.

Fortunately it seems newer generations and the silent majority are done with the woke ideology and we’ve reached peak wokeness. Unfortunately the people who are already infected with this mind virus seem to be getting more extreme each year, and they are a lot of people.

The position that Kirk held that I disagreed with the most is his staunch support for Israel. However, weeks before he was murdered he was starting to have doubts, according to many sources.

And that’s the fundamental difference between Kirk and regressives: he was willing to listen.

I believe we should stop pretending that there’s any chance of having a rational argument with these people. It’s time for the rational left to make the resolute decision to separate themselves from the woke and make it clear that we are the part of the left that believes in objective reality and rational argument.

If shamelessly celebrating the cold-blooded murder in front of his wife and children of one of the most moderate conservatives who was always engaging, polite and sympathetic — even to people who visibly hated him — doesn’t wake up the rational left as to the insanity of the woke, I don’t know what will.

kirk
FelipeC
Jan Wildeboer explaining that fascists killing other fascists is common.
Graph shows 54% of Democrats think violence is sometimes acceptable, versus 19% of Republicans.
http://felipec.wordpress.com/?p=5520
Extensions
pactropy 0.1 released
Linuxarchlinuxblogdockerpacmanprogrammingtechnology
Explanation of my newly released tool: pactropy. Keeps a clean list of essential packages.
Show full content

I often uninstall packages that I’m not using anymore. Arch Linux has the “installation reason” feature which helps tremendously with that (AFAIK no other package manager has that feature), but that’s often not enough.

I used to have a list of packages, and then use diff to compare with the output of pacman -Qeq, that helped a lot, but I still found it inconvenient.

So I developed a script in ruby to help me keep track of “non-essential” packages, and I’ve been using that for years.

However, it’s so useful that I decided to clean it up and make it public. I’ve decided to call it pactropy: restorer of pacman order.

Simple

All you need to do is provide a list of your “essential” packages.

packages:
  - base
  - linux
  - zsh
  - neovim
  - less
  - sudo

pactropy will show you the delta between that list and your current list (pacman -Qe).

That’s basically it.

Features

In it’s simplest form it’s not much different than just running diff on a list of packages (like declaro does). However, there’s a lot more stuff.

For starters, pactropy sorts the packages by size so you know which packages to remove first (for example cuda is taking 7 GB on my system right now).

Also, in addition to packages you can specify groups (so you don’t have to list every package in that group).

It also considers all the dependencies of an “essential” package to be essential as well. For example if I explicitly installed patch and dkms, but I only marked dkms as essential, pactropy is not going to list patch, because it’s a dependency of dkms and if I were to install all my essential packages in a new system, I only need to install dkms.

I’ve also found useful to split the list of packages in multiple configuration files, for example essential.yml, xfce.yml, gaming.yml, web-dev.yml. I also keep this list in version control, so I can see how my list of essential packages evolves over time.

Finally, it’s 80 lines code. Although that might not be a feature for other people, the fact that it’s written in ruby and it’s extremely simple is a feature for me. That also means all you need to do is copy the script to your PATH, and that’s it.

Enjoy pactropy 😉

Bonus video
FelipeC
http://felipec.wordpress.com/?p=5490
Extensions
Ruby gems still broken after 15 years
DevelopmentLinuxOpenSourceruby
After 15 years since the first reports ruby gems remain broken, even tough I wrote the patch that fixes everything years ago.
Show full content

It’s been 15 years since the first report about installation issues in 2010 (sudo is totally unacceptable on my system), and to this date ruby gems installation remains broken.

The issue is that by default gems are installed into system directories (i.e. /usr/lib), when in 99% of the cases people want to install them into their home directory.

tl;dr: do this to fix the broken installation defaults:

export GEM_HOME=$(ruby -e 'puts Gem.user_dir')

Otherwise you will get an error running bundler install, like:

Bundler::PermissionError: There was an error while trying to write to `/usr/lib/ruby/gems`

There have been many attempted solutions, but none work correctly.

The latest proposal is issue 5682: Have Bundler respect RubyGems’ –user-install. However, this proposal makes absolutely no sense if you have a rudimentary understanding of the codebase. It does appear that ruby gems developers don’t have basic understanding of their own codebase. How is this even possible?

The important background to understand is that the rubygems project is in fact an amalgamation of two projects: gem and bundler. So developers of gem don’t understand how bundler works, and developers of bundler do not consider how gem does things. There’s no cohension.

That’s why many existing solutions work for gem, but not bundler.

Proper fix

The saddest part of the whole situation is that I already fixed the problem years ago, and the patch is extremely simple:

diff --git a/lib/rubygems/defaults.rb b/lib/rubygems/defaults.rb
@@ -9,6 +9,13 @@ module Gem
   @pre_uninstall_hooks  ||= []
   @pre_install_hooks    ||= []
 
+  ##
+  # Determines the default install directory
+
+  def self.default_install
+    default_dir
+  end
+
   ##
   # An Array of the default sources that come with RubyGems
 
diff --git a/lib/rubygems/path_support.rb b/lib/rubygems/path_support.rb
@@ -24,7 +24,7 @@ class Gem::PathSupport
   # hashtable, or defaults to ENV, the system environment.
   #
   def initialize(env)
-    @home = normalize_home_dir(env["GEM_HOME"] || Gem.default_dir)
+    @home = normalize_home_dir(env["GEM_HOME"] || Gem.default_install)
     @path = split_gem_path env["GEM_PATH"], @home
 
     @spec_cache_dir = env["GEM_SPEC_CACHE"] || Gem.default_spec_cache_dir

That doesn’t change the current behavior, so it can be applied without any issues, and allows distributions to override the new method easily:

def default_install
  user_dir
end

That’s literally it. 15 years of issues fixed in pretty much one line of code.

This may sound trivial, but I arrived at that solution after hundreds of hours of investigation and exploration of the spaghetti code.

The problem is not just that the codebases of bundler and gem are completely different. But that there are dozens of variables and methods that do pretty much the same thing, but they can change depending on certain configurations, distribution modifications, user configurations, and environment variables. And those configurations are different in bundler and gem.

Fortunately since I already did the work and arrived to the best place to insert an override, the rubygems project can simply apply that harmless patch and everything will be fixed.

If only it were that simple.

Ego

Unfortunately for ruby users, the leadership of the rubygems project is comprised of humans, and humans have egos.

Because the developers do not like to accept that they are falible and outsiders are capable of fixing their code better than they are, they are not willing to even consider my patch.

The project leader Hiroshi Shibata banned me from the project because I made the following statement:

No satisfactory resolution from the development team.

Felipe Contreras

Hiroshi banned me permanently from the project for merely suggesting the job they have done regarding this issue so far had not been satisfactory. He said the comment was “a little offensive” and permanently banned me.

That was in 2020, and so far they still have not resolved the issue.

Infinite loop

To show why this is never resolved, here’s a non-exhaustive list of issues that have not been resolved:

Let’s look at how the development team “resolves” one of these issues:

Use bundle install --path vendor/bundle (or whatever path you want).

André Arko

The issue was that bundler did not install gems to the correct default location by default, and André closed the issue by just stating the status quo: you need to specify the path. Great way to “resolve” issues.

Here’s another one:

After 8 years, IT IS FINALLY DONE!

As of 6dddd33, if GEM_HOME isn’t set and the default install directory is not writable, RubyGems sets Gem.paths.home to Gem.user_dir.

Ellen Marie Dash

Thanks Ellen, but the issue was “make ruby gem install to user-install by default“, and that commit does not change the default. If I install a gem as root, I would expect the gems to be installed to /root/.local/share, not /usr/lib. With this patch the gems would be installed to /usr/lib, because root has write permissions, so it fixes nothing.

And of course Ellen is a gem developer, and didn’t even notice or care that her patch doesn’t do anything in bundler at all.

And we go back to the beginning, where somebody else reports an issue, and the developers implement yet another half-ass measure that fixes nothing, close the issue, only to be reported again.

Works for me

Another problem with this issue is that the developers of both bundler and gem do not care about anyone’s setups other than their own.

Personally I’m a big fan of .bundle (and I actually set bundle config path .bundle globally myself). It keeps the gems in the application directory, but puts them somewhere that everyone is already ignoring in git.

André Arko

Here we see the problem, if you don’t have André’s configuration, you are a chump and you deserve your installations to fail. Who cares that installations fail by default? As long as bundler works fine for André, that’s all that matters.

The users who are using the default package provided many of Linux distributions are minority. also see https://rails-hosting.com/2020/#ruby-rails-version-updates

I’m Ruby programmer over the 20+ years. I and my company also didn’t use it. We use the custom runtime build by like ruby-build.

Hiroshi Shibata

Aha, we should be using ruby-build — a tool developed by Hiroshi and his company, instead of whatever is provided by the system. If you use the ruby package provided by Arch Linux, you are an idiot who deserves his gem installations to fail.

Imagine being a developer that only cares about their tool working for them.

Packagers

Fortunately for users, there’s a second line of defense: package maintainers can choose to patch rubygems, and everything will be fixed.

Unfortunately they are not doing a great job either:

I mostly avoid Bundler. I don’t think Bundler should be used for production. And I am not aware about and issues reported recently in this domain 🤷 There might be some old ticket opened for RHEL though.

Vít Ondruch

Fedora package maintainer doesn’t want to look at the patch because “people shouldn’t use bundler”. Basically: “works for me”.

Update: Vít actually fixed the problem for Fedora 2 years ago with a hack. While this works, it does many unnecessary changes and breaks options such as --no-user-install.

If bundler still doesn’t adhere, thats on the resistance of upstream and we should neither patch ruby core itself nor run ruby commands in the profile to somehow work around this issue. If users want to do this, they can set it up themselves or ask bundler to do something more reasonable. I understand that they explicitly do not want this, but then its not on downstream to provide this feature.

Levente Polyak

Arch Linux package maintainer doesn’t want to patch rubygems. Why? Because users can fix the issue themselves, and it’s not on him that it doesn’t work correctly. That’s why Arch Linux’s wiki advises all users to manually set GEM_HOME in their profile: Ruby Configuration.

Except they were already patching it: rubygems_stop_so_duplication.patch, and I provided the correct solution so they didn’t have to: package should provide operating_system.rb, not patch the code.

So they were incorrectly patching the code already, with no gain to the users, and now they do not want to patch the code, even thought it would greatly benefit their users. Why? Because.

Despair

It turns out applying a minimal one-line patch is not as simple as it might initially seem.

For the foreseeable future thousands of ruby users will have to workaround the issue themselves, all because of the stubbornness of a few unemphatic developers who cannot accept they were wrong, nor do they care one iota about anybody else’s setups.

Bonus video

In this video I go step by step through the insane spaghetti code and I show why their half-ass “solutions” don’t work for bundler. I also show how my patch fixes everything without changing the default behavior.

broken-gem
FelipeC
http://felipec.wordpress.com/?p=5457
Extensions
The etymology of pull requests
Developmentgit
I explain what a pull request actually is.
Show full content

A lot people use the term “pull request” nowadays, but I find that people don’t actually know what they are. They may know how they work in a specific domain (e.g. GitHub), but not what they are. This isn’t unlike the floppy disk icon (💾): younger generations understand that it means “save” in the context of application toolbars, but they don’t know what a floppy disk actually is.

Origin story

Pretty soon in the development of git, Linus Torvalds needed a tool to integrate commits from remote repositories, and he labeled that tool git-pull-script (commit). This tool basically used rsync to fetch the objects from a remote repository, and then create a merge commit, integrating both heads.

Not much later another script was created in order to generate the message to send which contained a summary of the changes: git-request-pull-script (commit).

Nowadays the tools are git pull and git request-pull. Few people use git pull as it was originally intended, and that’s why many people create wrong merges (Why is git pull broken?). And git request-pull is nowadays mostly used by linux kernel lieutenants.

Example of a pull request

So let’s take a look at a recent pull request I got on GitHub: sharness pull #134. The request is to pull from the dun/sharness repository, specifically the fix-zsh-source-method-on-netbsd branch.

GitHub has a button to automatically merge (or squash and merge, or rebase), and I suppose that’s what most people do. But if that’s what was being requested, why isn’t it called a “merge request”?

Before GitHub, the command to merge a pull request was this:

git pull git@github.com:dun/sharness.git fix-zsh-source-method-on-netbsd

If you notice, the command is git pull, so the pull request is a request to issue a pull command, that’s it.

Conclusion

A pull request is nothing more than a request to issue a git pull command which originally did a merge, but could also do a rebase (git pull --rebase).

pull-request
FelipeC
http://felipec.wordpress.com/?p=4767
Extensions
How I compile and run software (e.g. XLibre)
DevelopmentLinuxOpenSourcePlanettips
A few tips to show how I manually compile stuff.
Show full content

I’ve been compiling stuff since I started to use linux decades ago (LFS was my first serious “distro”), and to me it’s really not that complicated. But it seems a lot of people don’t know how to do it, while others seem to think it’s only feasible in distributions like Gentoo.

Yes, compiling is easier in certain distributions, but you can you do it in any of them.

I’m going to explain how I do it in Arch Linux, but the instructions should be similar in other distros. By the way, I’ve created packages in all the package management systems and I think Arch Linux is the simplest, and the closest to how manual compilation looks like, which is going to be a plus for the rest of this article.

Basics

In order to compile we are obviously going to need a compiler, but we also need basic utilities like binutils and libtool. Fortunately for us Arch Linux has all these utilities in the base-devel group. In addition to that I suggest installing git and meson (a more modern alternative to autotools).

sudo pacman -S base-devel git meson

That’s all you should need to compile simple projects written in C.

Simple program

For my first example I’m going to use a simple program that is actually quite useful: xfce4-panel. If you go to the Xfce wiki there’s a lot of information about how to compile it, but because the instructions and the dependencies vary distribution to distribution, I prefer to check how my distribution is compiling it.

If you use the package search, this is what you find: xfce4-panel. Although you can find the dependencies there, I prefer to go to the source files of the package and look directly into the PKGBUILD (the file that contains all the build instructions).

There we see something like this:

depends=('exo' 'garcon' 'gtk-layer-shell' 'libxfce4ui' 'xfconf' 'libwnck3' 'libdbusmenu-gtk3' 'libxfce4windowing' 'hicolor-icon-theme' 'desktop-file-utils')
makedepends=('git' 'glib2-devel' 'gobject-introspection' 'vala' 'xfce4-dev-tools')
source=("git+https://gitlab.xfce.org/xfce/xfce4-panel.git#tag=$pkgname-$pkgver")

We simply install all the dependencies:

sudo pacman -S exo garcon gtk-layer-shell libxfce4ui xfconf libwnck3 libdbusmenu-gtk3 libxfce4windowing hicolor-icon-theme desktop-file-utils git glib2-devel gobject-introspection vala xfce4-dev-tools

If you are already running xfce4-panel, then you only need to install the development dependencies (makedepends), but I’m just installing everything for completeness.

Next we need the source code. Although we could use a tarball of the release, we can also use git. We could clone the entire repository, but if you are only interested in a specific release, you can use the --branch option to specify it, and since the PKGBUILD file already tells us the format of the tags ($pkgname-$pkgver), it’s easy to figure out the command:

git clone --depth=1 --branch=xfce4-panel-4.20.4 https://gitlab.xfce.org/xfce/xfce4-panel.git

Then let’s look at the compilation instructions:

NOCONFIGURE=1 ./autogen.sh
./configure \
  --prefix=/usr \
  --sysconfdir=/etc \
  --localstatedir=/var \
  --enable-x11 \
  --enable-wayland \
  --enable-gio-unix \
  --enable-gtk-doc \
  --disable-debug \
  --enable-maintainer-mode
make

We could simply run those instructions, but first, it’s usually not needed to specify all the --enable-foo flags since the configure script determines those automatically. And second, we don’t want to install into /usr, but a different prefix, in order to not mess with our system. We also don’t want to override sysconfdir or localstatedir, and so on.

So we could just do ./configure --prefix=/opt/xfce, but since this package supports meson too, here are the instructions:

meson setup --prefix=/opt/xfce build
ninja -C build

Before installing, I create a directory with the right permissions (for my user):

sudo install -o felipec -d /opt/xfce

Then to install:

ninja -C build install

That’s it, now I can run /opt/xfce/bin/xfce4-panel instead of my system’s packaged binary.

However, in order to use that binary by default, it’s better to just prefix that directory to the PATH environment variable, which can be done in your profile script (~/.bash_profile or ~/.zprofile):

export PATH="/opt/xfce/bin:$PATH"

Now when my system tries to run xfce4-panel, it will run /opt/xfce/bin/xfce4-panel instead of /usr/bin/xfce4-panel.

That’s it. Now we are using our compiled program.

Library

A library is different in the way it’s used, but not in the way it’s compiled. I’m going to use libvte, just because I’ve had to recompile it many times recently.

Once again we check the PKGBUILD file and install the relevant dependencies:

sudo pacman -S cairo fribidi gcc-libs gdk-pixbuf2 glib2 glibc gnutls graphene icu lz4 pango pcre2 systemd systemd-libs at-spi2-core gi-docgen fast_float git glib2-devel gobject-introspection gperf gtk3 gtk4 meson vala

We clone the repository, build and install in a custom prefix:

git clone --depth=1 --branch=0.80.3 https://gitlab.gnome.org/GNOME/vte.git
cd vte
meson setup --prefix=/opt/vte build
ninja -C build install

However, this time the primary target is a library: libvte-2.91.so.0. How do we use that?

Let’s say we want to run xfce4-terminal, which was linked against libvte-2.91.so.0. Normally the library would be loaded from /usr/lib/libvte-2.91.so.0. But we can override that using the LD_LIBRARY_PATH environment variable, and we can check that the correct library is going to be loaded with the ldd tool:

❯ export LD_LIBRARY_PATH=/opt/vte/lib
❯ ldd /usr/bin/xfce4-terminal
  libvte-2.91.so.0 => /opt/vte/lib/libvte-2.91.so.0

That’s it. Now every time we run xfce4-terminal it’s going to use our compiled library, but so would any other terminal that uses vte, like gnome-terminal.

For a more permanent solution you can add the directory to /etc/ld.so.conf, but personally I find it easier to export LD_LIBRARY_PATH in my profile script.

XLibre

Technically XLibre’s xserver is a single program not fundamentally different from xfce4-panel, so we can compile it just the same. The only difference would be at the moment of running it, but we’ll get into that.

We are going to look at Arch Linux’s xorg-server package, since the build instructions should be the same, and check PKGBUILD.

makedepends=('xorgproto' 'pixman' 'libx11' 'mesa' 'mesa-libgl' 'xtrans' 'libxkbfile' 'libxfont2' 'libpciaccess' 'libxv' 'libxcvt' 'libxmu' 'libxrender' 'libxi' 'libxaw' 'libxtst' 'libxres' 'xorg-xkbcomp' 'xorg-util-macros' 'xorg-font-util' 'libepoxy' 'xcb-util' 'xcb-util-image' 'xcb-util-renderutil' 'xcb-util-wm' 'xcb-util-keysyms' 'libxshmfence' 'libunwind' 'systemd' 'meson' 'git')
depends=('xkeyboard-config' 'xorg-xkbcomp' 'xorg-setxkbmap')
depends=('libepoxy' 'libxfont2' 'pixman' 'xorg-server-common' 'libunwind' 'dbus' 'libgl' 'xf86-input-libinput' 'nettle' 'libxdmcp' 'sh' 'glibc' 'libxau' 'systemd-libs' 'libtirpc' 'libpciaccess' 'libdrm' 'libxshmfence' 'libxcvt')

This is slightly more complicated because there’s more dependencies and multiple resulting packages.

Nonetheless we can just install everything:

sudo pacman -S xorgproto pixman libx11 mesa mesa-libgl xtrans libxkbfile libxfont2 libpciaccess libxv libxcvt libxmu libxrender libxi libxaw libxtst libxres xorg-xkbcomp xorg-util-macros xorg-font-util libepoxy xcb-util xcb-util-image xcb-util-renderutil xcb-util-wm xcb-util-keysyms libxshmfence libunwind systemd meson git xkeyboard-config xorg-xkbcomp xorg-setxkbmap libepoxy libxfont2 pixman xorg-server-common libunwind dbus libgl xf86-input-libinput nettle libxdmcp sh glibc libxau systemd-libs libtirpc libpciaccess libdrm libxshmfence libxcvt

Now we clone the repository and build using the same meson instructions:

git clone --depth=1 https://github.com/X11Libre/xserver.git
cd xserver
meson setup --prefix=/opt/xlibre build
ninja -C build install

That’s it, we have compiled and installed XLibre.

However, XLibre (and Xorg) follow a modular architecture, and it’s recommended that you recompile the modules you will be using. Some modules like modesetting are internal, so they are already compiled and installed automatically, but I need the libinput module, and that’s external:

We could use XLibre’s libinput module, but it’s perfectly possible to use freedesktop.org’s one. However, in order to build against the correct xserver we need to specify PKG_CONFIG_PATH.

git clone --depth=1 https://gitlab.freedesktop.org/xorg/driver/xf86-input-libinput.git
cd xf86-input-libinput
export PKG_CONFIG_PATH=/opt/xlibre/lib/pkgconfig
meson setup --prefix=/opt/xlibre build
ninja -C build install

To make sure that the correct configuration is being used you can do pkg-config --libs xorg-server (should output -L/opt/xlibre/lib).

After you have recompiled and installed the modules you need, you can run startx with a different X server:

startx /usr/bin/startxfce4 -- /opt/xlibre/bin/X vt1

Replace startxfce4 with the command to start your desktop environment.

Ideally you would want a display manager to start the new X server, in the case of my display manager — lightdm, it’s easy:

[Seat:*]
xserver-command=/opt/xlibre/bin/X

That’s it.

Conclusion

Compiling packages yourself might not be very straightforward, but it’s not rocket science either. With a little bit of patience anyone can compile anything in a way that doesn’t mess with the packages in their system.

This is my method, which I’ve been using for many years, and never has failed me, even while cross-compiling for Windows and ARM embedded systems. I hope you’ll find it useful.

FelipeC
http://felipec.wordpress.com/?p=5414
Extensions