<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <id>https://blog.tripu.info/</id>
    <title>blog.tripu.info</title>
    <updated>2026-09-04T00:00:00.000Z</updated>
    <generator>https://github.com/jpmonette/feed</generator>
    <link rel="alternate" href="https://blog.tripu.info/"/>
    <subtitle>tripu's blog</subtitle>
    <icon>https://blog.tripu.info/img/favicon.png</icon>
    <entry>
        <title type="html"><![CDATA[Blogging for twenty years]]></title>
        <id>https://blog.tripu.info/20</id>
        <link href="https://blog.tripu.info/20"/>
        <updated>2026-09-04T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Last Saturday marked the twentieth anniversary of this blog.]]></summary>
        <content type="html"><![CDATA[<p>Last Saturday marked the twentieth anniversary of this blog.</p>
<p>In March 2006 I flew from Granada to London, and a few days later I settled in a room in a shared flat near Stockwell station.</p>
<figure><p><a href="https://flickr.com/photos/tripu/116894635" target="_blank" rel="noopener noreferrer" class=""><img decoding="async" loading="lazy" src="https://live.staticflickr.com/47/116894635_2d28060604_b.jpg" alt="A couple of hours after my arrival in London" class="img_ev3q"></a>
</p><figcaption>A couple of hours after my arrival in London</figcaption><p></p></figure>
<figure><p><a href="https://flickr.com/photos/tripu/122544597" target="_blank" rel="noopener noreferrer" class=""><img decoding="async" loading="lazy" src="https://live.staticflickr.com/38/122544597_27005bed4f_b.jpg" alt="My first room in Stockwell" class="img_ev3q"></a>
</p><figcaption>My first room in Stockwell</figcaption><p></p></figure>
<p>Five months into my new English life I had a job, a decent salary that to me seemed great, and a few friends.
By then, I had moved to what would be my home for the next three years (a better flat in Kennington).
The summer of 2006 was unusually hot and dry: it didn't feel like England, and that helped me and my mood.</p>
<figure><p><a href="https://flickr.com/photos/tripu/250146576" target="_blank" rel="noopener noreferrer" class=""><img decoding="async" loading="lazy" src="https://live.staticflickr.com/87/250146576_b2599df04a_b.jpg" alt="With Golan" class="img_ev3q"></a>
</p><figcaption>With Golan</figcaption><p></p></figure>
<p>That summer, with my laptop <code>heidi</code> running Kubuntu 5.10, I finished the new web site I had created with Wordpress
and uploaded it to OVH via FTP.</p>
<figure><p><a href="https://flickr.com/photos/tripu/127436717" target="_blank" rel="noopener noreferrer" class=""><img decoding="async" loading="lazy" src="https://live.staticflickr.com/45/127436717_57a79b6e83_b.jpg" alt="A random screenshot of my laptop in those days" class="img_ev3q"></a>
</p><figcaption>A random screenshot of my laptop in those days</figcaption><p></p></figure>
<p><a href="https://www.wired.com/2007/12/after-10-years-of-blogs-the-futures-brighter-than-ever/" target="_blank" rel="noopener noreferrer" class=""><em>Weblogs</em> had been “invented” nine years before</a>,
but only a few of my nerdiest friends and acquaintances had a blog back then&nbsp;—&nbsp;like
Golan, who <a href="https://blog.roncero.org/" target="_blank" rel="noopener noreferrer" class="">started blogging</a> three years earlier than me.</p>
<p>And so, in 2006-08-29, I inaugurated <code>http://tripu.info</code> with <a class="" href="https://blog.tripu.info/opening">a rather melancholic first post in Spanish</a>
(with the <em>slug</em> <code>opening</code>).</p>
<p>This is what this web site looked like two decades ago:</p>
<figure><p><a href="https://blog.tripu.info/assets/files/blog-screenshot-1-fa709384d9975de0dcd2ecf5e0e1b5a3.png" target="_blank" class=""><img decoding="async" loading="lazy" alt="2006: I was quite proud of my custom Wordpress “theme”" src="https://blog.tripu.info/assets/images/blog-screenshot-1-fa709384d9975de0dcd2ecf5e0e1b5a3.png" width="1134" height="1086" class="img_ev3q"></a>
</p><figcaption>2006: I was quite proud of my custom Wordpress “theme”</figcaption><p></p></figure>
<p>A year and a half later, I started using <code>tripu.info</code> for a general info page instead,
moved the blog to the subdomain <code>blog.tripu.info</code>, and changed a bit the aspect of the site.
I celebrated the redesign with <a class="" href="https://blog.tripu.info/re-opening">a new cheesy post in Spanish</a> (<em>slug</em>: <code>re-opening</code>).</p>
<figure><p><a href="https://blog.tripu.info/assets/files/blog-screenshot-2-ca7ff411d64f7a09d53cea8c8b9b1f93.png" target="_blank" class=""><img decoding="async" loading="lazy" alt="2008: moved to the subdomain" src="https://blog.tripu.info/assets/images/blog-screenshot-2-ca7ff411d64f7a09d53cea8c8b9b1f93.png" width="1134" height="1087" class="img_ev3q"></a>
</p><figcaption>2008: moved to the subdomain</figcaption><p></p></figure>
<figure><p><a href="https://blog.tripu.info/assets/files/blog-screenshot-3-ca565b1f6c86e3119bd302a41204d9a6.png" target="_blank" class=""><img decoding="async" loading="lazy" alt="tripu.info" src="https://blog.tripu.info/assets/images/blog-screenshot-3-ca565b1f6c86e3119bd302a41204d9a6.png" width="1158" height="716" class="img_ev3q"></a>
</p><figcaption><code>tripu.info</code></figcaption><p></p></figure>
<p>For a few years I kept blogging, and I redesigned or moved the site once or twice.
Its last incarnation, before I eventually lost the blog to a combination of neglect and technical issues,
was as a <code>wordpress.com</code>-hosted site that I started in July 2014.
In a nice alliteration, I resumed blogging around the time I was moving abroad
again&nbsp;—&nbsp;this time, to Tokyo.
On that occasion, however, I forgot about the mandatory cheesy post in Spanish.</p>
<figure><p><a href="https://blog.tripu.info/assets/files/blog-screenshot-4-e2ac61c3541de3d5656e125ce279271d.png" target="_blank" class=""><img decoding="async" loading="lazy" alt="2014: 異国趣味" src="https://blog.tripu.info/assets/images/blog-screenshot-4-e2ac61c3541de3d5656e125ce279271d.png" width="1512" height="1068" class="img_ev3q"></a>
</p><figcaption>2014: <a href="https://jisho.org/word/%E7%95%B0%E5%9B%BD%E8%B6%A3%E5%91%B3" target="_blank" rel="noopener noreferrer" class="">異国趣味</a></figcaption><p></p></figure>
<p>Then, on the first day of 2022, after several years not owning a proper blog,
<a href="https://indieweb.org/Getting_Started" target="_blank" rel="noopener noreferrer" class="">an <em>indie</em> blog</a>,
I published this new version, which is a static site built with
<a href="https://docusaurus.io/" target="_blank" rel="noopener noreferrer" class="">Docusaurus</a>
(in the interim, I had been posting on a couple <em>walled gardens</em>).
I marked the occasion with <a class="" href="https://blog.tripu.info/re-re-opening">an even cheesier post in Spanish</a>…
with the predictable <em>slug</em> <code>re-re-opening</code>.</p>
<p>And now, to “celebrate” this twentieth anniversary, I forced myself to find the time
to move a bunch of old posts from one of those walled gardens to where they belong: here.</p>
<p>Between 2015 and 2021 I published 34 posts <a href="https://medium.com/@tripu" target="_blank" rel="noopener noreferrer" class="">on Medium</a>.
After a bit of spelunking, they are all here now; find them with the tag <a class="" href="https://blog.tripu.info/tags/from-medium">from-Medium</a>.
This fills the biggest gap I had in the <a class="" href="https://blog.tripu.info/archive">archive</a>.</p>
<p>What were those Medium posts about?</p>
<p>The most popular I wrote was a long and thorough
<a class="" href="https://blog.tripu.info/referendum-e53331ddf841">critique of the nationalist movement in Catalonia and of the methods of its leaders</a>.
Other posts that worked well with readers were: an explanation of why
<a class="" href="https://blog.tripu.info/there-is-no-language-called-chinese-94e994353aa6">we shouldn't use “Chinese” as the name of a language</a>,
a defence of
<a class="" href="https://blog.tripu.info/soylent-98f32bc47fc4">meal replacement powders and shakes</a>
(against the naturalistic fallacy), some
<a class="" href="https://blog.tripu.info/ulysses-f470b92406f7">notes after having read <em>Ulysses</em></a>,
a collection of some
<a class="" href="https://blog.tripu.info/the-mind-of-david-pearce-e718dd50f3f6">quotes I love by <strong>David Pearce</strong></a>,
or my
<a class="" href="https://blog.tripu.info/montaigne-121ed878b0b7">highlights from the third volume of <strong>Michel de Montaigne</strong>'s <em>Essays</em></a>
(in Spanish).</p>
<p>As with everything I've written and shared, I am disappointed by a few pieces, even embarrassed by one or two,
and still proud and satisfied with some of the others.</p>
<p>(Next, I intend to move here what I can find of what I posted on that short-lived <code>wordpress.com</code> site,
and of what I posted on a Diaspora* node.
But that's going to be harder.)</p>
<p>Here's wishing myself two more decades of public writing!</p>]]></content>
        <category label="in-English" term="in-English"/>
        <category label="meta" term="meta"/>
        <category label="personal" term="personal"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Unjabbed]]></title>
        <id>https://blog.tripu.info/unjabbed</id>
        <link href="https://blog.tripu.info/unjabbed"/>
        <updated>2026-08-07T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Today I want to lend this humble blog to the plight of the anti-vaxxers, because]]></summary>
        <content type="html"><![CDATA[<p>Today I want to lend this humble blog to the plight of the anti-vaxxers, because</p>
<blockquote>
<p><a href="https://nitter.net/CoviLeaks/status/2083462745685692902" target="_blank" rel="noopener noreferrer" class=""><em>“no collective in history was as brutally targeted and demonised as the unjabbed.”</em></a></p>
</blockquote>
<p>That's right.
No collective in history.
Ever.
And you thought the Cambodian genocide of the Khmer Rouge or the Ukrainian man-made famine of the 1930s were bad!
Those events were nothing compared to brutally targeting and demonising those who decide not to vaccinate
(in posts like this one).</p>
<p>You probably did not know either that</p>
<blockquote>
<p><a href="https://nitter.net/uTobian/status/2083725098993988091" target="_blank" rel="noopener noreferrer" class=""><em>“Covid is a world war, launched by the ruling class, against humanity.”</em></a></p>
</blockquote>
<p>Let that sink in.
Until today, you knew of wars against political factions, races, classes, countries…
but never against the whole of humanity.
This is a war against all people, everywhere.
Not even the worst conspiracies are that bad, because conspiracies are about a subset of humans
against another subset of humans.
But with Covid, the “ruling class” (who, presumably, are not human themselves)
are attacking <em>the human race as a whole</em>.
If this is not alarming, I don't know what is.</p>
<p><img decoding="async" loading="lazy" src="https://upload.wikimedia.org/wikipedia/commons/thumb/b/bd/Hysteria_and_certain_allied_conditions%2C_their_nature_and_treatment%2C_with_special_reference_to_the_application_of_the_rest_cure%2C_massage%2C_electrotherapy%2C_hypnotism%2C_etc_(1897)_(14804495743).jpg/1280px-thumbnail.jpg" alt="Hysteria" class="img_ev3q"></p>
<p>And what signs do we have of the extent of that persecution?
Do you remember how <strong>Anthony Fauci</strong> appeared before a US Senate committee
and invoked the Fifth Amendment against self-incrimination,
while refusing to answer questions about the origins of Covid?
Well,</p>
<blockquote>
<p><a href="https://nitter.net/uTobian/status/2082894484359221714#m" target="_blank" rel="noopener noreferrer" class=""><em>“if America's top doctor can refuse to answer every question from U.S. Senators
then every parent can refuse every shot from pediatricians.”</em></a></p>
</blockquote>
<p>Terrible, right?</p>
<p>Except…they can!
A parent can refuse every vaccine for their kids.
In Spain, for example, childhood vaccionation is
<a href="https://www.abogadopenal.madrid/que-ocurre-si-se-niega-a-vacunar-a-los-ninos-o-tomar-decisiones-medicas-clave/" target="_blank" rel="noopener noreferrer" class="">not legally mandatory</a>&nbsp;—&nbsp;it is
<a href="https://www.martorellabogados.net/blog/vacunacion.html" target="_blank" rel="noopener noreferrer" class="">recommended</a>.
A simple refusal to vaccinate carries no direct criminal liability.
<a href="https://www.elnacional.cat/es/salud/pueden-padres-negarse-hijo-reciba-vacunas-tener-responsabilidades-penales-si-ponen-en-peligro_1614723_102.html" target="_blank" rel="noopener noreferrer" class="">There's no specific offense for it, and no pattern of administrative or criminal sanctions.</a></p>
<p>Perhaps that X user is referring to the US, specifically?
They seem to live in Texas.</p>
<p>But, no.
No US law criminalises a parent's refusal to vaccinate either.
It's legal.
Prosecution only enters if refusal is tied to actual, provable harm (severe neglect or homicide by omission).
Admittedly, your child <em>may</em> be barred from <em>public</em> school/daycare unless an exemption applies, and every US
state requires a core series of childhood vaccines (DTaP, MMR, polio, varicella, hepatitis B) for <em>public</em> school entry.
But
<a href="https://www.findlaw.com/education/school-safety/public-school-vaccination-requirements-by-state.html" target="_blank" rel="noopener noreferrer" class="">every state also allows medical exemptions, most allow religious exemptions, and about sixteen states allow personal-belief exemptions</a>.</p>
<p>So, indeed, “every parent can refuse every shot from pediatricians”.</p>
<p>But wait.
<a href="https://nitter.net/uTobian/status/2083038041413947791" target="_blank" rel="noopener noreferrer" class="">It gets worse.</a></p>
<blockquote>
<p><em>“[Vaccines] are never tested against inert saline placebos in clinical trials.”</em></p>
</blockquote>
<p>This is false.
Notice the adverb “never” above: one needs only to find <em>one</em> test against a saline placebo to
debunk that statement.
Not one, but
<a href="https://www.chop.edu/vaccine-update-healthcare-professionals/newsletter/75-years-placebo-controlled-vaccine-testing-us" target="_blank" rel="noopener noreferrer" class="">several vaccines have been tested against inert saline placebo in randomised, double-blind trials</a>.</p>
<blockquote>
<p><em>“[Vaccines] require liability protection [and] they require their own separate court system.”</em></p>
</blockquote>
<p>Again, not everywhere.
In Spain, vaccine manufacturers can be sued, and the standard is actually stricter than for most other products.
So, the opposite of the US model.
For Covid vaccines specifically, a compensation scheme was set up where EU member states would cover the costs
manufacturers incur under the liability regime (except in cases of intentional misconduct or
breach of good manufacturing practice).
But
<a href="https://www.newtral.es/inmunidad-legal-vacunas-covid/20201119/" target="_blank" rel="noopener noreferrer" class="">this is a contractual exception, not legal immunity</a>.</p>
<p>Notice that those two claims (absence of proper clinical trials, and special liability protection)
need not be false everywhere in the world: if they are false in <em>some</em> jurisdictions, the claims
are void in the abstract, because if vaccines were not safe we would witness an avalanche of
(successful) legal claims in <em>at least</em> those jurisdictions.
It's similar to how we know that vehicles being sold in our country are safe because there are
institutions, <em>possibly in other countries</em>, doing evaluations, stress tests, crash tests, etc.
with them.
It's mostly the same popular vehicles being exported everywhere, with minor variations, and
it's mostly the same popular drugs and medical devices being exported everywhere, with variations.</p>
<blockquote>
<p><em>“[Vaccines] require mandates to force people to take them.”</em></p>
</blockquote>
<p>As we discussed above, this is at least debatable:
it depends on jurisdiction, and on what we understand by “force people”.
In any case, and even if vaccines were really enforced on people everywhere, a strong legal
requirement would not be necessarily an indictment against vaccines being
“so Safe &amp; Effective™”: helmets and safety belts are truly
“safe and effective”, and still we are required by law to use them (or else we have
to pay heavy fines or get our driving licence revoked).
Nobody thinks those laws are in place to conceal the fact that helmets and safety belts
are actually not safe or effective.</p>
<blockquote>
<p><em>“There is no proper post-market surveillance system.”</em></p>
</blockquote>
<p>This one is funny.
At the beginning of the Covid pandemic, anti-vaxxers treated the VAERS
(Vaccine Adverse Event Reporting System) database as evidence of huge risks associated to
Covid vaccines.
Back them, the counter-argument was that VAERS is a passive surveillance DB where literally
<em>anyone</em> can submit a report of any health event occurring after a vaccination, whether or
not it's actually caused by the vaccine.
Today, apparently VAERS is <em>not</em> a “proper post-market surveillance system”.
Go figure.
Are conspiracy theorists now going to discount the myriad of claims of Covid-vaccine-induced
damage that were reported by random people back then?
If there's no proper surveillance system, how could anyone support the claim that vaccines
are unsafe or ineffective?
Let's not brutally target and demonise those who can't resolve that contradiction.</p>
<blockquote>
<p><em>“[Vaccines] require billions of dollars of propaganda. […]
Big Pharma rewards regulators with lucrative jobs and stock options after they approve shots.”</em></p>
</blockquote>
<p>This is not unique to vaccines or drug manufacturing: all major industries seek rent-seeking,
protection against incumbents, public contracts.
Lobbying and propaganda (also known as advertising) is used by all powers and all factions.
Revolving doors are a pervasive phenomenon in many sectors of the economy.
This proves nothing.</p>
<blockquote>
<p><em>“Anyone who questions [vaccines] is censored, fired, banned, and/or blacklisted.”</em></p>
</blockquote>
<p>Again, notice the absolute pronoun, “anyone”: you need only to think of <em>one</em> friend
or acquaintance (or yourself!) who ever dare to “question” a vaccine, <em>any</em>
vaccine, and lived to see another day in social media and in polite society, to nullify this claim.</p>
<p>It's a pity that so much hyperbole, manipulation, bias and blatant lies has rendered public
discussion of vaccine safety almost impossible.</p>
<div class="theme-admonition theme-admonition-note admonition_xJq3 alert alert--secondary"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"></path></svg></span><abbr title="Intellectual Property">IP</abbr>&nbsp;</div><div class="admonitionContent_BuS1"><p><em>Hysteria and certain allied conditions</em>: <a href="https://commons.wikimedia.org/wiki/File:Hysteria_and_certain_allied_conditions,_their_nature_and_treatment,_with_special_reference_to_the_application_of_the_rest_cure,_massage,_electrotherapy,_hypnotism,_etc_(1897)_(14804495743).jpg" target="_blank" rel="noopener noreferrer" class="">Wikimedia (no known copyright restrictions)</a></p></div></div>]]></content>
        <category label="in-English" term="in-English"/>
        <category label="politics" term="politics"/>
        <category label="science" term="science"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Cómo ser progresista en 2026]]></title>
        <id>https://blog.tripu.info/progresista</id>
        <link href="https://blog.tripu.info/progresista"/>
        <updated>2026-07-29T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[El gobierno de Pedro Sánchez es ya tal gangrena para la vida política en España que cada vez oigo a más]]></summary>
        <content type="html"><![CDATA[<p>El gobierno de <strong>Pedro Sánchez</strong> es ya tal gangrena para la vida política en España que cada vez oigo a más
comentaristas y veo a más personas de mi entorno apoyar abiertamente al «mal menor» que (según
ellos mismos) supone el PP… cuando no directamente a Vox.</p>
<p>A mí me confunde un poco, y me incomoda, que la decisión tenga que orbitar entre lo abominable y lo repugnante.
Por un lado, existen alternativas a los dos grandes bloques, y
<a href="https://tripu.medium.com/diatriba-en-contra-del-voto-%C3%BAtil-e0ac0b283a0f" target="_blank" rel="noopener noreferrer" class="">hace mucho tiempo que defiendo que se puede votar a los partidos pequeños</a>,
precisamente para que dejen de serlo.
Por otro lado, si alguien se consideraba «de izquierdas» o «progresista» antes
de que el concepto se distorsionase tanto (en España: antes de <strong>ZP</strong>), ¿no debería buscar alternativas
realmente progresistas a este PSOE putrefacto, en lugar de abrazar el otro polo, el conservadurismo?</p>
<p>«Progresista» es una de esas etiquetas que a mí me gustaría poder ponerme,
si no fuese porque para algunas personas parece significar lo opuesto que para mí (¡!).
Me pasa lo mismo con la palabra «ecologista».
Otros adjetivos que me gustaría colocarme sin vergüenza son «feminista»
(pero eso me asociaría a
<a href="https://tripu.medium.com/privilegios-2159f7c5e22a" target="_blank" rel="noopener noreferrer" class="">algunas corrientes que aborrezco</a>),
«federalista» (si no pareciese que con eso apoyo
<a href="https://tripu.medium.com/referendum-e53331ddf841" target="_blank" rel="noopener noreferrer" class="">manipulaciones de la Historia y delitos injustificables</a>),
y «liberal» o «libertario» (lamentablemente, en España esto a menudo se entiende
como <em>reaccionario al cuadrado</em> o incluso <em>extrema derecha</em>).</p>
<p><img decoding="async" loading="lazy" src="https://upload.wikimedia.org/wikipedia/commons/d/d0/Green-fee.jpg" alt="Pastos más verdes" class="img_ev3q"></p>
<p>Si nos atenemos a la raíz de esos dos antónimos, «conservador» y «progresista»,
al núcleo de significado que permanece constante a lo largo de la Historia y en distintos lugares del mundo,
parece claro que los primeros prefieren el <em>statu quo</em> (o sea, «conservar» lo que hay)
y los segundos abogan por cambiar las cosas hacia estados nuevos («progresar»).
En principio, ambas posturas parecen irreprochables.
¿Quién no querría <em>conservar</em> lo (bueno) que ya tenemos?
¿Quién podría oponerse a <em>progresar</em> como sociedad?</p>
<p>En el mundo anglosajón se entiende mejor que hay un equilibrio virtuoso y necesario entre los
impulsos reaccionarios de una parte de la sociedad y las tendencias rupturistas de la otra.
La palabra «conservador» no tiene apenas el estigma que sí lleva asociado en España.
Aquí, la guerra cultural a menudo se entiende como un juego de suma cero bastante infantil, en el
que unos (los míos) están en lo cierto, mientras que los otros son <em>claramente</em> ingenuos, egoístas,
o peligrosos.
Esto se nota fácilmente en el día a día: recuerdo una vez que compartí con unos amigos
«de izquierdas» una noticia del diario ABC y recibí, antes que nada,
un comentario condescendiente que me dejó pasmado, solo por la fuente de la información.
Creo que ese lastre intelectual nos perjudica mucho.</p>
<p>En realidad, conservadores y progresistas se necesitan mutuamente, unos como contrapeso de los otros.
En <a href="https://press.uchicago.edu/books/excerpt/2011/hayek_constitution.html" target="_blank" rel="noopener noreferrer" class=""><em>Por qué no soy conservador</em></a>,
<strong>Hayek</strong> resumió bien esa tensión:</p>
<blockquote>
<p><em>«La objeción decisiva a cualquier conservadurismo que merezca llamarse así es que,
por su propia naturaleza, no puede ofrecer una alternativa a la dirección en la que nos movemos.
Puede lograr, mediante su resistencia a las tendencias actuales, frenar desarrollos indeseables,
pero, como no señala otra dirección, no puede impedir que continúen.
Por esta razón, ha sido invariablemente el destino del conservadurismo verse arrastrado
por un camino que no ha elegido él mismo.
El tira y afloja entre conservadores y progresistas solo puede afectar a la velocidad,
no a la dirección, de los desarrollos contemporáneos.»</em></p>
</blockquote>
<p>Según Hayek, los progresistas «ofrecen alternativas» y «proponen desarrollos»,
y es la tarea de los conservadores el moderar la velocidad de esos cambios y frenar los que
conduzcan a un estado peor de las cosas.
<a href="https://en.wikipedia.org/wiki/A_Conflict_of_Visions" target="_blank" rel="noopener noreferrer" class="">La visión utópica frente a la visión trágica.</a></p>
<p>Estuve pensando qué decirle a una persona que se considere más bien progresista hoy, en España
(más bien progresista como lo soy yo dentro de mi armario).
No tendría sentido que un progresista votase al PP, ni a nada que esté a su derecha.
Desde luego, no entendería que votase a
<a href="https://tripu.medium.com/calvo-361b9c5ac644" target="_blank" rel="noopener noreferrer" class="">este PSOE de <strong>Ábalos</strong> y de <strong>Carmen Calvo</strong></a>;
ni tampoco a
<a href="https://x.com/LaEtxebarria/status/2081771981276352720" target="_blank" rel="noopener noreferrer" class="">un partido del archipiélago post-Podemita de los que dirigen nulidades como <strong>Yolanda Díaz</strong></a>.</p>
<p>Si esas opciones políticas claramente ya no representan progreso (sino involución, dogmatismo,
demagogia y cleptocracia), ¿qué políticas son progresistas hoy en día?</p>
<p>Ahí van unas cuantas.</p>
<p><strong>Potenciar el crecimiento económico.</strong><br>
<!-- -->Uno de los principios más importantes que nos toca defender hoy.
La evolución del PIB no es una métrica perfecta del progreso de un país… pero es de las menos malas.
Una economía más grande no equivale a más bienestar general, pero hay una correlación positiva muy clara.
Más empresas, empresas más grandes, y más ricos.
La izquierda institucional de hoy está fundamentalmente en contra de esto, aunque a veces lo disimule.</p>
<p><strong>Reducir la deuda pública.</strong><br>
<!-- -->A todos los niveles: nacional, regional y local.
El déficit en las cuentas públicas reduce el número de futuros mejores que son posibles porque reduce la
opcionalidad de los estados; así que deber dinero de forma crónica&nbsp;—y deber cada vez
más—&nbsp;es necesariamente una fuerza conservadora.</p>
<p><strong>Trazar una división cristalina entre libertad de expresión y violencia.</strong><br>
<!-- -->Libertad de expresión, bien.
Violencia, mal.
Es así de simple.
Perseguir a quien opina en redes sociales es reaccionario, aunque esas opiniones resulten ofensivas o repulsivas
para otros.
Y no se puede disculpar ningún ataque físico a la propiedad de alguien (incluida la propiedad común,
como el mobiliario urbano) ni a la integridad física de otros; tampoco escudándose en el malestar de la turba,
en la provocación de opiniones ajenas, ni en la bondad de ninguna doctrina revolucionaria.</p>
<p><strong>Defender la energía nuclear.</strong><br>
<!-- -->Para progresar necesitamos mucha más energía, y los países en desarrollo aún más.
Otro mundo es posible; pero mientras lo hacemos realidad con capital y con I+D, en <em>este</em> mundo, la mejor
fuente de energía para garantizar el suministro basal en cualquier sitio y en cualquier momento del año
es nuclear.</p>
<p><strong>Proteger el derecho a la intimidad y el secreto de las comunicaciones, y limitar el uso
de la informática para garantizar esos derechos.</strong><br>
<!-- -->No hace falta deliberar sobre esto ni inventar nada nuevo: la frase anterior está hecha de fragmentos literales del
<a href="https://constitucion.congreso.es/constitucion-1978/texto-de-la-constitucion?numero=18" target="_blank" rel="noopener noreferrer" class="">artículo 18 de la Constitución</a>.
Hay que oponerse por principio&nbsp;—y boicotear en el futuro, si llegamos a eso—&nbsp; leyes totalitarias
como <a href="https://es.wikipedia.org/wiki/Chat_Control" target="_blank" rel="noopener noreferrer" class="">Chat Control</a>, la
<a href="https://es.wikipedia.org/wiki/Pajaporte" target="_blank" rel="noopener noreferrer" class="">Cartera Digital</a>, la
<a href="https://commission.europa.eu/news-and-media/news/european-age-verification-app-keep-children-safe-online-2026-04-15_es" target="_blank" rel="noopener noreferrer" class="">verificación de edad en internet</a>
y la <a href="https://www.ecb.europa.eu/euro/digital_euro/html/index.es.html" target="_blank" rel="noopener noreferrer" class="">moneda digital del BCE</a>.
Defender el progreso es <a class="" href="https://blog.tripu.info/encrypt">defender el cifrado punto a punto</a>, la criptografía,
el software libre, y las VPNs; no
<a href="https://www.adslzone.net/noticias/internet/futuro-vpn-regulacion-europa-reino-unido/" target="_blank" rel="noopener noreferrer" class="">hacerlos ilegales</a>.
Tampoco
<a href="https://hayahora.futbol/" target="_blank" rel="noopener noreferrer" class="">bloquear direcciones IP inocentes con la excusa de luchar contra la piratería</a>.</p>
<p><strong>Defender la igualdad de derechos de la mujer y el hombre.</strong><br>
<!-- -->No hace falta deliberar sobre esto ni inventar nada nuevo: la frase anterior es, literalmente, la primera
<a href="https://dle.rae.es/feminismo" target="_blank" rel="noopener noreferrer" class="">definición de «feminismo» de la RAE</a>.
Ser feminista en 2026 significa, lo primero, reformar o derogar las leyes sexistas que aún quedan, como la que
<a href="https://constitucion.congreso.es/constitucion-1978/texto-de-la-constitucion?numero=57" target="_blank" rel="noopener noreferrer" class="">antepone «el varón a la mujer» para heredar la Corona</a>,
o la que
<a href="https://elpais.com/sociedad/2008/05/14/actualidad/1210716006_850215.html" target="_blank" rel="noopener noreferrer" class="">permite aumentar una pena en función del sexo del acusado</a>.
Además, el progreso se apoya en la ciencia, así que un progresista tiene que partir de la realidad
incontrovertible de que, en términos generales, los cerebros de los hombres y los de las mujeres no son iguales;
como tampoco lo son sus intereses, sus habilidades, o los rasgos de su personalidad.</p>
<p><strong>Fomentar la inmigración que nos beneficia tanto a nosotros como a los países de origen.</strong><br>
<!-- -->Los progresistas son más pro-inmigración que los conservadores, sí.
Pero se equivocan con el sistema actual, que pone barreras a inmigrantes prometedores y premia a los
ilegales y a las mafias.
Hay un suministro enorme de potenciales inmigrantes económicos que sabemos se adaptan a nuestra cultura,
contribuyen a nuestra economía, y a la vez mantienen con remesas a sus familias en el país de origen:
hispanoamericanos y europeos, principalmente; pero también africanos y asiáticos.
Ser progresista es querer más personas así en España, por su propio bien y también por el nuestro.
En cambio, recibir a los más fundamentalistas y violentos de ciertos países (y además
regularizar su situación cuando llegaron ilegalmente) nos daña a nosotros, financia a los círculos
retrógrados de los que salieron en su país de origen, y encima legitima y perpetúa la inmigración ilegal.</p>
<p><strong>Defender el estado de derecho y la separación de poderes.</strong><br>
<!-- -->Sorprendentemente, hay que recordarlo.
Porque lo contrario (un estado autoritario sin garantías legales ni seguridad jurídica, y un poder único) es reaccionario.
Los entes públicos (RTVE, CNMV, CNMC, CIS, etc) son independientes y ajenos al juego político.
El defensor del pueblo no depende del gobierno ni del Poder Judicial.
El fiscal general del estado no pertenece a ninguno de los tres poderes.
El <em>partido político</em> que gobierna no es lo mismo que el <em>poder ejecutivo</em>, y ninguna de estas dos cosas es lo mismo
que el <em>grupo parlamentario</em> del partido que gobierna.
Los diputados y senadores tienen libertad de voto.
<a href="https://constitucion.congreso.es/constitucion-1978/texto-de-la-constitucion?numero=1" target="_blank" rel="noopener noreferrer" class="">«La soberanía nacional reside en el pueblo español»</a>,
y no puede trocearse unilateralmente.
<a href="https://constitucion.congreso.es/constitucion-1978/texto-de-la-constitucion?numero=139" target="_blank" rel="noopener noreferrer" class="">«Todos los españoles tienen los mismos derechos y obligaciones en cualquier parte del territorio del Estado».</a>
Todo esto importa.</p>
<div class="theme-admonition theme-admonition-note admonition_xJq3 alert alert--secondary"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"></path></svg></span>Propiedad intelectual</div><div class="admonitionContent_BuS1"><p>Pastos más verdes: <a href="https://commons.wikimedia.org/wiki/File:Green-fee.jpg" target="_blank" rel="noopener noreferrer" class="">usuario de Wikimedia Arcfee (<em>Creative Commons</em>)</a></p></div></div>]]></content>
        <category label="in-Spanish" term="in-Spanish"/>
        <category label="Spain" term="Spain"/>
        <category label="politics" term="politics"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Salvar vidas]]></title>
        <id>https://blog.tripu.info/salvar-vidas</id>
        <link href="https://blog.tripu.info/salvar-vidas"/>
        <updated>2026-06-25T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Se calcula que entre 2015 y 2021 Amancio Ortega donó unos 600 o 700 millones de euros en total]]></summary>
        <content type="html"><![CDATA[<p>Se calcula que entre 2015 y 2021 <strong>Amancio Ortega</strong> donó unos 600 o 700 millones de euros en total
a la sanidad española, específicamente en detección temprana y terapias contra el cáncer y en
<a href="https://www.faortega.org/es/proyectos/programa-para-la-implantaci%C3%B3n-de-la-protonterapia-en-el-sistema-p%C3%BAblico-de-salud-de-espa%C3%B1a/" target="_blank" rel="noopener noreferrer" class="">equipamiento avanzado para protonterapia</a>, a través de programas con varios sistemas de salud autonómicos
y hospitales concretos.</p>
<p>Desgraciadamente, no existen estimaciones públicas del número de vidas que se esperan salvar
con estos regalos; solo hay valoraciones cualitativas.
<a href="https://www.gipuzkoagaur.com/2021/10/20/la-fundacion-amancio-ortega-dona-280-millones-para-comprar-10-equipos-de-protonterapia/" target="_blank" rel="noopener noreferrer" class="">Según la propia Fundación Amancio Ortega</a>,</p>
<blockquote>
<p><em>«[se podrán] <strong>salvar cientos de vidas cada año</strong> que ahora se truncan y ofrecer a miles de pacientes
una alternativa de curación con tratamientos más cortos, mucho menos agresivos y con una mejora
muy sustancial en su calidad de vida.
[Se podrá] <strong>incrementar la esperanza y el bienestar de miles de pacientes y de sus familias</strong>.»</em></p>
</blockquote>
<p>En cualquier caso, no hace falta ser un experto para esperar razonablemente que este despliegue de medios
vaya a mantener con vida cada año a decenas o incluso a cientos de españoles que morirían en el contrafactual.
En España, el <a href="https://es.wikipedia.org/wiki/Valor_de_la_vida" target="_blank" rel="noopener noreferrer" class="">valor estadístico de la vida</a>
(el coste marginal de evitar la muerte de una persona)
<a href="https://www.ief.es/docs/destacados/publicaciones/revistas/hpe/181_Art2.pdf" target="_blank" rel="noopener noreferrer" class="">se estimaba, hace dos décadas, entre 2 y 2'7 millones de euros</a>.
Redondeando hacia arriba el valor de una vida (3.000.000 €) y hacia abajo el monto de las donaciones
(600.000.000 €) para hacer la estimación más conservadora, podemos estimar que los recursos donados
por el empresario terminarán evitando la muerte de al menos doscientos pacientes.</p>
<p><img decoding="async" loading="lazy" src="https://upload.wikimedia.org/wikipedia/commons/5/5a/Mevions250i.jpg" alt="Proton therapy" class="img_ev3q"></p>
<p>Imaginemos que todos los hospitales beneficiados llevasen un registro minucioso, durante años,
de todos los pacientes que hacen uso de estos equipos; incluidas sus prognosis, su evolución en el tiempo,
y el resultado que habría sido más probable de no haber contado con estos medios.
Imaginemos también que Amancio Ortega viviese lo suficiente como para ver el grueso del impacto de su
donación (no parece probable; tiene noventa años).
Imaginemos por último que hacia el final de la vida de Ortega, los hospitales contactasen con las
personas concretas que siguiesen vivas gracias a los equipos donados, y las invitasen a un evento con él.
Amancio Ortega podría estrechar la mano de esas doscientas personas.</p>
<p>¿Sería justo y acertado decir que «Amancio Ortega, a través de sus decisiones personales y de sus
propios recursos, salvó indirectamente la vida de unas doscientas personas»?</p>
<p>Ahora imaginemos un universo alternativo en el que el filántropo murió al día siguiente de firmar
el último de estos programas de salud, en 2021.
Las mismas doscientas personas se juntan, años después, en un evento (que, esta vez, es de homenaje póstumo).
La única diferencia es que esta vez su benefactor no pudo conocer sus nombres ni puede darles
la mano.</p>
<p>¿Todavía sería cierto que «Amancio Ortega, a través de sus decisiones personales y de sus
propios recursos, salvó indirectamente la vida de unas doscientas personas»?</p>
<p>En otro universo alternativo, Amancio Ortega vive muchos años, pero por algún motivo la lista de
doscientos nombres nunca es conocida.
Quizá los hospitales no mantienen un buen registro, o quizá la Fundación Amancio Ortega declina
tener acceso a esa información.
Así que nunca se llega a celebrar esa reunión de pacientes salvados.
Las mismas doscientas personas siguen viviendo, repartidas por España, pero nadie llega a saber
nunca cuántas exactamente ni quiénes son.</p>
<p>¿Diríamos entonces que «Amancio Ortega, a través de sus decisiones personales y de sus
propios recursos, salvó indirectamente la vida de unas doscientas personas»?</p>
<p>En el siguiente universo paralelo, la única diferencia es que por algún motivo la Fundación Amancio
Ortega decidió invertir esos 600 millones de euros en hospitales de Nueva Zelanda.
Siendo Nueva Zelanda un país con un nivel de vida parecido al de España, imaginemos que son
también unos doscientos los neozelandeses que evitan una muerte por cáncer, o que prolongan
significativamente su esperanza de vida, gracias a esas donaciones.
En este otro universo, Amancio Ortega no solo no llega a conocer nunca el número exacto, ni los
nombres de los beneficiados, sino que jamás puso un pie en Nueva Zelanda ni sabe apenas nada
del país, habiendo delegado todo el trabajo en personal de su fundación.</p>
<p>¿Aceptaríamos que «Amancio Ortega, a través de sus decisiones personales y de sus
propios recursos, salvó indirectamente la vida de unas doscientas personas»?</p>
<p>En otro universo posible, no es la Fundación Amancio Ortega sino otra institución sin ánimo
de lucro la que dona esos 600.000.000 € a la misma causa.
Esta organización se financia enteramente a través de voluntarios con recursos; en concreto,
fueron doscientas personas ricas, a razón de tres millones de euros cada una, las que hicieron
posible estos programas de salud.
Berta fue una de ellas.</p>
<p>¿Sería correcto afirmar que «Berta, a través de sus decisiones personales y de sus
propios recursos, salvó indirectamente la vida de una persona»?</p>
<p>En otro universo, esta misma institución decide donar la misma cantidad, pero allí donde
el valor estadístico de la vida es menor y a la causa más urgente.
Encuentran que en varios países africanos
<a href="https://ayudaefectiva.org/como-calculamos-impacto#medicacion-preventiva" target="_blank" rel="noopener noreferrer" class="">3.500 euros dedicados a medicación contra la malaria consiguen, estadísticamente, salvar la vida de una persona</a>
(a menudo, un niño).
Con el mismo gasto que antes, se consigue salvar a unas 171.000 personas.
Berta donó los mismos tres millones de euros.</p>
<p>Ahora, ¿sería cierto que «Berta, a través de sus decisiones personales y de sus
propios recursos, salvó indirectamente la vida de unas 855 personas»?</p>
<p><img decoding="async" loading="lazy" src="https://upload.wikimedia.org/wikipedia/commons/thumb/4/4c/Anopheles_claviger.jpg/1280px-Anopheles_claviger.jpg" alt="Mosquito" class="img_ev3q"></p>
<p>En el universo alternativo 769.1B/3Z (que, casualmente, es justo el nuestro),
la misma organización filantrópica consigue muchos pequeños donantes.
Marco es un español de clase media acostumbrado a irse de vacaciones con su familia dos veces al año.
Después de reflexionar sobre el coste de oportunidad de esos viajes de placer,
decide empezar a viajar solamente una vez al año, o bien viajar a destinos más cercanos
y contratar actividades más baratas.
Gracias a ese cambio, a lo largo de dos décadas Marco y su familia ahorran 70.000 euros,
y los donan a
<a href="https://ayudaefectiva.org/helen-keller-intl#cifras-clave" target="_blank" rel="noopener noreferrer" class="">la mejor campaña de suplementación de vitamina A para niños pequeños</a>.
Con ese dinero, más de 7.000 niños reciben suficiente vitamina A durante sus
primeros cinco años de vida.
El problema de la deficiencia de esta vitamina es tan agudo en algunos países africanos,
y sus consecuencias tan severas, que, estadísticamente, ese tratamiento acabará salvando
la vida de unos veinte niños.</p>
<p>¿Sería justo y acertado decir que «Marco y su familia, a través de sus decisiones personales
y de sus propios recursos, salvaron indirectamente la vida de unas veinte personas»?</p>
<p>Si estabas de acuerdo con la primera afirmación sobre Amancio Ortega y el impacto de
sus donaciones, pero no estás de acuerdo con esta última frase sobre Marco, ¿en qué momento
de esta cadena de escenarios ficticios crees que se rompe la equivalencia entre las distintas
situaciones descritas, y por qué?</p>
<div class="theme-admonition theme-admonition-note admonition_xJq3 alert alert--secondary"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"></path></svg></span><abbr title="Intellectual Property">IP</abbr>&nbsp;</div><div class="admonitionContent_BuS1"><p>Proton therapy equipment: <a href="https://commons.wikimedia.org/wiki/File:Mevions250i.jpg" target="_blank" rel="noopener noreferrer" class="">Wikimedia user Romina.cialdella (Creative Commons)</a>.<br>
<!-- -->Anopheles mosquito: <a href="https://commons.wikimedia.org/wiki/File:Anopheles_claviger.jpg" target="_blank" rel="noopener noreferrer" class="">Павлик Лисицын, Wikimedia (Creative Commons)</a>.</p></div></div>]]></content>
        <category label="in-Spanish" term="in-Spanish"/>
        <category label="effective-altruism" term="effective-altruism"/>
        <category label="philosophy" term="philosophy"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[There really is no Theory of Everything in the social sciences]]></title>
        <id>https://blog.tripu.info/theory-of-everything</id>
        <link href="https://blog.tripu.info/theory-of-everything"/>
        <updated>2026-05-31T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[1. The illusion]]></summary>
        <content type="html"><![CDATA[<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="1-the-illusion">1. The illusion<a href="https://blog.tripu.info/theory-of-everything#1-the-illusion" class="hash-link" aria-label="Direct link to 1. The illusion" title="Direct link to 1. The illusion" translate="no">​</a></h2>
<p>A few days ago, one of my libertarian friends shared
<a href="https://x.com/brivael/status/2056052974602830217" target="_blank" rel="noopener noreferrer" class="">this X post (in French)</a>
on a common Signal group.
Here is an automatic translation into English of some parts of it:</p>
<blockquote><em><p>“The whole thing comes down to 5 axioms.
Humanity has been hoodwinked by making itself seem complicated.
The social sciences, economics, political philosophy.
Thousands of pages, dissertations, schools of thought, movements, counter-movements.
To what end?
A muddled mess in which nobody knows what is true any more.
When in fact the whole thing comes down to 5 axioms.”</p></em></blockquote>
<p><img decoding="async" loading="lazy" src="https://upload.wikimedia.org/wikipedia/commons/thumb/d/d1/Skein_-_Museo_Egizio_%28Turin%29_S_7791_p01.jpg/960px-Skein_-_Museo_Egizio_%28Turin%29_S_7791_p01.jpg" alt="A mess" class="img_ev3q"></p>
<p>And then:</p>
<blockquote><em><p>“Axiom 1 — You own yourself.
Your body, your time, your mind, your labour.
Nobody else does.
Anything that contradicts this is a form of slavery.</p><p>Axiom 2 — What you produce belongs to you.
If you own yourself, you own what comes from you.
Your labour, your ideas, your accumulated capital.</p><p>Axiom 3 — You have no right to initiate violence.
Neither physical violence, nor violence by proxy through the State.
You may defend yourself.
You may not aggress.</p><p>Axiom 4 — Free exchange is positive by definition.
If A and B exchange voluntarily, it is because each values what they receive more than what they give.
Otherwise they would not do it.</p><p>Axiom 5 — The rule of law exists to protect 1, 2, 3, and 4.
Not to violate them.
The legitimate role of the law: to enforce contracts, punish aggression, protect property.
Full stop.
Everything beyond that remit is a deviation.</p><p>That is all.”</p></em></blockquote>
<p>And when this guy says “that is all”, <em>he really means it</em>:</p>
<blockquote><em><p>“No need for 800 pages of Piketty. No need for a sociology professor. No need for Bourdieu, Habermas, or Stiglitz.
These 5 axioms are sufficient to analyse any economic, political, or social discourse (sic).”</p></em></blockquote>
<p>Five axioms is all we need.
How?</p>
<blockquote><em><p>“The test is simple: when someone talks about economics or politics, check whether their reasoning respects these 5 premises.
If they say ‘we must redistribute’ → they are violating Axiom 2.
If they say ‘we must regulate this market’ → they are violating Axiom 4.
If they say ‘the State must decide on your behalf, for your own good’ → they are violating Axiom 1.
If they say ‘property is theft’ → they are undermining the entire foundation.
If they contradict these axioms, they are urinating in your brain.”</p></em></blockquote>
<p>Because, to reiterate:</p>
<blockquote><em><p>“Humanity is simple.
It is the intellectual parasites who have an interest in making you believe it is complicated.”</p></em></blockquote>
<p>There you have it.
How come nobody had thought of that before?</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="2-falsifying-the-illusion">2. Falsifying the illusion<a href="https://blog.tripu.info/theory-of-everything#2-falsifying-the-illusion" class="hash-link" aria-label="Direct link to 2. Falsifying the illusion" title="Direct link to 2. Falsifying the illusion" translate="no">​</a></h2>
<p>I wrote very recently about
<a class="" href="https://blog.tripu.info/my-only-axiom">the temptation to reduce all of human complexity to a single theory that could explain everything</a>.
Libertarianism is certainly liable to this,
but in general any <em>‐ism</em> has a strong tendency to fall into this trap, because whatever comes
before “ism” is by definition given disproportioned relevance and is therefore a strong candidate
to be considered the fundamental force or the guiding principle above everything else.</p>
<p>Libertarians (I mean anarcho-capitalists here) put their Non-Aggression Principle (NAP) on a pedestal
(axiom 3 above).
And by all means, that is a sensible heuristic to navigate life.
But even the most innocent-looking and benign of “axioms” fall short or have to be modulated or
contradicted, sometimes.</p>
<p>For instance, issuing credible threats of violence against specific targets is a punishable offence in most
developed countries, and for good reasons.
If someone is sufficiently likely to imminently attack someone else, the right thing to do may be to take
their resources or weapons from them (against Axiom 2) or to detain them (against Axiom 1).
“Initiating violence” (or expropriating private goods) may be the moral response to <em>mere
acts of speech</em>, under some conditions.</p>
<p>Also, sometimes violence has to be initiated against someone who is <em>not</em> being violent against ourselves:
if someone is attacking (or threatening to attack) someone else, sometimes the right thing to do is to intervene
to (physically) prevent the aggressor from causing (more) harm, <em>even if we were not threatened or damaged ourselves</em>.
That intervention may include restraining their freedom (against Axiom 1) or being violent towards them (against
Axiom 3).</p>
<p>To this, the clever libertarian could respond:</p>
<blockquote><p><em>“Ah!
Of course we must help those who are being abused.
But what would happen in such scenario is that the actual or potential victim would ask me to help them,
that call for help would be our free ‘contract’, and therefore by attacking the attacker
I'm merely fulfilling my contract with the victim and technically not</em> initiating <em>violence myself, but</em>
defending <em>the victim</em> by proxy.
<em>No contradicting any of the axioms here.”</em></p></blockquote>
<p>To which I would reply:</p>
<p>First of all, notice that, according to you, “violence by proxy through the State” being bad is
a corollary of Axiom 3 and no justification for that is given, but violence by proxy through
something-other-than-a-State being bad is not.
Why?
What if that something-other-than-a-State is a group of individuals, all agreeing freely to collectively defend
a potential victim through violence?
What if it's a corporation?
What if it's all the inhabitants of some territory?
What if just 57% of those inhabitants want to use violence to defend that victim in some other territory,
but at the same time all inhabitants of the land have an ongoing compact by which they pool together some
resources long-term (call that a “military”), decide to use those resources collectively, and agree
to delegate some decision-making to a temporary body of institutions or special individuals (call that
a “democracy”)?
Perhaps Axiom 3 isn't sufficient, and we need a clear way to distinguish the evil State from other forms
of collective action that look very similar to it?</p>
<p>But most importantly&nbsp;—&nbsp;and even if we granted the distinction between being violent as a State
(forbidden) and being violent as a free collective of individuals to defend a victim (good)&nbsp;—&nbsp;the
“free contract” and the “victim defending themselves by proxy” provisions do not hold, either.</p>
<p>A victim may lack the knowledge, the resources, or the capacity to formally ask for help.
By the victim's own worldview or framework, they may not even know that they are being subject to violence,
or being kept down by an implicit threat of violence.
The victim may not know what is theirs to keep in the first place, or that a different state of affairs is possible
(think colonialism, extractive institutions, illiteracy, status quo bias).
The victim may not know that we exist, what resources we have, or that we would be willing to help them.
So waiting for the victim, or potential victim, to send us that e-mail with their plea for help and the attached term
sheet before we lift a finger to defend them may be unrealistic and immoral.</p>
<p>The victim, as a group of individuals (call that a “country”), may be so damaged by the aggressor already
that they lack the coordination resources (institutions, infrastructure) to discuss their situation, delegate to
special individuals, broadcast a call for help, and negotiate the terms of that “contract for help”
with another country.
That country may be in such a dire situation that surviving another day always take precedence over deploying
the resources needed to hold a referendum to elect the Axiom 3 National Comittee and then summon it to discuss
whether and how to ask other countries for help.</p>
<p>But this “framework” can't contain all of (good) economics, either.
“We must regulate this market” is sometimes a legit proposition, even if it “violates Axiom 4”.
Air would be polluted and fisheries would be depleted in libertarian utopia, too.
Externalities need regulation.</p>
<p>Abusive monopolies need forces external to the market to be prevented, too.
Even under perfect competition and perfect symmetry of information (and those conditions are rarely, if ever, met),
monopolies can arise as a consequence of chance, first-mover advantage, network effects, or coordination problems.
Bad monopolies have to be broken.
Not even <strong>Peter Thiel</strong> (perhaps <a href="https://en.wikipedia.org/wiki/Zero_to_One" target="_blank" rel="noopener noreferrer" class="">the most staunch defender of monopolies</a>)
is in favour of <em>all</em> monopolies
(<a href="https://www.startuparchive.org/p/peter-thiel-explains-why-monopolies-are-not-always-bad" target="_blank" rel="noopener noreferrer" class="">“if you told me there was a monopoly that was going to stop all innovation and squash everybody
for the next 100 years, that's probably a pretty unhealthy dynamic.
[…]
I would be disturbed if you had a permanent
monopoly”</a>).</p>
<p>Let's see other ways this particular “framework” is very far from being “sufficient to analyse any
economic, political, or social discourse”.
Think of the following scenarios.</p>
<p>According to the framework, self-defence is permitted, private property is sacred, assets such as land and weapons
can be traded freely.
From this follows that I can store a knife, or a collection of rifles, in my house.
What if I'm worth <a href="https://www.forbes.com/real-time-billionaires/" target="_blank" rel="noopener noreferrer" class="">in the vicinity of a trillion monetary units</a>,
acquire archipelagos across the planet, and decide to manufacture or store a nuclear arsenal and the most potent
biological weapons in those islands?
Which of the axioms prevents someone from doing that?
(If your answer is: “none of them, and that is fine”, then this is where I leave the debate.
I have used this “nukes in the shed” thought experiment in the past to evaluate objectivists and
anarchists I met, and it proved very efficient in telling serious thinkers and dogmatists apart.)</p>
<p>What if another restless billionaire (or a few million rich people pooling their resources together) decide to buy
the most cherished cultural artefacts in the world and use them to fuel a bonfire, for fun?
After all, Leonardo da Vinci's Codex Leicester, many paintings by Rembrandt, the rights to all the songs by
The Beatles or to One Hundred Years of Solitude&nbsp;—&nbsp;those are all private property, right?
No problem vaporising every trace of The Lord of the Rings and all associated cultural products from the
surface of the Earth.
This comprehensive framework would sanction our naughty billionaire's pet project.
(And since I dare to object to this, I must be “urinating in your brain”.)</p>
<p>How does the libertarian pentalogue help us adjudicate fair historical reparations for people spread across disputed
lands for generations?
How does it illuminate the tensions between the autonomy of infants or other dependants versus their tutors'?
How exactly does it solve the trolley problem, unambiguously, in all its variants?
How does it settle, once and for all, capital punishment, the ticking-bomb scenario, abortion,
population ethics, guns versus butter, Omelas?</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="3-consent-and-the-social-contract">3. Consent and the social contract<a href="https://blog.tripu.info/theory-of-everything#3-consent-and-the-social-contract" class="hash-link" aria-label="Direct link to 3. Consent and the social contract" title="Direct link to 3. Consent and the social contract" translate="no">​</a></h2>
<p>At this point, the clever libertarian may point out that even if some of the above interventions and exceptions
to the axioms may yield benefits to society, and even if he may agree that they are the ethical thing to do,
they are vitiated as long as they are <em>imposed</em> on people without their explicit consent.
States are imposed on us, citizens don't consent to them, and the social contract is a fraud.</p>
<p>That clever libertarian is not wrong.
As libertarian-adjacent myself, I am sympathetic to those arguments.
And yet.</p>
<p>The vast majority of us, disgruntled with “the system” as we are, nevertheless opt to live within it.
It's true that we do not choose to be born into a specific jurisdiction, but it's also true that most people
don't move to a different one.
Why?</p>
<p>The majority of people don't become hermits or rebels: instead, they own cars, pursue degrees, sign mortgages,
use passports, are tied to phone numbers, request public subsidies, drink water from the tap,
and call emergency services when they are needed.
Ugly as it sounds, as long as we participate in and gain something from society, we owe society <em>something</em>,
implicitly.</p>
<p>Even if you think you owe only your parents, they in turn benefitted from so many others
(your parents were no hermits, either).
Besides, nobody's a true hermit.
Even if you retired to a mountaintop, you'd travel there by paths and roads opened by many others, and
ultimately rely on resistant crops, useful animal breeds, batteries, water purification, antibiotics and
so many other things discovered or invented generations before your time.
At some level, it's wrong to think that one doesn't owe anything to the human species as a whole simply
because one already pays for all the goods and services they consume.</p>
<p>If nothing else, you benefit from accumulated culture and language.</p>
<p>Yes, in theory you could change the social contract.
But in theory you could also change English to replace the word “partisanship” with “xuf”,
which is shorter and therefore easier to type, and would thus benefit everyone.
Or you could have everyone switch at once to using Finnish (which is one of the most information-dense and least
ambiguous natural languages) to be more efficient in our communication.
Yet you're stuck with “partisanship” (and probably with English too) because: tradition, individual tastes,
coordination problems.</p>
<p>We all owe something to society, if only because there are matches to make fire, because there's the Pantheon, and
because there are thousands of libraries, each preserving thousands of useful ideas from the past, all at our disposal.</p>
<p>Dogmatic libertarians ignore that there are <em>implicit</em> contracts, across time and across space.
Contracts that we don't sign (that we <em>couldn't</em> sign), but have to be honoured nevertheless.
Across space, for instance, because a victim may live on the other side of the planet, ignore that we exist and that
we can help, and never communicate with us.
Across time, because people who are long dead decided to donate to us Indo-European languages, the Encyclopedia,
markets, institutions, a forest, the town square, the metric system, musical notation… so much that we benefit
from.</p>
<p>What's our end of the bargain in those contracts that we did not sign?
Respect that inheritance, enrich it even further, pass it along to future generations, and help those in need.
In more specific terms, it may be: help maintain that forest, produce more music to contribute to the commons,
take care of others, preserve the past, advance scientific discoveries for the common good (either directly or by
funding scientific institutions), give away a chunk of our wealth to keep the compact alive.
That's what all those other signatories of the “contract” from centuries ago would have asked from us
in return, had we had the opportunity to actually negotiate with them.</p>
<p>If you object to this framing, and regard implicit contracts as vacuous nonsense to defend statism, consider this
other thought experiment.</p>
<p>You are hiking alone, high up in the snowy mountains, when a storm breaks.
You spend hours battling the icy weather, completely lost in the blizzard, and after a day or two you are exhausted
and about to collapse and die.
Suddenly, you see a refuge in the rock.
Being such a good libertarian, the first thing you do is try to recall if you own a cabin in the mountain, notice
that you do not, and from that infer that this cabin is someone else's sacrosanct private property.
You wouldn't dare forcing the door to the cabin, but you peer at the window and can see through the misty glass a
medical kit, blankets, fuel, matches, canned food, batteries, a radio, an SOS flare… in sum, everything
that would save your life.
This is clearly an emergency shelter that someone built and equipped for themselves or for others.</p>
<p><img decoding="async" loading="lazy" src="https://upload.wikimedia.org/wikipedia/commons/a/a7/Cabin_in_the_snow%2C_Yukon_Territory%2C_between_1903_and_1906_%28AL%2BCA_7084%29.jpg" alt="Lifesaver" class="img_ev3q"></p>
<p>A dogmatist we-signed-no-contract-here libertarian would have to curl at the door of the cabin and resign to die,
unable to accept neither obligations nor privileges towards someone else's property&nbsp;—&nbsp;no matter how
dire the situation.
Someone who believed in implicit contracts, on the other hand, would recognise the situation as an implicit contract,
and <em>agree</em> to the reasonable terms of the deal.</p>
<p>The deal, in this case, could take different forms.
Perhaps the refuge was truly intended for its owner only, the door was locked, and the hiker had to break in to
save his life.
Perhaps the door was unlocked and the hiker found a note on the table welcoming him to enter and to make use of
everything, for free.
Or perhaps the builder of the shelter asks on his note for something in return.
Like, pay him some sum for the service when the hiker is back to safety.
Or, return in the future to restock the shelter and leave it ready for the next mountaineer in distress.
Or, sacrifice your eldest and devote the rest of your life to worshipping Loki.
Whatever the particulars, the right thing to do in this situation is to recognise the implicit contract in front
of your eyes, and agree to it, in full or in part.</p>
<p>What is a State, if not an implicit contract across time and space, with all those who made it possible for us
to be alive in the first place and with the resources to complain about it?</p>
<p>Remember how I said that our ancestors passed along to us libraries, inventions, institutions and ideas, all
useful things at our disposal for free?
Well, it's bigger than that: our ancestors decided to leave us <em>an entire planet full of stuff</em>, when they
were not obligated to leave behind <em>anything at all</em>.</p>
<p>Think about it.
If you so believe in private property, you have to admit that twenty or thirty generations ago, the entire
world belonged to a few million human beings.
After all, there was no-one else around, so whose else would it be?
Opting to leave behind some of that (let alone <em>most</em> of that) for distant descendants that they would never meet
(let alone for the descendants of <em>others</em>)&nbsp;—&nbsp;instead of hunting, eating, burning, defacing,
burying, blowing it all up&nbsp;—&nbsp;is the ultimate implicit contract with the future.
You can call that contract “humanity”,  “culture”, “nation”,
“State”… it does not change the fact that we owe at least some loyalty to it.</p>
<p>Modern nation-states, imperfect and unjust as they may be, are the Schelling point our species devised to
solve civilisation long-term.
And they are pretty decentralised: limited geographically and historically, always in flux,
competing against each other for the best model.
To abolish the State overnight is no less an act of dangerous social engineering than to expand its reach
towards totalitarianism.</p>
<p>Note that this reasoning does <em>not</em> defend that all implicit contracts are fair (or that all States are always
justified in their actions).
If the State imposes abusive laws, or burdens that are too onerous, of course the right options (after having
fought to change that via the State's own mechanisms) are voting with our feet, black markets, civil disobedience,
boycott, and ultimately revolution.</p>
<p>When the owner of the refuge demanded that you kill your first-born and waste the rest of your life,
you were justified in agreeing to an <em>amended</em> version of his original contract.
If you trespassed to save your life and there was no welcome note on the table, you are bound by an implicit
contract to sufficiently compensate the owner for the troubles you caused him (and the owner is bound by
the same contract to be satisfied with that).
The ancestors of your nation condemned all albinos, or all women, or all Christians, to a life of misery?
Of course that implicit contract is null and void.</p>
<p>(If you are now wondering what is The One Missing Axiom to adjudicate whether an implicit contract is
fair or not, the next section is for you.)</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="4-its-complicated">4. It's complicated<a href="https://blog.tripu.info/theory-of-everything#4-its-complicated" class="hash-link" aria-label="Direct link to 4. It's complicated" title="Direct link to 4. It's complicated" translate="no">​</a></h2>
<p>Perhaps the author's reaction to all this is to say:</p>
<blockquote><em><p><em>“Well, of course.
For the sake of brevity, I left out the provision that using violence to defend a third party is also acceptable.
And I concede that I forgot this or that edge case.
We can amend that to avoid ambiguity.
But the five Axioms work, in essence.”</em></p></em></blockquote>
<p>Our answer should be: no, but that proves that the whole project is misguided in the first place.
You don't get it.
It's not one or two special cases.
It's not about polishing the five Axioms, or realising that a sixth one is needed.
It's that <em>humanity is all edge cases and ambiguity, from end to end, all day long</em>.
That's why totalising efforts like this one are doomed to fail, every time.</p>
<p>Every attempt to reduce any of the social sciences to a simple set of principles is doomed to fail.
In moral philosophy, in political philosophy, in economics, in sociology.</p>
<p>Here's a good heuristic that support discarding by default any Theory of Everything: there are many books.
Like, <em>many, many books</em> (“thousands of pages, dissertations, schools of thought, movements,
counter-movements”).
The best minds over millennia poured themselves into those thorny questions.
Is all that “a muddled mess in which nobody knows what is true any more”?
Not quite.
Most of those thinkers were truly onto something, and we have built collectivelly on top of their insights.
And yet random freshmen with a penchant for <strong>Ayn Rand</strong> think they have figured it all out.</p>
<p>Apart from that, that post included many other red flags:
“the whole thing comes down to…”,
“the test is simple”,
“that is all”,
“no need for [insert influential books, thinkers or disciplines]”.
And, worst of all: “humanity is simple”.
That last sentence alone should invalidate any discourse.</p>
<p>This is not meant to be a critique of libertarianism per se.
<a href="https://slatestarcodex.com/2017/02/22/repost-the-non-libertarian-faq/" target="_blank" rel="noopener noreferrer" class="">Others have written that post much better than I could dream.</a>
And besides, like I said, I generally like the libertarian impulse (at least in prosperous welfare societies, the fight for
smaller States, more individual autonomy and privacy, and lower taxes is directionally correct).</p>
<p>If I have a conclusion, it's that all of us naturally rebel against the messiness of human nature, and of the universe at large.
That includes the best minds of the last three thousand years.
It is statistically unlikely that anyone of us is better than all of them.</p>
<div class="theme-admonition theme-admonition-note admonition_xJq3 alert alert--secondary"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"></path></svg></span><abbr title="Intellectual Property">IP</abbr>&nbsp;</div><div class="admonitionContent_BuS1"><p>AI tools were used only for research and for syntax checking.<br>
<em>Yarn ball</em>: <a href="https://commons.wikimedia.org/wiki/File:Skein_-_Museo_Egizio_(Turin)_S_7791_p01.jpg" target="_blank" rel="noopener noreferrer" class="">Wikimedia (Creative Commons)</a>.<br>
<em>Cabin in the snow</em>: <a href="https://commons.wikimedia.org/wiki/File:Cabin_in_the_snow,_Yukon_Territory,_between_1903_and_1906_(AL%2BCA_7084).jpg" target="_blank" rel="noopener noreferrer" class="">Wikimedia (public domain)</a>.</p></div></div>]]></content>
        <category label="in-English" term="in-English"/>
        <category label="philosophy" term="philosophy"/>
        <category label="economics" term="economics"/>
        <category label="politics" term="politics"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[April 2026, second fortnight]]></title>
        <id>https://blog.tripu.info/2026-april-2</id>
        <link href="https://blog.tripu.info/2026-april-2"/>
        <updated>2026-04-30T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[(&larr; See the first fortnight)]]></summary>
        <content type="html"><![CDATA[<p>(← See the <a class="" href="https://blog.tripu.info/2026-april-1">first fortnight</a>)</p>
<figure><a href="https://blog.tripu.info/img/2026/april-16.jpeg"><img src="https://blog.tripu.info/img/2026/april-16.jpeg" alt="2026-04-16"></a><figcaption><p><strong>Thu 16<sup>th</sup></strong><br>
Loving my commute again (revising some <em>kanji</em>).</p></figcaption></figure>
<figure><a href="https://blog.tripu.info/img/2026/april-17.jpeg"><img src="https://blog.tripu.info/img/2026/april-17.jpeg" alt="2026-04-17"></a><figcaption><p><strong>Fri 17<sup>th</sup></strong><br>
Running in good weather (~6.1 km in ~36′).</p></figcaption></figure>
<figure><a href="https://blog.tripu.info/img/2026/april-18.jpeg"><img src="https://blog.tripu.info/img/2026/april-18.jpeg" alt="2026-04-18"></a><figcaption><p><strong>Sat 18<sup>th</sup></strong><br>
With my dad and my wife, sorting through some <em>bladder campion</em> (aka <em>maiden's tears</em>) that my dad picked from his garden.</p></figcaption></figure>
<figure><a href="https://blog.tripu.info/img/2026/april-19.jpeg"><img src="https://blog.tripu.info/img/2026/april-19.jpeg" alt="2026-04-19"></a><figcaption><p><strong>Sun 19<sup>th</sup></strong><br>
130-km-long biking route.</p></figcaption></figure>
<figure><a href="https://blog.tripu.info/img/2026/april-20.jpeg"><img src="https://blog.tripu.info/img/2026/april-20.jpeg" alt="2026-04-20"></a><figcaption><p><strong>Mon 20<sup>th</sup></strong><br>
Yearly MOT.</p></figcaption></figure>
<figure><a href="https://blog.tripu.info/img/2026/april-21.jpeg"><img src="https://blog.tripu.info/img/2026/april-21.jpeg" alt="2026-04-21"></a><figcaption><p><strong>Tue 21<sup>st</sup></strong><br>
Reading in bed (<a href="https://www.goodreads.com/review/show/2203579681" target="_blank" rel="noopener noreferrer" class=""><em>The Three-Body Problem</em></a>).</p></figcaption></figure>
<figure><a href="https://blog.tripu.info/img/2026/april-22.jpeg"><img src="https://blog.tripu.info/img/2026/april-22.jpeg" alt="2026-04-22"></a><figcaption><p><strong>Wed 22<sup>nd</sup></strong><br>
Meetup with my <em>beautiful nerds</em> (as <strong>Roman Mars</strong> would say).</p></figcaption></figure>
<figure><a href="https://blog.tripu.info/img/2026/april-23.jpeg"><img src="https://blog.tripu.info/img/2026/april-23.jpeg" alt="2026-04-23"></a><figcaption><p><strong>Thu 23<sup>rd</sup></strong><br>
Dressed up and on wheels!</p></figcaption></figure>
<figure><a href="https://blog.tripu.info/img/2026/april-24.jpeg"><img src="https://blog.tripu.info/img/2026/april-24.jpeg" alt="2026-04-24"></a><figcaption><p><strong>Fri 24<sup>th</sup></strong><br>
High-speed train to Valladolid to spend the weekend with old friends.</p></figcaption></figure>
<figure><a href="https://blog.tripu.info/img/2026/april-25.jpeg"><img src="https://blog.tripu.info/img/2026/april-25.jpeg" alt="2026-04-25"></a><figcaption><p><strong>Sat 25<sup>th</sup></strong><br>
The aforementioned old friends (we met twenty-four years ago, during our Erasmus stay).</p></figcaption></figure>
<figure><a href="https://blog.tripu.info/img/2026/april-26.jpeg"><img src="https://blog.tripu.info/img/2026/april-26.jpeg" alt="2026-04-26"></a><figcaption><p><strong>Sun 26<sup>th</sup></strong><br>
Back to Madrid.</p></figcaption></figure>
<figure><a href="https://blog.tripu.info/img/2026/april-27.jpeg"><img src="https://blog.tripu.info/img/2026/april-27.jpeg" alt="2026-04-27"></a><figcaption><p><strong>Mon 27<sup>th</sup></strong><br>
Starting to cook dinner.</p></figcaption></figure>
<figure><a href="https://blog.tripu.info/img/2026/april-28.jpeg"><img src="https://blog.tripu.info/img/2026/april-28.jpeg" alt="2026-04-28"></a><figcaption><p><strong>Tue 28<sup>th</sup></strong><br>
Lunch break with <strong>Pedro</strong>.</p></figcaption></figure>
<figure><a href="https://blog.tripu.info/img/2026/april-29.jpeg"><img src="https://blog.tripu.info/img/2026/april-29.jpeg" alt="2026-04-29"></a><figcaption><p><strong>Wed 29<sup>th</sup></strong><br>
Afternoon snack straight after school with the kids.</p></figcaption></figure>
<figure><a href="https://blog.tripu.info/img/2026/april-30.jpeg"><img src="https://blog.tripu.info/img/2026/april-30.jpeg" alt="2026-04-30"></a><figcaption><p><strong>Thu 30<sup>th</sup></strong><br>
Breakfast with friends.</p></figcaption></figure>]]></content>
        <category label="in-English" term="in-English"/>
        <category label="daily-photo" term="daily-photo"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[April 2026, first fortnight]]></title>
        <id>https://blog.tripu.info/2026-april-1</id>
        <link href="https://blog.tripu.info/2026-april-1"/>
        <updated>2026-04-20T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[For the nineteenth year in a row,]]></summary>
        <content type="html"><![CDATA[<p>For the <a href="https://www.flickr.com/photos/tripu/collections/72157616151140465/" target="_blank" rel="noopener noreferrer" class="">nineteenth year in a row</a>,
I'm taking one photo every day during the month of April.</p>
<p>Here is the first half of the month:</p>
<figure><a href="https://blog.tripu.info/img/2026/april-01.jpeg"><img src="https://blog.tripu.info/img/2026/april-01.jpeg" alt="2026-04-01"></a><figcaption><p><strong>Wed 1<sup>st</sup></strong><br>
The kids, playing near my parents'.</p></figcaption></figure>
<figure><a href="https://blog.tripu.info/img/2026/april-02.jpeg"><img src="https://blog.tripu.info/img/2026/april-02.jpeg" alt="2026-04-02"></a><figcaption><p><strong>Thu 2<sup>nd</sup></strong><br>
Easter in Granada.</p></figcaption></figure>
<figure><a href="https://blog.tripu.info/img/2026/april-03.jpeg"><img src="https://blog.tripu.info/img/2026/april-03.jpeg" alt="2026-04-03"></a><figcaption><p><strong>Fri 3<sup>rd</sup></strong><br>
Hiking around a Moorish castle from the 14<sup>th</sup> century in Jaén.</p></figcaption></figure>
<figure><a href="https://blog.tripu.info/img/2026/april-04.jpeg"><img src="https://blog.tripu.info/img/2026/april-04.jpeg" alt="2026-04-04"></a><figcaption><p><strong>Sat 4<sup>th</sup></strong><br>
Driving back home.</p></figcaption></figure>
<figure><a href="https://blog.tripu.info/img/2026/april-05.jpeg"><img src="https://blog.tripu.info/img/2026/april-05.jpeg" alt="2026-04-05"></a><figcaption><p><strong>Sun 5<sup>th</sup></strong><br>
Hiking in <em>La Pedriza</em>.</p></figcaption></figure>
<figure><a href="https://blog.tripu.info/img/2026/april-06.jpeg"><img src="https://blog.tripu.info/img/2026/april-06.jpeg" alt="2026-04-06"></a><figcaption><p><strong>Mon 6<sup>th</sup></strong><br>
At the gym.</p></figcaption></figure>
<figure><a href="https://blog.tripu.info/img/2026/april-07.jpeg"><img src="https://blog.tripu.info/img/2026/april-07.jpeg" alt="2026-04-07"></a><figcaption><p><strong>Tue 7<sup>th</sup></strong><br>
Annual check for my bike.</p></figcaption></figure>
<figure><a href="https://blog.tripu.info/img/2026/april-08.jpeg"><img src="https://blog.tripu.info/img/2026/april-08.jpeg" alt="2026-04-08"></a><figcaption><p><strong>Wed 8<sup>th</sup></strong><br>
Picking up the kids from school.</p></figcaption></figure>
<figure><a href="https://blog.tripu.info/img/2026/april-09.jpeg"><img src="https://blog.tripu.info/img/2026/april-09.jpeg" alt="2026-04-09"></a><figcaption><p><strong>Thu 9<sup>th</sup></strong><br>
A break at the office.</p></figcaption></figure>
<figure><a href="https://blog.tripu.info/img/2026/april-10.jpeg"><img src="https://blog.tripu.info/img/2026/april-10.jpeg" alt="2026-04-10"></a><figcaption><p><strong>Fri 10<sup>th</sup></strong><br>
Grocery-shopping with <em>Miss Entropy</em>.</p></figcaption></figure>
<figure><a href="https://blog.tripu.info/img/2026/april-11.jpeg"><img src="https://blog.tripu.info/img/2026/april-11.jpeg" alt="2026-04-11"></a><figcaption><p><strong>Sat 11<sup>th</sup></strong><br>
<a href="https://rufustf.com/" target="_blank" rel="noopener noreferrer" class="">Rufus T. Firefly</a> live at <em>La Riviera</em> with my wife.</p></figcaption></figure>
<figure><a href="https://blog.tripu.info/img/2026/april-12.jpeg"><img src="https://blog.tripu.info/img/2026/april-12.jpeg" alt="2026-04-12"></a><figcaption><p><strong>Sun 12<sup>th</sup></strong><br>
Theatre for the kids.</p></figcaption></figure>
<figure><a href="https://blog.tripu.info/img/2026/april-13.jpeg"><img src="https://blog.tripu.info/img/2026/april-13.jpeg" alt="2026-04-13"></a><figcaption><p><strong>Mon 13<sup>th</sup></strong><br>
Working from home.</p></figcaption></figure>
<figure><a href="https://blog.tripu.info/img/2026/april-14.jpeg"><img src="https://blog.tripu.info/img/2026/april-14.jpeg" alt="2026-04-14"></a><figcaption><p><strong>Tue 14<sup>th</sup></strong><br>
Loving my commute.</p></figcaption></figure>
<figure><a href="https://blog.tripu.info/img/2026/april-15.jpeg"><img src="https://blog.tripu.info/img/2026/april-15.jpeg" alt="2026-04-15"></a><figcaption><p><strong>Wed 15<sup>th</sup></strong><br>
Taking the kids to school.</p></figcaption></figure>
<p>(→ Continue to the <a class="" href="https://blog.tripu.info/2026-april-2">second fortnight</a>)</p>]]></content>
        <category label="in-English" term="in-English"/>
        <category label="daily-photo" term="daily-photo"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[2026 resolutions Q1 checkpoint]]></title>
        <id>https://blog.tripu.info/2026-q1-checkpoint</id>
        <link href="https://blog.tripu.info/2026-q1-checkpoint"/>
        <updated>2026-04-12T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[This year, the oracles advised me thus:]]></summary>
        <content type="html"><![CDATA[<p>This year, <a class="" href="https://blog.tripu.info/2026-resolutions">the oracles advised me thus</a>:</p>
<blockquote>
<p><em>“Set calendar reminders for April 1, July 1, and October 1 to review progress.
Adjust goals that aren't working rather than carrying them as dead weight all year.”</em></p>
</blockquote>
<p>And I decided it was a good idea.</p>
<p>So, here goes my quarterly review.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="reading">Reading<a href="https://blog.tripu.info/2026-q1-checkpoint#reading" class="hash-link" aria-label="Direct link to Reading" title="Direct link to Reading" translate="no">​</a></h2>
<p><strong>Read mostly short books</strong>:
👍
that's what I'm doing, for the most part.
Average book read in Jan–Mar: 140 pages long.</p>
<p><strong>Read eight physical books that I had selected</strong>:
👍
looking good; I have already read four of those.</p>
<p><strong>On Goodreads, read at least ten books</strong>:
👍
looking very good; I have already read eight (although three
of those were graphic novels) and I'm halfway through number nine.</p>
<p><strong>Download some long-form blog posts that I have been saving
over the years and read them on the reMarkable or the Kindle</strong>:
👍
I did that and read a bunch of articles, mostly by <strong>Scott Alexander</strong>.
I still have many for the rest of the year.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="writing">Writing<a href="https://blog.tripu.info/2026-q1-checkpoint#writing" class="hash-link" aria-label="Direct link to Writing" title="Direct link to Writing" translate="no">​</a></h2>
<p><strong>Finish the draft of my short story during the first quarter of the year</strong>:
☹️
I wrote quite a lot (for my meagre standards), and added some good pages.
I did so while commuting, and a few times at night in bed.
But I missed my self-imposed deadline.
So <strong>I'm granting myself an extension of one additional quarter</strong>.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="drawing-and-painting">Drawing and painting<a href="https://blog.tripu.info/2026-q1-checkpoint#drawing-and-painting" class="hash-link" aria-label="Direct link to Drawing and painting" title="Direct link to Drawing and painting" translate="no">​</a></h2>
<p>Nil.
(But there wasn't a proper resolution about this, anyway.)</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="nutrition">Nutrition<a href="https://blog.tripu.info/2026-q1-checkpoint#nutrition" class="hash-link" aria-label="Direct link to Nutrition" title="Direct link to Nutrition" translate="no">​</a></h2>
<p><strong>Be a better vegetarian, make a conscious effort to plan meals</strong>:
😐
Slight improvement over my baseline, but not as much as I had hoped for.</p>
<p><strong>Eat a little better, cut on bad food</strong>:
😐
I ate almost nothing of what I consider “bad” for almost a whole
quarter.
(The fact that I am now wearing clear aligners 24/7 except while eating, and
that I have to wash them properly after meals, was unexpected help:
it's easier to avoid snacks and to stick to regular meals that way.)
But I'm not giving myself a high mark because in the last week or two I had a
partial relapse.</p>
<p>On an impromptu, I stayed away from <strong>coffee</strong> for two or three months.
I never consumed much; but sometimes I have the occassional night when sleep doesn't
come easy, and I always wondered to what extent caffeine was messing with my
circadian rhythm.
One day in January I realised coffee falls into the “bad” category after
all, and I simply stopped taking it altogether.</p>
<p>The results?
I think I noticed fewer sleepy days and a bit less difficulty getting to sleep,
and I wish I could report significant improvements&nbsp;—&nbsp;but the truth
is it wasn't dramatic, and the positive effects I think I saw could be
caused entirely by autosuggestion, or by chance over such a short period of time.</p>
<p><strong>I'm reflecting about this whole  resolution now</strong>, because I'm not convinced the
benefits justify the sacrifices, and eating what I decided I want to eat doesn't
come as easy to me as, say, reading what I decided I want to read.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="exercise">Exercise<a href="https://blog.tripu.info/2026-q1-checkpoint#exercise" class="hash-link" aria-label="Direct link to Exercise" title="Direct link to Exercise" translate="no">​</a></h2>
<p><strong>Keep on running and weight-lifting, work out at the gym at least twice a week and do it better</strong>:
😐
The good is that I'm exercising roughly as often as I did in 2025 (once every three days),
that I'm going to the gym as often (once every five days), and that every time I work out I spend
more time than I used to (typically 55′, all exercises combined) and I push myself
a little more than I used to.
The bad is that I didn't achieve going to the gym twice a week or more (I fell short by
nine session in Q1).</p>
<p>No trace of a third sport, although this year I went <strong>skiing</strong> again
(two trips, five days of ski in total).</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="work">Work<a href="https://blog.tripu.info/2026-q1-checkpoint#work" class="hash-link" aria-label="Direct link to Work" title="Direct link to Work" translate="no">​</a></h2>
<p><strong>Announce, by the end of February, my business project</strong>:
☹️
I underestimated how busy I would be with my new job.
And working on this side project is a task that is particularly difficult to
squeeze into my daily routine (as opposed to, say, reading or writing): it's
something I need to do at home, on my personal computer, in my spare time,
when family and chores do not distract me.
This is a clear “F”.
For this, too, <strong>I'm granting myself an extension of one additional quarter</strong>.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="philanthropy">Philanthropy<a href="https://blog.tripu.info/2026-q1-checkpoint#philanthropy" class="hash-link" aria-label="Direct link to Philanthropy" title="Direct link to Philanthropy" translate="no">​</a></h2>
<p><strong>Give away 10% of my gross income to charities working on poverty and global health</strong>:
👍
Done.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="private-resolutions">Private resolutions<a href="https://blog.tripu.info/2026-q1-checkpoint#private-resolutions" class="hash-link" aria-label="Direct link to Private resolutions" title="Direct link to Private resolutions" translate="no">​</a></h2>
<ul>
<li class="">#B daily: 👍 Most days I tick this box.</li>
<li class="">#D weekly: 👍 Done all weks.
This is both Good and Easy.</li>
<li class="">#F: ☹️ Nope.
This needs a little bit of preparation, which I haven't done yet.</li>
<li class="">#J: 👍 Achieved.</li>
<li class="">#P: 👍 Mostly achieved.</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="other-changes-or-experiments">Other changes or experiments<a href="https://blog.tripu.info/2026-q1-checkpoint#other-changes-or-experiments" class="hash-link" aria-label="Direct link to Other changes or experiments" title="Direct link to Other changes or experiments" translate="no">​</a></h2>
<p><strong>Since March 10 or so, and for one month, I did not listen to any podcasts.</strong></p>
<p>I had not planned to do this, nor was it a new year's resolution.
One day I simply decided that my ears would benefit from fewer hours of
earbuds/earphones/headset, and on top of that I wanted to experiment
with being more “present”: too often I do not pay attention
to the environment or to what I am doing because I am focused on a podcast.
Sometimes at home doing household chores I do not hear a conversation
in some other room or my kids saying something to me because I am
plugged in to a podcast.
And walking on the street I rarely pay attention to life around me
or let my mind wander aimlessly because there is always some
voice in my ear.</p>
<p>A couple random nudges from life recently made me think again of the importance
of having time to think freely, moments when one is truly
“doing nothing” and thus open to inspiration and to
whimsical thoughts (and to rest).
And so I decided to cut on podcasts&nbsp;—&nbsp;radically, of course.</p>
<p>I have to say so far I am not missing them.
Every few days I check and I see that the queue of new episodes has grown
with lots of promising monologues and debates from some thinkers I love…
and I mercilessly delete them in bulk.</p>
<p>Perhaps podcasts were not such an integral part of my being up-to-date, of
my learning, after all.
Perhaps the distance between podcasts and toxic “news” is not
so great.
I have not made up my mind yet; I'll continue with the experiment and see.</p>]]></content>
        <category label="in-English" term="in-English"/>
        <category label="personal" term="personal"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[My only axiom]]></title>
        <id>https://blog.tripu.info/my-only-axiom</id>
        <link href="https://blog.tripu.info/my-only-axiom"/>
        <updated>2026-02-15T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[By the time 12 [sic] Rules for Life became a well-known book worldwide, Jordan Peterson]]></summary>
        <content type="html"><![CDATA[<p>By the time <em>12 [sic] Rules for Life</em> became a well-known book worldwide, <strong>Jordan Peterson</strong>
was already showing the first signs of intellectual decline
(<a href="https://www.youtube.com/watch?v=CmakSLYutYk" target="_blank" rel="noopener noreferrer" class="">“I eat beef, and salt, and water. That's it. And I never cheat. Ever. Not even a little bit”</a>).
Or maybe not yet
(<a href="https://www.youtube.com/watch?v=OT1LOTyFBaY" target="_blank" rel="noopener noreferrer" class="">“There's no such thing as ‘climate’. ‘Climate’ and ‘everything’ are the same word”</a>).
The thing is, I never bothered to read the book.</p>
<p>Not because I thought there would be nothing valuable in it&nbsp;—&nbsp;I
had admired Peterson in the beginning, found myself in agreement with a lot of what
he said back then, and
<a href="https://www.jordanbpeterson.com/blog/" target="_blank" rel="noopener noreferrer" class="">the man is actually a good writer</a>.
But I considered myself sufficiently acquainted with his ideas, having discovered
his <a href="https://www.youtube.com/watch?v=-XvI6Y5Yq8o" target="_blank" rel="noopener noreferrer" class="">earlier public lectures</a>,
his <a href="https://www.youtube.com/watch?v=aMcjxSThD54" target="_blank" rel="noopener noreferrer" class="">first interviews</a>, etc. to
read the book.</p>
<p>After that, it got only worse (the MAGA apologetics, the Biblical nonsense,
the irritating ambiguity around the “God question”, the gratuitous attacks
on individuals), and I <em>definitely</em> did not read the book.</p>
<p><img decoding="async" loading="lazy" src="https://upload.wikimedia.org/wikipedia/commons/thumb/5/5c/Jordan_Peterson_by_Gage_Skidmore.jpg/960px-Jordan_Peterson_by_Gage_Skidmore.jpg" alt="Jordan Peterson" class="img_ev3q"></p>
<p>But since
<a class="" href="https://blog.tripu.info/2026-resolutions#reading">I'm now going through old posts and essays that I had “saved for later”</a>,
the other day I finally read
<a href="https://slatestarcodex.com/2018/03/26/book-review-twelve-rules-for-life/" target="_blank" rel="noopener noreferrer" class=""><strong>Scott Alexander</strong>'s review of <em>12 Rules</em></a>,
where the following quotes from the book caught my attention:</p>
<blockquote>
<p><em>“<strong>What can I not doubt?
The reality of suffering.</strong>
It brooks no arguments.
Nihilists cannot undermine it with skepticism.
Totalitarians cannot banish it.
Cynics cannot escape from its reality.
<strong>Suffering is real, and the artful infliction of suffering on another, for its own sake, is wrong.
That became the cornerstone of my belief.</strong>
Searching through the lowest reaches of human thought and action, understanding my own capacity
to act like a Nazi prison guard or a gulag archipelago trustee or a torturer of children in a dungeon,
I grasped what it meant to ‘take the sins of the world onto oneself.’
Each human being has an immense capacity for evil.
Each human being understands, a priori, perhaps not what is good, but certainly what is not.
And <strong>if there is something that is not good, then there is something that is good.
If the worst sin is the torment of others, merely for the sake of the suffering
produced&nbsp;—&nbsp;then the good is whatever is diametrically opposed to that.
The good is whatever stops such things from happening.</strong>”</em></p>
</blockquote>
<p>And:</p>
<blockquote>
<p><em>“<strong>Consider then that the alleviation of unnecessary pain and suffering is a good.
Make that an axiom: to the best of my ability I will act in a manner that leads to
the alleviation of unnecessary pain and suffering.</strong>
You have now placed at the pinnacle of your moral hierarchy a set of presuppositions and
actions aimed at the betterment of Being.”</em></p>
</blockquote>
<p>This surprised me, because I wouldn't have expected “alleviation of suffering”
to be the pillar of Peterson's metaethics.
Knowing the guy, I would have bet on “God”, “the logos”,
“balance between order and chaos”, or even some off-the-shelf
answers such as “virtue” or “honesty”.
But never “stopping unnecessary pain”.
Peterson is definitely not a consequentialist, let alone a utilitarian.
(I suspect the majority of the population,
<a href="https://en.wikipedia.org/wiki/World_Values_Survey" target="_blank" rel="noopener noreferrer" class="">if asked about their root of morality</a>,
would <em>not</em> use “pain” or “suffering”, either.
They would rather appeal to opposites such as “goodness” or
“niceness”, or to their own version of
<a href="https://plato.stanford.edu/archives/sum2025/entries/moral-theory/#CommSensMora" target="_blank" rel="noopener noreferrer" class="">common-sense morality</a>.)</p>
<p>But not Jordan Peterson.
Apparently, in his core, he is all about “suffering”.
How to square that with the virtue ethics and the deontology he so fiercely defends,
it's a question I couldn't begin to answer.</p>
<p>In any case, and according to those passages above, I guess I can consider him
a fellow <a href="https://www.hedweb.com/negutil.htm" target="_blank" rel="noopener noreferrer" class="">negative utilitarian</a> now…?
Rejoice!</p>
<p>Peterson and I are <a href="https://forum.effectivealtruism.org/topics/negative-utilitarianism" target="_blank" rel="noopener noreferrer" class="">in good company</a>,
including the great <a href="https://www.utilitarianism.com/karl-popper.html" target="_blank" rel="noopener noreferrer" class=""><strong>Karl Popper</strong></a>
and contemporary thinkers such as <strong>David Pearce</strong>
(<a href="https://tripu.medium.com/the-mind-of-david-pearce-e718dd50f3f6" target="_blank" rel="noopener noreferrer" class="">“our overriding ethical obligation is to mitigate and prevent suffering
throughout the living
world”</a>).</p>
<p><img decoding="async" loading="lazy" src="https://upload.wikimedia.org/wikipedia/commons/4/43/Karl_Popper.jpg" alt="Karl Popper" class="img_ev3q"></p>
<p>If I have <em>one axiom</em> on which to base <em>everything else</em>, one belief <em>as close to
certitude</em> as possible, it is that: that suffering is bad, and therefore that
alleviating suffering is good.</p>
<p>Or, as <strong>Manu Herrán</strong> <a href="https://manuherran.com/about-me/" target="_blank" rel="noopener noreferrer" class="">summarises beautifully</a>:</p>
<blockquote>
<p><em>“Less suffering, more happiness, and more life in the Universe.
But in that order.”</em></p>
</blockquote>
<p>So much so, that I harbour the strong secret intuition that someone more intelligent
and more determined than me could (should) be able to reason from first
principles, starting from that single axiom, about the hairiest of moral problems,
and all the way down to the most mundane of decisions.
In other words, there's an unbroken logical chain linking the ethical imperative
to alleviate suffering (on one extreme), and the convenience or not of taking out the
rubbish tonight versus leaving that chore for tomorrow (on the other).
If I were more intelligent and more resolute, I would make that
<a href="https://vita.tripu.info/ethics" target="_blank" rel="noopener noreferrer" class="">a life project</a>.</p>
<p>But I am aware that everyone loves a good Theory of Everything&nbsp;—&nbsp;in
physics as in moral philosophy&nbsp;—&nbsp;and so we are biased in that direction.
The temptation is strong, and it's very easy to be fooled.</p>
<p>There, too, I am <a href="https://www.britannica.com/biography/Derek-Parfit" target="_blank" rel="noopener noreferrer" class="">in good company</a>.</p>
<div class="theme-admonition theme-admonition-note admonition_xJq3 alert alert--secondary"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"></path></svg></span><abbr title="Intellectual Property">IP</abbr>&nbsp;</div><div class="admonitionContent_BuS1"><p>Portrait of Peterson <a href="https://commons.wikimedia.org/wiki/File:Jordan_Peterson_by_Gage_Skidmore.jpg" target="_blank" rel="noopener noreferrer" class="">by Gage Skidmore</a>;
portrait of Popper with <a href="https://commons.wikimedia.org/wiki/File:Karl_Popper.jpg" target="_blank" rel="noopener noreferrer" class="">no known copyright restrictions</a></p></div></div>]]></content>
        <category label="in-English" term="in-English"/>
        <category label="philosophy" term="philosophy"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Microrrelato en ≤140 palabras con dos palabras requeridas]]></title>
        <id>https://blog.tripu.info/microrrelato</id>
        <link href="https://blog.tripu.info/microrrelato"/>
        <updated>2026-01-15T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Nos hablaba con pasión de un futuro radiante y por eso le hicimos nuestro guía.]]></summary>
        <content type="html"><![CDATA[<p>Nos hablaba con pasión de un futuro radiante y por eso le hicimos nuestro guía.
Fue un estadista clarividente y el comandante que nos llevó a la victoria.
El mejor hombre al frente del mejor de los pueblos, el que supo ver la belleza
de nuestras armas.
Regaba con su sonrisa benefactora a nuestros hijos como regaba con racimos de
bombas a los hijos de los otros.
Nos enseñó que solo golpeando podíamos estar seguros, y que era mejor golpear
antes que ellos.
Los campos esterilizados al otro lado del océano y los colgajos de carne de
nuestros enemigos empapando la tierra fueron el dulce precio que compró
nuestra felicidad.
La mano que no tiembla.
El halcón perfecto.
El espejo en que aún hoy se mira nuestro pueblo.
Vaya este microrrelato en su honor, y sea larga su memoria.</p>
<p><img decoding="async" loading="lazy" alt="A Sora-generated illustration for this microstory" src="https://blog.tripu.info/assets/images/microrrelato-a610fb0cf9d1964ba70cfc36508bd421.jpeg" width="1536" height="1024" class="img_ev3q"></p>]]></content>
        <category label="in-Spanish" term="in-Spanish"/>
        <category label="writings" term="writings"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[New year's resolutions for 2026]]></title>
        <id>https://blog.tripu.info/2026-resolutions</id>
        <link href="https://blog.tripu.info/2026-resolutions"/>
        <updated>2026-01-12T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[The answer to the question &ldquo;should I use an LLM for that?&rdquo; is increasingly]]></summary>
        <content type="html"><![CDATA[<p>The answer to the question “should I use an LLM for that?” is increasingly
“hell yeah!”, for almost any given “that”.</p>
<p>In the last three or four weeks, as resolutions for the new year were slowly taking shape
in my head, it hadn't even crossed my mind to draw inspiration from a source other than
my own ideas (and from a few friends,
<a href="https://blog.fidelramos.net/personal/new-years-resolutions-2026" target="_blank" rel="noopener noreferrer" class="">like <strong>Fidel</strong></a>).
To be honest, I wasn't excited about the resolutions I was coming up with:
they felt narrow and a direct continuation of <a class="" href="https://blog.tripu.info/2025-resolutions">last year's</a>.
Then, three days ago, in the middle of the night, I suddenly realised that I am
so present on the interwebs, and I have shared so much information over the years about
interests, hobbies, accomplishments and failures of mine, that a chatbot should be
able to “think” about me and expand my boring set of 2026 goals with
some personalised suggestions that I could use!</p>
<figure><img src="https://blog.tripu.info/img/2026/tripu-hiking.jpeg" alt="tripu hiking yesterday"><figcaption>Yesterday's beautiful morning, hiking with the family not far from home</figcaption></figure>
<p>And so I told <strong>Claude</strong>, <strong>ChatGPT</strong>, <strong>Copilot</strong> and <strong>Gemini</strong>:</p>
<blockquote><em><p>“Help me come up with good new year's resolutions for 2026.</p><p>This is me: [demographics and personal information].
Use the information on my personal web page to find out more about me: <a href="https://tripu.info/" target="_blank" rel="noopener noreferrer" class="">https://tripu.info/</a></p><p>My resolutions for 2025 were these: <a href="https://blog.tripu.info/2025-resolutions" target="_blank" rel="noopener noreferrer" class="">https://blog.tripu.info/2025-resolutions</a> .
And this is how well I did on those resolutions at the end of the year: <a href="https://blog.tripu.info/2025-recap" target="_blank" rel="noopener noreferrer" class="">https://blog.tripu.info/2025-recap</a></p><p>These are the resolutions I have already decided for 2026: [short list of existing ideas].</p><p>Suggest other resolutions to complement these, based on who I am, my situation, and my hobbies.
Cover different aspects of life (health, finances, family life, learning, experiences, work, etc).
Suggest resolutions that align well with the ones I did last year and with the ones I've already
decided for this year -- but suggest also resolutions that are outside my usual ideas and that
might give me fresh perspectives, add variation to my routine, or expand my goals, experiences
or skills in some way.”</p></em></blockquote>
<p>The results were quite interesting, in general.
Gemini was the least helpful.
I give Claude the highest mark; it was the most thoughtful and accurate in its assessment.
These were some of its ideas:</p>
<ul>
<li class="">Claude decided, on its own, to read my site <a href="https://vita.tripu.info/" target="_blank" rel="noopener noreferrer" class="">Vīta</a>
“to understand more about [my] projects and interests”.
Very nice.</li>
<li class="">It understood my failure(s) to study Japanese and provided some useful ideas
(switch textbooks for daily Anki; aim at JLPT N4 in December, not July).</li>
<li class="">It told me to visit Japan, “if finances and family logistics allow”.
Sigh.
That is extremely unlikely this year, but spot-on as an aspiration for me.</li>
<li class="">“Your 2025 mid-year checkpoint was useful but came too late to course-correct. […]
Set calendar reminders for April 1, July 1, and October 1 to review progress.
Adjust goals that aren't working rather than carrying them as dead weight all year.”
So true.</li>
</ul>
<p>A few suggestions were offered by all, or most, of the models:</p>
<ul>
<li class="">Three out of four models told me that my kids are at the “golden age/window/years”
and that I should make the most of that; eg: go hiking with them more often (Gemini told me
they're “old enough to walk decently, young enough to still think hanging out with
you is cool”. Ouch!).</li>
<li class="">The models advised me to take up manual, tactile work or hobbies, for a change: woodwork,
bread baking, calligraphy, etc.</li>
<li class="">Participate in some event like Ludum Dare (“you have an account!”; that is right),
NaNoWriMo (now defunct, but they apparently don't know that), or Inktober
(<a href="https://blog.koalie.net/tag/inktober/" target="_blank" rel="noopener noreferrer" class="">like <strong>Koalie</strong></a>).</li>
<li class="">Complete a “deep dive” into some specific topic; eg: history of Madrid, Stoicism,
Japanese aesthetics.
Read two or three books, and write a synthesis post.</li>
</ul>
<p>Other good ideas:</p>
<ul>
<li class="">Contribute regularly to an open‑source project.</li>
<li class="">One screen-free day per week.
One no‑screens evening per week.</li>
<li class="">Declutter 100 items.
Optimise one system each month.</li>
<li class="">Meditate.</li>
<li class="">Stretch.</li>
</ul>
<p>In the end, incorporating some of those ideas, here go my resolutions for 2026.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="reading">Reading<a href="https://blog.tripu.info/2026-resolutions#reading" class="hash-link" aria-label="Direct link to Reading" title="Direct link to Reading" translate="no">​</a></h2>
<p>This year, for a change, I resolved to read <strong>mostly short books</strong>.</p>
<p>I have already collected eight physical books that I wanted to read for one reason or another
and that are ≤200 pages long.
I'll always find something lovely in the paper format, and these are books that I had already bought
or that were lying around at my parents', so €0,00 and no DRM crap.
I'm looking forward to reading a bit of original Italian again (<strong>Italo Calvino</strong>),
something I don't get to do often.</p>
<p><img decoding="async" loading="lazy" alt="Eight short books" src="https://blog.tripu.info/assets/images/short-books-08c7dc23c30b94a055982df335e8917c.jpeg" width="2312" height="1736" class="img_ev3q"></p>
<p>On Goodreads, I committed to reading <strong>at least ten books</strong> this year.</p>
<p>These are quite modest goals, given my track record.
They don't even feel like goals, more like indulgence.</p>
<p>I will probably also read a few more issues of
<a href="https://www.goodreads.com/series/146415-saga" target="_blank" rel="noopener noreferrer" class=""><em>Saga</em></a>, and I might start with some of the
heavy items on my to-read list, like <strong>Dostoevsky</strong> or <strong>Saint Augustine</strong>&nbsp;—&nbsp;but
I make no commitment to those this year.</p>
<p>I also decided that I'll download some <strong>long-form blog posts</strong> that I have been saving
over the years on <del>Pocket</del> Wallabag and read them <strong>on the reMarkable</strong>.
It's mostly long essays or complex explorations of some topic that really interest
me&nbsp;—&nbsp;but I don't like reading those on a computer screen, and so they keep
piling on.
It's mostly philosophy, economics, science, and <a href="https://www.astralcodexten.com/" target="_blank" rel="noopener noreferrer" class="">Astral Codex Ten</a>
posts or other similarly brilliant stuff from the rationality blogosphere.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="writing">Writing<a href="https://blog.tripu.info/2026-resolutions#writing" class="hash-link" aria-label="Direct link to Writing" title="Direct link to Writing" translate="no">​</a></h2>
<p>My unfinished short story will stay short, but it will stop being unfinished in 2026.
I made sure the latest draft is on my reMarkable and I'll use some of the slots I
usually dedicate to reading (commute time, bed time) to write by hand instead.</p>
<p>I reckon I've written more than half already, and my goal is to have the first version
ready to start requesting feedback and polishing it, so I intend to <strong>finish the draft
during the first quarter of the year</strong>.</p>
<p><img decoding="async" loading="lazy" alt="reMarkable 2 showing some document" src="https://blog.tripu.info/assets/images/remarkable-writing-f88c36af9d792f9c28d6caae00c64bd4.jpeg" width="844" height="1078" class="img_ev3q"></p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="drawing-and-painting">Drawing and painting<a href="https://blog.tripu.info/2026-resolutions#drawing-and-painting" class="hash-link" aria-label="Direct link to Drawing and painting" title="Direct link to Drawing and painting" translate="no">​</a></h2>
<p>One of the presents I received from the family this Christmas is this sketchbook.</p>
<p><img decoding="async" loading="lazy" alt="Sketchbook" src="https://blog.tripu.info/assets/images/sketchbook-768e2e1b00685384f0ac9cf839f92bc6.jpeg" width="1736" height="2312" class="img_ev3q"></p>
<p>Last year, for some reason, I felt compelled to rescue this textbook from my parents'
(is it yours, brother?)</p>
<p><img decoding="async" loading="lazy" alt="Drawing textbook" src="https://blog.tripu.info/assets/images/drawing-textbook-dd9bd80a0a673b37162b89f1a09d485d.jpeg" width="1736" height="2312" class="img_ev3q"></p>
<p>I take those as signals.
Of Something.</p>
<p>I should <strong>take up drawing and painting again</strong>.
<a href="https://flickr.com/photos/tripu/albums/72157678315466382/" target="_blank" rel="noopener noreferrer" class="">I used to like it.</a>
Will I have this year the discipline, and the time?</p>
<p>(And does this hesitancy even count as a resolution?)</p>
<p><img decoding="async" loading="lazy" src="https://live.staticflickr.com/4173/34600209065_3aacc45cd0_c.jpg" alt="One of my old charcoals" class="img_ev3q"></p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="nutrition">Nutrition<a href="https://blog.tripu.info/2026-resolutions#nutrition" class="hash-link" aria-label="Direct link to Nutrition" title="Direct link to Nutrition" translate="no">​</a></h2>
<p>I can't take <strong>Bryan Johnson</strong> seriously; I think he's either a clown, delusional, or a grifter.
But I appreciate
<a href="https://x.com/bryan_johnson/status/2005404233458442480" target="_blank" rel="noopener noreferrer" class="">this post of his</a>
that
<a href="https://blog.fidelramos.net/personal/new-years-resolutions-2026#dont-die" target="_blank" rel="noopener noreferrer" class=""><strong>Fidel</strong> shared</a>.
I like the sound of “don't die” better than the alternative.</p>
<p>In 2026 I'll try (<a class="" href="https://blog.tripu.info/2025-resolutions#nutrition">again</a>) to <strong>be a better vegetarian</strong> and</p>
<blockquote>
<p><em>“to <strong>make a conscious effort to plan meals</strong> more often, […] to eat a little better
[and] to <strong>cut on bad food</strong>.”</em></p>
</blockquote>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="exercise">Exercise<a href="https://blog.tripu.info/2026-resolutions#exercise" class="hash-link" aria-label="Direct link to Exercise" title="Direct link to Exercise" translate="no">​</a></h2>
<p><strong>Keep on running and weight-lifting</strong> throughout the year.
I want to work out at the gym <strong>at least twice a week</strong> (should be thrice),
and do it better this time.</p>
<p>I might sign up for a 10K or a 21K again, but it's not a goal.</p>
<p>It'd also be great if I take up a third sport, like swimming or rock-climbing.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="work">Work<a href="https://blog.tripu.info/2026-resolutions#work" class="hash-link" aria-label="Direct link to Work" title="Direct link to Work" translate="no">​</a></h2>
<p>I'm starting at a new company very soon and that'll keep me extra busy, at least for a while.</p>
<p>And yet, I hereby commit to <strong>announcing at last the business project I've been working on</strong> in
stealth mode for the past six months, intermittently.
I'll publish the web site, the material I've been working on, and its associated social media
accounts.</p>
<p>Since that's long overdue, and already close to completion, I'll do that <strong>by the end
of February</strong>.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="philanthropy">Philanthropy<a href="https://blog.tripu.info/2026-resolutions#philanthropy" class="hash-link" aria-label="Direct link to Philanthropy" title="Direct link to Philanthropy" translate="no">​</a></h2>
<p>This is not a new resolution, but
<a href="https://www.givingwhatwecan.org/about-us/members#lifetime-members-section" target="_blank" rel="noopener noreferrer" class="">an old one</a>:
in 2026 I'll give away 10% of my gross income to
<a href="https://www.givewell.org/charities/top-charities" target="_blank" rel="noopener noreferrer" class="">charities working on poverty and global health</a>.
It'll be my seventh or eighth year in a row.</p>
<p>In my case, that's usually an amount in the upper half of four figures.
Or, put another way, around
<strong><a href="https://ourworldindata.org/cost-effectiveness#how-much-does-it-cost-to-save-someone-s-life" target="_blank" rel="noopener noreferrer" class="">two lives saved per year</a></strong>.</p>
<p>In <a href="https://www.effectivealtruism.org/" target="_blank" rel="noopener noreferrer" class="">Effective Altruism</a> circles, being vocal about one's
impactful donations is not only not taboo, but even
encouraged&nbsp;—&nbsp;<a href="https://forum.effectivealtruism.org/posts/5d3td2YpuCiE8L7yr/to-inspire-people-to-give-be-public-about-your-giving" target="_blank" rel="noopener noreferrer" class="">and for good reasons</a>.
So here I am reminding my three regular readers that
<a href="https://www.givingwhatwecan.org/how-rich-am-i" target="_blank" rel="noopener noreferrer" class="">we are rich</a>,
that
<a href="https://www.givingwhatwecan.org/birth-lottery" target="_blank" rel="noopener noreferrer" class="">we're incredibly lucky</a>,
and that we ought to do a lot more to help the most unfortunate.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="private-resolutions">Private resolutions<a href="https://blog.tripu.info/2026-resolutions#private-resolutions" class="hash-link" aria-label="Direct link to Private resolutions" title="Direct link to Private resolutions" translate="no">​</a></h2>
<p>Promising a few more things to myself, privately.
I keep track of these codes elsewhere.
I may or may not report on results at the end of the year.</p>
<ul>
<li class="">#B daily</li>
<li class="">#D weekly</li>
<li class="">#F</li>
<li class="">#J</li>
<li class="">#P</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="discarded-ideas">Discarded ideas<a href="https://blog.tripu.info/2026-resolutions#discarded-ideas" class="hash-link" aria-label="Direct link to Discarded ideas" title="Direct link to Discarded ideas" translate="no">​</a></h2>
<ul>
<li class="">No <strong>Japanese-learning</strong> goal this year.
I should be realistic, and I have enough commitments already.</li>
<li class="">I will not even try to publish <strong>a webcomic about Effective Altruism and the Rationality community</strong>.
The idea sounded great in my head: a simple horizontal stripe with few panels, stick figure-style,
poking fun at some of the tenets and tropes treasured by my fellow nerds, published every other
week or so.
I would love to follow a webcomic like that myself.
But then I realised that, well, I actually had no good ideas or jokes.
I chatted with Claude a bit and I was disappointed by the storyboards it produced: either
utilitarianism and randomized controlled trials are incompatible with humour (that could be the
case), or it's harder than I expected to come up with good jokes.
(But then, how come <a href="https://www.smbc-comics.com/" target="_blank" rel="noopener noreferrer" class="">SMBC</a> is so good!?)</li>
</ul>]]></content>
        <category label="in-English" term="in-English"/>
        <category label="personal" term="personal"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[2025 resolutions recap]]></title>
        <id>https://blog.tripu.info/2025-recap</id>
        <link href="https://blog.tripu.info/2025-recap"/>
        <updated>2026-01-01T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[This is my eval of the resolutions I made for 2025]]></summary>
        <content type="html"><![CDATA[<p>This is my eval of the <a class="" href="https://blog.tripu.info/2025-resolutions">resolutions I made for 2025</a>
plus a recap of the year through some apps I use.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="books-goodreads--the-greatest-books">Books (Goodreads &amp; The Greatest Books)<a href="https://blog.tripu.info/2025-recap#books-goodreads--the-greatest-books" class="hash-link" aria-label="Direct link to Books (Goodreads &amp; The Greatest Books)" title="Direct link to Books (Goodreads &amp; The Greatest Books)" translate="no">​</a></h2>
<p>Finish reading <strong>all books in the top ten of <a href="https://thegreatestbooks.org/" target="_blank" rel="noopener noreferrer" class="">the universal list</a></strong>: ✔️ done.</p>
<p><img decoding="async" loading="lazy" alt="Top ten of books" src="https://blog.tripu.info/assets/images/2025-greatest-books-cefa713e65fc4b0bad2fa4d6514fa794.png" width="752" height="997" class="img_ev3q"></p>
<p>It's actually <em>seventeen</em> books (<em>In Search of Lost Time</em> is a seven-volume, and <em>Don Quixote</em> is two books).</p>
<p>Also, I have read already half of the next ten in the list (#11–#20).</p>
<p><strong>Read at least 14 books this year</strong>: ✔️ <a href="https://www.goodreads.com/user/year_in_books/2025/64930929" target="_blank" rel="noopener noreferrer" class="">done</a>.</p>
<p>I read a total of twenty “items” in 2025, but nine of those were comic books, thus
“easier” to read.
I'm weighting those ⅓ of a “normal” book.
So: 11 normal books + 9×⅓ = 14 books read.</p>
<p><img decoding="async" loading="lazy" alt="Goodreads summary of the year" src="https://blog.tripu.info/assets/images/2025-goodreads-summary-2f1a7f4148f399b1848b4e6d893509be.png" width="600" height="420" class="img_ev3q"></p>
<p><img decoding="async" loading="lazy" alt="Goodreads summary of book lengths" src="https://blog.tripu.info/assets/images/2025-goodreads-length-d463f9f11f9be9f8635243e360c458f4.png" width="780" height="568" class="img_ev3q"></p>
<p><img decoding="async" loading="lazy" alt="Goodreads: all books read" src="https://blog.tripu.info/assets/images/2025-goodreads-books-193ec3c346e58dae8b4de887f53bb53c.png" width="642" height="1895" class="img_ev3q"></p>
<p>This may have been the year I have read the most since my youth
(although these stats are not reliable because I only started tracking books
consistently around 2016):</p>
<p><img decoding="async" loading="lazy" alt="Goodreads: stats of books" src="https://blog.tripu.info/assets/images/2025-goodreads-stats-books-4628bc05a67756bb6a59a89fbc685047.png" width="882" height="967" class="img_ev3q"></p>
<p><img decoding="async" loading="lazy" alt="Goodreads: stats of pages read" src="https://blog.tripu.info/assets/images/2025-goodreads-stats-pages-9f3d3475608f62bb41361519d843e90f.png" width="882" height="967" class="img_ev3q"></p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="podcasts-antennapod">Podcasts (AntennaPod)<a href="https://blog.tripu.info/2025-recap#podcasts-antennapod" class="hash-link" aria-label="Direct link to Podcasts (AntennaPod)" title="Direct link to Podcasts (AntennaPod)" translate="no">​</a></h2>
<p>I made no new year resolution about podcasts specifically.
Throughout the year I struggled in the usual way to feed myself a
diet I consider <em>healthy</em> (science, work-related topics, software and
technology, in-depth news analyses, Japanese language, History) and to stay away from
<em>junk food</em> (“news”, petty or local topics, click-baity debates).</p>
<p>I don't know how, but in 2025 I managed to listen to <em>even more hours of podcasts</em>
than in previous years.
919 hours are too many hours of earbuds sounding deep into my ears; that's no good.</p>
<p><img decoding="async" loading="lazy" alt="AntennaPod stats: ranking" src="https://blog.tripu.info/assets/images/2025-podcasts-ranking-2ae75af562a5bab494b962ac16bb9f9b.png" width="1080" height="1915" class="img_ev3q"></p>
<p>Those above are hours listening.
Regarding number of episodes, there are a few podcasts with typically short episodes
that I have listened to a lot in 2025.
Some of those were <em>Monólogo de [Carlos] Alsina</em>, eldiario.es' <em>Un Tema al Día</em>
(those two I consider guilty pleasures), BBC's <em>The Interview</em>, Quanta's podcast,
<em>Nihongo con Teppei</em> (Japanese for beginners) and Aporia's podcast (those are
<em>healthier</em>).</p>
<p><img decoding="async" loading="lazy" alt="AntennaPod stats: years" src="https://blog.tripu.info/assets/images/2025-podcasts-years-e0394d7c64b3b4b3ccb6377b1fc62fad.png" width="1080" height="1475" class="img_ev3q"></p>
<p>Even so, I reached the end of the year with a queue of more than 100 episodes
to play, and a lag of more than a month!</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="exercise">Exercise<a href="https://blog.tripu.info/2025-recap#exercise" class="hash-link" aria-label="Direct link to Exercise" title="Direct link to Exercise" translate="no">​</a></h2>
<p>These are my stats for the year:</p>
<ul>
<li class=""><strong>Weight-lifting</strong> at the gym: 57 times (once every 6 days)</li>
<li class=""><strong>Running</strong> outside: 50 times (once a week)</li>
<li class=""><strong>Hiking</strong> with family or friends: 19 times (once every 19 days)</li>
<li class=""><strong>Skiing</strong>: 3 days</li>
<li class=""><strong>Other</strong> (kayaking, callisthenics): 4 times</li>
<li class="">Total: 133 times (once every 3 days)</li>
</ul>
<p><img decoding="async" loading="lazy" alt="Exercise stats" src="https://blog.tripu.info/assets/images/2025-exercise-edaba1121a8b4c656456302d10953173.png" width="839" height="537" class="img_ev3q"></p>
<p>Compared with the previous year:</p>
<ul>
<li class=""><strong>Weight-lifting</strong>: 58% more</li>
<li class=""><strong>Running</strong>: 85% more</li>
<li class=""><strong>Hiking</strong>: 138% more</li>
<li class="">Total: 82% more</li>
</ul>
<p>Therefore, I consider I achieved my two goals (with caveats):</p>
<ul>
<li class=""><strong>Work out better and more often</strong>: ✔️ done.</li>
<li class=""><strong>Run a half marathon in 2025</strong>: ✔️ done.</li>
</ul>
<p>The caveats being:</p>
<ul>
<li class="">I worked out <em>more often</em> than in previous years… but <strong>not <em>better</em></strong>.
Around the second half of 2025 I got demotivated at the gym, stuck in a boring
cycle of work-outs, not appreciating any progress.
The first problem is: I do not go to the gym nearly as often as I should
(I go barely more than once a week).
It's almost impossible to notice results that way.
The second problem is: although I more or less know what exercises are
good for me, I do not push myself enough and I do not introduce
enough variation.
Third problem: appropriate nutrition (absolute lack thereof).</li>
<li class="">One day in November I did run 21 kilometres, 97 metres and 50 centimetres,
but <strong>I did it alone</strong> (ie, not in a popular race, as planned).
I had registered for a half marathon somewhere in Madrid in November, and
I had been training more or less regularly with that goal in sight.
As the date approached though, I realised I wanted to be elsewhere and I
would miss the event.
So I transformed my last “long run” (~19.3 km), exactly one
week before D-day, into a full-fledged 21K.
I ran it on my own, as any other training session, <strong>in 2h03′</strong>
(5′50″/km, or 10.3 km/h).
I would have liked to run the race, but I don't care much about this.</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="japanese">Japanese<a href="https://blog.tripu.info/2025-recap#japanese" class="hash-link" aria-label="Direct link to Japanese" title="Direct link to Japanese" translate="no">​</a></h2>
<p><strong>Study “well” often</strong>: 👎 failed.</p>
<p><strong>Take (and pass) the JLPT N4</strong>: 👎 failed.</p>
<p>I studied a few times at the beginning of the year, but after that I just played
sporadically with the Japanese apps on my phone and with Anki; nothing consistent.
Not the slightest chance I would have been prepared to pass JLPT N4 this year.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="nutrition">Nutrition<a href="https://blog.tripu.info/2025-recap#nutrition" class="hash-link" aria-label="Direct link to Nutrition" title="Direct link to Nutrition" translate="no">​</a></h2>
<p><strong>Make a conscious effort to plan meals more often; eat a little better; cut on bad food</strong>: 👎 failed.</p>
<p>I behaved well in the first month or two; then slipped back into old habits and easy choices.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="finances">Finances<a href="https://blog.tripu.info/2025-recap#finances" class="hash-link" aria-label="Direct link to Finances" title="Direct link to Finances" translate="no">​</a></h2>
<p><strong>Save more money; review our balance sheet and reduce some expenses</strong>: 👎 failed.</p>
<p>To be honest, this was a weak resolution&nbsp;—&nbsp;almost an afterthought.
I never identified with this goal, because I don't feel in my gut that I should save
much more.</p>
<p>As I said <a class="" href="https://blog.tripu.info/2025-resolutions#finances">one year ago</a>:</p>
<blockquote>
<p><em>“Our family finances are in good shape overall, I think.
[…]
Some of the line items will be hard or impossible to streamline.
[…]
I suspect I'll have to work with much smaller line items.
[…]
Truth be told, I don't think I'll make much of a dent.”</em></p>
</blockquote>
<p>I think that's why I made zero progress here.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="writing">Writing<a href="https://blog.tripu.info/2025-recap#writing" class="hash-link" aria-label="Direct link to Writing" title="Direct link to Writing" translate="no">​</a></h2>
<p><strong>Finish the short story that I started writing a few years ago</strong>: 👎 failed.</p>
<p>I sat down to write only a few times throughout the year, and did not finish that short story.</p>]]></content>
        <category label="in-English" term="in-English"/>
        <category label="personal" term="personal"/>
        <category label="literature" term="literature"/>
        <category label="Japanese" term="Japanese"/>
        <category label="sport" term="sport"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Pluribus]]></title>
        <id>https://blog.tripu.info/pluribus</id>
        <link href="https://blog.tripu.info/pluribus"/>
        <updated>2025-12-03T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Rhea Seehorn in the show]]></summary>
        <content type="html"><![CDATA[<p><img decoding="async" loading="lazy" src="https://ychef.files.bbci.co.uk/1600x900/p0mf5070.webp" alt="Rhea Seehorn in the show" class="img_ev3q"></p>
<div class="theme-admonition theme-admonition-note admonition_xJq3 alert alert--secondary"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"></path></svg></span>Spoilers <em>of the first episode only</em>; if you have watched that one, you're safe</div></div>
<p>I had high expectations for <a href="https://en.wikipedia.org/wiki/Pluribus_(TV_series)" target="_blank" rel="noopener noreferrer" class=""><em>Pluribus</em></a>
because I loved <em>Breaking Bad</em> (and I liked <em>Better Call Saul</em>, although I got bored and
gave up around season three).
But after five episodes I'm disappointed.
I was already disappointed after the first two or three, really.</p>
<p>It's too slow. Not much happens.</p>
<p>There are very few characters.
Why isn't <strong>Carol</strong> interested at all in what happened to her relatives and friends?
That is not believable.
The plot seems completely lineal: no parallel stories, no hint of what's to come,
no interesting connections across time or space.
So far, there are just two conflicts: that between Carol and the <em>body snatchers</em>,
and the one between Carol and the other immune people.
That's it.
Compare that with the rich cast of characters in <em>Breaking Bad</em>, their varied interests,
and all the clashes and twists in their relationships.</p>
<p>On top of that, Carol is arrogant, capricious and short-tempered.
And it irritates me that she seems so short on ideas.</p>
<p>I mean, what would <em>you</em> do in her situation?
Yes, you are “alone”, grieving, and very confused.
But you are safer than you have ever been, you have at your disposal an inexhaustible supply of
solicitous servants who adore you, you can have instantly any item you desire,
and you can tap the wisdom of the entire humanity.</p>
<p>How come she's not already headquartered at the local library (or at the Library of Congress,
or at the United Nations building), having arranged for all her bodily needs to
be automatically met, researching day and night with the help of a dozen individuals,
consulting with the best scientists on Earth, and holding daily conferences with all
the other immune to try to understand what happened??</p>
<p>Anyone in her situation would be bursting with important questions they would want answered.
Ask the <em>pod people</em> where all the hidden treasures of the world are, what the real state
of the economy is, what the weakest links in the nuclear risk chain are (and ask them to
fix that), whether there is still famine or torture anywhere…&nbsp;stuff like that.
And, of course, everything related to the incident that started it all: related research,
classified files, new messages received from the stars, how their hive mind works, and what
exactly it feels like to be one of them.
If nothing else, get answers to all your petty and morbid questions, for goodnes' sake:
did that girlfriend of mine actually cheat on me as I always suspected, show me the minutes
of that meeting where my boss decided to reject my promotion, who killed
<strong>Jeffrey Epstein</strong>, was the coronavirus engineered, who's <strong>Satoshi Nakamoto</strong>.</p>
<p>Also: get the best four or five vehicles in town to use in your excursions, get the best
food delivered to you on a fixed schedule, arrange for your trash to be picked up daily,
stock up on everything that could be useful (electronics, batteries, tools, manuals,
weapons), and set up news briefings to be delivered to you daily so that you stay
up-to-date on the state of the world.</p>
<p>That's what I would do <em>on day two</em>.
I think.</p>
<p>Instead, Carol wastes her days curled up on her sofa with a drink, roaming the city in
some crappy car to run stupid errands, and being bossy and nasty to everyone she
encounters&nbsp;—&nbsp;blissfully ignorant of what's going on in the rest of the planet.</p>
<p>The pod people, on the other hand, are (so far) helpful and peaceful.
The hive mind seems to be a
<a href="https://plato.stanford.edu/entries/rationality-normative-utility/" target="_blank" rel="noopener noreferrer" class="">utility maximiser</a>,
which is lovely.
What's not to like about
<a href="https://www.hedweb.com/" target="_blank" rel="noopener noreferrer" class="">a world without war, violence or cruelty</a>?
I think I know what the big reveal in the sixth episode is going to be, and if my suspicion
is correct, it'll be yet another reason to like the pod people and to boo Carol.</p>
<p>The production and the photography are superb.</p>
<p>But I am rooting for the body snatchers.</p>]]></content>
        <category label="in-English" term="in-English"/>
        <category label="TV" term="TV"/>
        <category label="culture" term="culture"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Clueless about computers]]></title>
        <id>https://blog.tripu.info/clueless</id>
        <link href="https://blog.tripu.info/clueless"/>
        <updated>2025-09-05T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[I want to share two stories of embarrassing ignorance about computers and the internet.]]></summary>
        <content type="html"><![CDATA[<p>I want to share two stories of <strong>embarrassing ignorance about computers and the internet</strong>.
Of <em>my own</em> ignorance, specifically.
In retrospect, I think these vignettes paint a revealing picture of:
a) how far we've come in software in thirty years or so; and
b) what it looks like to be clueless as a goldfish about some subject.</p>
<p><strong>At high school, around the mid-90's</strong>, some of us were discovering the
internet&nbsp;—&nbsp;in particular the web, IRC, and electronic mail.
(It's weird to think of it that way now, but the internet comprises, or enables,
a set of such services; such as Usenet, FTP, Gopher, or the World Wide Web.)
In those days I would go to an internet café, or visit a schoolmate who had
a dial-up modem at home, and use
<a href="https://www.mirc.com/about.html" target="_blank" rel="noopener noreferrer" class="">mIRC</a>
to explore random
<a href="https://freenode.net/" target="_blank" rel="noopener noreferrer" class="">Freenode</a>
channels,
or fire up Internet Explorer to visit the handful of web sites I knew about.
I didn't even have a mail account yet, but was starting to get acquainted
with that too.</p>
<p><img decoding="async" loading="lazy" alt="Old personal computer" src="https://blog.tripu.info/assets/images/old-personal-computer-1c85859bff932891784721ba878de426.jpeg" width="962" height="708" class="img_ev3q"></p>
<p>One day during recess I was chatting with my friend M.T.C. and we both
realised that <strong>we hadn't the faintest idea about “where” e-mail messages
“lived” while both the sender's and the recipient's computers where
switched off</strong>.
As in: an e-mail is travelling through the internet from computer A to
computer B; what if computer B happens to be off, or offline,
when the message “arrives”?
Wouldn't the message miss its target and be lost forever?
Perhaps messages can be transmitted only when both parties happen to be
connected simultaneously?
(but that didn't seem to be the case).
Or does e-mail live in some kind of vacuum until it can descend
upon the recipient?
What mysterious ether is that, anyway?
Where is it physically located?
Halfway in between both parties?
I remember how we puzzled over this for a while, and then shrugged it off.</p>
<p><strong>A few years later I was a computer science freshman</strong>, and a bit less ignorant.
But only a bit.
A few months into our five-year-long MSc degree, my classmates and I had
been introduced already to the foundations of information theory,
computation, electronics and digital
architectures&nbsp;—&nbsp;and we were programming in x86 assembly
and in C.
It was hard and mind-expanding, and we started to be confident about
the rudiments of imperative programming.
We had been told that computation was universal and we knew that this
Turing-complete C language had everything we would ever need
(namely, loops and jumps).
We knew how to read input, process, and show results.
I mean, what else is there anyway, right?
Classic Dunning-Kruger effect, we kind of assumed we could tackle
almost any problem handed to us, given sufficient time to “program it off”.</p>
<p>Then one day, talking to my friend A.C.C., it dawned on us that all
the programs we knew and used “did things on their own”, ie acted
asynchronously with user input.
Software wasn't all “wait for user to do something, compute stuff, spit
something back”.
In fact, almost everything that looked interesting or useful seemed
to happen following a clock of its own, or at the same time that
other things were happening: WinZip would notify us when an archive
finished uncompressing; StarCraft didn't stay idle at all while
we contemplated our next move; Winamp was decoding MP3 while
displaying visualisations while we were messing with its settings…
and, most important of all, all those programs would be running at the same time.
How on earth would one do that, no matter how many structs, matrices
or pointers?
<strong>Not only did we not know how to do parallel programming, multi-threading,
interruptions or event-driven interfaces&nbsp;—&nbsp;we hadn't even
realised those were a thing</strong>.</p>
<p><img decoding="async" loading="lazy" src="https://upload.wikimedia.org/wikipedia/en/f/ff/Winamp_5.666_media_player.png" alt="Winamp: it really whips the llama's ass" class="img_ev3q"></p>
<p>Aren't those anecdotes cute?</p>
<p>Looking back, it's clear I learnt so much in those formative years.
Not only about computers, but also about maths, physics, logic and other subjects.</p>
<p>I forgot an awful lot of that, and so I remain mostly ignorant.
And to make things worse, the number of areas I want to learn about has increased
with time: philosophy, economics, history, literature,
languages&nbsp;—&nbsp;to name a few.</p>
<p>What post will I be writing in twenty or thirty years from now?</p>
<p>What appalling gaps in my knowledge will I have filled a little by then?</p>
<div class="theme-admonition theme-admonition-note admonition_xJq3 alert alert--secondary"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"></path></svg></span><abbr title="Intellectual Property">IP</abbr>&nbsp;</div><div class="admonitionContent_BuS1"><p>IBM PC 5150: <a href="https://commons.wikimedia.org/wiki/File:IBM_PC_5150.jpg" target="_blank" rel="noopener noreferrer" class="">Wikimedia (Creative Commons)</a><br>
<!-- -->Winamp 5.666 media player:
<a href="https://en.wikipedia.org/wiki/File:Winamp_5.666_media_player.png" target="_blank" rel="noopener noreferrer" class="">Wikimedia (copyrighted, fair use)</a></p></div></div>]]></content>
        <category label="in-English" term="in-English"/>
        <category label="personal" term="personal"/>
        <category label="tech" term="tech"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Giving up on the electric car?]]></title>
        <id>https://blog.tripu.info/electric-car</id>
        <link href="https://blog.tripu.info/electric-car"/>
        <updated>2025-08-26T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[We bought our electric car in April 2022.]]></summary>
        <content type="html"><![CDATA[<p>We bought our electric car <a href="https://pixelfed.de/p/tripu/423134706296358645" target="_blank" rel="noopener noreferrer" class="">in April 2022</a>.
It's a <a href="https://ev-database.org/car/1280/Skoda-Enyaq-iV-80" target="_blank" rel="noopener noreferrer" class="">Škoda Enyaq iV 80</a>.
Its battery has 77 KWh of usable capacity, and its range varies from less than
300 km (at 125 km/h on the highway, fully loaded, on the coldest day of the winter)
to 500 km or more (driving alone in the city with mild weather).
(Yes, it changes that much.)</p>
<p>I reckon we paid a premium of around €10,000 over a comparable small SUV with a combustion engine.
My back-of-the-envelope calculation back then suggested that cheaper fuel, simpler maintenance,
free parking in (and free access to) many city centres (definitely Madrid), and lower ownership taxes
would cancel out the extra cost after seven years or so.
Perhaps that was still an optimistic estimate because it ignored the higher depreciation of electric vehicles
in the second-hand market (batteries, which are the critical component and the most expensive one,
degrade significantly over time).</p>
<p>Importantly, this is our only car.
(I still think that is one car too many, but with two adults working and two small kids,
it seems impossible not to own one.)</p>
<p><a href="https://pixelfed.de/p/tripu/464386453145156541" target="_blank" rel="noopener noreferrer" class=""><img decoding="async" loading="lazy" src="https://pxlfdde.fsn1.your-objectstorage.com/public/m/_v2/163397574160683008/3c6c7d1ab-ede048/1dypsFtlDfPb/M7U3S46hxmYMRI5qTgUiRuZbhjNj2ue4hjnkaVqo.jpg" alt="Our car" class="img_ev3q"></a></p>
<p>There are many things to love about an electric car.
Really.
But we humans get used to the good quickly, and then take it for granted&nbsp;—&nbsp;while
the little annoyances keep on annoying us.
And, oh boy, is it annoying sometimes to use an electric car and the public charging networks in Spain, 2025.</p>
<p>Today I want to tell you about the last time I was seriously tempted to sell my sleek, quiet, powerful,
fragrant car&nbsp;—&nbsp;and buy a fricking Humvee.
That was two days ago.
Nothing special about that day, just another negative anecdote piling up.</p>
<p>To be clear, some of the <abbr title="user experience">UX</abbr> issues that follow
have more to do with my insistence on using free software (free as in “free speech”)
and preventing digital surveillance than with electric vehicles or charging stations per se.
And yet.</p>
<hr>
<p>Sunday morning.
As we're having family breakfast, a friend who is also a neighbour texts me to say they're about
to go with their kids to a farm school that is 70 km away, and then do a picnic.
We want in.</p>
<p>First issue: I check <a href="https://play.google.com/store/apps/details?id=cz.skodaauto.myskoda" target="_blank" rel="noopener noreferrer" class="">the crappy Škoda app</a>
on my phone and see that the car, which is parked in our communal garage, is at 32% charge.
Nothing strange: usually we don't plug in the car until <abbr title="State of charge">SoC</abbr> is below 30% or so.
The problem is this gives us a range or around 130 km only.
Last Sunday, that was not enough.
(Okay, this is easily preventable if one bothers to charge more often and always keep the car at least
half-charged.)</p>
<p>Second issue: our own charging station is AC and works at ~4 KW.
For our car, it takes almost two hours to charge 10%.
That is perfect to charge overnight (22:00&nbsp;→&nbsp;7:00, 30%&nbsp;→&nbsp;80%),
but too slow when in a hurry.
So we have to either stop along the way (possibly on the way back home) or find a fast public charging
station nearby and plug it in for ten minutes to give the car a quick shot.
So I check on my phone for chargers in town using
<a href="https://play.google.com/store/apps/details?id=com.enredats.electromaps" target="_blank" rel="noopener noreferrer" class="">the crappy Electromaps app</a>.
I discard the ones that would be too slow or seem unreliable (eg, the ones in supermarket parking space),
and conclude that there are two decent ones that I should be able to activate using the app.
While the family finishes breakfast and is getting ready to go, I drive to the nearest station
(a mere five minutes away), find both connectors available, and park near one of them.</p>
<p>Third issue: the crappy Electromaps app thinks that I'm still at home, and won't let me charge
because I'm not “sufficiently close” to the place.
On the map view, it's like I'm still one or two kilometres away.
I move around the map with my fingers, wait a moment for the GPS signal to catch on, and
walk out of the shade to have clear satellite view.
I open <a href="https://f-droid.org/packages/net.osmand.plus/" target="_blank" rel="noopener noreferrer" class="">OsmAnd~</a> and confirm that my location is
the right one on that application.
I stretch my arm towards the sky to surrender my phone to the gods above, to no avail.
I try killing the Electromaps process in Android, and starting it again.
Nothing.
I check the permissions of the app and grant it every stupid, colon-inspecting permission it wants,
including fine-grained location in the background, even when the application isn't “running”.
I stop the app and start it again.
Same thing.
Then I get in the car, drive out of the place, do a one-eighty at the nearest roundabout
(holding my phone in my hand with the app open; don't try this at home),
and get back to the same connector.
This time Electromaps understands where I am, and lets me tap its “charge now” button.
So I plug in the connector to the car in sweet anticipation.</p>
<p>Fourth issue: after a couple seconds, Electromaps shows a generic error message and informs me that
the charge cannot start.
This is one of my favourite features of our green sustainable future.
Discarding that error message to try again isn't easy either: <em>back</em>, <em>back</em>, <em>exit button</em>,
<em>exit button</em>, <em>tap outside the modal</em>, <em>tap outside the modal</em>, <em>back</em>, <em>back</em>, okay now I'm back.
I try again, with the same result.
I can never remember for the life of me if it's “tap button, then plug in” or
“plug in, then tap button” (and I suspect it isn't even consistent across apps and
charging networks), so I try plugging in first.
Doesn't work, so it must be the other way around; let's try again.
Same error.
I reach for the connector at the other side of the pole, which fortunately is long enough, and
try with that one.
Same error.
I give up, get in the car and drive to the other charging station, which is very close.
This one is empty too, and the spots painted on the pavement on both sides of the monolith
are very spacious, so I park the car head-first in one of them.</p>
<p>Fifth issue: when I get out and stretch one of the cables to plug it into my car,
I realise it is thirty centimetres too short.
I pull the connector taut for a moment like an idiot, looking at the chasm between male
and female, and I can almost hear the laugh track behind me.
I get in the car again, back up, turn, then park backwards in the other space.</p>
<p>Sixth issue: which connector is which?
On the pole there are two signs, one at each side, with their IDs; something like
<code>XJ429-3321</code> and <code>XJ429-3322</code>.
But on Electromaps I only see two identical connectors, with no codes.
I tap one at random.</p>
<p>Seventh issue: Electromaps won't let me charge here, either.
A few seconds of hope, then the car gives me a red light and the app an unhelpful error.
The good news is that I suspect I'm on the right connector because, according to the display
on the pole, the other one is much slower (and on Electromaps I've tapped on a fast one).
I try a couple of times (“tap button, then plug in” or
“plug in, then tap button”?).
I give up.
I call my wife on the phone, who uses
<a href="https://play.google.com/store/apps/details?id=es.iberdrola.recargaverde" target="_blank" rel="noopener noreferrer" class="">a slightly less crappy app</a>
that sometimes works when others don't.
I tell her the charging station I'm in, and that it's the connector ending in <code>3322</code>.
She does her thing and for some reason this time it works, and the car starts charging fast.</p>
<p>In less than ten minutes SoC is above 50%; more than enough.
I leave the place, pick up the family at home, and we drive to the farm school.
Although we got there a bit late, the day ends up very well and we have a great time
with our friends.</p>
<hr>
<p>Yes, half of those hiccups the other day had to do with one crappy app in particular.
But I could tell you similar horror stories when the culprits were <em>other</em> crappy apps,
the crappy software of the car, the crappy software of the charging station, unreliable charging
networks, the interaction between car and charging station, bad design decisions somewhere
along the chain, or a combination of the above.</p>
<p>And to reiterate: there are some great things about driving an electric car.</p>
<p>Some other day we'll talk about those.</p>]]></content>
        <category label="in-English" term="in-English"/>
        <category label="personal" term="personal"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[React 19 with JSX, pure client (no build)]]></title>
        <id>https://blog.tripu.info/react-19</id>
        <link href="https://blog.tripu.info/react-19"/>
        <updated>2025-07-31T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[I love simplicity when it comes to software, and for web development I try to get rid of servers]]></summary>
        <content type="html"><![CDATA[<p>I love simplicity when it comes to software, and for web development I try to get rid of servers
whenever possible.
For all APIs, libraries or frameworks I use, I want to have a
<strong>minimalistic HTML page that instantiates and sets up the bare minimum for that tool to work,
and that I can load from <code>localhost</code>&nbsp;—&nbsp;no web server required</strong>.
Those files I use as boilerplate and reference, cloning them for whatever experiment I want to do.
Of course, web servers and build steps are great for all sorts of reasons,
but sometimes you just want to play around or develop a quick proof of concept.</p>
<p><img decoding="async" loading="lazy" alt="A fancy thumbnail I created with ChatGPT" src="https://blog.tripu.info/assets/images/react-babel-client-04e2d83374d1c2cea1e71bd961edf42d.png" width="1536" height="1024" class="img_ev3q"></p>
<p>React 19 is <a href="https://react.dev/blog/2024/12/05/react-19" target="_blank" rel="noopener noreferrer" class="">almost eight months old now</a>.
However, the
<a href="https://gist.githubusercontent.com/gaearon/0275b1e1518599bbeafcde4722e79ed1/raw/db72dcbf3384ee1708c4a07d3be79860db04bff0/example.html" target="_blank" rel="noopener noreferrer" class="">stand-alone HTML page</a>
suggested in the official documentation to
<a href="https://react.dev/learn/installation#try-react" target="_blank" rel="noopener noreferrer" class="">“try React locally on your computer”</a>
is <strong>still using version 18</strong>:</p>
<div class="language-html codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-html codeBlock_bY9V thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#bfc7d5"><span class="token doctype punctuation" style="color:rgb(199, 146, 234);font-style:italic">&lt;!</span><span class="token doctype doctype-tag" style="color:rgb(199, 146, 234);font-style:italic">DOCTYPE</span><span class="token doctype" style="color:rgb(199, 146, 234);font-style:italic"> </span><span class="token doctype name" style="color:rgb(199, 146, 234);font-style:italic">html</span><span class="token doctype punctuation" style="color:rgb(199, 146, 234);font-style:italic">&gt;</span><span class="token plain"></span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token tag punctuation" style="color:rgb(199, 146, 234)">&lt;</span><span class="token tag" style="color:rgb(255, 85, 114)">html</span><span class="token tag punctuation" style="color:rgb(199, 146, 234)">&gt;</span><span class="token plain"></span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token tag punctuation" style="color:rgb(199, 146, 234)">&lt;</span><span class="token tag" style="color:rgb(255, 85, 114)">head</span><span class="token tag punctuation" style="color:rgb(199, 146, 234)">&gt;</span><span class="token plain"></span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token tag punctuation" style="color:rgb(199, 146, 234)">&lt;</span><span class="token tag" style="color:rgb(255, 85, 114)">meta</span><span class="token tag" style="color:rgb(255, 85, 114)"> </span><span class="token tag attr-name" style="color:rgb(255, 203, 107)">charset</span><span class="token tag attr-value punctuation attr-equals" style="color:rgb(199, 146, 234)">=</span><span class="token tag attr-value punctuation" style="color:rgb(199, 146, 234)">"</span><span class="token tag attr-value" style="color:rgb(255, 85, 114)">UTF-8</span><span class="token tag attr-value punctuation" style="color:rgb(199, 146, 234)">"</span><span class="token tag" style="color:rgb(255, 85, 114)"> </span><span class="token tag punctuation" style="color:rgb(199, 146, 234)">/&gt;</span><span class="token plain"></span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token tag punctuation" style="color:rgb(199, 146, 234)">&lt;</span><span class="token tag" style="color:rgb(255, 85, 114)">title</span><span class="token tag punctuation" style="color:rgb(199, 146, 234)">&gt;</span><span class="token plain">Hello World</span><span class="token tag punctuation" style="color:rgb(199, 146, 234)">&lt;/</span><span class="token tag" style="color:rgb(255, 85, 114)">title</span><span class="token tag punctuation" style="color:rgb(199, 146, 234)">&gt;</span><span class="token plain"></span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token tag punctuation" style="color:rgb(199, 146, 234)">&lt;</span><span class="token tag" style="color:rgb(255, 85, 114)">script</span><span class="token tag" style="color:rgb(255, 85, 114)"> </span><span class="token tag attr-name" style="color:rgb(255, 203, 107)">src</span><span class="token tag attr-value punctuation attr-equals" style="color:rgb(199, 146, 234)">=</span><span class="token tag attr-value punctuation" style="color:rgb(199, 146, 234)">"</span><span class="token tag attr-value" style="color:rgb(255, 85, 114)">https://unpkg.com/react@18/umd/react.development.js</span><span class="token tag attr-value punctuation" style="color:rgb(199, 146, 234)">"</span><span class="token tag punctuation" style="color:rgb(199, 146, 234)">&gt;</span><span class="token script"></span><span class="token tag punctuation" style="color:rgb(199, 146, 234)">&lt;/</span><span class="token tag" style="color:rgb(255, 85, 114)">script</span><span class="token tag punctuation" style="color:rgb(199, 146, 234)">&gt;</span><span class="token plain"></span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token tag punctuation" style="color:rgb(199, 146, 234)">&lt;</span><span class="token tag" style="color:rgb(255, 85, 114)">script</span><span class="token tag" style="color:rgb(255, 85, 114)"> </span><span class="token tag attr-name" style="color:rgb(255, 203, 107)">src</span><span class="token tag attr-value punctuation attr-equals" style="color:rgb(199, 146, 234)">=</span><span class="token tag attr-value punctuation" style="color:rgb(199, 146, 234)">"</span><span class="token tag attr-value" style="color:rgb(255, 85, 114)">https://unpkg.com/react-dom@18/umd/react-dom.development.js</span><span class="token tag attr-value punctuation" style="color:rgb(199, 146, 234)">"</span><span class="token tag punctuation" style="color:rgb(199, 146, 234)">&gt;</span><span class="token script"></span><span class="token tag punctuation" style="color:rgb(199, 146, 234)">&lt;/</span><span class="token tag" style="color:rgb(255, 85, 114)">script</span><span class="token tag punctuation" style="color:rgb(199, 146, 234)">&gt;</span><span class="token plain"></span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token tag punctuation" style="color:rgb(199, 146, 234)">&lt;</span><span class="token tag" style="color:rgb(255, 85, 114)">script</span><span class="token tag" style="color:rgb(255, 85, 114)"> </span><span class="token tag attr-name" style="color:rgb(255, 203, 107)">src</span><span class="token tag attr-value punctuation attr-equals" style="color:rgb(199, 146, 234)">=</span><span class="token tag attr-value punctuation" style="color:rgb(199, 146, 234)">"</span><span class="token tag attr-value" style="color:rgb(255, 85, 114)">https://unpkg.com/@babel/standalone/babel.min.js</span><span class="token tag attr-value punctuation" style="color:rgb(199, 146, 234)">"</span><span class="token tag punctuation" style="color:rgb(199, 146, 234)">&gt;</span><span class="token script"></span><span class="token tag punctuation" style="color:rgb(199, 146, 234)">&lt;/</span><span class="token tag" style="color:rgb(255, 85, 114)">script</span><span class="token tag punctuation" style="color:rgb(199, 146, 234)">&gt;</span><span class="token plain"></span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token tag punctuation" style="color:rgb(199, 146, 234)">&lt;/</span><span class="token tag" style="color:rgb(255, 85, 114)">head</span><span class="token tag punctuation" style="color:rgb(199, 146, 234)">&gt;</span><span class="token plain"></span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token tag punctuation" style="color:rgb(199, 146, 234)">&lt;</span><span class="token tag" style="color:rgb(255, 85, 114)">body</span><span class="token tag punctuation" style="color:rgb(199, 146, 234)">&gt;</span><span class="token plain"></span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token tag punctuation" style="color:rgb(199, 146, 234)">&lt;</span><span class="token tag" style="color:rgb(255, 85, 114)">div</span><span class="token tag" style="color:rgb(255, 85, 114)"> </span><span class="token tag attr-name" style="color:rgb(255, 203, 107)">id</span><span class="token tag attr-value punctuation attr-equals" style="color:rgb(199, 146, 234)">=</span><span class="token tag attr-value punctuation" style="color:rgb(199, 146, 234)">"</span><span class="token tag attr-value" style="color:rgb(255, 85, 114)">root</span><span class="token tag attr-value punctuation" style="color:rgb(199, 146, 234)">"</span><span class="token tag punctuation" style="color:rgb(199, 146, 234)">&gt;</span><span class="token tag punctuation" style="color:rgb(199, 146, 234)">&lt;/</span><span class="token tag" style="color:rgb(255, 85, 114)">div</span><span class="token tag punctuation" style="color:rgb(199, 146, 234)">&gt;</span><span class="token plain"></span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token tag punctuation" style="color:rgb(199, 146, 234)">&lt;</span><span class="token tag" style="color:rgb(255, 85, 114)">script</span><span class="token tag" style="color:rgb(255, 85, 114)"> </span><span class="token tag attr-name" style="color:rgb(255, 203, 107)">type</span><span class="token tag attr-value punctuation attr-equals" style="color:rgb(199, 146, 234)">=</span><span class="token tag attr-value punctuation" style="color:rgb(199, 146, 234)">"</span><span class="token tag attr-value" style="color:rgb(255, 85, 114)">text/babel</span><span class="token tag attr-value punctuation" style="color:rgb(199, 146, 234)">"</span><span class="token tag punctuation" style="color:rgb(199, 146, 234)">&gt;</span><span class="token script language-javascript"></span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token script language-javascript">      </span><span class="token script language-javascript keyword" style="font-style:italic">function</span><span class="token script language-javascript"> </span><span class="token script language-javascript function maybe-class-name" style="color:rgb(130, 170, 255)">MyApp</span><span class="token script language-javascript punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token script language-javascript punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token script language-javascript"> </span><span class="token script language-javascript punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token script language-javascript"></span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token script language-javascript">        </span><span class="token script language-javascript keyword control-flow" style="font-style:italic">return</span><span class="token script language-javascript"> </span><span class="token script language-javascript operator" style="color:rgb(137, 221, 255)">&lt;</span><span class="token script language-javascript">h1</span><span class="token script language-javascript operator" style="color:rgb(137, 221, 255)">&gt;</span><span class="token script language-javascript maybe-class-name">Hello</span><span class="token script language-javascript punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token script language-javascript"> world</span><span class="token script language-javascript operator" style="color:rgb(137, 221, 255)">!</span><span class="token script language-javascript operator" style="color:rgb(137, 221, 255)">&lt;</span><span class="token script language-javascript operator" style="color:rgb(137, 221, 255)">/</span><span class="token script language-javascript">h1</span><span class="token script language-javascript operator" style="color:rgb(137, 221, 255)">&gt;</span><span class="token script language-javascript punctuation" style="color:rgb(199, 146, 234)">;</span><span class="token script language-javascript"></span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token script language-javascript">      </span><span class="token script language-javascript punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token script language-javascript"></span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token script language-javascript">      </span><span class="token script language-javascript keyword" style="font-style:italic">const</span><span class="token script language-javascript"> container </span><span class="token script language-javascript operator" style="color:rgb(137, 221, 255)">=</span><span class="token script language-javascript"> </span><span class="token script language-javascript dom variable" style="color:rgb(191, 199, 213)">document</span><span class="token script language-javascript punctuation" style="color:rgb(199, 146, 234)">.</span><span class="token script language-javascript method function property-access" style="color:rgb(130, 170, 255)">getElementById</span><span class="token script language-javascript punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token script language-javascript string" style="color:rgb(195, 232, 141)">'root'</span><span class="token script language-javascript punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token script language-javascript punctuation" style="color:rgb(199, 146, 234)">;</span><span class="token script language-javascript"></span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token script language-javascript">      </span><span class="token script language-javascript keyword" style="font-style:italic">const</span><span class="token script language-javascript"> root </span><span class="token script language-javascript operator" style="color:rgb(137, 221, 255)">=</span><span class="token script language-javascript"> </span><span class="token script language-javascript maybe-class-name">ReactDOM</span><span class="token script language-javascript punctuation" style="color:rgb(199, 146, 234)">.</span><span class="token script language-javascript method function property-access" style="color:rgb(130, 170, 255)">createRoot</span><span class="token script language-javascript punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token script language-javascript">container</span><span class="token script language-javascript punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token script language-javascript punctuation" style="color:rgb(199, 146, 234)">;</span><span class="token script language-javascript"></span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token script language-javascript">      root</span><span class="token script language-javascript punctuation" style="color:rgb(199, 146, 234)">.</span><span class="token script language-javascript method function property-access" style="color:rgb(130, 170, 255)">render</span><span class="token script language-javascript punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token script language-javascript operator" style="color:rgb(137, 221, 255)">&lt;</span><span class="token script language-javascript maybe-class-name">MyApp</span><span class="token script language-javascript"> </span><span class="token script language-javascript operator" style="color:rgb(137, 221, 255)">/</span><span class="token script language-javascript operator" style="color:rgb(137, 221, 255)">&gt;</span><span class="token script language-javascript punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token script language-javascript punctuation" style="color:rgb(199, 146, 234)">;</span><span class="token script language-javascript"></span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token script language-javascript">    </span><span class="token tag punctuation" style="color:rgb(199, 146, 234)">&lt;/</span><span class="token tag" style="color:rgb(255, 85, 114)">script</span><span class="token tag punctuation" style="color:rgb(199, 146, 234)">&gt;</span><span class="token plain"></span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token tag punctuation" style="color:rgb(199, 146, 234)">&lt;/</span><span class="token tag" style="color:rgb(255, 85, 114)">body</span><span class="token tag punctuation" style="color:rgb(199, 146, 234)">&gt;</span><span class="token plain"></span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token tag punctuation" style="color:rgb(199, 146, 234)">&lt;/</span><span class="token tag" style="color:rgb(255, 85, 114)">html</span><span class="token tag punctuation" style="color:rgb(199, 146, 234)">&gt;</span><br></div></code></pre></div></div>
<p>Naively, I copied-and-pasted the page, then removed both <code>@18</code> bits above so that
<a href="https://unpkg.com/" target="_blank" rel="noopener noreferrer" class="">Unpkg</a> would return <code>@latest</code> by default (in this case, React <code>19</code>).
But that URL failed.</p>
<p>What was happening?
After all, I had done <a href="https://gitlab.com/tripu.info/theming-poc" target="_blank" rel="noopener noreferrer" class="">something similar</a> in the past:
loading native JS modules dynamically on the client, those modules in turn importing React 18,
the whole thing working with no build steps…
I consulted with ChatGPT, but it lied to me and gave me a “solution” that could not work.</p>
<p>It turns out there were <strong>two issues</strong>.</p>
<p>First,
<a href="https://react.dev/blog/2024/04/25/react-19-upgrade-guide#umd-builds-removed" target="_blank" rel="noopener noreferrer" class=""><strong>UMD builds aren't provided any more</strong></a>:
starting with React 19, an “ESM-based CDN such as <a href="https://esm.sh/" target="_blank" rel="noopener noreferrer" class="">esm.sh</a>” is recommended instead.
<a href="https://peterkellner.net/2024/05/10/running-react-19-from-a-cdn-and-using-esm.sh/" target="_blank" rel="noopener noreferrer" class="">A blog post by <strong>Peter Kellner</strong></a>
gave me the hint.
At the time, <a href="https://www.npmjs.com/package/react/v/19.0.0" target="_blank" rel="noopener noreferrer" class=""><code>react@9.0.0</code></a> did not exist in <code>npm</code> yet, so Peter
used a beta build.
But today, we can fetch the production release.</p>
<p>And so the original boilerplate goes from this:</p>
<div class="language-html codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-html codeBlock_bY9V thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#bfc7d5"><span class="token tag punctuation" style="color:rgb(199, 146, 234)">&lt;</span><span class="token tag" style="color:rgb(255, 85, 114)">script</span><span class="token tag" style="color:rgb(255, 85, 114)"> </span><span class="token tag attr-name" style="color:rgb(255, 203, 107)">src</span><span class="token tag attr-value punctuation attr-equals" style="color:rgb(199, 146, 234)">=</span><span class="token tag attr-value punctuation" style="color:rgb(199, 146, 234)">"</span><span class="token tag attr-value" style="color:rgb(255, 85, 114)">https://unpkg.com/react@18/umd/react.development.js</span><span class="token tag attr-value punctuation" style="color:rgb(199, 146, 234)">"</span><span class="token tag punctuation" style="color:rgb(199, 146, 234)">&gt;</span><span class="token script"></span><span class="token tag punctuation" style="color:rgb(199, 146, 234)">&lt;/</span><span class="token tag" style="color:rgb(255, 85, 114)">script</span><span class="token tag punctuation" style="color:rgb(199, 146, 234)">&gt;</span><span class="token plain"></span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token tag punctuation" style="color:rgb(199, 146, 234)">&lt;</span><span class="token tag" style="color:rgb(255, 85, 114)">script</span><span class="token tag" style="color:rgb(255, 85, 114)"> </span><span class="token tag attr-name" style="color:rgb(255, 203, 107)">src</span><span class="token tag attr-value punctuation attr-equals" style="color:rgb(199, 146, 234)">=</span><span class="token tag attr-value punctuation" style="color:rgb(199, 146, 234)">"</span><span class="token tag attr-value" style="color:rgb(255, 85, 114)">https://unpkg.com/react-dom@18/umd/react-dom.development.js</span><span class="token tag attr-value punctuation" style="color:rgb(199, 146, 234)">"</span><span class="token tag punctuation" style="color:rgb(199, 146, 234)">&gt;</span><span class="token script"></span><span class="token tag punctuation" style="color:rgb(199, 146, 234)">&lt;/</span><span class="token tag" style="color:rgb(255, 85, 114)">script</span><span class="token tag punctuation" style="color:rgb(199, 146, 234)">&gt;</span><br></div></code></pre></div></div>
<p>to this:</p>
<div class="language-html codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-html codeBlock_bY9V thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#bfc7d5"><span class="token tag punctuation" style="color:rgb(199, 146, 234)">&lt;</span><span class="token tag" style="color:rgb(255, 85, 114)">script</span><span class="token tag" style="color:rgb(255, 85, 114)"> </span><span class="token tag attr-name" style="color:rgb(255, 203, 107)">type</span><span class="token tag attr-value punctuation attr-equals" style="color:rgb(199, 146, 234)">=</span><span class="token tag attr-value punctuation" style="color:rgb(199, 146, 234)">"</span><span class="token tag attr-value" style="color:rgb(255, 85, 114)">module</span><span class="token tag attr-value punctuation" style="color:rgb(199, 146, 234)">"</span><span class="token tag punctuation" style="color:rgb(199, 146, 234)">&gt;</span><span class="token script language-javascript"></span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token script language-javascript">  </span><span class="token script language-javascript keyword module" style="font-style:italic">import</span><span class="token script language-javascript"> </span><span class="token script language-javascript imports maybe-class-name">React</span><span class="token script language-javascript"> </span><span class="token script language-javascript keyword module" style="font-style:italic">from</span><span class="token script language-javascript"> </span><span class="token script language-javascript string" style="color:rgb(195, 232, 141)">"https://esm.sh/react?dev"</span><span class="token script language-javascript punctuation" style="color:rgb(199, 146, 234)">;</span><span class="token script language-javascript">                </span><span class="token script language-javascript comment" style="color:rgb(105, 112, 152);font-style:italic">// ≡ latest ≡ 19</span><span class="token script language-javascript"></span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token script language-javascript">  </span><span class="token script language-javascript keyword module" style="font-style:italic">import</span><span class="token script language-javascript"> </span><span class="token script language-javascript imports maybe-class-name">ReactDOM</span><span class="token script language-javascript"> </span><span class="token script language-javascript keyword module" style="font-style:italic">from</span><span class="token script language-javascript"> </span><span class="token script language-javascript string" style="color:rgb(195, 232, 141)">"https://esm.sh/react-dom/client?dev"</span><span class="token script language-javascript punctuation" style="color:rgb(199, 146, 234)">;</span><span class="token script language-javascript">  </span><span class="token script language-javascript comment" style="color:rgb(105, 112, 152);font-style:italic">// ≡ latest ≡ 19</span><span class="token script language-javascript"></span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token script language-javascript"></span><span class="token tag punctuation" style="color:rgb(199, 146, 234)">&lt;/</span><span class="token tag" style="color:rgb(255, 85, 114)">script</span><span class="token tag punctuation" style="color:rgb(199, 146, 234)">&gt;</span><br></div></code></pre></div></div>
<p>The second issue was that after this change, <strong><a href="https://react.dev/learn/writing-markup-with-jsx" target="_blank" rel="noopener noreferrer" class="">JSX</a>
support was broken</strong>, and thus the page didn't work as a fully-fledged, realistic React playground yet.
Indeed, both in my aforementioned “Theming PoC” experiments and in Peter's post above,
JSX syntax is conspicuously absent!
How come?</p>
<p>Turns out that Babel automatically transpiles <code>script</code> elements of <code>type="text/babel"</code>&nbsp;—&nbsp;and
only those.
Our JSX markup <em>needs</em> to be inside a <code>&lt;script type="text/babel"&gt;</code> tag.
At the same time, we <em>need</em> <code>type="module"</code> to be able to load React (v19) dependencies as ES modules…</p>
<p>After some tests and some thinking, I came up with this (ahem) <em>slightly controversial</em> solution:</p>
<div class="language-html codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-html codeBlock_bY9V thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#bfc7d5"><span class="token tag punctuation" style="color:rgb(199, 146, 234)">&lt;</span><span class="token tag" style="color:rgb(255, 85, 114)">script</span><span class="token tag" style="color:rgb(255, 85, 114)"> </span><span class="token tag attr-name" style="color:rgb(255, 203, 107)">type</span><span class="token tag attr-value punctuation attr-equals" style="color:rgb(199, 146, 234)">=</span><span class="token tag attr-value punctuation" style="color:rgb(199, 146, 234)">"</span><span class="token tag attr-value" style="color:rgb(255, 85, 114)">module</span><span class="token tag attr-value punctuation" style="color:rgb(199, 146, 234)">"</span><span class="token tag punctuation" style="color:rgb(199, 146, 234)">&gt;</span><span class="token script language-javascript"></span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token script language-javascript">  </span><span class="token script language-javascript keyword module" style="font-style:italic">import</span><span class="token script language-javascript"> </span><span class="token script language-javascript imports maybe-class-name">React</span><span class="token script language-javascript"> </span><span class="token script language-javascript keyword module" style="font-style:italic">from</span><span class="token script language-javascript"> </span><span class="token script language-javascript string" style="color:rgb(195, 232, 141)">"https://esm.sh/react?dev"</span><span class="token script language-javascript punctuation" style="color:rgb(199, 146, 234)">;</span><span class="token script language-javascript"></span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token script language-javascript">  </span><span class="token script language-javascript keyword module" style="font-style:italic">import</span><span class="token script language-javascript"> </span><span class="token script language-javascript imports maybe-class-name">ReactDOM</span><span class="token script language-javascript"> </span><span class="token script language-javascript keyword module" style="font-style:italic">from</span><span class="token script language-javascript"> </span><span class="token script language-javascript string" style="color:rgb(195, 232, 141)">"https://esm.sh/react-dom/client?dev"</span><span class="token script language-javascript punctuation" style="color:rgb(199, 146, 234)">;</span><span class="token script language-javascript"></span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token script language-javascript">  </span><span class="token script language-javascript dom variable" style="color:rgb(191, 199, 213)">window</span><span class="token script language-javascript punctuation" style="color:rgb(199, 146, 234)">.</span><span class="token script language-javascript property-access">__tmp</span><span class="token script language-javascript"> </span><span class="token script language-javascript operator" style="color:rgb(137, 221, 255)">=</span><span class="token script language-javascript"> </span><span class="token script language-javascript punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token script language-javascript"> </span><span class="token script language-javascript maybe-class-name">React</span><span class="token script language-javascript punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token script language-javascript"> </span><span class="token script language-javascript maybe-class-name">ReactDOM</span><span class="token script language-javascript"> </span><span class="token script language-javascript punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token script language-javascript punctuation" style="color:rgb(199, 146, 234)">;</span><span class="token script language-javascript"></span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token script language-javascript"></span><span class="token tag punctuation" style="color:rgb(199, 146, 234)">&lt;/</span><span class="token tag" style="color:rgb(255, 85, 114)">script</span><span class="token tag punctuation" style="color:rgb(199, 146, 234)">&gt;</span><span class="token plain"></span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token tag punctuation" style="color:rgb(199, 146, 234)">&lt;</span><span class="token tag" style="color:rgb(255, 85, 114)">script</span><span class="token tag" style="color:rgb(255, 85, 114)"> </span><span class="token tag attr-name" style="color:rgb(255, 203, 107)">type</span><span class="token tag attr-value punctuation attr-equals" style="color:rgb(199, 146, 234)">=</span><span class="token tag attr-value punctuation" style="color:rgb(199, 146, 234)">"</span><span class="token tag attr-value" style="color:rgb(255, 85, 114)">text/babel</span><span class="token tag attr-value punctuation" style="color:rgb(199, 146, 234)">"</span><span class="token tag punctuation" style="color:rgb(199, 146, 234)">&gt;</span><span class="token script language-javascript"></span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token script language-javascript">  </span><span class="token script language-javascript keyword" style="font-style:italic">const</span><span class="token script language-javascript"> </span><span class="token script language-javascript punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token script language-javascript"> </span><span class="token script language-javascript maybe-class-name">React</span><span class="token script language-javascript punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token script language-javascript"> </span><span class="token script language-javascript maybe-class-name">ReactDOM</span><span class="token script language-javascript"> </span><span class="token script language-javascript punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token script language-javascript"> </span><span class="token script language-javascript operator" style="color:rgb(137, 221, 255)">=</span><span class="token script language-javascript"> </span><span class="token script language-javascript dom variable" style="color:rgb(191, 199, 213)">window</span><span class="token script language-javascript punctuation" style="color:rgb(199, 146, 234)">.</span><span class="token script language-javascript property-access">__tmp</span><span class="token script language-javascript punctuation" style="color:rgb(199, 146, 234)">;</span><span class="token script language-javascript"></span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token script language-javascript">  </span><span class="token script language-javascript keyword" style="font-style:italic">delete</span><span class="token script language-javascript"> </span><span class="token script language-javascript dom variable" style="color:rgb(191, 199, 213)">window</span><span class="token script language-javascript punctuation" style="color:rgb(199, 146, 234)">.</span><span class="token script language-javascript property-access">__tmp</span><span class="token script language-javascript punctuation" style="color:rgb(199, 146, 234)">;</span><span class="token script language-javascript"></span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token script language-javascript">  </span><span class="token script language-javascript comment" style="color:rgb(105, 112, 152);font-style:italic">// &lt;YourJSXstuffGoesHere /&gt;</span><span class="token script language-javascript"></span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token script language-javascript"></span><span class="token tag punctuation" style="color:rgb(199, 146, 234)">&lt;/</span><span class="token tag" style="color:rgb(255, 85, 114)">script</span><span class="token tag punctuation" style="color:rgb(199, 146, 234)">&gt;</span><br></div></code></pre></div></div>
<p>Yes: I am writing to the global scope from within a module; I am polluting <code>window</code>.
But hey, it's a super-quick exchange of data, all encapsulated into a single property, and I'm cleaning after myself!</p>
<p>Here is the final version, with <strong>the latest React and React DOM on the browser, with JSX support, no build needed</strong>:</p>
<div class="language-html codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-html codeBlock_bY9V thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#bfc7d5"><span class="token doctype punctuation" style="color:rgb(199, 146, 234);font-style:italic">&lt;!</span><span class="token doctype doctype-tag" style="color:rgb(199, 146, 234);font-style:italic">DOCTYPE</span><span class="token doctype" style="color:rgb(199, 146, 234);font-style:italic"> </span><span class="token doctype name" style="color:rgb(199, 146, 234);font-style:italic">html</span><span class="token doctype punctuation" style="color:rgb(199, 146, 234);font-style:italic">&gt;</span><span class="token plain"></span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token tag punctuation" style="color:rgb(199, 146, 234)">&lt;</span><span class="token tag" style="color:rgb(255, 85, 114)">html</span><span class="token tag punctuation" style="color:rgb(199, 146, 234)">&gt;</span><span class="token plain"></span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token tag punctuation" style="color:rgb(199, 146, 234)">&lt;</span><span class="token tag" style="color:rgb(255, 85, 114)">head</span><span class="token tag punctuation" style="color:rgb(199, 146, 234)">&gt;</span><span class="token plain"></span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token tag punctuation" style="color:rgb(199, 146, 234)">&lt;</span><span class="token tag" style="color:rgb(255, 85, 114)">meta</span><span class="token tag" style="color:rgb(255, 85, 114)"> </span><span class="token tag attr-name" style="color:rgb(255, 203, 107)">charset</span><span class="token tag attr-value punctuation attr-equals" style="color:rgb(199, 146, 234)">=</span><span class="token tag attr-value punctuation" style="color:rgb(199, 146, 234)">"</span><span class="token tag attr-value" style="color:rgb(255, 85, 114)">UTF-8</span><span class="token tag attr-value punctuation" style="color:rgb(199, 146, 234)">"</span><span class="token tag" style="color:rgb(255, 85, 114)"> </span><span class="token tag punctuation" style="color:rgb(199, 146, 234)">/&gt;</span><span class="token plain"></span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token tag punctuation" style="color:rgb(199, 146, 234)">&lt;</span><span class="token tag" style="color:rgb(255, 85, 114)">title</span><span class="token tag punctuation" style="color:rgb(199, 146, 234)">&gt;</span><span class="token plain">Hello World</span><span class="token tag punctuation" style="color:rgb(199, 146, 234)">&lt;/</span><span class="token tag" style="color:rgb(255, 85, 114)">title</span><span class="token tag punctuation" style="color:rgb(199, 146, 234)">&gt;</span><span class="token plain"></span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token tag punctuation" style="color:rgb(199, 146, 234)">&lt;</span><span class="token tag" style="color:rgb(255, 85, 114)">script</span><span class="token tag" style="color:rgb(255, 85, 114)"> </span><span class="token tag attr-name" style="color:rgb(255, 203, 107)">src</span><span class="token tag attr-value punctuation attr-equals" style="color:rgb(199, 146, 234)">=</span><span class="token tag attr-value punctuation" style="color:rgb(199, 146, 234)">"</span><span class="token tag attr-value" style="color:rgb(255, 85, 114)">https://unpkg.com/@babel/standalone/babel.min.js</span><span class="token tag attr-value punctuation" style="color:rgb(199, 146, 234)">"</span><span class="token tag punctuation" style="color:rgb(199, 146, 234)">&gt;</span><span class="token script"></span><span class="token tag punctuation" style="color:rgb(199, 146, 234)">&lt;/</span><span class="token tag" style="color:rgb(255, 85, 114)">script</span><span class="token tag punctuation" style="color:rgb(199, 146, 234)">&gt;</span><span class="token plain"></span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token tag punctuation" style="color:rgb(199, 146, 234)">&lt;/</span><span class="token tag" style="color:rgb(255, 85, 114)">head</span><span class="token tag punctuation" style="color:rgb(199, 146, 234)">&gt;</span><span class="token plain"></span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token tag punctuation" style="color:rgb(199, 146, 234)">&lt;</span><span class="token tag" style="color:rgb(255, 85, 114)">body</span><span class="token tag punctuation" style="color:rgb(199, 146, 234)">&gt;</span><span class="token plain"></span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token tag punctuation" style="color:rgb(199, 146, 234)">&lt;</span><span class="token tag" style="color:rgb(255, 85, 114)">div</span><span class="token tag" style="color:rgb(255, 85, 114)"> </span><span class="token tag attr-name" style="color:rgb(255, 203, 107)">id</span><span class="token tag attr-value punctuation attr-equals" style="color:rgb(199, 146, 234)">=</span><span class="token tag attr-value punctuation" style="color:rgb(199, 146, 234)">"</span><span class="token tag attr-value" style="color:rgb(255, 85, 114)">root</span><span class="token tag attr-value punctuation" style="color:rgb(199, 146, 234)">"</span><span class="token tag punctuation" style="color:rgb(199, 146, 234)">&gt;</span><span class="token tag punctuation" style="color:rgb(199, 146, 234)">&lt;/</span><span class="token tag" style="color:rgb(255, 85, 114)">div</span><span class="token tag punctuation" style="color:rgb(199, 146, 234)">&gt;</span><span class="token plain"></span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token tag punctuation" style="color:rgb(199, 146, 234)">&lt;</span><span class="token tag" style="color:rgb(255, 85, 114)">script</span><span class="token tag" style="color:rgb(255, 85, 114)"> </span><span class="token tag attr-name" style="color:rgb(255, 203, 107)">type</span><span class="token tag attr-value punctuation attr-equals" style="color:rgb(199, 146, 234)">=</span><span class="token tag attr-value punctuation" style="color:rgb(199, 146, 234)">"</span><span class="token tag attr-value" style="color:rgb(255, 85, 114)">module</span><span class="token tag attr-value punctuation" style="color:rgb(199, 146, 234)">"</span><span class="token tag punctuation" style="color:rgb(199, 146, 234)">&gt;</span><span class="token script language-javascript"></span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token script language-javascript">      </span><span class="token script language-javascript keyword module" style="font-style:italic">import</span><span class="token script language-javascript"> </span><span class="token script language-javascript imports maybe-class-name">React</span><span class="token script language-javascript"> </span><span class="token script language-javascript keyword module" style="font-style:italic">from</span><span class="token script language-javascript"> </span><span class="token script language-javascript string" style="color:rgb(195, 232, 141)">"https://esm.sh/react?dev"</span><span class="token script language-javascript punctuation" style="color:rgb(199, 146, 234)">;</span><span class="token script language-javascript"></span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token script language-javascript">      </span><span class="token script language-javascript keyword module" style="font-style:italic">import</span><span class="token script language-javascript"> </span><span class="token script language-javascript imports maybe-class-name">ReactDOM</span><span class="token script language-javascript"> </span><span class="token script language-javascript keyword module" style="font-style:italic">from</span><span class="token script language-javascript"> </span><span class="token script language-javascript string" style="color:rgb(195, 232, 141)">"https://esm.sh/react-dom/client?dev"</span><span class="token script language-javascript punctuation" style="color:rgb(199, 146, 234)">;</span><span class="token script language-javascript"></span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token script language-javascript">      </span><span class="token script language-javascript dom variable" style="color:rgb(191, 199, 213)">window</span><span class="token script language-javascript punctuation" style="color:rgb(199, 146, 234)">.</span><span class="token script language-javascript property-access">__tmp</span><span class="token script language-javascript"> </span><span class="token script language-javascript operator" style="color:rgb(137, 221, 255)">=</span><span class="token script language-javascript"> </span><span class="token script language-javascript punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token script language-javascript"> </span><span class="token script language-javascript maybe-class-name">React</span><span class="token script language-javascript punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token script language-javascript"> </span><span class="token script language-javascript maybe-class-name">ReactDOM</span><span class="token script language-javascript"> </span><span class="token script language-javascript punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token script language-javascript punctuation" style="color:rgb(199, 146, 234)">;</span><span class="token script language-javascript"></span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token script language-javascript">    </span><span class="token tag punctuation" style="color:rgb(199, 146, 234)">&lt;/</span><span class="token tag" style="color:rgb(255, 85, 114)">script</span><span class="token tag punctuation" style="color:rgb(199, 146, 234)">&gt;</span><span class="token plain"></span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">    </span><span class="token tag punctuation" style="color:rgb(199, 146, 234)">&lt;</span><span class="token tag" style="color:rgb(255, 85, 114)">script</span><span class="token tag" style="color:rgb(255, 85, 114)"> </span><span class="token tag attr-name" style="color:rgb(255, 203, 107)">type</span><span class="token tag attr-value punctuation attr-equals" style="color:rgb(199, 146, 234)">=</span><span class="token tag attr-value punctuation" style="color:rgb(199, 146, 234)">"</span><span class="token tag attr-value" style="color:rgb(255, 85, 114)">text/babel</span><span class="token tag attr-value punctuation" style="color:rgb(199, 146, 234)">"</span><span class="token tag punctuation" style="color:rgb(199, 146, 234)">&gt;</span><span class="token script language-javascript"></span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token script language-javascript">      </span><span class="token script language-javascript keyword" style="font-style:italic">const</span><span class="token script language-javascript"> </span><span class="token script language-javascript punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token script language-javascript"> </span><span class="token script language-javascript maybe-class-name">React</span><span class="token script language-javascript punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token script language-javascript"> </span><span class="token script language-javascript maybe-class-name">ReactDOM</span><span class="token script language-javascript"> </span><span class="token script language-javascript punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token script language-javascript"> </span><span class="token script language-javascript operator" style="color:rgb(137, 221, 255)">=</span><span class="token script language-javascript"> </span><span class="token script language-javascript dom variable" style="color:rgb(191, 199, 213)">window</span><span class="token script language-javascript punctuation" style="color:rgb(199, 146, 234)">.</span><span class="token script language-javascript property-access">__tmp</span><span class="token script language-javascript punctuation" style="color:rgb(199, 146, 234)">;</span><span class="token script language-javascript"></span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token script language-javascript">      </span><span class="token script language-javascript keyword" style="font-style:italic">delete</span><span class="token script language-javascript"> </span><span class="token script language-javascript dom variable" style="color:rgb(191, 199, 213)">window</span><span class="token script language-javascript punctuation" style="color:rgb(199, 146, 234)">.</span><span class="token script language-javascript property-access">__tmp</span><span class="token script language-javascript punctuation" style="color:rgb(199, 146, 234)">;</span><span class="token script language-javascript"></span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token script language-javascript">      </span><span class="token script language-javascript keyword" style="font-style:italic">function</span><span class="token script language-javascript"> </span><span class="token script language-javascript function maybe-class-name" style="color:rgb(130, 170, 255)">MyApp</span><span class="token script language-javascript punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token script language-javascript punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token script language-javascript"> </span><span class="token script language-javascript punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token script language-javascript"></span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token script language-javascript">        </span><span class="token script language-javascript keyword control-flow" style="font-style:italic">return</span><span class="token script language-javascript"> </span><span class="token script language-javascript operator" style="color:rgb(137, 221, 255)">&lt;</span><span class="token script language-javascript">h1</span><span class="token script language-javascript operator" style="color:rgb(137, 221, 255)">&gt;</span><span class="token script language-javascript maybe-class-name">Hello</span><span class="token script language-javascript punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token script language-javascript"> world</span><span class="token script language-javascript operator" style="color:rgb(137, 221, 255)">!</span><span class="token script language-javascript operator" style="color:rgb(137, 221, 255)">&lt;</span><span class="token script language-javascript operator" style="color:rgb(137, 221, 255)">/</span><span class="token script language-javascript">h1</span><span class="token script language-javascript operator" style="color:rgb(137, 221, 255)">&gt;</span><span class="token script language-javascript punctuation" style="color:rgb(199, 146, 234)">;</span><span class="token script language-javascript"></span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token script language-javascript">      </span><span class="token script language-javascript punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token script language-javascript"></span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token script language-javascript">      </span><span class="token script language-javascript keyword" style="font-style:italic">const</span><span class="token script language-javascript"> container </span><span class="token script language-javascript operator" style="color:rgb(137, 221, 255)">=</span><span class="token script language-javascript"> </span><span class="token script language-javascript dom variable" style="color:rgb(191, 199, 213)">document</span><span class="token script language-javascript punctuation" style="color:rgb(199, 146, 234)">.</span><span class="token script language-javascript method function property-access" style="color:rgb(130, 170, 255)">getElementById</span><span class="token script language-javascript punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token script language-javascript string" style="color:rgb(195, 232, 141)">'root'</span><span class="token script language-javascript punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token script language-javascript punctuation" style="color:rgb(199, 146, 234)">;</span><span class="token script language-javascript"></span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token script language-javascript">      </span><span class="token script language-javascript keyword" style="font-style:italic">const</span><span class="token script language-javascript"> root </span><span class="token script language-javascript operator" style="color:rgb(137, 221, 255)">=</span><span class="token script language-javascript"> </span><span class="token script language-javascript maybe-class-name">ReactDOM</span><span class="token script language-javascript punctuation" style="color:rgb(199, 146, 234)">.</span><span class="token script language-javascript method function property-access" style="color:rgb(130, 170, 255)">createRoot</span><span class="token script language-javascript punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token script language-javascript">container</span><span class="token script language-javascript punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token script language-javascript punctuation" style="color:rgb(199, 146, 234)">;</span><span class="token script language-javascript"></span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token script language-javascript">      root</span><span class="token script language-javascript punctuation" style="color:rgb(199, 146, 234)">.</span><span class="token script language-javascript method function property-access" style="color:rgb(130, 170, 255)">render</span><span class="token script language-javascript punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token script language-javascript operator" style="color:rgb(137, 221, 255)">&lt;</span><span class="token script language-javascript maybe-class-name">MyApp</span><span class="token script language-javascript"> </span><span class="token script language-javascript operator" style="color:rgb(137, 221, 255)">/</span><span class="token script language-javascript operator" style="color:rgb(137, 221, 255)">&gt;</span><span class="token script language-javascript punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token script language-javascript punctuation" style="color:rgb(199, 146, 234)">;</span><span class="token script language-javascript"></span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token script language-javascript">    </span><span class="token tag punctuation" style="color:rgb(199, 146, 234)">&lt;/</span><span class="token tag" style="color:rgb(255, 85, 114)">script</span><span class="token tag punctuation" style="color:rgb(199, 146, 234)">&gt;</span><span class="token plain"></span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">  </span><span class="token tag punctuation" style="color:rgb(199, 146, 234)">&lt;/</span><span class="token tag" style="color:rgb(255, 85, 114)">body</span><span class="token tag punctuation" style="color:rgb(199, 146, 234)">&gt;</span><span class="token plain"></span><br></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token tag punctuation" style="color:rgb(199, 146, 234)">&lt;/</span><span class="token tag" style="color:rgb(255, 85, 114)">html</span><span class="token tag punctuation" style="color:rgb(199, 146, 234)">&gt;</span><br></div></code></pre></div></div>
<p>You can also use <a href="https://codepen.io/tripu/pen/ZYbLoro" target="_blank" rel="noopener noreferrer" class="">this equivalent CodePen</a>.</p>
<p>(Needless to say, this is <em>not</em> the set-up that you want to deploy your precious application
for end users!)</p>]]></content>
        <category label="in-English" term="in-English"/>
        <category label="work" term="work"/>
        <category label="programming" term="programming"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[2025 resolutions mid-year checkpoint]]></title>
        <id>https://blog.tripu.info/2025-checkpoint</id>
        <link href="https://blog.tripu.info/2025-checkpoint"/>
        <updated>2025-07-06T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[(More than) half of the year is over already, and I thought I should update you on my]]></summary>
        <content type="html"><![CDATA[<p>(More than) half of the year is over already, and I thought I should update you on my
<a class="" href="https://blog.tripu.info/2025-resolutions">new year's resolutions for 2025</a>.</p>
<p>Put some pressure on me!</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="books">Books<a href="https://blog.tripu.info/2025-checkpoint#books" class="hash-link" aria-label="Direct link to Books" title="Direct link to Books" translate="no">​</a></h2>
<p><strong>Read all books in my top ten</strong>: 👍 looking good; mostly accomplished already.</p>
<p>As I anticipated, <a href="https://thegreatestbooks.org/" target="_blank" rel="noopener noreferrer" class="">the list</a> has changed a bit
in the last months.
During the first semester of the year I did read two from the (old) top ten (the last volume
of <em>In Search of Lost Time</em> and <em>Anna Karenina</em>), but I just saw that <strong>William Faulkner</strong>
moved up the ranking, and now I'm still missing one:</p>
<ol>
<li class=""><del>Ulysses</del> ✔️</li>
<li class=""><del>In Search of Lost Time</del> (seven volumes) ✔️</li>
<li class=""><del>The Great Gatsby</del> ✔️</li>
<li class=""><del>The Catcher in the Rye</del> ✔️</li>
<li class=""><del>One Hundred Years of Solitude</del> ✔️</li>
<li class=""><del>Nineteen Eighty Four</del> ✔️</li>
<li class=""><del>Moby-Dick</del> ✔️</li>
<li class="">The Sound and the Fury</li>
<li class=""><del>Don Quixote</del> ✔️</li>
<li class=""><del>Anna Karenina</del> ✔️</li>
</ol>
<p>I'm chill about this, because: a) as I said, this goal is instrumental, and the “top
ten” will always change anyway; b) I have been dutifully reading what I thought I ought to
read for the past ten years, so I <em>know</em> I am good at this (public new year's resolutions or not);
and c) I still have six months to read <em>The Sound and the Fury</em> if I want to be really strict
about this goal.</p>
<p><strong>Read at least 14 books this year</strong>: 👍 looking okay.</p>
<p>I have read ten books in 2025 already (Goodreads says nine, but that's because I read one that is
missing from its database)… with a caveat: six of those were graphic novels, 150 pages long
on average.
I feel I should discount comics somehow because they tend to be shorter and easier to read.
Reading 14 comics in a year would be too easy.
So I'll count graphic novels as “half a regular book”.</p>
<p>With that, I've read four books plus six “half books”, so seven in total.
Which is exactly half of my goal for the year.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="japanese">Japanese<a href="https://blog.tripu.info/2025-checkpoint#japanese" class="hash-link" aria-label="Direct link to Japanese" title="Direct link to Japanese" translate="no">​</a></h2>
<p><strong>Study “well” often</strong>: ❌ failing miserably.</p>
<p>I sat down to study for a good while (with books, pen and paper) perhaps five or six times
around the beginning of the year&nbsp;—&nbsp;then never again.</p>
<p><strong>Take (and pass) the JLPT N4</strong>: ❌ quite unlikely.</p>
<p>I didn't bother to take the test in July (obviously); now there's only the exam in December.
That one being just five months away, I would probably not pass even if I had some momentum
studying (which I do not have).</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="nutrition">Nutrition<a href="https://blog.tripu.info/2025-checkpoint#nutrition" class="hash-link" aria-label="Direct link to Nutrition" title="Direct link to Nutrition" translate="no">​</a></h2>
<p><strong>Make a conscious effort to plan meals more often; eat a little better; cut on bad food</strong>:
👎 not looking good.</p>
<p>I behaved very well for the first two months of the year or so, cutting back on some snacks,
ingredients and easy meal options that I want to avoid altogether, and eating more of the
good stuff I want.
Then I relapsed and went back to the old ways.
Man, it's amazing the willpower that is required to eat the things that System 2 wants to eat
and not eat the things that System 2 wants to avoid.
It makes me more humble when I'm too quick to judge people who are fat or eat very unhealthy.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="exercise">Exercise<a href="https://blog.tripu.info/2025-checkpoint#exercise" class="hash-link" aria-label="Direct link to Exercise" title="Direct link to Exercise" translate="no">​</a></h2>
<p><strong>Work out better and more often</strong>: 👍 looking very good.</p>
<p>These are my stats for the first semester of the year:</p>
<ul>
<li class=""><strong>Weight-lifting</strong> at the gym: 37 times (once every 5 days)</li>
<li class=""><strong>Running</strong> outside: 15 times (once every 12 days)</li>
<li class=""><strong>Hiking</strong> with family or friends: 11 times (once every 16 days)</li>
<li class=""><strong>Skiing</strong>: 3 days.</li>
</ul>
<p>Between January and June I hit the gym as many times as in all of 2024.
Similar result with hiking: more days out already as in all of 2024.
And at this pace, I'll end 2025 with as many running sessions as last year, or
a couple more.</p>
<p><strong>Run a half marathon in 2025</strong>: ❓ perhaps.</p>
<p>I have my eye on a couple half marathons in the Autumn.
I have not started training for that specific goal yet, but this year I ran
10 or 11 kilometres a couple of times as regular sessions,
and I know that when the temperature is not too high I can usually go to
12 Km or so without any preparation.
So I know I can get ready for 21 Km in a couple of months of training, once
the date of the event is set.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="finances">Finances<a href="https://blog.tripu.info/2025-checkpoint#finances" class="hash-link" aria-label="Direct link to Finances" title="Direct link to Finances" translate="no">​</a></h2>
<p><strong>Save more money; review our balance sheet and reduce some expenses</strong>:
❌ nothing done yet.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="writing">Writing<a href="https://blog.tripu.info/2025-checkpoint#writing" class="hash-link" aria-label="Direct link to Writing" title="Direct link to Writing" translate="no">​</a></h2>
<p><strong>Finish the short story that I started writing a few years ago</strong>: 👎 not looking good.</p>
<p>I sat down to write twice, then never again.</p>]]></content>
        <category label="in-English" term="in-English"/>
        <category label="personal" term="personal"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[“The Man from the Future: The Visionary Ideas of John von Neumann”]]></title>
        <id>https://blog.tripu.info/von-neumann</id>
        <link href="https://blog.tripu.info/von-neumann"/>
        <updated>2025-07-03T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[⭐⭐⭐]]></summary>
        <content type="html"><![CDATA[<p><a href="https://www.goodreads.com/review/show/5239548955" target="_blank" rel="noopener noreferrer" class="">⭐⭐⭐</a></p>
<p>I am a bit embarrassed to notice that this may be the first “biography” I've ever read.
It probably is.
I'm not sure.</p>
<p>Perhaps due to that lack of experience on my part, I was expecting something
a bit different from <a href="https://wwnorton.com/books/the-man-from-the-future" target="_blank" rel="noopener noreferrer" class="">this book</a>.
I had decided I wanted to read it for one simple reason: to (try to) understand what it's like to be
really, really intelligent.
I had heard all kind of stories about <strong>John von Neumann</strong> and about his feats.
I wanted to delve into that, try to understand how exactly his brain was so different from a normal one.
What it meant for him to be so much smarter than almost everyone around him.
How he thought, what “extremely intelligent” actually means.</p>
<blockquote>
<p><em>“As a child, von Neumann absorbed Ancient Greek and Latin, and spoke French,
German and English as well as his native Hungarian.
He devoured a forty-five-volume History of the world and was able to recite whole chapters verbatim
decades later.”</em></p>
</blockquote>
<p><a href="https://wwnorton.com/books/the-man-from-the-future" target="_blank" rel="noopener noreferrer" class=""><img decoding="async" loading="lazy" alt="The cover of the book" src="https://blog.tripu.info/assets/images/von-neumann-cover-f281a35787ddd6875b2386daa14b6daa.jpeg" width="800" height="1200" class="img_ev3q"></a></p>
<p>Very intelligent people have interested me lately; not so much specific individuals, but in the abstract.
I think this curiosity arose mainly from my face-to-face interactions with
<a href="https://www.altruismoeficaz.es/" target="_blank" rel="noopener noreferrer" class="">local members of the Effective Altruism</a>
and Rationality communities in the last years: I now know quite well that feeling of struggling to keep up
with an impromptu exchange of arguments between two friends, of being the last one at the table
to see the ramifications of some new piece of information, of halting for a while to sweat the mental
arithmetic necessary to make sense of what has just been said&nbsp;—&nbsp;while others
seem capable of merrily bouncing data and ideas all along.</p>
<blockquote>
<p><em>“For […] two hours the men at Rand [Corporation] lectured,
scribbled on blackboards, and brought charts and tables back and forth.
Von Neumann sat with his head buried in his hands.
When the presentation was completed, he scribbled on a pad, […] then said,
‘Gentlemen, you do not need the computer.
I have the answer.’
While the scientists sat in stunned silence, von Neumann reeled off the various steps which
would provide the solution to the problem.
Having risen to this routine challenge, von Neumann followed up with a routine suggestion:
‘Let's go to lunch.’”</em></p>
</blockquote>
<p>But instead of a lineal account of the events in von Neumann's life plus his takes on them,
the author serves us a very wide survey of mathematics, physics, engineering and computer science
from the beginning of the past century up to today.
Almost everything is connected to von Neumann's work in one way or another, but sometimes the link
is distant (in time or in space): there are stretches of several pages discussing theories or
inventions by some renowned figure or another, and the name of von Neumann appears only to
acknowledge that the seeds of those discoveries can be traced back to a paper or a lecture by
him, decades earlier.</p>
<p>The book is great in its own way: many of its pages are captivating, as they tell the stories of
some of the most fascinating ideas in maths and physics.
Game theory, ideas of the infinite, quantum physics, universal computers, automata generating
complexity out of the ether, self-replicating machines and artificial life,
neural networks and artificial intelligence, or the shocking discovery that
<a href="https://en.wikipedia.org/wiki/G%C3%B6del's_incompleteness_theorems" target="_blank" rel="noopener noreferrer" class="">mathematics is neither complete nor consistent</a>.
The historical backdrop is equally extraordinary: the rise of Nazism and other totalitarianisms,
the exodus of European geniuses to the US (especially
<a href="https://en.wikipedia.org/wiki/The_Martians_(scientists)" target="_blank" rel="noopener noreferrer" class="">“Martians”</a>
such as von Neumann), the atomic bomb and the Cold War.</p>
<p>And the names!
I was delighted to see mentioned so many intellectuals that I admire or about whom I have read
a bit:
<strong>Hilbert</strong>, <strong>Gödel</strong>, <strong>Schelling</strong>, <strong>Schrödinger</strong>, <strong>Nash</strong>, <strong>Mandelbrot</strong>, <strong>Heisenberg</strong>,
<strong>Turing</strong>, <strong>Wolfram</strong>, <strong>Russell</strong>, <strong>Feynman</strong>, <strong>Dyson</strong>, <strong>Erdős</strong>, <strong>Conway</strong>, <strong>Penrose</strong>,
<strong>McCarthy</strong>, <strong>Minsky</strong>, etc.
One of the best things I take from the book is a renewed desire to read about science in general,
and about maths and philosophy of science in particular.</p>
<p>Although we get to know the person, his character and his political ideas well enough, we don't get a
precise timeline of von Neumann's domestic life and intimate thoughts.
Perhaps there aren't enough sources for that&nbsp;—&nbsp;and perhaps a proper biography in that
fashion would be boring after all.</p>
<p>There are several hundred footnotes, the majority bibliographical references.
But also funny anecdotes, additional explanations by the author and hyperlinks
to articles and videos online that provide context or additional depth.</p>
<p>In summary, the book is a bit all over the place, but the protagonist and his contemporaries are so
remarkable, the Twentieth Century so fruitful for science, and the author so compelling in his
writing, that I don't mind not having read a “proper biography”.</p>]]></content>
        <category label="in-English" term="in-English"/>
        <category label="book-review" term="book-review"/>
        <category label="science" term="science"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Should I focus on trying to retire?]]></title>
        <id>https://blog.tripu.info/retire</id>
        <link href="https://blog.tripu.info/retire"/>
        <updated>2025-06-25T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Two years ago I realised for the first time that I end up making]]></summary>
        <content type="html"><![CDATA[<p>Two years ago <a class="" href="https://blog.tripu.info/late">I realised for the first time</a> that I end up making
the “right” moves in life, but often I make those changes later than
the average of my peers.</p>
<p>Owning a house, investing money, getting married, having kids…
It's not that I fail at those projects, or shun those life decisions: it's just that sometimes
I get to those places a few years later than would be desirable&nbsp;—&nbsp;judging
with the benefit (and the bias) of hindsight.</p>
<p>That was stating the obvious, I guess.
<em>Of course</em> you want to start earning money earlier rather than later.
<em>Of course</em> you want to travel soon, so that you'll have more time to visit more places in your life.
You'll probably end up marrying and having kids (like most people do), so why postpone it
unnecessarily?
And yet, for me, strangely, that was a novel realisation.</p>
<p><img decoding="async" loading="lazy" alt="tripu, retired on an alternate universe" src="https://blog.tripu.info/assets/images/retired-9b7501fd37a417e29299cd2f516ae3cb.gif" width="1024" height="1024" class="img_ev3q"></p>
<p>Armed with that silly “insight”, in 2023 I noted that</p>
<blockquote>
<p><em>“now that I've spotted a trend in my life trajectory,
it should be ‘easy’ for me to course-correct.
[…]
That means <strong>making an effort to identify the next life goals, and acting quicker to get there</strong>.
And so I have been wondering:<br>
<strong>What are people my age starting to do now?<br>
<!-- -->What will they be doing in a few years' time?</strong>”</em></p>
</blockquote>
<p>Well, in the last year or so I have had a few surprising conversations with
at least four friends (who are more or less my age and lead similar lives),
all pointing in the same direction:
<strong>their desire to retire asap from “work”&nbsp;—&nbsp;and
in some cases, even their ongoing efforts to do just that</strong>.</p>
<p>When that idea had popped up in only one or two casual chats, I didn't give it much import.
After all, there are always some people who find their work extra tiring, or feel stuck
in a career that bores them to the bone.
Those people may long for early retirement, or at least a sinecure
(here in Spain, that means joining the civil service or getting stable employment
at a very large company).</p>
<p>But this “I hope to retire in a few years' time” thing kept surfacing
with more friends I met.
What was going on?</p>
<p>To be fair, <a class="" href="https://blog.tripu.info/late#4-the-idea-lets-not-be-that-late-again">I kind of saw this one coming</a> two years ago, too:</p>
<blockquote>
<p><em>“Some people my age who can afford it […] even retire from work altogether.
What's not to like about that?
Of course I'd want that, too.”</em></p>
</blockquote>
<p><em>Would I</em>, though?</p>
<p>I am still confused about how to frame this, and so I keep on contradicting myself in conversations
(and in posts).
<strong>What does “retiring” mean?</strong></p>
<p>If “retiring” means <strong>“getting the same money you earn now but with no
obligation to work at all”</strong>, then <em>everybody</em> (including me) would like that, right?
After all, if one really likes their job, or derives a lot of meaning from it, or is the kind
of person who needs a job (<em>any</em> job) to rescue them from boredom or from the presence of a family
they don't like or from the angst of existence… well, one can always insist on going to
work “for free”.</p>
<p>If, on the other hand, “retiring” means <strong>“landing a job so comfy and so secure
that in practice one works very little and can stop worrying about money and about old age
altogether”</strong>, then I'm not so sure.
Barring aristocracy, diplomacy, high-end PR, the world of celebrities, etc, it is rare for
a job to be both very comfy <em>and</em> very secure.
Also, the logic of the market tells us that such positions, to the extent they exist at all,
have to score abysmally low in some other important dimension
(occupational hazards, social stigma, poor salary, negative externalities, soul-crushing nature)
or else they would be The Job That Absolutely Everybody Seeks.
Many of the typical public service jobs that seem so coveted in Spain are unappealing to
me&nbsp;—&nbsp;even if they often mean working 35 hours/week with no overtime,
a predictable stream of easy tasks, no stress, generous time off, and employment
virtually guaranteed for life.
Still, I have to admit that getting such a position may be objectively a good move, if you
can live only for the excitement derived from areas of life other than work and you are able
to put up with the tedium of bureaucracy and stagnation until (actual) retirement.</p>
<p>Finally, “retirement” to other people means <strong>“not being on a payroll,
not ‘having a boss’”</strong>.
Those people mostly are (or are trying to become) freelancers, contractors, self-employed,
artisans, artists, entrepreneurs, “content creators”, “influencers”, etc.
If they say they are “retired”, I think they are deluding themselves:
they are working, only not regular jobs.
So for the purpose of the discussion, I will exclude this definition.</p>
<p>Thinking of meaning #1 (ie, proper retirement), this is what I was thinking two years ago:</p>
<blockquote>
<p><em>“The question here, I guess, is whether it's important enough to put the effort and make
the sacrifices necessary to get there some day.
Retiring early is very tough.”</em></p>
</blockquote>
<p>So, is it worth it?</p>
<p>To try to understand this better, <strong>I thought about these four friends of mine</strong>.
This is roughly who they are (they are all male, Spaniards, married or in stable relationships):</p>
<ul>
<li class="">A bit younger than me, one kid, inheritance, sources of passive income,
recently joined an IBEX35-listed company.</li>
<li class="">A bit younger than me, two kids, engineer, employed, sources of passive income.</li>
<li class="">My age, two kids, side gig, more than a decade working at an IBEX35-listed company.</li>
<li class="">A bit older than me, two kids, two decades or more working at an IBEX35-listed company.</li>
</ul>
<p>Now, how do they plan to “retire”?</p>
<ul>
<li class="">One of my friends invested quite successfully years ago and now hopes to grow his portfolio
enough to actually stop working altogether and live off of it (meaning #1, proper retirement).</li>
<li class="">Two other friends have their eyes set on the very generous early retirement programmes
offered by their private employers (meaning #1, proper retirement).
They can't retire just yet, but it seems they could in the not-so-distant future
(a decade or more before
<a href="https://www.lavanguardia.com/mediterranean/20250101/10250593/legal-retirement-age-increase-66-years-8-months-2025-pension-spain-economy.html" target="_blank" rel="noopener noreferrer" class="">the standard retirement age of 67</a>).
And I think one of these two earns nearly as much from a side gig which occupies little of
his time as he gets from his full-time employment.</li>
<li class="">The last one doesn't expect to actually retire any time soon, but looks at his current employer
as the last career stop for him&nbsp;—&nbsp;for the job security, the work-life balance
and the ease of mind (meaning #2, the sinecure).
This one is also building significant wealth and alternate sources of income, so I see him
easily pivoting from #2 to #1 in the future.</li>
</ul>
<p>Here comes yet another very silly insight of mine: by looking at their individual
situations so dispassionately and trying to describe them in writing as I did here,
I noticed common patterns that should have been obvious to me from my conversations
with them.
(Yes, really.)</p>
<ul>
<li class="">Three of them work for one of the
<a href="https://en.wikipedia.org/wiki/IBEX_35" target="_blank" rel="noopener noreferrer" class="">thirty-five largest corporations in Spain</a>
(and two of them have been there for many years).</li>
<li class="">Three of them are benefiting from sheer luck (family inheritances, questionable investments
that worked great in the end) or from an extra shot of industriousness (working harder
than average, finding side gigs, being restless in their careers)&nbsp;—&nbsp;or
from both at the same time.</li>
<li class="">Three of them are the analytical type (number-oriented).</li>
<li class="">Two of them have been watering additional sources of income for years.</li>
<li class="">I know them well enough to say that at least two of them are for sure more intelligent
than me.
Probably the other two are more intelligent than me, too; I honestly don't know.
I'd say I'm in the same ballpark of IQ as the other two.
(I'm trying to be objective here, but at the same time I don't want to conclude that
they are all significantly smarter than me, because that would absolve me of
due introspection and of the responsibility to conduct myself better than I do!)</li>
</ul>
<p>So what are the conclusions of all this?</p>
<p>Conclusion number one: <strong>I guess I am late</strong>.
Again.</p>
<p>I don't feel like retiring.
But then, I didn't feel like settling down or buying an apartment&nbsp;—&nbsp;until I did.
Judging by my peers, I guess I'll be dying to retire in a few years' time, just like them.</p>
<p>Conclusion number two: strangely (I guess) I don't have any desire to <strong>work for a megacorp</strong> <em>today</em>.
I like my messy career of scrubby start-ups, beautiful non-profits that don't pay much,
small companies building a cool product, and so on.
I have switched jobs because I liked the tech, because it allowed me to move abroad (or to
return home), because it let me work from home with no schedule, because it paid well,
or because the organisation was (really)
<a href="https://www.youtube.com/watch?v=qZmpYxbBDQw" target="_blank" rel="noopener noreferrer" class="">making the world a better place</a>.
And yet this has happened to me before: the likes of Inditex, Santander, Repsol, etc. aren't especially
attractive to me <em>today</em>, but perhaps they <em>will</em> be in 2030 or 2035.
<strong>Shall I orient myself towards that goal already, just in case?</strong></p>
<p>Number three: ditto about <strong>a sinecure</strong>.
I do not want an “easy and secure job” <em>today</em>.
Even at a sinecure one needs to spend hours with a computer, answer to a boss,
(probably) commute to an office, ask for days off, justify absences and, well, <em>work</em>.
But, will I want an easy job between now and (actual) retirement?
<strong>Shall I pursue that?</strong></p>
<p>Number four: I should probably be more determined at work, more <strong>focused on long-term career growth</strong>.
Perhaps I should dedicate more time to position myself as one of those serious and reliable
old-time corporate employees, instead of looking for synonyms of “determined”
late at night for a post no-one will read.
Perhaps I should get industry certifications or other titles and work to be promoted within the
same org, instead of studying philosophy or literature for fun and letting myself get captivated
by cool tech or cool start-ups.
I like my job and I am reasonably good at it, but I like so many other things that in certain
areas my CV does not shine as it should.</p>
<p>Number five: I ought to find <strong>additional sources of stable income</strong>.
I already invest what little money I have sensibly enough, but I should work on passive
income and/or side gigs too.
Having that in the future will come handy, no matter how or when I retire.</p>
<p>If ever.</p>
<p>(What do you think?)</p>]]></content>
        <category label="in-English" term="in-English"/>
        <category label="personal" term="personal"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Map of knowledge (1/∞): initial nodes (individuals)]]></title>
        <id>https://blog.tripu.info/knowledge-1</id>
        <link href="https://blog.tripu.info/knowledge-1"/>
        <updated>2025-06-09T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Thinkers]]></summary>
        <content type="html"><![CDATA[<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="thinkers">Thinkers<a href="https://blog.tripu.info/knowledge-1#thinkers" class="hash-link" aria-label="Direct link to Thinkers" title="Direct link to Thinkers" translate="no">​</a></h2>
<p>I asked <strong>Claude</strong>, <strong>ChatGPT</strong>, <strong>Copilot</strong>, <strong>Gemini</strong> and <strong>Grok</strong>:</p>
<blockquote>
<p><em>“<strong>What are the ten most influential thinkers in human history?</strong>
What ten individuals made the most important contributions to philosophy?
They should all be real people who actually existed, about whom we have enough information,
who were original in their ideas, and who continue to be discussed and appreciated.
Consider philosophers, theologians, social scientists, authors, and any other kind of intellectual.”</em></p>
</blockquote>
<p>Results:</p>
<ul>
<li class="">Five mentions: <strong>Aristotle</strong>, <strong>Confucius</strong>, <strong>Immanuel Kant</strong> and <strong>Karl Marx</strong>.</li>
<li class="">Four mentions: <strong>Plato</strong>.</li>
<li class="">Three mentions: <strong>René Descartes</strong> and <strong>Jesus</strong>.</li>
<li class="">Two mentions: <strong>Thomas Aquinas</strong>, <strong>Augustine of Hippo</strong>, <strong>Avicenna</strong>, <strong>Charles Darwin</strong>,
<strong>Sigmund Freud</strong>, <strong>Friedrich Nietzsche</strong> and <strong>Socrates</strong>.</li>
<li class="">One mention (discarded): <del>Buddha</del>, <del>Laozi</del>, <del>John Locke</del>, <del>Muhammad</del>,
<del>John Stuart Mill</del> and <del>Mary Wollstonecraft</del>.</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="leaders">Leaders<a href="https://blog.tripu.info/knowledge-1#leaders" class="hash-link" aria-label="Direct link to Leaders" title="Direct link to Leaders" translate="no">​</a></h2>
<blockquote>
<p><em>“<strong>Who are the ten most influential leaders in human history</strong>,
ie the ten individuals who led the most people and changed the course of events most dramatically?
They should all be real people who actually existed, about whom we have enough information.
Consider heads of government, heads of state, politicians, activists, conquerors, warriors,
explorers, company executives, and any other kind of leadership position, formal or informal.
Consider both negative and positive impact in society.”</em></p>
</blockquote>
<p>Results:</p>
<ul>
<li class="">Five mentions: <strong>Alexander the Great</strong>, <strong>Genghis Khan</strong> and <strong>Mao Zedong</strong>.</li>
<li class="">Four mentions: <strong>Adolf Hitler</strong>, <strong>Julius Caesar</strong> and <strong>Napoleon</strong>.</li>
<li class="">Three mentions: <strong>Abraham Lincoln</strong>, <strong>Jesus</strong>, <strong>Mahatma Gandhi</strong>,
<strong>Martin Luther King, Jr.</strong> and <strong>Muhammad</strong>.</li>
<li class="">Two mentions: <strong>Winston Churchill</strong>.</li>
<li class="">One mention (discarded): <del>Christopher Columbus</del>, <del>Confucius</del>, <del>Buddha</del>,
<del>George Washington</del>, <del>Qin Shi Huang</del> and <del>Queen Elizabeth I</del>.</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="scientists">Scientists<a href="https://blog.tripu.info/knowledge-1#scientists" class="hash-link" aria-label="Direct link to Scientists" title="Direct link to Scientists" translate="no">​</a></h2>
<blockquote>
<p><em>“<strong>Who are the top ten scientists in human history</strong>,
ie the ten individuals who advanced science or technology the most?
They should all be real people who actually existed, about whom we have enough information,
and who made very influential discoveries, formulated very influential theories,
or invented very influential techniques or machines.
Consider scientists, engineers and inventors.
Consider all the sciences (formal sciences, natural sciences, social sciences).”</em></p>
</blockquote>
<p>Results:</p>
<ul>
<li class="">Five mentions: <strong>Albert Einstein</strong>, <strong>Charles Darwin</strong>, <strong>Galileo Galilei</strong>,
<strong>Isaac Newton</strong> and <strong>James Clerk Maxwell</strong>.</li>
<li class="">Four mentions: <strong>Archimedes</strong> and <strong>Marie Curie</strong>.</li>
<li class="">Three mentions: <strong>Alan Turing</strong>, <strong>Louis Pasteur</strong> and <strong>Nikola Tesla</strong>.</li>
<li class="">Two mentions: none.</li>
<li class="">One mention (discarded): <del>Ada Lovelace</del>, <del>Aristotle</del>,
<del>Carl Friedrich Gauss</del>, <del>Gregor Mendel</del>, <del>Johannes Gutenberg</del>,
<del>Johannes Kepler</del>, <del>Leonardo da Vinci</del> and <del>Thomas Edison</del>.</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="artists">Artists<a href="https://blog.tripu.info/knowledge-1#artists" class="hash-link" aria-label="Direct link to Artists" title="Direct link to Artists" translate="no">​</a></h2>
<blockquote>
<p><em>“<strong>Who are the ten most influential artists in human history</strong>,
ie the ten individuals who made the most important contributions to the arts?
They should all be real people who actually existed, about whom we have enough information,
and whose work continues to be discussed and appreciated.
Consider all the arts, all of human history, and all cultures and regions of the world.”</em></p>
</blockquote>
<ul>
<li class="">Five mentions: <strong>Michelangelo</strong>, <strong>Leonardo da Vinci</strong> and <strong>William Shakespeare</strong>.</li>
<li class="">Four mentions: <strong>Johann Sebastian Bach</strong> and <strong>Pablo Picasso</strong>.</li>
<li class="">Three mentions: <strong>Homer</strong> and <strong>Ludwig van Beethoven</strong>.</li>
<li class="">Two mentions: <strong>Akira Kurosawa</strong> and <strong>Murasaki Shikibu</strong>.</li>
<li class="">One mention (discarded): <del>Aretha Franklin</del>, <del>Bharata Muni</del>, <del>Charlie Chaplin</del>,
<del>Confucius</del>, <del>Dante Alighieri</del>, <del>Frank Lloyd Wright</del>, <del>Hokusai</del>, <del>Igor Stravinsky</del>,
<del>Imhotep</del>, <del>Kalidasa</del>, <del>Kukai</del>, <del>Li Bai</del>, <del>Rabindranath Tagore</del>,
<del>Rembrandt</del>, <del>Sergei Diaghilev</del>, <del>Wang Xizhi</del> and <del>the nameless cave painters</del>.</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="final-list">Final list<a href="https://blog.tripu.info/knowledge-1#final-list" class="hash-link" aria-label="Direct link to Final list" title="Direct link to Final list" translate="no">​</a></h2>
<p>Two names made it into <em>two</em> lists: <strong>Jesus</strong> (both a <em>thinker</em> and a <em>leader</em>) and
<strong>Charles Darwin</strong> (both a <em>thinker</em> and a <em>scientist</em>).
(Seems fitting and ironic that those two precisely should represent all of humanity!)
I will give both of them extra weight because of this.</p>
<p>All the rest will get the less weight the fewer mentions they got; eg, those with five mentions
are more relevant than those with four.</p>
<p>The plan is for other (less relevant) individuals to sprout all over the map when we start
pulling threads and zooming in on each concept and connection.
Therefore we need to be able to <em>decrease</em> weights indefinitely.
I'll start with weight <code>0</code> (top ones) and use sequential integers as we progress towards
more obscure individuals: <code>1</code>, <code>2</code>, <code>3</code>, etc.
That way, the actual relevance of a node with weight <em>w</em> can be computed as
something like <em>(10/9)<sup>-w</sup></em>, so that each “level” is 10% less relevant
than the previous one: <code>1.000</code>, <code>0.900</code>, <code>0.810</code>, <code>0.729</code>, etc.</p>
<p>And thus we get <strong>the first 43 nodes of the map of knowledge</strong>:</p>
<ul>
<li class="">Weight <code>0</code>:<!-- -->
<ul>
<li class=""><a href="https://www.wikidata.org/wiki/Q1035" target="_blank" rel="noopener noreferrer" class="">Darwin, Charles</a></li>
<li class=""><a href="https://www.wikidata.org/wiki/Q302" target="_blank" rel="noopener noreferrer" class="">Jesus</a></li>
</ul>
</li>
<li class="">Weight <code>1</code>:<!-- -->
<ul>
<li class=""><a href="https://www.wikidata.org/wiki/Q8409" target="_blank" rel="noopener noreferrer" class="">Alexander the Great</a></li>
<li class=""><a href="https://www.wikidata.org/wiki/Q868" target="_blank" rel="noopener noreferrer" class="">Aristotle</a></li>
<li class=""><a href="https://www.wikidata.org/wiki/Q4604" target="_blank" rel="noopener noreferrer" class="">Confucius</a></li>
<li class=""><a href="https://www.wikidata.org/wiki/Q762" target="_blank" rel="noopener noreferrer" class="">da Vinci, Leonardo</a></li>
<li class=""><a href="https://www.wikidata.org/wiki/Q937" target="_blank" rel="noopener noreferrer" class="">Einstein, Albert</a></li>
<li class=""><a href="https://www.wikidata.org/wiki/Q307" target="_blank" rel="noopener noreferrer" class="">Galilei, Galileo</a></li>
<li class=""><a href="https://www.wikidata.org/wiki/Q720" target="_blank" rel="noopener noreferrer" class="">Genghis Khan</a></li>
<li class=""><a href="https://www.wikidata.org/wiki/Q9312" target="_blank" rel="noopener noreferrer" class="">Kant, Immanuel</a></li>
<li class=""><a href="https://www.wikidata.org/wiki/Q5816" target="_blank" rel="noopener noreferrer" class="">Mao Zedong</a></li>
<li class=""><a href="https://www.wikidata.org/wiki/Q9061" target="_blank" rel="noopener noreferrer" class="">Marx, Karl</a></li>
<li class=""><a href="https://www.wikidata.org/wiki/Q9095" target="_blank" rel="noopener noreferrer" class="">Maxwell, James Clerk</a></li>
<li class=""><a href="https://www.wikidata.org/wiki/Q5592" target="_blank" rel="noopener noreferrer" class="">Michelangelo</a></li>
<li class=""><a href="https://www.wikidata.org/wiki/Q935" target="_blank" rel="noopener noreferrer" class="">Newton, Isaac</a></li>
<li class=""><a href="https://www.wikidata.org/wiki/Q692" target="_blank" rel="noopener noreferrer" class="">Shakespeare, William</a></li>
</ul>
</li>
<li class="">Weight <code>2</code>:<!-- -->
<ul>
<li class=""><a href="https://www.wikidata.org/wiki/Q8739" target="_blank" rel="noopener noreferrer" class="">Archimedes</a></li>
<li class=""><a href="https://www.wikidata.org/wiki/Q1339" target="_blank" rel="noopener noreferrer" class="">Bach, Johann Sebastian</a></li>
<li class=""><a href="https://www.wikidata.org/wiki/Q7186" target="_blank" rel="noopener noreferrer" class="">Curie, Marie</a></li>
<li class=""><a href="https://www.wikidata.org/wiki/Q352" target="_blank" rel="noopener noreferrer" class="">Hitler, Adolf</a></li>
<li class=""><a href="https://www.wikidata.org/wiki/Q1048" target="_blank" rel="noopener noreferrer" class="">Julius Caesar</a></li>
<li class=""><a class="" href="https://blog.tripu.info/Bonaparte">Napoleon</a></li>
<li class=""><a href="https://www.wikidata.org/wiki/Q5593" target="_blank" rel="noopener noreferrer" class="">Picasso, Pablo</a></li>
<li class=""><a href="https://www.wikidata.org/wiki/Q859" target="_blank" rel="noopener noreferrer" class="">Plato</a></li>
</ul>
</li>
<li class="">Weight <code>3</code>:<!-- -->
<ul>
<li class=""><a href="https://www.wikidata.org/wiki/Q9191" target="_blank" rel="noopener noreferrer" class="">Descartes, René</a></li>
<li class=""><a href="https://www.wikidata.org/wiki/Q1001" target="_blank" rel="noopener noreferrer" class="">Gandhi, Mahatma</a></li>
<li class=""><a href="https://www.wikidata.org/wiki/Q6691" target="_blank" rel="noopener noreferrer" class="">Homer</a></li>
<li class=""><a href="https://www.wikidata.org/wiki/Q8027" target="_blank" rel="noopener noreferrer" class="">King, Martin Luther, Jr.</a></li>
<li class=""><a href="https://www.wikidata.org/wiki/Q91" target="_blank" rel="noopener noreferrer" class="">Lincoln, Abraham</a></li>
<li class=""><a href="https://www.wikidata.org/wiki/Q9458" target="_blank" rel="noopener noreferrer" class="">Muhammad</a></li>
<li class=""><a href="https://www.wikidata.org/wiki/Q529" target="_blank" rel="noopener noreferrer" class="">Pasteur, Louis</a></li>
<li class=""><a href="https://www.wikidata.org/wiki/Q9036" target="_blank" rel="noopener noreferrer" class="">Tesla, Nikola</a></li>
<li class=""><a href="https://www.wikidata.org/wiki/Q7251" target="_blank" rel="noopener noreferrer" class="">Turing, Alan</a></li>
<li class=""><a href="https://www.wikidata.org/wiki/Q255" target="_blank" rel="noopener noreferrer" class="">van Beethoven, Ludwig</a></li>
</ul>
</li>
<li class="">Weight <code>4</code>:<!-- -->
<ul>
<li class=""><a href="https://www.wikidata.org/wiki/Q8006" target="_blank" rel="noopener noreferrer" class="">Kurosawa, Akira</a></li>
<li class=""><a href="https://www.wikidata.org/wiki/Q8018" target="_blank" rel="noopener noreferrer" class="">Augustine of Hippo</a></li>
<li class=""><a href="https://www.wikidata.org/wiki/Q8011" target="_blank" rel="noopener noreferrer" class="">Avicenna</a></li>
<li class=""><a href="https://www.wikidata.org/wiki/Q9358" target="_blank" rel="noopener noreferrer" class="">Nietzsche, Friedrich</a></li>
<li class=""><a href="https://www.wikidata.org/wiki/Q81731" target="_blank" rel="noopener noreferrer" class="">Murasaki Shikibu</a></li>
<li class=""><a href="https://www.wikidata.org/wiki/Q9215" target="_blank" rel="noopener noreferrer" class="">Freud, Sigmund</a></li>
<li class=""><a href="https://www.wikidata.org/wiki/Q913" target="_blank" rel="noopener noreferrer" class="">Socrates</a></li>
<li class=""><a href="https://www.wikidata.org/wiki/Q9438" target="_blank" rel="noopener noreferrer" class="">Thomas Aquinas</a></li>
<li class=""><a href="https://www.wikidata.org/wiki/Q8016" target="_blank" rel="noopener noreferrer" class="">Churchill, Winston</a></li>
</ul>
</li>
</ul>]]></content>
        <category label="in-English" term="in-English"/>
        <category label="knowledge" term="knowledge"/>
    </entry>
</feed>