Saltar al contenido

El blog de Skatox Entradas

KDE: el documental que nos recuerda la importancia del software libre

Hace unos días vi KDE: The Documentary – The Story of Free Software Underdogs, un documental producido por CultRepo para celebrar los 30 años de KDE, que narra la historia de este proyecto de software libre, uno de los más importantes del mundo. Después de verlo, no solo me pareció excelente, sino que también me recordó aquella época en la que hackers y entusiastas se reunían para crear software libre con el objetivo de mejorar Linux y ofrecer alternativas a los programas propietarios.

Una época en la que muchos proyectos nacían simplemente porque alguien necesitaba una herramienta, no estaba satisfecho con las alternativas existentes y decidía crear la suya para compartirla con el resto del mundo.

La historia de KDE y sus creadores

Una de las cosas que más me gustó del documental es que no se limita a contar la historia del proyecto mediante imágenes antiguas y una narración. Aparecen sus creadores originales, desarrolladores que participaron en diferentes etapas, e incluso nos muestran algunos de los lugares donde se registraron hitos importantes de su desarrollo.

La historia comienza en 1996, cuando Matthias Ettrich publicó un mensaje en Usenet proponiendo crear un entorno de escritorio para Linux. En aquel momento, Linux era principalmente un sistema operativo utilizado por programadores y administradores de sistemas, y las interfaces gráficas disponibles no ofrecían una experiencia tan integrada como la de Windows o Mac OS. La idea era desarrollar un entorno gráfico completo, consistente y fácil de usar, capaz de acercar Linux a más personas. Lo interesante es que aquella publicación terminó reuniendo a desarrolladores de distintas partes del mundo, quienes comenzaron a colaborar en lo que más tarde se convertiría en KDE.

El documental también aborda momentos complicados, como los problemas de licenciamiento de Qt, la aparición de GNOME como alternativa y el polémico lanzamiento de KDE 4. Me gustó ver a los protagonistas contar sus propias experiencias: Matthias Ettrich, Aaron Seigo e incluso Miguel de Icaza, uno de los creadores de GNOME. De esta forma, podemos conocer diferentes perspectivas sobre decisiones que terminaron por influir en el desarrollo del escritorio Linux.

Mi historia utilizando KDE

Cuando comencé a utilizar Linux, uno de los primeros entornos de escritorio que conocí fue KDE 3.5. Sin embargo, no me gustaba demasiado porque, visualmente, se parecía mucho a Windows. Y precisamente una de las razones por las que quería utilizar Linux era tener algo diferente.

Durante un tiempo estuve probando otras alternativas, especialmente GNOME. Sin embargo, cuando apareció GNOME 3, los cambios en su interfaz no terminaron de convencerme. Curiosamente, con KDE me ocurrió exactamente lo contrario.

Cuando probé KDE 4, me gustó bastante su propuesta. Era un escritorio moderno, visualmente atractivo y con muchas opciones de personalización. Aunque fue una versión bastante polémica por los problemas que tuvo al principio, para mí representaba una evolución interesante de lo que podía ser un entorno de escritorio Linux.

Durante algunos años dejé de utilizarlo, pero cuando apareció Plasma 5 regresé a KDE y desde entonces me he mantenido como usuario fiel del proyecto.

Y no tengo muchas razones para cambiarlo.

KDE es una de las suites de software más avanzadas.

Esto puede sonar exagerado, pero considero que KDE Plasma es una de las piezas de software más avanzadas que existen actualmente, después de los navegadores web y el propio Linux. No solo por la cantidad de funcionalidades que ofrece, sino también por la complejidad de mantener un entorno de escritorio completo que funcione en diferentes distribuciones y configuraciones de hardware.

Con KDE puedes modificar prácticamente cualquier aspecto de tu escritorio: paneles, ventanas, efectos visuales, atajos de teclado, escritorios virtuales y mucho más. Puedes crear un escritorio parecido a Windows, macOS o uno completamente personalizado según tu forma de trabajar. Además, KDE no es solo Plasma. Tiene todo un ecosistema de aplicaciones como Dolphin, Konsole, Kate, Okular y KDE Connect.

Lo que más me gusta es que KDE no intenta imponer una única forma de usar tu computadora, sino que te permite adaptarla a tus necesidades. Por supuesto, tantas opciones pueden resultar abrumadoras para los nuevos usuarios, pero personalmente prefiero tener esa libertad de personalización.

Necesitamos más documentales sobre software libre

Después de ver este documental, me quedé pensando en la cantidad de proyectos de software libre que utilizamos a diario y sobre los que sabemos muy poco. Lo interesante de estas producciones es que permiten conocer a las personas detrás del software, sus problemas, discusiones técnicas y decisiones que terminaron por influir en las herramientas que utilizamos actualmente.

También nos recuerdan aquella época de Internet en la que las listas de correo, los foros y las comunidades de hackers eran fundamentales para desarrollar proyectos que terminarían siendo utilizados por millones de personas.

Ojalá veamos más documentales como este sobre proyectos como Debian, Firefox o Blender. Son historias que merecen ser contadas y nos recuerdan la importancia del software libre. Si eres usuario de Linux o simplemente te interesa la historia de la tecnología, te recomiendo ver este documental de KDE:

KDE: The Documentary — The Story of Free Software Underdogs

¿Has utilizado KDE alguna vez? ¿Cuál ha sido tu entorno de escritorio favorito en Linux?

Deja un comentario

10 cosas que aprendí durante la década de los 30

Hace 10 años hice un artículo sobre 20 cosas que aprendí durante la década de los 20, y pues como hoy estoy entrando a una nueva década, decidí tomar un breve tiempo para continuar con esta tradición y compartir un poco sobre mí en este blog.

  1. Ser padre una gran experiencia que ojalá todos pudieran vivir: el mayor cambio en esta década fue ser padre. Me ha cambiado la vida, ahora siento que tengo una misión de cuidar a mi hija, darle una gran experiencia y prepararla para este mundo. Ademas que verla crecer y compartir tiempo con ella es algo que no se puede describir. Desearía que la gente pudiera vivir la paternidad o maternidad y experimentar este sentimiento tan bello.
  2. Para crecer hay que soltar algunas cosas: en estos años tuve que migrar a Colombia, tardé en hacerlo porque no quería soltar algunas cosas porque estaba en mi zona de confort, pero intenté y luego me di cuenta que mi «zona de confort» en realidad no lo era y gracias a Dios he podido crecer poco a poco, soltando esas cosas que te amarran porque te dan estabilidad y confianza pero a su vez te detienen de crecer.
  3. Para tener una mejor vida hay que cuidar el cuerpo: en mis 20s y 30s descuidé mucho mi cuerpo. Me dejé engordar mucho y lidiar con las consecuencias de sobrepeso ha hecho disminuir un poco mi calidad de vida. Sin embargo desde hace un año empecé en gimnasio y me ha ido mejor porque siento una gran diferencia en mi cuerpo al estar un poco mas sano y con mas muscular. A pesar de ser poco el cambio, los resultados son enormes para mi.
  4. Elegir una buena esposa me ha facilitado la vida y me ha permitido crecer: me casé con alguien que en vez de complicarme la vida me la facilita, me ha ayudado a crecer como persona, como profesional y en todas las áreas. Es muy importante escoger a alguien que te permita sacar lo mejor de ti y hacerte cada día mejor. Que cuando estés en tus bajones, te ayude a salir de ahí y motivarte a seguir adelante.
  5. Las reuniones con las amistades ahora son de horas o minutos: a diferencia de la adolescencia y tal un poco en los 20s. Los amigos tienen familias propias, han emigrado, viven lejos y solo es posible verlos por unos pocos minutos. La calidad muchas veces es igual de bien, pero el tiempo y es muy corto. Inclusive, en algunos casos, dudas si incluso los podrás ver de nuevo.
  6. Empiezas a ver mas gente de tu edad morir: sobre todo al final de los 30s, he perdido amigos por muertes inesperadas, aparentemente tenían buen estado de salud, sin embargo, se fueron antes de lo esperado. Esto me hace apreciar mas la vida y ver como algunos de nosotros se bajan del tren de la vida y continuamos sin ellos.
  7. Mientras mas viajas por el mundo notas menos las diferencias entre culturas similares: durante la última década tuve la oportunidad de viajar por distintos países y conocer personas de diferentes culturas. Antes era de los que se enfocaban en las pequeñas diferencias entre los países, casi como si esas particularidades nos hicieran completamente distintos. Sin embargo, viajar me hizo cambiar esa perspectiva. Hoy me doy cuenta de lo mucho que compartimos los latinoamericanos, por ejemplo, desde nuestras costumbres hasta nuestra forma de ver la vida. Las diferencias que antes me parecían enormes se vuelven insignificantes cuando las comparo con las que existen entre nuestras culturas y las de países asiáticos, por ejemplo. Al final, viajar me enseñó que tenemos mucho más en común de lo que creemos.
  8. Cumplir un sueño también significa quitarte un peso de encima: es sentir que ya no tienes que seguir persiguiendo aquello que durante tantos años ocupó un lugar en tu cabeza. Y esa tranquilidad te permite mirar tu vida desde otra perspectiva, reconocer lo que has construido y, quizás lo más importante, disfrutarlo sin estar pensando constantemente en lo que viene después. Creo que muchas veces vivimos tan concentrados en lo que nos falta por alcanzar que olvidamos detenernos a apreciar lo que ya hemos conseguido. Aquellas cosas que alguna vez parecían imposibles o demasiado lejanas terminan convirtiéndose en parte de nuestra vida cotidiana, y casi sin darnos cuenta dejamos de darles la importancia que merecen.
  9. Una de las cosas más difíciles de emigrar es descubrir que, de alguna manera, te quedas sin hogar: cuando te vas de tu país, siempre queda la idea de que algún día podrás regresar y encontrar todo como lo dejaste. Pero con el paso de los años descubres que eso es imposible. Tu ciudad cambia, las personas cambian, los lugares que frecuentabas desaparecen y hasta las costumbres que antes eran parte de tu vida comienzan a sentirse extrañas. Pero no solo cambia el lugar que dejaste atrás. Tú también cambias. Sin darte cuenta, adoptas costumbres, formas de pensar y maneras de vivir del país que te recibió. Y cuando regresas a tu ciudad, descubres que ya no eres la misma persona que se fue. Es una sensación extraña caminar por las calles donde creciste y sentirte como un turista. Reconoces los lugares, recuerdas las historias, pero ya no sientes que perteneces completamente a ellos. Entonces entiendes que lo que realmente extrañas no es solamente tu país, sino un lugar que ya no existe. Extrañas la ciudad que conociste, las personas que estaban allí y, sobre todo, la persona que eras en aquel momento. Quizás lo más curioso es que, aunque nunca hubieras emigrado, muchas de esas cosas también habrían desaparecido. La diferencia es que, al irte, conservaste una imagen congelada de tu ciudad, mientras que quienes se quedaron vivieron sus cambios poco a poco.
  10. No juzgues a una persona por un momento específico de su vida: en algunos encuentros con amigos noté que se comportaban de manera diferente, más distantes, apagados e incluso algo deprimidos. En ese momento atribuí su actitud a la situación que se vive en Venezuela y terminé sintiéndome molesto por el trato que recibí. Tiempo después descubrí que estaban atravesando situaciones personales muy difíciles y entendí que había reaccionado mal. Me tomé su comportamiento como algo personal, cuando en realidad no tenía nada que ver conmigo. En lugar de molestarme, debí preocuparme por entender qué les estaba pasando y ofrecerles mi apoyo como amigo. A veces olvidamos que cada persona está librando sus propias batallas, muchas de las cuales desconocemos. No todo gira alrededor de nosotros y, antes de juzgar la actitud de alguien, vale la pena detenerse a pensar qué puede estar viviendo.

En fin, es una lista mucha mas corta que la anterior, pero creo que mucha mas profunda para mí. Espero que te sirva estas experiencias o si tienes alguna que compartir, no dejes de escribir un comentario.

Gracias por leerme.

1 comentario

La historia de C++: un documental sobre su evolución durante más de 40 años

Hace poco vi un documental sobre la historia de C++ y me gustó bastante. Aunque nunca ha sido mi lenguaje de programación principal, siempre me ha parecido interesante cómo una tecnología creada hace más de 40 años sigue siendo tan importante en la industria del software. Lo que más me gustó es que entrevista al creador del lenguaje y a varias personas que participaron en su evolución. Es genial escuchar, directamente de sus protagonistas, las historias y decisiones que terminaron definiendo uno de los lenguajes más importantes de la programación.

De su creación a convertirse en un estándar

Una de las cosas que me llamó la atención fue conocer cómo Bjarne Stroustrup comenzó a desarrollar C++ en Bell Labs, inicialmente como una extensión de C que permitía utilizar la programación orientada a objetos sin sacrificar el rendimiento.

También me pareció interesante conocer la historia de la Standard Template Library (STL) y cómo, con el crecimiento del lenguaje, comenzaron los esfuerzos para crear una biblioteca estándar y, posteriormente, estandarizar C++.

A veces utilizamos características de los lenguajes sin pensar en todo el trabajo y las discusiones que hubo detrás. Escuchar a quienes participaron en esas decisiones te da otra perspectiva.

Cuando Java parecía que iba a reemplazar a C++

Otra parte que me gustó fue cuando hablaron de la llegada de Java y de cómo muchos pensaban que terminaría reemplazando a C++. Cuando entré a la universidad en el 2004, se comentaba que Java iba a reemplazar ese lenguaje; de hecho, recuerdo cómo Java se volvió extremadamente popular, especialmente por simplificar aspectos como la gestión de la memoria. Parecía que los nuevos lenguajes iban a dejar atrás las tecnologías más antiguas.

Sin embargo, C++ nunca desapareció. Siguió siendo importante en áreas donde el rendimiento y el control del hardware son fundamentales. Me parece curioso cómo, en programación, muchas veces pensamos que una nueva tecnología va a reemplazar por completo a otra, cuando en realidad terminan coexistiendo durante décadas.

C++ sigue siendo un lenguaje moderno

Uno de los aspectos que más me sorprendió fue ver cuánto ha evolucionado C++. Todavía lo asocio con punteros, la administración manual de memoria y una sintaxis bastante compleja, pero el lenguaje moderno es muy diferente al que se utilizaba hace 20 años.

Con C++11 comenzó una modernización importante, incorporando lambdas, smart pointers y muchas otras características que facilitan el desarrollo. Desde entonces, el lenguaje ha continuado evolucionando con nuevas versiones del estándar.

Me parece impresionante que haya logrado modernizarse sin abandonar la compatibilidad con décadas de software existente, aunque esto también lo convierte en un lenguaje bastante complejo.

Otra parte que disfruté fue la participación de John Romero, uno de los creadores de Doom y Quake, quien habló sobre la importancia de C++ en la industria de los videojuegos.

Como alguien a quien le gustan los videojuegos y la programación, me encanta conocer las tecnologías que subyacen a muchos de los juegos que conocemos. Es interesante cómo C++ sigue siendo fundamental en el desarrollo de motores gráficos y videojuegos modernos.

Un documental que recomiendo ver

Una de las razones por las que disfruto de estos documentales es que permiten conocer la historia del software directamente de sus protagonistas. No es lo mismo leer sobre una característica de un lenguaje que escuchar a sus creadores explicar por qué decidieron implementarla.

Después de verlo, me quedó una mayor apreciación por C++ y su capacidad de evolucionar a pesar de todas las tecnologías que han surgido para reemplazarlo.

También me recordó que, en el desarrollo de software, no todo consiste en utilizar el lenguaje o el framework más reciente. Hay tecnologías que llevan décadas resolviendo problemas y todavía tienen muchísimo que ofrecer.

Si te gusta la programación, aunque nunca hayas escrito una línea de C++, te recomiendo ver este documental.

The Story of C++ | The Official Story

Happy Coding!

Deja un comentario

Los plugins que uso en Neovim en tiempos de IA

Con el uso de IA, Neovim se ha vuelto para mí más bien un editor para leer código y hacer cambios menores, gracias al agente de IA integrado. Mi forma de usarlo ha cambiado: ahora una parte importante del trabajo consiste en revisar lo que genera el agente, entender los cambios y ajustar los detalles que hagan falta.

Pero igual quería compartir los plugins que tengo en mi configuración, por si a alguien le sirven. Aunque escriba menos código directamente, sigo necesitando buscar archivos, moverme entre funciones, revisar diferencias y editar sin complicarme demasiado.

Los agrupé por función y dejé una breve descripción junto al enlace de cada uno. No hace falta instalar toda la lista: la idea es que encuentres algo útil para tu forma de trabajar.

Autocompletado y snippets en neovim

Para los cambios que sigo haciendo a mano, contar con un buen autocompletado y snippets sigue siendo útil. Esta es la combinación que tengo:

  • nvim-cmp: El motor de autocompletado.
  • cmp-async-path: Completa rutas de archivos de forma asíncrona.
  • cmp-buffer: Sugiere palabras a partir del contenido de los buffers.
  • cmp-nvim-lsp: Conecta las sugerencias del LSP con nvim-cmp.
  • cmp-nvim-lua: Añade autocompletado para la API de Lua de Neovim.
  • cmp_luasnip: Integra los snippets de LuaSnip con nvim-cmp.
  • LuaSnip: El motor para expandir y trabajar con snippets.
  • friendly-snippets: Una colección de snippets para distintos lenguajes.

LSP, formato, linting y depuración

Que parte del código lo escriba un agente no elimina la necesidad de revisar errores, mantener el formato y depurar. Aquí entran estas herramientas:

  • nvim-lspconfig: Configuraciones para conectar los servidores de lenguaje con el cliente LSP de Neovim.
  • mason.nvim: Facilita la instalación y la administración de servidores de lenguaje, formateadores, linters y adaptadores de depuración.
  • conform.nvim: Permite ejecutar formateadores de código directamente desde el editor.
  • formatter.nvim: Otra herramienta para integrar formateadores externos.
  • nvim-lint: Integra linters para mostrar errores y advertencias en el código.
  • nvim-dap: Añade un cliente de depuración para trabajar con puntos de interrupción, la ejecución paso a paso y la inspección de variables.

Edición y navegación en neovim

Esta parte sigue teniendo bastante sentido para mí: si ahora paso más tiempo leyendo código, moverme rápido por él y hacer cambios puntuales importa mucho.

  • vim-commentary: Comenta y descomenta código con pocos comandos.
  • vim-surround: Añade, cambia o elimina comillas, paréntesis, etiquetas y otros delimitadores.
  • vim-exchange: Intercambia dos fragmentos de texto.
  • vim-visual-multi: Permite trabajar con múltiples selecciones y cursores.
  • vim-ReplaceWithRegister: Reemplaza texto con el contenido de un registro.
  • hop.nvim: Permite saltar a distintas posiciones del texto mediante etiquetas.
  • vim-tmux-navigator: Unifica la navegación entre las divisiones de Vim y los paneles de tmux.
  • nvim-hlslens: Mejora la visualización de las coincidencias al buscar dentro de un archivo.
  • hardtime.nvim: Ayuda a corregir hábitos de navegación y a aprovechar mejor los movimientos de Vim.
  • treesj: Divide o une bloques de código entre una y varias líneas.
  • refactoring.nvim: Ofrece operaciones de refactorización, como extraer funciones o variables.
  • vim-import-js: Integra ImportJS para gestionar imports de JavaScript.
  • vim-jsx-pretty: Añade resaltado de sintaxis para JSX.
  • vim-php-refactoring-toolbox: Ofrece herramientas de refactorización para PHP.
  • vim-php-cs-fixer: Integra PHP CS Fixer para corregir el estilo del código PHP.

Archivos, búsquedas y proyectos

Encontrar el archivo correcto suele ser el primer paso para entender un cambio. Estos plugins cubren la exploración, las búsquedas y el manejo de proyectos y sesiones:

  • nvim-tree.lua: Un explorador de archivos en forma de árbol.
  • telescope.nvim: Permite buscar y filtrar archivos, contenido, buffers y otros elementos del editor.
  • neovim-project: Facilita cambiar entre proyectos y recuperar su contexto de trabajo.
  • neovim-session-manager: Guarda y restaura sesiones del editor.
  • vim-rooter: Ajusta el directorio de trabajo a la raíz del proyecto.

Git, tareas y sesiones en neovim

Con un agente haciendo cambios, revisar el diff es una parte importante del trabajo. Aquí también incluyo las herramientas para ejecutar tareas y mantener sesiones:

  • lazygit.nvim: Permite abrir lazygit dentro de Neovim.
  • git-blame.nvim: Muestra información del commit asociado a una línea.
  • gitsigns.nvim: Marca cambios de Git en el editor y permite trabajar con fragmentos del diff.
  • diffview.nvim: Ofrece una interfaz para revisar diferencias entre archivos y consultar su historial.
  • vim-signify: Muestra líneas añadidas, modificadas o eliminadas en el margen.
  • overseer.nvim: Permite ejecutar y administrar tareas, como builds y tests.
  • vim-obsession: Mantiene actualizados los archivos de sesión de Vim.

Interfaz y notificaciones

También hay plugins para hacer más cómoda la lectura, ver mejor lo que está pasando y recordar atajos. En esta categoría aparecen algunas dependencias que usan otros plugins:

  • indent-blankline.nvim: Muestra guías de indentación para seguir la estructura del código.
  • modes.nvim: Añade indicadores visuales de color según el modo del editor.
  • modicator.nvim: Cambia el color del número de la línea actual según el modo.
  • noice.nvim: Modifica la presentación de mensajes, la línea de comandos y otros elementos de la interfaz.
  • nui.nvim: Una biblioteca de componentes de interfaz utilizada por otros plugins.
  • nvim-notify: Presenta las notificaciones en ventanas configurables.
  • nvim-web-devicons: Proporciona iconos para tipos de archivo y otros elementos.
  • which-key.nvim: Muestra las combinaciones de teclas disponibles mientras empiezas a escribir un atajo.
  • menu: Permite crear menús, incluidos submenús, dentro del editor.
  • minty: Añade herramientas para seleccionar y explorar colores.
  • volt: Proporciona la base para crear interfaces interactivas utilizadas por otros plugins de esta lista.

IA, utilidades y Tailwind

Esta es la parte que más conecta con el cambio en mi forma de usar Neovim. La integración del agente convive con utilidades del editor y herramientas para leer estilos:

  • claudecode.nvim: Integra Claude Code con Neovim para compartir contexto del código y revisar los cambios propuestos desde el editor.
  • snacks.nvim: Una colección de utilidades, como terminales y selectores. También sirve de apoyo a la integración de Claude Code.
  • tw-values.nvim: Muestra los valores CSS asociados a las clases de Tailwind de un elemento.

Gestor de plugins, dependencias y tema

Por último, estas son otras piezas de la configuración:

  • plenary.nvim: Una biblioteca de funciones Lua que utilizan varios plugins.
  • lazy.nvim: El gestor para instalar, actualizar y cargar los plugins.
  • onedark.nvim: El tema de colores de la configuración.

La configuración sigue, el uso cambia

Viendo la lista, hay herramientas con funciones que se cruzan: más de una para formato, indicadores de cambios o sesiones. Comparto lo que tengo en mi configuración; no significa que necesites combinar todo esto para usar Neovim.

Lo que más ha cambiado es el peso de cada cosa. Con la IA, buscar, navegar y revisar código ocupa más espacio en mi trabajo. Y para eso sigue siendo útil tener un editor con el que me sienta cómodo.

Si usas alguno de estos plugins o tienes otro que te facilite trabajar con agentes de IA en Neovim, déjalo en los comentarios.

¡Éxitos mejorando tu neovim!

Deja un comentario