ManzDev

@manz.dev

@Twitch Partner | Web developer & Engineer | http://manz.dev Content creator at http://lenguajeJS.com | I❤️HTML/CSS/JS FullStack teacher at @eoi | «Odio quedarme a med

🔥 ¡Nuevo video en Youtube! 🔥 OPENCODE + OLLAMA INTELIGENCIA ARTIFICIAL 100% LOCAL ✅ Uso de modelos locales con ollama ✅ Modelos cuantizados ✅ Usar Opencode con modelos locales ✅ Customizar modelos con Modelfile (estilo docker) 👇 Links

Inteligencia Artificial 100% local usando Opencode con Ollama

🔥 ¡Nuevo video! Tutorial de ComfyUI 🔥 ✅ ComfyUI: Herramienta para crear imágenes ✅ En local: GRATIS y sin suscripciones ✅ Conceptos y modelos para utilizar ✅ Explicaciones con workflows de ejemplo 👇 Link

Bild

¡Este domingo 1/MAR empieza la FASE 2 del BOOTCAMP GRATUITO de Desarrollo web moderno. ✅ Bases de HTML ✅ Etiquetas (desde `<div>` hasta `<template>`) ✅ Semántica, accesibilidad y rendimiento ✅ HTML-first y mejora progresiva ✅ Novedades (diálogos, popovers, invokers...) 👇

Bild

La clase del Bootcamp de ayer, creo que ha sido la mejor con diferencia. El feedback ha sido buenísimo. ¿Qué te pareció? ✅ Inteligencia Artificial y LLM ✅ Agentes: OpenCode ✅ Usamos Ollama como LLM local ✅ Usamos ComfyUI en local para generar imágenes 👇 ¡Tienes ya la clase en Youtube!

Bild

El próximo JUEVES 19, tendremos la cuarta clase del Bootcamp gratuito: Inteligencia Artificial. ✅ Inteligencia Artificial y LLM ✅ IA: Modalidad cloud vs local ✅ Instalación y uso de Ollama (LLM locales) ✅ Modelos LLM y agentes (OpenCode) ✅ IA Generativa: Workflows con ComfyUI 👇 Enlaces abajo

Día 4 del Bootcamp (Fase 1): Clase de Inteligencia Artificial.

¡Este domingo 15, nueva clase del Bootcamp gratuito! ✅ Día 1: WSL y Terminal de Linux ✅ Día 2: Fundamentos de Javascript 📆 Día 3: Control de proyectos JS Vamos a aprender a crear y gestionar un proyecto Javascript usando herramientas como pnpm, node, oxc y usando git y GitHub. 👇 Enlaces abajo

Día 3: Control de proyectos (Fase 1)
Tercera clase del Bootcamp gratuito ManzDev 2026 donde aprenderemos, entre otras cosas, a crear y gestionar un proyecto Javascript utilizando pnpm, node, usando un linter moderno (oxc), git, y usando GitHub, desplegando en GitHub Pages.

¡Ya está disponible la segunda clase del Bootcamp! FUNDAMENTOS DE JAVASCRIPT ✨ Variables (const, let e using) ✨ Tipos de datos (String, Map... y hasta Symbol) ✨ Condicionales y bucles ✨ Funciones (Arrow functions incluidas) ✨ Clases 👇 Enlace al video abajo

Fundamentos de programación en Javascript, protagonizado por nuestro gato robot de Javascript.

¡Ya está publicada la clase del domingo 8 en Youtube! ✅ Clase 1: Instalación WSL + Terminal de Linux ✅ Clase 2: Fundamentos + Bases de Javascript 📆 Clase 3 (15/FEB): Bases de Git + PNPM + OXC 📆 Clase 4 (19/FEB): Inteligencia Artificial + IA local 👇 Enlaces abajo

Progreso (timeline) del Bootcamp ManzDev 2026 que estamos emitiendo en Twitch/Youtube los fines de semana:

Clase 1: Instalación WSL + Terminal de Linux
Clase 2: Fundamentos + Bases de Javascript
Clase 3 (próximamente): Bases de Git + PNPM + OXC
Clase 4 (desbloqueable): Inteligencia Artificial + IA local

Ya están disponibles las dos primeras clases (Terminal y Fundamentos) en Youtube.

¡Mañana, 8/FEB, seguimos con el Bootcamp gratuito! ✨ Recuerda: Bootcamp enfocado en ENTENDER. ✨ Todos los domingos, en Twitch y Youtube. ✨ En la web tienes más información. ✨ Si te perdiste la primera sesión, ¡video en la web! ✨ Mañana: Fundamentos de programación / Javascript. 👇 Links abajo

Bild

¡Ayer comenzamos el Bootcamp gratuito de Desarrollo web en Twitch/Youtube! ¡Más de 300 usuarios simultáneos entre ambas plataformas! ¡Un domingo! ¡Gracias a todos! 💖 👇 Tienes el contenido en la web del Bootcamp

Bild

⌛ ¡Sólo falta una semana y arrancamos! ✅ Bootcamp de fundamentos web ✅ Inicio: 1 de FEBRERO ✅ Twitch / Youtube ✅ Todos los domingos ✅ Gratuito 🚀 ¿Vienes a aprender conmigo?

💜 ¡Acabo de lanzar la nueva HTML Cheatsheet 2026! ✅ Separados por temática y subcategorías ✅ Etiquetas HTML/SVG y atributos modernos ✅ Modos de Scripting (módulos, maps, rules...) ✅ Capacidades multimedia de HTML ✅ Formato PDF lista para imprimir 👇

Etiquetas HTML: Sintaxis, etiquetas de documento, metadatos, relaciones, modalidades de carga, SEO y redes sociales, formularios, validaciones, agrupación, texto, enlaces, tablas, multimedia (audio/video), iframes, scripting y SVG.

💜 ¡Comandos de terminal! ¡Nueva Cheatsheet 2026! ✅ Separados por temática y subcategorías ✅ Alternativas modernas a comandos clásicos ✅ Colores para indicar si son Rust/Go/Python ... ✅ Recetas para instalar ciertas herramientas ✅ Formato PDF lista para imprimir 👇

Comandos de terminal: Ayuda, usuarios, ficheros y carpetas, herramientas de red, descarga, editores y exploradores de archivos, manipulación de texto, shell y comandos de instalación, multimedia, inteligencia artificial, etc...

¡Tengo algo que anunciar! ¡El próximo 1/FEB comenzamos Bootcamp gratuito de Desarrollo web en Twitch/Youtube! ✅ Prioridad: entender los fundamentos ✅ Enfoque moderno ✅ Tienes el temario en la web ✅ Si tienes alguna duda, visita la FAQ 👇 ¡Comparte y sígueme en redes para no perdértelo!

Bootcamp Manz.dev: ¡A partir de Febrero, una clase semanal explicando las bases del desarrollo web para todo aquel que le interese!

🎨 ¡Modern CSS Cheatsheets 2026! ¡Acabo de lanzar las nuevas Cheatsheets CSS! Incluye: ✅ Descargable en PDF ✅ Color + Box Model + Corner Shape ✅ Fonts + Efectos + Masks + Shapes ✅ Animaciones + Flex + Grid + Anchor Position ✅ Matemáticas + Lógica CSS + Condicionales ⬇ ¡Y mucho más!

Modern CSS Cheatsheets: CSS Syntax, Color models, CSS Box model, Fonts and text, MultiColumns, Background, Images, CSS Rules, Effects, Masks, CSS Shapes, Animations, Transforms, Flex, Grid, Position, Anchor Position, CSS Logic and Conditionals.

Una de las limitaciones de Flex y Grid era no poder colocar líneas divisorias a las celdas. Con la nueva propiedad CSS `rule` de Decoration Gaps podemos crear esas decoraciones a los gaps de nuestro diseño: ✅ Propiedades `column-rule-*` ✅ Atajos `rule` 👇 Te la explico abajo

<div class="grid">
  ...
</div>

<style>
.grid {
  display: grid;
  grid-template-columns: repeat(5, 40px);
  grid-template-rows: repeat(5, 40px);
  place-items: center;
  width: max-content;
  border: 2px solid black;

  rule: 1px dotted black;
  gap: 2px;
}
</style>

📘 Principios de OOP 📘 ¿Existen también para CSS? Uno de los principales problemas de CSS es que los DESARROLLADORES ❌no se preocupan en aprender CSS correctamente. CSS no es OOP, sin embargo, sus principios se pueden aplicar de forma muy similar en CSS... 👇 ¡Observa!

Encapsulación
Abstracción
Herencia
Polimorfismo

¡¿...en CSS?!

(Mucha gente se va a poner nerviosa en este hilo)

📒 Curso gratuito de programación Frontend ¡Inscripciones recién abiertas! Buscamos alumnos interesados en entrar de forma profesional al mundo de la programación, aprendiendo fundamentos, usando la inteligencia artificial y herramientas modernas de forma adecuada. 👇 Link

✅ Bases: Preparación de entorno, terminal y WSL
✅ Diseño: HTML, CSS, Tailwind y DaisyUI
✅ Ecosistema Javascript: NPM, Node, Vite
✅ Frameworks: Vue, Pinia, Vitest, Astro
✅ Herramientas: Firebase/Supabase, Netlify...
✅ Soft skills: Empleabilidad, proyecto, etc...

🚀 ¡Las funciones CSS han llegado a CSS! 🚀 ✅ La regla `@function` permite crear funciones ✅ El nombre de la función se prefija con `--` ✅ Opcionalmente, puedes tipar los parámetros, dar un valor por defecto y tipar la devolución ✅ La propiedad `result` devuelve el valor 👇 Sigue

@function --gradient(--color <color>: rebeccapurple) returns type(<image>) {
  --color1: color-mix(in srgb, var(--color), black 60%);
  --color2: color-mix(in srgb, var(--color), black 5%);
  result: linear-gradient(75deg, var(--color1), var(--color2));
}

🥊 DESTRUYENDO MITOS 🥊 Una pregunta que me hacen mucho: ¿Qué es mejor, `getElementById()` o `querySelector()`? Analizamos: 1️⃣ Búsqueda de elementos 2️⃣ Ámbito de búsqueda 3️⃣ ¿Qué devuelve? 4️⃣ Rendimiento 5️⃣ Gestión de errores 6️⃣ Legibilidad de la API 👇

getElementById vs querySelector

getElementById
- Sólo puedes buscar elementos que tengan un ID (menos flexible)
- Es global. Sólo puedes buscar en todo el documento
- Devuelve exactamente el elemento (o null)
- Ligeramente más rápido, irrelevante en la mayoría de los casos (micro-optimización)
- Si se indica un ID inválido, nunca lanza error.
- Expresa intención clara: Obtener elemento por su ID.

querySelector
- Soporta cualquier selector CSS. Muy potente.
- Puedes buscar de forma global o acotada.
- Con querySelector devuelve el primero, con querySelectorAll devuelve una lista con todos los que coinciden.
- Algo más lento, debido al parseo de selectores CSS.
- Si se indica un selector inválido, lanza un error SyntaxError.
- Separación por objetivos: Buscar el primero o todos los elementos.

¡Subido video a Youtube! Debatimos muchas ideas sobre el tema «¿Puede una IA pensar y razonar?» - ¿Qué es realmente pensar y razonar? - La historia de ELIZA - ¿Cómo piensa realmente una IA (LLM)? - Los loros estocásticos - Vibe coding vs Vibe learning - Debate y opiniones del chat 👇 Link

Bild

¡Recuerda que en LenguajeCSS tienes una plataforma para ver de un solo vistazo el soporte en navegadores! ✅ Propiedades, funciones, reglas o selectores CSS ✅ Etiquetas y atributos HTML o SVG ✅ Tipos, APIs y métodos de Javascript ✅ Con posibilidad de filtrar ✅ Haciendo clic te da más información 👇

Bild

📚 Entendiendo el SHADOW DOM ❌ En programación es fácil escribir datos desorganizados y perder el foco ✅ La "encapsulación" consiste en organizar datos y métodos para simplificar y reutilizar ❌ Muchos datos sin organizar: desordenado y confuso ✅ Una clase OOP organiza, simplifica y reutiliza

EVITAR:

const family = {
  name: "Grandfather",
  children: [
    { 
      name: "Uncle", 
      children: []
    },
    { 
      name: "Parent", 
      children: [
        { 
          name: "Child", 
          children: [] 
        }
      ] 
    }
  ]
};

MEJOR:

export default class Person {
  constructor(name) {
    this.name = name;
    this.children = [];
  }

  addChild(child) {
    this.children.push(child);
  }
}

import Person from "./Person.js";

const child = new Person("Child");
const uncle = new Person("Uncle");
const parent = new Person("Parent");
parent.addChild(child);

const family = {
  name: "Grandfather",
  children: [
    uncle,
    parent,
  ]
}

📒 Técnicas y consejos del DOM (2025) 📒 ✨ Busca hijos (descendientes) con .querySelector/All ✨ Busca padres (ancestros) con .closest() ⛔ Evita getElementById() u otros, menos flexibles ✨ Usa .classList y sus métodos para manipular clases ⛔ Evita el uso de .className Sigue 👇

Bild

🚀 Usa tu propio ChatGPT local con Ollama 🚀 🦙 Ollama es el programa (cliente). Puedes descargarlo desde su página oficial (Win/Mac/Linux). 🦙 Su última versión incorpora una interfaz similar a ChatGPT (Win/Mac), donde puedes elegir el modelo a usar y tener historiales con las conversaciones.

Usa tu propio ChatGPT local (Modelos locales de IA, LLM)

1) Ollama es un programa (cliente) que permite cargar modelos de IA* (LLM) con tu propio sistema, sin hacer uso de Internet.

2) Elige y descarga un modelo de IA* (LLM). Tienes muchos modelos para elegir.

🚀 ROADMAP FRONT-END 2025 🚀 ✅ Orden para aprender conceptos y tecnologías ✅ Empieza por pilares: Diseño, desarrollo o terminal ❌ No empieces por frameworks. Aprende la base. ✅ Cuanto más a la derecha, más específico. ✅ Ojo con la IA: Pide explicaciones, no soluciones. 👇

ROADMAP Front-end Development 2025

FUNDAMENTOS/BASES DISEÑO WEB
- Marcado HTML
- Estilos CSS
- TailwindCSS
- CSS Moderno
- Open Props
- Lightning CSS
- SVG

FUNDAMENTOS/BASES DEL DESARROLLO WEB
- Programación (lógica)
- Javascript
- Javascript ESM (Cliente)
- DOM
- NodeJS (o alternativas: Bun, Deno...)
- Typescript
- WebComponents
- Usa un linter/formateador (Eslint, Oxlint, Prettier)
- Usa la IA (con cabeza): ChatGPT, DeepSeek, Claude, Gemini, Grok, o utiliza de forma local Ollama.

USO TERMINAL/AUTOMATIZACIÓN
- Terminal
- Git / GitHub Actions
- PNPM
- Vite / Vitest
- Despliegue: GitHub Pages / Vercel o Netlify si estás empezando
- Despliegue: VPS Digital Ocean / Azure / Google Cloud / AWS

FRAMEWORKS Y ABSTRACCIONES
- React, Zustand, Shadcn
- Vue, Pinia
- Angular, NGRX

CSS EN FRAMEWORKS
- CSS Modules
- PANDACSS
- DAISYUI

METAFRAMEWORKS
- NextJS (si usas React)
- Nuxt (si usas Vue)
- Astro (multiframework)
- Eleventy (si buscas accesibilidad o vanilla JS)

💜 Container Media Queries 💜 ¡Cómo las @media queries, pero mejores! ✅ Media Queries ▶ Tamaño total del navegador ✅ Container Queries ▶ Tamaño del contenedor padre ✅ Se adapta al contenedor donde está ubicado ✅ Ideal para componentes 👇

.container {
  container: card / inline-size;
  max-width: 1024px;
  min-width: 250px;
  overflow: hidden;
  resize: horizontal;
  
  & .item {
    display: flex;
    justify-content: center;
    align-items: center;
    
    @container card (width <= 550px) {
      flex-direction: column;
    }
  }
}

📚 ¿Sabes usar los nuevos Media Queries? 💥 No más `screen` o los molestos mínimos y máximos ✅ Expresiones de rangos flexibles y potentes ✅ ¡Puedes incluso anidar `@media` en el CSS! ✅ Los `media features` detectan otras características, no sólo la pantalla del dispositivo ¿A que son más cómodos? 👇

ANTES:

.container {
  width: 400px;
  height: 400px;
  background: grey;
}

@media screen and (min-width: 800px) and (max-width: 1200px) {
  .container {
    background: indigo;
  }
}

AHORA:

.container {
  width: 400px;
  height: 400px;
  background: grey;
  
  @media (800px <= width <= 1200px) {
    background: indigo;
  }
}

@media (orientation: landscape) {
  background: red;
}

@media (scripting: none) {
  /* No soporta Javascript */
}

@media (pointer: coarse) {
  /* Dispositivo limitado (touch) */
}

@media (display-mode: fullscreen) {
  /* Pulsó F11 (pantalla completa) */
}

🚀 ¡Deja de usar <div> para todo! ¡HTML semántico! ✅ Usa `<picture>` sobre `<img>` (soporte moderno) ✅ Usa bien los encabezados: <h1>, <h2>... ✅ Usa `<hgroup>` en titulares con info adicional ✅ Usa `rel` en los enlaces para dotar semántica Y sobre todo, recuerda... ❌ ¡No uses `<div>` siempre!

Sin semántica:

<div class="card">
  <div class="header">
    <img src="logo.jpg" />
    <div class="title">
      <h1>Título del post</h1>
      <h2>Subtítulo adicional</h2>
    </div>
  </div>
  <p>
    Este es el contenido de texto 
    principal de la tarjeta.
  </p>
  <div class="footer">
    Autor del artículo: 
    <a href="https://manz.dev/">Manz</a>
  </div>
</div>

Con semántica:

<article class="card">
  <header>
    <picture>
      <source srcset="logo.avif">
      <source srcset="logo.webp">
      <img src="logo.png" alt="Logo">
    </picture>
    <hgroup>
      <h1>Título del post</h1>
      <p>Subtítulo adicional</p>
    </hgroup>
  </header>
  <p>
    Este es el contenido de texto 
    principal de la tarjeta.
  </p>
  <footer>
    <p>
      Autor del artículo: 
      <a rel="author" 
        href="https://manz.dev/">Manz</a>
    </p>
  </footer>
</article>