<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="/feeds/rss-style.xsl"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>Asmilex.casa</title>
        <link>https://asmilex.casa</link>
        <description>Andrés' personal site.</description>
        <lastBuildDate>Wed, 22 Apr 2026 18:36:44 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>Astro Chiri Feed Generator</generator>
        <language>en-US</language>
        <copyright>Copyright © 2026 Andrés Millán</copyright>
        <atom:link href="https://asmilex.casa/rss.xml" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[Some thoughts on the current computer science higher education]]></title>
            <link>https://asmilex.casa/obsidian/some-thoughts-on-the-current-computer-science-higher-education</link>
            <guid isPermaLink="false">https://asmilex.casa/obsidian/some-thoughts-on-the-current-computer-science-higher-education</guid>
            <pubDate>Wed, 22 Apr 2026 18:36:36 GMT</pubDate>
            <description><![CDATA[Dipping my toes into Haskell —specially since Rust’s core ideas had a big influence on me early on— has been so incredibly fun and enlightening. Ideologically speaking, shredding off years of lacklust...]]></description>
            <content:encoded><![CDATA[<p>Dipping my toes into Haskell —specially since Rust’s core ideas had a big influence on me early on— has been so incredibly fun and enlightening.</p>
<p>Ideologically speaking, shredding off years of lackluster engineering practices in favor of mathematically sound programming feels rather comforting.</p>
<p>No mention of immutability, algebraic data types or functions as first-class citizens of a language during my five years of university; but a lot of «best practices», «programming patterns» and other quasi-universal techniques, derived from languages that set you on the path of riskiness.</p>
<p>Entering the «real world of programming» turns messy rather quickly. Lots of colleagues burned out due to unstable, unpredictable systems — while having no chance of fixing any of those deficiencies (although that conversation feels more political than technical)</p>
<p>Every mathematician or scientist eventually develops a set of personal tricks employed to reduce uncertainty and quickly point you towards success.</p>
<p>For me, that repertoire consists of leaning into the type system — making illegal states unrepresentable and favouring pure computations.</p>
<p>I feel <em>so</em> at ease knowing that, with a sufficiently sound design (and by design, I mean type signatures) and a decent static type checker —not even a compilation step! I mostly work on Python these days— the chances of me deploying a crude  implementation is rather low.</p>
<p>And yeah — crassness aside, the world <em>is</em> complicated: deadlines have to be met, there are no silver bullets in computer science, and so on.</p>
<p>Even so, I wonder how those concepts from a decade ago would have settled with me if, instead of worrying about null pointers or contextless modus-operandi, learnt about monads, category theory and functional programming in general — a more formal, mathematical approach to software engineering.</p>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Diagrams in code for explanations]]></title>
            <link>https://asmilex.casa/obsidian/diagrams-in-code-for-explanations</link>
            <guid isPermaLink="false">https://asmilex.casa/obsidian/diagrams-in-code-for-explanations</guid>
            <pubDate>Wed, 22 Apr 2026 18:36:36 GMT</pubDate>
            <description><![CDATA[2026-04-21 compute expiration time wiretext.app]]></description>
            <content:encoded><![CDATA[<p>2026-04-21 compute expiration time
wiretext.app</p>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Cómo uso obsidian]]></title>
            <link>https://asmilex.casa/obsidian/c%C3%B3mo-uso-obsidian</link>
            <guid isPermaLink="false">https://asmilex.casa/obsidian/c%C3%B3mo-uso-obsidian</guid>
            <pubDate>Wed, 22 Apr 2026 18:36:35 GMT</pubDate>
            <description><![CDATA[Work in progress. Here lie dragons. [Grothendieck said that he couldn’t think without writing](Grothendieck said that he couldn’t think without writing) Antes de comenzar — y, por paradigmático que su...]]></description>
            <content:encoded><![CDATA[<p><em>Work in progress. Here lie dragons.</em></p>
<hr />
<p>[Grothendieck said that he couldn’t think without writing](Grothendieck said that he couldn’t think without writing)</p>
<p>Antes de comenzar — y, por paradigmático que suponga un prefacio de una charla encubierta de teoría de grafos, categorías y arquitectura de información:</p>
<p>La esencia de Obsidian es escribir — escribir para <em>pensar</em>.</p>
<p>Las actividades tangenciales a nuestro sistema de notas deben enfocarse a elevar nuestro proceso de escritura, nunca suplantarlo. Es peligrosamente fácil caer en las garras de la procastinación activa mediante hiperoptimización de la estructura — la intoxicantemente técnica promovida por tu techtuber de confianza[^7] en el que te enseña el <em>purpurina purpurina</em> nuevo método para organizar tu segundo cerebro <em>brilli brilli</em> —zettelkasten, Johnny.decimal organization system, P.A.R.A., o lo que toque esta semana— esperanzándote a que, esta vez sí, serás capaz de tomar notas bien ordenadas; pero ay, necios de nosotros mismos, una semana después, apatía por haber fracasado una vez más. Imponer metodologías antes de siquiera comenzar a trabajar es una receta para el desastre. El caos, bajo control, está bien. Lo importante es poner el culo en la silla —o, si tienes un escritorio elevable, ¿la espalda recta?— y escribir.</p>
<p>La escritura es, quizás, la herramienta cognitiva definitiva que ha inventado la humanidad. No pierdas el foco del objetivo: razonar, aprender, expandir nuestra frontera epistemológica.</p>
<hr />
<p>Asumiré que en mayor o menor medida estamos familiarizados con cómo funciona Obsidian — que los archivos son ficheros de markdown, que se pueden poner negritas, bloques de código y similares, que tiene sistemas de plugins, etc.</p>
<hr />
<p>La gloria y la vergüenza del programa es que ofrece una libertad enorme. A diferencia de la ética del equipo de desarrollo, Obsidian tiene <em>pocas</em> opiniones sobre cómo hacer las cosas. Resulta sencillo sentirnos abrumados sin riendas a las que atarnos.</p>
<p>Soy muy fan de la idea de que Las restricciones nos liberan, y de que El estilo son restricciones consistentes. Pienso que de ese conjunto de reglas autoimpuestas —siendo esa elección propia fundamental para evitar quemarnos— emerge un terreno de juego en el que experimentar, con curiosidad. Así que, yo me he marcado mis propias restricciones.</p>
<p>Las notas, carpetas y etiquetas son conceptos análogos: los tres sirven para proporcionar estructura mediante conexiones con otros elementos. Las carpetas, por tecnicalidades de los sistemas operativos, imponen jerarquías. Las etiquetas a efectos prácticos actúan como notas vacías, sin metadatos ni contendido. Como la nota es el átomo del sistema, y funcionalmente, lo que mayor expresividad tiene en Obsidian, me prohíbo utilizar carpetas[^1] y etiquetas. Las imágenes y los vídeos también siguen el formato de wikilinks, en lugar del original de markdown.</p>
<p>La estructura emerge de las relaciones entre las propias notas. Marco el tipo de relación laxamente: algunas son de pertenencia (lo que yo llamo categoría); otras, de localización, autoría o incluso simples marcas de relación (<em>ey</em> le dices a tu tú del futuro, en forma de texto en un documento, <em>si estás aquí es probable que quieras mirar esta otra nota</em>). Como el número de relaciones que puede tener una nota no está acotado superiormente[^2] —Obsidian es un grafo cíclico dirigido— una nota puede pertenecer a varias categorías.</p>
<p>No permito jerarquías clásicas, como las que emergen de las carpetas. Una nota opta por comportarse libremente como varias cosas. En un sistema de ficheros —el primer sistema de organización que se nos pasa a todos por la cabeza cuando nos metemos en estas movidas— una nota pertenece a una única carpeta. ¿Qué ocurre cuando puede ir en varias? ¿Esa matrícula de la asignatura de primero de carrera que te toca pagar de nuevo (y lo que pica en el bolsillo (y por encima de eso, en el ego)) la guardamos en la carpeta <code>documentación/universidad</code>, o en <code>universidad/segundo año/documentación</code>? Al permitir que las notas se relacionen con varias de ellas se habilita un sistema de organización nuevo, isomorfo a un grafo cíclico dirigido.</p>
<blockquote>
<p>[Ideas, however, resist taxonomies](Ideas, however, resist taxonomies)</p>
</blockquote>
<p>Algunas notas de mi jardín:</p>
<ul>
<li>La Teja Roja es un restaurante de Jaén.</li>
<li>Terence Tao on math smell and narrative as a conductor for good mathematics es una cita de uno de sus papers de matemáticas. Me recordó a su blogpost de comportamientos locales y globales, así que lo enlazo.</li>
<li>python es una categoría y un lenguaje de programación (siendo esta última, a su vez, una categoría).</li>
</ul>
<p>Internamente así luce una nota: un bloque de código yaml (al que se le suele llamar frontmatter, y en Obsidian se conoce como las propiedades) y el contenido en sí mismo.</p>
<pre><code class="language-md">---
categories:
  - "citas"
  - "writing"
source: "Journal with Witch"
---
Write with the intent to kill. Strike, forge and polish like your life is on the line. And stake your life on the kill. That's what it means to write. 
</code></pre>
<p>El nombre de las propiedades no es tan importante como su tipo. Principalmente tenemos fechas, números, binario y texto. Los wikilinks cuentan como texto. Mis gastos vienen acompañados de una fecha de adquisición, el coste y un par de categorías. Este tipo de notas es completamente utilitario, el cuerpo está vacío.</p>
<pre><code class="language-md">&lt;!-- 2026-03-23 Desayuno.md --&gt;
---
categories:
  - "expenses"
  - "restaurante"
adquired: 2026-03-23
graphignore: true
cost: 3
---
</code></pre>
<p>Las propiedades resultan particularmente útiles al computar bases. Más adelantes las vemos.</p>
<hr />
<p>Hemos mencionado categoría varias veces. ¿Qué es una categoría entonces?</p>
<p>Una categoría es una unidad epistemológica que se comporta como una categoría[^3].</p>
<p>Antes de llevarme un navajazo — lo que quiero decir es: elige el orden que te plazca; ¡crea tu propia ontología! ¿Qué es importante para ti? ¿Qué tiene sentido? ¿Son los cereales una sopa? A mí me encanta la matemática, así que distinguir entre las diferentes áreas de investigación me resulta muy útil cuando quiero buscar algo. Sobre music no sé tanto, por lo que no me meto en fregados, me vale con ese tema superficial.</p>
<pre><code class="language-base">formulas:
  № notas: file.backlinks.length
properties:
  formula.:
    displayName: √
views:
  - type: table
    name: Table
    filters:
      and:
        - file.hasLink("Categorías/mathematics")
        - file.hasLink("Categorías/categories")
    order:
      - file.name
      - formula.№ notas
    sort:
      - property: file.name
        direction: DESC
      - property: formula.№ notas
        direction: DESC

</code></pre>
<p>Imagina cómo ordenarías una nueva nota en tu vault. Te entra una tarea de tu proyecto. ¿Sobre qué va? ¿En qué lenguaje? ¿Con qué está relacionada? ¿Cómo de importante es? ¿Tiene fecha límite?</p>
<p>La tabla anterior es una base. A efectos prácticos es una especie de vista de SQL, o una consulta al historial de cambios de Jujutsu con su revset language[^4]. Es un idioma específico con el que realizar computaciones sobre el grafo de relaciones de tu vault. Y merece la pena enfatizar ese punto: <em>computaciones sobre el grafo de relaciones</em>. Eso es (dos puntos) ✨intoxicantemente alucinante✨. De repente nuestro sistema de información deja de estar aislado, y comenzamos a pensar en las consecuencias de componer notas entre sí, y en cómo diferentes operaciones colapsan la información en global; emergiendo de manera funcional nueva información automáticamente, sin necesidad de actualizar el agregador[^5].</p>
<p>Estos son los juegos que me estoy jugando ahora mismo:</p>
<p>[El archivo de videojuegos.base#Jugando…](El archivo de videojuegos.base)</p>
<p>Estos son mis gastos de la semana pasada:</p>
<pre><code class="language-base">views:
  - type: table
    name: Table
    filters:
      and:
        - file.hasLink("Categorías/expenses")
        - adquired &gt; "2026-04-06"
        - adquired &lt; "2026-04-12"
    order:
      - file.name
      - cost
      - adquired
      - file.ctime
    sort:
      - property: adquired
        direction: ASC
      - property: file.name
        direction: DESC
      - property: cost
        direction: DESC
    summaries:
      cost: Sum

</code></pre>
<p>Nuestro orden impuesto recompensado con conocimiento. ¿No resulta elegantemente gratificante?</p>
<hr />
<p>Interaction makes or breaks an experience. Mi proceso de diseño se fundamenta en la idea de que la interacción —y todo lo que lo rodea: feedback, instantaneidad, visualización— determina la <em>diversión</em> y felicidad que experimentamos. If it’s not fun, why bother?</p>
<p>Crear notas debe ser rápido y cómodo. Categorizar debe ser inmediato. Capturar una idea —ah, qué efímeras pueden llegar a ser— a la velocidad del pensamiento. La pereza, por disciplinados que podamos llegar a ser, gana con facilidad.</p>
<p>El método más eficiente de interacción con los ordenadores es el teclado, y me voy a centrar en él a partir de ahora[^6]. <code>cmd-n</code> crea una nota. En cuanto tengas una idea, deberías anotarla. <code>cmd-p</code>  abre notas, y <code>cmd-shift-p</code> ejecuta comandos. El atajo para las notas diarias es <code>cmd-d</code>. Mi teclado tiene los brackets en la homerow (donde habitualmente se colocan el caps. lock y enter) para escribir `` rapidísimamente.</p>
<p>Uso [[vim, en Obsidian también. Lo tiene integrado por defecto. En mi <code>.obsidian.vimrc</code> tengo comandos para añadir propiedades rápidamente. <code>Space c</code> me lleva a <code>categories</code>, <code>Space r</code> a <code>related</code>, <code>Space l</code> a <code>link</code>. Desde cualquier parte del texto me muevo rápidamente al lugar que quiero para anotar.</p>
<p>Guardo páginas web desde el navegador con Obsidian Web Clipper. <code>opt-shift-o</code> y esa nota está directamente en el vault. Algunas páginas como Wikipedia tienen tratamiento especial — extraigo ciertos metadatos clave y los ordeno en propiedades.</p>
<hr />
<p>carga mental
Cómo de fácil es crear una nota en tu sistema? (mental y físicamente).
(todo)</p>
<hr />
<p>ia
(todo)</p>
<hr />
<p>La estructura emerge eventualmente, siempre que estemos dispuestos a escuchar lo que nos pide el sistema. En el fondo Obsidian no deja de ser un conjunto de ficheros de markdown; siempre podemos transformar su organización con El arte de la manipulación de texto plano.</p>
<hr />
<p>Georges Perec Brief Notes on the Art and Manner of Arranging One’s Books</p>
<hr />
<p>tecnicalidades
Syncthing</p>
<hr />
<p>How I use Obsidian (citar inspiración)</p>
<hr />
<p>Permitir el cambio es más importante que categorizarlo de primeras.</p>
<p>[^1]: A excepción de ciertas carpetas clave, como la de templates, .scripts o similares; además de limpieza general de la raíz del vault.</p>
<p>[^2]: al menos, conceptualmente — probablemente nadie quiera ni desee infinitos backlinks en una nota.</p>
<p>[^3]: a tensor is a thing that transforms like a tensor; alternativamente, A monad is just a monoid in the category of endofunctors, what’s the problem</p>
<p>[^4]: chapita de informático friki si sabes lo que es Jujutsu ❤️</p>
<p>[^5]: Esta idea de notas computacionales, de parámetros las propias notas del sistema me recuerda al concepto de Homoiconicity de lisp. ¿Es este un ejemplo de Greenspun’s tenth rule?</p>
<p>[^6]: Mis atajos de teclado están bastante tunneados; quizás diverjan de los que vienen por defecto sustancialmente.</p>
<p>[^7]: Doomscrolling de la feed a modo de evitación, sí soy</p>
]]></content:encoded>
        </item>
    </channel>
</rss>