Read Only Memoriesiamemhnhttps://iamemhn.link//rom/iamemhnikiwiki2023-06-24T19:56:13ZDesde Debian 11 hacia Debian 12: LDAPhttps://iamemhn.link//rom/d11-to-d12-ldap/2023-06-24T19:56:13Z2023-06-24T19:39:11Z
<p>Actualizar Debian entre versiones estables usualmente
es un paseo, excepto cuando no lo es. Leer los
<a href="https://www.debian.org/releases/stable/amd64/release-notes/">Release Notes</a>
completamente y con intención, ahorra tiempo -- después de
todo, fueron escritas por personas que saben mucho más que
uno, y que de verdad hicieron el trabajo.</p>
<p>El directorio LDAP suele ser el sustrato de muchas
instalaciones de servicios AAA y correo electrónico.
Si esa actualización falla, el servicio también. Este
es uno de los pocos servicios que no son triviales de
actualizar de manera automática.</p>
<p><a href="https://iamemhn.link//rom/d11-to-d12-ldap/#more">¿Qué podría salir mal?</a></p>
Advent of Code 2022 -- Day 14https://iamemhn.link//rom/aoc2022-day14/2023-01-10T22:33:11Z2023-01-10T22:14:19Z
<p>This challenge felt like «busy work» more than «creative work».
It boils down to keeping track of a grid's occupied positions,
until a particle goes out of bounds or there's no room for
more particles under the rules.</p>
<p>As usual for «grid-centric» problem solving in Haskell, is better
to use a <code>Map</code> to focus on <em>occupied</em> positions. After defining a
custom <code>Ord</code> instance to sort things the way I needed, it was
mostly «busy work».</p>
<p>The simulation turned out adequate to illustrate why <code>unfoldr</code>
matters, specially when you fuse into an <em>hylomorphism</em>...</p>
<p><a href="https://iamemhn.link//rom/aoc2022-day14/#more">...for the win.</a></p>
Advent of Code 2022 -- Day 13https://iamemhn.link//rom/aoc2022-day13/2023-01-05T01:11:29Z2023-01-05T00:53:37Z
<p>Haskell's type classes group types based on shared behavior.
That's what we mean when we talk about types being <code>Eq</code>, <code>Num</code>,
<code>Functor</code>, <code>Foldable</code>, <code>Monad</code> or whatever. Type classes require
a minimal set of functions a type must support in order to
belong to the class, and then provide derived functions with
default implementations. Parametric polymorphism allows
restrictions to function signatures, so that only types
belonging to particular type classes can be passed as
arguments.</p>
<p>This challenge is a textbook example of how efficient
it is to take advantage of a custom implementation for a
type class...</p>
<p><a href="https://iamemhn.link//rom/aoc2022-day13/#more">...to get things sorted.</a></p>
Advent of Code 2022 -- Day 12https://iamemhn.link//rom/aoc2022-day12/2023-01-03T08:14:11Z2023-01-03T07:47:27Z
<p>If the problem say «find the cheapest/fastest/shortest path»
from here to there, the answer it's Dijkstra's Algorithm.
Anyone who says otherwise is lying or selling something.</p>
<p>The usual trick is turning your input into a graph, in order
to run Dijkstra on it. The real trick is using Dijkstra without
an actual Graph...</p>
<p><a href="https://iamemhn.link//rom/aoc2022-day12/#more">Let me 'splain</a></p>
Advent of Code 2022 -- Day 11https://iamemhn.link//rom/aoc2022-day11/2023-01-03T03:18:53Z2023-01-03T03:00:23Z
<p>This challenge is what we venezuelans describe as «concha
de mango». It is deceptively simple at first, but you'll
inevitable fall in the trap.</p>
<p>Not to worry. You can get out of big trouble, with a little
Chinese magic.</p>
<p><a href="https://iamemhn.link//rom/aoc2022-day11/#more">Try to find big reason before you visit world of magic...</a></p>