<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Sergio Suárez</title>
    <description>The latest articles on DEV Community by Sergio Suárez (@sergiosuarezgil).</description>
    <link>https://dev.to/sergiosuarezgil</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F110420%2F328af251-09dc-44e0-adcc-fea9ff21da57.png</url>
      <title>DEV Community: Sergio Suárez</title>
      <link>https://dev.to/sergiosuarezgil</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/sergiosuarezgil"/>
    <language>en</language>
    <item>
      <title>OmniMem, IDE RAM monitor :)</title>
      <dc:creator>Sergio Suárez</dc:creator>
      <pubDate>Mon, 17 Aug 2026 22:41:08 +0000</pubDate>
      <link>https://dev.to/sergiosuarezgil/omnimem-mi-extension-para-ide-4npe</link>
      <guid>https://dev.to/sergiosuarezgil/omnimem-mi-extension-para-ide-4npe</guid>
      <description>&lt;h1&gt;
  
  
  OmniMem: el monitor de RAM que creé para VS Code y todos sus forks
&lt;/h1&gt;

&lt;p&gt;Desde aproximadamente 2018 utilizaba una extensión de Visual Studio Code que me resultaba especialmente útil: mostraba directamente en la barra de estado cuánta memoria RAM estaba consumiendo el IDE en comparación con la memoria total instalada en mi equipo.&lt;/p&gt;

&lt;p&gt;Era una funcionalidad sencilla, pero muy práctica.&lt;/p&gt;

&lt;p&gt;No tenía que abrir el monitor del sistema, buscar procesos ni abandonar el editor. Con una mirada rápida a la barra de estado podía saber si el entorno de desarrollo estaba consumiendo más recursos de lo habitual.&lt;/p&gt;

&lt;p&gt;Durante años funcionó perfectamente. El problema apareció cuando empecé a utilizar otros editores.&lt;/p&gt;

&lt;h2&gt;
  
  
  Cuando cambiar de IDE rompe una herramienta útil
&lt;/h2&gt;

&lt;p&gt;En mi entorno de trabajo cambié primero a &lt;strong&gt;Windsurf&lt;/strong&gt; y después a &lt;strong&gt;Devin Desktop&lt;/strong&gt;. En mi entorno personal también empecé a utilizar &lt;strong&gt;Antigravity IDE&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Todos ellos están relacionados con el ecosistema de VS Code, pero la extensión que utilizaba para monitorizar la memoria dejó de funcionar.&lt;/p&gt;

&lt;p&gt;El motivo era bastante habitual en este tipo de herramientas: su implementación dependía de nombres de procesos o rutas específicas de Visual Studio Code.&lt;/p&gt;

&lt;p&gt;Mientras utilizas exactamente VS Code, eso puede ser suficiente. Pero cuando cambias a un fork, los nombres de los ejecutables, procesos auxiliares y aplicaciones cambian:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Visual Studio Code&lt;/li&gt;
&lt;li&gt;Cursor&lt;/li&gt;
&lt;li&gt;Windsurf&lt;/li&gt;
&lt;li&gt;Antigravity IDE&lt;/li&gt;
&lt;li&gt;Devin Desktop&lt;/li&gt;
&lt;li&gt;Trae&lt;/li&gt;
&lt;li&gt;VSCodium&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;La necesidad seguía existiendo, pero la herramienta ya no funcionaba en los editores que utilizaba diariamente.&lt;/p&gt;

&lt;p&gt;Así que decidí crear una alternativa.&lt;/p&gt;

&lt;h1&gt;
  
  
  Así nació OmniMem
&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;OmniMem – IDE RAM Monitor&lt;/strong&gt; es una extensión open source que muestra en tiempo real el consumo de memoria del editor directamente en la barra de estado.&lt;/p&gt;

&lt;p&gt;Su objetivo principal es funcionar no solo en Visual Studio Code, sino también en los diferentes IDE y forks construidos alrededor de su ecosistema.&lt;/p&gt;

&lt;p&gt;Actualmente es compatible con:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Visual Studio Code&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cursor&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Windsurf&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Antigravity IDE&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Devin Desktop&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Trae&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;VSCodium&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Otros forks basados en VS Code y Electron&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;La extensión está disponible tanto en &lt;strong&gt;Visual Studio Marketplace&lt;/strong&gt; como en &lt;strong&gt;Open VSX&lt;/strong&gt;, lo que permite instalarla desde diferentes editores y marketplaces.&lt;/p&gt;

&lt;h1&gt;
  
  
  ¿Qué muestra OmniMem?
&lt;/h1&gt;

&lt;p&gt;OmniMem presenta el consumo de memoria del editor directamente en la barra de estado.&lt;/p&gt;

&lt;p&gt;Por ejemplo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;2.8GB / 16.0GB
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;El primer valor representa la memoria utilizada por los procesos relacionados con el IDE. El segundo muestra la memoria total instalada en el sistema.&lt;/p&gt;

&lt;p&gt;La información se actualiza periódicamente y puede mostrarse utilizando diferentes formatos:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Memoria utilizada y memoria total.&lt;/li&gt;
&lt;li&gt;Solo memoria utilizada.&lt;/li&gt;
&lt;li&gt;Porcentaje de memoria.&lt;/li&gt;
&lt;li&gt;Formato compacto.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;El intervalo de actualización también es configurable.&lt;/p&gt;

&lt;p&gt;La idea es que puedas conocer el consumo del IDE sin interrumpir tu trabajo ni abrir herramientas externas.&lt;/p&gt;

&lt;h1&gt;
  
  
  Un monitor independiente del nombre del editor
&lt;/h1&gt;

&lt;p&gt;Uno de los principales objetivos de OmniMem era evitar que la compatibilidad dependiera de una lista cerrada de nombres de ejecutables.&lt;/p&gt;

&lt;p&gt;En lugar de asumir que el proceso principal siempre se llama &lt;code&gt;Code&lt;/code&gt;, la extensión utiliza información del propio runtime para identificar la instalación y los procesos relacionados con el editor que está ejecutándose.&lt;/p&gt;

&lt;p&gt;Esto permite que la misma extensión funcione en diferentes productos sin mantener una implementación específica para cada uno.&lt;/p&gt;

&lt;p&gt;En macOS, por ejemplo, puede identificar el paquete &lt;code&gt;.app&lt;/code&gt; al que pertenece el proceso:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/Applications/Antigravity IDE.app
/Applications/Windsurf.app
/Applications/Visual Studio Code.app
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A partir de esa información puede localizar los procesos principales, renderizadores, procesos de GPU, Extension Host y otros procesos auxiliares asociados al mismo editor.&lt;/p&gt;

&lt;p&gt;En Linux y Windows se aplican estrategias equivalentes adaptadas a las características de cada sistema operativo.&lt;/p&gt;

&lt;p&gt;El resultado es un enfoque mucho más resistente a los cambios de editor.&lt;/p&gt;

&lt;h1&gt;
  
  
  Detección de extensiones duplicadas
&lt;/h1&gt;

&lt;p&gt;Mientras desarrollaba OmniMem añadí otra funcionalidad que me parecía especialmente útil: la detección de versiones duplicadas de extensiones.&lt;/p&gt;

&lt;p&gt;Con el tiempo, la carpeta de extensiones puede conservar varias versiones de un mismo paquete:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;publisher.extension-1.0.0
publisher.extension-1.1.0
publisher.extension-2.0.0
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Normalmente solo necesitamos la versión activa más reciente, pero las versiones antiguas pueden permanecer almacenadas en disco.&lt;/p&gt;

&lt;p&gt;OmniMem puede analizar el directorio de extensiones, agruparlas por identificador y avisar cuando encuentra varias versiones del mismo paquete.&lt;/p&gt;

&lt;p&gt;La extensión no elimina archivos automáticamente. Simplemente proporciona la información para que el usuario pueda revisarla y decidir qué hacer.&lt;/p&gt;

&lt;h1&gt;
  
  
  Ligera, privada y sin dependencias en tiempo de ejecución
&lt;/h1&gt;

&lt;p&gt;Quería que OmniMem fuese una extensión pequeña y predecible.&lt;/p&gt;

&lt;p&gt;Por eso se ha diseñado con estas características:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Sin servicios externos.&lt;/li&gt;
&lt;li&gt;Sin telemetría.&lt;/li&gt;
&lt;li&gt;Sin envío de información fuera del equipo.&lt;/li&gt;
&lt;li&gt;Sin dependencias en tiempo de ejecución.&lt;/li&gt;
&lt;li&gt;Sin procesos persistentes adicionales.&lt;/li&gt;
&lt;li&gt;Sin modificaciones automáticas de archivos.&lt;/li&gt;
&lt;li&gt;Código abierto bajo licencia MIT.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Toda la información utilizada para calcular el consumo de memoria se obtiene localmente.&lt;/p&gt;

&lt;h1&gt;
  
  
  Instalación
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Visual Studio Marketplace
&lt;/h2&gt;

&lt;p&gt;Si utilizas Visual Studio Code o un editor compatible con su Marketplace, puedes instalar OmniMem desde:&lt;/p&gt;

&lt;p&gt;👉 &lt;a href="https://marketplace.visualstudio.com/items?itemName=SergioSuarezGil.omnimem" rel="noopener noreferrer"&gt;Instalar OmniMem desde Visual Studio Marketplace&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;También puedes buscar lo siguiente desde el panel de extensiones del editor:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;OmniMem
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Open VSX Registry
&lt;/h2&gt;

&lt;p&gt;Para VSCodium, Antigravity IDE y otros editores que utilizan Open VSX:&lt;/p&gt;

&lt;p&gt;👉 &lt;a href="https://open-vsx.org/extension/SergioSuarezGil/omnimem" rel="noopener noreferrer"&gt;Instalar OmniMem desde Open VSX&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Instalación mediante VSIX
&lt;/h2&gt;

&lt;p&gt;Cada versión publicada en GitHub incluye también un archivo &lt;code&gt;.vsix&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Puedes descargarlo desde:&lt;/p&gt;

&lt;p&gt;👉 &lt;a href="https://github.com/SergioSuarezGil/OmniMem-IDE-RAM-Monitor/releases/latest" rel="noopener noreferrer"&gt;Descargar OmniMem desde GitHub Releases&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Después puedes instalarlo desde la interfaz del editor utilizando la opción:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Extensions → Install from VSIX...
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;También puedes hacerlo desde la terminal:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;code &lt;span class="nt"&gt;--install-extension&lt;/span&gt; omnimem-x.y.z.vsix
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;En otros editores solo hay que utilizar su comando correspondiente:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;cursor &lt;span class="nt"&gt;--install-extension&lt;/span&gt; omnimem-x.y.z.vsix
windsurf &lt;span class="nt"&gt;--install-extension&lt;/span&gt; omnimem-x.y.z.vsix
antigravity-ide &lt;span class="nt"&gt;--install-extension&lt;/span&gt; omnimem-x.y.z.vsix
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h1&gt;
  
  
  Configuración
&lt;/h1&gt;

&lt;p&gt;OmniMem permite personalizar el intervalo de actualización y el formato utilizado en la barra de estado.&lt;/p&gt;

&lt;p&gt;Ejemplo de configuración:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"memoryMonitor.refreshIntervalMs"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;5000&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"memoryMonitor.displayFormat"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"used/total"&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Los formatos disponibles permiten elegir entre una vista detallada o una representación más compacta.&lt;/p&gt;

&lt;p&gt;También se puede forzar una actualización manual desde la paleta de comandos:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;OmniMem: Refresh Memory Usage
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Para comprobar extensiones duplicadas:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;OmniMem: Check Duplicate Extensions
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h1&gt;
  
  
  Calidad y automatización
&lt;/h1&gt;

&lt;p&gt;Además de desarrollar la extensión, quería que el proceso de publicación fuese reproducible y seguro.&lt;/p&gt;

&lt;p&gt;El proyecto cuenta actualmente con:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Tests unitarios con &lt;code&gt;node:test&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Cobertura superior al 97 % en líneas.&lt;/li&gt;
&lt;li&gt;Compilación automática con TypeScript.&lt;/li&gt;
&lt;li&gt;Generación y validación del paquete VSIX.&lt;/li&gt;
&lt;li&gt;Publicación automática en Visual Studio Marketplace.&lt;/li&gt;
&lt;li&gt;Publicación automática en Open VSX.&lt;/li&gt;
&lt;li&gt;Creación automática de tags y GitHub Releases.&lt;/li&gt;
&lt;li&gt;Generación del changelog a partir de Conventional Commits.&lt;/li&gt;
&lt;li&gt;Actualización automática del badge de versión del README.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;El proyecto utiliza un flujo basado en ramas:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;feature/* → develop → main
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Las nuevas funcionalidades se integran primero en &lt;code&gt;develop&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Cuando una versión está preparada y validada, se fusiona en &lt;code&gt;main&lt;/code&gt; y el pipeline publica automáticamente la extensión en ambos marketplaces.&lt;/p&gt;

&lt;h1&gt;
  
  
  Un proyecto pequeño nacido de una necesidad real
&lt;/h1&gt;

&lt;p&gt;OmniMem no nació como un intento de construir una herramienta enorme.&lt;/p&gt;

&lt;p&gt;Nació porque había una funcionalidad sencilla que utilizaba todos los días y que dejó de estar disponible cuando cambié de editor.&lt;/p&gt;

&lt;p&gt;En lugar de volver a VS Code únicamente por aquella extensión, decidí crear una solución que no estuviera vinculada a un producto concreto.&lt;/p&gt;

&lt;p&gt;El resultado es una extensión que ahora puedo utilizar en mis diferentes entornos de trabajo y que me gustaría compartir con otros desarrolladores que también alternan entre VS Code y sus distintos forks.&lt;/p&gt;

&lt;h1&gt;
  
  
  ¿Quieres probarla?
&lt;/h1&gt;

&lt;p&gt;OmniMem es completamente open source.&lt;/p&gt;

&lt;p&gt;Si utilizas &lt;strong&gt;VS Code, Cursor, Windsurf, Antigravity IDE, Devin Desktop, Trae, VSCodium&lt;/strong&gt; o cualquier otro fork compatible, me encantaría conocer tu experiencia.&lt;/p&gt;

&lt;p&gt;Las sugerencias, incidencias y contribuciones son bienvenidas.&lt;/p&gt;

&lt;h1&gt;
  
  
  Enlaces
&lt;/h1&gt;

&lt;p&gt;⚡ &lt;strong&gt;GitHub y código fuente&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
&lt;a href="https://github.com/SergioSuarezGil/OmniMem-IDE-RAM-Monitor" rel="noopener noreferrer"&gt;github.com/SergioSuarezGil/OmniMem-IDE-RAM-Monitor&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;🛒 &lt;strong&gt;Visual Studio Marketplace&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
&lt;a href="https://marketplace.visualstudio.com/items?itemName=SergioSuarezGil.omnimem" rel="noopener noreferrer"&gt;Instalar OmniMem desde Visual Studio Marketplace&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;🌐 &lt;strong&gt;Open VSX Registry&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
&lt;a href="https://open-vsx.org/extension/SergioSuarezGil/omnimem" rel="noopener noreferrer"&gt;Instalar OmniMem desde Open VSX&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;📦 &lt;strong&gt;GitHub Releases y descarga del VSIX&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
&lt;a href="https://github.com/SergioSuarezGil/OmniMem-IDE-RAM-Monitor/releases/latest" rel="noopener noreferrer"&gt;Descargar la última versión&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;🐛 &lt;strong&gt;Reportar un problema o proponer una mejora&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
&lt;a href="https://github.com/SergioSuarezGil/OmniMem-IDE-RAM-Monitor/issues/new" rel="noopener noreferrer"&gt;Crear una issue&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;🤝 &lt;strong&gt;Pull requests y contribuciones&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
&lt;a href="https://github.com/SergioSuarezGil/OmniMem-IDE-RAM-Monitor/pulls" rel="noopener noreferrer"&gt;Contribuir al proyecto&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;Si OmniMem te resulta útil, puedes apoyar el proyecto dejando una ⭐ en GitHub, compartiéndolo o enviando tus sugerencias.&lt;/p&gt;

&lt;p&gt;¡Gracias por leer! ⚡&lt;/p&gt;

</description>
      <category>showdev</category>
      <category>software</category>
      <category>tools</category>
      <category>vscode</category>
    </item>
    <item>
      <title>Angular 22</title>
      <dc:creator>Sergio Suárez</dc:creator>
      <pubDate>Tue, 21 Jul 2026 12:08:34 +0000</pubDate>
      <link>https://dev.to/sergiosuarezgil/angular-22-nad</link>
      <guid>https://dev.to/sergiosuarezgil/angular-22-nad</guid>
      <description>&lt;p&gt;♦️Angular 22 llega con mejoras importantes en Signals, accesibilidad, rendimiento, templates y herramientas para desarrollo asistido por IA.&lt;/p&gt;

&lt;p&gt;He preparado esta infografía con un resumen de las novedades más destacadas y de cómo afectan al desarrollo de aplicaciones modernas con Angular.&lt;/p&gt;

&lt;p&gt;¿Qué mejora te parece más interesante?&lt;/p&gt;

&lt;h1&gt;
  
  
  Angular #Angular22 #TypeScript #Frontend #WebDevelopment #SoftwareDevelopment #Signals
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fc5gqqe8cm27vt2nyqmq0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fc5gqqe8cm27vt2nyqmq0.png" alt=" " width="800" height="1200"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>angular</category>
      <category>typescript</category>
      <category>webdev</category>
      <category>programming</category>
    </item>
    <item>
      <title>🚀 Por fin he creado mi web personal</title>
      <dc:creator>Sergio Suárez</dc:creator>
      <pubDate>Sat, 09 May 2026 09:55:01 +0000</pubDate>
      <link>https://dev.to/sergiosuarezgil/por-fin-he-creado-mi-web-personal-2iin</link>
      <guid>https://dev.to/sergiosuarezgil/por-fin-he-creado-mi-web-personal-2iin</guid>
      <description>&lt;p&gt;Durante muchos años fui bastante reacio a crear una web personal o un portfolio.&lt;/p&gt;

&lt;p&gt;No porque no me gustase desarrollar cosas — de hecho, llevo años creando aplicaciones, experimentando con tecnologías frontend y backend, diseñando interfaces y aprendiendo constantemente — sino porque siempre tenía la sensación de que un portfolio debía estar “perfecto” antes de enseñarlo al mundo. Y la realidad es que ese momento nunca termina de llegar.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Hace poco decidí cambiar esa mentalidad.&lt;/strong&gt;&lt;br&gt;
Así que finalmente me animé a crear mi nueva web personal:&lt;/p&gt;

&lt;p&gt;🌐 &lt;a href="https://sergiosuarezgil.com" rel="noopener noreferrer"&gt;sergiosuarezgil.com&lt;/a&gt;￼&lt;/p&gt;

&lt;p&gt;Este proyecto no es solo una página donde listar tecnologías o proyectos.&lt;br&gt;
También es una forma de mostrar cómo entiendo el desarrollo de software y el diseño después de todos estos años trabajando en tecnología.&lt;/p&gt;

&lt;p&gt;He querido darle un estilo muy personal:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;usando mis colores favoritos,&lt;/li&gt;
&lt;li&gt;diseños limpios y modernos,&lt;/li&gt;
&lt;li&gt;animaciones e interacciones cuidadas,&lt;/li&gt;
&lt;li&gt;y una estética que representa tanto mi lado técnico como creativo.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;La idea no era únicamente enseñar proyectos, sino también enseñar evolución, personalidad y pasión por crear productos digitales.&lt;/p&gt;

&lt;p&gt;Dentro de la web hay:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;proyectos en los que he trabajado,&lt;/li&gt;
&lt;li&gt;aplicaciones web,&lt;/li&gt;
&lt;li&gt;experimentos personales,&lt;/li&gt;
&lt;li&gt;desarrollo frontend y backend,&lt;/li&gt;
&lt;li&gt;ideas de diseño,&lt;/li&gt;
&lt;li&gt;y muchas de las tecnologías con las que más disfruto trabajando.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Muchas veces los desarrolladores pasamos años construyendo cosas para empresas, clientes o terceros… y se nos olvida construir algo para nosotros mismos.&lt;/p&gt;

&lt;p&gt;Esta vez decidí hacer justo eso.&lt;/p&gt;

&lt;p&gt;Y sinceramente, me alegro mucho de haber dado el paso.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>portfolio</category>
      <category>html</category>
      <category>programming</category>
    </item>
    <item>
      <title>NestJS 10 - Descubre las novedades</title>
      <dc:creator>Sergio Suárez</dc:creator>
      <pubDate>Wed, 10 Jul 2024 14:05:50 +0000</pubDate>
      <link>https://dev.to/sergiosuarezgil/nestjs-10-ya-esta-aqui-descubre-las-novedades-3am9</link>
      <guid>https://dev.to/sergiosuarezgil/nestjs-10-ya-esta-aqui-descubre-las-novedades-3am9</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frm0px11v2p0jwmzl3b2x.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frm0px11v2p0jwmzl3b2x.png" alt=" " width="800" height="419"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;NestJS&lt;/strong&gt; ha lanzado hace unos meses su versión 10 y viene cargada de mejoras y nuevas funcionalidades que harán las delicias de los desarrolladores. &lt;/p&gt;

&lt;p&gt;Después de varios meses de pruebas y algunos que otro proyecto, te cuento las principales novedades de esta versión:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Integración con SWC&lt;/strong&gt;&lt;br&gt;
La nueva versión de NestJS incorpora SWC, un compilador y agrupador escrito en Rust que promete revolucionar los tiempos de compilación. Comparado con TypeScript, SWC ofrece una velocidad de compilación hasta 20 veces más rápida. Esto significa que los desarrolladores podrán disfrutar de una experiencia de desarrollo mucho más fluida y eficiente.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Sobrescribir módulos en pruebas&lt;/strong&gt;&lt;br&gt;
NestJS 10 facilita aún más las pruebas unitarias al permitir sobrescribir módulos completos. Esta funcionalidad simplifica la creación de mocks y la configuración del entorno de pruebas, lo que resulta en un proceso de testing más limpio y manejable. Ahora, simular el comportamiento de servicios y componentes es más sencillo que nunca.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Suscripciones wildcard en Redis&lt;/strong&gt;&lt;br&gt;
Las suscripciones wildcard llegan a NestJS, mejorando significativamente la flexibilidad de los microservicios. Esta característica permite suscripciones basadas en patrones, lo cual es especialmente útil para sistemas que requieren una alta dinámica en la gestión de eventos y mensajes. Con esta mejora, los desarrolladores podrán diseñar arquitecturas más robustas y adaptables.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. CacheModule independiente&lt;/strong&gt;&lt;br&gt;
El módulo de caché se ha convertido en un paquete independiente (@nestjs/cache-manager). Esto facilita su integración y uso en diferentes proyectos, proporcionando una mayor modularidad y permitiendo a los desarrolladores elegir de forma más precisa las herramientas que necesitan para optimizar sus aplicaciones.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. Compatibilidad y requisitos&lt;/strong&gt;&lt;br&gt;
Para aprovechar todas estas nuevas funcionalidades, es importante tener en cuenta los requisitos de compatibilidad. NestJS 10 requiere Node.js v16 o superior y TypeScript &amp;gt;= 4.8. Asegúrate de actualizar tus entornos de desarrollo para disfrutar de todas las ventajas que trae esta versión.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;NestJS 10&lt;/strong&gt; es una actualización muy completa que promete mejorar significativamente la eficiencia y la flexibilidad del desarrollo con este framework. No dudes en probarlo y explorar todas sus nuevas capacidades!!&lt;/p&gt;

&lt;p&gt;Para más detalles y una &lt;strong&gt;lista completa de cambios&lt;/strong&gt;, puedes consultar el &lt;a href="https://trilon.io/blog/nestjs-10-is-now-available" rel="noopener noreferrer"&gt;anuncio oficial&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;O consultar sus &lt;strong&gt;últimas versiones en&lt;/strong&gt; &lt;a href="https://github.com/nestjs/nest/releases" rel="noopener noreferrer"&gt;Github&lt;/a&gt;&lt;/p&gt;

</description>
      <category>nestjs</category>
      <category>typescript</category>
      <category>backend</category>
    </item>
    <item>
      <title>Webinar: ¿Cómo crear un API con NestJs, GraphQL y MongoDB?</title>
      <dc:creator>Sergio Suárez</dc:creator>
      <pubDate>Fri, 29 Apr 2022 14:13:51 +0000</pubDate>
      <link>https://dev.to/sergiosuarezgil/webinar-como-crear-un-api-con-nestjs-graphql-y-mongodb-3189</link>
      <guid>https://dev.to/sergiosuarezgil/webinar-como-crear-un-api-con-nestjs-graphql-y-mongodb-3189</guid>
      <description>&lt;p&gt;&lt;strong&gt;¿Te gustaría aprender a crear un API con NestJs, GraphQL y MongoDB?&lt;/strong&gt; Este webinar es para ti.&lt;/p&gt;

&lt;p&gt;Link grabación en Youtube: &lt;a href="https://youtu.be/vsHRlt9cFwA" rel="noopener noreferrer"&gt;https://youtu.be/vsHRlt9cFwA&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Veremos una introducción a &lt;strong&gt;Nestjs&lt;/strong&gt;, un popular framework progresivo de &lt;strong&gt;Node.js&lt;/strong&gt; para la creación de aplicaciones eficientes, confiables y escalables del lado del servidor, el cual está construido y es completamente compatible con &lt;strong&gt;TypeScript&lt;/strong&gt;, combinando elementos de la programación orientada a objetos, programación funcional y reactiva.&lt;br&gt;
Junto a Nestjs también veremos &lt;strong&gt;GraphQL&lt;/strong&gt;, una alternativa a las API REST, que permite que los desarrolladores creen consultas para extraer datos de varias fuentes en una sola llamada a la API.&lt;/p&gt;

&lt;p&gt;Además usaremos &lt;strong&gt;MongoDB&lt;/strong&gt; que es un sistema de base de datos NoSQL orientado a documentos de código abierto. También usaremos junto a el, el ORM &lt;strong&gt;Mongoose&lt;/strong&gt;, que es una librería que nos permite crear consultas y con otras características como validaciones, construcción de queries, middlewares, conversión de tipos y muchas mas cosas.&lt;/p&gt;

&lt;p&gt;Crearemos una API sencilla para saber como usar el cli de NestJs, conoceremos como funcionan los modulos, servicios, resolvers, crearemos los modelos de datos de MongoDB y GraphQL de manera conjunta, crearemos relaciones entre 2 colecciones de Mongo distintas y veremos cómo usar la aplicación Altair GraphQL Client para probar nuestro API cómodamente.&lt;/p&gt;

</description>
      <category>keepcoding</category>
      <category>webinar</category>
      <category>nestjs</category>
      <category>graphql</category>
    </item>
    <item>
      <title>NestJS 8 ¿Qué hay de nuevo?</title>
      <dc:creator>Sergio Suárez</dc:creator>
      <pubDate>Sun, 19 Sep 2021 11:21:23 +0000</pubDate>
      <link>https://dev.to/sergiosuarezgil/nestjs-8-whats-new-nce</link>
      <guid>https://dev.to/sergiosuarezgil/nestjs-8-whats-new-nce</guid>
      <description>&lt;p&gt;Hace muy poco se ha anunciado el lanzamiento oficial de NestJS 8. &lt;/p&gt;

&lt;p&gt;Este es un lanzamiento importante que abarca mejoras en toda toda la plataforma, incluido el framework, numerosas mejoras en los paquetes &lt;strong&gt;@nestjs/graphql&lt;/strong&gt; y &lt;strong&gt;@nestjs/config&lt;/strong&gt;, &lt;strong&gt;CLI&lt;/strong&gt; y se ha actualizado toda la &lt;strong&gt;documentación&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Esta versión trae muchas características geniales y mejoras tan esperadas. Hay demasiados para enumerar aquí, pero echemos un vistazo de alto nivel a algunos de los mejores.&lt;/p&gt;

&lt;p&gt;Si quieres ver la lista completa, click aquí:  &lt;a href="https://github.com/nestjs/nest/releases" rel="noopener noreferrer"&gt;https://github.com/nestjs/nest/releases&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;API versioning&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Tradicionalmente, en las aplicaciones Node.js (y NestJS), el control de versiones de API nunca ha tenido una "forma correcta" de realizarse, ya que hay muchas formas de lograrlo.&lt;/p&gt;

&lt;p&gt;En v8, podrás tener diferentes versiones de tus controladores o rutas individuales ejecutándose dentro de la misma aplicación. También se admiten 3 tipos diferentes de control de versiones: control de versiones de URI, control de versiones de encabezado y control de versiones de tipo de medio.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="p"&gt;@&lt;/span&gt;&lt;span class="nd"&gt;Controller&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="na"&gt;path&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;cats&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;version&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;1&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="c1"&gt;// 👈&lt;/span&gt;
&lt;span class="p"&gt;})&lt;/span&gt;
&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;CatsController&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="p"&gt;@&lt;/span&gt;&lt;span class="nd"&gt;Get&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
  &lt;span class="nf"&gt;findAll&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt; &lt;span class="nx"&gt;string&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;This action returns all cats for version 1&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Lazy-loading modules&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Por defecto, los módulos se cargan activamente, lo que significa que tan pronto como se carga la aplicación, al igual que todos los módulos, sean o no necesarios de inmediato. Si bien esto está bien para la mayoría de las aplicaciones, puede convertirse en un cuello de botella para las aplicaciones/workers que se ejecutan en el entorno sin servidor, donde la latencia de inicio es crucial.&lt;/p&gt;

&lt;p&gt;La carga "lazy loading" puede ayudar a disminuir el tiempo de arranque al cargar solo los módulos requeridos por la invocación de la función sin servidor específica. Además, también puede cargar otros módulos de forma asíncrona una vez que la función sin servidor esté "caliente" para acelerar aún más el tiempo de arranque para llamadas posteriores (conocido como: deferred modules registration).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Template literal types and ConfigService&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Con los tipos de literales de plantilla (template literals) ahora disponibles en TypeScript v4.2, podemos implementar una nueva función que nos permite inferir el tipo de propiedad de un objeto de configuración personalizado anidado, incluso cuando se usa la notación de puntos, como se muestra aquí:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nf"&gt;constructor&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kr"&gt;private&lt;/span&gt; &lt;span class="nx"&gt;configService&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;ConfigService&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;database&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;host&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;string&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;dbHost&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;configService&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;database.host&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;infer&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt; &lt;span class="p"&gt;});&lt;/span&gt;
  &lt;span class="c1"&gt;// typeof dbHost === "string"&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Upgraded dependencies&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Nest v8 finalmente ofrece soporte para Socket.io 4.0 y NATS v2 que no eran compatibles con v7. Además, Nest v8 utilizará la última versión de RxJS (v7).&lt;/p&gt;

&lt;p&gt;Más y mejor en el post oficial de Nest:  &lt;a href="https://trilon.io/blog/announcing-nestjs-8-whats-new" rel="noopener noreferrer"&gt;https://trilon.io/blog/announcing-nestjs-8-whats-new&lt;/a&gt; &lt;/p&gt;

</description>
      <category>typescript</category>
      <category>javascript</category>
      <category>node</category>
      <category>nestjs</category>
    </item>
  </channel>
</rss>
