<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>Rubén Tejera</title><description>Cómo aplicar código limpio, buenas pruebas y buena arquitectura a lo que genera la IA, para que tu software dure en el tiempo.</description><link>https://rubentejera.com/</link><language>es-es</language><item><title>1.ª formación Lean Mind en el ITER (julio de 2018)</title><link>https://rubentejera.com/1-formacion-lean-mind-en-el-iter/</link><guid isPermaLink="true">https://rubentejera.com/1-formacion-lean-mind-en-el-iter/</guid><description>La primera formación de Lean Mind, con Carlos Blé, en el ITER de Granadilla de Abona: tres días de TDD, pair programming, clean code y refactoring.</description><pubDate>Tue, 10 Jul 2018 08:10:01 GMT</pubDate></item><item><title>10 reglas heurísticas de usabilidad de Jakob Nielsen</title><link>https://rubentejera.com/10-reglas-heuristicas-de-usabilidad-jakob-nielsen/</link><guid isPermaLink="true">https://rubentejera.com/10-reglas-heuristicas-de-usabilidad-jakob-nielsen/</guid><description>Las 10 heurísticas de usabilidad de Jakob Nielsen explicadas en lenguaje llano, con un ejemplo cotidiano de cada una y cómo usarlas para revisar una interfaz.</description><pubDate>Fri, 29 Jun 2018 11:46:59 GMT</pubDate></item><item><title>Active Record Validations: validar campos en Rails</title><link>https://rubentejera.com/active-record-validations-validadores-de-campos-de-ruby-on-rails/</link><guid isPermaLink="true">https://rubentejera.com/active-record-validations-validadores-de-campos-de-ruby-on-rails/</guid><description>Guía de las validaciones de Active Record en Ruby on Rails: presence, length, format, uniqueness y más, cómo leer los errores y cómo crear las tuyas.</description><pubDate>Fri, 10 Aug 2018 07:26:37 GMT</pubDate></item><item><title>Adiós tarjetas de visita: hola, código QR vCard</title><link>https://rubentejera.com/adios-tarjetas-de-visita/</link><guid isPermaLink="true">https://rubentejera.com/adios-tarjetas-de-visita/</guid><description>Crea un código QR vCard para tu tarjeta de visita: qué es una vCard, un ejemplo listo para copiar y cómo generar el QR gratis, con un generador o con código.</description><pubDate>Sun, 06 Feb 2022 22:59:31 GMT</pubDate></item><item><title>Agilismo: qué es, de dónde viene y cómo se trabaja</title><link>https://rubentejera.com/agilismo/</link><guid isPermaLink="true">https://rubentejera.com/agilismo/</guid><description>Qué es el agilismo explicado sin jerga: de dónde sale el Manifiesto Ágil, sus cuatro valores y cómo es trabajar por iteraciones cortas.</description><pubDate>Fri, 05 Oct 2018 08:44:07 GMT</pubDate></item><item><title>Algoritmo TDD: el ciclo rojo, verde, refactor y sus reglas</title><link>https://rubentejera.com/algoritmo-tdd/</link><guid isPermaLink="true">https://rubentejera.com/algoritmo-tdd/</guid><description>El algoritmo de TDD en un diagrama: qué puedes y qué no puedes hacer en rojo, verde y refactor, las tres leyes de TDD y un ejemplo ejecutado.</description><pubDate>Mon, 22 Oct 2018 21:26:32 GMT</pubDate></item><item><title>Algoritmos de ordenación: vídeo, comparativa y quicksort</title><link>https://rubentejera.com/algoritmos-de-ordenacion/</link><guid isPermaLink="true">https://rubentejera.com/algoritmos-de-ordenacion/</guid><description>Un vídeo que muestra cómo ordenan los algoritmos de ordenación, una tabla con su coste y un quicksort en Python explicado paso a paso.</description><pubDate>Mon, 28 May 2018 15:24:45 GMT</pubDate></item><item><title>Alimentación para discos de 2,5&quot; en la Raspberry Pi</title><link>https://rubentejera.com/alimentacion-para-discos-de-2-5-en-la-raspberry-pi/</link><guid isPermaLink="true">https://rubentejera.com/alimentacion-para-discos-de-2-5-en-la-raspberry-pi/</guid><description>¿Tu disco de 2,5&quot; no arranca conectado a la Raspberry Pi? Cuánta corriente dan sus USB según el modelo, qué fuente usar y qué cambiar en config.txt.</description><pubDate>Wed, 30 May 2018 11:42:50 GMT</pubDate></item><item><title>Añadir la búsqueda de WordPress a Google Analytics</title><link>https://rubentejera.com/anadir-busqueda-en-nuestro-wordpress-a-google-analytics/</link><guid isPermaLink="true">https://rubentejera.com/anadir-busqueda-en-nuestro-wordpress-a-google-analytics/</guid><description>Mide qué buscan tus visitas en el buscador de tu WordPress con Google Analytics 4: se activa en la medición mejorada, sin plugins ni código.</description><pubDate>Tue, 24 Jul 2018 07:52:57 GMT</pubDate></item><item><title>Añadir Node, Jest y Chai a IntelliJ IDEA</title><link>https://rubentejera.com/anadir-node-jest-chai-a-intellij/</link><guid isPermaLink="true">https://rubentejera.com/anadir-node-jest-chai-a-intellij/</guid><description>Configura Node.js y Jest en IntelliJ IDEA 2026.3 para lanzar tus tests desde el editor, y descubre por qué con Jest ya no necesitas Chai.</description><pubDate>Tue, 15 May 2018 15:15:07 GMT</pubDate></item><item><title>Arrays en Ruby: crear, leer, añadir y borrar</title><link>https://rubentejera.com/arrays-en-ruby/</link><guid isPermaLink="true">https://rubentejera.com/arrays-en-ruby/</guid><description>Chuleta de arrays en Ruby: cómo crearlos, leer posiciones y rangos, añadir y eliminar elementos, congelarlos y recorrerlos con each, find y select.</description><pubDate>Tue, 24 Jul 2018 12:19:27 GMT</pubDate></item><item><title>Asignación por destructuring en JavaScript</title><link>https://rubentejera.com/asignacion-por-destructuring-en-javascript/</link><guid isPermaLink="true">https://rubentejera.com/asignacion-por-destructuring-en-javascript/</guid><description>Qué es la asignación por destructuring en JavaScript: sacar valores de arrays y objetos en una línea, con valores por defecto, rest y ejemplos probados.</description><pubDate>Thu, 24 May 2018 10:07:11 GMT</pubDate></item><item><title>Asociaciones en Ruby on Rails: belongs_to y has_many</title><link>https://rubentejera.com/asociaciones-en-ruby-on-rails/</link><guid isPermaLink="true">https://rubentejera.com/asociaciones-en-ruby-on-rails/</guid><description>Asociaciones en Ruby on Rails explicadas con ejemplos: belongs_to, has_one, has_many y muchos a muchos, con sus migraciones. Probado en Rails 8.1.</description><pubDate>Fri, 10 Aug 2018 09:23:13 GMT</pubDate></item><item><title>Blog de Martin Fowler: qué leer y por dónde empezar</title><link>https://rubentejera.com/blog-de-martin-fowler/</link><guid isPermaLink="true">https://rubentejera.com/blog-de-martin-fowler/</guid><description>Guía rápida del blog de Martin Fowler (martinfowler.com): qué es el bliki, qué secciones tiene y qué leer primero sobre refactoring, tests, arquitectura e IA.</description><pubDate>Tue, 05 Jun 2018 10:42:32 GMT</pubDate></item><item><title>Blog Emezeta de José Román (Manz)</title><link>https://rubentejera.com/blog-emezeta-de-jose-roman/</link><guid isPermaLink="true">https://rubentejera.com/blog-emezeta-de-jose-roman/</guid><description>Emezeta es el blog de José Román, Manz, en activo desde 2005. Qué encontrarás en él y en sus webs para aprender HTML, CSS, JavaScript y terminal de Linux.</description><pubDate>Fri, 15 Jun 2018 11:22:30 GMT</pubDate></item><item><title>Bloques en Ruby: llaves, do…end y yield</title><link>https://rubentejera.com/bloques-en-ruby/</link><guid isPermaLink="true">https://rubentejera.com/bloques-en-ruby/</guid><description>Qué es un bloque en Ruby, cuándo usar llaves o do…end, cómo pasar un bloque a un método con yield o &amp;block y cómo saber si te lo han pasado con block_given?.</description><pubDate>Wed, 25 Jul 2018 09:30:47 GMT</pubDate></item><item><title>Botón Back y Handler en Android: pulsar dos veces</title><link>https://rubentejera.com/boton-back-y-handler-en-android/</link><guid isPermaLink="true">https://rubentejera.com/boton-back-y-handler-en-android/</guid><description>Cómo controlar el botón atrás en Android y pedir una segunda pulsación para salir, con OnBackPressedCallback y Handler. Por qué onBackPressed está obsoleto.</description><pubDate>Mon, 22 Oct 2018 12:02:23 GMT</pubDate></item><item><title>Botón de encendido y apagado para Raspberry Pi 2, 3, 4 y 5</title><link>https://rubentejera.com/boton-encendido-rpi/</link><guid isPermaLink="true">https://rubentejera.com/boton-encendido-rpi/</guid><description>Pon un botón para apagar y encender tu Raspberry Pi sin scripts: el overlay gpio-shutdown, los pines 5 y 6 y qué cambia en la Pi 5.</description><pubDate>Wed, 30 May 2018 10:27:47 GMT</pubDate></item><item><title>Callbacks en Ruby on Rails: before_action y before_save</title><link>https://rubentejera.com/callbacks-en-ruby-on-rails/</link><guid isPermaLink="true">https://rubentejera.com/callbacks-en-ruby-on-rails/</guid><description>Qué son los callbacks en Rails y cómo usarlos: before_action con only y except en controladores, y before_save o before_create en modelos. Rails 8.1.</description><pubDate>Thu, 30 Aug 2018 13:51:20 GMT</pubDate></item><item><title>Cambiar el número de entradas por página en WordPress</title><link>https://rubentejera.com/cambiar-el-numero-de-entradas-por-pagina-en-wordpress/</link><guid isPermaLink="true">https://rubentejera.com/cambiar-el-numero-de-entradas-por-pagina-en-wordpress/</guid><description>Elige cuántas entradas muestra cada página de tu blog en WordPress desde Ajustes &gt; Lectura, y qué hacer si tu tema de bloques no hace caso.</description><pubDate>Thu, 24 May 2018 17:13:40 GMT</pubDate></item><item><title>Canal de YouTube del profesor Tiburcio Cruz Ravelo</title><link>https://rubentejera.com/canal-del-profesor-tiburcio-cruz-ravelo/</link><guid isPermaLink="true">https://rubentejera.com/canal-del-profesor-tiburcio-cruz-ravelo/</guid><description>El canal tcrurav del profesor Tiburcio Cruz: tutoriales en español de Android, React, servicios REST y redes con Packet Tracer. Qué encontrarás en él.</description><pubDate>Mon, 28 May 2018 15:09:43 GMT</pubDate></item><item><title>Cheatsheet JavaScript en español (ES6 y siguientes)</title><link>https://rubentejera.com/cheatsheet-javascript/</link><guid isPermaLink="true">https://rubentejera.com/cheatsheet-javascript/</guid><description>La cheatsheet de JavaScript de Paradigma Digital en PDF: qué incluye y una chuleta rápida de ES6+ con ejemplos probados en Node 24.</description><pubDate>Tue, 12 Jun 2018 07:35:48 GMT</pubDate></item><item><title>Chrome DevTools: cómo abrirlas y para qué sirven</title><link>https://rubentejera.com/chrome-devtools/</link><guid isPermaLink="true">https://rubentejera.com/chrome-devtools/</guid><description>Abre las Chrome DevTools con F12 o Ctrl+Mayús+I y aprende qué hace cada panel: Elements, Console, Sources, Network, Application y Lighthouse.</description><pubDate>Thu, 28 Jun 2018 08:44:51 GMT</pubDate></item><item><title>Ciclo de vida de Activities en Android, con Kotlin</title><link>https://rubentejera.com/ciclo-de-vida-de-activities-en-android/</link><guid isPermaLink="true">https://rubentejera.com/ciclo-de-vida-de-activities-en-android/</guid><description>Qué hace cada callback de una Activity (onCreate, onPause, onStop…), qué pasa al rotar, pulsar Inicio o Atrás, y cómo encajan Lifecycle, ViewModel y Compose.</description><pubDate>Mon, 12 Nov 2018 11:25:58 GMT</pubDate></item><item><title>Clases en código limpio: responsabilidad única y cohesión</title><link>https://rubentejera.com/clases-en-codigo-limpio/</link><guid isPermaLink="true">https://rubentejera.com/clases-en-codigo-limpio/</guid><description>Cómo escribir clases limpias según Clean Code: orden, tamaño medido en responsabilidades, principio de responsabilidad única y cohesión, con ejemplo en Ruby.</description><pubDate>Fri, 31 Aug 2018 08:39:21 GMT</pubDate></item><item><title>Clases en Ruby: atributos, métodos, herencia y acceso</title><link>https://rubentejera.com/clases-en-ruby/</link><guid isPermaLink="true">https://rubentejera.com/clases-en-ruby/</guid><description>Cómo crear clases en Ruby: initialize, attr_accessor, to_s, herencia con super y métodos public, protected y private, con ejemplos probados en Ruby 4.</description><pubDate>Wed, 25 Jul 2018 13:17:03 GMT</pubDate></item><item><title>CLOC, contador de líneas de código</title><link>https://rubentejera.com/cloc-contador-de-lineas-de-codigo/</link><guid isPermaLink="true">https://rubentejera.com/cloc-contador-de-lineas-de-codigo/</guid><description>Cuenta las líneas de código de un proyecto por lenguaje con cloc: cómo instalarlo (npm, apt, brew, winget), comandos útiles y qué significa cada columna.</description><pubDate>Thu, 11 Apr 2019 12:26:52 GMT</pubDate></item><item><title>Clonado de arrays en JavaScript: 5 formas</title><link>https://rubentejera.com/clonado-de-arrays-en-javascript/</link><guid isPermaLink="true">https://rubentejera.com/clonado-de-arrays-en-javascript/</guid><description>Cómo copiar un array en JavaScript sin que los cambios afecten al original: spread, slice, concat, Array.from y structuredClone para arrays anidados.</description><pubDate>Tue, 01 May 2018 18:41:25 GMT</pubDate></item><item><title>Codewars: qué es y cómo empezar a resolver katas</title><link>https://rubentejera.com/codewars/</link><guid isPermaLink="true">https://rubentejera.com/codewars/</guid><description>Qué es Codewars, cómo funcionan sus katas y rangos kyu, cuánto cuesta y cómo resolver tu primera kata paso a paso, con un ejemplo en JavaScript.</description><pubDate>Tue, 29 May 2018 08:29:52 GMT</pubDate></item><item><title>Códigos de teclas para eventos en JavaScript</title><link>https://rubentejera.com/codigos-de-teclas-para-eventos/</link><guid isPermaLink="true">https://rubentejera.com/codigos-de-teclas-para-eventos/</guid><description>keyCode está obsoleto: cómo saber qué tecla se ha pulsado con event.key y event.code, con tabla de valores habituales y una web para consultarlos.</description><pubDate>Tue, 12 Jun 2018 07:19:59 GMT</pubDate></item><item><title>Comentarios en código limpio: cuándo sí y cuándo no</title><link>https://rubentejera.com/comentarios-codigo-limpio/</link><guid isPermaLink="true">https://rubentejera.com/comentarios-codigo-limpio/</guid><description>Por qué el código limpio usa pocos comentarios, cuáles sí merecen la pena y cómo cambiar un comentario por una función, con un ejemplo probado.</description><pubDate>Fri, 10 Aug 2018 07:28:40 GMT</pubDate></item><item><title>Companion object en Kotlin: qué es y cómo se usa</title><link>https://rubentejera.com/companion-object-en-kotlin/</link><guid isPermaLink="true">https://rubentejera.com/companion-object-en-kotlin/</guid><description>Qué es un companion object en Kotlin, en qué se parece a static de Java y en qué no, y cómo usarlo para constantes, funciones de fábrica e interfaces.</description><pubDate>Tue, 16 Oct 2018 08:44:10 GMT</pubDate></item><item><title>Gist de GitHub: compartir código, notas y fragmentos</title><link>https://rubentejera.com/comparta-codigo-notas-y-fragmentos-gist-de-github/</link><guid isPermaLink="true">https://rubentejera.com/comparta-codigo-notas-y-fragmentos-gist-de-github/</guid><description>Qué es GitHub Gist y cómo usarlo para guardar y compartir fragmentos de código: gists públicos y secretos, enlaces raw, inserción y la CLI gh gist.</description><pubDate>Mon, 09 Jul 2018 13:21:56 GMT</pubDate></item><item><title>Complejidad ciclomática: qué es y cómo medirla</title><link>https://rubentejera.com/complejidad-ciclomatica/</link><guid isPermaLink="true">https://rubentejera.com/complejidad-ciclomatica/</guid><description>Qué es la complejidad ciclomática de McCabe, cómo se calcula a mano con un ejemplo, qué valor es razonable y cómo medirla con ESLint.</description><pubDate>Fri, 29 Jun 2018 07:42:50 GMT</pubDate></item><item><title>Comportamiento de un array en JavaScript: huecos</title><link>https://rubentejera.com/comportamiento-array-javascript/</link><guid isPermaLink="true">https://rubentejera.com/comportamiento-array-javascript/</guid><description>Si asignas arr[9] en un array de 4 elementos, JavaScript deja huecos vacíos. Qué son, por qué no son undefined y cómo los tratan map, forEach y for...of.</description><pubDate>Thu, 26 Apr 2018 15:10:49 GMT</pubDate></item><item><title>Composición de un test en TDD y sus métodos, con ejemplos</title><link>https://rubentejera.com/composicion-de-un-test-en-tdd-y-sus-metodos/</link><guid isPermaLink="true">https://rubentejera.com/composicion-de-un-test-en-tdd-y-sus-metodos/</guid><description>Las piezas de un test explicadas con ejemplos que funcionan: describe, it, expect, beforeEach y afterEach, y el patrón Arrange-Act-Assert. Con Jest y node:test.</description><pubDate>Wed, 16 May 2018 10:22:31 GMT</pubDate></item><item><title>Comprobar un transformador de corriente con el polímetro</title><link>https://rubentejera.com/comprobar-transformador-de-corriente/</link><guid isPermaLink="true">https://rubentejera.com/comprobar-transformador-de-corriente/</guid><description>Cómo saber si un transformador está quemado: mide sus bobinados con el polímetro sin corriente. Con dos vídeos que muestran un trafo bueno y uno roto.</description><pubDate>Sat, 28 Apr 2018 20:26:22 GMT</pubDate></item><item><title>Condicionales en Ruby: if, unless, case y ternario</title><link>https://rubentejera.com/condicionales-en-ruby/</link><guid isPermaLink="true">https://rubentejera.com/condicionales-en-ruby/</guid><description>Cómo funcionan los condicionales en Ruby: if, elsif, unless, el operador ternario y case con rangos. Qué valores son verdaderos y cuáles falsos.</description><pubDate>Tue, 24 Jul 2018 11:14:29 GMT</pubDate></item><item><title>Conectarse vía SSH desde Linux</title><link>https://rubentejera.com/conectarse-via-ssh-desde-linux/</link><guid isPermaLink="true">https://rubentejera.com/conectarse-via-ssh-desde-linux/</guid><description>Conéctate por SSH a otro equipo desde Linux: instala el servidor, entra con ssh usuario@ip, cambia el puerto con -p y deja de escribir la contraseña con claves.</description><pubDate>Sun, 27 May 2018 13:08:13 GMT</pubDate></item><item><title>Conexión a base de datos MySQL desde consola</title><link>https://rubentejera.com/conexion-a-base-de-datos-mysql-desde-consola/</link><guid isPermaLink="true">https://rubentejera.com/conexion-a-base-de-datos-mysql-desde-consola/</guid><description>Entra en MySQL desde la consola de Linux y maneja tus bases de datos: ver bases de datos y tablas, describir campos, consultar y salir. Con chuleta.</description><pubDate>Tue, 14 Aug 2018 11:28:00 GMT</pubDate></item><item><title>Ejecutar todos los test JUnit del proyecto Java en IntelliJ</title><link>https://rubentejera.com/configuracion-para-ejecutar-test-junit-de-todos-el-proyecto-de-java-en-intellij/</link><guid isPermaLink="true">https://rubentejera.com/configuracion-para-ejecutar-test-junit-de-todos-el-proyecto-de-java-en-intellij/</guid><description>Cómo lanzar a la vez todos los test JUnit de un proyecto Java, aunque tenga varios módulos: desde IntelliJ IDEA con un clic o un atajo, y con Maven o Gradle.</description><pubDate>Fri, 24 Jun 2022 12:16:28 GMT</pubDate></item><item><title>Configurar la BBDD en Ruby on Rails: database.yml</title><link>https://rubentejera.com/configurar-bbdd-en-ruby-on-rails/</link><guid isPermaLink="true">https://rubentejera.com/configurar-bbdd-en-ruby-on-rails/</guid><description>Cómo configurar la base de datos en Rails: el fichero database.yml, sus entornos y cómo pasar de SQLite a MySQL paso a paso. Actualizado a Rails 8.1.</description><pubDate>Tue, 31 Jul 2018 11:08:57 GMT</pubDate></item><item><title>Configurar importación y optimización automática en IntelliJ</title><link>https://rubentejera.com/configurar-importacion-y-optimizacion-automatica-en-intellij/</link><guid isPermaLink="true">https://rubentejera.com/configurar-importacion-y-optimizacion-automatica-en-intellij/</guid><description>Haz que IntelliJ IDEA añada los imports que faltan y borre los que sobran mientras escribes, al guardar o con Ctrl + Alt + O. Paso a paso.</description><pubDate>Fri, 24 Jun 2022 13:38:27 GMT</pubDate></item><item><title>Configurar IntelliJ IDEA con Ruby: plugin y primer programa</title><link>https://rubentejera.com/configurar-intellij-con-ruby/</link><guid isPermaLink="true">https://rubentejera.com/configurar-intellij-con-ruby/</guid><description>Cómo instalar el plugin de Ruby en IntelliJ IDEA, crear un proyecto y ejecutar tu primer .rb. Y cuándo conviene RubyMine, gratis para uso no comercial.</description><pubDate>Mon, 23 Jul 2018 13:26:53 GMT</pubDate></item><item><title>Consola de Ruby on Rails: rails console y consultas</title><link>https://rubentejera.com/consola-de-ruby-on-rails/</link><guid isPermaLink="true">https://rubentejera.com/consola-de-ruby-on-rails/</guid><description>Cómo abrir la consola de Ruby on Rails, recargar cambios con reload! y consultar tus modelos con all, find, where o exists?, con ejemplos probados en Rails 8.</description><pubDate>Mon, 30 Jul 2018 08:48:39 GMT</pubDate></item><item><title>Control Flow, flujo de control en Kotlin</title><link>https://rubentejera.com/control-flow-flujo-de-control-en-kotlin/</link><guid isPermaLink="true">https://rubentejera.com/control-flow-flujo-de-control-en-kotlin/</guid><description>if, when, for, while y do-while en Kotlin con ejemplos ejecutados: if como expresión, when en lugar de switch, rangos con downTo y step, break y continue.</description><pubDate>Wed, 17 Oct 2018 13:04:30 GMT</pubDate></item><item><title>BEM en CSS: convención de nombres para clases</title><link>https://rubentejera.com/convencion-de-nombres-para-css/</link><guid isPermaLink="true">https://rubentejera.com/convencion-de-nombres-para-css/</guid><description>Qué es BEM (Block, Element, Modifier), cómo se escriben las clases con __ y -- y por qué esta convención de nombres para CSS te ahorra horas de depuración.</description><pubDate>Tue, 01 May 2018 22:16:31 GMT</pubDate></item><item><title>Clonar objetos en JavaScript sin copiar la referencia</title><link>https://rubentejera.com/crear-copias-de-objetos-en-javascript-para-no-pasar-la-referencia/</link><guid isPermaLink="true">https://rubentejera.com/crear-copias-de-objetos-en-javascript-para-no-pasar-la-referencia/</guid><description>Cómo clonar un objeto en JavaScript: spread y Object.assign para copias superficiales, structuredClone para copias profundas y qué hacer con las funciones.</description><pubDate>Tue, 01 May 2018 18:43:25 GMT</pubDate></item><item><title>Crear modelos en Ruby on Rails</title><link>https://rubentejera.com/crear-modelos-en-ruby-on-rails/</link><guid isPermaLink="true">https://rubentejera.com/crear-modelos-en-ruby-on-rails/</guid><description>Cómo crear un modelo en Ruby on Rails con rails generate model: nombres, tipos de columna, migración, rollback y cómo añadir NOT NULL a una columna.</description><pubDate>Mon, 30 Jul 2018 13:47:23 GMT</pubDate></item><item><title>Crear y arrancar un nuevo proyecto en Ruby on Rails</title><link>https://rubentejera.com/crear-y-arrancar-un-nuevo-proyecto-en-ruby-on-rails/</link><guid isPermaLink="true">https://rubentejera.com/crear-y-arrancar-un-nuevo-proyecto-en-ruby-on-rails/</guid><description>El Hola Mundo de Ruby on Rails: instala la gema, crea el proyecto con rails new, arráncalo con bin/rails server y ábrelo en localhost:3000.</description><pubDate>Fri, 27 Jul 2018 07:46:57 GMT</pubDate></item><item><title>CRUD desde consola en Ruby on Rails</title><link>https://rubentejera.com/crud-desde-consola-en-ruby-on-rails/</link><guid isPermaLink="true">https://rubentejera.com/crud-desde-consola-en-ruby-on-rails/</guid><description>Crea, lee, actualiza y borra registros desde la consola de Rails con Active Record: new, save, find, where, update y destroy, probado en Rails 8.1.</description><pubDate>Mon, 30 Jul 2018 09:12:30 GMT</pubDate></item><item><title>CSS Grid Layout: vídeo y primeros pasos</title><link>https://rubentejera.com/css-grid-layout/</link><guid isPermaLink="true">https://rubentejera.com/css-grid-layout/</guid><description>Qué es CSS Grid Layout, un ejemplo de maquetación con grid-template-areas y una clase en vídeo de dos horas, en español, para aprenderlo desde cero.</description><pubDate>Fri, 25 May 2018 08:38:53 GMT</pubDate></item><item><title>Desarrollo continuo de software: CI y CD explicados</title><link>https://rubentejera.com/desarrollo-continuo-de-software/</link><guid isPermaLink="true">https://rubentejera.com/desarrollo-continuo-de-software/</guid><description>Integración, entrega y despliegue continuos sin jerga: qué es cada uno, en qué se diferencian y qué necesitas para empezar a aplicarlos en tu equipo.</description><pubDate>Fri, 29 Jun 2018 07:41:29 GMT</pubDate></item><item><title>ATDD: desarrollo dirigido por tests de aceptación</title><link>https://rubentejera.com/desarrollo-dirigido-por-tests-de-aceptacion-atdd/</link><guid isPermaLink="true">https://rubentejera.com/desarrollo-dirigido-por-tests-de-aceptacion-atdd/</guid><description>Qué es ATDD, en qué se diferencia de TDD y BDD, y un ejemplo con Cucumber.js que falla y luego pasa. Y cómo usarlo para guiar a un agente de IA.</description><pubDate>Fri, 02 Nov 2018 07:39:17 GMT</pubDate></item><item><title>Kata Codewars: el cuadrado de cada dígito de un número</title><link>https://rubentejera.com/devolver-el-cuadrado-de-cada-digito-de-un-numero/</link><guid isPermaLink="true">https://rubentejera.com/devolver-el-cuadrado-de-cada-digito-de-un-numero/</guid><description>Resuelve la kata Square Every Digit de Codewars en JavaScript con TDD: tests con node:test, paso a paso, y los fallos de la solución publicada en 2018.</description><pubDate>Tue, 29 May 2018 10:08:02 GMT</pubDate></item><item><title>Diferencia entre text y string en Ruby on Rails</title><link>https://rubentejera.com/diferencia-entre-text-y-string-en-ruby-on-rails/</link><guid isPermaLink="true">https://rubentejera.com/diferencia-entre-text-y-string-en-ruby-on-rails/</guid><description>¿:string o :text en una migración de Rails? Qué tipo crea cada uno en MySQL, PostgreSQL y SQLite, sus límites reales y cuándo usar cada uno.</description><pubDate>Thu, 09 Aug 2018 08:55:55 GMT</pubDate></item><item><title>Diferencia entre &lt;% %&gt; y &lt;%= %&gt; en Ruby on Rails</title><link>https://rubentejera.com/diferencia-entre-y-en-ruby-on-rails/</link><guid isPermaLink="true">https://rubentejera.com/diferencia-entre-y-en-ruby-on-rails/</guid><description>&lt;% %&gt; ejecuta Ruby sin mostrar nada; &lt;%= %&gt; lo ejecuta y pinta el resultado en el HTML. Con ejemplos y las otras etiquetas ERB: &lt;%# %&gt;, &lt;%== %&gt; y -%&gt;.</description><pubDate>Wed, 08 Aug 2018 12:40:29 GMT</pubDate></item><item><title>Diferencias entre == y === en JavaScript (y Object.is)</title><link>https://rubentejera.com/diferencias-entre-doble-igual-y-triple-igual-en-javascript/</link><guid isPermaLink="true">https://rubentejera.com/diferencias-entre-doble-igual-y-triple-igual-en-javascript/</guid><description>Qué significa === en JavaScript, en qué se diferencia de == y de !==, y por qué 0 == &quot;&quot; da true. Con tabla de casos raros probada en Node 24.</description><pubDate>Thu, 26 Apr 2018 14:41:22 GMT</pubDate></item><item><title>Diferencias entre link_to, redirect_to y render en Rails</title><link>https://rubentejera.com/diferencias-entre-link_to-redirect_to-y-render-en-ruby-on-rails/</link><guid isPermaLink="true">https://rubentejera.com/diferencias-entre-link_to-redirect_to-y-render-en-ruby-on-rails/</guid><description>link_to crea un enlace en la vista; redirect_to manda al navegador a otra URL; render pinta una vista sin cambiar de URL. Cuándo usar cada uno en Rails.</description><pubDate>Wed, 29 Aug 2018 08:35:36 GMT</pubDate></item><item><title>Formatos para validar campos en Ruby on Rails</title><link>https://rubentejera.com/diferentes-formatos-para-validar-campos-en-ruby-on-rails/</link><guid isPermaLink="true">https://rubentejera.com/diferentes-formatos-para-validar-campos-en-ruby-on-rails/</guid><description>Cinco formas de escribir la misma validación de presencia en Rails, de validates_presence_of a validates, y cuál conviene usar hoy. Probadas en Rails 8.1.</description><pubDate>Wed, 15 Aug 2018 11:23:51 GMT</pubDate></item><item><title>Digitalización vs transformación digital: la diferencia</title><link>https://rubentejera.com/digitalizacion-vs-transformacion-digital/</link><guid isPermaLink="true">https://rubentejera.com/digitalizacion-vs-transformacion-digital/</guid><description>Digitalizar es cambiar el papel por herramientas digitales; transformarse es cambiar cómo trabaja la empresa. La diferencia, con ejemplos claros.</description><pubDate>Mon, 04 Feb 2019 16:26:32 GMT</pubDate></item><item><title>Direcciones de correo para humanos: fáciles de dictar</title><link>https://rubentejera.com/direciones-de-correos-para-humanos/</link><guid isPermaLink="true">https://rubentejera.com/direciones-de-correos-para-humanos/</guid><description>Cómo elegir una dirección de correo profesional que se dicta sin deletrear, se recuerda y se escribe bien a la primera. Con una prueba para la tuya.</description><pubDate>Sun, 06 Feb 2022 22:00:57 GMT</pubDate></item><item><title>Diseño simple y emergente: las 4 reglas de código limpio</title><link>https://rubentejera.com/diseno-simple-y-emergente-codigo-limpio/</link><guid isPermaLink="true">https://rubentejera.com/diseno-simple-y-emergente-codigo-limpio/</guid><description>Qué es el diseño simple: las 4 reglas de Kent Beck (pasa los tests, revela la intención, sin duplicados, pocos elementos), su orden y un ejemplo.</description><pubDate>Fri, 07 Sep 2018 08:01:22 GMT</pubDate></item><item><title>Distribución del teclado Querty, Dvorak y Colemak</title><link>https://rubentejera.com/distribucion-del-teclado-querty-dvorak-y-colemak/</link><guid isPermaLink="true">https://rubentejera.com/distribucion-del-teclado-querty-dvorak-y-colemak/</guid><description>Por qué tu teclado es QWERTY (o «Querty»), qué proponen Dvorak y Colemak, en qué se diferencian y cómo probarlos en Windows, macOS o Linux.</description><pubDate>Fri, 06 Jul 2018 07:36:11 GMT</pubDate></item><item><title>Versiones de las librerías de soporte en Android</title><link>https://rubentejera.com/documentacion-para-las-versiones-de-las-librerias-de-soporte-en-android/</link><guid isPermaLink="true">https://rubentejera.com/documentacion-para-las-versiones-de-las-librerias-de-soporte-en-android/</guid><description>La Support Library de Android terminó en la versión 28.0.0 y la sustituye AndroidX. Dónde ver las versiones y cómo pasar cada paquete a su equivalente.</description><pubDate>Fri, 29 Jun 2018 10:14:48 GMT</pubDate></item><item><title>Edición de vistas en Ruby on Rails: ERB y parciales</title><link>https://rubentejera.com/edicion-de-vistas-en-ruby-on-rails/</link><guid isPermaLink="true">https://rubentejera.com/edicion-de-vistas-en-ruby-on-rails/</guid><description>Cómo saber qué vista muestra Rails, añadir un campo nuevo a la vista y al formulario parcial, permitirlo en el controlador y usar las etiquetas ERB.</description><pubDate>Mon, 30 Jul 2018 11:25:55 GMT</pubDate></item><item><title>EditiX: editor XML gratuito para Ubuntu, Windows y Mac</title><link>https://rubentejera.com/editix-editor-xml/</link><guid isPermaLink="true">https://rubentejera.com/editix-editor-xml/</guid><description>EditiX es un editor XML libre y gratuito. Instálalo en Ubuntu, Windows o Mac, valida tus XML con XSD y aprende los atajos que más se usan.</description><pubDate>Fri, 08 Feb 2019 12:27:42 GMT</pubDate></item><item><title>Ejecución de comandos del sistema desde Ruby</title><link>https://rubentejera.com/ejecucion-de-comandos-del-sistema-desde-ruby/</link><guid isPermaLink="true">https://rubentejera.com/ejecucion-de-comandos-del-sistema-desde-ruby/</guid><description>Cómo ejecutar comandos del sistema desde Ruby con comillas invertidas, %x, system, exec, spawn y Open3, y cuándo usar cada uno sin riesgos.</description><pubDate>Wed, 22 Aug 2018 07:44:53 GMT</pubDate></item><item><title>Ejemplos de mixin en Ruby: include, extend y prepend</title><link>https://rubentejera.com/ejemplos-de-mixin-en-ruby/</link><guid isPermaLink="true">https://rubentejera.com/ejemplos-de-mixin-en-ruby/</guid><description>Qué es un mixin en Ruby y cuatro ejemplos: include en una clase, extend en un objeto o en la clase, y prepend. Con la diferencia entre cada uno.</description><pubDate>Mon, 06 Aug 2018 13:47:49 GMT</pubDate></item><item><title>Ejercicio práctico de módulos en Ruby: un logger</title><link>https://rubentejera.com/ejercicio-practico-modulos-en-ruby/</link><guid isPermaLink="true">https://rubentejera.com/ejercicio-practico-modulos-en-ruby/</guid><description>Ejercicio resuelto de módulos en Ruby: crea un módulo de log que cualquier clase pueda incluir, con niveles, fichero configurable y un test con Minitest.</description><pubDate>Mon, 06 Aug 2018 12:10:12 GMT</pubDate></item><item><title>Error al conectar con USB en PlatformIO (Linux)</title><link>https://rubentejera.com/error-al-conectar-con-usb-en-platformio/</link><guid isPermaLink="true">https://rubentejera.com/error-al-conectar-con-usb-en-platformio/</guid><description>Solución al error «cannot access /dev/ttyUSB0» al subir un sketch con PlatformIO en Linux: añade tu usuario al grupo dialout o instala las reglas udev.</description><pubDate>Thu, 26 Jul 2018 20:10:48 GMT</pubDate></item><item><title>¿Es ágil lo que hago? Mitos del agilismo</title><link>https://rubentejera.com/es-agil-lo-que-hago/</link><guid isPermaLink="true">https://rubentejera.com/es-agil-lo-que-hago/</guid><description>El cowboy programming no es agilismo. Desmontamos cuatro mitos (no se documenta, no se planifica…) con el Manifiesto Ágil y una lista para comprobarlo.</description><pubDate>Thu, 11 Oct 2018 12:53:55 GMT</pubDate></item><item><title>ESP8266 con tira LED WS2812B: conexión y código</title><link>https://rubentejera.com/esp8266-con-tira-led-ws2812b/</link><guid isPermaLink="true">https://rubentejera.com/esp8266-con-tira-led-ws2812b/</guid><description>Conecta una tira LED WS2812B (NeoPixel) a un ESP8266 NodeMCU: alimentación, resistencia, condensador, nivel lógico y código Arduino probado.</description><pubDate>Tue, 01 May 2018 10:34:41 GMT</pubDate></item><item><title>Estructura de un programa COBOL: las 4 divisiones</title><link>https://rubentejera.com/estructura-programa-cobol/</link><guid isPermaLink="true">https://rubentejera.com/estructura-programa-cobol/</guid><description>Las cuatro divisiones de un programa COBOL (IDENTIFICATION, ENVIRONMENT, DATA y PROCEDURE) y sus secciones, con un ejemplo de código completo que compila.</description><pubDate>Wed, 03 Apr 2019 11:47:58 GMT</pubDate></item><item><title>Eventos click en Android: onClick y setOnClickListener</title><link>https://rubentejera.com/eventos-clicks-en-android/</link><guid isPermaLink="true">https://rubentejera.com/eventos-clicks-en-android/</guid><description>Tres formas de manejar los clicks en Android con Kotlin (XML onClick, setOnClickListener y un listener con when), cuál conviene hoy y cómo se hace en Compose.</description><pubDate>Tue, 23 Oct 2018 13:13:53 GMT</pubDate></item><item><title>Evolución del escritorio (1980-2014) en un vídeo</title><link>https://rubentejera.com/evolucion-del-escritorio/</link><guid isPermaLink="true">https://rubentejera.com/evolucion-del-escritorio/</guid><description>Un vídeo de menos de un minuto muestra cómo la calculadora, el fax o la agenda de un escritorio de 1980 acabaron convertidos en programas de un portátil.</description><pubDate>Sun, 22 Jul 2018 16:27:03 GMT</pubDate></item><item><title>Excepciones en Ruby: begin, rescue, ensure y raise</title><link>https://rubentejera.com/excepciones-en-ruby/</link><guid isPermaLink="true">https://rubentejera.com/excepciones-en-ruby/</guid><description>Cómo funcionan las excepciones en Ruby: capturar errores con rescue, limpiar con ensure, reintentar con retry, lanzar con raise y crear las tuyas.</description><pubDate>Wed, 22 Aug 2018 11:35:45 GMT</pubDate></item><item><title>Exportar e importar funciones en JavaScript</title><link>https://rubentejera.com/exportar-e-importar-funciones-entre-documentos-en-javascript/</link><guid isPermaLink="true">https://rubentejera.com/exportar-e-importar-funciones-entre-documentos-en-javascript/</guid><description>Cómo compartir funciones entre ficheros JavaScript con export e import: exportación con nombre, por defecto, y qué pasa con require y module.exports.</description><pubDate>Wed, 23 May 2018 12:49:12 GMT</pubDate></item><item><title>Expresiones regulares en Ruby: =~, match, scan y gsub</title><link>https://rubentejera.com/expresiones-regulares-en-ruby/</link><guid isPermaLink="true">https://rubentejera.com/expresiones-regulares-en-ruby/</guid><description>Guía de expresiones regulares (regex) en Ruby con ejemplos ejecutados en Ruby 4.0: =~, match?, scan, gsub, grupos con nombre y una chuleta.</description><pubDate>Thu, 16 Aug 2018 11:01:22 GMT</pubDate></item><item><title>Fallo de KVM al instalar Android Studio en Ubuntu</title><link>https://rubentejera.com/fallo-al-instalar-android-studio-en-ubuntu-kvm/</link><guid isPermaLink="true">https://rubentejera.com/fallo-al-instalar-android-studio-en-ubuntu-kvm/</guid><description>¿El emulador de Android Studio dice que /dev/kvm no tiene permisos en Ubuntu? Comprueba la virtualización y añade tu usuario al grupo kvm, sin chmod 777.</description><pubDate>Mon, 11 Jun 2018 10:03:18 GMT</pubDate></item><item><title>Flow de desarrollo en diseño ágil: la pantalla, al final</title><link>https://rubentejera.com/flow-de-desarrollo-diseno-agil/</link><guid isPermaLink="true">https://rubentejera.com/flow-de-desarrollo-diseno-agil/</guid><description>En diseño ágil la pantalla se hace al final: primero los requisitos como tests, luego los objetos, después los datos. Los 4 pasos, con un ejemplo.</description><pubDate>Thu, 11 Oct 2018 12:44:42 GMT</pubDate></item><item><title>Formato del código en código limpio: reglas y herramientas</title><link>https://rubentejera.com/formato-del-codigo-en-codigo-limpio/</link><guid isPermaLink="true">https://rubentejera.com/formato-del-codigo-en-codigo-limpio/</guid><description>Las reglas de formato de Clean Code explicadas con ejemplos en Java: separación, orden y sangrado. Y cómo automatizarlas con Prettier, EditorConfig e IntelliJ.</description><pubDate>Fri, 17 Aug 2018 07:35:31 GMT</pubDate></item><item><title>Frase sobre COBOL atribuida a Bill Gates</title><link>https://rubentejera.com/frase-cobol-bill-gate/</link><guid isPermaLink="true">https://rubentejera.com/frase-cobol-bill-gate/</guid><description>«No sé qué lenguajes habrá en el futuro, pero COBOL seguirá allí». Qué hay de cierto en esta frase atribuida a Bill Gates y por qué COBOL sigue vivo.</description><pubDate>Tue, 02 Apr 2019 11:20:40 GMT</pubDate></item><item><title>Funciones en Código Limpio: reglas y un ejemplo</title><link>https://rubentejera.com/funciones-codigo-limpio/</link><guid isPermaLink="true">https://rubentejera.com/funciones-codigo-limpio/</guid><description>Cómo escribir funciones limpias según Clean Code: pequeñas, que hagan una cosa, con pocos argumentos y sin efectos secundarios. Con un refactor probado.</description><pubDate>Fri, 03 Aug 2018 08:37:10 GMT</pubDate></item><item><title>Generador de código mailto: enlaces con asunto y cuerpo</title><link>https://rubentejera.com/generador-de-codigo-mailto/</link><guid isPermaLink="true">https://rubentejera.com/generador-de-codigo-mailto/</guid><description>Crea enlaces mailto con destinatario, copia, asunto y cuerpo bien codificados. Sintaxis según el RFC 6068 y un generador en JavaScript que puedes copiar.</description><pubDate>Wed, 23 Mar 2022 15:58:38 GMT</pubDate></item><item><title>Gema Devise: gestión de usuarios en Ruby on Rails</title><link>https://rubentejera.com/gestion-de-usuarios-con-la-gema-devise-ruby-on-rails/</link><guid isPermaLink="true">https://rubentejera.com/gestion-de-usuarios-con-la-gema-devise-ruby-on-rails/</guid><description>Cómo instalar y configurar la gema Devise en Rails 8 para registro, inicio y cierre de sesión, paso a paso, y cuándo te basta el generador de Rails.</description><pubDate>Wed, 29 Aug 2018 14:05:48 GMT</pubDate></item><item><title>Git Commitizen: estandarizar mensajes de commit</title><link>https://rubentejera.com/git-commitizen/</link><guid isPermaLink="true">https://rubentejera.com/git-commitizen/</guid><description>Qué es Commitizen, cómo instalarlo en Node y Python y cómo usar git cz para escribir commits con Conventional Commits. Con commitlint para validarlos.</description><pubDate>Mon, 09 Jul 2018 13:20:09 GMT</pubDate></item><item><title>Git Kraken (GitKraken): qué es, precio e instalación</title><link>https://rubentejera.com/git-kraken/</link><guid isPermaLink="true">https://rubentejera.com/git-kraken/</guid><description>Qué es GitKraken, el cliente visual de Git: si es gratis, en qué sistemas funciona, cómo instalarlo y qué hace cada botón por debajo en Git.</description><pubDate>Tue, 08 May 2018 11:46:09 GMT</pubDate></item><item><title>God Object: qué es este antipatrón y cómo evitarlo</title><link>https://rubentejera.com/god-object/</link><guid isPermaLink="true">https://rubentejera.com/god-object/</guid><description>Qué es un God Object u objeto Dios, cómo detectarlo en tu código y cómo dividirlo paso a paso con tests, con un ejemplo en JavaScript ejecutado.</description><pubDate>Thu, 07 Jun 2018 09:55:27 GMT</pubDate></item><item><title>Google sabe mucho sobre nosotros: cómo verlo y borrarlo</title><link>https://rubentejera.com/google-sabe-mucho-sobre-nosotros/</link><guid isPermaLink="true">https://rubentejera.com/google-sabe-mucho-sobre-nosotros/</guid><description>Dónde ver lo que Google guarda de ti (Mi actividad y la Cronología de Maps), qué cambió en 2024 y cómo borrarlo o programar su eliminación automática.</description><pubDate>Wed, 08 Aug 2018 12:30:36 GMT</pubDate></item><item><title>Gradle en Android Studio: qué es y cómo se configura</title><link>https://rubentejera.com/gradle-en-android/</link><guid isPermaLink="true">https://rubentejera.com/gradle-en-android/</guid><description>Qué es Gradle en Android Studio, para qué sirve cada fichero de Gradle Scripts y cómo se configura hoy con Kotlin DSL, version catalog y ./gradlew.</description><pubDate>Tue, 26 Jun 2018 11:18:31 GMT</pubDate></item><item><title>¿Ha quedado Java obsoleto con Kotlin?</title><link>https://rubentejera.com/ha-quedado-java-obsoleto-con-kotlin/</link><guid isPermaLink="true">https://rubentejera.com/ha-quedado-java-obsoleto-con-kotlin/</guid><description>Kotlin es el lenguaje preferente en Android desde 2019, pero Java sigue vivo en Android y fuera de él. Qué ha cambiado y qué lenguaje aprender hoy.</description><pubDate>Wed, 17 Oct 2018 07:45:38 GMT</pubDate></item><item><title>Hashes en Ruby: crear, consultar y recorrer</title><link>https://rubentejera.com/hashes-en-ruby/</link><guid isPermaLink="true">https://rubentejera.com/hashes-en-ruby/</guid><description>Qué es un hash en Ruby y cómo usarlo: crear, añadir, modificar, fusionar con merge, buscar claves y valores, y recorrerlo. Ejemplos probados en Ruby 4.</description><pubDate>Tue, 24 Jul 2018 14:28:19 GMT</pubDate></item><item><title>Hello Word en Ruby: tu Hola Mundo con irb</title><link>https://rubentejera.com/hello-word-en-ruby/</link><guid isPermaLink="true">https://rubentejera.com/hello-word-en-ruby/</guid><description>Hello World en Ruby, tu primer programa: escribe «Hola Mundo» en la consola interactiva irb y después en un fichero .rb que ejecutas con ruby. En dos minutos.</description><pubDate>Mon, 23 Jul 2018 12:38:15 GMT</pubDate></item><item><title>Historia de COBOL: de 1959 a hoy</title><link>https://rubentejera.com/historia-de-cobol/</link><guid isPermaLink="true">https://rubentejera.com/historia-de-cobol/</guid><description>Qué es COBOL y cómo nació: la reunión del Pentágono en 1959, la influencia de Grace Hopper, los estándares de 1968 a 2023 y por qué los bancos aún lo usan.</description><pubDate>Tue, 02 Apr 2019 11:19:35 GMT</pubDate></item><item><title>Historias de usuario en Scrum: formato, INVEST y ejemplos</title><link>https://rubentejera.com/historias-de-usuario-en-scrum/</link><guid isPermaLink="true">https://rubentejera.com/historias-de-usuario-en-scrum/</guid><description>Qué es una historia de usuario, cómo se escribe (Como… quiero… para…), cómo saber si es buena con INVEST y cómo redactar sus criterios de aceptación.</description><pubDate>Tue, 12 Jun 2018 07:49:13 GMT</pubDate></item><item><title>Hola Mundo con Android Studio y Kotlin (Jetpack Compose)</title><link>https://rubentejera.com/hola-mundo-con-android-studio-y-kotlin/</link><guid isPermaLink="true">https://rubentejera.com/hola-mundo-con-android-studio-y-kotlin/</guid><description>Crea tu primera app Android paso a paso: proyecto nuevo en Android Studio, la plantilla Empty Activity con Kotlin y Compose, y tu Hola mundo en el emulador.</description><pubDate>Tue, 26 Jun 2018 10:26:50 GMT</pubDate></item><item><title>IDENTIFICATION DIVISION en COBOL: PROGRAM-ID y párrafos</title><link>https://rubentejera.com/identification-division-cobol/</link><guid isPermaLink="true">https://rubentejera.com/identification-division-cobol/</guid><description>Qué va en la IDENTIFICATION DIVISION de COBOL: PROGRAM-ID, el único obligatorio, y AUTHOR, DATE-WRITTEN y compañía, hoy obsoletos. Con ejemplo que compila.</description><pubDate>Wed, 03 Apr 2019 12:38:24 GMT</pubDate></item><item><title>Igualdad referencial (===) y estructural (==) en Kotlin</title><link>https://rubentejera.com/igualdad-referencial-e-igualdad-estructural-en-kotlin/</link><guid isPermaLink="true">https://rubentejera.com/igualdad-referencial-e-igualdad-estructural-en-kotlin/</guid><description>Diferencia entre == y === en Kotlin: cuándo dos objetos son iguales y cuándo son el mismo, qué pasa con las data class y por qué equals pide hashCode.</description><pubDate>Thu, 11 Oct 2018 10:36:09 GMT</pubDate></item><item><title>Incluir otros archivos en Ruby: require y load</title><link>https://rubentejera.com/incluir-otros-archivos-en-ruby/</link><guid isPermaLink="true">https://rubentejera.com/incluir-otros-archivos-en-ruby/</guid><description>Cómo incluir otros archivos en Ruby con require, require_relative y load: en qué se diferencian, qué se comparte entre ficheros y cuándo usar cada uno.</description><pubDate>Wed, 22 Aug 2018 14:08:18 GMT</pubDate></item><item><title>Inside-out TDD y outside-in TDD: arquitectura y diseño</title><link>https://rubentejera.com/inside-out-tdd-outside-in-tdd-arquitectura-y-diseno-de-software/</link><guid isPermaLink="true">https://rubentejera.com/inside-out-tdd-outside-in-tdd-arquitectura-y-diseno-de-software/</guid><description>Inside-out (escuela clásica) frente a outside-in (escuela de Londres): en qué se diferencian, cómo influyen en la arquitectura y un ejemplo de cada uno.</description><pubDate>Mon, 18 Jun 2018 08:34:59 GMT</pubDate></item><item><title>Instalación de Express.js y primer Hola mundo</title><link>https://rubentejera.com/instalacion-expressjs/</link><guid isPermaLink="true">https://rubentejera.com/instalacion-expressjs/</guid><description>Instala Express 5 con npm, crea tu primer servidor Hola mundo en Node.js y añade una segunda ruta. Paso a paso, con código probado en Node 24.</description><pubDate>Thu, 17 May 2018 12:55:41 GMT</pubDate></item><item><title>Instalación de Jasmine Standalone (a pelo) paso a paso</title><link>https://rubentejera.com/instalacion-jasmine-standalone-a-pelo/</link><guid isPermaLink="true">https://rubentejera.com/instalacion-jasmine-standalone-a-pelo/</guid><description>Instala Jasmine Standalone 7 sin npm ni Node: descarga el zip, enlázalo en un HTML y ejecuta tus tests de JavaScript con solo abrir el navegador.</description><pubDate>Tue, 24 Apr 2018 14:05:40 GMT</pubDate></item><item><title>Instalación de Ruby en Ubuntu con rbenv (y Rails)</title><link>https://rubentejera.com/instalacion-ruby-en-ubuntu/</link><guid isPermaLink="true">https://rubentejera.com/instalacion-ruby-en-ubuntu/</guid><description>Instala la última versión de Ruby en Ubuntu con rbenv y ruby-build, y crea tu primera aplicación de Ruby on Rails. Pasos probados en Ubuntu 26.04 con Ruby 4.0.</description><pubDate>Mon, 23 Jul 2018 12:29:08 GMT</pubDate></item><item><title>Instalar Jest en un proyecto de JavaScript (npm y ESM)</title><link>https://rubentejera.com/instalar-jest-en-un-proyecto-de-javascript/</link><guid isPermaLink="true">https://rubentejera.com/instalar-jest-en-un-proyecto-de-javascript/</guid><description>Instala Jest 30 con npm, crea tu primer test y configúralo para módulos ESM, modo watch y jsdom. Comandos probados en Node 24, paso a paso.</description><pubDate>Tue, 15 May 2018 13:23:22 GMT</pubDate></item><item><title>Instalar Node.js en Ubuntu: tres formas probadas</title><link>https://rubentejera.com/instalar-nodejs-en-ubuntu/</link><guid isPermaLink="true">https://rubentejera.com/instalar-nodejs-en-ubuntu/</guid><description>Cómo instalar Node.js en Ubuntu con nvm, con el repositorio de NodeSource o con el binario oficial, y cuál elegir. Probado con Node 26 LTS en Ubuntu 26.04.</description><pubDate>Tue, 15 May 2018 13:06:44 GMT</pubDate></item><item><title>Interfaces en Kotlin: métodos y propiedades</title><link>https://rubentejera.com/interfaces-en-kotlin/</link><guid isPermaLink="true">https://rubentejera.com/interfaces-en-kotlin/</guid><description>Cómo funcionan las interfaces en Kotlin: métodos abstractos y por defecto, propiedades abstractas y objetos anónimos, con un ejemplo ejecutado.</description><pubDate>Tue, 30 Oct 2018 14:31:57 GMT</pubDate></item><item><title>Interpolación de cadenas en Ruby: #{} y format</title><link>https://rubentejera.com/interpolacion-de-cadenas-en-ruby/</link><guid isPermaLink="true">https://rubentejera.com/interpolacion-de-cadenas-en-ruby/</guid><description>Cómo meter variables dentro de un texto en Ruby con #{}, por qué no funciona con comillas simples y cuándo usar puts, print, format o un heredoc.</description><pubDate>Mon, 23 Jul 2018 14:00:42 GMT</pubDate></item><item><title>Introducción al testing en Ruby: Minitest y Test::Unit</title><link>https://rubentejera.com/introduccion-al-testing-en-ruby/</link><guid isPermaLink="true">https://rubentejera.com/introduccion-al-testing-en-ruby/</guid><description>Tus primeros tests en Ruby: de una comprobación a mano a Minitest y Test::Unit, cómo ejecutarlos, cómo leer un fallo y para qué sirven setup y teardown.</description><pubDate>Thu, 23 Aug 2018 08:02:17 GMT</pubDate></item><item><title>Java Stream: guía práctica con ejemplos (Java 25)</title><link>https://rubentejera.com/java-stream/</link><guid isPermaLink="true">https://rubentejera.com/java-stream/</guid><description>Cómo usar Stream en Java con ejemplos ejecutados: filter, map, flatMap, sorted, groupingBy, joining, reduce, toList() y los nuevos Gatherers de Java 25.</description><pubDate>Tue, 05 Apr 2022 14:25:11 GMT</pubDate></item><item><title>Juego para aprender Vim: VIM Adventures</title><link>https://rubentejera.com/juego-para-aprender-vim/</link><guid isPermaLink="true">https://rubentejera.com/juego-para-aprender-vim/</guid><description>VIM Adventures es un juego en el navegador para aprender los comandos de Vim moviéndote por un mundo de aventuras. Y vimtutor, el tutorial gratuito en español.</description><pubDate>Mon, 11 Feb 2019 07:27:56 GMT</pubDate></item><item><title>Juego de las ranas Flexbox CSS: Flexbox Froggy</title><link>https://rubentejera.com/juego-ranas-flexbox-css/</link><guid isPermaLink="true">https://rubentejera.com/juego-ranas-flexbox-css/</guid><description>Flexbox Froggy es el juego de las ranas para aprender Flexbox CSS en español: 24 niveles para dominar justify-content, align-items, flex-direction y más.</description><pubDate>Sat, 07 Jul 2018 10:57:32 GMT</pubDate></item><item><title>Juego de selectores CSS: aprende con CSS Diner</title><link>https://rubentejera.com/juego-selectores-css/</link><guid isPermaLink="true">https://rubentejera.com/juego-selectores-css/</guid><description>CSS Diner es un juego gratis para aprender selectores CSS en 32 niveles: de los de etiqueta y clase a :nth-child, :not() y atributos. Cómo jugar y qué aprendes.</description><pubDate>Mon, 23 Apr 2018 14:52:17 GMT</pubDate></item><item><title>Kata Roman Numerals en JavaScript con TDD paso a paso</title><link>https://rubentejera.com/kata-roman-numerals-javascript/</link><guid isPermaLink="true">https://rubentejera.com/kata-roman-numerals-javascript/</guid><description>Resuelve la kata Roman Numerals en JavaScript con TDD: de 1 → I hasta 3999 → MMMCMXCIX, test a test, con node:test y sin instalar nada.</description><pubDate>Wed, 23 May 2018 08:42:07 GMT</pubDate></item><item><title>Kata Stubs y Spies de Carlos Blé: dobles de prueba en Java</title><link>https://rubentejera.com/kata-stubs-spies-carlos-ble/</link><guid isPermaLink="true">https://rubentejera.com/kata-stubs-spies-carlos-ble/</guid><description>Resuelve la kata de stubs y spies de Carlos Blé con Java 21, JUnit y Mockito, y entiende por fin qué distingue un stub, un spy, un mock y un fake.</description><pubDate>Tue, 10 Jul 2018 09:22:57 GMT</pubDate></item><item><title>Koans y katas de ES6: JavaScript moderno con tests</title><link>https://rubentejera.com/katas-de-es6/</link><guid isPermaLink="true">https://rubentejera.com/katas-de-es6/</guid><description>Koans y katas de ES6 para aprender let, const, arrow functions, rest, spread y objetos literales con tests en Node que pasan de rojo a verde.</description><pubDate>Fri, 18 May 2018 11:03:33 GMT</pubDate></item><item><title>Katas para pruebas y TDD: lista por niveles</title><link>https://rubentejera.com/katas-para-pruebas/</link><guid isPermaLink="true">https://rubentejera.com/katas-para-pruebas/</guid><description>Katas para practicar pruebas y TDD por nivel: qué entrena cada una, dónde encontrarla, cómo elegir la siguiente y cómo usar la IA sin que te la resuelva.</description><pubDate>Thu, 21 Jun 2018 09:31:08 GMT</pubDate></item><item><title>Kotlin Koans: aprende Kotlin haciendo pasar tests</title><link>https://rubentejera.com/koans-kotlin/</link><guid isPermaLink="true">https://rubentejera.com/koans-kotlin/</guid><description>Qué son los Kotlin Koans, dónde hacerlos gratis (en el navegador o en IntelliJ) y cómo se resuelve uno. Ejercicios cortos para aprender Kotlin.</description><pubDate>Tue, 26 Jun 2018 08:20:26 GMT</pubDate></item><item><title>Kotlin Android Extensions: qué fue y cómo migrar</title><link>https://rubentejera.com/kotlin-android-extensions/</link><guid isPermaLink="true">https://rubentejera.com/kotlin-android-extensions/</guid><description>Kotlin Android Extensions (kotlinx.android.synthetic) está retirado. Qué hacía, por qué se abandonó y cómo pasar a View Binding paso a paso.</description><pubDate>Thu, 04 Oct 2018 14:14:50 GMT</pubDate></item><item><title>Kotlin frente a Java: diferencias principales</title><link>https://rubentejera.com/kotlin-frente-a-java/</link><guid isPermaLink="true">https://rubentejera.com/kotlin-frente-a-java/</guid><description>Kotlin frente a Java en tres tablas: qué problemas de Java resuelve Kotlin, qué tiene Java que Kotlin no, y una charla en español sobre Kotlin fullstack.</description><pubDate>Tue, 05 Jun 2018 09:56:35 GMT</pubDate></item><item><title>Kotlin vs Java: diferencias y ventajas</title><link>https://rubentejera.com/kotlin-vs-java/</link><guid isPermaLink="true">https://rubentejera.com/kotlin-vs-java/</guid><description>Kotlin vs Java según la documentación oficial de Kotlin: qué errores de Java corrige, qué tiene cada uno que el otro no y cuándo elegir cada lenguaje.</description><pubDate>Wed, 17 Oct 2018 07:32:01 GMT</pubDate></item><item><title>La meta es ser mejor que ayer, no mejor que nadie</title><link>https://rubentejera.com/la-meta-es-ser-mejor-que-ayer-no-mejor-que-nadie/</link><guid isPermaLink="true">https://rubentejera.com/la-meta-es-ser-mejor-que-ayer-no-mejor-que-nadie/</guid><description>Qué significa «la meta es ser mejor que ayer, no mejor que nadie», quién la dijo (spoiler: no se sabe) y cómo aplicarla al código, un poco cada día.</description><pubDate>Thu, 10 Feb 2022 18:29:47 GMT</pubDate></item><item><title>Learn CSS Layout the pedantic way, de Mikito Takada</title><link>https://rubentejera.com/learn-css-layout-the-pedantic-way-mikito-takada/</link><guid isPermaLink="true">https://rubentejera.com/learn-css-layout-the-pedantic-way-mikito-takada/</guid><description>Learn CSS Layout the pedantic way, de Mikito Takada: libro gratuito en inglés sobre las reglas de la maquetación CSS. Qué contiene, para quién es y cómo leerlo.</description><pubDate>Thu, 28 Jun 2018 08:34:02 GMT</pubDate></item><item><title>Libro JavaScript Allongé: qué es y dónde leerlo gratis</title><link>https://rubentejera.com/libro-javascript-allonge/</link><guid isPermaLink="true">https://rubentejera.com/libro-javascript-allonge/</guid><description>Libro JavaScript Allongé, de Reg Braithwaite: qué enseña sobre funciones en JavaScript, para quién es y cómo leerlo gratis en línea o en PDF.</description><pubDate>Mon, 23 Apr 2018 12:28:05 GMT</pubDate></item><item><title>Libro TDD de Carlos Blé: Diseño Ágil con TDD</title><link>https://rubentejera.com/libro-tdd-carlos-ble/</link><guid isPermaLink="true">https://rubentejera.com/libro-tdd-carlos-ble/</guid><description>Diseño Ágil con TDD, el libro de TDD de Carlos Blé: qué trata, qué ediciones hay, dónde está el PDF gratuito de 2010 y qué es Código Sostenible.</description><pubDate>Sun, 29 Apr 2018 17:35:11 GMT</pubDate></item><item><title>Libros de consulta JavaScript: You Don&apos;t Know JS</title><link>https://rubentejera.com/libros-consulta-javascript/</link><guid isPermaLink="true">https://rubentejera.com/libros-consulta-javascript/</guid><description>You Don&apos;t Know JS, de Kyle Simpson, libros de consulta de JavaScript: qué trae cada edición, en qué orden leerlos y cómo consultarlos gratis en GitHub.</description><pubDate>Fri, 27 Apr 2018 22:35:49 GMT</pubDate></item><item><title>Ligatures en Android Studio: mejora la legibilidad</title><link>https://rubentejera.com/ligatures-android-studio/</link><guid isPermaLink="true">https://rubentejera.com/ligatures-android-studio/</guid><description>Cómo activar las ligatures (ligaduras) en Android Studio para mejorar la legibilidad: ver != como ≠ o =&gt; como ⇒, y qué fuentes las incluyen. Con capturas.</description><pubDate>Tue, 26 Jun 2018 13:27:15 GMT</pubDate></item><item><title>Los 10 mayores errores en proyectos de JavaScript</title><link>https://rubentejera.com/los-10-mayores-errores-en-proyectos-de-javascript/</link><guid isPermaLink="true">https://rubentejera.com/los-10-mayores-errores-en-proyectos-de-javascript/</guid><description>Los 10 mayores errores de JavaScript en más de 1.000 proyectos, según Rollbar: qué significa cada mensaje hoy y cómo evitarlo con código actual.</description><pubDate>Wed, 23 May 2018 07:45:11 GMT</pubDate></item><item><title>Manifiesto por el Desarrollo Ágil de Software</title><link>https://rubentejera.com/manifiesto-por-el-desarrollo-agil-de-software/</link><guid isPermaLink="true">https://rubentejera.com/manifiesto-por-el-desarrollo-agil-de-software/</guid><description>Los 4 valores del Manifiesto Ágil con su texto oficial en español, qué significa cada uno, de dónde salió y qué errores se cometen al leerlo.</description><pubDate>Thu, 04 Oct 2018 13:51:18 GMT</pubDate></item><item><title>Manifiesto The Twelve-Factor App, explicado</title><link>https://rubentejera.com/manifiesto-the-twelve-factor-app/</link><guid isPermaLink="true">https://rubentejera.com/manifiesto-the-twelve-factor-app/</guid><description>Manifiesto The Twelve-Factor App en lenguaje llano: qué pide cada uno de los 12 factores, un ejemplo de configuración por entorno y el estado de su revisión.</description><pubDate>Thu, 28 Jun 2018 08:19:24 GMT</pubDate></item><item><title>Mapa de ruta de desarrollador React</title><link>https://rubentejera.com/mapa-de-ruta-de-desarrollador-react/</link><guid isPermaLink="true">https://rubentejera.com/mapa-de-ruta-de-desarrollador-react/</guid><description>Qué aprender para ser desarrollador React y en qué orden: el roadmap de adam-golab, su versión actual en roadmap.sh y cómo usarlo sin agobiarte.</description><pubDate>Mon, 09 Jul 2018 13:18:00 GMT</pubDate></item><item><title>Gema AASM: máquina de estados en Ruby on Rails</title><link>https://rubentejera.com/maquina-de-estados-en-ruby-on-rails-con-aasm/</link><guid isPermaLink="true">https://rubentejera.com/maquina-de-estados-en-ruby-on-rails-con-aasm/</guid><description>Cómo usar la gema AASM en Rails: estados, eventos y transiciones en un modelo, métodos que genera y qué cambia en AASM 6. Ejemplos probados.</description><pubDate>Thu, 06 Sep 2018 12:15:44 GMT</pubDate></item><item><title>Matar un proceso en Linux: kill, pkill y killall</title><link>https://rubentejera.com/matar-un-proceso-en-linux/</link><guid isPermaLink="true">https://rubentejera.com/matar-un-proceso-en-linux/</guid><description>Cómo matar un proceso en Linux: busca su PID con ps o pgrep y ciérralo con kill. Cuándo usar kill -9 y cómo cerrar varios por nombre con pkill.</description><pubDate>Wed, 25 Jul 2018 09:03:23 GMT</pubDate></item><item><title>Qué es Material Design: el sistema de diseño de Google</title><link>https://rubentejera.com/material-design/</link><guid isPermaLink="true">https://rubentejera.com/material-design/</guid><description>Material Design es el sistema de diseño libre de Google. Qué es, qué trae Material 3 y dónde usarlo hoy: Android, Jetpack Compose, Flutter y la web.</description><pubDate>Tue, 26 Jun 2018 12:09:21 GMT</pubDate></item><item><title>Máxima performance de pintado en el front, JS y CSS</title><link>https://rubentejera.com/maxima-performance-de-pintado-en-el-front-js-y-css/</link><guid isPermaLink="true">https://rubentejera.com/maxima-performance-de-pintado-en-el-front-js-y-css/</guid><description>Charla de Eduardo Sada (FrontFest 2017) sobre rendimiento de pintado, con las claves vigentes: animar transform y opacity y no forzar layouts en bucle.</description><pubDate>Tue, 12 Jun 2018 07:42:22 GMT</pubDate></item><item><title>Métodos de arrays en JavaScript con ejemplos</title><link>https://rubentejera.com/metodos-de-arrays-en-javascript/</link><guid isPermaLink="true">https://rubentejera.com/metodos-de-arrays-en-javascript/</guid><description>sort, reduce, some, every, find, findIndex y splice explicados con ejemplos que puedes copiar, y sus versiones modernas que no modifican el array.</description><pubDate>Sun, 29 Apr 2018 10:48:50 GMT</pubDate></item><item><title>Métodos de clase en Ruby: self.metodo y class &lt;&lt; self</title><link>https://rubentejera.com/metodos-de-clase-en-ruby/</link><guid isPermaLink="true">https://rubentejera.com/metodos-de-clase-en-ruby/</guid><description>Qué es un método de clase en Ruby, las tres formas de definirlo (self., el nombre de la clase y class &lt;&lt; self) y cómo usarlo como constructor con nombre.</description><pubDate>Tue, 21 Aug 2018 10:39:35 GMT</pubDate></item><item><title>Métodos en Ruby: definición, parámetros y return</title><link>https://rubentejera.com/metodos-en-ruby/</link><guid isPermaLink="true">https://rubentejera.com/metodos-en-ruby/</guid><description>Cómo definir un método en Ruby: nombres con ? y !, parámetros por defecto y con nombre, return, varios valores de vuelta y el operador splat (*).</description><pubDate>Tue, 24 Jul 2018 09:53:32 GMT</pubDate></item><item><title>Migraciones en Ruby on Rails: crear, ejecutar y deshacer</title><link>https://rubentejera.com/migraciones-en-ruby-on-rails/</link><guid isPermaLink="true">https://rubentejera.com/migraciones-en-ruby-on-rails/</guid><description>Qué es una migración en Ruby on Rails, cómo crearla con el nombre AddColumnaToTabla, ejecutarla con db:migrate y deshacerla con db:rollback.</description><pubDate>Mon, 30 Jul 2018 09:37:43 GMT</pubDate></item><item><title>Mocktail Mixer: coctelera robótica open source</title><link>https://rubentejera.com/mocktail-mixer-cocktelera-open-source/</link><guid isPermaLink="true">https://rubentejera.com/mocktail-mixer-cocktelera-open-source/</guid><description>Mocktails Mixer es una coctelera robótica de Deeplocal que sirve bebidas por voz. Qué incluye su repositorio libre y qué ha quedado obsoleto antes de montarla.</description><pubDate>Sat, 21 Jul 2018 21:00:45 GMT</pubDate></item><item><title>Modificadores de acceso Kotlin: public, protected, private</title><link>https://rubentejera.com/modificadores-de-acceso-public-protected-private-en-kotlin/</link><guid isPermaLink="true">https://rubentejera.com/modificadores-de-acceso-public-protected-private-en-kotlin/</guid><description>Qué pueden ver public, protected, private e internal en Kotlin, por qué las clases son final por defecto y cuándo marcarlas como open, con ejemplos probados.</description><pubDate>Thu, 18 Oct 2018 13:26:23 GMT</pubDate></item><item><title>Módulos en Ruby: include, extend y mixins</title><link>https://rubentejera.com/modulos-en-ruby/</link><guid isPermaLink="true">https://rubentejera.com/modulos-en-ruby/</guid><description>Qué es un módulo en Ruby, en qué se diferencia de una clase y cómo usar include y extend para crear mixins, con ejemplos probados en Ruby 3.4.</description><pubDate>Fri, 03 Aug 2018 07:30:51 GMT</pubDate></item><item><title>Multitarea con máquina de estados en Arduino</title><link>https://rubentejera.com/multitarea-con-maquina-de-estados/</link><guid isPermaLink="true">https://rubentejera.com/multitarea-con-maquina-de-estados/</guid><description>Cómo hacer parpadear varios LED a ritmos distintos en Arduino sin delay(): una máquina de estados con millis(), antes y después de refactorizar.</description><pubDate>Sun, 20 May 2018 10:12:42 GMT</pubDate></item><item><title>MVC (Modelo Vista Controlador) y sus derivados: MVP y MVVM</title><link>https://rubentejera.com/mvc-y-sus-derivados/</link><guid isPermaLink="true">https://rubentejera.com/mvc-y-sus-derivados/</guid><description>Qué es el patrón Modelo Vista Controlador (MVC) y en qué se diferencia de MVP y MVVM, con el mismo ejemplo en las tres y cuándo elegir cada una.</description><pubDate>Fri, 08 Jun 2018 10:55:48 GMT</pubDate></item><item><title>Newsletter especializado en BDD y guía rápida de BDD</title><link>https://rubentejera.com/newsletter-especializado-en-bdd/</link><guid isPermaLink="true">https://rubentejera.com/newsletter-especializado-en-bdd/</guid><description>BDD Addict, el newsletter de BDD de Gáspár Nagy, sigue en pie. Su estado actual y qué es BDD, con un ejemplo en Gherkin en español que puedes ejecutar.</description><pubDate>Fri, 13 Jul 2018 07:30:32 GMT</pubDate></item><item><title>Jest: no encuentra el token import en los tests</title><link>https://rubentejera.com/no-encuentra-el-token-import-en-test-con-jest/</link><guid isPermaLink="true">https://rubentejera.com/no-encuentra-el-token-import-en-test-con-jest/</guid><description>Jest no encuentra el token import: cómo resolver «Unexpected token import» y «Cannot use import statement outside a module» con Babel o ESM. Probado en Jest 30.</description><pubDate>Wed, 23 May 2018 12:55:56 GMT</pubDate></item><item><title>Nombres con sentido en código limpio (Clean Code)</title><link>https://rubentejera.com/nombres-con-sentido/</link><guid isPermaLink="true">https://rubentejera.com/nombres-con-sentido/</guid><description>Nombres con sentido en el desarrollo de software: las reglas de Clean Code para nombrar variables, funciones y clases, con ejemplos antes y después.</description><pubDate>Sat, 19 May 2018 19:53:07 GMT</pubDate></item><item><title>Nos espían desde la CIA: Vault 7 y las Smart TV</title><link>https://rubentejera.com/nos-espian-desde-la-cia/</link><guid isPermaLink="true">https://rubentejera.com/nos-espian-desde-la-cia/</guid><description>Qué revelaron en 2017 los documentos de Vault 7 publicados por WikiLeaks sobre la CIA, los televisores Samsung y los móviles, y qué puedes hacer tú hoy.</description><pubDate>Tue, 26 Jun 2018 08:41:29 GMT</pubDate></item><item><title>Números mágicos en programación: qué son y cómo evitarlos</title><link>https://rubentejera.com/numeros-magicos/</link><guid isPermaLink="true">https://rubentejera.com/numeros-magicos/</guid><description>Qué es un número mágico en el código, por qué complica el mantenimiento y cómo sustituirlo por una constante con nombre. Con ejemplo antes y después.</description><pubDate>Fri, 08 Jun 2018 08:34:14 GMT</pubDate></item><item><title>NVM (Node Version Manager): qué es y cómo se usa</title><link>https://rubentejera.com/nvm-node-version-manager/</link><guid isPermaLink="true">https://rubentejera.com/nvm-node-version-manager/</guid><description>Qué es nvm y cómo instalarlo en Linux, macOS o Windows para cambiar de versión de Node.js con un comando. Probado con nvm 0.41 y Node 26.</description><pubDate>Thu, 26 Jul 2018 13:56:09 GMT</pubDate></item><item><title>Objetos y estructuras de datos en Código Limpio</title><link>https://rubentejera.com/objetos-y-estructuras-de-datos-codigo-limpio/</link><guid isPermaLink="true">https://rubentejera.com/objetos-y-estructuras-de-datos-codigo-limpio/</guid><description>Cuándo usar objetos y cuándo estructuras de datos, qué es la Ley de Demeter y cómo evitar los choques de trenes, con ejemplos en Java 25 ejecutados.</description><pubDate>Fri, 24 Aug 2018 08:47:22 GMT</pubDate></item><item><title>Obtener información del usuario en Ruby con gets</title><link>https://rubentejera.com/obtener-informacion-del-usuario-en-ruby/</link><guid isPermaLink="true">https://rubentejera.com/obtener-informacion-del-usuario-en-ruby/</guid><description>Cómo pedir datos al usuario por teclado en Ruby con gets, por qué sale un salto de línea de más y cómo quitarlo con chomp. Con ejemplos probados.</description><pubDate>Tue, 24 Jul 2018 08:57:17 GMT</pubDate></item><item><title>Open Source Ecology, el pueblo Open Source</title><link>https://rubentejera.com/open-source-ecology-el-pueblo-open-source/</link><guid isPermaLink="true">https://rubentejera.com/open-source-ecology-el-pueblo-open-source/</guid><description>Qué es Open Source Ecology y su Global Village Construction Set: 50 máquinas de código abierto para construir y abastecer un pueblo, y dónde están sus planos.</description><pubDate>Sat, 21 Jul 2018 20:58:27 GMT</pubDate></item><item><title>Operadores en Ruby: asignación, comparación y más</title><link>https://rubentejera.com/operadores-en-ruby/</link><guid isPermaLink="true">https://rubentejera.com/operadores-en-ruby/</guid><description>Operadores en Ruby con ejemplos probados: aritméticos, asignación encadenada y paralela, comparación, &lt;=&gt;, === y los lógicos &amp;&amp; y and.</description><pubDate>Tue, 24 Jul 2018 11:06:07 GMT</pubDate></item><item><title>Página de inicio y página de entradas en WordPress</title><link>https://rubentejera.com/pagina-de-inicio-y-pagina-de-entradas-en-wordpress/</link><guid isPermaLink="true">https://rubentejera.com/pagina-de-inicio-y-pagina-de-entradas-en-wordpress/</guid><description>Pon una página fija como portada de WordPress y lleva el blog a otra página. Paso a paso desde Ajustes &gt; Lectura o desde el Personalizador.</description><pubDate>Mon, 23 Jul 2018 20:56:16 GMT</pubDate></item><item><title>Paginación en Ruby on Rails con will_paginate y Pagy</title><link>https://rubentejera.com/paginacion-en-ruby-on-rails/</link><guid isPermaLink="true">https://rubentejera.com/paginacion-en-ruby-on-rails/</guid><description>Cómo paginar resultados en Ruby on Rails: will_paginate en tres pasos (gema, controlador y vista) y Pagy, la alternativa mantenida hoy.</description><pubDate>Mon, 10 Sep 2018 09:28:43 GMT</pubDate></item><item><title>Paperclip, subir archivos en Ruby on Rails</title><link>https://rubentejera.com/paperclip-subir-archivos-en-ruby-on-rails/</link><guid isPermaLink="true">https://rubentejera.com/paperclip-subir-archivos-en-ruby-on-rails/</guid><description>La gema Paperclip está obsoleta. Cómo funcionaba, cómo se hace hoy lo mismo con Active Storage en Rails 8 y qué hacer si tu proyecto aún la usa.</description><pubDate>Tue, 04 Sep 2018 09:09:46 GMT</pubDate></item><item><title>Pasos para aplicar TDD en tus proyectos, con un ejemplo</title><link>https://rubentejera.com/pasos-para-aplicar-tdd/</link><guid isPermaLink="true">https://rubentejera.com/pasos-para-aplicar-tdd/</guid><description>Los pasos para aplicar la metodología TDD en un proyecto: lista de tests, rojo, verde y refactor, con un ejemplo real ejecutado en Node.js.</description><pubDate>Thu, 24 May 2018 18:42:39 GMT</pubDate></item><item><title>Permisos en Linux: tabla rwx, chmod y chown</title><link>https://rubentejera.com/permisos-en-linux/</link><guid isPermaLink="true">https://rubentejera.com/permisos-en-linux/</guid><description>Aprende a leer los permisos de Linux con ls -l y a cambiarlos con chmod y chown. Tabla de permisos 755, 644 o 600, umask y bits especiales.</description><pubDate>Sun, 27 May 2018 13:41:18 GMT</pubDate></item><item><title>Picasso: librería de imágenes para Android y Kotlin</title><link>https://rubentejera.com/picasso-libreria-gestion-imagenes-para-android/</link><guid isPermaLink="true">https://rubentejera.com/picasso-libreria-gestion-imagenes-para-android/</guid><description>Cómo cargar, recortar y cachear imágenes en Android con Picasso y Kotlin, por qué ya está obsoleto y cómo pasar a Coil o Glide en pocas líneas.</description><pubDate>Wed, 07 Nov 2018 13:44:44 GMT</pubDate></item><item><title>Plataformas de cursos de programación</title><link>https://rubentejera.com/plataformas-de-cursos-de-programacion/</link><guid isPermaLink="true">https://rubentejera.com/plataformas-de-cursos-de-programacion/</guid><description>Plataformas de cursos de programación en español e inglés: KeepCoding, Codely, Udemy, edX y Udacity. Qué ofrece cada una, precio y para quién encaja.</description><pubDate>Tue, 12 Jun 2018 10:21:16 GMT</pubDate></item><item><title>¿Por qué usar Kotlin? Razones para Android</title><link>https://rubentejera.com/por-que-usar-kotlin/</link><guid isPermaLink="true">https://rubentejera.com/por-que-usar-kotlin/</guid><description>Por qué Google apuesta por Kotlin en Android desde 2017: más conciso y seguro que Java, interoperable con él, de código abierto y la base de Jetpack Compose.</description><pubDate>Tue, 16 Oct 2018 20:39:07 GMT</pubDate></item><item><title>Practicar Grid en CSS: juegos y herramientas</title><link>https://rubentejera.com/practicar-grid-en-css/</link><guid isPermaLink="true">https://rubentejera.com/practicar-grid-en-css/</guid><description>Dónde practicar Grid en CSS gratis: CSS Grid Playground, el juego Grid Garden en español y el tutorial de Mozilla. Qué ofrece cada uno y en qué orden usarlos.</description><pubDate>Sun, 29 Apr 2018 10:09:30 GMT</pubDate></item><item><title>Los 12 principios del Manifiesto Ágil, explicados</title><link>https://rubentejera.com/principios-del-manifiesto-agil/</link><guid isPermaLink="true">https://rubentejera.com/principios-del-manifiesto-agil/</guid><description>Los 12 principios del Manifiesto Ágil con su texto oficial en español, qué significa cada uno en la práctica y los errores más comunes al aplicarlos.</description><pubDate>Thu, 04 Oct 2018 13:43:32 GMT</pubDate></item><item><title>Probar apps en dispositivos virtualizados: Firebase Test Lab</title><link>https://rubentejera.com/probar-apps-en-dispositivos-virtualizados-con-firebase-test-lab/</link><guid isPermaLink="true">https://rubentejera.com/probar-apps-en-dispositivos-virtualizados-con-firebase-test-lab/</guid><description>Cómo probar tu app Android o iOS en dispositivos virtuales y físicos con Firebase Test Lab: tipos de test, comando gcloud y cuota gratuita.</description><pubDate>Tue, 19 Jun 2018 08:39:15 GMT</pubDate></item><item><title>Programación asíncrona en JavaScript y AJAX, Carlos Blé</title><link>https://rubentejera.com/programacion-asincrona-con-javascript-introduccion-a-ajax-y-testing-asincrono-carlos-ble/</link><guid isPermaLink="true">https://rubentejera.com/programacion-asincrona-con-javascript-introduccion-a-ajax-y-testing-asincrono-carlos-ble/</guid><description>Dos clases grabadas de Carlos Blé sobre AJAX, callbacks y testing asíncrono en JavaScript, con un resumen y el mismo ejemplo con fetch y async/await.</description><pubDate>Mon, 28 May 2018 07:13:55 GMT</pubDate></item><item><title>Pruebas de unidad en código limpio: tests limpios y FIRST</title><link>https://rubentejera.com/pruebas-de-unidad-codigo-limpio/</link><guid isPermaLink="true">https://rubentejera.com/pruebas-de-unidad-codigo-limpio/</guid><description>Qué es una prueba de unidad, las tres leyes de TDD y las reglas FIRST de Clean Code, con un ejemplo en Node que pasa en Madrid y falla en México.</description><pubDate>Thu, 06 Sep 2018 08:09:42 GMT</pubDate></item><item><title>Push API: notificaciones web con Service Workers</title><link>https://rubentejera.com/push-api/</link><guid isPermaLink="true">https://rubentejera.com/push-api/</guid><description>Qué es la Push API, cómo se suscribe un navegador con un Service Worker y cómo envías el mensaje desde Node con web-push. Con vídeo y ejemplos de Carlos Blé.</description><pubDate>Wed, 20 Jun 2018 07:27:34 GMT</pubDate></item><item><title>PWA, aplicaciones web progresivas: qué son y cómo crear una</title><link>https://rubentejera.com/pwa-aplicaciones-web-progresivas/</link><guid isPermaLink="true">https://rubentejera.com/pwa-aplicaciones-web-progresivas/</guid><description>Qué es una PWA y cómo convertir tu web en aplicación web progresiva: manifiesto, service worker y HTTPS, con ejemplo probado y soporte en Android e iOS.</description><pubDate>Sat, 07 Dec 2019 23:26:03 GMT</pubDate></item><item><title>¿Qué es Kotlin? El lenguaje recomendado para Android</title><link>https://rubentejera.com/que-es-kotlin/</link><guid isPermaLink="true">https://rubentejera.com/que-es-kotlin/</guid><description>Qué es Kotlin, quién lo creó, para qué sirve (Android, servidor, web y multiplataforma) y qué ventajas tiene su tipado estático, con un primer ejemplo probado.</description><pubDate>Mon, 25 Jun 2018 20:11:17 GMT</pubDate></item><item><title>¿Qué es la deuda técnica? Definición y ejemplos</title><link>https://rubentejera.com/que-es-la-deuda-tecnica/</link><guid isPermaLink="true">https://rubentejera.com/que-es-la-deuda-tecnica/</guid><description>Qué es la deuda técnica, de dónde viene la metáfora, sus cuatro tipos según Martin Fowler y cómo pagarla poco a poco sin parar el proyecto.</description><pubDate>Fri, 29 Jun 2018 08:11:37 GMT</pubDate></item><item><title>¿Qué es Ruby? El lenguaje de programación explicado</title><link>https://rubentejera.com/que-es-ruby/</link><guid isPermaLink="true">https://rubentejera.com/que-es-ruby/</guid><description>Qué es Ruby, quién lo creó, para qué se usa (Rails y más), qué trae Ruby 4.0 y cómo instalarlo y ejecutar tu primer código en cinco minutos.</description><pubDate>Mon, 23 Jul 2018 11:12:19 GMT</pubDate></item><item><title>¿Qué es un objeto en JavaScript? Explicado con ejemplos</title><link>https://rubentejera.com/que-es-un-objeto-en-javascript/</link><guid isPermaLink="true">https://rubentejera.com/que-es-un-objeto-en-javascript/</guid><description>Qué es un objeto en JavaScript, cómo crearlo, leerlo, recorrerlo y copiarlo sin sorpresas. Con ejemplos de JavaScript moderno ejecutados en Node 24.</description><pubDate>Sun, 29 Apr 2018 18:34:27 GMT</pubDate></item><item><title>¿Qué es un QA tester? Qué hace y en qué se diferencia</title><link>https://rubentejera.com/que-es-un-qa-tester/</link><guid isPermaLink="true">https://rubentejera.com/que-es-un-qa-tester/</guid><description>Qué es un QA tester, qué hace en un equipo de software y en qué se diferencian testing y QA, explicado con lenguaje llano a partir del temario oficial de ISTQB.</description><pubDate>Fri, 29 Jun 2018 07:50:50 GMT</pubDate></item><item><title>¿Qué es una kata y un koan? Significado y ejemplos</title><link>https://rubentejera.com/que-es-una-kata-o-un-koan/</link><guid isPermaLink="true">https://rubentejera.com/que-es-una-kata-o-un-koan/</guid><description>Qué significa koan en el zen y kata en el kárate, y cómo se usan para aprender a programar: ejemplos, katas clásicas y una kata resuelta con TDD.</description><pubDate>Fri, 25 May 2018 07:48:24 GMT</pubDate></item><item><title>Recursos de JavaScript en español</title><link>https://rubentejera.com/recursos-javascript-en-espanol/</link><guid isPermaLink="true">https://rubentejera.com/recursos-javascript-en-espanol/</guid><description>Impresionante JavaScript, la lista de enlaces en español de Sergio Xalambrí: qué contiene, si sigue al día y dónde aprender JavaScript en español hoy.</description><pubDate>Sun, 06 May 2018 19:20:52 GMT</pubDate></item><item><title>Refactoring Legacy CSS, charla de Carmen Ansio</title><link>https://rubentejera.com/refactoring-legacy-css-carmen-ansio/</link><guid isPermaLink="true">https://rubentejera.com/refactoring-legacy-css-carmen-ansio/</guid><description>Charla en español de Carmen Ansio sobre cómo refactorizar CSS heredado que ya nadie se atreve a tocar, con ideas para empezar a limpiar tu hoja de estilos.</description><pubDate>Fri, 25 May 2018 13:26:39 GMT</pubDate></item><item><title>Paso por referencia y paso por valor en JavaScript</title><link>https://rubentejera.com/referencias-y-copias-en-javascript/</link><guid isPermaLink="true">https://rubentejera.com/referencias-y-copias-en-javascript/</guid><description>Por qué al cambiar un array en JavaScript cambia también otro: qué se copia con los primitivos, qué con objetos y arrays, y cómo evitar la sorpresa.</description><pubDate>Tue, 01 May 2018 18:11:37 GMT</pubDate></item><item><title>Regla del Boy Scout en el código limpio, con ejemplo</title><link>https://rubentejera.com/regla-del-boy-scout-en-el-codigo-limpio/</link><guid isPermaLink="true">https://rubentejera.com/regla-del-boy-scout-en-el-codigo-limpio/</guid><description>Qué es la regla del Boy Scout del código limpio, de dónde viene y cómo aplicarla sin romper nada: un refactor pequeño con tests y commits aparte.</description><pubDate>Sat, 19 May 2018 17:51:25 GMT</pubDate></item><item><title>Reinicio automático del servidor Node al cambiar código</title><link>https://rubentejera.com/reinicio-automatico-del-servidor-node-al-hacer-cambios-en-el-codigo/</link><guid isPermaLink="true">https://rubentejera.com/reinicio-automatico-del-servidor-node-al-hacer-cambios-en-el-codigo/</guid><description>Cómo reiniciar solo tu servidor Node.js cada vez que guardas cambios: con node --watch, sin instalar nada, o con nodemon. Probado con Node 24 y nodemon 3.1.</description><pubDate>Mon, 21 May 2018 12:33:24 GMT</pubDate></item><item><title>Reparación de la base de la bisagra del Acer E1-571</title><link>https://rubentejera.com/reparacion-base-bisagra-de-pantalla-acer-e1-571/</link><guid isPermaLink="true">https://rubentejera.com/reparacion-base-bisagra-de-pantalla-acer-e1-571/</guid><description>La pantalla de mi Acer E1-571 cedía por un lado: el plástico que sujeta las tuercas de la bisagra se había partido. Así lo reparé con pegamento y epoxi.</description><pubDate>Sat, 28 Jul 2018 20:43:54 GMT</pubDate></item><item><title>Reparar el botón Editar de Shutter en Ubuntu</title><link>https://rubentejera.com/reparar-boton-editar-en-shutter-con-ubuntu-18-04/</link><guid isPermaLink="true">https://rubentejera.com/reparar-boton-editar-en-shutter-con-ubuntu-18-04/</guid><description>¿El botón Editar de Shutter sale en gris? En Ubuntu actual se arregla instalando libgoocanvas2-perl. También el apaño antiguo para Ubuntu 18.04.</description><pubDate>Tue, 15 May 2018 15:27:47 GMT</pubDate></item><item><title>Resource o recursos en Rails: CRUD con scaffold</title><link>https://rubentejera.com/resource-o-recursos-en-rails/</link><guid isPermaLink="true">https://rubentejera.com/resource-o-recursos-en-rails/</guid><description>Qué es un recurso en Rails, cómo crear su CRUD con scaffold y qué hacen el modelo, el controlador, las vistas y las rutas que genera. Probado en Rails 8.</description><pubDate>Fri, 27 Jul 2018 08:16:08 GMT</pubDate></item><item><title>Roles dentro de un equipo ágil: quién hace qué en Scrum</title><link>https://rubentejera.com/roles-dentro-de-un-equipo-agil/</link><guid isPermaLink="true">https://rubentejera.com/roles-dentro-de-un-equipo-agil/</guid><description>Product Owner, Scrum Master y Developers según la Guía de Scrum vigente, otros roles habituales en XP y Kanban, y dónde encajan los agentes de IA.</description><pubDate>Thu, 11 Oct 2018 12:19:45 GMT</pubDate></item><item><title>Scopes en Ruby on Rails: consultas con nombre</title><link>https://rubentejera.com/scopes-en-ruby-on-rails/</link><guid isPermaLink="true">https://rubentejera.com/scopes-en-ruby-on-rails/</guid><description>Qué son los scopes en Ruby on Rails, cómo se declaran, cómo se encadenan y en qué se diferencian de un método de clase. Con ejemplos probados en Rails 8.</description><pubDate>Mon, 10 Sep 2018 09:07:52 GMT</pubDate></item><item><title>ScrollView en Android: cómo hacer scroll en una pantalla</title><link>https://rubentejera.com/scrollview-en-android/</link><guid isPermaLink="true">https://rubentejera.com/scrollview-en-android/</guid><description>Cómo añadir un ScrollView en Android Studio para que una pantalla haga scroll, la regla del único hijo, el wrap_content y la alternativa en Jetpack Compose.</description><pubDate>Mon, 02 Jul 2018 08:03:30 GMT</pubDate></item><item><title>Símbolos en Ruby: qué son y en qué se diferencian de String</title><link>https://rubentejera.com/simbolos-en-ruby/</link><guid isPermaLink="true">https://rubentejera.com/simbolos-en-ruby/</guid><description>Qué es un símbolo en Ruby, en qué se diferencia de un String y cuándo usarlo: object_id, claves de hash y cadenas congeladas en Ruby 4, con ejemplos.</description><pubDate>Tue, 31 Jul 2018 12:56:40 GMT</pubDate></item><item><title>Sinatra para Ruby: qué es y tu primera aplicación</title><link>https://rubentejera.com/sinatra-para-ruby/</link><guid isPermaLink="true">https://rubentejera.com/sinatra-para-ruby/</guid><description>Qué es Sinatra, el framework web minimalista de Ruby: cómo crear una aplicación en un solo fichero, cómo probarla y en qué se diferencia de Ruby on Rails.</description><pubDate>Thu, 26 Jul 2018 11:55:50 GMT</pubDate></item><item><title>Strong params en Ruby on Rails: seguridad de parámetros</title><link>https://rubentejera.com/strong-params-seguridad-de-parametros-en-las-peticiones-en-ruby-on-rails/</link><guid isPermaLink="true">https://rubentejera.com/strong-params-seguridad-de-parametros-en-las-peticiones-en-ruby-on-rails/</guid><description>Qué son los strong parameters de Rails, qué ataque evitan y cómo usarlos: permit, require y el nuevo params.expect de Rails 8, con ejemplos probados.</description><pubDate>Wed, 29 Aug 2018 09:28:01 GMT</pubDate></item><item><title>Qué es TDD (Test Driven Development): ciclo y ejemplo</title><link>https://rubentejera.com/tdd-test-driven-development-desarrollo-dirigido-por-test/</link><guid isPermaLink="true">https://rubentejera.com/tdd-test-driven-development-desarrollo-dirigido-por-test/</guid><description>TDD o desarrollo dirigido por tests, explicado fácil: el ciclo rojo, verde y refactor con un ejemplo real paso a paso, y cómo usarlo cuando programa la IA.</description><pubDate>Wed, 17 Oct 2018 21:12:32 GMT</pubDate></item><item><title>Técnicas para un equipo ágil: cómo trabaja día a día</title><link>https://rubentejera.com/tecnicas-para-un-equipo-agil/</link><guid isPermaLink="true">https://rubentejera.com/tecnicas-para-un-equipo-agil/</guid><description>Daily, retrospectivas, pair programming, propiedad colectiva del código, tests de aceptación e integración continua: qué son y cómo se aplican hoy.</description><pubDate>Fri, 05 Oct 2018 08:46:11 GMT</pubDate></item><item><title>This en JavaScript, Carlos Blé</title><link>https://rubentejera.com/this-en-javascript-carlos-ble/</link><guid isPermaLink="true">https://rubentejera.com/this-en-javascript-carlos-ble/</guid><description>La clase de Carlos Blé sobre this, el contexto de los objetos en JavaScript: qué cubre, para quién es y un resumen con ejemplos de bind, call y flechas.</description><pubDate>Mon, 30 Apr 2018 16:18:07 GMT</pubDate></item><item><title>Time en Ruby: fechas, horas y strftime</title><link>https://rubentejera.com/time-en-ruby/</link><guid isPermaLink="true">https://rubentejera.com/time-en-ruby/</guid><description>Cómo trabajar con la clase Time en Ruby: crear fechas, sumar y restar tiempo y formatearlas con strftime. Con tabla de formatos y ejemplos probados.</description><pubDate>Mon, 06 Aug 2018 12:33:45 GMT</pubDate></item><item><title>Toast y Snackbar en Android: cuándo usar cada uno</title><link>https://rubentejera.com/toast-y-snackbar-en-android/</link><guid isPermaLink="true">https://rubentejera.com/toast-y-snackbar-en-android/</guid><description>Cómo mostrar un Toast y un Snackbar en Android con Kotlin, cómo añadir un botón de acción al Snackbar y qué dependencia usar hoy en Gradle.</description><pubDate>Fri, 29 Jun 2018 10:33:38 GMT</pubDate></item><item><title>Trabajar con ficheros en Ruby: leer y escribir con File</title><link>https://rubentejera.com/trabajar-con-ficheros-en-ruby/</link><guid isPermaLink="true">https://rubentejera.com/trabajar-con-ficheros-en-ruby/</guid><description>Cómo leer y escribir ficheros en Ruby con la clase File: File.read, File.write, File.open con bloque, modos r, w y a, y cómo tratar un fichero que no existe.</description><pubDate>Mon, 06 Aug 2018 12:52:10 GMT</pubDate></item><item><title>Usabilidad y el dedo gordo en teléfonos móviles</title><link>https://rubentejera.com/usabilidad-dedo-gordo-telefonos-moviles/</link><guid isPermaLink="true">https://rubentejera.com/usabilidad-dedo-gordo-telefonos-moviles/</guid><description>Diseñar para el dedo gordo en móviles grandes: el artículo de Scott Hurff sobre la zona del pulgar, qué sigue valiendo y qué tamaño debe tener un botón.</description><pubDate>Thu, 24 May 2018 15:37:39 GMT</pubDate></item><item><title>Usos y reglas de COBOL: palabras, literales y constantes</title><link>https://rubentejera.com/usos-y-reglas-de-cobol/</link><guid isPermaLink="true">https://rubentejera.com/usos-y-reglas-de-cobol/</guid><description>Reglas de COBOL para nombres, palabras reservadas, literales, constantes figurativas, puntos y niveles, con ejemplos compilados en GnuCOBOL.</description><pubDate>Wed, 03 Apr 2019 12:37:45 GMT</pubDate></item><item><title>Utilidades para expresiones regulares online</title><link>https://rubentejera.com/utilidades-para-expresiones-regulares/</link><guid isPermaLink="true">https://rubentejera.com/utilidades-para-expresiones-regulares/</guid><description>Herramientas online para probar y entender expresiones regulares: regex101, RegExr y Debuggex. Qué ofrece cada una, qué lenguajes admite y cuál elegir.</description><pubDate>Sat, 21 Jul 2018 19:42:00 GMT</pubDate></item><item><title>Validación de un campo booleano en Ruby on Rails</title><link>https://rubentejera.com/validacion-de-un-campo-booleano-en-ruby-on-rails/</link><guid isPermaLink="true">https://rubentejera.com/validacion-de-un-campo-booleano-en-ruby-on-rails/</guid><description>Por qué presence: true rechaza false en un campo booleano de Rails y cómo validarlo bien con inclusion o exclusion, más el refuerzo en la base de datos.</description><pubDate>Wed, 29 Aug 2018 11:47:26 GMT</pubDate></item><item><title>Validación inline en formularios: qué es y cómo hacerla</title><link>https://rubentejera.com/validacion-inline/</link><guid isPermaLink="true">https://rubentejera.com/validacion-inline/</guid><description>Qué es la validación inline, cuándo mostrar el error (y cuándo no) y cómo hacerla en HTML y CSS con :user-invalid, sin librerías ni JavaScript.</description><pubDate>Tue, 26 Jun 2018 12:02:32 GMT</pubDate></item><item><title>Variables de clase en Ruby (@@)</title><link>https://rubentejera.com/variables-de-clase-en-ruby/</link><guid isPermaLink="true">https://rubentejera.com/variables-de-clase-en-ruby/</guid><description>Qué es una variable de clase en Ruby (@@contador), cómo se comparte entre objetos, la trampa de la herencia y la alternativa más segura. Con ejemplos.</description><pubDate>Thu, 16 Aug 2018 14:36:02 GMT</pubDate></item><item><title>Variables en Ruby: tipos, referencias, dup y freeze</title><link>https://rubentejera.com/variables-en-ruby/</link><guid isPermaLink="true">https://rubentejera.com/variables-en-ruby/</guid><description>Cómo funcionan las variables en Ruby: tipado dinámico y fuerte, variables locales, de instancia, de clase y globales, referencias a objetos, dup y freeze.</description><pubDate>Mon, 23 Jul 2018 12:51:26 GMT</pubDate></item><item><title>Variables y tipos en Kotlin: val, var y tipos básicos</title><link>https://rubentejera.com/variables-y-tipos-en-kotlin/</link><guid isPermaLink="true">https://rubentejera.com/variables-y-tipos-en-kotlin/</guid><description>Qué es una variable, diferencia entre val y var, inferencia de tipos, tipos básicos de Kotlin (Int, Long, String…), plantillas de texto, arrays y nulos.</description><pubDate>Wed, 27 Jun 2018 08:53:39 GMT</pubDate></item><item><title>Versiones de Android: nombres, números y nivel de API</title><link>https://rubentejera.com/versiones-android/</link><guid isPermaLink="true">https://rubentejera.com/versiones-android/</guid><description>Tabla de todas las versiones de Android, de la 1.0 a Android 17, con su nombre de postre, su nivel de API y su fecha, y por qué Google dejó de usar los postres.</description><pubDate>Tue, 12 Jun 2018 11:52:49 GMT</pubDate></item><item><title>Vídeo explicativo de conceptos de JavaScript en inglés</title><link>https://rubentejera.com/video-explicativo-conceptos-javascript-en-ingles/</link><guid isPermaLink="true">https://rubentejera.com/video-explicativo-conceptos-javascript-en-ingles/</guid><description>The Definitive Guide to Object-Oriented JavaScript, de James Shore: prototipos y herencia explicados desde cero, con subtítulos en español y Object Playground.</description><pubDate>Sat, 28 Apr 2018 19:52:33 GMT</pubDate></item><item><title>Viñeta de expresiones regulares (xkcd traducida)</title><link>https://rubentejera.com/vineta-de-expresiones-regulares/</link><guid isPermaLink="true">https://rubentejera.com/vineta-de-expresiones-regulares/</guid><description>Las dos viñetas de xkcd sobre expresiones regulares traducidas al español, qué chiste esconden y un ejemplo real de buscar direcciones de correo con regex.</description><pubDate>Sat, 21 Jul 2018 19:37:16 GMT</pubDate></item><item><title>Diodon. Programa Historial de Portapapeles Ubuntu</title><link>https://rubentejera.com/diodon-programa-historial-de-portapapeles-ubuntu/</link><guid isPermaLink="true">https://rubentejera.com/diodon-programa-historial-de-portapapeles-ubuntu/</guid><description>Configuración &gt; Teclado &gt; Atajos de teclado &gt; Ver y personalizar atajos &gt; Atajos personalizados &gt; “+” Mi configuración en “Establecer atajo personalizado” :</description><pubDate>Mon, 18 Aug 2025 07:40:58 GMT</pubDate></item><item><title>Matar Proceso en un Puerto determinado en Windows</title><link>https://rubentejera.com/matar-proceso-en-un-puerto-determinado-en-windows/</link><guid isPermaLink="true">https://rubentejera.com/matar-proceso-en-un-puerto-determinado-en-windows/</guid><description>Matar Proceso en un Puerto determinado en Windows.</description><pubDate>Thu, 31 Mar 2022 20:38:24 GMT</pubDate></item><item><title>Atajos de Teclado, ShortCuts para IntelliJ IDEA</title><link>https://rubentejera.com/atajos-de-teclado-shortcuts-para-intellij-idea/</link><guid isPermaLink="true">https://rubentejera.com/atajos-de-teclado-shortcuts-para-intellij-idea/</guid><description>mayus+mayus --&gt; Buscar en todos el programa algún comando mayus+F6 --&gt; Renombrar Variable mayus + supr --&gt; Borrar linea entera Ctrl + Alt + m --&gt; Extraer como…</description><pubDate>Tue, 15 May 2018 08:22:08 GMT</pubDate></item><item><title>Añadir a la barra de Ubuntu el Consumo de CPU y Memoria RAM</title><link>https://rubentejera.com/poner-en-la-barra-de-escritorio-cpu-usada-memoria-usada-y-datos-de-conexion-en-ubuntu/</link><guid isPermaLink="true">https://rubentejera.com/poner-en-la-barra-de-escritorio-cpu-usada-memoria-usada-y-datos-de-conexion-en-ubuntu/</guid><description>Vamos a Preferencias -&gt; Indicator Items Añadir esta linea de codigo Fuente: AskUbuntu</description><pubDate>Wed, 08 Apr 2020 10:33:00 GMT</pubDate></item><item><title>Refrescar web sin caché</title><link>https://rubentejera.com/refrescar-web-sin-cache/</link><guid isPermaLink="true">https://rubentejera.com/refrescar-web-sin-cache/</guid><description>Para refrescar una página web sin que use la caché del navegador, utilizaremos lo que se llama un refresco forzado: Google Chrome: Control + F5</description><pubDate>Sat, 07 Dec 2019 22:58:05 GMT</pubDate></item><item><title>Hoja de Codificación Programa Cobol</title><link>https://rubentejera.com/hoja-de-codificacion-programa-cobol/</link><guid isPermaLink="true">https://rubentejera.com/hoja-de-codificacion-programa-cobol/</guid><description>Hoja de Codificación era un formato en hoja de papel donde se escribía el código fuente de los programas para luego pasarlo a tarjetas perforadas y…</description><pubDate>Wed, 03 Apr 2019 08:56:59 GMT</pubDate></item><item><title>Bucles e Iteradores en Ruby</title><link>https://rubentejera.com/bucles-e-iteradores-en-ruby/</link><guid isPermaLink="true">https://rubentejera.com/bucles-e-iteradores-en-ruby/</guid><description>Con Modificadores de Declaración cuando es una sola expresión **Esto es azúcar sintáctico ya que internamente se hace: Con Modificador de Declaración cuando…</description><pubDate>Wed, 25 Jul 2018 08:45:51 GMT</pubDate></item><item><title>Concerns en Ruby on Rails</title><link>https://rubentejera.com/concerns-en-ruby-on-rails/</link><guid isPermaLink="true">https://rubentejera.com/concerns-en-ruby-on-rails/</guid><description>Los concerns son una forma de abstraer código que se comparte entre diferentes modelos o diferentes controladores. Se coloca en un módulo y ese módulo se va…</description><pubDate>Wed, 05 Sep 2018 13:46:58 GMT</pubDate></item><item><title>Git Flow</title><link>https://rubentejera.com/git-flow/</link><guid isPermaLink="true">https://rubentejera.com/git-flow/</guid><description>A lo largo de nuestra jornada de trabajo necesitaremos ejecutar varias veces al día los comandos git, merge, push y pull así como hacer checkouts de…</description><pubDate>Wed, 08 Aug 2018 16:00:13 GMT</pubDate></item><item><title>Activar Zoom con Ctrl+Rueda Ratón en IntelliJ Idea y Android Studio</title><link>https://rubentejera.com/activar-zoom-con-ctrlrueda-raton-en-intellij-idea/</link><guid isPermaLink="true">https://rubentejera.com/activar-zoom-con-ctrlrueda-raton-en-intellij-idea/</guid><description>File - Settings - Editor - General - Mouse - &quot;Change font size (Zoom) with Ctrl+Mouse Wheel</description><pubDate>Sun, 29 Apr 2018 08:50:52 GMT</pubDate></item></channel></rss>