<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Mamutlove</title><link>https://mamutlove.com/</link><description>Recent content on Mamutlove</description><generator>Hugo -- gohugo.io</generator><language>es</language><managingEditor>alejandro@mamutlove.com (Alejandro Mur)</managingEditor><webMaster>alejandro@mamutlove.com (Alejandro Mur)</webMaster><copyright>2010 - 2026 Mamutlove</copyright><lastBuildDate>Mon, 02 Feb 2026 16:21:37 +0100</lastBuildDate><atom:link href="https://mamutlove.com/index.xml" rel="self" type="application/rss+xml"/><item><title>Tipografía fluida con clamp() CSS</title><link>https://mamutlove.com/blog/tipografia-fluida-con-clamp-css/</link><pubDate>Mon, 02 Feb 2026 16:21:37 +0100</pubDate><author>alejandro@mamutlove.com (Alejandro Mur)</author><guid>https://mamutlove.com/blog/tipografia-fluida-con-clamp-css/</guid><description>Construir una interfaz dinámica con animaciones y responsive a partir de un archivo de Figma es como dar vida al monstruo de Frankenstein, es fácil acabar con algo descontrolado, e inconsistente causado por elementos que no encajan bien, y en parte es por culpa de haber tenido que interpretar el diseño.
El flujo de trabajo Estamos acostumbrados a recibir un Figma con “capturas” de una interfaz, y aunque se obtiene mucha información de los elementos que la componen y además puede haber prototipos que ilustran el estilo de las animaciones, ¿qué pasa con las resoluciones intermedias?</description></item><item><title>Git Log o dónde estoy ahora</title><link>https://mamutlove.com/blog/git-log-o-donde-estoy-ahora/</link><pubDate>Sun, 18 Jan 2026 00:19:14 +0100</pubDate><author>alejandro@mamutlove.com (Alejandro Mur)</author><guid>https://mamutlove.com/blog/git-log-o-donde-estoy-ahora/</guid><description>No hay proyecto en el que no me implique a fondo, voy tan profundo como puedo tratando de entender la idea de negocio y a los usuarios finales para aportar valor desde cualquier parte, pero cuando termino, me olvido de todo con la misma intensidad, así que a veces no sé dónde estoy cuando lo retomo.
Acabo de volver a este repo tras semanas/meses. ¿Qué ha pasado aquí y dónde estoy parado?</description></item><item><title>Temificación en 2025: del modo oscuro a color-scheme y light-dark()</title><link>https://mamutlove.com/blog/temificacion-con-css-en-2025/</link><pubDate>Thu, 06 Nov 2025 10:03:18 +0200</pubDate><author>alejandro@mamutlove.com (Alejandro Mur)</author><guid>https://mamutlove.com/blog/temificacion-con-css-en-2025/</guid><description>Hace algunos años irrumpió con fuerza el dark-mode –modo oscuro–, que parecía originalmente ideado para reducir la fatiga visual del usuario –porque la web, al fin y al cabo, es una red de documentos pensada para leerse sobre pantallas luminosas–, pero rápidamente se volvió muy popular por su sobria estética y elegante frescura. Compañías como Google o Facebook y sistemas operativos como iOS o Android pronto lo adoptaron y la tendencia se expandió ampliamente y pasó a ser un recurso de diseño más.</description></item><item><title>[Proyecto Personal]: Sonificafy</title><link>https://mamutlove.com/blog/proyecto-personal-sonificafy/</link><pubDate>Mon, 07 Apr 2025 10:03:18 +0200</pubDate><author>alejandro@mamutlove.com (Alejandro Mur)</author><guid>https://mamutlove.com/blog/proyecto-personal-sonificafy/</guid><description>Recientemente he lanzado Sonificafy. Un side-project que ideé hace ahora un año y que tenía muchas ganas de construir.
Es un site que transforma cualquier URL pública en sonido, para conocer de una forma divertida cómo suena tu web ✨
Objetivo Materializar una idea y disfrutar con el proceso.
En esta página sobre el proyecto explico mi motivación, los objetivos y el reto que ha supuesto pero, en resumen, buscaba construir algo de principio a fin pero es que además por el camino he encontrado muchas cosas valiosas, una de ellas ha sido poder explorar un montón de roles diferentes.</description></item><item><title>Cómo Recuperar Usuarios en Strapi</title><link>https://mamutlove.com/blog/recuperar-usuarios-strapi/</link><pubDate>Mon, 10 Mar 2025 20:37:02 +0100</pubDate><author>alejandro@mamutlove.com (Alejandro Mur)</author><guid>https://mamutlove.com/blog/recuperar-usuarios-strapi/</guid><description>No es la primera vez que me pasa que no me acuerdo de la constraseña del Strapi de un proyecto que hace tiempo que no toco. A veces, tampoco recuerdo el email con el creé el usuario.
Utiliza siempre uno que funcione y en el que puedas recibir correos. Muy útil para cuando necesitas un enlace de recuperación de una cuenta Así que si no recuerdas ni el email, la buena noticia es que no todo está perdido porque puedes crear nuevos usuarios con el CLI de Strapi.</description></item><item><title>The State of CSS 2024</title><link>https://mamutlove.com/blog/the-state-of-css-2024/</link><pubDate>Sat, 31 Aug 2024 12:06:01 +0200</pubDate><author>alejandro@mamutlove.com (Alejandro Mur)</author><guid>https://mamutlove.com/blog/the-state-of-css-2024/</guid><description>Ya está abierta la encuesta The State of CSS 2024 y creo que participar es una buena idea. Las encuestas tienen algo de aburrido pero hay varias razones por las que es interesante tomar parte en esta. La más evidente es porque recibes conocimiento que te va a ayudar a progresar como desarrollador ya que eventualmente puedes no conocer una propiedad o conjunto de ellas, ya que es difícil estar al día.</description></item><item><title>Emitir Eventos a Medida</title><link>https://mamutlove.com/blog/emitir-eventos-a-medida/</link><pubDate>Fri, 05 Jul 2024 07:42:53 +0200</pubDate><author>alejandro@mamutlove.com (Alejandro Mur)</author><guid>https://mamutlove.com/blog/emitir-eventos-a-medida/</guid><description>Estamos acostumbrados a escuchar eventos y reaccionar a ellos: ejecuto una función cuando ocurre un click aquí, o cuando un usuario hace scroll allá o se dispara un resize porque el viewport ha cambiado. Pero quizá no lo estamos tanto a emitir nuestros propios eventos.
A veces necesitamos saber el estado de una tarea asíncrona de una API, si una librería de terceros ha realizado una acción o queremos comunicar partes diferentes de una web, aplicación o componentes porque una acción de un usuario tiene que disparar un efecto secundario en otro lugar.</description></item><item><title>Cómo y cuándo utilizar :has()</title><link>https://mamutlove.com/blog/como-y-cuando-utilizar-has/</link><pubDate>Tue, 13 Feb 2024 22:21:19 +0100</pubDate><author>alejandro@mamutlove.com (Alejandro Mur)</author><guid>https://mamutlove.com/blog/como-y-cuando-utilizar-has/</guid><description>El año 2023 debía de ser el año de :has() una función de CSS que permite evaluar si un selector “contiene algún otro elemento”, útil para aplicar estilos a un contenedor en función de su contenido, algo parecido al selector padre que nunca llegó a CSS (ni llegará), pero tuvimos que esperar hasta final de año para poder usarlo a discrección, y es que fue entonces cuando Firefox lo implementó y quedaba por fin ampliamente cubierto por la gran mayoría de navegadores.</description></item><item><title>Cambiando Google Analytics por Matomo</title><link>https://mamutlove.com/blog/cambiando-google-analytics-por-matomo/</link><pubDate>Thu, 20 Jul 2023 23:29:03 +0200</pubDate><author>alejandro@mamutlove.com (Alejandro Mur)</author><guid>https://mamutlove.com/blog/cambiando-google-analytics-por-matomo/</guid><description>Recientemente hemos cambiado Google Analytics por Matomo y no podríamos estar más satisfechos.
Aunque recogemos datos de navegación, no hacemos un control exhaustivo de los mismos, pero ya sabes que lo que no se puede medir no existe. Así que añadimos el script de Universal Analytics de Google cuando creamos mamutlove.com
GDPR Hace unos pocos años empezamos a ver cómo de la noche a la mañana las páginas web empezaban a mostrar avisos sobre el uso de cookies (bastante incómodos por cierto), y es que “todo el mundo” dejó para el último momento el notificar que se trackeaba y se recogían datos sobre el comportamiento de los usuarios al navegar por el site y había que hacerlo por ley.</description></item><item><title>Introducción a Cascade Layers</title><link>https://mamutlove.com/blog/introduccion-a-cascade-layers/</link><pubDate>Tue, 13 Jun 2023 22:28:16 +0200</pubDate><author>alejandro@mamutlove.com (Alejandro Mur)</author><guid>https://mamutlove.com/blog/introduccion-a-cascade-layers/</guid><description>Cascade Layers es una manera de organizar los estilos de nuestras aplicaciones separándolos por capas que se apilan unas sobre otras para componer con más control.
Son capas independientes pero permeables, con su propia cascada y lógica de especificidad, que se apilan unas sobre otras, lo que nos permite mantener nuestro código más estructurado, ordenado y fácil de localizar.
Es como si dividiésemos nuestro CSS en diferentes hojas de estilo y las incluyésemos en el documento una a continuación de la anterior con la etiqueta &amp;lt;link&amp;gt; o &amp;lt;style&amp;gt;, pero con un funcionamiento diferente por las reglas de especificidad propias de las capas.</description></item><item><title>Entendiendo Intersection Observer</title><link>https://mamutlove.com/blog/entendiendo-intersection-observer/</link><pubDate>Thu, 02 Mar 2023 23:16:38 +0100</pubDate><author>alejandro@mamutlove.com (Alejandro Mur)</author><guid>https://mamutlove.com/blog/entendiendo-intersection-observer/</guid><description>Cuando construyes una interfaz, una de las peticiones que no falla es que tenga animaciones y efectos de entrada (y a veces de salida) cuando los elementos entran en pantalla. Obviamente tiene que ser en ese momento para que el usuario pueda verlos porque si no, no estarían aportando nada y habrían perdido su valor.
Calculando la posición en pantalla Antes, procedíamos seleccionando el nodo del DOM y calculando su posición dentro del documento, escuchando el evento scroll, además de su posición según sus coordenadas, la altura de la ventana y la posición del scroll.</description></item><item><title>CSS está yendo demasiado lejos</title><link>https://mamutlove.com/blog/css-esta-yendo-demasiado-lejos/</link><pubDate>Tue, 15 Nov 2022 22:33:40 +0100</pubDate><author>alejandro@mamutlove.com (Alejandro Mur)</author><guid>https://mamutlove.com/blog/css-esta-yendo-demasiado-lejos/</guid><description>De un tiempo a esta parte he notado en mí mismo algo de desencanto respecto a CSS, que era mi lenguaje favorito, y no sabía por qué, pero ahora ya lo sé.
Están siendo tiempos excitantes para quienes trabajamos con CSS porque en los últimos años hemos visto cómo se nos ha provisto de herramientas suficientes para codificar diseños modernos, atractivos y cada vez de mayor complejidad.
Hemos pasado de tener que componer maquetas aprovechando efectos secundarios que tenían algunas propiedades, a tener especificaciones enteras y en constante evolución, con propiedades y funciones a medida, ideadas para resolver casos muy concretos.</description></item><item><title>CSS Custom Reset</title><link>https://mamutlove.com/blog/css-reset/</link><pubDate>Sat, 06 Aug 2022 17:31:20 +0200</pubDate><author>alejandro@mamutlove.com (Alejandro Mur)</author><guid>https://mamutlove.com/blog/css-reset/</guid><description>Este es el enésimo artículo sobre hojas de estilo para unificar etiquetas HTML entre navegadores, es decir, para intentar que los diferentes navegadores web las representen visualmente de la misma forma.
Un artículo que no hacía falta escribir porque puedes encontrar de sobra alternativas con una simple búsqueda, pero quería compartir contigo mi visión y mi opinión más que una hoja de estilos, aunque ésta va a ser por donde vamos a empezar.</description></item><item><title>Las 5 reglas WAI-ARIA</title><link>https://mamutlove.com/blog/las-5-reglas-wai-aria/</link><pubDate>Thu, 21 Jul 2022 17:15:03 +0200</pubDate><author>alejandro@mamutlove.com (Alejandro Mur)</author><guid>https://mamutlove.com/blog/las-5-reglas-wai-aria/</guid><description>Al hablar de accesibilidad, a menudo hay mucha confusión entre tantos términos y siglas, y dudas sobre cuándo debemos añadir una capa de accesibilidad extra y cuándo no es necesario. Yo recomiendo siempre ir a la documentación oficial y buscar en las fuentes originales. Aunque no siempre son muy visuales o la información no es del todo fácil de extraer (porque el volumen es grande), en este caso, las 5 reglas WAI-ARIA son fáciles de entender, cortas y sencillas.</description></item><item><title>Entendiendo @use y @forward en Dart Sass</title><link>https://mamutlove.com/blog/use-y-forward-en-dart-sass/</link><pubDate>Mon, 20 Jun 2022 20:01:08 +0200</pubDate><author>alejandro@mamutlove.com (Alejandro Mur)</author><guid>https://mamutlove.com/blog/use-y-forward-en-dart-sass/</guid><description>En los últimos años los preprocesadores de CSS se han hecho muy populares porque permiten escribir CSS de forma programática, lo cuál ha supuesto un importante salto adelante en flexibilidad y potencia a la hora de declarar estilos, siendo Sass el más conocido y usado de entre éstos, y aunque actualmente existen muchas otras formas de estilar nuestras aplicaciones web, como CSS-in-JS en alguno de sus múltiples sabores, PostCSS o CSS modules, el uso de SASS sigue estando muy extendido, como revela el último The State of CSS 2021, y por tanto, sigue siendo una herramienta con largo recorrido.</description></item><item><title>git add --patch</title><link>https://mamutlove.com/blog/git-add-patch/</link><pubDate>Mon, 25 Apr 2022 20:11:54 +0200</pubDate><author>alejandro@mamutlove.com (Alejandro Mur)</author><guid>https://mamutlove.com/blog/git-add-patch/</guid><description>Cuando estás haciendo un componente complejo o una funcionalidad en varios pasos, a veces ocurre que la mente se dispersa y sin quererlo, atacas varios frentes a la vez en lugar de ir de uno a uno, por lo que, cuando vas a commitear, acabas mezclando cosas diferentes en el mismo commit, lo cual no es lo ideal, de ahí la necesidad de utilizar git add --patch.
De acuerdo con la documentación de git el comando ejecuta git add --interactive pero omite el menú de comandos inicial y salta directamente al subcomando parche, lo que en esencia significa que, con este comando, en lugar de añadir el archivo en su totalidad directamente, podemos repasar los cambios que se han hecho sobre el mismo de forma interactiva y decidir cuáles queremos añadir al stage para ser commiteados y cuáles no.</description></item><item><title>Desplegar Hugo usando Pipelines en Bitbucket</title><link>https://mamutlove.com/blog/desplegar-hugo-en-bitbucket/</link><pubDate>Tue, 01 Mar 2022 16:34:16 +0100</pubDate><author>alejandro@mamutlove.com (Alejandro Mur)</author><guid>https://mamutlove.com/blog/desplegar-hugo-en-bitbucket/</guid><description>Estos días atrás los he pasado haciendo un doble desksurfing interno en Redradix para conocer de cerca el rol de DevOps, y para dar a conocer el de maqueta, y ha sido muy gratificante.
Desksurfing es como se llama a la práctica en la que una o varias personas se integran en una empresa ajena con el fin de colaborar durante dos o tres días en sus procesos y dinámicas, para conocer de primera mano otras formas de enfrentarse al día a día, el uso de otras metodologías o tecnologías, favoreciendo así el intercambio de ideas con otros compañeros de profesión y enriqueciéndose mutuamente.</description></item><item><title>Simulador de apuestas de Euromillones usando Javascript</title><link>https://mamutlove.com/blog/simulador-apuestas-javascript/</link><pubDate>Tue, 15 Feb 2022 12:38:58 +0100</pubDate><author>alejandro@mamutlove.com (Alejandro Mur)</author><guid>https://mamutlove.com/blog/simulador-apuestas-javascript/</guid><description>Después de mi primer trabajo serio en la industria -en el que aprendí muchas cosas como por ejemplo que nadie es imprescindible- recibí una compensación económica de 1.800€. En aquel momento me pareció muy buena idea invertir todo ese mismo día en el sorteo de Euromillones, de modo que podía multiplicarlo fácilmente, y si lo perdía, bueno, por suerte no lo necesitaba. Además, creía que en ningún otro momento de mi vida podría dilapidar esa cantidad de dinero tan a la ligera.</description></item><item><title>Sobre las funciones de color RGB, HSL, LCH y LAB</title><link>https://mamutlove.com/blog/rgb-hsl-lch-lab/</link><pubDate>Thu, 04 Nov 2021 10:55:07 +0100</pubDate><author>alejandro@mamutlove.com (Alejandro Mur)</author><guid>https://mamutlove.com/blog/rgb-hsl-lch-lab/</guid><description>Poco a poco empiezan a oírse más comentarios sobre las nuevas funciones para declarar colores en CSS introducidos en el actual documento de trabajo (nivel 4) de la especificación del estándar de color. Y aunque todavía no es recomendación y el soporte de los navegadores es mínimo, parece que continuará adelante.
Como la especificación es muy amplia nos centraremos en entender el paso que se está dando y veremos cómo serán algunas de las nuevas funciones El escenario actual Estarás acostumbrado a declarar colores en CSS usando la notación hexadecimal, funciones rgb o hsl, o usando el nombre de un color.</description></item><item><title>Algunas consideraciones sobre accesibilidad</title><link>https://mamutlove.com/blog/algunas-consideraciones-sobre-accesibilidad/</link><pubDate>Mon, 02 Aug 2021 10:17:05 +0200</pubDate><author>alejandro@mamutlove.com (Alejandro Mur)</author><guid>https://mamutlove.com/blog/algunas-consideraciones-sobre-accesibilidad/</guid><description>Uno de los temas más interesantes e importantes que vemos en el curso que imparto en Fictizia es sobre accesibilidad web. Siempre intento transmitir la idea de que hay que entender el concepto como algo mucho más amplio y no reducirlo a &amp;ldquo;Hagamos nuestro site accesible para invidentes&amp;rdquo; (que suele ser la concepción más extendida), sino que debemos pensar en algo más global.
Desde mi punto de vista, tenemos el deber y la responsabilidad de construir productos digitales universales y accesibles (a los que se puedan acceder) para que puedan ser consumibles y por tanto útiles para las personas, intentando que ni su diseño ni sus funcionalidades supongan una barrera que impidan su uso.</description></item></channel></rss>